Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
58a05c4b4eb0edf8c2ba26aa220850dd8d631e0f
[simgrid.git] / src / surf / simgrid_dtd.c
1
2 #line 3 "src/surf/simgrid_dtd.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define yy_create_buffer surf_parse__create_buffer
9 #define yy_delete_buffer surf_parse__delete_buffer
10 #define yy_flex_debug surf_parse__flex_debug
11 #define yy_init_buffer surf_parse__init_buffer
12 #define yy_flush_buffer surf_parse__flush_buffer
13 #define yy_load_buffer_state surf_parse__load_buffer_state
14 #define yy_switch_to_buffer surf_parse__switch_to_buffer
15 #define yyin surf_parse_in
16 #define yyleng surf_parse_leng
17 #define yylex surf_parse_lex
18 #define yylineno surf_parse_lineno
19 #define yyout surf_parse_out
20 #define yyrestart surf_parse_restart
21 #define yytext surf_parse_text
22 #define yywrap surf_parse_wrap
23 #define yyalloc surf_parse_alloc
24 #define yyrealloc surf_parse_realloc
25 #define yyfree surf_parse_free
26
27 #define FLEX_SCANNER
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 35
31 #if YY_FLEX_SUBMINOR_VERSION > 0
32 #define FLEX_BETA
33 #endif
34
35 /* First, we deal with  platform-specific or compiler-specific issues. */
36
37 /* begin standard C headers. */
38 #include <stdio.h>
39 #include <string.h>
40 #include <errno.h>
41 #include <stdlib.h>
42
43 /* end standard C headers. */
44
45 /* flex integer type definitions */
46
47 #ifndef FLEXINT_H
48 #define FLEXINT_H
49
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55  * if you want the limit (max/min) macros for int types. 
56  */
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
59 #endif
60
61 #include <inttypes.h>
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 #else
69 typedef signed char flex_int8_t;
70 typedef short int flex_int16_t;
71 typedef int flex_int32_t;
72 typedef unsigned char flex_uint8_t; 
73 typedef unsigned short int flex_uint16_t;
74 typedef unsigned int flex_uint32_t;
75
76 /* Limits of integral types. */
77 #ifndef INT8_MIN
78 #define INT8_MIN               (-128)
79 #endif
80 #ifndef INT16_MIN
81 #define INT16_MIN              (-32767-1)
82 #endif
83 #ifndef INT32_MIN
84 #define INT32_MIN              (-2147483647-1)
85 #endif
86 #ifndef INT8_MAX
87 #define INT8_MAX               (127)
88 #endif
89 #ifndef INT16_MAX
90 #define INT16_MAX              (32767)
91 #endif
92 #ifndef INT32_MAX
93 #define INT32_MAX              (2147483647)
94 #endif
95 #ifndef UINT8_MAX
96 #define UINT8_MAX              (255U)
97 #endif
98 #ifndef UINT16_MAX
99 #define UINT16_MAX             (65535U)
100 #endif
101 #ifndef UINT32_MAX
102 #define UINT32_MAX             (4294967295U)
103 #endif
104
105 #endif /* ! C99 */
106
107 #endif /* ! FLEXINT_H */
108
109 #ifdef __cplusplus
110
111 /* The "const" storage-class-modifier is valid. */
112 #define YY_USE_CONST
113
114 #else   /* ! __cplusplus */
115
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
118
119 #define YY_USE_CONST
120
121 #endif  /* defined (__STDC__) */
122 #endif  /* ! __cplusplus */
123
124 #ifdef YY_USE_CONST
125 #define yyconst const
126 #else
127 #define yyconst
128 #endif
129
130 /* Returned upon end-of-file. */
131 #define YY_NULL 0
132
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134  * integer for use as an array index.  If the signed char is negative,
135  * we want to instead treat it as an 8-bit unsigned char, hence the
136  * double cast.
137  */
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
139
140 /* Enter a start condition.  This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN (yy_start) = 1 + 2 *
145
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state.  The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
152
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
158
159 #define YY_END_OF_BUFFER_CHAR 0
160
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #ifdef __ia64__
164 /* On IA-64, the buffer size is 16k, not 8k.
165  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166  * Ditto for the __ia64__ case accordingly.
167  */
168 #define YY_BUF_SIZE 32768
169 #else
170 #define YY_BUF_SIZE 16384
171 #endif /* __ia64__ */
172 #endif
173
174 /* The state buf must be large enough to hold one state per character in the main buffer.
175  */
176 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
177
178 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
179 #define YY_TYPEDEF_YY_BUFFER_STATE
180 typedef struct yy_buffer_state *YY_BUFFER_STATE;
181 #endif
182
183 extern int surf_parse_leng;
184
185 extern FILE *surf_parse_in, *surf_parse_out;
186
187 #define EOB_ACT_CONTINUE_SCAN 0
188 #define EOB_ACT_END_OF_FILE 1
189 #define EOB_ACT_LAST_MATCH 2
190
191     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
192      *       access to the local variable yy_act. Since yyless() is a macro, it would break
193      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
194      *       One obvious solution it to make yy_act a global. I tried that, and saw
195      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
196      *       normally declared as a register variable-- so it is not worth it.
197      */
198     #define  YY_LESS_LINENO(n) \
199             do { \
200                 int yyl;\
201                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
202                     if ( surf_parse_text[yyl] == '\n' )\
203                         --surf_parse_lineno;\
204             }while(0)
205     
206 /* Return all but the first "n" matched characters back to the input stream. */
207 #define yyless(n) \
208         do \
209                 { \
210                 /* Undo effects of setting up surf_parse_text. */ \
211         int yyless_macro_arg = (n); \
212         YY_LESS_LINENO(yyless_macro_arg);\
213                 *yy_cp = (yy_hold_char); \
214                 YY_RESTORE_YY_MORE_OFFSET \
215                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
216                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
217                 } \
218         while ( 0 )
219
220 #define unput(c) yyunput( c, (yytext_ptr)  )
221
222 #ifndef YY_TYPEDEF_YY_SIZE_T
223 #define YY_TYPEDEF_YY_SIZE_T
224 typedef size_t yy_size_t;
225 #endif
226
227 #ifndef YY_STRUCT_YY_BUFFER_STATE
228 #define YY_STRUCT_YY_BUFFER_STATE
229 struct yy_buffer_state
230         {
231         FILE *yy_input_file;
232
233         char *yy_ch_buf;                /* input buffer */
234         char *yy_buf_pos;               /* current position in input buffer */
235
236         /* Size of input buffer in bytes, not including room for EOB
237          * characters.
238          */
239         yy_size_t yy_buf_size;
240
241         /* Number of characters read into yy_ch_buf, not including EOB
242          * characters.
243          */
244         int yy_n_chars;
245
246         /* Whether we "own" the buffer - i.e., we know we created it,
247          * and can realloc() it to grow it, and should free() it to
248          * delete it.
249          */
250         int yy_is_our_buffer;
251
252         /* Whether this is an "interactive" input source; if so, and
253          * if we're using stdio for input, then we want to use getc()
254          * instead of fread(), to make sure we stop fetching input after
255          * each newline.
256          */
257         int yy_is_interactive;
258
259         /* Whether we're considered to be at the beginning of a line.
260          * If so, '^' rules will be active on the next match, otherwise
261          * not.
262          */
263         int yy_at_bol;
264
265     int yy_bs_lineno; /**< The line count. */
266     int yy_bs_column; /**< The column count. */
267     
268         /* Whether to try to fill the input buffer when we reach the
269          * end of it.
270          */
271         int yy_fill_buffer;
272
273         int yy_buffer_status;
274
275 #define YY_BUFFER_NEW 0
276 #define YY_BUFFER_NORMAL 1
277         /* When an EOF's been seen but there's still some text to process
278          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
279          * shouldn't try reading from the input source any more.  We might
280          * still have a bunch of tokens to match, though, because of
281          * possible backing-up.
282          *
283          * When we actually see the EOF, we change the status to "new"
284          * (via surf_parse_restart()), so that the user can continue scanning by
285          * just pointing surf_parse_in at a new input file.
286          */
287 #define YY_BUFFER_EOF_PENDING 2
288
289         };
290 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
291
292 /* Stack of input buffers. */
293 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
294 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
295 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
296
297 /* We provide macros for accessing buffer states in case in the
298  * future we want to put the buffer states in a more general
299  * "scanner state".
300  *
301  * Returns the top of the stack, or NULL.
302  */
303 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
304                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
305                           : NULL)
306
307 /* Same as previous macro, but useful when we know that the buffer stack is not
308  * NULL or when we need an lvalue. For internal use only.
309  */
310 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
311
312 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
313 static char yy_hold_char;
314 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
315 int surf_parse_leng;
316
317 /* Points to current character in buffer. */
318 static char *yy_c_buf_p = (char *) 0;
319 static int yy_init = 0;         /* whether we need to initialize */
320 static int yy_start = 0;        /* start state number */
321
322 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
323  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
324  */
325 static int yy_did_buffer_switch_on_eof;
326
327 void surf_parse_restart (FILE *input_file  );
328 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
329 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
330 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
331 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
332 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
333 void surf_parse_pop_buffer_state (void );
334
335 static void surf_parse_ensure_buffer_stack (void );
336 static void surf_parse__load_buffer_state (void );
337 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
338
339 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
340
341 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
342 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
343 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
344
345 void *surf_parse_alloc (yy_size_t  );
346 void *surf_parse_realloc (void *,yy_size_t  );
347 void surf_parse_free (void *  );
348
349 #define yy_new_buffer surf_parse__create_buffer
350
351 #define yy_set_interactive(is_interactive) \
352         { \
353         if ( ! YY_CURRENT_BUFFER ){ \
354         surf_parse_ensure_buffer_stack (); \
355                 YY_CURRENT_BUFFER_LVALUE =    \
356             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
357         } \
358         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
359         }
360
361 #define yy_set_bol(at_bol) \
362         { \
363         if ( ! YY_CURRENT_BUFFER ){\
364         surf_parse_ensure_buffer_stack (); \
365                 YY_CURRENT_BUFFER_LVALUE =    \
366             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
367         } \
368         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
369         }
370
371 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
372
373 /* Begin user sect3 */
374
375 #define surf_parse_wrap(n) 1
376 #define YY_SKIP_YYWRAP
377
378 typedef unsigned char YY_CHAR;
379
380 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
381
382 typedef int yy_state_type;
383
384 extern int surf_parse_lineno;
385
386 int surf_parse_lineno = 1;
387
388 extern char *surf_parse_text;
389 #define yytext_ptr surf_parse_text
390
391 static yy_state_type yy_get_previous_state (void );
392 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
393 static int yy_get_next_buffer (void );
394 static void yy_fatal_error (yyconst char msg[]  );
395
396 /* Done after the current pattern has been matched and before the
397  * corresponding action - sets up surf_parse_text.
398  */
399 #define YY_DO_BEFORE_ACTION \
400         (yytext_ptr) = yy_bp; \
401         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
402         (yy_hold_char) = *yy_cp; \
403         *yy_cp = '\0'; \
404         (yy_c_buf_p) = yy_cp;
405
406 #define YY_NUM_RULES 384
407 #define YY_END_OF_BUFFER 385
408 /* This struct is not used in this scanner,
409    but its presence is necessary. */
410 struct yy_trans_info
411         {
412         flex_int32_t yy_verify;
413         flex_int32_t yy_nxt;
414         };
415 static yyconst flex_int16_t yy_accept[2257] =
416     {   0,
417         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
418         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
419         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
420         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
421         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
422         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
423         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
424         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
427
428         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
434         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436         0,    0,    0,    0,  385,  383,   15,   10,   10,   15,
437        15,  363,   10,  363,    5,    6,    5,    8,    9,    8,
438
439       379,  371,  372,  380,  377,  380,  378,  382,  371,  372,
440       382,  383,   22,   10,   22,   22,   22,   20,   22,   26,
441        10,   26,   26,   26,  383,  383,   26,   37,   10,   37,
442        37,   37,   35,   37,   37,   37,  380,  379,   59,   10,
443        59,   59,   59,   57,   59,   59,   59,   59,   63,   10,
444        63,  383,   63,   82,   10,   82,   82,   82,   80,   82,
445        82,   82,   86,   10,   86,   95,   10,   95,   95,   95,
446        93,   95,   95,   99,   10,   99,   99,  383,   99,   99,
447       383,  383,   99,  383,   99,  383,   99,  122,   10,  122,
448       122,  122,  120,  122,  122,  122,  122,  122,  126,   10,
449
450       126,  126,  165,   10,  165,  165,  165,  163,  165,  165,
451       165,  165,  165,  165,  165,  165,  169,   10,  169,  190,
452        10,  190,  190,  190,  188,  190,  190,  190,  190,  190,
453       190,  194,   10,  194,  203,   10,  203,  203,  203,  201,
454       203,  203,  207,   10,  207,  234,   10,  234,  234,  234,
455       232,  234,  234,  234,  234,  238,   10,  238,  238,  251,
456        10,  251,  251,  251,  249,  251,  251,  255,   10,  255,
457       383,  255,  272,   10,  272,  272,  272,  270,  272,  272,
458       272,  276,   10,  276,  276,  289,   10,  289,  289,  289,
459       287,  289,  289,  293,   10,  293,  306,   10,  306,  306,
460
461       306,  304,  306,  306,  306,  310,   10,  310,  310,  323,
462        10,  323,  323,  323,  321,  323,  323,  323,  323,  327,
463        10,  327,  383,  327,  334,   10,  334,  334,  334,  332,
464       334,  338,   10,  338,  345,   10,  345,  345,  345,  343,
465       345,  349,   10,  349,  349,  349,  358,   10,  358,  358,
466       358,  356,  358,  358,  362,   10,  362,   10,    0,    2,
467         2,    0,    4,    7,  374,  373,    0,    0,    0,    0,
468         0,    0,    0,   21,   23,   23,    0,    0,    0,    0,
469         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
470         0,    0,    0,   36,   38,   38,   38,   38,    0,    0,
471
472         0,   58,   60,   60,   60,   60,   60,   60,   60,    0,
473         0,   81,   83,   83,   83,   83,    0,   94,   96,   96,
474        96,    0,    0,    0,    0,    0,    0,    0,    0,    0,
475       121,  123,  123,  123,  123,  123,  123,    0,  164,  166,
476       166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
477       166,  166,    0,  189,  191,  191,  191,  191,  191,  191,
478       191,    0,  202,  204,  204,  204,    0,  233,  235,  235,
479       235,  235,  235,  235,    0,  250,  252,  252,  252,  252,
480         0,    0,  271,  273,  273,  273,  273,  273,    0,  288,
481       290,  290,  290,    0,  305,  307,  307,  307,  307,    0,
482
483       322,  324,  324,  324,  324,  324,    0,    0,  333,  335,
484       335,    0,  344,  346,  346,    0,    0,  357,  359,  359,
485       359,    0,    0,    0,    0,    0,    3,    0,    0,    0,
486         0,    0,    0,    0,  381,    0,   23,    0,    0,   88,
487         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
488         0,    0,    0,   87,    0,    0,    0,    0,   38,    0,
489         0,   38,    0,    0,    0,  376,   60,    0,    0,   60,
490        60,   60,   60,    0,    0,    0,   83,   83,   83,    0,
491         0,    0,    0,   96,    0,    0,   88,    0,    0,    0,
492         0,   87,    0,    0,  123,  123,  123,    0,    0,  123,
493
494       123,    0,    0,  166,  166,    0,    0,  166,    0,    0,
495       166,  166,  166,  166,  166,  166,  166,    0,    0,  191,
496       191,    0,    0,  191,  191,  191,    0,    0,  204,    0,
497         0,    0,    0,  235,    0,    0,  235,  235,  235,    0,
498         0,  252,  252,  252,    0,    0,    0,  273,  273,  273,
499       273,    0,    0,  290,    0,    0,    0,    0,  307,  307,
500       307,    0,    0,  324,  324,  324,  324,    0,    0,    0,
501       335,    0,    0,    0,    0,    0,    0,    0,    0,    0,
502       359,    0,    0,    0,   14,    1,    0,    0,  369,    0,
503         0,    0,  366,  365,    0,    0,   23,    0,    0,   25,
504
505         0,   88,    0,    0,    0,    0,    0,    0,    0,    0,
506         0,    0,    0,    0,    0,    0,   87,    0,    0,    0,
507         0,   38,    0,   30,   29,   38,    0,    0,    0,   40,
508         0,   60,    0,   44,   43,    0,    0,   60,    0,    0,
509        60,    0,    0,   62,    0,    0,   83,   83,   83,    0,
510         0,   85,    0,    0,   90,   89,   96,    0,    0,   98,
511         0,    0,    0,    0,    0,    0,    0,    0,  123,  123,
512       123,    0,  103,  102,  123,  123,    0,    0,  125,    0,
513       166,  166,  166,  166,    0,  142,  141,  166,    0,  130,
514       129,    0,    0,  166,  166,  166,  166,  166,  166,    0,
515
516         0,  168,    0,  191,  191,  191,    0,  173,  172,    0,
517         0,  191,  191,    0,    0,  193,    0,  204,    0,  198,
518       197,    0,    0,  206,    0,  235,    0,  211,  210,  235,
519       235,  235,    0,    0,  237,    0,    0,    0,    0,    0,
520       252,    0,    0,  254,    0,    0,    0,    0,  273,  273,
521         0,    0,  273,    0,    0,  275,    0,  290,    0,  280,
522       279,    0,    0,  292,    0,    0,    0,  307,  307,    0,
523         0,    0,    0,  309,    0,  324,  324,  324,  324,    0,
524         0,  326,    0,    0,  335,    0,    0,  337,    0,    0,
525       342,  341,    0,    0,  348,    0,    0,    0,  353,  352,
526
527       359,    0,    0,  361,    0,    0,    0,  370,  364,    0,
528         0,    0,   23,    0,    0,    0,    0,    0,    0,  100,
529       208,  171,    0,    0,  350,    0,    0,    0,    0,    0,
530       170,    0,    0,    0,    0,   38,    0,    0,   60,    0,
531        48,   47,    0,    0,    0,   46,   45,   60,    0,  351,
532        83,    0,    0,   83,    0,   96,    0,   97,    0,    0,
533       101,  209,    0,    0,    0,  123,  123,    0,    0,  123,
534       123,    0,  166,  166,  166,  166,    0,    0,    0,  144,
535       143,  166,  166,  166,  166,  166,  166,    0,  191,  191,
536       191,    0,  181,  180,  191,  191,    0,  204,    0,  235,
537
538       235,  235,  235,    0,    0,  244,  243,    0,  242,  241,
539       252,    0,  208,    0,  261,  260,  273,  273,    0,  259,
540       258,  273,    0,  290,    0,    0,  299,  298,  307,  307,
541         0,  297,  296,    0,  324,    0,    0,  324,  324,    0,
542         0,  335,    0,    0,    0,  359,    0,    0,    0,    0,
543        12,    0,  367,  368,    0,   23,    0,    0,    0,    0,
544         0,    0,  100,  208,    0,  171,    0,    0,  350,    0,
545       239,   28,    0,    0,  170,   27,    0,    0,   32,   31,
546        38,    0,    0,   60,    0,   50,   49,   60,    0,  351,
547        83,    0,    0,    0,    0,    0,    0,   96,    0,    0,
548
549       101,  209,  240,  240,  239,  123,  123,    0,  107,  106,
550         0,    0,    0,    0,  123,    0,  166,    0,    0,  166,
551       166,    0,  140,  139,    0,    0,  166,  166,  166,  166,
552       166,    0,    0,    0,  191,  191,    0,    0,  191,    0,
553       204,    0,  235,  235,  235,    0,    0,  235,    0,  252,
554         0,    0,  273,  273,  273,    0,  290,    0,  307,  307,
555         0,  324,    0,  314,  313,  324,  324,    0,    0,    0,
556         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
557        11,    0,   23,    0,    0,    0,    0,    0,  340,    0,
558         0,    0,   41,  239,  195,   28,    0,  339,    0,   27,
559
560         0,    0,   38,    0,    0,   60,   60,    0,   83,    0,
561         0,    0,    0,    0,    0,    0,    0,    0,   77,   76,
562         0,   96,    0,    0,  240,  196,  123,  123,    0,  105,
563       104,    0,    0,    0,  123,    0,  124,  166,    0,  152,
564       151,    0,    0,  166,    0,  138,  137,    0,    0,  166,
565       166,  166,    0,    0,    0,    0,  177,  176,    0,    0,
566       191,    0,  175,  174,  191,    0,  192,  204,    0,  235,
567       235,  235,    0,    0,    0,  235,    0,  236,  252,    0,
568         0,    0,    0,    0,    0,  273,    0,  290,    0,    0,
569         0,    0,    0,    0,  324,  324,  324,    0,    0,    0,
570
571       331,  330,    0,    0,   42,    0,  355,  354,    0,  360,
572         0,    0,    0,    0,    0,    0,    0,  256,    0,    0,
573       128,  340,    0,    0,  312,   41,  195,    0,  339,  127,
574         0,  311,   38,    0,    0,   39,   60,   60,    0,    0,
575         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
576         0,    0,    0,    0,  257,    0,  196,  123,  123,    0,
577         0,  123,  166,    0,  154,  153,  166,    0,  132,  131,
578         0,    0,  166,  166,    0,  134,  133,    0,    0,  179,
579       178,  191,  191,  204,    0,  235,    0,    0,  235,  235,
580         0,    0,  235,  252,    0,  253,    0,    0,  265,  264,
581
582         0,  263,  262,  273,    0,  290,    0,    0,  303,  302,
583         0,  301,  300,    0,  324,  324,  324,    0,    0,    0,
584         0,   42,    0,    0,    0,   17,    0,   19,   18,    0,
585       256,  328,    0,  128,  277,   16,  312,    0,  127,    0,
586       311,   38,  375,   60,   60,    0,   61,    0,   79,   78,
587         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
588         0,    0,   92,   91,  257,    0,  123,  123,    0,    0,
589         0,    0,  123,  166,  166,    0,  136,  135,  166,  166,
590         0,  191,  191,  204,    0,  205,  235,    0,  217,  216,
591       235,  235,    0,    0,    0,    0,  235,  252,  278,  273,
592
593         0,  290,    0,    0,    0,    0,  324,  324,    0,  329,
594         0,    0,  347,    0,    0,    0,   17,    0,  328,    0,
595       277,   16,    0,    0,   38,    0,    0,   60,    0,    0,
596         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
597       123,  123,    0,  113,    0,  112,  123,  166,  166,  166,
598       166,    0,  167,  191,  191,  204,    0,    0,  235,  235,
599       235,    0,  221,    0,  220,  235,  252,  278,  273,    0,
600       274,    0,    0,    0,    0,    0,  316,  315,    0,    0,
601       324,    0,  325,  329,    0,    0,    0,    0,    0,   24,
602         0,    0,    0,   38,    0,    0,    0,   60,    0,    0,
603
604         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
605       123,  123,  115,  114,    0,    0,  166,  166,  166,    0,
606         0,  191,  191,  204,    0,  213,  212,  235,  235,  235,
607       223,  222,    0,    0,  252,  273,    0,    0,    0,    0,
608       291,    0,    0,  320,  319,    0,    0,    0,  336,    0,
609         0,    0,  294,    0,    0,    0,    0,    0,    0,    0,
610         0,   60,    0,    0,    0,    0,   69,    0,    0,    0,
611         0,   68,    0,  295,  123,    0,    0,    0,  117,  116,
612       166,  166,  166,    0,  162,  161,    0,    0,  191,    0,
613         0,  235,  235,  235,    0,  225,  224,    0,    0,    0,
614
615         0,    0,    0,    0,    0,    0,    0,    0,    0,  318,
616       317,    0,    0,    0,  294,    0,    0,    0,   34,   33,
617         0,    0,    0,    0,   60,    0,    0,    0,    0,    0,
618         0,    0,    0,    0,  295,    0,    0,  123,    0,  119,
619       118,  166,  166,  166,    0,  183,  182,  191,    0,  200,
620       199,  235,    0,    0,  235,    0,    0,    0,    0,    0,
621         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
622         0,    0,   65,   64,    0,    0,    0,    0,    0,    0,
623         0,    0,   75,    0,    0,    0,   74,    0,    0,    0,
624       109,  108,  123,  166,  166,  166,  191,  235,    0,  219,
625
626       218,  235,    0,    0,    0,    0,    0,    0,    0,    0,
627         0,    0,  282,    0,    0,  281,    0,  308,    0,    0,
628         0,    0,    0,    0,   65,   64,    0,    0,    0,    0,
629         0,   52,   51,    0,    0,    0,    0,    0,    0,    0,
630       123,  166,  166,    0,    0,    0,    0,    0,    0,    0,
631         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
632         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
633        56,    0,   55,   73,    0,    0,   72,    0,    0,    0,
634        84,  123,  166,  166,    0,    0,    0,    0,    0,    0,
635         0,  215,  214,    0,    0,    0,  248,    0,  247,    0,
636
637       269,    0,  268,    0,  284,  286,  283,  285,    0,    0,
638         0,   12,    0,   12,    0,    0,    0,   67,   71,   66,
639        70,  123,  166,  166,    0,    0,    0,    0,    0,    0,
640         0,    0,    0,    0,    0,    0,  246,  245,  267,  266,
641         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
642         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
643         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
644         0,   54,   53,    0,  111,  110,    0,  160,  159,    0,
645         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
646         0,    0,    0,    0,    0,    0,    0,    0,    0,   11,
647
648         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
649         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
650         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
651         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
652         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
653         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
654         0,    0,    0,    0,    0,    0,    0,    0,    0,  146,
655         0,    0,  145,    0,  185,    0,  184,    0,    0,  227,
656         0,    0,  226,    0,    0,    0,    0,    0,  150,    0,
657       149,    0,    0,    0,  229,    0,  228,    0,    0,    0,
658
659         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
660         0,  156,    0,  155,    0,    0,    0,    0,    0,    0,
661         0,    0,  158,  157,  148,  147,  187,  186,  231,  230,
662         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
663         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
664         0,    0,    0,    0,   13,    0
665     } ;
666
667 static yyconst flex_int32_t yy_ec[256] =
668     {   0,
669         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
670         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
671         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
672         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
673         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
674        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
675        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
676        16,   28,   29,   16,   30,   31,   32,   33,   34,   35,
677        16,   36,   37,   38,   39,   40,   41,   42,   43,   16,
678        44,    1,   45,    1,   46,    1,   47,   48,   49,   50,
679
680        51,   52,   53,   54,   55,   16,   56,   57,   58,   59,
681        60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
682        70,   16,    1,    1,    1,    1,    1,    1,    1,    1,
683         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
684         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
685         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
686         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
687         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
688         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
689         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
690
691         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
692         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
693         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
694         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
695         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
696         1,    1,    1,    1,    1
697     } ;
698
699 static yyconst flex_int32_t yy_meta[71] =
700     {   0,
701         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
702         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
703         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
704         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
705         5,    5,    5,    1,    1,    5,    9,    9,    9,    9,
706         9,    9,    5,    5,    5,    5,    5,    5,    5,    5,
707         5,    5,    5,    5,    5,    5,    5,    5,    5,    5
708     } ;
709
710 static yyconst flex_int16_t yy_base[2533] =
711     {   0,
712         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
713        14,   17,   33,   36,   49,   55,   45,   61,   66,   73,
714       106,  173,   76,   79,   83,  126,  129,  134,  137,  154,
715       193,  196,  201,  204,  221,  224,  227,  230,  248,  309,
716       280,  286,  370,  434,  268,  273,  277,  330,  333,  337,
717       340,  390,  498,  563,  393,  398,  628,  691,  401,  454,
718       457,  462,  465,  518,  521,  526,  529,  583,  586,  591,
719       594,  648,  651,  656,  659,  711,  714,  719,  722,  739,
720       745,  748,  756,  765,  768,  773,  776,  785,  803,  867,
721       823,  826,  831,  835,  887,  890,  895,  899,  931,    0,
722
723      1000, 1003, 1021, 1085, 1041, 1044, 1149, 1204, 1049, 1053,
724      1259, 1323, 1105, 1108, 1113, 1117, 1169, 1172, 1177, 1181,
725      1387, 1451, 1224, 1227, 1232, 1236, 1279, 1282, 1287, 1290,
726      1515, 1579, 1343, 1346, 1351, 1354, 1407, 1410, 1415, 1418,
727      1643, 1698, 1471, 1474, 1753, 1817, 1479, 1482, 1535, 1538,
728      1543, 1546, 1599, 1602, 1881, 1945, 1607, 1610, 1663, 1666,
729      1671, 1674, 1718, 1721, 2009, 2076, 1726, 1729, 2143, 2198,
730      1773, 1776, 1781, 1784, 1837, 1840, 1845, 1848, 2253, 2320,
731      1901, 1904,    0,    0, 5560, 7722, 7722,   96,  100,   29,
732        41, 7722,  157,   51, 7722, 7722, 5549, 7722, 7722, 5537,
733
734      7722, 5547, 5547,  360, 7722, 7722, 7722, 7722, 5541, 5541,
735      5497,   84, 7722,  160, 5515,    0,  144, 7722, 5482, 7722,
736       164, 2383, 5483,  492,  224, 5518, 5464, 7722,  167, 5504,
737         0,  216, 7722, 5467, 5469, 5467,  344, 5448, 7722,  303,
738      5472,    0,  341, 7722, 5439, 5435,   41, 5419, 7722,  427,
739        13,   81,  141, 7722,  482, 5462,    0,  342, 7722, 5416,
740      5417, 5408, 7722,  491,  345, 7722,  548, 5448,    0,  347,
741      7722, 5398, 5387, 7722,  556, 1919, 1920, 5388,   80, 5418,
742       198,  252,  364,  613,   59, 5427,   83, 7722,  613, 5417,
743         0,  405, 7722, 5361, 5367, 5373, 5351, 5345, 7722,  618,
744
745       177,  235, 7722,  676, 5383,    0,  469, 7722, 5335,  167,
746      5340, 5349, 5350,  149, 5345,  355, 7722,  682,  476, 7722,
747       685, 5371,    0,  535, 7722, 5321, 5324, 5333, 5334, 5319,
748      5324, 7722,  793,  606, 7722,  796, 5356,    0,  540, 7722,
749      5303, 5312, 7722,  852,  780, 7722,  857, 5340,    0,  541,
750      7722, 5308, 5304, 5305,  243, 7722,  916,  357,  412, 7722,
751       921, 5323,    0,  605, 7722, 5278,  150, 7722, 1006,  670,
752      5329, 5281, 7722, 1009, 5299,    0,  660, 7722, 5254, 5249,
753       275, 7722, 1012, 5304,  420, 7722, 1070, 5295,    0,  723,
754      7722, 5259, 5262, 7722, 1077, 1056, 7722, 1134, 5290,    0,
755
756       734, 7722, 5245, 5239, 5235, 7722, 1141, 5281,  470, 7722,
757      1198, 5272,    0,  740, 7722, 5208, 5212, 5208, 5195, 7722,
758      1253, 1071, 5246,  240, 7722, 1307, 5227,    0,  760, 7722,
759      5195, 7722, 1315, 1294, 7722, 1318, 5219,    0,  841, 7722,
760      5187, 7722, 1371, 1864, 5166,  180, 7722, 1379, 5201,    0,
761       905, 7722, 5170, 5163, 7722, 1382, 1358, 1436,   18, 5140,
762      7722, 5197, 5173, 7722, 7722, 7722, 1429,  241, 5127, 5124,
763      5120, 5164, 5125, 7722,    0, 5118, 5118, 5128, 5101, 5092,
764       477, 5097, 5101,  794,  403, 5091,  478, 5112,  542,  858,
765      5085, 1140, 1195, 7722,    0, 5089, 1910, 5077,  234, 5073,
766
767      5114, 7722,    0, 5073, 1968, 5062, 5082, 5065, 5073, 5052,
768      1372, 7722,    0, 5063, 5044, 5043, 5021, 7722,    0, 1975,
769      5019, 5061, 5038, 5004, 5009, 5013,  532, 5029,  553,  597,
770      7722,    0, 5014,  543, 1981, 4988, 5008, 4999, 7722,    0,
771      5001, 4997, 1989, 4979, 2029, 4975, 4967, 4979, 4979, 4980,
772      4975, 4965, 4967, 7722,    0, 4968, 4949, 2032, 4939, 4935,
773      4954, 4935, 7722,    0, 4931, 2036, 4927, 7722,    0, 4929,
774      2039, 4922, 4938, 4933, 4922, 7722,    0, 4912, 4922, 4910,
775      4900, 4907, 7722,    0, 4895, 4913, 4899, 4889, 4919, 7722,
776         0, 4877, 2042, 4881, 7722,    0, 4861, 4879, 4874, 4870,
777
778      7722,    0, 4858, 4848, 4853, 4862, 4846, 4836, 7722,    0,
779      4841, 4845, 7722,    0, 2096, 4842,  660, 7722,    0, 2099,
780      4832, 4820, 4860, 4865,  442, 4816, 7722, 1432,    0, 4811,
781      4803, 4845, 4843, 4797, 7722, 4798, 4780, 1914, 2102, 1500,
782      4789, 4776, 4770, 4771, 4765, 4768, 4768, 4771, 4753, 4753,
783      4739, 4753, 4740, 1503, 4731, 4745, 4740, 4726, 4718, 2105,
784      1567, 4712, 4742, 2108, 2163, 7722, 4713, 2123, 1631, 2166,
785      4700, 2170, 4712, 2173, 2176, 4696, 4693, 4700, 4699, 2218,
786      2225, 2228, 1805, 4672, 2231, 2273, 1509, 4674, 4668, 4671,
787      4659, 1747, 4658, 4647, 4657, 4644, 4653, 2276, 1869, 4644,
788
789      4628, 2279, 2282, 4636, 1510, 2287, 2060, 4635, 2341, 2127,
790      2344, 4623, 4621, 4595, 4586, 4582, 4594, 2347, 2350,  436,
791      4581, 2353, 2188, 2374, 4592, 4578, 2377, 2382, 4577, 2387,
792      2309, 2396, 2406, 4581, 2409, 2415, 4579, 4548, 4539, 2432,
793      2439, 2451, 2454, 2458, 2447, 2461, 4544, 2472, 2476, 2480,
794      2483, 2486, 2494, 4550, 2501, 2506, 2515, 2525, 2520, 2534,
795      2530, 2540, 2544, 4540, 4523, 4520, 4512, 2548, 2552, 4521,
796      4506, 2555, 2559, 2563, 2567, 2583, 2586, 4511, 2589, 2593,
797      4503, 2607, 2614, 4547, 7722, 7722,  644, 4496, 7722, 4535,
798      4525, 4477, 7722, 7722, 4474, 4465, 4474, 2617, 2621, 7722,
799
800      2627, 1506, 4466, 4458, 4473, 4439, 4436, 4422, 4426, 4418,
801      4409,  741, 4415, 4399, 4412, 4403, 1692, 4369, 4364, 4376,
802       770, 2636, 2647, 7722, 7722, 2640, 4399, 2658, 2661, 7722,
803      2664, 4347, 2667, 7722, 7722, 2683, 2686, 2694, 2701, 2706,
804      4358, 2714, 2719, 7722, 2722,  834, 4353, 2725, 4351, 2728,
805      2733, 7722, 2743, 2748, 7722, 7722, 4346, 2756, 2762, 7722,
806      2765, 4339, 4344, 4324, 4332, 4321, 4320, 4318, 4321, 4320,
807      2768, 2771, 7722, 7722, 4306, 4316, 2789, 2792, 7722, 2795,
808      4302, 4288, 4304, 4296, 2798, 7722, 7722, 2814, 2817, 7722,
809      7722, 2825, 2828, 4281, 4284, 4289, 4281, 4280, 4275, 2836,
810
811      2843, 7722, 2846, 4269, 4254, 4268, 2849, 7722, 7722, 2858,
812      2865, 4250, 4257, 2876, 2879, 7722, 2882, 4260, 2885, 7722,
813      7722, 2901, 2904, 7722, 2907, 4230, 2911, 7722, 7722, 4237,
814      4240, 4241, 2926, 2932, 7722, 2935, 2938, 2941, 2956, 2959,
815      4240, 2967, 2975, 7722, 2978, 4233, 2981, 2987, 4218, 4184,
816      2999, 3002, 4190, 3010, 3013, 7722, 3017, 4187, 3020, 7722,
817      7722, 3032, 3036, 7722, 3039, 3043, 3051, 4170, 4170, 3046,
818      3064, 3072, 3075, 7722, 3079, 4166, 3082, 4177, 4157, 3085,
819      3100, 7722, 3104, 4150, 4163, 3107, 3110, 7722, 3113, 3119,
820      7722, 7722, 3132, 3135, 7722, 3139, 4159, 3142, 7722, 7722,
821
822      4153, 3154, 3158, 7722, 3165,  585, 3168, 7722, 7722, 4186,
823      4179, 4143, 4133, 3173, 4112, 4119, 4111, 4105, 4108, 1936,
824      2001, 2068, 4110, 4109, 2071, 4085, 4093, 4091, 4086, 4074,
825      2135, 4080, 4079, 3177, 3188, 4078, 4104, 3180, 4078, 3199,
826      7722, 7722, 3207, 3210, 3218, 7722, 7722, 4072, 3228, 2237,
827      4062, 3231, 3237, 3249, 3252, 4061, 3255, 7722, 4052, 4040,
828      2246, 3258, 4051, 4050, 4046, 4049, 4039, 3261, 3267, 3279,
829      3283, 3286, 4034, 3289, 4014, 4029, 3292, 3310, 3318, 7722,
830      7722, 3328, 4002, 4023, 4005, 4013, 3989, 3332, 3335, 3338,
831      3342, 3356, 7722, 7722, 3364, 3367, 3370, 4001, 3373, 3993,
832
833      3998, 3986, 3376, 3385, 3398, 7722, 7722, 3406, 7722, 7722,
834      3979, 3414, 3346, 3421, 7722, 7722, 3977, 3992, 3433, 7722,
835      7722, 3974, 3441, 3962, 3444, 3447, 7722, 7722, 3961, 3975,
836      3456, 7722, 7722, 3464, 3961, 3467, 3471, 3948, 3962, 3479,
837      3949, 3485, 3488, 3492, 3945, 3503, 3511,  710, 3975, 3514,
838      7722, 3974, 7722, 7722, 3932, 3928, 3517, 3921, 3930, 3916,
839      3927, 3919, 2301, 2839, 3920, 3417, 3891, 3885, 3521, 3890,
840      3536, 3539, 3893, 3893, 3543, 3546, 3879, 3549, 7722, 7722,
841      3886, 3883, 3557, 3846, 3564, 7722, 7722, 3822, 3560, 3572,
842      3823, 3580, 2338, 2392, 3591, 3594, 3602, 3833, 3820, 3819,
843
844      3609, 3612, 3615, 3621, 3624, 3824, 3808, 3627, 7722, 7722,
845      3635, 3638, 3646, 3653, 3807, 3665, 3807, 3669, 3673, 3687,
846      3791, 3690, 7722, 7722, 3698, 3701, 3709, 3791, 3789, 3788,
847      3712, 3716, 3719, 3723, 3731, 3737, 3740, 3743, 3751, 3758,
848      3780, 3762, 3785, 3764, 3763, 3765, 3770, 3763, 3783, 3749,
849      3786, 3758, 3789, 3795, 3798, 3807, 3750, 3816, 3819, 3822,
850      3826, 3735, 3841, 7722, 7722, 3739, 3718, 3829, 3729, 3849,
851      3854, 3862, 3867, 3719, 3872, 3875, 3890,  181,  339,  713,
852      7722, 3712, 3893, 3896, 3720, 3704, 3722, 3694, 3899, 3686,
853      3685, 3673, 3902, 3905, 3911, 3915, 3681, 3921, 3661, 3924,
854
855      3660, 3644, 3649, 3675, 3927, 3635, 3631, 3930, 3933, 3661,
856      3647,  377, 3646, 3652, 3636,  526, 3632, 3936, 7722, 7722,
857      3951, 3955, 3613, 3627, 3958, 3961, 3606, 3613, 3964, 7722,
858      7722, 3973, 3624, 3618, 3596, 3981, 7722, 3591, 3987, 7722,
859      7722, 3996, 4000, 3590, 4008, 7722, 7722, 4016, 4019, 4027,
860      3597, 3580, 4030, 4034, 4048, 4051, 7722, 7722, 4059, 4063,
861      3587, 4071, 7722, 7722, 3586, 4080, 7722, 3574, 4083, 3542,
862      4086, 3556, 4089, 3557, 3556, 3533, 4104, 7722, 3516, 4107,
863      3471, 4110, 4113, 4131, 4134, 3477, 4145, 3470, 4149, 4152,
864      4155, 4164, 4170, 4182, 3470, 3452, 3454, 4185, 3444, 4188,
865
866      7722, 7722, 4197, 4204, 4178, 4209, 7722, 7722, 4217, 7722,
867        40,  670,  773, 3440, 4223, 4226, 4236, 4241, 3413, 3416,
868      4248, 4251, 3398, 3396, 4256, 4259, 4262, 3392, 4265, 4268,
869      3372, 4271, 3358, 3367, 4274, 7722, 3319, 3279, 4277, 4281,
870      4284, 3292, 3278, 3271, 3274, 3262, 3264,   58,   97,  121,
871       241, 4299, 4302, 4305, 4313,  300, 4320,  376,  405,  729,
872       873,  414,  469, 4323, 7722, 7722,  532, 4331, 7722, 7722,
873      4339, 4343,  563,  599, 4351, 7722, 7722, 4359, 4362, 7722,
874      7722,  606,  614,  669, 4370,  684, 4373, 4378,  721,  721,
875      1027, 1031,  727,  783, 4391, 7722,  781, 4394, 7722, 7722,
876
877      4403, 7722, 7722,  793, 4411,  784, 4414, 4417, 7722, 7722,
878      4426, 7722, 7722, 4434, 4437,  812,  807, 4440,  801, 4443,
879      4446, 4449, 4455, 1064,  999, 4465, 4474, 7722, 7722, 4469,
880      4482, 4488,  830, 4491, 4494, 4497, 4503,  845, 4506,  848,
881      4509,  862, 7722, 4512,  864, 4515, 7722, 4519, 7722, 7722,
882       905,  979,  994, 1007, 1023, 1025, 1037, 1075, 1083, 1088,
883      4530, 4534, 7722, 7722, 4542, 1056, 1070, 1076, 1101, 1133,
884      1114, 1138, 1097, 1110, 1124, 4545, 7722, 7722, 1118, 1131,
885      4553, 1135, 1128, 1138, 4556, 7722, 4559, 4562, 7722, 7722,
886      1137, 1136, 1193, 1226, 1206, 1228, 1190, 1196, 4577, 1197,
887
888      4580, 4583, 4589, 4592, 4595, 4604, 4613, 1196, 4616, 4619,
889      4622, 4625, 7722, 4631, 1430, 1459, 4635, 4651, 4654, 1186,
890      4657, 4660, 1216, 1228, 1218, 4663, 4666, 1240, 1255, 1252,
891      1268, 1256, 1276, 1272, 1293, 1318, 1306, 1323, 4674, 1295,
892      1297, 1301, 1360, 7722, 1367, 7722, 4677, 1312, 1357, 1358,
893      4681, 4686, 7722, 1352, 1367, 1362, 4695, 4699, 1375, 1373,
894      1377, 1435, 7722, 1439, 7722, 4707, 1410, 4713, 1430, 4716,
895      7722, 4719, 4725, 4737, 4740, 4743, 7722, 7722, 4751, 4759,
896      4769, 4772, 7722, 4775, 4778, 1474, 1523, 1535, 4781, 7722,
897      1437, 1439, 1440, 4791, 4805, 1526, 1582, 1433, 1470, 1522,
898
899      1528, 1532, 1551, 1546, 1555, 1584, 1593, 1607, 4800, 1568,
900      1551, 4813, 7722, 7722, 4819, 4822, 1552, 1565, 1572, 4831,
901      4837, 4845, 1575, 4849, 4852, 7722, 7722, 1576, 1585, 1583,
902      7722, 7722, 4863, 4867, 4875, 4881, 4884, 1646, 1647, 4893,
903      7722, 4899, 4902, 7722, 7722, 4912, 4918, 4926, 7722, 1694,
904      1795, 1877, 4787, 1590, 1592, 4930, 4933, 1606, 1637, 1646,
905      1661, 1631, 1666, 1657, 1683, 1687, 7722, 1709, 1695, 1694,
906      1698, 7722, 4941, 4948, 4951, 4954, 4963, 4972, 7722, 7722,
907      1694, 1685, 1697, 4980, 7722, 7722, 4991, 4996, 1703, 5004,
908      5009, 1712, 5017, 1732, 5022, 7722, 7722, 5030, 5035, 5043,
909
910      5048, 1748, 1755, 1755, 1758, 1759, 1760, 5056, 5061, 7722,
911      7722, 1780, 1793, 5069, 5075, 1731, 1736, 5078, 7722, 7722,
912      1782, 1772, 1790, 1783, 5089, 1795, 1831, 1850, 1835, 1821,
913      1838, 1855, 1843, 5092, 5095, 5098, 5107, 1816, 5116, 7722,
914      7722, 1817, 1817, 1807, 5124, 7722, 7722, 1809, 5133, 7722,
915      7722, 1829, 5102, 5141, 1839, 5149, 1877, 1953, 5157, 1955,
916      2016, 1874, 1888, 1917, 1883, 1895, 1921, 5165, 1923, 5168,
917      5171, 5174, 5193, 5196, 1911, 1936, 1941, 1955, 5199, 5202,
918      1967, 1973, 7722, 1977, 1979, 1996, 7722, 2008, 5210, 5213,
919      7722, 7722, 1995, 1997, 2001, 5221, 5224, 5229, 5232, 7722,
920
921      7722, 5242, 2023, 2034, 2031, 2041, 2034, 2066, 2079, 2088,
922      2083, 2091, 7722, 2086, 2097, 7722, 5247, 7722, 2121, 5250,
923      5253, 5262, 5282, 5327, 5274, 5277, 2107, 2128, 2110, 2131,
924      5302, 7722, 7722, 2165, 2151, 2153, 2177, 2164, 2183, 5293,
925      2167, 2168, 2187, 5318, 5347, 5321, 5355, 5363, 5371, 5366,
926      5384, 2231, 2207, 2237, 2215, 2263, 2250, 2283, 2257, 2290,
927      2294, 2292, 2298, 2296, 5392, 2362, 2374, 5412, 5457, 2295,
928      7722, 2300, 7722, 7722, 2311, 2313, 7722, 2327, 2349, 5402,
929      7722, 2311, 2320, 2304, 5432, 2402, 2474, 5440, 2567, 2599,
930      5477, 7722, 7722, 5485, 2608, 2621, 7722, 2386, 7722, 2387,
931
932      7722, 2395, 7722, 2394, 7722, 7722, 7722, 7722, 2449, 2673,
933      2451, 2408, 2592, 2413, 5405, 2410, 2423, 7722, 7722, 7722,
934      7722, 5448, 5451, 5493, 2491, 2417, 2561, 2419, 2429, 2464,
935      2454, 2472, 2660, 2497, 2716, 2546, 7722, 7722, 7722, 7722,
936      5496, 2571, 2557, 2572, 5501, 2599, 2598, 5504, 5511, 5507,
937      5525, 5534, 5537, 2575, 2597, 2610, 2595, 2621, 2632, 2626,
938      2650, 2644, 2658, 2645, 2660, 2672, 2663, 2675, 2685, 5545,
939      2694, 7722, 7722, 5552, 7722, 7722, 5560, 7722, 7722, 5568,
940      2706, 2751, 2684, 2709, 2705, 2714, 2725, 2725, 2731, 2743,
941      2752, 2748, 2751, 2758, 2767, 2770, 2775, 2772, 2793, 7722,
942
943      2788, 2783, 2792, 2794, 2795, 2800, 2809, 2825, 2832, 2838,
944      2840, 2844, 2847, 2847, 2846, 2851, 2864, 2863, 2868, 2869,
945      2881, 2859, 2876, 2862, 2894, 2884, 2883, 2898, 2890, 2887,
946      2906, 2893, 2923, 2910, 2926, 2918, 2915, 2931, 2929, 2927,
947      2942, 2954, 2937, 2940, 2951, 2952, 2971, 2964, 3001, 2983,
948      2975, 3016, 2992, 3022, 2996, 3023, 3025, 3023, 3055, 3037,
949      3029, 3060, 3070, 3042, 3046, 3062, 3067, 3088, 3066, 7722,
950      3091, 3087, 7722, 3088, 7722, 3095, 7722, 3123, 3100, 7722,
951      3123, 3116, 7722, 3133, 3114, 3125, 3119, 3138, 7722, 3147,
952      7722, 3160, 3161, 3169, 7722, 3173, 7722, 3178, 5576, 3180,
953
954      3201, 3189, 3208, 3176, 3181, 3186, 3194, 3195, 3200, 5581,
955      3238, 7722, 3236, 7722, 3241, 3240, 3260, 3258, 3268, 3268,
956      3259, 3264, 7722, 7722, 7722, 7722, 7722, 7722, 7722, 7722,
957      3298, 3336, 3285, 3297, 3280, 3361, 3343, 3365, 3344, 3374,
958      3435, 3443, 3420, 3515, 3452, 3477, 3513, 3536, 3537, 3559,
959      3378, 3290, 5589, 5595, 7722, 7722, 5615, 5624, 5633, 5642,
960      5651, 5660, 5669, 5678, 5687, 5696, 5705, 5714, 5723, 5732,
961      5741, 5750, 5759, 5768, 5777, 5786, 5795, 5804, 5813, 5822,
962      5831, 5840, 5849, 5858, 5867, 5876, 5885, 5894, 5903, 5912,
963      5921, 5930, 5939, 5948, 5957, 5966, 5975, 5982, 5989, 5996,
964
965      6003, 6010, 6017, 6024, 6031, 6038, 6045, 6052, 6059, 6066,
966      6073, 6080, 6087, 6094, 6101, 6110, 6117, 6122, 6129, 6134,
967      6141, 6146, 6153, 6158, 6165, 6170, 6175, 6182, 6187, 6194,
968      6199, 6206, 6211, 6218, 6223, 6230, 6235, 6242, 6247, 6254,
969      6259, 6266, 6271, 6278, 6283, 6290, 6295, 6302, 6307, 6314,
970      6319, 6328, 6334, 6341, 6349, 6356, 6364, 6371, 6379, 6386,
971      6394, 6401, 6409, 6416, 6424, 6431, 6439, 6446, 6454, 6461,
972      6469, 6476, 6484, 6492, 6500, 6508, 6516, 6523, 6531, 6539,
973      6547, 6554, 6562, 6569, 6577, 6585, 6592, 6600, 6609, 6615,
974      6622, 6630, 6638, 6646, 6653, 6661, 6668, 6676, 6683, 6691,
975
976      6698, 6706, 6713, 6721, 6728, 6736, 6743, 6751, 6758, 6766,
977      6773, 6781, 6788, 6796, 6803, 6811, 6818, 6826, 6833, 6841,
978      6848, 6856, 6864, 6871, 6879, 6888, 6897, 6904, 6912, 6919,
979      6927, 6934, 6942, 6949, 6957, 6964, 6971, 6979, 6986, 6994,
980      7002, 7010, 7017, 7025, 7032, 7040, 7047, 7055, 7062, 7070,
981      7077, 7085, 7092, 7100, 7107, 7115, 7123, 7131, 7139, 7147,
982      7155, 7164, 7173, 7180, 7188, 7195, 7203, 7210, 7218, 7225,
983      7233, 7240, 7247, 7255, 7262, 7270, 7278, 7286, 7293, 7301,
984      7308, 7316, 7323, 7331, 7339, 7347, 7354, 7362, 7370, 7378,
985      7385, 7393, 7401, 7409, 7417, 7426, 7435, 7443, 7451, 7458,
986
987      7466, 7473, 7481, 7489, 7497, 7505, 7512, 7519, 7527, 7534,
988      7541, 7549, 7556, 7563, 7571, 7578, 7586, 7593, 7601, 7609,
989      7616, 7624, 7632, 7640, 7649, 7658, 7667, 7676, 7685, 7694,
990      7703, 7712
991     } ;
992
993 static yyconst flex_int16_t yy_def[2533] =
994     {   0,
995      2257, 2257, 2258, 2258, 2258, 2258, 2259, 2259, 2260, 2260,
996      2261, 2261, 2262, 2262, 2262, 2262, 2263, 2263, 2257, 2257,
997      2264, 2264, 2265, 2265, 2265, 2265, 2265, 2265, 2257, 2257,
998      2265, 2265, 2257, 2257, 2265, 2265, 2265, 2265, 2266, 2266,
999      2262, 2262, 2267, 2267, 2268, 2268, 2257, 2257, 2268, 2268,
1000      2268, 2268, 2269, 2269, 2270, 2270, 2271, 2271, 2272, 2272,
1001      2272, 2272, 2257, 2257, 2272, 2272, 2272, 2272, 2257, 2257,
1002      2272, 2272, 2257, 2257, 2272, 2272, 2272, 2272, 2257, 2257,
1003      2272, 2272, 2257, 2257, 2272, 2272, 2272, 2272, 2273, 2273,
1004      2274, 2274, 2257, 2257, 2274, 2274, 2274, 2274, 2256,   99,
1005
1006      2275, 2275, 2276, 2276, 2277, 2277, 2278, 2278, 2279, 2279,
1007      2280, 2280, 2281, 2281, 2257, 2257, 2281, 2281, 2281, 2281,
1008      2282, 2282, 2283, 2283, 2257, 2257, 2283, 2283, 2283, 2283,
1009      2284, 2284, 2285, 2285, 2257, 2257, 2285, 2285, 2285, 2285,
1010      2286, 2286, 2287, 2287, 2288, 2288, 2289, 2289, 2257, 2257,
1011      2289, 2289, 2289, 2289, 2290, 2290, 2291, 2291, 2257, 2257,
1012      2291, 2291, 2291, 2291, 2292, 2292, 2293, 2293, 2294, 2294,
1013      2295, 2295, 2257, 2257, 2295, 2295, 2295, 2295, 2296, 2296,
1014      2297, 2297, 2257, 2257, 2256, 2256, 2256, 2256, 2256, 2256,
1015      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1016
1017      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1018      2256, 2256, 2256, 2256, 2256, 2298, 2256, 2256, 2298, 2256,
1019      2256, 2256,  222,  222,  222,  224,  224, 2256, 2256, 2256,
1020      2299, 2256, 2256, 2299, 2299, 2299, 2256, 2256, 2256, 2256,
1021      2256, 2300, 2256, 2256, 2300, 2300, 2300, 2300, 2256, 2256,
1022       224,  224,  224, 2256, 2256, 2256, 2301, 2256, 2256, 2301,
1023      2301, 2301, 2256, 2256, 2256, 2256, 2256, 2256, 2302, 2256,
1024      2256, 2302, 2302, 2256, 2256,  225,  225,  225,  276,  277,
1025       277,  277,  277,  283,  284,  283,  283, 2256, 2256, 2256,
1026      2303, 2256, 2256, 2303, 2303, 2303, 2303, 2303, 2256, 2256,
1027
1028       224,  224, 2256, 2256, 2256, 2304, 2256, 2256, 2304, 2304,
1029      2304, 2304, 2304, 2304, 2304, 2304, 2256, 2256, 2256, 2256,
1030      2256, 2256, 2305, 2256, 2256, 2305, 2305, 2305, 2305, 2305,
1031      2305, 2256, 2256, 2256, 2256, 2256, 2256, 2306, 2256, 2256,
1032      2306, 2306, 2256, 2256, 2256, 2256, 2256, 2256, 2307, 2256,
1033      2256, 2307, 2307, 2307, 2307, 2256, 2256,  224,  224, 2256,
1034      2256, 2256, 2308, 2256, 2256, 2308, 2308, 2256, 2256,  224,
1035       370,  370, 2256, 2256, 2256, 2309, 2256, 2256, 2309, 2309,
1036      2309, 2256, 2256,  370,  370, 2256, 2256, 2256, 2310, 2256,
1037      2256, 2310, 2310, 2256, 2256, 2256, 2256, 2256, 2256, 2311,
1038
1039      2256, 2256, 2311, 2311, 2311, 2256, 2256,  370,  370, 2256,
1040      2256, 2256, 2312, 2256, 2256, 2312, 2312, 2312, 2312, 2256,
1041      2256,  224,  422,  422, 2256, 2256, 2256, 2313, 2256, 2256,
1042      2313, 2256, 2256, 2256, 2256, 2256, 2256, 2314, 2256, 2256,
1043      2314, 2256, 2256,  422,  444,  444, 2256, 2256, 2256, 2315,
1044      2256, 2256, 2315, 2315, 2256, 2256, 2256, 2256, 2316, 2256,
1045      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1046      2256, 2256, 2256, 2256, 2317, 2317, 2318, 2256, 2256, 2256,
1047      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1048      2256, 2256, 2256, 2256, 2319, 2319, 2319, 2319, 2256, 2320,
1049
1050      2256, 2256, 2321, 2321, 2321, 2321, 2321, 2321, 2321, 2322,
1051      2256, 2256, 2323, 2323, 2323, 2323, 2324, 2256, 2325, 2325,
1052      2325, 2326, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1053      2256, 2303, 2303, 2303, 2303, 2303, 2303, 2327, 2256, 2328,
1054      2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328, 2328,
1055      2328, 2328, 2329, 2256, 2330, 2330, 2330, 2330, 2330, 2330,
1056      2330, 2331, 2256, 2332, 2332, 2332, 2333, 2256, 2334, 2334,
1057      2334, 2334, 2334, 2334, 2335, 2256, 2336, 2336, 2336, 2336,
1058      2337, 2256, 2256, 2338, 2338, 2338, 2338, 2338, 2339, 2256,
1059      2340, 2340, 2340, 2341, 2256, 2342, 2342, 2342, 2342, 2343,
1060
1061      2256, 2344, 2344, 2344, 2344, 2344, 2345, 2256, 2256, 2346,
1062      2346, 2347, 2256, 2348, 2348, 2349, 2256, 2256, 2350, 2350,
1063      2350, 2351, 2352, 2256, 2352, 2256, 2256, 2256, 2353, 2256,
1064      2256, 2256, 2256, 2256, 2256, 2256, 2354, 2355, 2355, 2256,
1065      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1066      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2356, 2256,
1067      2256, 2356, 2256, 2357, 2357, 2256, 2358, 2256, 2256, 2358,
1068      2358, 2358, 2358, 2359, 2359, 2256, 2360, 2360, 2360, 2361,
1069      2361, 2256, 2256, 2362, 2363, 2363, 2256, 2256, 2256, 2256,
1070      2256, 2256, 2256, 2256, 2364, 2364, 2364, 2256, 2256, 2364,
1071
1072      2364, 2365, 2365, 2366, 2366, 2256, 2256, 2366, 2256, 2256,
1073      2366, 2366, 2366, 2366, 2366, 2366, 2366, 2367, 2367, 2368,
1074      2368, 2256, 2256, 2368, 2368, 2368, 2369, 2369, 2370, 2256,
1075      2256, 2371, 2371, 2372, 2256, 2256, 2372, 2372, 2372, 2373,
1076      2373, 2374, 2374, 2374, 2375, 2375, 2256, 2376, 2376, 2376,
1077      2376, 2377, 2377, 2378, 2256, 2256, 2379, 2379, 2380, 2380,
1078      2380, 2381, 2381, 2382, 2382, 2382, 2382, 2383, 2383, 2256,
1079      2384, 2385, 2385, 2256, 2256, 2386, 2386, 2256, 2256, 2256,
1080      2387, 2388, 2388, 2389, 2256, 2256, 2389, 2256, 2256, 2390,
1081      2256, 2256, 2256, 2256, 2256, 2256, 2391, 2256, 2392, 2256,
1082
1083      2392, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1084      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1085      2256, 2393, 2256, 2256, 2256, 2393, 2256, 2256, 2394, 2256,
1086      2394, 2395, 2256, 2256, 2256, 2256, 2256, 2395, 2256, 2256,
1087      2395, 2256, 2396, 2256, 2396, 2256, 2397, 2397, 2397, 2256,
1088      2398, 2256, 2398, 2256, 2256, 2256, 2399, 2256, 2400, 2256,
1089      2400, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2401, 2401,
1090      2401, 2256, 2256, 2256, 2401, 2401, 2256, 2402, 2256, 2402,
1091      2403, 2403, 2403, 2403, 2256, 2256, 2256, 2403, 2256, 2256,
1092      2256, 2256, 2256, 2403, 2403, 2403, 2403, 2403, 2403, 2256,
1093
1094      2404, 2256, 2404, 2405, 2405, 2405, 2256, 2256, 2256, 2256,
1095      2256, 2405, 2405, 2256, 2406, 2256, 2406, 2407, 2256, 2256,
1096      2256, 2256, 2408, 2256, 2408, 2409, 2256, 2256, 2256, 2409,
1097      2409, 2409, 2256, 2410, 2256, 2410, 2256, 2256, 2256, 2256,
1098      2411, 2256, 2412, 2256, 2412, 2256, 2256, 2256, 2413, 2413,
1099      2256, 2256, 2413, 2256, 2414, 2256, 2414, 2415, 2256, 2256,
1100      2256, 2256, 2416, 2256, 2416, 2256, 2256, 2417, 2417, 2256,
1101      2256, 2256, 2418, 2256, 2418, 2419, 2419, 2419, 2419, 2256,
1102      2420, 2256, 2420, 2256, 2421, 2256, 2422, 2256, 2422, 2256,
1103      2256, 2256, 2256, 2423, 2256, 2423, 2256, 2256, 2256, 2256,
1104
1105      2424, 2256, 2425, 2256, 2425, 2426, 2427, 2256, 2256, 2256,
1106      2256, 2256, 2428, 2429, 2256, 2256, 2256, 2256, 2256, 2256,
1107      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1108      2256, 2256, 2256, 2256, 2256, 2430, 2256, 2431, 2432, 2256,
1109      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2432, 2433, 2256,
1110      2434, 2256, 2256, 2434, 2435, 2436, 2256, 2256, 2256, 2256,
1111      2256, 2256, 2256, 2256, 2256, 2437, 2437, 2256, 2256, 2437,
1112      2437, 2438, 2439, 2439, 2439, 2439, 2256, 2256, 2256, 2256,
1113      2256, 2439, 2439, 2439, 2439, 2439, 2439, 2440, 2441, 2441,
1114      2441, 2256, 2256, 2256, 2441, 2441, 2442, 2443, 2444, 2445,
1115
1116      2445, 2445, 2445, 2446, 2256, 2256, 2256, 2256, 2256, 2256,
1117      2447, 2448, 2256, 2256, 2256, 2256, 2449, 2449, 2256, 2256,
1118      2256, 2449, 2450, 2451, 2452, 2256, 2256, 2256, 2453, 2453,
1119      2256, 2256, 2256, 2454, 2455, 2256, 2256, 2455, 2455, 2456,
1120      2256, 2457, 2458, 2459, 2256, 2460, 2461, 2462, 2463, 2463,
1121      2256, 2463, 2256, 2256, 2256, 2464, 2465, 2256, 2256, 2256,
1122      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1123      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1124      2466, 2256, 2467, 2468, 2256, 2256, 2256, 2468, 2469, 2256,
1125      2470, 2256, 2256, 2256, 2256, 2256, 2471, 2472, 2256, 2256,
1126
1127      2256, 2256, 2256, 2256, 2256, 2473, 2473, 2256, 2256, 2256,
1128      2256, 2256, 2256, 2256, 2473, 2474, 2475, 2256, 2256, 2475,
1129      2475, 2256, 2256, 2256, 2256, 2256, 2475, 2475, 2475, 2475,
1130      2475, 2476, 2256, 2256, 2477, 2477, 2256, 2256, 2477, 2478,
1131      2479, 2480, 2481, 2481, 2481, 2256, 2256, 2481, 2482, 2483,
1132      2484, 2256, 2485, 2485, 2485, 2486, 2487, 2488, 2489, 2489,
1133      2490, 2491, 2256, 2256, 2256, 2491, 2491, 2492, 2256, 2256,
1134      2256, 2493, 2494, 2256, 2256, 2256, 2495, 2496, 2497, 2497,
1135      2256, 2256, 2498, 2499, 2256, 2256, 2256, 2256, 2256, 2256,
1136      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1137
1138      2256, 2256, 2500, 2256, 2501, 2502, 2502, 2503, 2504, 2256,
1139      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1140      2505, 2506, 2256, 2256, 2256, 2256, 2507, 2507, 2256, 2256,
1141      2256, 2256, 2256, 2256, 2507, 2256, 2256, 2508, 2256, 2256,
1142      2256, 2256, 2256, 2508, 2256, 2256, 2256, 2256, 2256, 2508,
1143      2508, 2508, 2256, 2256, 2509, 2256, 2256, 2256, 2256, 2256,
1144      2510, 2256, 2256, 2256, 2510, 2256, 2256, 2511, 2512, 2513,
1145      2513, 2513, 2256, 2256, 2256, 2513, 2256, 2256, 2514, 2515,
1146      2256, 2256, 2256, 2256, 2256, 2516, 2517, 2518, 2519, 2256,
1147      2256, 2256, 2256, 2520, 2521, 2521, 2521, 2522, 2256, 2256,
1148
1149      2256, 2256, 2523, 2524, 2256, 2256, 2256, 2256, 2256, 2256,
1150      2525, 2526, 2526, 2256, 2256, 2256, 2499, 2256, 2256, 2256,
1151      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1152      2256, 2256, 2500, 2256, 2256, 2256, 2502, 2502, 2503, 2256,
1153      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1154      2256, 2505, 2256, 2256, 2256, 2256, 2256, 2507, 2507, 2256,
1155      2256, 2507, 2508, 2256, 2256, 2256, 2508, 2256, 2256, 2256,
1156      2256, 2256, 2508, 2508, 2256, 2256, 2256, 2509, 2256, 2256,
1157      2256, 2510, 2510, 2511, 2512, 2513, 2256, 2256, 2513, 2513,
1158      2256, 2256, 2513, 2514, 2256, 2256, 2256, 2256, 2256, 2256,
1159
1160      2256, 2256, 2256, 2516, 2517, 2518, 2519, 2256, 2256, 2256,
1161      2256, 2256, 2256, 2520, 2521, 2521, 2521, 2522, 2256, 2523,
1162      2524, 2256, 2525, 2526, 2526, 2256, 2256, 2256, 2256, 2499,
1163      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1164      2256, 2500, 2256, 2502, 2502, 2256, 2256, 2256, 2256, 2256,
1165      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1166      2505, 2256, 2256, 2256, 2256, 2256, 2507, 2507, 2256, 2256,
1167      2256, 2256, 2507, 2508, 2508, 2256, 2256, 2256, 2508, 2508,
1168      2509, 2510, 2510, 2511, 2256, 2256, 2513, 2256, 2256, 2256,
1169      2513, 2513, 2256, 2256, 2256, 2256, 2513, 2514, 2256, 2516,
1170
1171      2517, 2518, 2519, 2520, 2256, 2256, 2521, 2521, 2522, 2256,
1172      2523, 2256, 2256, 2525, 2526, 2526, 2256, 2499, 2256, 2256,
1173      2256, 2256, 2256, 2256, 2500, 2256, 2256, 2502, 2256, 2256,
1174      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2505, 2256,
1175      2507, 2507, 2256, 2256, 2256, 2256, 2507, 2508, 2508, 2508,
1176      2508, 2256, 2256, 2510, 2510, 2511, 2256, 2256, 2513, 2513,
1177      2513, 2256, 2256, 2256, 2256, 2513, 2514, 2256, 2516, 2256,
1178      2256, 2256, 2256, 2519, 2520, 2256, 2256, 2256, 2256, 2256,
1179      2521, 2256, 2256, 2256, 2523, 2525, 2526, 2526, 2256, 2256,
1180      2256, 2256, 2256, 2500, 2256, 2256, 2256, 2502, 2256, 2256,
1181
1182      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2505, 2256,
1183      2507, 2507, 2256, 2256, 2256, 2256, 2508, 2508, 2508, 2256,
1184      2256, 2510, 2510, 2511, 2256, 2256, 2256, 2513, 2513, 2513,
1185      2256, 2256, 2256, 2256, 2514, 2516, 2256, 2256, 2256, 2256,
1186      2256, 2520, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525,
1187      2526, 2526, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1188      2256, 2502, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1189      2256, 2256, 2505, 2256, 2507, 2256, 2256, 2256, 2256, 2256,
1190      2508, 2508, 2508, 2256, 2256, 2256, 2256, 2256, 2510, 2256,
1191      2256, 2513, 2513, 2513, 2256, 2256, 2256, 2256, 2256, 2256,
1192
1193      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2520, 2256, 2256,
1194      2256, 2525, 2526, 2526, 2256, 2256, 2256, 2256, 2256, 2256,
1195      2256, 2256, 2256, 2256, 2502, 2256, 2256, 2256, 2256, 2256,
1196      2256, 2256, 2256, 2505, 2256, 2256, 2256, 2507, 2256, 2256,
1197      2256, 2508, 2508, 2508, 2256, 2256, 2256, 2510, 2256, 2256,
1198      2256, 2513, 2256, 2256, 2513, 2256, 2256, 2256, 2256, 2256,
1199      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2520, 2525, 2526,
1200      2526, 2526, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1201      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2505, 2256,
1202      2256, 2256, 2507, 2508, 2508, 2508, 2510, 2513, 2256, 2256,
1203
1204      2256, 2513, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1205      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525, 2526,
1206      2526, 2526, 2527, 2528, 2256, 2256, 2256, 2256, 2256, 2256,
1207      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2505,
1208      2507, 2508, 2508, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1209      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1210      2256, 2256, 2256, 2525, 2526, 2529, 2530, 2527, 2528, 2256,
1211      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1212      2256, 2507, 2508, 2508, 2256, 2256, 2256, 2256, 2256, 2256,
1213      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1214
1215      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525, 2529,
1216      2526, 2531, 2530, 2532, 2526, 2256, 2256, 2256, 2256, 2256,
1217      2256, 2507, 2508, 2508, 2256, 2256, 2256, 2256, 2256, 2256,
1218      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1219      2525, 2531, 2256, 2532, 2526, 2256, 2256, 2256, 2256, 2256,
1220      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1221      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525,
1222      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1223      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1224      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525, 2256,
1225
1226      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1227      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1228      2525, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1229      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1230      2256, 2525, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1231      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1232      2256, 2256, 2525, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1233      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1234      2256, 2256, 2256, 2525, 2256, 2256, 2256, 2256, 2256, 2256,
1235      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525, 2256,
1236
1237      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2525,
1238      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1239      2525, 2525, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1240      2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
1241      2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525,
1242      2525, 2525, 2525, 2525, 2256,    0, 2256, 2256, 2256, 2256,
1243      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1244      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1245      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1246      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1247
1248      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1249      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1250      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1251      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1252      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1253      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1254      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1255      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1256      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1257      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1258
1259      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1260      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1261      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1262      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1263      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1264      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1265      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1266      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1267      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1268      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1269
1270      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1271      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1272      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
1273      2256, 2256
1274     } ;
1275
1276 static yyconst flex_int16_t yy_nxt[7793] =
1277     {   0,
1278      2256,  188,  189,  188,  188,  189,  188,  188,  189,  188,
1279       188,  189,  188,  193,  189,  193,  199,  190,  196,  199,
1280       190,  196, 2256,  191,  510,  197,  191,  624,  197,  194,
1281       193,  189,  193,  459,  200,  202,  203,  200,  202,  203,
1282       204,  205,  625,  204,  205,  459,  194,  209,  210,  460,
1283       206,  202,  203,  206,  207,  462,  204,  202,  203,  785,
1284       207,  461,  204,  209,  210, 1523,  206,  189,  189,  189,
1285       522,  461,  206,  511,  189,  189,  189,  221,  189,  221,
1286       221,  189,  221,  212,  221,  189,  221,  506,  462,  211,
1287       212,  507, 2256,  222, 1557,  508,  222,  458,  458,  458,
1288
1289       223,  458,  458,  458,  461,  211,  213,  214,  189,  214,
1290       213,  213,  213,  213,  213,  213,  213,  215,  213,  213,
1291       213,  527,  213,  217,  213,  218,  213,  221,  189,  221,
1292       221,  189,  221,  482, 1558,  221,  189,  221,  189,  189,
1293       189,  511,  485,  223,  473,  485,  224,  491,  462,  213,
1294       213,  224,  510, 1559,  225,  189,  189,  189,  458,  458,
1295       458,  458,  458,  458,  461,  458,  458,  458,  458,  458,
1296       458,  225,  219,  213,  214,  189,  214,  213,  213,  213,
1297       213,  213,  213,  213,  215,  213,  213,  213,  538,  213,
1298       217,  213,  218,  213,  221,  189,  221,  221,  189,  221,
1299
1300       785,  493,  189,  189,  189,  189,  189,  189,  547, 2256,
1301       223,  548,  579,  223,  542, 1411,  213,  213,  226,  580,
1302       462,  226,  221,  189,  221,  221,  189,  221,  221,  189,
1303       221,  221,  189,  221,  543, 2256,  461,  511,  224,  219,
1304       493,  224,  485,  624,  227,  480,  538,  227,  228,  229,
1305       189,  229,  228,  228,  228,  228,  228,  228,  228,  230,
1306       228,  228,  228, 2256,  228,  232,  228,  233,  228,  250,
1307       189,  250,  487,  488,  250,  189,  250,  663,  189,  189,
1308       189, 1560,  202,  203,  492,  251,  479,  204,  202,  203,
1309       251,  228,  228,  204,  252,  493,  573,  237,  630,  234,
1310
1311       493,  631,  235,  237,  458,  458,  458,  574,  236,  228,
1312       229,  189,  229,  228,  228,  228,  228,  228,  228,  228,
1313       230,  228,  228,  228,  238,  228,  232,  228,  233,  228,
1314       238,  189,  189,  189,  250,  189,  250,  587,  250,  189,
1315       250,  250,  189,  250,  588,  462,  462,  252,  499,  462,
1316       251,  462,  228,  228,  251,  500,  517,  253, 1151, 1566,
1317       234,  461,  461,  235,  461,  461,  467,  461,  575,  236,
1318       239,  240,  189,  240,  239,  239,  239,  239,  239,  239,
1319       239,  241,  239,  239,  239,  488,  239,  243,  239,  244,
1320       239,  250,  189,  250,  264,  189,  264, 1412, 1444,  264,
1321
1322       189,  264,  275,  189,  275, 1445,  468,  253,  550,  462,
1323       265,  480,  469,  239,  239,  265,  470,  511,  276,  551,
1324       552,  471,  245,  575,  246,  461,  529,  247,  458,  458,
1325       458,  589, 1567,  248,  239,  240,  189,  240,  239,  239,
1326       239,  239,  239,  239,  239,  241,  239,  239,  239,  650,
1327       239,  243,  239,  244,  239,  275,  189,  275,  275,  189,
1328       275,  785,  651,  275,  189,  275,  189,  189,  189, 1568,
1329      1573,  276,  493,  462,  277,  787,  483,  239,  239,  277,
1330       462,  600,  278,  458,  458,  458,  245,  553,  246,  461,
1331       904,  247,  458,  458,  458,  905,  461,  248,  254,  255,
1332
1333       189,  255,  254,  254,  254,  254,  254,  254,  254,  256,
1334       254,  254,  254,  488,  254,  258,  254,  259,  254,  189,
1335       189,  189,  275,  189,  275, 1574,  483,  275,  189,  275,
1336       275,  189,  275,  643,  643,  278,  644,  653,  279,  462,
1337       489,  254,  254,  279,  462,  462,  280, 1449,  260,  458,
1338       458,  458,  490,  261, 1450,  461,  491,  458,  458,  458,
1339       461,  461,  262,  254,  255,  189,  255,  254,  254,  254,
1340       254,  254,  254,  254,  256,  254,  254,  254,  650,  254,
1341       258,  254,  259,  254,  275,  189,  275,  189,  189,  189,
1342      1575,  691,  189,  189,  189,  275,  189,  275,  655,  650,
1343
1344       280,  653,  696,  281,  785,  697,  254,  254,  281,  462,
1345       462,  277,  693,  260,  458,  458,  458,  562,  261,  458,
1346       458,  458, 1148, 1579, 2256,  461,  461,  262,  266,  267,
1347       189,  267,  266,  266,  266,  266,  266,  266,  266,  268,
1348       266,  266,  266,  650,  266,  270,  266,  271,  266,  275,
1349       189,  275,  189,  189,  189, 1580,  694,  189,  189,  189,
1350       275,  189,  275,  785,  462,  277,  525, 1006,  282,  526,
1351      1582,  266,  266,  282, 1583,  530,  280,  458,  458,  458,
1352       461,  581,  272,  458,  458,  458,  458,  458,  458, 1151,
1353       273,  266,  267,  189,  267,  266,  266,  266,  266,  266,
1354
1355       266,  266,  268,  266,  266,  266,  778,  266,  270,  266,
1356       271,  266,  275,  189,  275,  275,  189,  275, 1524,  651,
1357       275,  189,  275,  189,  189,  189,  582,  462,  280,  785,
1358       493,  283, 1151, 1584,  266,  266,  283, 1587,  462,  284,
1359       189,  189,  189,  461,  462,  272,  275,  189,  275,  275,
1360       189,  275, 1278,  273,  461, 1569,  284,  189,  189,  189,
1361       461, 1570,  285, 1413,  462,  285,  189,  189,  189,  275,
1362       189,  275, 1591,  286,  275,  189,  275,  275,  189,  275,
1363       461, 1592,  286, 1597,  462,  283,  275,  189,  275, 1024,
1364       283,  567, 1151,  287,  458,  458,  458,  458,  458,  458,
1365
1366       461, 1025,  287,  288,  289,  189,  289,  288,  288,  288,
1367       288,  288,  288,  288,  290,  288,  288,  288, 1033,  288,
1368       292,  288,  293,  288,  300,  189,  300,  300,  189,  300,
1369      1025, 1598,  189,  189,  189, 1525,  189,  189,  189, 1599,
1370       301, 1600, 1602,  301,  647,  462,  288,  288,  252,  294,
1371       648,  295,  252,  458,  458,  458,  649,  296,  458,  458,
1372       458,  461, 1607,  297, 1608, 1610,  298,  288,  289,  189,
1373       289,  288,  288,  288,  288,  288,  288,  288,  290,  288,
1374       288,  288, 1033,  288,  292,  288,  293,  288,  300,  189,
1375       300,  300,  189,  300, 1050, 1620,  300,  189,  300, 1571,
1376
1377       300,  189,  300, 1623,  301, 1572, 1624,  301,  656,  462,
1378       288,  288,  302,  294,  648,  295,  302,  458,  458,  458,
1379       649,  296,  458,  458,  458,  461, 1625,  297, 1628, 1629,
1380       298,  303,  304,  189,  304,  303,  303,  303,  303,  303,
1381       303,  303,  305,  303,  303,  303,  306,  303,  307,  303,
1382       308,  303,  306,  306,  306,  306,  306,  306,  306,  306,
1383       306,  306,  306,  306,  306,  306,  306,  306,  306,  306,
1384       306,  306,  306,  306,  303,  303,  306,  309,  310,  311,
1385       306,  306,  306,  306,  306,  312,  306,  313,  306,  306,
1386       306,  314,  306,  315,  316,  306,  306,  306,  306,  306,
1387
1388       306,  318,  189,  318,  318,  189,  318,  458,  458,  458,
1389       458,  458,  458,  458,  458,  458, 1630,  319, 1151, 1631,
1390       319,  320,  321,  189,  321,  320,  320,  320,  320,  320,
1391       320,  320,  322,  320,  320,  320, 1632,  320,  324,  320,
1392       325,  320,  333,  189,  333,  333,  189,  333, 1633, 1634,
1393       344,  189,  344, 1593,  344,  189,  344, 1595,  334, 1594,
1394       462,  334, 1616, 1596,  320,  320,  345,  594,  326,  327,
1395       345,  458,  458,  458, 1635,  328,  461,  329,  458,  458,
1396       458,  330,  607, 1151,  331,  320,  321,  189,  321,  320,
1397       320,  320,  320,  320,  320,  320,  322,  320,  320,  320,
1398
1399      1636,  320,  324,  320,  325,  320,  357,  189,  357,  357,
1400       189,  357, 1637, 1638,  189,  189,  189,  608,  189,  189,
1401       189, 1640,  358, 1615, 1641,  358, 1642, 1643,  320,  320,
1402       252,  511,  326,  327,  252,  458,  458,  458, 1644,  328,
1403      1645,  329,  458,  458,  458,  330, 1646, 1647,  331,  335,
1404       336,  189,  336,  335,  335,  335,  335,  335,  335,  335,
1405       337,  335,  335,  335, 1648,  335,  339,  335,  340,  335,
1406       357,  189,  357,  357,  189,  357, 1649, 1650,  357,  189,
1407       357, 1651,  357,  189,  357, 1654,  358, 1655, 1656,  358,
1408       647, 1660,  335,  335,  359, 1661,  648,  341,  359,  458,
1409
1410       458,  458,  658,  342,  335,  336,  189,  336,  335,  335,
1411       335,  335,  335,  335,  335,  337,  335,  335,  335, 1662,
1412       335,  339,  335,  340,  335,  369,  189,  369,  369,  189,
1413       369, 1663, 1664,  189,  189,  189, 1665,  189,  189,  189,
1414      1666,  370, 1667, 1669,  370,  656, 1681,  335,  335,  371,
1415      1691,  648,  341,  371,  458,  458,  458,  658,  342,  346,
1416       347,  189,  347,  346,  346,  346,  346,  346,  346,  346,
1417       348,  346,  346,  346, 1692,  346,  350,  346,  351,  346,
1418       369,  189,  369,  369,  189,  369, 1693, 1694,  369,  189,
1419       369,  369,  189,  369, 1698, 1699,  370, 1700,  462,  370,
1420
1421      1701, 1702,  346,  346,  372,  612,  352,  372,  458,  458,
1422       458, 1703, 1704,  353,  461,  354,  458,  458,  458,  458,
1423       458,  458,  355,  346,  347,  189,  347,  346,  346,  346,
1424       346,  346,  346,  346,  348,  346,  346,  346, 1705,  346,
1425       350,  346,  351,  346,  383,  189,  383,  383,  189,  383,
1426      1706, 1707,  189,  189,  189,  189,  189,  189, 1708, 1710,
1427       384, 1711,  462,  384, 1712, 1713,  346,  346,  371,  622,
1428       352,  371,  458,  458,  458, 1714, 1717,  353,  461,  354,
1429       458,  458,  458,  458,  458,  458,  355,  360,  361,  189,
1430       361,  360,  360,  360,  360,  360,  360,  360,  362,  360,
1431
1432       360,  360, 1718,  360,  364,  360,  365,  360,  383,  189,
1433       383,  383,  189,  383, 1719, 1722,  383,  189,  383,  383,
1434       189,  383,  656, 1723,  384, 1724, 1728,  384,  648, 1729,
1435       360,  360,  385, 1730,  676,  385,  366,  458,  458,  458,
1436      1731,  628,  628,  628,  628,  628,  628, 1732,  789, 1151,
1437       367,  360,  361,  189,  361,  360,  360,  360,  360,  360,
1438       360,  360,  362,  360,  360,  360, 1735,  360,  364,  360,
1439       365,  360,  395,  189,  395,  395,  189,  395, 1151, 1687,
1440       407,  189,  407,  407,  189,  407, 1736, 1753,  396, 1754,
1441      1755,  396, 1762,  785,  360,  360,  408,  629, 1763,  408,
1442
1443       366,  802,  802,  802,  817,  817,  817,  802,  802,  802,
1444       802,  802,  802, 1688,  367,  373,  374,  189,  374,  373,
1445       373,  373,  373,  373,  373,  373,  375,  373,  373,  373,
1446      1750,  373,  377,  373,  378,  373,  189,  189,  189,  189,
1447       189,  189, 1151, 1764,  407,  189,  407,  407,  189,  407,
1448      1758, 1765,  371, 1766, 1151,  371, 1767,  882,  373,  373,
1449       408, 1759,  803,  408,  379,  803,  883,  380,  823,  823,
1450       823,  862,  824,  884, 1768,  825, 1769, 1751,  381,  373,
1451       374,  189,  374,  373,  373,  373,  373,  373,  373,  373,
1452       375,  373,  373,  373, 1752,  373,  377,  373,  378,  373,
1453
1454       407,  189,  407,  407,  189,  407, 1760, 1770,  421,  189,
1455       421,  421,  189,  421, 1771, 1772,  409, 1761, 1774,  409,
1456      1775, 1781,  373,  373,  422, 1782, 1783,  422,  379, 1789,
1457      1792,  380,  833,  833,  833, 1793,  834, 1794, 1816,  835,
1458      1817, 1821,  381,  386,  387,  189,  387,  386,  386,  386,
1459       386,  386,  386,  386,  388,  386,  386,  386, 1822,  386,
1460       390,  386,  391,  386,  189,  189,  189,  189,  189,  189,
1461      1802, 1805,  421,  189,  421,  421,  189,  421, 1803, 1806,
1462       423, 1823, 1824,  423, 1804, 1807,  386,  386,  422, 1825,
1463      1826,  422,  392,  817,  817,  817, 1827,  393,  386,  387,
1464
1465       189,  387,  386,  386,  386,  386,  386,  386,  386,  388,
1466       386,  386,  386,  785,  386,  390,  386,  391,  386,  421,
1467       189,  421,  421,  189,  421, 1828, 1829,  433,  189,  433,
1468       433,  189,  433, 1830, 1831,  424, 1832, 1833,  424, 1842,
1469      1812,  386,  386,  434, 1843, 1844,  434,  392,  817,  817,
1470       817, 1848,  393,  397,  398,  189,  398,  397,  397,  397,
1471       397,  397,  397,  397,  399,  397,  397,  397, 1852,  397,
1472       401,  397,  402,  397,  443,  189,  443,  443,  189,  443,
1473      1855, 1862,  189,  189,  189,  189,  189,  189, 1863, 1864,
1474       444, 1865, 1866,  444, 1867, 1873,  397,  397,  252,  785,
1475
1476      1874,  252,  403, 1875, 1876,  404,  854,  854,  854,  862,
1477       855, 1877, 1151,  856, 1151, 1878,  405,  397,  398,  189,
1478       398,  397,  397,  397,  397,  397,  397,  397,  399,  397,
1479       397,  397, 1881,  397,  401,  397,  402,  397,  443,  189,
1480       443,  443,  189,  443, 1869, 1870,  443,  189,  443,  443,
1481       189,  443, 1882, 1813,  445, 1883, 1884,  445, 1885, 1886,
1482       397,  397,  446, 1887, 1888,  446,  403, 1893, 1894,  404,
1483       872,  872,  872, 1895,  873,  616, 1896,  874, 1897, 1898,
1484       405,  410,  411,  189,  411,  410,  410,  410,  410,  410,
1485       410,  410,  412,  410,  410,  410, 1151,  410,  414,  410,
1486
1487       415,  410,  456,  189,  456,  456,  189,  456, 1902, 1903,
1488       479,  660,  660,  660, 1911,  798,  798,  798,  457, 1904,
1489      1912,  457, 1913, 1914,  410,  410,  617, 1915,  661, 1916,
1490       522,  522,  416,  800,  417, 1814,  418, 1163, 1163, 1163,
1491       523,  528,  785, 1927,  419,  410,  411,  189,  411,  410,
1492       410,  410,  410,  410,  410,  410,  412,  410,  410,  410,
1493      1928,  410,  414,  410,  415,  410,  524,  524,  489,  668,
1494       668,  668,  525, 1929, 1919,  526,  682,  682,  682, 1930,
1495       493,  527,  698,  698,  698, 1905,  669, 1907,  410,  410,
1496       706,  706,  706,  683, 1934, 1906,  416, 1908,  417,  699,
1497
1498       418, 1935, 1164, 1164, 1164, 1936, 1937,  707,  419,  425,
1499       426,  189,  426,  425,  425,  425,  425,  425,  425,  425,
1500       427,  425,  425,  425, 1938,  425,  429,  425,  430,  425,
1501       709,  709,  709,  722,  722,  722, 1939,  730,  730,  730,
1502       735,  735,  735,  755,  755,  755, 1165,  710, 1909, 1941,
1503       723, 1942,  425,  425,  731, 1943, 1952,  736, 1910, 1953,
1504       756,  885,  885,  885, 1954,  886, 1955, 1956,  887, 1166,
1505      1166, 1166, 1169, 1169, 1169,  431,  425,  426,  189,  426,
1506       425,  425,  425,  425,  425,  425,  425,  427,  425,  425,
1507       425, 1957,  425,  429,  425,  430,  425,  774,  774,  774,
1508
1509       779,  779,  779,  798,  798,  798,  660,  660,  660,  828,
1510       828,  828, 1958, 1959,  775, 1960, 1961,  780, 1962,  425,
1511       425,  800, 1963,  661,  668,  668,  668,  830,  889,  889,
1512       889, 1970,  890, 1971, 1972,  891, 1175, 1175, 1175, 1973,
1513       785,  669,  431,  435,  436,  189,  436,  435,  435,  435,
1514       435,  435,  435,  435,  437,  435,  435,  435,  801,  435,
1515       439,  435,  440,  435,  828,  828,  828,  836,  836,  836,
1516      1974,  839,  839,  839,  842,  842,  842,  842,  842,  842,
1517      1964, 1975,  830, 1976,  837, 1977,  435,  435,  840,  907,
1518       907,  907,  844,  908, 1978,  844,  909,  441,  435,  436,
1519
1520       189,  436,  435,  435,  435,  435,  435,  435,  435,  437,
1521       435,  435,  435, 1979,  435,  439,  435,  440,  435,  850,
1522       850,  850,  845, 1982, 1983,  831,  850,  850,  850,  682,
1523       682,  682,  858,  858,  858, 1984, 1997,  852, 1190, 1190,
1524      1190,  435,  435, 1998,  852, 1999,  683, 1201, 1201, 1201,
1525       860, 2000,  441,  447,  448,  189,  448,  447,  447,  447,
1526       447,  447,  447,  447,  449,  447,  447,  447, 2001,  447,
1527       451,  447,  452,  447,  858,  858,  858,  698,  698,  698,
1528       877,  877,  877,  877,  877,  877, 2002,  853,  706,  706,
1529       706, 2003,  860, 2004,  699, 2005,  447,  447,  879, 2006,
1530
1531      2007,  879, 1163, 1163, 1163,  707, 2008,  453, 2016,  861,
1532       919,  919,  919, 2017,  920,  785, 2018,  921, 2019,  454,
1533       447,  448,  189,  448,  447,  447,  447,  447,  447,  447,
1534       447,  449,  447,  447,  447, 2020,  447,  451,  447,  452,
1535       447,  880,  709,  709,  709,  892,  892,  892,  900,  900,
1536       900,  900,  900,  900,  722,  722,  722, 2021, 2009,  710,
1537      1310, 2022,  893,  447,  447, 1311,  902, 2011, 1312,  902,
1538      2023,  723, 1313, 2024,  453,  910,  910,  910,  914,  914,
1539       914, 2012, 2011,  914,  914,  914,  454,  462,  730,  730,
1540       730, 2037,  911, 2014,  477, 2038,  916,  922,  922,  922,
1541
1542      2039,  916, 2040,  461,  478,  731,  903,  922,  922,  922,
1543       735,  735,  735, 2043, 1314,  924,  927,  927,  927, 1315,
1544       928, 2043, 1316,  929, 2046,  924, 1317,  736, 2025,  479,
1545       480,  481,  917,  933,  933,  933,  482, 2047, 2026,  483,
1546       933,  933,  933,  484, 2056,  485, 2059,  486,  942,  942,
1547       942,  935,  937,  937,  937,  939,  939,  939,  935, 2256,
1548      2256, 2256,  942,  942,  942,  925,  944, 2060,  785,  938,
1549      1151, 1152,  940,  947,  947,  947, 2256, 2256, 2256, 2256,
1550       944,  951,  951,  951, 2256, 2256, 2256,  954,  954,  954,
1551       948, 2061, 2062,  936, 2256,  954,  954,  954,  952, 2063,
1552
1553      2027, 2256,  755,  755,  755,  956, 2041,  959,  959,  959,
1554      2028,  960, 2054,  956,  961,  941,  962,  962,  962,  756,
1555       945,  966,  966,  966, 2066,  949,  962,  962,  962, 2055,
1556       957,  970,  970,  970,  964, 2256, 2256, 2256,  967,  950,
1557       953,  972,  972,  972,  964,  972,  972,  972,  971,  980,
1558       980,  980, 2256,  980,  980,  980,  986,  986,  986,  974,
1559       986,  986,  986,  974,  774,  774,  774,  982,  990,  990,
1560       990,  982,  991, 2069,  988,  992, 2043, 2071,  988,  965,
1561      2043,  775, 2057,  968,  993,  993,  993,  993,  993,  993,
1562       779,  779,  779, 2029,  998,  998,  998,  969,  999, 2058,
1563
1564      2011, 1000,  995, 2030, 2072,  995, 2073,  780, 1002, 1002,
1565      1002, 2014, 2083,  975,  983, 1002, 1002, 1002,  798,  798,
1566       798,  989,  798,  798,  798, 2031, 1004, 2084,  798,  798,
1567       798, 2085, 2086, 1004, 2033, 2032,  800, 1034, 1034, 1034,
1568       800, 2256, 2256, 2256, 2034,  996,  800, 2035,  823,  823,
1569       823, 2087,  824, 2088, 1035,  825, 2089, 2036, 2256,  828,
1570       828,  828,  828,  828,  828,  828,  828,  828,  833,  833,
1571       833, 2090,  834, 1014, 2091,  835, 1005,  830, 2011, 2092,
1572       830, 2064, 2093,  830,  836,  836,  836, 1040, 1040, 1040,
1573      2094, 1041, 2012, 2095, 1042, 1043, 1043, 1043, 2065, 1036,
1574
1575      2096,  837,  839,  839,  839, 2097, 2098, 1045, 1045, 1045,
1576      1038, 1046, 1044, 2100, 1047,  842,  842,  842, 2105,  840,
1577       842,  842,  842,  842,  842,  842, 1052, 1052, 1052,  850,
1578       850,  850, 2101,  844,  850,  850,  850, 2067,  844, 2106,
1579      2107,  844, 2102, 1053,  850,  850,  850,  852, 2108,  854,
1580       854,  854,  852,  855, 2068, 2109,  856,  858,  858,  858,
1581      2110, 2111,  852,  858,  858,  858, 1057, 1057, 1057, 1068,
1582      1068, 1068,  872,  872,  872,  860,  873, 2103, 2112,  874,
1583      1049,  860, 2113, 2114, 1058, 2115, 1069, 2104, 2116, 1055,
1584       877,  877,  877,  877,  877,  877,  877,  877,  877,  885,
1585
1586       885,  885, 2117,  886, 2118, 2119,  887, 2120,  879, 2122,
1587      2123,  879,  785, 2124,  879, 1077, 1077, 1077,  889,  889,
1588       889, 2125,  890, 2126, 2127,  891,  892,  892,  892, 1079,
1589      1079, 1079, 1078, 1080, 2128, 2121, 1081,  900,  900,  900,
1590      1164, 1164, 1164,  893,  900,  900,  900,  900,  900,  900,
1591       907,  907,  907, 2129,  908,  902, 2130,  909, 1072,  910,
1592       910,  910,  902, 2131, 2132,  902, 1092, 1092, 1092, 2133,
1593      1093, 2134, 2135, 1094, 2136, 2137,  911,  914,  914,  914,
1594       914,  914,  914,  914,  914,  914,  919,  919,  919, 2138,
1595       920, 2139, 2140,  921, 2141,  916, 2143, 2144,  916, 2145,
1596
1597       785,  916,  922,  922,  922,  922,  922,  922,  922,  922,
1598       922, 1088,  927,  927,  927, 2146,  928, 2142, 2147,  929,
1599       924, 2148, 2149,  924, 2150, 2151,  924,  933,  933,  933,
1600      2152, 2153, 1097,  933,  933,  933,  933,  933,  933,  937,
1601       937,  937, 1105, 1105, 1105,  935, 1106, 2154, 2155, 1107,
1602      2156,  935, 2157, 2158,  935, 2159,  938,  939,  939,  939,
1603      1108, 1108, 1108, 2160, 1109, 2161, 2162, 1110,  942,  942,
1604       942, 2164, 1099,  785,  940, 2165,  942,  942,  942,  942,
1605       942,  942,  947,  947,  947, 2166,  944, 2167, 1114, 1114,
1606      1114, 2163, 1115, 1104,  944, 1116, 2168,  944, 2169,  948,
1607
1608       951,  951,  951, 1119, 1119, 1119, 2170, 1120, 2171, 2172,
1609      1121,  954,  954,  954,  954,  954,  954,  952,  954,  954,
1610       954,  959,  959,  959, 2173,  960, 2174, 2175,  961,  956,
1611      2176, 2177,  956,  962,  962,  962,  956,  962,  962,  962,
1612       962,  962,  962, 1112,  966,  966,  966,  970,  970,  970,
1613      2178,  964, 1126, 1126, 1126,  964, 1127, 2179,  964, 1128,
1614      2180,  967, 2181, 2182,  971, 1131, 1131, 1131, 2183, 1132,
1615      2185, 2186, 1133,  972,  972,  972,  972,  972,  972, 1123,
1616       972,  972,  972, 1136, 1136, 1136,  980,  980,  980,  785,
1617      2187,  974, 2188, 2189,  974, 2184, 2190, 1125,  974, 2191,
1618
1619      1137,  980,  980,  980,  982,  980,  980,  980,  986,  986,
1620       986,  986,  986,  986,  986,  986,  986, 2192, 2193,  982,
1621       990,  990,  990,  982,  991, 2194,  988,  992, 2195,  988,
1622      2196, 2197,  988,  993,  993,  993,  993,  993,  993, 1134,
1623       993,  993,  993,  998,  998,  998, 2198,  999, 2200, 2201,
1624      1000,  995,  785, 2202,  995, 1002, 1002, 1002,  995, 1002,
1625      1002, 1002, 2203, 1140, 2199, 1143, 1002, 1002, 1002, 1150,
1626      1150, 1150, 2204, 1004,  798,  798,  798, 1004, 1034, 1034,
1627      1034,  828,  828,  828, 1004, 2205, 2206, 1151, 1152, 1178,
1628      1178, 1178,  800, 1179, 2207, 1035, 1180, 1144, 2208,  830,
1629
1630      1040, 1040, 1040, 2209, 1041, 2211, 2212, 1042, 1043, 1043,
1631      1043, 1185, 1185, 1185, 2213, 1186, 2214, 2215, 1187, 1045,
1632      1045, 1045, 2216, 1046, 1147, 1044, 1047, 2217, 1183,  842,
1633       842,  842, 1052, 1052, 1052, 2218, 2219, 1157, 1192, 1192,
1634      1192, 2220, 1193, 2223, 2224, 1194, 2225,  844, 2226, 1053,
1635      1195, 1195, 1195,  850,  850,  850, 1057, 1057, 1057, 1202,
1636      1202, 1202, 1068, 1068, 1068, 2227, 2228, 1196, 1208, 1208,
1637      1208,  852, 1209, 2229, 1058, 1210, 2230, 1189,  785, 1069,
1638      1211, 1211, 1211,  785, 1213, 1213, 1213,  877,  877,  877,
1639      1218, 1218, 1218, 1077, 1077, 1077, 1556, 1212, 2253,  785,
1640
1641      1197, 1214, 1555, 1165,  785,  879, 1554, 1219, 1553,  785,
1642      1078, 1222, 1222, 1222, 1552, 1223,  785,  785, 1224, 1079,
1643      1079, 1079, 2231, 1080, 1551, 1545, 1081, 2232, 1215, 1225,
1644      1225, 1225, 2237,  900,  900,  900, 1233, 1233, 1233, 2256,
1645      2256, 2256, 2235, 2256, 2256, 2256, 1226, 1164, 1164, 1164,
1646      1216,  902, 2233, 1234, 2236,  785, 2256, 1092, 1092, 1092,
1647      2256, 1093,  785,  785, 1094, 1237, 1237, 1237, 2256, 2256,
1648      2256,  914,  914,  914,  922,  922,  922, 1246, 1246, 1246,
1649       785, 1544, 1238, 2253,  785, 2256,  933,  933,  933,  916,
1650      2234, 1252,  924,  785, 1247, 1232, 1236,  785, 2241, 1105,
1651
1652      1105, 1105, 1235, 1106,  935, 2239, 1107, 1108, 1108, 1108,
1653      1543, 1109, 1542, 2238, 1110,  942,  942,  942, 1166, 1166,
1654      1166, 1248, 1114, 1114, 1114, 1239, 1115, 2240, 2242, 1116,
1655      2245, 1540, 1240,  944, 1119, 1119, 1119, 1242, 1120,  785,
1656      1249, 1121,  954,  954,  954,  962,  962,  962, 1126, 1126,
1657      1126, 1538, 1127, 1536,  785, 1128, 1535, 1131, 1131, 1131,
1658       956, 1132,  785,  964, 1133,  972,  972,  972, 1136, 1136,
1659      1136,  785, 1263, 1263, 1263, 1533, 1264, 1532, 1251, 1265,
1660       980,  980,  980,  974, 2243, 1137, 1270, 1270, 1270,  986,
1661       986,  986, 2244,  993,  993,  993,  785, 1526,  982, 1258,
1662
1663      1256, 2247, 1519, 1271, 1275, 1275, 1275,  988, 1517, 1516,
1664      1261,  995, 1002, 1002, 1002, 1150, 1150, 1150,  798,  798,
1665       798, 1276, 1169, 1169, 1169, 2246, 2248, 1268, 1515, 1506,
1666      1004, 1504,  785, 1151,  785, 1497,  800, 1294, 1294, 1294,
1667      1296, 1296, 1296, 1273, 1175, 1175, 1175, 1300, 1300, 1300,
1668      1178, 1178, 1178, 1272, 1179,  785,  785, 1180,  828,  828,
1669       828,  842,  842,  842, 1279, 1185, 1185, 1185, 1284, 1186,
1670      1494, 1277, 1187, 1190, 1190, 1190,  830, 2249,  785,  844,
1671      1280, 1192, 1192, 1192, 1297, 1193, 2251, 1493, 1194, 1492,
1672      1491, 1301, 1195, 1195, 1195, 1318, 1318, 1318, 1295, 1319,
1673
1674      2250, 1490, 1320,  850,  850,  850, 1486, 1305, 2252, 1196,
1675      1201, 1201, 1201, 1202, 1202, 1202, 1325, 1325, 1325, 1308,
1676      1484,  852, 1325, 1325, 1325, 1294, 1294, 1294, 1208, 1208,
1677      1208, 1483, 1209, 1482, 1474, 1210, 1211, 1211, 1211, 1329,
1678      1329, 1329, 1473, 1330, 1467, 1463, 1331, 1213, 1213, 1213,
1679      1462, 1461, 1321, 1212, 1332, 1332, 1332, 1460, 1333, 1459,
1680      1458, 1334, 1456, 1455, 1214, 1451, 1336, 1336, 1336, 1448,
1681      1218, 1218, 1218, 1447, 1339, 1339, 1339, 1326, 1340, 1446,
1682      1443, 1341, 1442, 1295, 1337, 1438, 1326, 1219, 1342, 1342,
1683      1342, 1222, 1222, 1222, 1437, 1223, 1434, 1433, 1224, 1225,
1684
1685      1225, 1225, 1345, 1345, 1345, 1343, 1346, 1432, 1431, 1347,
1686      1348, 1348, 1348, 1353, 1353, 1353, 1226,  900,  900,  900,
1687      1233, 1233, 1233, 1430, 1356, 1356, 1356, 1349, 1357, 1428,
1688      1354, 1358, 1359, 1359, 1359,  902, 1425, 1234, 2256, 2256,
1689      2256, 1237, 1237, 1237, 1362, 1362, 1362, 1424, 1363, 1360,
1690      1423, 1364, 2256, 2256, 2256, 2256, 1421, 1420, 1238, 1366,
1691      1366, 1366, 1419,  922,  922,  922, 1246, 1246, 1246, 2256,
1692      1418, 1373, 1373, 1373, 1414, 1374, 1405, 1367, 1375, 1399,
1693      1355,  924, 1397, 1247, 1377, 1377, 1377,  942,  942,  942,
1694      1382, 1382, 1382, 1396, 1395, 1361, 1384, 1384, 1384, 2256,
1695
1696      2256, 2256, 1378, 1365, 1388,  944, 1381, 1383,  954,  954,
1697       954, 1379, 1369, 1385, 1376, 1372, 2256,  962,  962,  962,
1698      1390, 1390, 1390, 1392, 1392, 1392,  956,  972,  972,  972,
1699       980,  980,  980, 1371, 1370,  964, 1380, 1391, 1368, 1352,
1700      1393, 1351, 1263, 1263, 1263,  974, 1264, 1350,  982, 1265,
1701      1270, 1270, 1270, 1344, 1338, 1400, 1400, 1400, 1335, 1401,
1702      1386, 1389, 1402,  986,  986,  986, 1328, 1271,  993,  993,
1703       993, 1327, 1387, 1275, 1275, 1275, 1406, 1406, 1406, 1398,
1704      1407,  988, 1324, 1408, 1323, 1322,  995, 1309, 1307, 1394,
1705      1276, 1409, 1409, 1409, 1415, 1415, 1415,  798,  798,  798,
1706
1707      1422, 1422, 1422, 1426, 1426, 1426, 1294, 1294, 1294, 1410,
1708      1306, 1416, 1427, 1427, 1427,  800, 1296, 1296, 1296, 1403,
1709      1304, 1404, 1429, 1429, 1429, 1300, 1300, 1300, 1435, 1435,
1710      1435,  842,  842,  842, 1440, 1440, 1440, 1318, 1318, 1318,
1711      1303, 1319, 1302, 1299, 1320, 1298, 1436, 1293, 1292,  844,
1712      1291, 1441,  850,  850,  850, 1417, 1453, 1453, 1453, 1325,
1713      1325, 1325, 1457, 1457, 1457, 1329, 1329, 1329, 1290, 1330,
1714       852, 1289, 1331, 1454, 1332, 1332, 1332, 1288, 1333, 1287,
1715      1286, 1334, 1336, 1336, 1336, 1285, 1283, 1439, 1339, 1339,
1716      1339, 1282, 1340, 1281, 1151, 1341, 1452, 1342, 1342, 1342,
1717
1718      1337, 1464, 1464, 1464, 1274, 1465, 1269, 1267, 1466, 1345,
1719      1345, 1345, 1266, 1346, 1343, 1262, 1347, 1348, 1348, 1348,
1720      1468, 1468, 1468, 1260, 1469, 1259, 1257, 1470, 1471, 1471,
1721      1471, 1353, 1353, 1353, 1349, 1475, 1475, 1475, 1255, 1476,
1722      1254, 1253, 1477, 1250, 1245, 1472, 1244, 1243, 1354,  900,
1723       900,  900, 1356, 1356, 1356, 1241, 1357, 1231, 1230, 1358,
1724      1359, 1359, 1359, 1229, 1479, 1479, 1479,  902, 1480, 1228,
1725      1227, 1481, 1362, 1362, 1362, 1221, 1363, 1360, 1220, 1364,
1726      1217, 1366, 1366, 1366,  922,  922,  922, 1487, 1487, 1487,
1727      1373, 1373, 1373, 1207, 1374, 1206, 1205, 1375, 1478, 1367,
1728
1729      1204, 1203,  924, 1200, 1488, 1377, 1377, 1377, 1495, 1495,
1730      1495, 1382, 1382, 1382, 1498, 1498, 1498, 1199, 1499, 1198,
1731      1191, 1500, 1188, 1378, 1184, 1182, 1496, 1181, 1383, 1177,
1732      1176, 1489, 1384, 1384, 1384, 1501, 1501, 1501, 1174, 1502,
1733      1173, 1172, 1503, 1171, 1170, 1485,  954,  954,  954, 1385,
1734       962,  962,  962, 1390, 1390, 1390, 1508, 1508, 1508, 1168,
1735      1509, 1167, 1162, 1510,  956, 1392, 1392, 1392,  964, 1161,
1736      1391, 1511, 1511, 1511, 1160, 1512, 1159, 1158, 1513, 1522,
1737      1522, 1522, 1393,  972,  972,  972,  980,  980,  980, 1400,
1738      1400, 1400, 1156, 1401, 1155, 1154, 1402, 1507,  986,  986,
1739
1740       986,  974, 1153, 1146,  982,  993,  993,  993, 1145, 1505,
1741      1406, 1406, 1406, 1142, 1407, 1141,  988, 1408, 1409, 1409,
1742      1409, 1139, 1138,  995, 1415, 1415, 1415, 1527, 1527, 1527,
1743      1135, 1528, 1130, 1129, 1529, 1124, 1410,  798,  798,  798,
1744      1122, 1416, 1531, 1531, 1531, 1514, 1118, 1520, 1518, 1534,
1745      1534, 1534, 1422, 1422, 1422,  800, 1521, 1537, 1537, 1537,
1746      1426, 1426, 1426, 1427, 1427, 1427, 1429, 1429, 1429, 1539,
1747      1539, 1539, 1541, 1541, 1541, 1435, 1435, 1435, 1546, 1546,
1748      1546, 1117, 1440, 1440, 1440, 1548, 1548, 1548, 1113, 1549,
1749      1111, 1103, 1550, 1436, 1102, 1101, 1547, 1100, 1530, 1441,
1750
1751       850,  850,  850, 1453, 1453, 1453, 1562, 1562, 1562, 1098,
1752      1563, 1096, 1095, 1564, 1565, 1565, 1565, 1091,  852, 1090,
1753      1454, 1457, 1457, 1457, 1464, 1464, 1464, 1089, 1465, 1087,
1754      1086, 1466, 1468, 1468, 1468, 1085, 1469, 1084, 1083, 1470,
1755      1471, 1471, 1471, 1082, 1576, 1576, 1576, 1561, 1577, 1076,
1756      1075, 1578, 1475, 1475, 1475, 1074, 1476, 1472, 1073, 1477,
1757       900,  900,  900, 1479, 1479, 1479, 1071, 1480, 1070, 1067,
1758      1481, 1585, 1585, 1585, 1487, 1487, 1487, 1066,  902, 1588,
1759      1588, 1588, 1065, 1589, 1064, 1063, 1590, 1062, 1061, 1586,
1760      1060, 1488, 1495, 1495, 1495, 1498, 1498, 1498, 1059, 1499,
1761
1762      1056, 1054, 1500, 1051, 1501, 1501, 1501, 1048, 1502, 1039,
1763      1496, 1503,  954,  954,  954,  962,  962,  962, 1508, 1508,
1764      1508, 1581, 1509, 1037, 1032, 1510, 1031, 1511, 1511, 1511,
1765       956, 1512, 1030,  964, 1513,  972,  972,  972, 1605, 1605,
1766      1605,  980,  980,  980,  986,  986,  986, 1612, 1612, 1612,
1767      1522, 1522, 1522,  974, 1029, 1606, 1614, 1614, 1614,  982,
1768      1028, 1601,  988, 1027, 1026, 1613, 1617, 1617, 1617, 1604,
1769       798,  798,  798, 1023,  785, 1527, 1527, 1527, 1603, 1528,
1770      1022, 1021, 1529, 1531, 1531, 1531, 1020, 1019,  800, 1619,
1771      1619, 1619, 1534, 1534, 1534, 1621, 1621, 1621, 1622, 1622,
1772
1773      1622, 1611, 1018, 1609, 1537, 1537, 1537, 1539, 1539, 1539,
1774      1541, 1541, 1541, 1626, 1626, 1626, 1546, 1546, 1546, 1017,
1775      1548, 1548, 1548, 1016, 1549, 1015, 1618, 1550, 1013, 1012,
1776      1627,  850,  850,  850, 1547, 1562, 1562, 1562, 1011, 1563,
1777      1010, 1009, 1564, 1565, 1565, 1565, 1576, 1576, 1576,  852,
1778      1577, 1008, 1007, 1578, 1652, 1652, 1652, 1585, 1585, 1585,
1779      1657, 1657, 1657, 1588, 1588, 1588,  785, 1589, 1001,  997,
1780      1590,  985, 1653,  984,  979, 1586,  978, 1658, 1668, 1668,
1781      1668, 1670, 1670, 1670, 1672, 1672, 1672,  977,  976, 1639,
1782       962,  962,  962,  972,  972,  972, 1605, 1605, 1605, 1671,
1783
1784       958, 1673,  946,  932, 1659, 1676, 1676, 1676,  964, 1677,
1785       931,  974, 1678, 1606, 1679, 1679, 1679, 1682, 1682, 1682,
1786      1684, 1684, 1684,  986,  986,  986, 1612, 1612, 1612,  930,
1787       926, 1680, 1614, 1614, 1614, 1683, 1617, 1617, 1617,  918,
1788       913,  988,  912,  906, 1613,  899,  898, 1674,  897,  896,
1789       785, 1675, 1689, 1689, 1689, 1619, 1619, 1619, 1621, 1621,
1790      1621, 1622, 1622, 1622, 1626, 1626, 1626, 1695, 1695, 1695,
1791      1690, 1696,  895,  894, 1697,  850,  850,  850, 1715, 1715,
1792      1715, 1627, 1720, 1720, 1720,  888, 1685, 1652, 1652, 1652,
1793       881, 1686,  876,  852,  875, 1716, 1657, 1657, 1657, 1721,
1794
1795      1725, 1725, 1725,  871, 1726, 1653,  870, 1727, 1733, 1733,
1796      1733,  869,  868, 1658, 1668, 1668, 1668, 1670, 1670, 1670,
1797      1672, 1672, 1672,  867,  866, 1734, 1737, 1737, 1737,  865,
1798      1738,  864, 1709, 1739,  863, 1671,  857, 1673, 1740, 1740,
1799      1740,  972,  972,  972, 1676, 1676, 1676,  849, 1677,  848,
1800       847, 1678, 1679, 1679, 1679,  846, 1741,  841,  838,  974,
1801      1743, 1743, 1743,  832, 1744,  827,  826, 1745,  822, 1680,
1802      1746, 1746, 1746, 1682, 1682, 1682, 1684, 1684, 1684, 1748,
1803      1748, 1748, 1689, 1689, 1689,  821,  820, 1747, 1815, 1815,
1804      1815, 1683, 1756, 1756, 1756,  819,  818, 1749,  816,  815,
1805
1806      1690,  850,  850,  850,  814, 1742, 1695, 1695, 1695, 1757,
1807      1696,  813,  812, 1697, 1776, 1776, 1776,  811,  810,  852,
1808      1715, 1715, 1715, 1778, 1778, 1778,  809, 1779,  808,  807,
1809      1780, 1777, 1720, 1720, 1720,  806,  805, 1716, 1784, 1784,
1810      1784,  804, 1785,  797,  796, 1786, 1787, 1787, 1787, 1721,
1811      1790, 1790, 1790, 1725, 1725, 1725,  795, 1726, 1773,  794,
1812      1727,  793,  792, 1788, 1733, 1733, 1733, 1791, 1795, 1795,
1813      1795,  791, 1796,  788,  786, 1797, 1798, 1798, 1798,  785,
1814       783, 1734, 1800, 1800, 1800, 1737, 1737, 1737,  781, 1738,
1815       777,  773, 1739, 1799, 1740, 1740, 1740,  771,  770, 1801,
1816
1817       972,  972,  972, 1743, 1743, 1743,  769, 1744,  767,  766,
1818      1745,  765, 1741, 1746, 1746, 1746,  764,  763,  974, 1809,
1819      1809, 1809,  761, 1810,  760,  759, 1811, 1748, 1748, 1748,
1820      1747, 1756, 1756, 1756, 1818, 1818, 1818,  758, 1819,  754,
1821       753, 1820,  850,  850,  850, 1749,  751,  750, 1757, 1835,
1822      1835, 1835, 1836, 1836, 1836, 1776, 1776, 1776,  749,  748,
1823       852,  747,  746, 1808, 1839, 1839, 1839,  744, 1840, 1837,
1824       743, 1841, 1777, 1778, 1778, 1778,  742, 1779,  741,  739,
1825      1780, 1784, 1784, 1784,  738, 1785,  737,  734, 1786,  733,
1826       729, 1834, 1787, 1787, 1787,  728, 1838, 1845, 1845, 1845,
1827
1828       726, 1846,  725,  724, 1847, 1790, 1790, 1790,  721, 1788,
1829      1849, 1849, 1849,  720, 1850,  719,  717, 1851, 1853, 1853,
1830      1853,  716, 1791, 1795, 1795, 1795,  715, 1796,  714,  713,
1831      1797, 1798, 1798, 1798,  712, 1854, 1856, 1856, 1856,  711,
1832      1857,  708,  705, 1858, 1800, 1800, 1800,  704, 1799, 1859,
1833      1859, 1859,  703, 1860,  701,  700, 1861,  972,  972,  972,
1834       695, 1801, 1809, 1809, 1809,  692, 1810,  690,  689, 1811,
1835      1871, 1871, 1871,  688,  687,  974, 1815, 1815, 1815, 1818,
1836      1818, 1818,  686, 1819,  684,  681, 1820, 1872, 1151,  679,
1837      1879, 1879, 1879,  850,  850,  850, 1835, 1835, 1835, 1836,
1838
1839      1836, 1836,  678, 1853, 1853, 1853, 1868, 1880, 1890, 1890,
1840      1890,  852, 1891,  677,  675, 1892, 1837, 1839, 1839, 1839,
1841      1854, 1840,  673,  672, 1841, 1845, 1845, 1845,  671, 1846,
1842       670,  667, 1847,  666, 1849, 1849, 1849,  665, 1850,  662,
1843      1889, 1851, 1899, 1899, 1899,  659, 1900,  657,  654, 1901,
1844      1856, 1856, 1856,  652, 1857,  646,  645, 1858, 1859, 1859,
1845      1859,  642, 1860,  641,  640, 1861, 1917, 1917, 1917, 1920,
1846      1920, 1920, 1871, 1871, 1871, 1922, 1922, 1922,  639, 1923,
1847       637,  636, 1924,  635, 1918,  634, 1921, 1151,  633, 1872,
1848      1151,  632,  627, 1151, 1925, 1925, 1925, 1926, 1926, 1926,
1849
1850      1879, 1879, 1879, 1931, 1931, 1931,  624, 1932,  626,  621,
1851      1933,  850,  850,  850, 1890, 1890, 1890, 1880, 1891,  620,
1852       618, 1892, 1944, 1944, 1944, 1946, 1946, 1946,  485,  852,
1853      1948, 1948, 1948, 1899, 1899, 1899,  615, 1900,  613, 1945,
1854      1901,  611, 1947, 1950, 1950, 1950,  609, 1949, 1917, 1917,
1855      1917, 1920, 1920, 1920, 1965, 1965, 1965, 2256, 1966,  606,
1856      1951, 1967,  605, 1922, 1922, 1922, 1918, 1923, 1921, 1151,
1857      1924,  604, 1151,  603, 1940, 1925, 1925, 1925, 1926, 1926,
1858      1926, 1151, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
1859      1149,  601,  600, 1149, 1980, 1980, 1980,  599, 1149, 1149,
1860
1861      1149, 1151, 1149, 1931, 1931, 1931,  598, 1932,  597,  595,
1862      1933,  593, 1981,  592,  590,  589,  586,  585,  583, 1944,
1863      1944, 1944, 1946, 1946, 1946, 1149, 1149, 1149, 1149, 1149,
1864      1149, 1149, 1149, 1149, 1149, 1149, 1945,  483, 1149, 1947,
1865      2256,  578,  576, 1149, 1149, 1149, 1151, 1149, 1985, 1985,
1866      1985,  572, 1986,  571,  570, 1987, 1988, 1988, 1988,  568,
1867      1989,  566,  565, 1990, 1948, 1948, 1948, 1950, 1950, 1950,
1868      1149, 1149, 1991, 1991, 1991,  563, 1992,  561,  560, 1993,
1869       559, 1949,  558,  557, 1951, 1994, 1994, 1994,  556, 1995,
1870       554,  549, 1996, 1965, 1965, 1965,  546, 1966,  545,  544,
1871
1872      1967,  541,  539, 1980, 1980, 1980, 2045, 2045, 2045,  537,
1873       536, 1151, 1149, 1149, 1149, 1149, 1149, 2015, 1149, 1149,
1874      1149, 1981,  535, 1149, 1151, 1152,  534,  533, 1149, 1149,
1875      1149, 1151, 1149, 1985, 1985, 1985,  531, 1986, 2256,  488,
1876      1987, 1988, 1988, 1988,  526, 1989,  521,  520, 1990, 2048,
1877      2048, 2048, 2050, 2050, 2050, 1149, 1149, 1149, 1149, 1149,
1878      1149, 1149, 1149, 1149, 1149, 2015, 2049,  518, 1149, 2051,
1879       516,  515,  514, 1149, 1149, 1149, 1151, 1149, 1991, 1991,
1880      1991,  512, 1992,  509,  505, 1993, 1994, 1994, 1994,  504,
1881      1995,  502,  501, 1996, 2052, 2052, 2052, 2070, 2070, 2070,
1882
1883      1149, 1149, 2045, 2045, 2045, 2048, 2048, 2048, 2050, 2050,
1884      2050, 2053, 2074, 2074, 2074,  785, 2075,  498,  497, 2076,
1885      1151,  496, 2049,  494,  493, 2051, 2077, 2077, 2077, 2256,
1886      2078,  487,  476, 2079,  474, 2052, 2052, 2052, 2080, 2080,
1887      2080,  472, 2081,  466,  465, 2082, 2070, 2070, 2070,  466,
1888       465, 1279, 2053, 2074, 2074, 2074,  464, 2075,  463, 2256,
1889      2076, 2077, 2077, 2077,  785, 2078, 2256, 2256, 2079, 2080,
1890      2080, 2080, 2256, 2081, 2256, 2256, 2082, 2210, 2210, 2210,
1891      2256, 2099, 2210, 2210, 2210, 2256, 2221, 2256, 2256, 2222,
1892      2254, 2254, 2254, 2256, 2256,  785, 2254, 2254, 2254, 2256,
1893
1894       785, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2255, 2256,
1895      2256, 2256, 2256, 2256, 2255,  186,  186,  186,  186,  186,
1896       186,  186,  186,  186,  187,  187,  187,  187,  187,  187,
1897       187,  187,  187,  192,  192,  192,  192,  192,  192,  192,
1898       192,  192,  195,  195,  195,  195,  195,  195,  195,  195,
1899       195,  198,  198,  198,  198,  198,  198,  198,  198,  198,
1900       201,  201,  201,  201,  201,  201,  201,  201,  201,  208,
1901       208,  208,  208,  208,  208,  208,  208,  208,  216,  216,
1902       216,  216,  216,  216,  216,  216,  216,  220,  220,  220,
1903       220,  220,  220,  220,  220,  220,  231,  231,  231,  231,
1904
1905       231,  231,  231,  231,  231,  242,  242,  242,  242,  242,
1906       242,  242,  242,  242,  249,  249,  249,  249,  249,  249,
1907       249,  249,  249,  257,  257,  257,  257,  257,  257,  257,
1908       257,  257,  263,  263,  263,  263,  263,  263,  263,  263,
1909       263,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1910       274,  274,  274,  274,  274,  274,  274,  274,  274,  291,
1911       291,  291,  291,  291,  291,  291,  291,  291,  299,  299,
1912       299,  299,  299,  299,  299,  299,  299,  317,  317,  317,
1913       317,  317,  317,  317,  317,  317,  323,  323,  323,  323,
1914       323,  323,  323,  323,  323,  332,  332,  332,  332,  332,
1915
1916       332,  332,  332,  332,  338,  338,  338,  338,  338,  338,
1917       338,  338,  338,  343,  343,  343,  343,  343,  343,  343,
1918       343,  343,  349,  349,  349,  349,  349,  349,  349,  349,
1919       349,  356,  356,  356,  356,  356,  356,  356,  356,  356,
1920       363,  363,  363,  363,  363,  363,  363,  363,  363,  368,
1921       368,  368,  368,  368,  368,  368,  368,  368,  376,  376,
1922       376,  376,  376,  376,  376,  376,  376,  382,  382,  382,
1923       382,  382,  382,  382,  382,  382,  389,  389,  389,  389,
1924       389,  389,  389,  389,  389,  394,  394,  394,  394,  394,
1925       394,  394,  394,  394,  400,  400,  400,  400,  400,  400,
1926
1927       400,  400,  400,  406,  406,  406,  406,  406,  406,  406,
1928       406,  406,  413,  413,  413,  413,  413,  413,  413,  413,
1929       413,  420,  420,  420,  420,  420,  420,  420,  420,  420,
1930       428,  428,  428,  428,  428,  428,  428,  428,  428,  432,
1931       432,  432,  432,  432,  432,  432,  432,  432,  438,  438,
1932       438,  438,  438,  438,  438,  438,  438,  442,  442,  442,
1933       442,  442,  442,  442,  442,  442,  450,  450,  450,  450,
1934       450,  450,  450,  450,  450,  455,  455,  455,  455,  455,
1935       455,  455,  455,  455,  475,  475,  475, 2256, 2256, 2256,
1936       475,  495,  495,  495, 2256, 2256, 2256,  495,  503,  503,
1937
1938       503, 2256, 2256, 2256,  503,  513,  513,  513, 2256, 2256,
1939      2256,  513,  519,  519,  519, 2256, 2256, 2256,  519,  532,
1940       532,  532, 2256, 2256, 2256,  532,  540,  540,  540, 2256,
1941      2256, 2256,  540,  555,  555,  555, 2256, 2256, 2256,  555,
1942       564,  564,  564, 2256, 2256, 2256,  564,  569,  569,  569,
1943      2256, 2256, 2256,  569,  577,  577,  577, 2256, 2256, 2256,
1944       577,  584,  584,  584, 2256, 2256, 2256,  584,  591,  591,
1945       591, 2256, 2256, 2256,  591,  596,  596,  596, 2256, 2256,
1946      2256,  596,  602,  602,  602, 2256, 2256, 2256,  602,  610,
1947       610,  610, 2256, 2256, 2256,  610,  614,  614,  614, 2256,
1948
1949      2256, 2256,  614,  619,  619,  619, 2256, 2256, 2256,  619,
1950       623,  623,  623,  623,  623,  623,  623, 2256,  623,  475,
1951       475,  475, 2256, 2256, 2256,  475,  638, 2256, 2256, 2256,
1952       638,  495,  495,  495, 2256, 2256, 2256,  495,  664, 2256,
1953      2256, 2256,  664,  503,  503,  503, 2256, 2256, 2256,  503,
1954       674, 2256, 2256, 2256,  674,  513,  513,  513, 2256, 2256,
1955      2256,  513,  680, 2256, 2256, 2256,  680,  519,  519,  519,
1956      2256, 2256, 2256,  519,  685, 2256, 2256, 2256,  685,  702,
1957      2256, 2256, 2256,  702,  540,  540,  540, 2256, 2256, 2256,
1958       540,  718, 2256, 2256, 2256,  718,  555,  555,  555, 2256,
1959
1960      2256, 2256,  555,  727, 2256, 2256, 2256,  727,  564,  564,
1961       564, 2256, 2256, 2256,  564,  732, 2256, 2256, 2256,  732,
1962       569,  569,  569, 2256, 2256, 2256,  569,  740, 2256, 2256,
1963      2256,  740,  577,  577,  577, 2256, 2256, 2256,  577,  745,
1964      2256, 2256, 2256,  745,  584,  584,  584, 2256, 2256, 2256,
1965       584,  752, 2256, 2256, 2256,  752,  591,  591,  591, 2256,
1966      2256, 2256,  591,  757, 2256, 2256, 2256,  757,  596,  596,
1967       596, 2256, 2256, 2256,  596,  762, 2256, 2256, 2256,  762,
1968       602,  602,  602, 2256, 2256, 2256,  602,  768, 2256, 2256,
1969      2256,  768,  610,  610,  610, 2256, 2256, 2256,  610,  772,
1970
1971      2256, 2256, 2256,  772,  614,  614,  614, 2256, 2256, 2256,
1972       614,  776, 2256, 2256, 2256,  776,  619,  619,  619, 2256,
1973      2256, 2256,  619,  782, 2256, 2256, 2256,  782,  784,  784,
1974       784,  784,  784,  784,  784,  784,  784,  790, 2256, 2256,
1975      2256, 2256,  790,  475,  475,  475, 2256, 2256, 2256,  475,
1976       799,  799,  799,  799, 2256, 2256,  799,  799,  495,  495,
1977       495, 2256, 2256, 2256,  495,  829,  829,  829,  829, 2256,
1978      2256,  829,  829,  503,  503,  503, 2256, 2256, 2256,  503,
1979       843,  843,  843,  843, 2256, 2256,  843,  843,  513,  513,
1980       513, 2256, 2256, 2256,  513,  851,  851,  851,  851, 2256,
1981
1982      2256,  851,  851,  519,  519,  519, 2256, 2256, 2256,  519,
1983       859,  859,  859,  859, 2256, 2256,  859,  859,  532,  532,
1984       532, 2256, 2256, 2256,  532,  878,  878,  878,  878, 2256,
1985      2256,  878,  878,  540,  540,  540, 2256, 2256, 2256,  540,
1986       901,  901,  901,  901, 2256, 2256,  901,  901,  555,  555,
1987       555, 2256, 2256, 2256,  555,  915,  915,  915,  915, 2256,
1988      2256,  915,  915,  564,  564,  564, 2256, 2256, 2256,  564,
1989       923,  923,  923,  923, 2256, 2256,  923,  923,  569,  569,
1990       569, 2256, 2256, 2256,  569,  934,  934,  934,  934, 2256,
1991      2256,  934,  934,  577,  577,  577,  577, 2256,  577, 2256,
1992
1993       577,  943,  943,  943,  943, 2256, 2256,  943,  943,  584,
1994       584,  584,  584, 2256,  584, 2256,  584,  955,  955,  955,
1995       955, 2256, 2256,  955,  955,  591,  591,  591, 2256, 2256,
1996      2256,  591,  963,  963,  963,  963, 2256, 2256,  963,  963,
1997       596,  596,  596,  596, 2256,  596, 2256,  596,  973,  973,
1998       973,  973, 2256, 2256,  973,  973,  602,  602,  602, 2256,
1999      2256, 2256,  602,  981,  981,  981,  981, 2256, 2256,  981,
2000       981,  610,  610,  610, 2256, 2256, 2256,  610,  987,  987,
2001       987,  987, 2256, 2256,  987,  987,  994,  994,  994,  994,
2002      2256, 2256,  994,  994,  619,  619,  619, 2256, 2256, 2256,
2003
2004       619, 1003, 1003, 1003, 1003, 2256, 2256, 1003, 1003,  784,
2005       784,  784,  784,  784,  784,  784,  784,  784,  790, 2256,
2006       790, 2256, 2256,  790,  475,  475,  475, 2256, 2256, 2256,
2007       475,  799,  799,  799,  799, 2256, 2256,  799,  799,  495,
2008       495,  495,  495, 2256,  495, 2256,  495,  829,  829,  829,
2009       829, 2256, 2256,  829,  829,  503,  503,  503, 2256, 2256,
2010      2256,  503,  843,  843,  843,  843, 2256, 2256,  843,  843,
2011       513,  513,  513, 2256, 2256, 2256,  513,  851,  851,  851,
2012       851, 2256, 2256,  851,  851,  519,  519,  519, 2256, 2256,
2013      2256,  519,  859,  859,  859,  859, 2256, 2256,  859,  859,
2014
2015       532,  532,  532, 2256, 2256, 2256,  532,  878,  878,  878,
2016       878, 2256, 2256,  878,  878,  540,  540,  540, 2256, 2256,
2017      2256,  540,  901,  901,  901,  901, 2256, 2256,  901,  901,
2018       555,  555,  555, 2256, 2256, 2256,  555,  915,  915,  915,
2019       915, 2256, 2256,  915,  915,  564,  564,  564, 2256, 2256,
2020      2256,  564,  923,  923,  923,  923, 2256, 2256,  923,  923,
2021       569,  569,  569, 2256, 2256, 2256,  569,  934,  934,  934,
2022       934, 2256, 2256,  934,  934,  577,  577,  577, 2256, 2256,
2023      2256,  577,  943,  943,  943,  943, 2256, 2256,  943,  943,
2024       584,  584,  584, 2256, 2256, 2256,  584,  955,  955,  955,
2025
2026       955, 2256, 2256,  955,  955,  591,  591,  591, 2256, 2256,
2027      2256,  591,  963,  963,  963,  963, 2256, 2256,  963,  963,
2028       596,  596,  596, 2256, 2256, 2256,  596,  973,  973,  973,
2029       973, 2256, 2256,  973,  973,  602,  602,  602, 2256, 2256,
2030      2256,  602,  981,  981,  981,  981, 2256, 2256,  981,  981,
2031       610,  610,  610, 2256, 2256, 2256,  610,  987,  987,  987,
2032       987, 2256, 2256,  987,  987,  994,  994,  994,  994, 2256,
2033      2256,  994,  994,  619,  619,  619, 2256, 2256, 2256,  619,
2034      1003, 1003, 1003, 1003, 2256, 2256, 1003, 1003,  784,  784,
2035       784,  784,  784,  784,  784,  784,  784, 1149, 1149, 1149,
2036
2037      1149, 1149, 1149, 1149, 1149, 1149,  475,  475,  475, 2256,
2038      2256, 2256,  475,  799,  799,  799,  799, 2256, 2256,  799,
2039       799,  495,  495,  495, 2256, 2256, 2256,  495,  829,  829,
2040       829,  829, 2256, 2256,  829,  829,  503,  503,  503, 2256,
2041      2256, 2256,  503,  843,  843,  843,  843, 2256, 2256,  843,
2042       843,  513,  513,  513, 2256, 2256, 2256,  513,  851,  851,
2043       851,  851, 2256, 2256,  851,  851,  519,  519,  519, 2256,
2044      2256, 2256,  519,  532,  532,  532, 2256, 2256, 2256,  532,
2045       878,  878,  878,  878, 2256, 2256,  878,  878,  540,  540,
2046       540, 2256, 2256, 2256,  540,  901,  901,  901,  901, 2256,
2047
2048      2256,  901,  901,  555,  555,  555,  555, 2256,  555, 2256,
2049       555,  915,  915,  915,  915, 2256, 2256,  915,  915,  564,
2050       564,  564, 2256, 2256, 2256,  564,  923,  923,  923,  923,
2051      2256, 2256,  923,  923,  569,  569,  569, 2256, 2256, 2256,
2052       569,  934,  934,  934,  934, 2256, 2256,  934,  934,  577,
2053       577,  577, 2256, 2256, 2256,  577,  943,  943,  943,  943,
2054      2256, 2256,  943,  943,  584,  584,  584, 2256, 2256, 2256,
2055       584,  955,  955,  955,  955, 2256, 2256,  955,  955,  591,
2056       591,  591, 2256, 2256, 2256,  591,  963,  963,  963,  963,
2057      2256, 2256,  963,  963,  596,  596,  596, 2256, 2256, 2256,
2058
2059       596,  973,  973,  973,  973, 2256, 2256,  973,  973,  602,
2060       602,  602, 2256, 2256, 2256,  602,  981,  981,  981,  981,
2061      2256, 2256,  981,  981,  610,  610,  610,  610, 2256,  610,
2062      2256,  610,  987,  987,  987,  987, 2256, 2256,  987,  987,
2063       994,  994,  994,  994, 2256, 2256,  994,  994,  619,  619,
2064       619,  619, 2256,  619, 2256,  619, 1003, 1003, 1003, 1003,
2065      2256, 2256, 1003, 1003,  784,  784,  784,  784,  784,  784,
2066       784,  784,  784, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
2067      1149, 1149,  475,  475,  475, 2256, 2256, 2256,  475,  799,
2068       799,  799,  799, 2256, 2256,  799,  799,  495,  495,  495,
2069
2070      2256, 2256, 2256,  495,  829,  829,  829,  829, 2256, 2256,
2071       829,  829,  503,  503,  503, 2256, 2256, 2256,  503,  843,
2072       843,  843,  843, 2256, 2256,  843,  843,  513,  513,  513,
2073      2256, 2256, 2256,  513,  851,  851,  851,  851, 2256, 2256,
2074       851,  851,  519,  519,  519, 2256, 2256, 2256,  519,  532,
2075       532,  532, 2256, 2256, 2256,  532,  878,  878,  878,  878,
2076      2256, 2256,  878,  878,  540,  540,  540, 2256, 2256, 2256,
2077       540,  901,  901,  901,  901, 2256, 2256,  901,  901,  555,
2078       555,  555,  555, 2256,  555, 2256,  555,  915,  915,  915,
2079       915, 2256, 2256,  915,  915,  564,  564,  564, 2256, 2256,
2080
2081      2256,  564,  923,  923,  923,  923, 2256, 2256,  923,  923,
2082       569,  569,  569, 2256, 2256, 2256,  569,  934,  934,  934,
2083       934, 2256, 2256,  934,  934,  577,  577,  577, 2256, 2256,
2084      2256,  577,  943,  943,  943,  943, 2256, 2256,  943,  943,
2085       584,  584,  584,  584, 2256,  584, 2256,  584,  955,  955,
2086       955,  955, 2256, 2256,  955,  955,  591,  591,  591, 2256,
2087      2256, 2256,  591,  963,  963,  963,  963, 2256, 2256,  963,
2088       963,  596,  596,  596,  596, 2256,  596, 2256,  596,  973,
2089       973,  973,  973, 2256, 2256,  973,  973,  602,  602,  602,
2090      2256, 2256, 2256,  602,  981,  981,  981,  981, 2256, 2256,
2091
2092       981,  981,  987,  987,  987,  987, 2256, 2256,  987,  987,
2093       994,  994,  994,  994, 2256, 2256,  994,  994, 1003, 1003,
2094      1003, 1003, 2256, 2256, 1003, 1003,  784,  784,  784,  784,
2095       784,  784,  784,  784,  784, 1149, 1149, 1149, 1149, 1149,
2096      1149, 1149, 1149, 1149,  475,  475,  475,  475, 2256,  475,
2097      2256,  475,  799,  799,  799,  799, 2256, 2256,  799,  799,
2098       495,  495,  495, 2256, 2256, 2256,  495,  829,  829,  829,
2099       829, 2256, 2256,  829,  829,  503,  503,  503, 2256, 2256,
2100      2256,  503,  843,  843,  843,  843, 2256, 2256,  843,  843,
2101       513,  513,  513,  513, 2256,  513, 2256,  513,  851,  851,
2102
2103       851,  851, 2256, 2256,  851,  851,  519,  519,  519,  519,
2104      2256,  519, 2256,  519,  532,  532,  532, 2256, 2256, 2256,
2105       532,  540,  540,  540, 2256, 2256, 2256,  540,  901,  901,
2106       901,  901, 2256, 2256,  901,  901,  555,  555,  555, 2256,
2107      2256, 2256,  555,  564,  564,  564, 2256, 2256, 2256,  564,
2108       923,  923,  923,  923, 2256, 2256,  923,  923,  569,  569,
2109       569, 2256, 2256, 2256,  569,  577,  577,  577, 2256, 2256,
2110      2256,  577,  943,  943,  943,  943, 2256, 2256,  943,  943,
2111       584,  584,  584, 2256, 2256, 2256,  584,  955,  955,  955,
2112       955, 2256, 2256,  955,  955,  591,  591,  591, 2256, 2256,
2113
2114      2256,  591,  963,  963,  963,  963, 2256, 2256,  963,  963,
2115       973,  973,  973,  973, 2256, 2256,  973,  973,  602,  602,
2116       602, 2256, 2256, 2256,  602,  981,  981,  981,  981, 2256,
2117      2256,  981,  981,  987,  987,  987,  987, 2256, 2256,  987,
2118       987,  994,  994,  994,  994, 2256, 2256,  994,  994,  784,
2119       784,  784,  784,  784,  784,  784,  784,  784, 1149, 1149,
2120      1149, 1149, 1149, 1149, 1149, 1149, 1149, 1968, 1968, 1968,
2121      1968, 1968, 1968, 1968, 1968, 1968, 1969, 1969, 1969, 1969,
2122      1969, 1969, 1969, 1969, 1969, 2010, 2010, 2010, 2010, 2010,
2123      2010, 2010, 2010, 2010, 2013, 2013, 2013, 2013, 2013, 2013,
2124
2125      2013, 2013, 2013, 2042, 2042, 2042, 2042, 2042, 2042, 2042,
2126      2042, 2042, 2044, 2044, 2044, 2044, 2044, 2044, 2044, 2044,
2127      2044,  185, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2128      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2129      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2130      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2131      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2132      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2133      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2134      2256, 2256
2135
2136     } ;
2137
2138 static yyconst flex_int16_t yy_chk[7793] =
2139     {   0,
2140         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
2141         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
2142         4,   10,    0,    5,  251,    9,    6,  459,   10,    7,
2143         8,    8,    8,  190,   11,   13,   13,   12,   14,   14,
2144        13,   13,  459,   14,   14,  191,    8,   17,   17,  190,
2145        13,   15,   15,   14,   15,  194,   15,   16,   16, 1411,
2146        16,  191,   16,   18,   18, 1411,   15,   19,   19,   19,
2147       285,  194,   16,  251,   20,   20,   20,   23,   23,   23,
2148        24,   24,   24,   19,   25,   25,   25,  247,  212,   17,
2149        20,  247,  252,   23, 1448,  247,   24,  188,  188,  188,
2150
2151        25,  189,  189,  189,  212,   18,   21,   21,   21,   21,
2152        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
2153        21,  285,   21,   21,   21,   21,   21,   26,   26,   26,
2154        27,   27,   27,  279, 1449,   28,   28,   28,   29,   29,
2155        29,  252,  279,   26,  212,  287,   27,  287,  217,   21,
2156        21,   28,  253, 1450,   29,   30,   30,   30,  193,  193,
2157       193,  214,  214,  214,  217,  221,  221,  221,  229,  229,
2158       229,   30,   21,   22,   22,   22,   22,   22,   22,   22,
2159        22,   22,   22,   22,   22,   22,   22,   22,  301,   22,
2160        22,   22,   22,   22,   31,   31,   31,   32,   32,   32,
2161
2162      1278,  253,   33,   33,   33,   34,   34,   34,  314,  281,
2163        31,  314,  367,   32,  310, 1278,   22,   22,   33,  367,
2164       232,   34,   35,   35,   35,   36,   36,   36,   37,   37,
2165        37,   38,   38,   38,  310,  225,  232,  301,   35,   22,
2166       446,   36,  446,  499,   37,  281,  302,   38,   39,   39,
2167        39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
2168        39,   39,   39,  282,   39,   39,   39,   39,   39,   45,
2169        45,   45,  225,  282,   46,   46,   46,  499,   47,   47,
2170        47, 1451,   41,   41,  225,   45,  424,   41,   42,   42,
2171        46,   39,   39,   42,   47,  302,  355,   41,  468,   39,
2172
2173       424,  468,   39,   42,  240,  240,  240,  355,   39,   40,
2174        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
2175        40,   40,   40,   40,   41,   40,   40,   40,   40,   40,
2176        42,   48,   48,   48,   49,   49,   49,  381,   50,   50,
2177        50,   51,   51,   51,  381,  243,  258,   48,  237,  265,
2178        49,  270,   40,   40,   50,  237,  265,   51, 1279, 1456,
2179        40,  243,  258,   40,  237,  265,  204,  270,  358,   40,
2180        43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
2181        43,   43,   43,   43,   43,  283,   43,   43,   43,   43,
2182        43,   52,   52,   52,   55,   55,   55, 1279, 1312,   56,
2183
2184        56,   56,   59,   59,   59, 1312,  204,   52,  316,  292,
2185        55,  283,  204,   43,   43,   56,  204,  358,   59,  316,
2186       316,  204,   43,  359,   43,  292,  283,   43,  250,  250,
2187       250,  385, 1458,   43,   44,   44,   44,   44,   44,   44,
2188        44,   44,   44,   44,   44,   44,   44,   44,   44,  485,
2189        44,   44,   44,   44,   44,   60,   60,   60,   61,   61,
2190        61,  625,  485,   62,   62,   62,   63,   63,   63, 1459,
2191      1462,   60,  359,  307,   61,  625,  385,   44,   44,   62,
2192       319,  409,   63,  255,  255,  255,   44,  319,   44,  307,
2193       720,   44,  264,  264,  264,  720,  319,   44,   53,   53,
2194
2195        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
2196        53,   53,   53,  224,   53,   53,   53,   53,   53,   64,
2197        64,   64,   65,   65,   65, 1463,  409,   66,   66,   66,
2198        67,   67,   67,  481,  487,   64,  481,  487,   65,  324,
2199       224,   53,   53,   66,  339,  350,   67, 1316,   53,  267,
2200       267,  267,  224,   53, 1316,  324,  224,  275,  275,  275,
2201       339,  350,   53,   54,   54,   54,   54,   54,   54,   54,
2202        54,   54,   54,   54,   54,   54,   54,   54,  527,   54,
2203        54,   54,   54,   54,   68,   68,   68,   69,   69,   69,
2204      1467,  527,   70,   70,   70,   71,   71,   71,  489,  529,
2205
2206        68,  489,  534,   69, 1006,  534,   54,   54,   70,  364,
2207       334,   71,  529,   54,  289,  289,  289,  334,   54,  300,
2208       300,  300, 1006, 1473,  284,  364,  334,   54,   57,   57,
2209        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
2210        57,   57,   57,  530,   57,   57,   57,   57,   57,   72,
2211        72,   72,   73,   73,   73, 1474,  530,   74,   74,   74,
2212        75,   75,   75,  787,  377,   72,  284,  787,   73,  284,
2213      1482,   57,   57,   74, 1483,  284,   75,  304,  304,  304,
2214       377,  370,   57,  318,  318,  318,  321,  321,  321, 1412,
2215        57,   58,   58,   58,   58,   58,   58,   58,   58,   58,
2216
2217        58,   58,   58,   58,   58,   58,  617,   58,   58,   58,
2218        58,   58,   76,   76,   76,   77,   77,   77, 1412,  617,
2219        78,   78,   78,   79,   79,   79,  370,  390,   76, 1148,
2220       370,   77, 1280, 1484,   58,   58,   78, 1486,  401,   79,
2221        80,   80,   80,  390,  414,   58,   81,   81,   81,   82,
2222        82,   82, 1148,   58,  401, 1460,   80,   83,   83,   83,
2223       414, 1460,   81, 1280,  429,   82,   84,   84,   84,   85,
2224        85,   85, 1489,   83,   86,   86,   86,   87,   87,   87,
2225       429, 1490,   84, 1493,  345,   85,   88,   88,   88,  812,
2226        86,  345, 1413,   87,  333,  333,  333,  336,  336,  336,
2227
2228       345,  812,   88,   89,   89,   89,   89,   89,   89,   89,
2229        89,   89,   89,   89,   89,   89,   89,   89,  821,   89,
2230        89,   89,   89,   89,   91,   91,   91,   92,   92,   92,
2231       821, 1494,   93,   93,   93, 1413,   94,   94,   94, 1497,
2232        91, 1504, 1506,   92,  484,  439,   89,   89,   93,   89,
2233       484,   89,   94,  344,  344,  344,  484,   89,  347,  347,
2234       347,  439, 1516,   89, 1517, 1519,   89,   90,   90,   90,
2235        90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
2236        90,   90,  846,   90,   90,   90,   90,   90,   95,   95,
2237        95,   96,   96,   96,  846, 1533,   97,   97,   97, 1461,
2238
2239        98,   98,   98, 1538,   95, 1461, 1540,   96,  490,  451,
2240        90,   90,   97,   90,  490,   90,   98,  357,  357,  357,
2241       490,   90,  361,  361,  361,  451, 1542,   90, 1545, 1551,
2242        90,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2243        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2244        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2245        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2246        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2247        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2248        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
2249
2250        99,  101,  101,  101,  102,  102,  102,  369,  369,  369,
2251       374,  374,  374,  383,  383,  383, 1552,  101, 1525, 1553,
2252       102,  103,  103,  103,  103,  103,  103,  103,  103,  103,
2253       103,  103,  103,  103,  103,  103, 1554,  103,  103,  103,
2254       103,  103,  105,  105,  105,  106,  106,  106, 1555, 1556,
2255       109,  109,  109, 1491,  110,  110,  110, 1492,  105, 1491,
2256       396,  106, 1525, 1492,  103,  103,  109,  396,  103,  103,
2257       110,  387,  387,  387, 1557,  103,  396,  103,  395,  395,
2258       395,  103,  422, 1524,  103,  104,  104,  104,  104,  104,
2259       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
2260
2261      1558,  104,  104,  104,  104,  104,  113,  113,  113,  114,
2262       114,  114, 1559, 1560,  115,  115,  115,  422,  116,  116,
2263       116, 1566,  113, 1524, 1567,  114, 1568, 1569,  104,  104,
2264       115,  422,  104,  104,  116,  398,  398,  398, 1570,  104,
2265      1571,  104,  407,  407,  407,  104, 1572, 1573,  104,  107,
2266       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2267       107,  107,  107,  107, 1574,  107,  107,  107,  107,  107,
2268       117,  117,  117,  118,  118,  118, 1575, 1579,  119,  119,
2269       119, 1580,  120,  120,  120, 1582,  117, 1583, 1584,  118,
2270       492, 1591,  107,  107,  119, 1592,  492,  107,  120,  411,
2271
2272       411,  411,  492,  107,  108,  108,  108,  108,  108,  108,
2273       108,  108,  108,  108,  108,  108,  108,  108,  108, 1593,
2274       108,  108,  108,  108,  108,  123,  123,  123,  124,  124,
2275       124, 1594, 1595,  125,  125,  125, 1596,  126,  126,  126,
2276      1597,  123, 1598, 1600,  124,  493, 1608,  108,  108,  125,
2277      1620,  493,  108,  126,  421,  421,  421,  493,  108,  111,
2278       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
2279       111,  111,  111,  111, 1623,  111,  111,  111,  111,  111,
2280       127,  127,  127,  128,  128,  128, 1624, 1625,  129,  129,
2281       129,  130,  130,  130, 1628, 1629,  127, 1630,  434,  128,
2282
2283      1631, 1632,  111,  111,  129,  434,  111,  130,  426,  426,
2284       426, 1633, 1634,  111,  434,  111,  433,  433,  433,  436,
2285       436,  436,  111,  112,  112,  112,  112,  112,  112,  112,
2286       112,  112,  112,  112,  112,  112,  112,  112, 1635,  112,
2287       112,  112,  112,  112,  133,  133,  133,  134,  134,  134,
2288      1636, 1637,  135,  135,  135,  136,  136,  136, 1638, 1640,
2289       133, 1641,  457,  134, 1642, 1643,  112,  112,  135,  457,
2290       112,  136,  443,  443,  443, 1645, 1648,  112,  457,  112,
2291       448,  448,  448,  456,  456,  456,  112,  121,  121,  121,
2292       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
2293
2294       121,  121, 1649,  121,  121,  121,  121,  121,  137,  137,
2295       137,  138,  138,  138, 1650, 1654,  139,  139,  139,  140,
2296       140,  140,  511, 1655,  137, 1656, 1659,  138,  511, 1660,
2297       121,  121,  139, 1661,  511,  140,  121,  458,  458,  458,
2298      1662,  467,  467,  467,  628,  628,  628, 1664,  628, 1615,
2299       121,  122,  122,  122,  122,  122,  122,  122,  122,  122,
2300       122,  122,  122,  122,  122,  122, 1667,  122,  122,  122,
2301       122,  122,  143,  143,  143,  144,  144,  144, 1616, 1615,
2302       147,  147,  147,  148,  148,  148, 1669, 1691,  143, 1692,
2303      1693,  144, 1698, 1686,  122,  122,  147,  467, 1699,  148,
2304
2305       122,  640,  640,  640,  654,  654,  654,  802,  802,  802,
2306       687,  687,  687, 1616,  122,  131,  131,  131,  131,  131,
2307       131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
2308      1686,  131,  131,  131,  131,  131,  149,  149,  149,  150,
2309       150,  150, 1687, 1700,  151,  151,  151,  152,  152,  152,
2310      1696, 1701,  149, 1702, 1688,  150, 1703,  705,  131,  131,
2311       151, 1696,  640,  152,  131,  654,  705,  131,  661,  661,
2312       661,  687,  661,  705, 1704,  661, 1705, 1687,  131,  132,
2313       132,  132,  132,  132,  132,  132,  132,  132,  132,  132,
2314       132,  132,  132,  132, 1688,  132,  132,  132,  132,  132,
2315
2316       153,  153,  153,  154,  154,  154, 1697, 1706,  157,  157,
2317       157,  158,  158,  158, 1707, 1708,  153, 1697, 1710,  154,
2318      1711, 1717,  132,  132,  157, 1718, 1719,  158,  132, 1723,
2319      1728,  132,  669,  669,  669, 1729,  669, 1730, 1754,  669,
2320      1755, 1758,  132,  141,  141,  141,  141,  141,  141,  141,
2321       141,  141,  141,  141,  141,  141,  141,  141, 1759,  141,
2322       141,  141,  141,  141,  159,  159,  159,  160,  160,  160,
2323      1738, 1739,  161,  161,  161,  162,  162,  162, 1738, 1739,
2324       159, 1760, 1761,  160, 1738, 1739,  141,  141,  161, 1762,
2325      1763,  162,  141,  817,  817,  817, 1764,  141,  142,  142,
2326
2327       142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
2328       142,  142,  142, 1750,  142,  142,  142,  142,  142,  163,
2329       163,  163,  164,  164,  164, 1765, 1766,  167,  167,  167,
2330       168,  168,  168, 1768, 1769,  163, 1770, 1771,  164, 1781,
2331      1750,  142,  142,  167, 1782, 1783,  168,  142,  692,  692,
2332       692, 1789,  142,  145,  145,  145,  145,  145,  145,  145,
2333       145,  145,  145,  145,  145,  145,  145,  145, 1792,  145,
2334       145,  145,  145,  145,  171,  171,  171,  172,  172,  172,
2335      1794, 1802,  173,  173,  173,  174,  174,  174, 1803, 1804,
2336       171, 1805, 1806,  172, 1807, 1816,  145,  145,  173, 1812,
2337
2338      1817,  174,  145, 1821, 1822,  145,  683,  683,  683,  692,
2339       683, 1823, 1813,  683, 1751, 1824,  145,  146,  146,  146,
2340       146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
2341       146,  146, 1826,  146,  146,  146,  146,  146,  175,  175,
2342       175,  176,  176,  176, 1812, 1813,  177,  177,  177,  178,
2343       178,  178, 1827, 1751,  175, 1828, 1829,  176, 1830, 1831,
2344       146,  146,  177, 1832, 1833,  178,  146, 1838, 1842,  146,
2345       699,  699,  699, 1843,  699,  444, 1844,  699, 1848, 1852,
2346       146,  155,  155,  155,  155,  155,  155,  155,  155,  155,
2347       155,  155,  155,  155,  155,  155, 1752,  155,  155,  155,
2348
2349       155,  155,  181,  181,  181,  182,  182,  182, 1855, 1857,
2350       444,  497,  497,  497, 1862,  638,  638,  638,  181, 1857,
2351      1863,  182, 1864, 1865,  155,  155,  444, 1866,  497, 1867,
2352       276,  277,  155,  638,  155, 1752,  155, 1020, 1020, 1020,
2353       276,  277, 1869, 1875,  155,  156,  156,  156,  156,  156,
2354       156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
2355      1876,  156,  156,  156,  156,  156,  276,  277,  277,  505,
2356       505,  505,  276, 1877, 1869,  276,  520,  520,  520, 1878,
2357       277,  276,  535,  535,  535, 1858,  505, 1860,  156,  156,
2358       543,  543,  543,  520, 1881, 1858,  156, 1860,  156,  535,
2359
2360       156, 1882, 1021, 1021, 1021, 1884, 1885,  543,  156,  165,
2361       165,  165,  165,  165,  165,  165,  165,  165,  165,  165,
2362       165,  165,  165,  165, 1886,  165,  165,  165,  165,  165,
2363       545,  545,  545,  558,  558,  558, 1888,  566,  566,  566,
2364       571,  571,  571,  593,  593,  593, 1021,  545, 1861, 1893,
2365       558, 1894,  165,  165,  566, 1895, 1903,  571, 1861, 1904,
2366       593,  707,  707,  707, 1905,  707, 1906, 1907,  707, 1022,
2367      1022, 1022, 1025, 1025, 1025,  165,  166,  166,  166,  166,
2368       166,  166,  166,  166,  166,  166,  166,  166,  166,  166,
2369       166, 1908,  166,  166,  166,  166,  166,  615,  615,  615,
2370
2371       620,  620,  620,  639,  639,  639,  660,  660,  660,  664,
2372       664,  664, 1909, 1910,  615, 1911, 1912,  620, 1914,  166,
2373       166,  639, 1915,  660,  668,  668,  668,  664,  710,  710,
2374       710, 1927,  710, 1928, 1929,  710, 1031, 1031, 1031, 1930,
2375      1919,  668,  166,  169,  169,  169,  169,  169,  169,  169,
2376       169,  169,  169,  169,  169,  169,  169,  169,  639,  169,
2377       169,  169,  169,  169,  665,  665,  665,  670,  670,  670,
2378      1934,  672,  672,  672,  674,  674,  674,  675,  675,  675,
2379      1919, 1935,  665, 1936,  670, 1937,  169,  169,  672,  723,
2380       723,  723,  674,  723, 1938,  675,  723,  169,  170,  170,
2381
2382       170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
2383       170,  170,  170, 1939,  170,  170,  170,  170,  170,  680,
2384       680,  680,  675, 1941, 1942,  665,  681,  681,  681,  682,
2385       682,  682,  685,  685,  685, 1943, 1952,  680, 1050, 1050,
2386      1050,  170,  170, 1953,  681, 1954,  682, 1061, 1061, 1061,
2387       685, 1955,  170,  179,  179,  179,  179,  179,  179,  179,
2388       179,  179,  179,  179,  179,  179,  179,  179, 1956,  179,
2389       179,  179,  179,  179,  686,  686,  686,  698,  698,  698,
2390       702,  702,  702,  703,  703,  703, 1957,  681,  706,  706,
2391       706, 1958,  686, 1959,  698, 1960,  179,  179,  702, 1961,
2392
2393      1962,  703, 1163, 1163, 1163,  706, 1963,  179, 1970,  686,
2394       731,  731,  731, 1972,  731, 1964, 1975,  731, 1976,  179,
2395       180,  180,  180,  180,  180,  180,  180,  180,  180,  180,
2396       180,  180,  180,  180,  180, 1978,  180,  180,  180,  180,
2397       180,  703,  709,  709,  709,  711,  711,  711,  718,  718,
2398       718,  719,  719,  719,  722,  722,  722, 1979, 1964,  709,
2399      1193, 1982,  711,  180,  180, 1193,  718, 1966, 1193,  719,
2400      1983,  722, 1193, 1984,  180,  724,  724,  724,  727,  727,
2401       727, 1966, 1967,  728,  728,  728,  180,  222,  730,  730,
2402       730, 1998,  724, 1967,  222, 2000,  727,  732,  732,  732,
2403
2404      2002,  728, 2004,  222,  222,  730,  719,  733,  733,  733,
2405       735,  735,  735, 2012, 1194,  732,  736,  736,  736, 1194,
2406       736, 2014, 1194,  736, 2016,  733, 1194,  735, 1986,  222,
2407       222,  222,  728,  740,  740,  740,  222, 2017, 1986,  222,
2408       741,  741,  741,  222, 2026,  222, 2028,  222,  745,  745,
2409       745,  740,  742,  742,  742,  743,  743,  743,  741,  744,
2410       744,  744,  746,  746,  746,  733,  745, 2029, 2009,  742,
2411      2011, 2011,  743,  748,  748,  748,  744,  749,  749,  749,
2412       746,  750,  750,  750,  751,  751,  751,  752,  752,  752,
2413       748, 2030, 2031,  741,  749,  753,  753,  753,  750, 2032,
2414
2415      1987,  751,  755,  755,  755,  752, 2009,  756,  756,  756,
2416      1987,  756, 2025,  753,  756,  744,  757,  757,  757,  755,
2417       746,  759,  759,  759, 2034,  749,  758,  758,  758, 2025,
2418       753,  761,  761,  761,  757,  760,  760,  760,  759,  749,
2419       751,  762,  762,  762,  758,  763,  763,  763,  761,  768,
2420       768,  768,  760,  769,  769,  769,  772,  772,  772,  762,
2421       773,  773,  773,  763,  774,  774,  774,  768,  775,  775,
2422       775,  769,  775, 2036,  772,  775, 2042, 2043,  773,  758,
2423      2044,  774, 2027,  760,  776,  776,  776,  777,  777,  777,
2424       779,  779,  779, 1989,  780,  780,  780,  760,  780, 2027,
2425
2426      2013,  780,  776, 1989, 2046,  777, 2047,  779,  782,  782,
2427       782, 2013, 2054,  763,  769,  783,  783,  783,  798,  798,
2428       798,  773,  799,  799,  799, 1990,  782, 2055,  801,  801,
2429       801, 2056, 2057,  783, 1995, 1990,  798,  822,  822,  822,
2430       799,  826,  826,  826, 1995,  777,  801, 1996,  823,  823,
2431       823, 2058,  823, 2059,  822,  823, 2060, 1996,  826,  828,
2432       828,  828,  829,  829,  829,  831,  831,  831,  833,  833,
2433       833, 2061,  833,  801, 2062,  833,  783,  828, 2010, 2063,
2434       829, 2033, 2064,  831,  836,  836,  836,  837,  837,  837,
2435      2065,  837, 2010, 2066,  837,  838,  838,  838, 2033,  826,
2436
2437      2067,  836,  839,  839,  839, 2068, 2069,  840,  840,  840,
2438       831,  840,  838, 2071,  840,  842,  842,  842, 2083,  839,
2439       843,  843,  843,  845,  845,  845,  848,  848,  848,  850,
2440       850,  850, 2081,  842,  851,  851,  851, 2035,  843, 2084,
2441      2085,  845, 2081,  848,  853,  853,  853,  850, 2086,  854,
2442       854,  854,  851,  854, 2035, 2087,  854,  858,  858,  858,
2443      2088, 2089,  853,  859,  859,  859,  861,  861,  861,  871,
2444       871,  871,  872,  872,  872,  858,  872, 2082, 2090,  872,
2445       845,  859, 2091, 2092,  861, 2093,  871, 2082, 2094,  853,
2446       877,  877,  877,  878,  878,  878,  880,  880,  880,  885,
2447
2448       885,  885, 2095,  885, 2096, 2097,  885, 2098,  877, 2101,
2449      2102,  878, 2099, 2103,  880,  888,  888,  888,  889,  889,
2450       889, 2104,  889, 2105, 2106,  889,  892,  892,  892,  893,
2451       893,  893,  888,  893, 2107, 2099,  893,  900,  900,  900,
2452      1164, 1164, 1164,  892,  901,  901,  901,  903,  903,  903,
2453       907,  907,  907, 2108,  907,  900, 2109,  907,  880,  910,
2454       910,  910,  901, 2110, 2111,  903,  911,  911,  911, 2112,
2455       911, 2113, 2114,  911, 2115, 2116,  910,  914,  914,  914,
2456       915,  915,  915,  917,  917,  917,  919,  919,  919, 2117,
2457       919, 2118, 2119,  919, 2120,  914, 2122, 2123,  915, 2124,
2458
2459      2121,  917,  922,  922,  922,  923,  923,  923,  925,  925,
2460       925,  903,  927,  927,  927, 2125,  927, 2121, 2126,  927,
2461       922, 2127, 2128,  923, 2129, 2130,  925,  933,  933,  933,
2462      2131, 2132,  917,  934,  934,  934,  936,  936,  936,  937,
2463       937,  937,  938,  938,  938,  933,  938, 2133, 2134,  938,
2464      2135,  934, 2136, 2137,  936, 2138,  937,  939,  939,  939,
2465       940,  940,  940, 2139,  940, 2140, 2141,  940,  942,  942,
2466       942, 2143,  925, 2142,  939, 2144,  943,  943,  943,  945,
2467       945,  945,  947,  947,  947, 2145,  942, 2146,  948,  948,
2468       948, 2142,  948,  936,  943,  948, 2147,  945, 2148,  947,
2469
2470       951,  951,  951,  952,  952,  952, 2149,  952, 2150, 2151,
2471       952,  954,  954,  954,  955,  955,  955,  951,  957,  957,
2472       957,  959,  959,  959, 2152,  959, 2153, 2154,  959,  954,
2473      2155, 2156,  955,  962,  962,  962,  957,  963,  963,  963,
2474       965,  965,  965,  945,  966,  966,  966,  970,  970,  970,
2475      2157,  962,  967,  967,  967,  963,  967, 2158,  965,  967,
2476      2159,  966, 2160, 2161,  970,  971,  971,  971, 2162,  971,
2477      2164, 2165,  971,  972,  972,  972,  973,  973,  973,  957,
2478       975,  975,  975,  977,  977,  977,  980,  980,  980, 2163,
2479      2166,  972, 2167, 2168,  973, 2163, 2169,  965,  975, 2171,
2480
2481       977,  981,  981,  981,  980,  983,  983,  983,  986,  986,
2482       986,  987,  987,  987,  989,  989,  989, 2172, 2174,  981,
2483       990,  990,  990,  983,  990, 2176,  986,  990, 2178,  987,
2484      2179, 2181,  989,  993,  993,  993,  994,  994,  994,  975,
2485       996,  996,  996,  998,  998,  998, 2182,  998, 2185, 2186,
2486       998,  993, 2184, 2187,  994, 1002, 1002, 1002,  996, 1003,
2487      1003, 1003, 2188,  983, 2184,  989, 1005, 1005, 1005, 1007,
2488      1007, 1007, 2190, 1002, 1014, 1014, 1014, 1003, 1034, 1034,
2489      1034, 1038, 1038, 1038, 1005, 2192, 2193, 1007, 1007, 1035,
2490      1035, 1035, 1014, 1035, 2194, 1034, 1035,  996, 2196, 1038,
2491
2492      1040, 1040, 1040, 2198, 1040, 2200, 2201, 1040, 1043, 1043,
2493      1043, 1044, 1044, 1044, 2202, 1044, 2203, 2204, 1044, 1045,
2494      1045, 1045, 2205, 1045, 1005, 1043, 1045, 2206, 1038, 1049,
2495      1049, 1049, 1052, 1052, 1052, 2207, 2208, 1014, 1053, 1053,
2496      1053, 2209, 1053, 2211, 2213, 1053, 2215, 1049, 2216, 1052,
2497      1054, 1054, 1054, 1055, 1055, 1055, 1057, 1057, 1057, 1062,
2498      1062, 1062, 1068, 1068, 1068, 2217, 2218, 1054, 1069, 1069,
2499      1069, 1055, 1069, 2219, 1057, 1069, 2220, 1049, 2221, 1068,
2500      1070, 1070, 1070, 2222, 1071, 1071, 1071, 1072, 1072, 1072,
2501      1074, 1074, 1074, 1077, 1077, 1077, 1447, 1070, 2252, 2235,
2502
2503      1055, 1071, 1446, 1062, 2233, 1072, 1445, 1074, 1444, 2252,
2504      1077, 1078, 1078, 1078, 1443, 1078, 2234, 2231, 1078, 1079,
2505      1079, 1079, 2221, 1079, 1442, 1438, 1079, 2222, 1071, 1082,
2506      1082, 1082, 2235, 1088, 1088, 1088, 1089, 1089, 1089, 1090,
2507      1090, 1090, 2233, 1091, 1091, 1091, 1082, 1113, 1113, 1113,
2508      1072, 1088, 2231, 1089, 2234, 2232, 1090, 1092, 1092, 1092,
2509      1091, 1092, 2237, 2239, 1092, 1095, 1095, 1095, 1096, 1096,
2510      1096, 1097, 1097, 1097, 1099, 1099, 1099, 1103, 1103, 1103,
2511      2236, 1437, 1095, 2251, 2238, 1096, 1104, 1104, 1104, 1097,
2512      2232, 1113, 1099, 2240, 1103, 1088, 1091, 2251, 2239, 1105,
2513
2514      1105, 1105, 1090, 1105, 1104, 2237, 1105, 1108, 1108, 1108,
2515      1434, 1108, 1433, 2236, 1108, 1112, 1112, 1112, 1166, 1166,
2516      1166, 1103, 1114, 1114, 1114, 1096, 1114, 2238, 2240, 1114,
2517      2243, 1431, 1097, 1112, 1119, 1119, 1119, 1099, 1119, 2243,
2518      1104, 1119, 1123, 1123, 1123, 1125, 1125, 1125, 1126, 1126,
2519      1126, 1428, 1126, 1424, 2241, 1126, 1423, 1131, 1131, 1131,
2520      1123, 1131, 2242, 1125, 1131, 1134, 1134, 1134, 1136, 1136,
2521      1136, 2245, 1137, 1137, 1137, 1420, 1137, 1419, 1112, 1137,
2522      1140, 1140, 1140, 1134, 2241, 1136, 1142, 1142, 1142, 1143,
2523      1143, 1143, 2242, 1144, 1144, 1144, 2246, 1414, 1140, 1125,
2524
2525      1123, 2245, 1399, 1142, 1146, 1146, 1146, 1143, 1397, 1396,
2526      1134, 1144, 1147, 1147, 1147, 1150, 1150, 1150, 1157, 1157,
2527      1157, 1146, 1169, 1169, 1169, 2244, 2246, 1140, 1395, 1388,
2528      1147, 1386, 2247, 1150, 2244, 1381, 1157, 1171, 1171, 1171,
2529      1172, 1172, 1172, 1144, 1175, 1175, 1175, 1176, 1176, 1176,
2530      1178, 1178, 1178, 1143, 1178, 2248, 2249, 1178, 1183, 1183,
2531      1183, 1189, 1189, 1189, 1150, 1185, 1185, 1185, 1157, 1185,
2532      1379, 1147, 1185, 1190, 1190, 1190, 1183, 2247, 2250, 1189,
2533      1150, 1192, 1192, 1192, 1172, 1192, 2249, 1376, 1192, 1375,
2534      1374, 1176, 1195, 1195, 1195, 1196, 1196, 1196, 1171, 1196,
2535
2536      2248, 1372, 1196, 1197, 1197, 1197, 1370, 1183, 2250, 1195,
2537      1201, 1201, 1201, 1202, 1202, 1202, 1203, 1203, 1203, 1189,
2538      1368, 1197, 1204, 1204, 1204, 1205, 1205, 1205, 1208, 1208,
2539      1208, 1365, 1208, 1361, 1352, 1208, 1211, 1211, 1211, 1212,
2540      1212, 1212, 1351, 1212, 1344, 1338, 1212, 1213, 1213, 1213,
2541      1335, 1334, 1197, 1211, 1214, 1214, 1214, 1333, 1214, 1328,
2542      1327, 1214, 1324, 1323, 1213, 1317, 1216, 1216, 1216, 1315,
2543      1218, 1218, 1218, 1314, 1219, 1219, 1219, 1203, 1219, 1313,
2544      1311, 1219, 1310, 1204, 1216, 1307, 1205, 1218, 1220, 1220,
2545      1220, 1222, 1222, 1222, 1306, 1222, 1304, 1303, 1222, 1225,
2546
2547      1225, 1225, 1226, 1226, 1226, 1220, 1226, 1302, 1301, 1226,
2548      1227, 1227, 1227, 1231, 1231, 1231, 1225, 1232, 1232, 1232,
2549      1233, 1233, 1233, 1299, 1234, 1234, 1234, 1227, 1234, 1297,
2550      1231, 1234, 1235, 1235, 1235, 1232, 1292, 1233, 1236, 1236,
2551      1236, 1237, 1237, 1237, 1238, 1238, 1238, 1291, 1238, 1235,
2552      1290, 1238, 1239, 1239, 1239, 1236, 1288, 1287, 1237, 1240,
2553      1240, 1240, 1286, 1242, 1242, 1242, 1246, 1246, 1246, 1239,
2554      1285, 1247, 1247, 1247, 1282, 1247, 1274, 1240, 1247, 1269,
2555      1232, 1242, 1267, 1246, 1249, 1249, 1249, 1251, 1251, 1251,
2556      1253, 1253, 1253, 1266, 1262, 1236, 1254, 1254, 1254, 1255,
2557
2558      1255, 1255, 1249, 1239, 1257, 1251, 1252, 1253, 1256, 1256,
2559      1256, 1250, 1242, 1254, 1248, 1245, 1255, 1258, 1258, 1258,
2560      1259, 1259, 1259, 1260, 1260, 1260, 1256, 1261, 1261, 1261,
2561      1268, 1268, 1268, 1244, 1243, 1258, 1251, 1259, 1241, 1230,
2562      1260, 1229, 1263, 1263, 1263, 1261, 1263, 1228, 1268, 1263,
2563      1270, 1270, 1270, 1221, 1217, 1271, 1271, 1271, 1215, 1271,
2564      1255, 1258, 1271, 1272, 1272, 1272, 1207, 1270, 1273, 1273,
2565      1273, 1206, 1256, 1275, 1275, 1275, 1276, 1276, 1276, 1268,
2566      1276, 1272, 1200, 1276, 1199, 1198, 1273, 1191, 1188, 1261,
2567      1275, 1277, 1277, 1277, 1283, 1283, 1283, 1284, 1284, 1284,
2568
2569      1289, 1289, 1289, 1293, 1293, 1293, 1294, 1294, 1294, 1277,
2570      1184, 1283, 1295, 1295, 1295, 1284, 1296, 1296, 1296, 1272,
2571      1182, 1273, 1298, 1298, 1298, 1300, 1300, 1300, 1305, 1305,
2572      1305, 1308, 1308, 1308, 1309, 1309, 1309, 1318, 1318, 1318,
2573      1181, 1318, 1177, 1174, 1318, 1173, 1305, 1170, 1168, 1308,
2574      1167, 1309, 1321, 1321, 1321, 1284, 1322, 1322, 1322, 1325,
2575      1325, 1325, 1326, 1326, 1326, 1329, 1329, 1329, 1165, 1329,
2576      1321, 1162, 1329, 1322, 1332, 1332, 1332, 1161, 1332, 1160,
2577      1159, 1332, 1336, 1336, 1336, 1158, 1156, 1308, 1339, 1339,
2578      1339, 1155, 1339, 1152, 1149, 1339, 1321, 1342, 1342, 1342,
2579
2580      1336, 1343, 1343, 1343, 1145, 1343, 1141, 1139, 1343, 1345,
2581      1345, 1345, 1138, 1345, 1342, 1135, 1345, 1348, 1348, 1348,
2582      1349, 1349, 1349, 1130, 1349, 1129, 1124, 1349, 1350, 1350,
2583      1350, 1353, 1353, 1353, 1348, 1354, 1354, 1354, 1122, 1354,
2584      1118, 1117, 1354, 1111, 1102, 1350, 1101, 1100, 1353, 1355,
2585      1355, 1355, 1356, 1356, 1356, 1098, 1356, 1087, 1086, 1356,
2586      1359, 1359, 1359, 1085, 1360, 1360, 1360, 1355, 1360, 1084,
2587      1083, 1360, 1362, 1362, 1362, 1076, 1362, 1359, 1075, 1362,
2588      1073, 1366, 1366, 1366, 1369, 1369, 1369, 1371, 1371, 1371,
2589      1373, 1373, 1373, 1067, 1373, 1066, 1065, 1373, 1355, 1366,
2590
2591      1064, 1063, 1369, 1060, 1371, 1377, 1377, 1377, 1380, 1380,
2592      1380, 1382, 1382, 1382, 1383, 1383, 1383, 1059, 1383, 1056,
2593      1051, 1383, 1048, 1377, 1039, 1037, 1380, 1036, 1382, 1033,
2594      1032, 1371, 1384, 1384, 1384, 1385, 1385, 1385, 1030, 1385,
2595      1029, 1028, 1385, 1027, 1026, 1369, 1387, 1387, 1387, 1384,
2596      1389, 1389, 1389, 1390, 1390, 1390, 1391, 1391, 1391, 1024,
2597      1391, 1023, 1019, 1391, 1387, 1392, 1392, 1392, 1389, 1018,
2598      1390, 1393, 1393, 1393, 1017, 1393, 1016, 1015, 1393, 1405,
2599      1405, 1405, 1392, 1394, 1394, 1394, 1398, 1398, 1398, 1400,
2600      1400, 1400, 1013, 1400, 1012, 1011, 1400, 1389, 1403, 1403,
2601
2602      1403, 1394, 1010, 1001, 1398, 1404, 1404, 1404,  997, 1387,
2603      1406, 1406, 1406,  985, 1406,  984, 1403, 1406, 1409, 1409,
2604      1409,  979,  978, 1404, 1415, 1415, 1415, 1416, 1416, 1416,
2605       976, 1416,  969,  968, 1416,  958, 1409, 1417, 1417, 1417,
2606       953, 1415, 1418, 1418, 1418, 1394,  950, 1403, 1398, 1421,
2607      1421, 1421, 1422, 1422, 1422, 1417, 1404, 1425, 1425, 1425,
2608      1426, 1426, 1426, 1427, 1427, 1427, 1429, 1429, 1429, 1430,
2609      1430, 1430, 1432, 1432, 1432, 1435, 1435, 1435, 1439, 1439,
2610      1439,  949, 1440, 1440, 1440, 1441, 1441, 1441,  946, 1441,
2611       941,  932, 1441, 1435,  931,  930, 1439,  926, 1417, 1440,
2612
2613      1452, 1452, 1452, 1453, 1453, 1453, 1454, 1454, 1454,  918,
2614      1454,  913,  912, 1454, 1455, 1455, 1455,  906, 1452,  905,
2615      1453, 1457, 1457, 1457, 1464, 1464, 1464,  904, 1464,  899,
2616       898, 1464, 1468, 1468, 1468,  897, 1468,  896,  895, 1468,
2617      1471, 1471, 1471,  894, 1472, 1472, 1472, 1452, 1472,  884,
2618       883, 1472, 1475, 1475, 1475,  882, 1475, 1471,  881, 1475,
2619      1478, 1478, 1478, 1479, 1479, 1479,  876, 1479,  875,  870,
2620      1479, 1485, 1485, 1485, 1487, 1487, 1487,  869, 1478, 1488,
2621      1488, 1488,  868, 1488,  867,  866, 1488,  865,  864, 1485,
2622       863, 1487, 1495, 1495, 1495, 1498, 1498, 1498,  862, 1498,
2623
2624       857,  849, 1498,  847, 1501, 1501, 1501,  841, 1501,  832,
2625      1495, 1501, 1505, 1505, 1505, 1507, 1507, 1507, 1508, 1508,
2626      1508, 1478, 1508,  827,  820, 1508,  819, 1511, 1511, 1511,
2627      1505, 1511,  818, 1507, 1511, 1514, 1514, 1514, 1515, 1515,
2628      1515, 1518, 1518, 1518, 1520, 1520, 1520, 1521, 1521, 1521,
2629      1522, 1522, 1522, 1514,  816, 1515, 1523, 1523, 1523, 1518,
2630       815, 1505, 1520,  814,  813, 1521, 1526, 1526, 1526, 1514,
2631      1530, 1530, 1530,  811, 1523, 1527, 1527, 1527, 1507, 1527,
2632       810,  809, 1527, 1531, 1531, 1531,  808,  807, 1530, 1532,
2633      1532, 1532, 1534, 1534, 1534, 1535, 1535, 1535, 1536, 1536,
2634
2635      1536, 1520,  806, 1518, 1537, 1537, 1537, 1539, 1539, 1539,
2636      1541, 1541, 1541, 1544, 1544, 1544, 1546, 1546, 1546,  805,
2637      1548, 1548, 1548,  804, 1548,  803, 1530, 1548,  797,  796,
2638      1544, 1561, 1561, 1561, 1546, 1562, 1562, 1562,  795, 1562,
2639       792,  791, 1562, 1565, 1565, 1565, 1576, 1576, 1576, 1561,
2640      1576,  790,  788, 1576, 1581, 1581, 1581, 1585, 1585, 1585,
2641      1587, 1587, 1587, 1588, 1588, 1588,  784, 1588,  781,  778,
2642      1588,  771, 1581,  770,  767, 1585,  766, 1587, 1599, 1599,
2643      1599, 1601, 1601, 1601, 1602, 1602, 1602,  765,  764, 1561,
2644      1603, 1603, 1603, 1604, 1604, 1604, 1605, 1605, 1605, 1601,
2645
2646       754, 1602,  747,  739, 1587, 1606, 1606, 1606, 1603, 1606,
2647       738, 1604, 1606, 1605, 1607, 1607, 1607, 1609, 1609, 1609,
2648      1610, 1610, 1610, 1611, 1611, 1611, 1612, 1612, 1612,  737,
2649       734, 1607, 1614, 1614, 1614, 1609, 1617, 1617, 1617,  729,
2650       726, 1611,  725,  721, 1612,  717,  716, 1603,  715,  714,
2651      1614, 1604, 1618, 1618, 1618, 1619, 1619, 1619, 1621, 1621,
2652      1621, 1622, 1622, 1622, 1626, 1626, 1626, 1627, 1627, 1627,
2653      1618, 1627,  713,  712, 1627, 1639, 1639, 1639, 1647, 1647,
2654      1647, 1626, 1651, 1651, 1651,  708, 1611, 1652, 1652, 1652,
2655       704, 1614,  701, 1639,  700, 1647, 1657, 1657, 1657, 1651,
2656
2657      1658, 1658, 1658,  697, 1658, 1652,  696, 1658, 1666, 1666,
2658      1666,  695,  694, 1657, 1668, 1668, 1668, 1670, 1670, 1670,
2659      1672, 1672, 1672,  693,  691, 1666, 1673, 1673, 1673,  690,
2660      1673,  689, 1639, 1673,  688, 1670,  684, 1672, 1674, 1674,
2661      1674, 1675, 1675, 1675, 1676, 1676, 1676,  679, 1676,  678,
2662       677, 1676, 1679, 1679, 1679,  676, 1674,  673,  671, 1675,
2663      1680, 1680, 1680,  667, 1680,  663,  662, 1680,  659, 1679,
2664      1681, 1681, 1681, 1682, 1682, 1682, 1684, 1684, 1684, 1685,
2665      1685, 1685, 1689, 1689, 1689,  658,  657, 1681, 1753, 1753,
2666      1753, 1682, 1694, 1694, 1694,  656,  655, 1685,  653,  652,
2667
2668      1689, 1709, 1709, 1709,  651, 1675, 1695, 1695, 1695, 1694,
2669      1695,  650,  649, 1695, 1712, 1712, 1712,  648,  647, 1709,
2670      1715, 1715, 1715, 1716, 1716, 1716,  646, 1716,  645,  644,
2671      1716, 1712, 1720, 1720, 1720,  643,  642, 1715, 1721, 1721,
2672      1721,  641, 1721,  637,  636, 1721, 1722, 1722, 1722, 1720,
2673      1724, 1724, 1724, 1725, 1725, 1725,  634, 1725, 1709,  633,
2674      1725,  632,  631, 1722, 1733, 1733, 1733, 1724, 1734, 1734,
2675      1734,  630, 1734,  626,  624, 1734, 1735, 1735, 1735,  623,
2676       622, 1733, 1736, 1736, 1736, 1737, 1737, 1737,  621, 1737,
2677       616,  612, 1737, 1735, 1740, 1740, 1740,  611,  608, 1736,
2678
2679      1742, 1742, 1742, 1743, 1743, 1743,  607, 1743,  606,  605,
2680      1743,  604, 1740, 1746, 1746, 1746,  603,  600, 1742, 1747,
2681      1747, 1747,  599, 1747,  598,  597, 1747, 1748, 1748, 1748,
2682      1746, 1756, 1756, 1756, 1757, 1757, 1757,  594, 1757,  592,
2683       589, 1757, 1773, 1773, 1773, 1748,  588,  587, 1756, 1774,
2684      1774, 1774, 1775, 1775, 1775, 1776, 1776, 1776,  586,  585,
2685      1773,  582,  581, 1742, 1777, 1777, 1777,  580, 1777, 1775,
2686       579, 1777, 1776, 1778, 1778, 1778,  578, 1778,  575,  574,
2687      1778, 1784, 1784, 1784,  573, 1784,  572,  570, 1784,  567,
2688       565, 1773, 1787, 1787, 1787,  562, 1775, 1788, 1788, 1788,
2689
2690       561, 1788,  560,  559, 1788, 1790, 1790, 1790,  557, 1787,
2691      1791, 1791, 1791,  556, 1791,  553,  552, 1791, 1793, 1793,
2692      1793,  551, 1790, 1795, 1795, 1795,  550, 1795,  549,  548,
2693      1795, 1798, 1798, 1798,  547, 1793, 1799, 1799, 1799,  546,
2694      1799,  544,  542, 1799, 1800, 1800, 1800,  541, 1798, 1801,
2695      1801, 1801,  538, 1801,  537,  536, 1801, 1808, 1808, 1808,
2696       533, 1800, 1809, 1809, 1809,  528, 1809,  526,  525, 1809,
2697      1814, 1814, 1814,  524,  523, 1808, 1815, 1815, 1815, 1818,
2698      1818, 1818,  522, 1818,  521,  517, 1818, 1814, 1814,  516,
2699      1825, 1825, 1825, 1834, 1834, 1834, 1835, 1835, 1835, 1836,
2700
2701      1836, 1836,  515, 1853, 1853, 1853, 1808, 1825, 1837, 1837,
2702      1837, 1834, 1837,  514,  510, 1837, 1836, 1839, 1839, 1839,
2703      1853, 1839,  509,  508, 1839, 1845, 1845, 1845,  507, 1845,
2704       506,  504, 1845,  501, 1849, 1849, 1849,  500, 1849,  498,
2705      1834, 1849, 1854, 1854, 1854,  496, 1854,  491,  488, 1854,
2706      1856, 1856, 1856,  486, 1856,  483,  482, 1856, 1859, 1859,
2707      1859,  480, 1859,  479,  478, 1859, 1868, 1868, 1868, 1870,
2708      1870, 1870, 1871, 1871, 1871, 1872, 1872, 1872,  477, 1872,
2709       476,  473, 1872,  472, 1868,  471, 1870, 1870,  470, 1871,
2710      1871,  469,  463, 1872, 1873, 1873, 1873, 1874, 1874, 1874,
2711
2712      1879, 1879, 1879, 1880, 1880, 1880,  462, 1880,  460,  454,
2713      1880, 1889, 1889, 1889, 1890, 1890, 1890, 1879, 1890,  453,
2714       449, 1890, 1896, 1896, 1896, 1897, 1897, 1897,  445, 1889,
2715      1898, 1898, 1898, 1899, 1899, 1899,  441, 1899,  437, 1896,
2716      1899,  431, 1897, 1902, 1902, 1902,  427, 1898, 1917, 1917,
2717      1917, 1920, 1920, 1920, 1921, 1921, 1921,  423, 1921,  419,
2718      1902, 1921,  418, 1922, 1922, 1922, 1917, 1922, 1920, 1920,
2719      1922,  417, 1921,  416, 1889, 1925, 1925, 1925, 1926, 1926,
2720      1926, 1922, 1923, 1923, 1923, 1923, 1923, 1923, 1923, 1923,
2721      1923,  412,  408, 1923, 1940, 1940, 1940,  405, 1923, 1923,
2722
2723      1923, 1923, 1923, 1931, 1931, 1931,  404, 1931,  403,  399,
2724      1931,  393, 1940,  392,  388,  384,  380,  379,  375, 1944,
2725      1944, 1944, 1946, 1946, 1946, 1923, 1923, 1924, 1924, 1924,
2726      1924, 1924, 1924, 1924, 1924, 1924, 1944,  372, 1924, 1946,
2727       371,  366,  362, 1924, 1924, 1924, 1924, 1924, 1945, 1945,
2728      1945,  354, 1945,  353,  352, 1945, 1947, 1947, 1947,  348,
2729      1947,  342,  341, 1947, 1948, 1948, 1948, 1950, 1950, 1950,
2730      1924, 1924, 1949, 1949, 1949,  337, 1949,  331,  330, 1949,
2731       329, 1948,  328,  327, 1950, 1951, 1951, 1951,  326, 1951,
2732       322,  315, 1951, 1965, 1965, 1965,  313, 1965,  312,  311,
2733
2734      1965,  309,  305, 1980, 1980, 1980, 2015, 2015, 2015,  298,
2735       297, 1965, 1968, 1968, 1968, 1968, 1968, 1968, 1968, 1968,
2736      1968, 1980,  296, 1968, 2015, 2015,  295,  294, 1968, 1968,
2737      1968, 1968, 1968, 1985, 1985, 1985,  290, 1985,  286,  280,
2738      1985, 1988, 1988, 1988,  278, 1988,  273,  272, 1988, 2022,
2739      2022, 2022, 2023, 2023, 2023, 1968, 1968, 1969, 1969, 1969,
2740      1969, 1969, 1969, 1969, 1969, 1969, 2022,  268, 1969, 2023,
2741       262,  261,  260, 1969, 1969, 1969, 1969, 1969, 1991, 1991,
2742      1991,  256, 1991,  248,  246, 1991, 1994, 1994, 1994,  245,
2743      1994,  241,  238, 1994, 2024, 2024, 2024, 2041, 2041, 2041,
2744
2745      1969, 1969, 2045, 2045, 2045, 2048, 2048, 2048, 2050, 2050,
2746      2050, 2024, 2049, 2049, 2049, 2041, 2049,  236,  235, 2049,
2747      2045,  234, 2048,  230,  227, 2050, 2051, 2051, 2051,  226,
2748      2051,  223,  219, 2051,  215, 2052, 2052, 2052, 2053, 2053,
2749      2053,  211, 2053,  210,  209, 2053, 2070, 2070, 2070,  203,
2750       202, 2045, 2052, 2074, 2074, 2074,  200, 2074,  197,  185,
2751      2074, 2077, 2077, 2077, 2070, 2077,    0,    0, 2077, 2080,
2752      2080, 2080,    0, 2080,    0,    0, 2080, 2199, 2199, 2199,
2753         0, 2070, 2210, 2210, 2210,    0, 2210,    0,    0, 2210,
2754      2253, 2253, 2253,    0,    0, 2199, 2254, 2254, 2254,    0,
2755
2756      2210,    0,    0,    0,    0,    0,    0,    0, 2253,    0,
2757         0,    0,    0,    0, 2254, 2257, 2257, 2257, 2257, 2257,
2758      2257, 2257, 2257, 2257, 2258, 2258, 2258, 2258, 2258, 2258,
2759      2258, 2258, 2258, 2259, 2259, 2259, 2259, 2259, 2259, 2259,
2760      2259, 2259, 2260, 2260, 2260, 2260, 2260, 2260, 2260, 2260,
2761      2260, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261, 2261,
2762      2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2262, 2263,
2763      2263, 2263, 2263, 2263, 2263, 2263, 2263, 2263, 2264, 2264,
2764      2264, 2264, 2264, 2264, 2264, 2264, 2264, 2265, 2265, 2265,
2765      2265, 2265, 2265, 2265, 2265, 2265, 2266, 2266, 2266, 2266,
2766
2767      2266, 2266, 2266, 2266, 2266, 2267, 2267, 2267, 2267, 2267,
2768      2267, 2267, 2267, 2267, 2268, 2268, 2268, 2268, 2268, 2268,
2769      2268, 2268, 2268, 2269, 2269, 2269, 2269, 2269, 2269, 2269,
2770      2269, 2269, 2270, 2270, 2270, 2270, 2270, 2270, 2270, 2270,
2771      2270, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271, 2271,
2772      2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2272, 2273,
2773      2273, 2273, 2273, 2273, 2273, 2273, 2273, 2273, 2274, 2274,
2774      2274, 2274, 2274, 2274, 2274, 2274, 2274, 2275, 2275, 2275,
2775      2275, 2275, 2275, 2275, 2275, 2275, 2276, 2276, 2276, 2276,
2776      2276, 2276, 2276, 2276, 2276, 2277, 2277, 2277, 2277, 2277,
2777
2778      2277, 2277, 2277, 2277, 2278, 2278, 2278, 2278, 2278, 2278,
2779      2278, 2278, 2278, 2279, 2279, 2279, 2279, 2279, 2279, 2279,
2780      2279, 2279, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280,
2781      2280, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281, 2281,
2782      2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2282, 2283,
2783      2283, 2283, 2283, 2283, 2283, 2283, 2283, 2283, 2284, 2284,
2784      2284, 2284, 2284, 2284, 2284, 2284, 2284, 2285, 2285, 2285,
2785      2285, 2285, 2285, 2285, 2285, 2285, 2286, 2286, 2286, 2286,
2786      2286, 2286, 2286, 2286, 2286, 2287, 2287, 2287, 2287, 2287,
2787      2287, 2287, 2287, 2287, 2288, 2288, 2288, 2288, 2288, 2288,
2788
2789      2288, 2288, 2288, 2289, 2289, 2289, 2289, 2289, 2289, 2289,
2790      2289, 2289, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290,
2791      2290, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291, 2291,
2792      2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2292, 2293,
2793      2293, 2293, 2293, 2293, 2293, 2293, 2293, 2293, 2294, 2294,
2794      2294, 2294, 2294, 2294, 2294, 2294, 2294, 2295, 2295, 2295,
2795      2295, 2295, 2295, 2295, 2295, 2295, 2296, 2296, 2296, 2296,
2796      2296, 2296, 2296, 2296, 2296, 2297, 2297, 2297, 2297, 2297,
2797      2297, 2297, 2297, 2297, 2298, 2298, 2298,    0,    0,    0,
2798      2298, 2299, 2299, 2299,    0,    0,    0, 2299, 2300, 2300,
2799
2800      2300,    0,    0,    0, 2300, 2301, 2301, 2301,    0,    0,
2801         0, 2301, 2302, 2302, 2302,    0,    0,    0, 2302, 2303,
2802      2303, 2303,    0,    0,    0, 2303, 2304, 2304, 2304,    0,
2803         0,    0, 2304, 2305, 2305, 2305,    0,    0,    0, 2305,
2804      2306, 2306, 2306,    0,    0,    0, 2306, 2307, 2307, 2307,
2805         0,    0,    0, 2307, 2308, 2308, 2308,    0,    0,    0,
2806      2308, 2309, 2309, 2309,    0,    0,    0, 2309, 2310, 2310,
2807      2310,    0,    0,    0, 2310, 2311, 2311, 2311,    0,    0,
2808         0, 2311, 2312, 2312, 2312,    0,    0,    0, 2312, 2313,
2809      2313, 2313,    0,    0,    0, 2313, 2314, 2314, 2314,    0,
2810
2811         0,    0, 2314, 2315, 2315, 2315,    0,    0,    0, 2315,
2812      2316, 2316, 2316, 2316, 2316, 2316, 2316,    0, 2316, 2317,
2813      2317, 2317,    0,    0,    0, 2317, 2318,    0,    0,    0,
2814      2318, 2319, 2319, 2319,    0,    0,    0, 2319, 2320,    0,
2815         0,    0, 2320, 2321, 2321, 2321,    0,    0,    0, 2321,
2816      2322,    0,    0,    0, 2322, 2323, 2323, 2323,    0,    0,
2817         0, 2323, 2324,    0,    0,    0, 2324, 2325, 2325, 2325,
2818         0,    0,    0, 2325, 2326,    0,    0,    0, 2326, 2327,
2819         0,    0,    0, 2327, 2328, 2328, 2328,    0,    0,    0,
2820      2328, 2329,    0,    0,    0, 2329, 2330, 2330, 2330,    0,
2821
2822         0,    0, 2330, 2331,    0,    0,    0, 2331, 2332, 2332,
2823      2332,    0,    0,    0, 2332, 2333,    0,    0,    0, 2333,
2824      2334, 2334, 2334,    0,    0,    0, 2334, 2335,    0,    0,
2825         0, 2335, 2336, 2336, 2336,    0,    0,    0, 2336, 2337,
2826         0,    0,    0, 2337, 2338, 2338, 2338,    0,    0,    0,
2827      2338, 2339,    0,    0,    0, 2339, 2340, 2340, 2340,    0,
2828         0,    0, 2340, 2341,    0,    0,    0, 2341, 2342, 2342,
2829      2342,    0,    0,    0, 2342, 2343,    0,    0,    0, 2343,
2830      2344, 2344, 2344,    0,    0,    0, 2344, 2345,    0,    0,
2831         0, 2345, 2346, 2346, 2346,    0,    0,    0, 2346, 2347,
2832
2833         0,    0,    0, 2347, 2348, 2348, 2348,    0,    0,    0,
2834      2348, 2349,    0,    0,    0, 2349, 2350, 2350, 2350,    0,
2835         0,    0, 2350, 2351,    0,    0,    0, 2351, 2352, 2352,
2836      2352, 2352, 2352, 2352, 2352, 2352, 2352, 2353,    0,    0,
2837         0,    0, 2353, 2354, 2354, 2354,    0,    0,    0, 2354,
2838      2355, 2355, 2355, 2355,    0,    0, 2355, 2355, 2356, 2356,
2839      2356,    0,    0,    0, 2356, 2357, 2357, 2357, 2357,    0,
2840         0, 2357, 2357, 2358, 2358, 2358,    0,    0,    0, 2358,
2841      2359, 2359, 2359, 2359,    0,    0, 2359, 2359, 2360, 2360,
2842      2360,    0,    0,    0, 2360, 2361, 2361, 2361, 2361,    0,
2843
2844         0, 2361, 2361, 2362, 2362, 2362,    0,    0,    0, 2362,
2845      2363, 2363, 2363, 2363,    0,    0, 2363, 2363, 2364, 2364,
2846      2364,    0,    0,    0, 2364, 2365, 2365, 2365, 2365,    0,
2847         0, 2365, 2365, 2366, 2366, 2366,    0,    0,    0, 2366,
2848      2367, 2367, 2367, 2367,    0,    0, 2367, 2367, 2368, 2368,
2849      2368,    0,    0,    0, 2368, 2369, 2369, 2369, 2369,    0,
2850         0, 2369, 2369, 2370, 2370, 2370,    0,    0,    0, 2370,
2851      2371, 2371, 2371, 2371,    0,    0, 2371, 2371, 2372, 2372,
2852      2372,    0,    0,    0, 2372, 2373, 2373, 2373, 2373,    0,
2853         0, 2373, 2373, 2374, 2374, 2374, 2374,    0, 2374,    0,
2854
2855      2374, 2375, 2375, 2375, 2375,    0,    0, 2375, 2375, 2376,
2856      2376, 2376, 2376,    0, 2376,    0, 2376, 2377, 2377, 2377,
2857      2377,    0,    0, 2377, 2377, 2378, 2378, 2378,    0,    0,
2858         0, 2378, 2379, 2379, 2379, 2379,    0,    0, 2379, 2379,
2859      2380, 2380, 2380, 2380,    0, 2380,    0, 2380, 2381, 2381,
2860      2381, 2381,    0,    0, 2381, 2381, 2382, 2382, 2382,    0,
2861         0,    0, 2382, 2383, 2383, 2383, 2383,    0,    0, 2383,
2862      2383, 2384, 2384, 2384,    0,    0,    0, 2384, 2385, 2385,
2863      2385, 2385,    0,    0, 2385, 2385, 2386, 2386, 2386, 2386,
2864         0,    0, 2386, 2386, 2387, 2387, 2387,    0,    0,    0,
2865
2866      2387, 2388, 2388, 2388, 2388,    0,    0, 2388, 2388, 2389,
2867      2389, 2389, 2389, 2389, 2389, 2389, 2389, 2389, 2390,    0,
2868      2390,    0,    0, 2390, 2391, 2391, 2391,    0,    0,    0,
2869      2391, 2392, 2392, 2392, 2392,    0,    0, 2392, 2392, 2393,
2870      2393, 2393, 2393,    0, 2393,    0, 2393, 2394, 2394, 2394,
2871      2394,    0,    0, 2394, 2394, 2395, 2395, 2395,    0,    0,
2872         0, 2395, 2396, 2396, 2396, 2396,    0,    0, 2396, 2396,
2873      2397, 2397, 2397,    0,    0,    0, 2397, 2398, 2398, 2398,
2874      2398,    0,    0, 2398, 2398, 2399, 2399, 2399,    0,    0,
2875         0, 2399, 2400, 2400, 2400, 2400,    0,    0, 2400, 2400,
2876
2877      2401, 2401, 2401,    0,    0,    0, 2401, 2402, 2402, 2402,
2878      2402,    0,    0, 2402, 2402, 2403, 2403, 2403,    0,    0,
2879         0, 2403, 2404, 2404, 2404, 2404,    0,    0, 2404, 2404,
2880      2405, 2405, 2405,    0,    0,    0, 2405, 2406, 2406, 2406,
2881      2406,    0,    0, 2406, 2406, 2407, 2407, 2407,    0,    0,
2882         0, 2407, 2408, 2408, 2408, 2408,    0,    0, 2408, 2408,
2883      2409, 2409, 2409,    0,    0,    0, 2409, 2410, 2410, 2410,
2884      2410,    0,    0, 2410, 2410, 2411, 2411, 2411,    0,    0,
2885         0, 2411, 2412, 2412, 2412, 2412,    0,    0, 2412, 2412,
2886      2413, 2413, 2413,    0,    0,    0, 2413, 2414, 2414, 2414,
2887
2888      2414,    0,    0, 2414, 2414, 2415, 2415, 2415,    0,    0,
2889         0, 2415, 2416, 2416, 2416, 2416,    0,    0, 2416, 2416,
2890      2417, 2417, 2417,    0,    0,    0, 2417, 2418, 2418, 2418,
2891      2418,    0,    0, 2418, 2418, 2419, 2419, 2419,    0,    0,
2892         0, 2419, 2420, 2420, 2420, 2420,    0,    0, 2420, 2420,
2893      2421, 2421, 2421,    0,    0,    0, 2421, 2422, 2422, 2422,
2894      2422,    0,    0, 2422, 2422, 2423, 2423, 2423, 2423,    0,
2895         0, 2423, 2423, 2424, 2424, 2424,    0,    0,    0, 2424,
2896      2425, 2425, 2425, 2425,    0,    0, 2425, 2425, 2426, 2426,
2897      2426, 2426, 2426, 2426, 2426, 2426, 2426, 2427, 2427, 2427,
2898
2899      2427, 2427, 2427, 2427, 2427, 2427, 2428, 2428, 2428,    0,
2900         0,    0, 2428, 2429, 2429, 2429, 2429,    0,    0, 2429,
2901      2429, 2430, 2430, 2430,    0,    0,    0, 2430, 2431, 2431,
2902      2431, 2431,    0,    0, 2431, 2431, 2432, 2432, 2432,    0,
2903         0,    0, 2432, 2433, 2433, 2433, 2433,    0,    0, 2433,
2904      2433, 2434, 2434, 2434,    0,    0,    0, 2434, 2435, 2435,
2905      2435, 2435,    0,    0, 2435, 2435, 2436, 2436, 2436,    0,
2906         0,    0, 2436, 2437, 2437, 2437,    0,    0,    0, 2437,
2907      2438, 2438, 2438, 2438,    0,    0, 2438, 2438, 2439, 2439,
2908      2439,    0,    0,    0, 2439, 2440, 2440, 2440, 2440,    0,
2909
2910         0, 2440, 2440, 2441, 2441, 2441, 2441,    0, 2441,    0,
2911      2441, 2442, 2442, 2442, 2442,    0,    0, 2442, 2442, 2443,
2912      2443, 2443,    0,    0,    0, 2443, 2444, 2444, 2444, 2444,
2913         0,    0, 2444, 2444, 2445, 2445, 2445,    0,    0,    0,
2914      2445, 2446, 2446, 2446, 2446,    0,    0, 2446, 2446, 2447,
2915      2447, 2447,    0,    0,    0, 2447, 2448, 2448, 2448, 2448,
2916         0,    0, 2448, 2448, 2449, 2449, 2449,    0,    0,    0,
2917      2449, 2450, 2450, 2450, 2450,    0,    0, 2450, 2450, 2451,
2918      2451, 2451,    0,    0,    0, 2451, 2452, 2452, 2452, 2452,
2919         0,    0, 2452, 2452, 2453, 2453, 2453,    0,    0,    0,
2920
2921      2453, 2454, 2454, 2454, 2454,    0,    0, 2454, 2454, 2455,
2922      2455, 2455,    0,    0,    0, 2455, 2456, 2456, 2456, 2456,
2923         0,    0, 2456, 2456, 2457, 2457, 2457, 2457,    0, 2457,
2924         0, 2457, 2458, 2458, 2458, 2458,    0,    0, 2458, 2458,
2925      2459, 2459, 2459, 2459,    0,    0, 2459, 2459, 2460, 2460,
2926      2460, 2460,    0, 2460,    0, 2460, 2461, 2461, 2461, 2461,
2927         0,    0, 2461, 2461, 2462, 2462, 2462, 2462, 2462, 2462,
2928      2462, 2462, 2462, 2463, 2463, 2463, 2463, 2463, 2463, 2463,
2929      2463, 2463, 2464, 2464, 2464,    0,    0,    0, 2464, 2465,
2930      2465, 2465, 2465,    0,    0, 2465, 2465, 2466, 2466, 2466,
2931
2932         0,    0,    0, 2466, 2467, 2467, 2467, 2467,    0,    0,
2933      2467, 2467, 2468, 2468, 2468,    0,    0,    0, 2468, 2469,
2934      2469, 2469, 2469,    0,    0, 2469, 2469, 2470, 2470, 2470,
2935         0,    0,    0, 2470, 2471, 2471, 2471, 2471,    0,    0,
2936      2471, 2471, 2472, 2472, 2472,    0,    0,    0, 2472, 2473,
2937      2473, 2473,    0,    0,    0, 2473, 2474, 2474, 2474, 2474,
2938         0,    0, 2474, 2474, 2475, 2475, 2475,    0,    0,    0,
2939      2475, 2476, 2476, 2476, 2476,    0,    0, 2476, 2476, 2477,
2940      2477, 2477, 2477,    0, 2477,    0, 2477, 2478, 2478, 2478,
2941      2478,    0,    0, 2478, 2478, 2479, 2479, 2479,    0,    0,
2942
2943         0, 2479, 2480, 2480, 2480, 2480,    0,    0, 2480, 2480,
2944      2481, 2481, 2481,    0,    0,    0, 2481, 2482, 2482, 2482,
2945      2482,    0,    0, 2482, 2482, 2483, 2483, 2483,    0,    0,
2946         0, 2483, 2484, 2484, 2484, 2484,    0,    0, 2484, 2484,
2947      2485, 2485, 2485, 2485,    0, 2485,    0, 2485, 2486, 2486,
2948      2486, 2486,    0,    0, 2486, 2486, 2487, 2487, 2487,    0,
2949         0,    0, 2487, 2488, 2488, 2488, 2488,    0,    0, 2488,
2950      2488, 2489, 2489, 2489, 2489,    0, 2489,    0, 2489, 2490,
2951      2490, 2490, 2490,    0,    0, 2490, 2490, 2491, 2491, 2491,
2952         0,    0,    0, 2491, 2492, 2492, 2492, 2492,    0,    0,
2953
2954      2492, 2492, 2493, 2493, 2493, 2493,    0,    0, 2493, 2493,
2955      2494, 2494, 2494, 2494,    0,    0, 2494, 2494, 2495, 2495,
2956      2495, 2495,    0,    0, 2495, 2495, 2496, 2496, 2496, 2496,
2957      2496, 2496, 2496, 2496, 2496, 2497, 2497, 2497, 2497, 2497,
2958      2497, 2497, 2497, 2497, 2498, 2498, 2498, 2498,    0, 2498,
2959         0, 2498, 2499, 2499, 2499, 2499,    0,    0, 2499, 2499,
2960      2500, 2500, 2500,    0,    0,    0, 2500, 2501, 2501, 2501,
2961      2501,    0,    0, 2501, 2501, 2502, 2502, 2502,    0,    0,
2962         0, 2502, 2503, 2503, 2503, 2503,    0,    0, 2503, 2503,
2963      2504, 2504, 2504, 2504,    0, 2504,    0, 2504, 2505, 2505,
2964
2965      2505, 2505,    0,    0, 2505, 2505, 2506, 2506, 2506, 2506,
2966         0, 2506,    0, 2506, 2507, 2507, 2507,    0,    0,    0,
2967      2507, 2508, 2508, 2508,    0,    0,    0, 2508, 2509, 2509,
2968      2509, 2509,    0,    0, 2509, 2509, 2510, 2510, 2510,    0,
2969         0,    0, 2510, 2511, 2511, 2511,    0,    0,    0, 2511,
2970      2512, 2512, 2512, 2512,    0,    0, 2512, 2512, 2513, 2513,
2971      2513,    0,    0,    0, 2513, 2514, 2514, 2514,    0,    0,
2972         0, 2514, 2515, 2515, 2515, 2515,    0,    0, 2515, 2515,
2973      2516, 2516, 2516,    0,    0,    0, 2516, 2517, 2517, 2517,
2974      2517,    0,    0, 2517, 2517, 2518, 2518, 2518,    0,    0,
2975
2976         0, 2518, 2519, 2519, 2519, 2519,    0,    0, 2519, 2519,
2977      2520, 2520, 2520, 2520,    0,    0, 2520, 2520, 2521, 2521,
2978      2521,    0,    0,    0, 2521, 2522, 2522, 2522, 2522,    0,
2979         0, 2522, 2522, 2523, 2523, 2523, 2523,    0,    0, 2523,
2980      2523, 2524, 2524, 2524, 2524,    0,    0, 2524, 2524, 2525,
2981      2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2526, 2526,
2982      2526, 2526, 2526, 2526, 2526, 2526, 2526, 2527, 2527, 2527,
2983      2527, 2527, 2527, 2527, 2527, 2527, 2528, 2528, 2528, 2528,
2984      2528, 2528, 2528, 2528, 2528, 2529, 2529, 2529, 2529, 2529,
2985      2529, 2529, 2529, 2529, 2530, 2530, 2530, 2530, 2530, 2530,
2986
2987      2530, 2530, 2530, 2531, 2531, 2531, 2531, 2531, 2531, 2531,
2988      2531, 2531, 2532, 2532, 2532, 2532, 2532, 2532, 2532, 2532,
2989      2532, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2990      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2991      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2992      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2993      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2994      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2995      2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256, 2256,
2996      2256, 2256
2997
2998     } ;
2999
3000 /* Table of booleans, true if rule could match eol. */
3001 static yyconst flex_int32_t yy_rule_can_match_eol[385] =
3002     {   0,
3003 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
3004     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
3005     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
3006     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3007     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
3008     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3009     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3010     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3011     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3012     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
3013     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3014     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
3015     1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 
3016     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
3017     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
3018     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
3019     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
3020     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
3021     1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
3022     0, 0, 0, 1, 0,     };
3023
3024 static yy_state_type yy_last_accepting_state;
3025 static char *yy_last_accepting_cpos;
3026
3027 extern int surf_parse__flex_debug;
3028 int surf_parse__flex_debug = 0;
3029
3030 /* The intent behind this definition is that it'll catch
3031  * any uses of REJECT which flex missed.
3032  */
3033 #define REJECT reject_used_but_not_detected
3034 #define yymore() yymore_used_but_not_detected
3035 #define YY_MORE_ADJ 0
3036 #define YY_RESTORE_YY_MORE_OFFSET
3037 char *surf_parse_text;
3038 /* Validating XML processor for src/surf/simgrid.dtd.
3039  * Generated 2010/12/08 13:38:12.
3040  *
3041  * This program was generated with the FleXML XML processor generator.
3042  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
3043  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
3044  * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
3045  * 
3046  * There are two, intertwined parts to this program, part A and part B.
3047  *
3048  * Part A
3049  * ------
3050  * 
3051  * Some parts, here collectively called "Part A", are found in the 
3052  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
3053  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
3054  *
3055  * You can redistribute, use, perform, display and/or modify "Part A"
3056  * provided the following two conditions hold:
3057  *
3058  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
3059  *    FleXML; without even the implied warranty of MERCHANTABILITY or
3060  *    FITNESS FOR A PARTICULAR PURPOSE.
3061  *
3062  * 2. The program distribution conditions do not in any way affect the
3063  *    distribution conditions of the FleXML system used to generate this
3064  *    file or any version of FleXML derived from that system.
3065  *
3066  * Notice that these are explicit rights granted to you for files
3067  * generated by the FleXML system.  For your rights in connection with
3068  * the FleXML system itself please consult the GNU General Public License.
3069  * 
3070  * Part B
3071  * ------
3072  * 
3073  * The other parts, here collectively called "Part B", and which came 
3074  * from the DTD used by FleXML to generate this program, can be 
3075  * distributed (or not, as the case may be) under the terms of whoever
3076  * wrote them, provided these terms respect and obey the two conditions 
3077  * above under the heading "Part A".
3078  *
3079  * The author of and contributors to FleXML specifically disclaim
3080  * any copyright interest in "Part B", unless "Part B" was written 
3081  * by the author of or contributors to FleXML.
3082  * 
3083  */
3084
3085 /* Version strings. */
3086 const char rcs_surfxml_flexml_skeleton[] =
3087  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
3088 const char rcs_surfxml_flexml[] =
3089  "$" "Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp $";
3090
3091 /* ANSI headers. */
3092 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
3093 #include <stdio.h>
3094 #include <string.h>
3095 #include <assert.h>
3096 #include <stdarg.h>
3097 #include <ctype.h>
3098      
3099 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3100 # ifndef __STRICT_ANSI__
3101 #  include <io.h>
3102 #  include <process.h>
3103 # endif
3104 #else
3105 # include <unistd.h>
3106 #endif
3107      
3108 #ifndef FLEXML_INDEXSTACKSIZE
3109 #define FLEXML_INDEXSTACKSIZE 1000
3110 #endif
3111
3112 /* Generated definitions. */
3113 #define FLEXML_yylineno
3114 #ifndef FLEXML_BUFFERSTACKSIZE
3115 #define FLEXML_BUFFERSTACKSIZE 1000000
3116 #endif
3117 #define FLEXML_NEED_BUFFERLIT
3118
3119 /* XML processor api. */
3120 /* FleXML-provided data. */
3121 int surfxml_pcdata_ix;
3122 extern char *surfxml_bufferstack;
3123 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
3124 AT_surfxml_random_generator AX_surfxml_random_generator;
3125 #define A_surfxml_random_generator AX_surfxml_random_generator
3126 AT_surfxml_ASroute_gw_dst AX_surfxml_ASroute_gw_dst;
3127 #define A_surfxml_ASroute_gw_dst (surfxml_bufferstack + AX_surfxml_ASroute_gw_dst)
3128 AT_surfxml_trace_connect_element AX_surfxml_trace_connect_element;
3129 #define A_surfxml_trace_connect_element (surfxml_bufferstack + AX_surfxml_trace_connect_element)
3130 AT_surfxml_prop_id AX_surfxml_prop_id;
3131 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
3132 AT_surfxml_host_id AX_surfxml_host_id;
3133 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
3134 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
3135 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
3136 AT_surfxml_peer_lat AX_surfxml_peer_lat;
3137 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
3138 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
3139 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
3140 AT_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction;
3141 #define A_surfxml_link_ctn_direction AX_surfxml_link_ctn_direction
3142 AT_surfxml_host_state AX_surfxml_host_state;
3143 #define A_surfxml_host_state AX_surfxml_host_state
3144 AT_surfxml_AS_id AX_surfxml_AS_id;
3145 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
3146 AT_surfxml_host_power AX_surfxml_host_power;
3147 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
3148 AT_surfxml_router_id AX_surfxml_router_id;
3149 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
3150 AT_surfxml_process_start_time AX_surfxml_process_start_time;
3151 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
3152 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
3153 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
3154 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
3155 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
3156 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
3157 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
3158 AT_surfxml_trace_file AX_surfxml_trace_file;
3159 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
3160 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
3161 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
3162 AT_surfxml_random_min AX_surfxml_random_min;
3163 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
3164 AT_surfxml_link_ctn_id AX_surfxml_link_ctn_id;
3165 #define A_surfxml_link_ctn_id (surfxml_bufferstack + AX_surfxml_link_ctn_id)
3166 AT_surfxml_peer_bw_out AX_surfxml_peer_bw_out;
3167 #define A_surfxml_peer_bw_out (surfxml_bufferstack + AX_surfxml_peer_bw_out)
3168 AT_surfxml_cluster_availability_file AX_surfxml_cluster_availability_file;
3169 #define A_surfxml_cluster_availability_file (surfxml_bufferstack + AX_surfxml_cluster_availability_file)
3170 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
3171 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
3172 AT_surfxml_cluster_bb_bw AX_surfxml_cluster_bb_bw;
3173 #define A_surfxml_cluster_bb_bw (surfxml_bufferstack + AX_surfxml_cluster_bb_bw)
3174 AT_surfxml_argument_value AX_surfxml_argument_value;
3175 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
3176 AT_surfxml_link_state AX_surfxml_link_state;
3177 #define A_surfxml_link_state AX_surfxml_link_state
3178 AT_surfxml_ASroute_gw_src AX_surfxml_ASroute_gw_src;
3179 #define A_surfxml_ASroute_gw_src (surfxml_bufferstack + AX_surfxml_ASroute_gw_src)
3180 AT_surfxml_AS_routing AX_surfxml_AS_routing;
3181 #define A_surfxml_AS_routing (surfxml_bufferstack + AX_surfxml_AS_routing)
3182 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
3183 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
3184 AT_surfxml_cluster_id AX_surfxml_cluster_id;
3185 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
3186 AT_surfxml_peer_bw_in AX_surfxml_peer_bw_in;
3187 #define A_surfxml_peer_bw_in (surfxml_bufferstack + AX_surfxml_peer_bw_in)
3188 AT_surfxml_random_mean AX_surfxml_random_mean;
3189 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
3190 AT_surfxml_cluster_bb_lat AX_surfxml_cluster_bb_lat;
3191 #define A_surfxml_cluster_bb_lat (surfxml_bufferstack + AX_surfxml_cluster_bb_lat)
3192 AT_surfxml_link_latency AX_surfxml_link_latency;
3193 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
3194 AT_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind;
3195 #define A_surfxml_trace_connect_kind AX_surfxml_trace_connect_kind
3196 AT_surfxml_cluster_state_file AX_surfxml_cluster_state_file;
3197 #define A_surfxml_cluster_state_file (surfxml_bufferstack + AX_surfxml_cluster_state_file)
3198 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
3199 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
3200 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
3201 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
3202 AT_surfxml_random_id AX_surfxml_random_id;
3203 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
3204 AT_surfxml_random_max AX_surfxml_random_max;
3205 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
3206 AT_surfxml_link_id AX_surfxml_link_id;
3207 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
3208 AT_surfxml_process_host AX_surfxml_process_host;
3209 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
3210 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
3211 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
3212 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
3213 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
3214 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
3215 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
3216 AT_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy;
3217 #define A_surfxml_cluster_bb_sharing_policy AX_surfxml_cluster_bb_sharing_policy
3218 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
3219 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
3220 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
3221 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
3222 AT_surfxml_prop_value AX_surfxml_prop_value;
3223 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
3224 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
3225 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
3226 AT_surfxml_link_state_file AX_surfxml_link_state_file;
3227 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
3228 AT_surfxml_trace_connect_trace AX_surfxml_trace_connect_trace;
3229 #define A_surfxml_trace_connect_trace (surfxml_bufferstack + AX_surfxml_trace_connect_trace)
3230 AT_surfxml_cluster_power AX_surfxml_cluster_power;
3231 #define A_surfxml_cluster_power (surfxml_bufferstack + AX_surfxml_cluster_power)
3232 AT_surfxml_process_function AX_surfxml_process_function;
3233 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
3234 AT_surfxml_peer_id AX_surfxml_peer_id;
3235 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
3236 AT_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy;
3237 #define A_surfxml_cluster_sharing_policy AX_surfxml_cluster_sharing_policy
3238 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
3239 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
3240 AT_surfxml_host_core AX_surfxml_host_core;
3241 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
3242 AT_surfxml_host_availability AX_surfxml_host_availability;
3243 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
3244 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
3245 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
3246 AT_surfxml_route_src AX_surfxml_route_src;
3247 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
3248 AT_surfxml_bypassRoute_gw_dst AX_surfxml_bypassRoute_gw_dst;
3249 #define A_surfxml_bypassRoute_gw_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_dst)
3250 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
3251 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
3252 AT_surfxml_trace_id AX_surfxml_trace_id;
3253 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
3254 AT_surfxml_peer_sharing_policy AX_surfxml_peer_sharing_policy;
3255 #define A_surfxml_peer_sharing_policy AX_surfxml_peer_sharing_policy
3256 AT_surfxml_peer_power AX_surfxml_peer_power;
3257 #define A_surfxml_peer_power (surfxml_bufferstack + AX_surfxml_peer_power)
3258 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
3259 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
3260 AT_surfxml_config_id AX_surfxml_config_id;
3261 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
3262 AT_surfxml_bypassRoute_gw_src AX_surfxml_bypassRoute_gw_src;
3263 #define A_surfxml_bypassRoute_gw_src (surfxml_bufferstack + AX_surfxml_bypassRoute_gw_src)
3264 AT_surfxml_cluster_core AX_surfxml_cluster_core;
3265 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
3266 AT_surfxml_random_std_deviation AX_surfxml_random_std_deviation;
3267 #define A_surfxml_random_std_deviation (surfxml_bufferstack + AX_surfxml_random_std_deviation)
3268 AT_surfxml_host_state_file AX_surfxml_host_state_file;
3269 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
3270 AT_surfxml_route_dst AX_surfxml_route_dst;
3271 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
3272 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
3273 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
3274 AT_surfxml_platform_version AX_surfxml_platform_version;
3275 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
3276
3277 /* XML state. */
3278 #ifdef FLEX_DEBUG
3279 # define ENTER(state)   debug_enter(state,#state)
3280 # define LEAVE          debug_leave()
3281 # define SET(state)     debug_set(state,#state)
3282   static void debug_enter(int, const char*);
3283   static void debug_leave(void);
3284   static void debug_set(int, const char*);
3285 #else
3286 # define ENTER(state)   (yy_push_state(state))
3287 # define LEAVE          (yy_pop_state())
3288 # define SET(state)     BEGIN(state)
3289 #endif
3290
3291 /* Generic actions. */
3292 #define SKIP    /*skip*/
3293 #define SUCCEED        CLEANUP; return 0
3294
3295 #define FAIL    return fail
3296 static int fail(const char*, ...);
3297
3298 enum {flexml_max_err_msg_size = 512};
3299 static char flexml_err_msg[flexml_max_err_msg_size];
3300 const char * surfxml_parse_err_msg()
3301 {
3302     return flexml_err_msg;
3303 }
3304 static void reset_surfxml_parse_err_msg()
3305 {
3306     flexml_err_msg[0] = '\0';
3307 }
3308
3309 /* Cleanup */
3310 static void cleanup(void);
3311 #define CLEANUP  cleanup()
3312
3313 /* Text buffer stack handling. */
3314 char *surfxml_bufferstack = NULL;
3315 static int blimit = FLEXML_BUFFERSTACKSIZE;
3316 static int bnext = 1;
3317
3318 static int *indexstack = NULL;
3319 static int ilimit = FLEXML_INDEXSTACKSIZE;
3320 static int inext = 1;
3321
3322 #define BUFFERSET(P)  (P = bnext)
3323 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
3324 #define BUFFERDONE    (BUFFERPUTC('\0'))
3325
3326 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
3327
3328 /* after this is called, there are at least 2 slots left in the stack */
3329 static int ck_blimit()
3330 {
3331      if (bnext >= blimit) {
3332          blimit += FLEXML_BUFFERSTACKSIZE + 2;
3333          {
3334              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
3335              assert(temp);
3336              surfxml_bufferstack = temp;
3337          }
3338      }
3339      return 0;
3340 }
3341
3342 /* after this is called, there are at least 2 slots left in the stack */
3343 static int ck_ilimit()
3344 {
3345      if (inext >= ilimit) {
3346          ilimit += FLEXML_INDEXSTACKSIZE + 2;
3347          {
3348              int *temp = (int *) realloc(indexstack, ilimit);
3349              assert(temp);
3350              indexstack = temp;
3351          }
3352      }
3353      return 0;
3354 }
3355
3356 #ifdef FLEXML_NEED_BUFFERLIT
3357 static void surfxml_bufferliteral(char c, int* pp, const char* text)
3358 {
3359   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
3360   assert(s <= e); BUFFERSET(*pp);
3361   while (++s<e) {
3362     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
3363     else BUFFERPUTC(*s);
3364   }
3365   BUFFERDONE;
3366 }
3367 #endif
3368
3369 static void pushbuffer(int p)
3370 {
3371     ck_ilimit();
3372     indexstack[inext++] = p;
3373     indexstack[inext++] = bnext;    
3374 }
3375
3376 static int popbuffer(void)
3377 {
3378     assert(inext >= 2);
3379     bnext = indexstack[--inext];
3380     return indexstack[--inext];
3381 }
3382
3383 /* General internal entities are `unput' back onto the input stream... */
3384 #define ENTITYTEXT(T) \
3385   { char *s = (T), *e = s+strlen(s);\
3386     while (--e >= s) { unput(*e); }}
3387
3388 /* Flex standard options. */
3389 #define YY_NO_INPUT 1
3390 /* Flex user-requested options. */
3391 /* XML character classes (currently restricted to ASCII). */
3392 /* "Common syntactic structures." */
3393 /* "Names and Tokens." */
3394 /* Miscellaneous. */
3395 /* Parser states (flex `exclusive start conditions'):
3396  *
3397  * PROLOG       the XML prolog of the document before <?xml...>
3398  * DOCTYPE      the XML prolog of the document after <?xml...>
3399  * EPILOG       after the root element
3400  * INCOMMENT    inside an XML comment <!--....-->
3401  * INPI         inside an XML PI <?...?>
3402  * VALUE1       inside a '...'-delimited literal
3403  * VALUE2       inside a "..."-delimited literal
3404  * CDATA        inside a <![CDATA[...] ]> section.
3405  * ROOT_<tag>   expect root element <tag>
3406  * AL_<tag>     inside the attribute list for <tag>
3407  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
3408  * IMPOSSIBLE   dummy to permit disabling rules; must be last
3409  */
3410
3411 /* State names. */
3412 const char* *surfxml_statenames=NULL;
3413
3414 #define INITIAL 0
3415 #define PROLOG 1
3416 #define DOCTYPE 2
3417 #define EPILOG 3
3418 #define INCOMMENT 4
3419 #define INPI 5
3420 #define VALUE1 6
3421 #define VALUE2 7
3422 #define CDATA 8
3423 #define ROOT_surfxml_platform 9
3424 #define AL_surfxml_platform 10
3425 #define S_surfxml_platform 11
3426 #define S_surfxml_platform_1 12
3427 #define S_surfxml_platform_2 13
3428 #define S_surfxml_platform_3 14
3429 #define S_surfxml_platform_4 15
3430 #define S_surfxml_platform_5 16
3431 #define S_surfxml_platform_6 17
3432 #define E_surfxml_platform 18
3433 #define AL_surfxml_trace 19
3434 #define IN_trace 20
3435 #define AL_surfxml_random 21
3436 #define S_surfxml_random 22
3437 #define S_surfxml_random_1 23
3438 #define S_surfxml_random_2 24
3439 #define E_surfxml_random 25
3440 #define AL_surfxml_trace_connect 26
3441 #define E_surfxml_trace_connect 27
3442 #define AL_surfxml_AS 28
3443 #define S_surfxml_AS 29
3444 #define S_surfxml_AS_1 30
3445 #define S_surfxml_AS_2 31
3446 #define S_surfxml_AS_3 32
3447 #define S_surfxml_AS_4 33
3448 #define S_surfxml_AS_5 34
3449 #define S_surfxml_AS_6 35
3450 #define S_surfxml_AS_7 36
3451 #define S_surfxml_AS_8 37
3452 #define S_surfxml_AS_9 38
3453 #define S_surfxml_AS_10 39
3454 #define S_surfxml_AS_11 40
3455 #define S_surfxml_AS_12 41
3456 #define S_surfxml_AS_13 42
3457 #define E_surfxml_AS 43
3458 #define AL_surfxml_host 44
3459 #define S_surfxml_host 45
3460 #define S_surfxml_host_1 46
3461 #define S_surfxml_host_2 47
3462 #define E_surfxml_host 48
3463 #define AL_surfxml_cluster 49
3464 #define E_surfxml_cluster 50
3465 #define AL_surfxml_peer 51
3466 #define E_surfxml_peer 52
3467 #define AL_surfxml_router 53
3468 #define E_surfxml_router 54
3469 #define AL_surfxml_link 55
3470 #define S_surfxml_link 56
3471 #define S_surfxml_link_1 57
3472 #define S_surfxml_link_2 58
3473 #define E_surfxml_link 59
3474 #define AL_surfxml_route 60
3475 #define S_surfxml_route 61
3476 #define S_surfxml_route_1 62
3477 #define S_surfxml_route_2 63
3478 #define E_surfxml_route 64
3479 #define AL_surfxml_ASroute 65
3480 #define S_surfxml_ASroute 66
3481 #define S_surfxml_ASroute_1 67
3482 #define S_surfxml_ASroute_2 68
3483 #define E_surfxml_ASroute 69
3484 #define AL_surfxml_link_ctn 70
3485 #define E_surfxml_link_ctn 71
3486 #define AL_surfxml_bypassRoute 72
3487 #define S_surfxml_bypassRoute 73
3488 #define S_surfxml_bypassRoute_1 74
3489 #define S_surfxml_bypassRoute_2 75
3490 #define E_surfxml_bypassRoute 76
3491 #define AL_surfxml_process 77
3492 #define S_surfxml_process 78
3493 #define S_surfxml_process_1 79
3494 #define S_surfxml_process_2 80
3495 #define E_surfxml_process 81
3496 #define AL_surfxml_argument 82
3497 #define E_surfxml_argument 83
3498 #define AL_surfxml_config 84
3499 #define S_surfxml_config 85
3500 #define S_surfxml_config_1 86
3501 #define S_surfxml_config_2 87
3502 #define E_surfxml_config 88
3503 #define AL_surfxml_prop 89
3504 #define E_surfxml_prop 90
3505 #define IMPOSSIBLE 91
3506
3507 #ifndef YY_NO_UNISTD_H
3508 /* Special case for "unistd.h", since it is non-ANSI. We include it way
3509  * down here because we want the user's section 1 to have been scanned first.
3510  * The user has a chance to override it with an option.
3511  */
3512 #if defined(_XBT_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
3513 #  ifndef __STRICT_ANSI__
3514 #    include <io.h>
3515 #    include <process.h>
3516 #  endif
3517 #else
3518 #  include <unistd.h>
3519 #endif
3520 #endif
3521
3522 #ifndef YY_EXTRA_TYPE
3523 #define YY_EXTRA_TYPE void *
3524 #endif
3525
3526 static int yy_init_globals (void );
3527
3528 /* Accessor methods to globals.
3529    These are made visible to non-reentrant scanners for convenience. */
3530
3531 int surf_parse_lex_destroy (void );
3532
3533 int surf_parse_get_debug (void );
3534
3535 void surf_parse_set_debug (int debug_flag  );
3536
3537 YY_EXTRA_TYPE surf_parse_get_extra (void );
3538
3539 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
3540
3541 FILE *surf_parse_get_in (void );
3542
3543 void surf_parse_set_in  (FILE * in_str  );
3544
3545 FILE *surf_parse_get_out (void );
3546
3547 void surf_parse_set_out  (FILE * out_str  );
3548
3549 int surf_parse_get_leng (void );
3550
3551 char *surf_parse_get_text (void );
3552
3553 int surf_parse_get_lineno (void );
3554
3555 void surf_parse_set_lineno (int line_number  );
3556
3557 /* Macros after this point can all be overridden by user definitions in
3558  * section 1.
3559  */
3560
3561 #ifndef YY_SKIP_YYWRAP
3562 #ifdef __cplusplus
3563 extern "C" int surf_parse_wrap (void );
3564 #else
3565 extern int surf_parse_wrap (void );
3566 #endif
3567 #endif
3568
3569 #ifndef yytext_ptr
3570 static void yy_flex_strncpy (char *,yyconst char *,int );
3571 #endif
3572
3573 #ifdef YY_NEED_STRLEN
3574 static int yy_flex_strlen (yyconst char * );
3575 #endif
3576
3577 #ifndef YY_NO_INPUT
3578
3579 #ifdef __cplusplus
3580 static int yyinput (void );
3581 #else
3582 static int input (void );
3583 #endif
3584
3585 #endif
3586
3587         static int yy_start_stack_ptr = 0;
3588         static int yy_start_stack_depth = 0;
3589         static int *yy_start_stack = NULL;
3590     
3591     static void yy_push_state (int new_state );
3592     
3593     static void yy_pop_state (void );
3594     
3595 /* Amount of stuff to slurp up with each read. */
3596 #ifndef YY_READ_BUF_SIZE
3597 #ifdef __ia64__
3598 /* On IA-64, the buffer size is 16k, not 8k */
3599 #define YY_READ_BUF_SIZE 16384
3600 #else
3601 #define YY_READ_BUF_SIZE 8192
3602 #endif /* __ia64__ */
3603 #endif
3604
3605 /* Copy whatever the last rule matched to the standard output. */
3606 #ifndef ECHO
3607 /* This used to be an fputs(), but since the string might contain NUL's,
3608  * we now use fwrite().
3609  */
3610 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
3611 #endif
3612
3613 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3614  * is returned in "result".
3615  */
3616 #ifndef YY_INPUT
3617 #define YY_INPUT(buf,result,max_size) \
3618         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3619                 { \
3620                 int c = '*'; \
3621                 size_t n; \
3622                 for ( n = 0; n < max_size && \
3623                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
3624                         buf[n] = (char) c; \
3625                 if ( c == '\n' ) \
3626                         buf[n++] = (char) c; \
3627                 if ( c == EOF && ferror( surf_parse_in ) ) \
3628                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
3629                 result = n; \
3630                 } \
3631         else \
3632                 { \
3633                 errno=0; \
3634                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
3635                         { \
3636                         if( errno != EINTR) \
3637                                 { \
3638                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3639                                 break; \
3640                                 } \
3641                         errno=0; \
3642                         clearerr(surf_parse_in); \
3643                         } \
3644                 }\
3645 \
3646
3647 #endif
3648
3649 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3650  * we don't want an extra ';' after the "return" because that will cause
3651  * some compilers to complain about unreachable statements.
3652  */
3653 #ifndef yyterminate
3654 #define yyterminate() return YY_NULL
3655 #endif
3656
3657 /* Number of entries by which start-condition stack grows. */
3658 #ifndef YY_START_STACK_INCR
3659 #define YY_START_STACK_INCR 25
3660 #endif
3661
3662 /* Report a fatal error. */
3663 #ifndef YY_FATAL_ERROR
3664 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3665 #endif
3666
3667 /* end tables serialization structures and prototypes */
3668
3669 /* Default declaration of generated scanner - a define so the user can
3670  * easily add parameters.
3671  */
3672 #ifndef YY_DECL
3673 #define YY_DECL_IS_OURS 1
3674
3675 extern int surf_parse_lex (void);
3676
3677 #define YY_DECL int surf_parse_lex (void)
3678 #endif /* !YY_DECL */
3679
3680 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
3681  * have been set up.
3682  */
3683 #ifndef YY_USER_ACTION
3684 #define YY_USER_ACTION
3685 #endif
3686
3687 /* Code executed at the end of each rule. */
3688 #ifndef YY_BREAK
3689 #define YY_BREAK break;
3690 #endif
3691
3692 #define YY_RULE_SETUP \
3693         YY_USER_ACTION
3694
3695 /** The main scanner function which does all the work.
3696  */
3697 YY_DECL
3698 {
3699         register yy_state_type yy_current_state;
3700         register char *yy_cp, *yy_bp;
3701         register int yy_act;
3702     
3703  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
3704  SET(PROLOG);
3705  reset_surfxml_parse_err_msg();
3706  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
3707  assert(surfxml_bufferstack);
3708  #ifdef FLEX_DEBUG
3709  {
3710      int i;
3711      for (i = 0; i < blimit; i++) {
3712          surfxml_bufferstack[i] = '\377';
3713      }
3714  }
3715  #endif
3716  surfxml_bufferstack[0] = '\0';
3717  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
3718  assert(indexstack);
3719  indexstack[0] = 0;
3720
3721   /* FleXML_init */
3722   bnext = inext = 1;
3723   surfxml_bufferliteral('\0', &bnext, "0.0");
3724   surfxml_bufferliteral('\0', &bnext, "1");
3725   surfxml_bufferliteral('\0', &bnext, "1.0");
3726   surfxml_bufferliteral('\0', &bnext, "1");
3727   surfxml_bufferliteral('\0', &bnext, "0.0");
3728   surfxml_bufferliteral('\0', &bnext, "-1.0");
3729   surfxml_bufferliteral('\0', &bnext, "-1.0");
3730   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
3731   surfxml_statenames[PROLOG] = NULL;
3732   surfxml_statenames[DOCTYPE] = NULL;
3733   surfxml_statenames[EPILOG] = NULL;
3734   surfxml_statenames[INCOMMENT] = NULL;
3735   surfxml_statenames[INPI] = NULL;
3736   surfxml_statenames[VALUE1] = NULL;
3737   surfxml_statenames[VALUE2] = NULL;
3738   surfxml_statenames[CDATA] = NULL;
3739   surfxml_statenames[ROOT_surfxml_platform] = NULL;
3740   surfxml_statenames[AL_surfxml_platform] = NULL;
3741   surfxml_statenames[S_surfxml_platform] = "platform";
3742   surfxml_statenames[S_surfxml_platform_1] = "platform";
3743   surfxml_statenames[S_surfxml_platform_2] = "platform";
3744   surfxml_statenames[S_surfxml_platform_3] = "platform";
3745   surfxml_statenames[S_surfxml_platform_4] = "platform";
3746   surfxml_statenames[S_surfxml_platform_5] = "platform";
3747   surfxml_statenames[S_surfxml_platform_6] = "platform";
3748   surfxml_statenames[E_surfxml_platform] = "platform";
3749   surfxml_statenames[AL_surfxml_trace] = NULL;
3750   surfxml_statenames[IN_trace] = "trace";
3751   surfxml_statenames[AL_surfxml_random] = NULL;
3752   surfxml_statenames[S_surfxml_random] = "random";
3753   surfxml_statenames[S_surfxml_random_1] = "random";
3754   surfxml_statenames[S_surfxml_random_2] = "random";
3755   surfxml_statenames[E_surfxml_random] = "random";
3756   surfxml_statenames[AL_surfxml_trace_connect] = NULL;
3757   surfxml_statenames[E_surfxml_trace_connect] = "trace_connect";
3758   surfxml_statenames[AL_surfxml_AS] = NULL;
3759   surfxml_statenames[S_surfxml_AS] = "AS";
3760   surfxml_statenames[S_surfxml_AS_1] = "AS";
3761   surfxml_statenames[S_surfxml_AS_2] = "AS";
3762   surfxml_statenames[S_surfxml_AS_3] = "AS";
3763   surfxml_statenames[S_surfxml_AS_4] = "AS";
3764   surfxml_statenames[S_surfxml_AS_5] = "AS";
3765   surfxml_statenames[S_surfxml_AS_6] = "AS";
3766   surfxml_statenames[S_surfxml_AS_7] = "AS";
3767   surfxml_statenames[S_surfxml_AS_8] = "AS";
3768   surfxml_statenames[S_surfxml_AS_9] = "AS";
3769   surfxml_statenames[S_surfxml_AS_10] = "AS";
3770   surfxml_statenames[S_surfxml_AS_11] = "AS";
3771   surfxml_statenames[S_surfxml_AS_12] = "AS";
3772   surfxml_statenames[S_surfxml_AS_13] = "AS";
3773   surfxml_statenames[E_surfxml_AS] = "AS";
3774   surfxml_statenames[AL_surfxml_host] = NULL;
3775   surfxml_statenames[S_surfxml_host] = "host";
3776   surfxml_statenames[S_surfxml_host_1] = "host";
3777   surfxml_statenames[S_surfxml_host_2] = "host";
3778   surfxml_statenames[E_surfxml_host] = "host";
3779   surfxml_statenames[AL_surfxml_cluster] = NULL;
3780   surfxml_statenames[E_surfxml_cluster] = "cluster";
3781   surfxml_statenames[AL_surfxml_peer] = NULL;
3782   surfxml_statenames[E_surfxml_peer] = "peer";
3783   surfxml_statenames[AL_surfxml_router] = NULL;
3784   surfxml_statenames[E_surfxml_router] = "router";
3785   surfxml_statenames[AL_surfxml_link] = NULL;
3786   surfxml_statenames[S_surfxml_link] = "link";
3787   surfxml_statenames[S_surfxml_link_1] = "link";
3788   surfxml_statenames[S_surfxml_link_2] = "link";
3789   surfxml_statenames[E_surfxml_link] = "link";
3790   surfxml_statenames[AL_surfxml_route] = NULL;
3791   surfxml_statenames[S_surfxml_route] = "route";
3792   surfxml_statenames[S_surfxml_route_1] = "route";
3793   surfxml_statenames[S_surfxml_route_2] = "route";
3794   surfxml_statenames[E_surfxml_route] = "route";
3795   surfxml_statenames[AL_surfxml_ASroute] = NULL;
3796   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
3797   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
3798   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
3799   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
3800   surfxml_statenames[AL_surfxml_link_ctn] = NULL;
3801   surfxml_statenames[E_surfxml_link_ctn] = "link_ctn";
3802   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
3803   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
3804   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
3805   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
3806   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
3807   surfxml_statenames[AL_surfxml_process] = NULL;
3808   surfxml_statenames[S_surfxml_process] = "process";
3809   surfxml_statenames[S_surfxml_process_1] = "process";
3810   surfxml_statenames[S_surfxml_process_2] = "process";
3811   surfxml_statenames[E_surfxml_process] = "process";
3812   surfxml_statenames[AL_surfxml_argument] = NULL;
3813   surfxml_statenames[E_surfxml_argument] = "argument";
3814   surfxml_statenames[AL_surfxml_config] = NULL;
3815   surfxml_statenames[S_surfxml_config] = "config";
3816   surfxml_statenames[S_surfxml_config_1] = "config";
3817   surfxml_statenames[S_surfxml_config_2] = "config";
3818   surfxml_statenames[E_surfxml_config] = "config";
3819   surfxml_statenames[AL_surfxml_prop] = NULL;
3820   surfxml_statenames[E_surfxml_prop] = "prop";
3821   }
3822
3823  /* COMMENTS and PIs: handled uniformly for efficiency. */
3824
3825         if ( !(yy_init) )
3826                 {
3827                 (yy_init) = 1;
3828
3829 #ifdef YY_USER_INIT
3830                 YY_USER_INIT;
3831 #endif
3832
3833                 if ( ! (yy_start) )
3834                         (yy_start) = 1; /* first start state */
3835
3836                 if ( ! surf_parse_in )
3837                         surf_parse_in = stdin;
3838
3839                 if ( ! surf_parse_out )
3840                         surf_parse_out = stdout;
3841
3842                 if ( ! YY_CURRENT_BUFFER ) {
3843                         surf_parse_ensure_buffer_stack ();
3844                         YY_CURRENT_BUFFER_LVALUE =
3845                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
3846                 }
3847
3848                 surf_parse__load_buffer_state( );
3849                 }
3850
3851         while ( 1 )             /* loops until end-of-file is reached */
3852                 {
3853                 yy_cp = (yy_c_buf_p);
3854
3855                 /* Support of surf_parse_text. */
3856                 *yy_cp = (yy_hold_char);
3857
3858                 /* yy_bp points to the position in yy_ch_buf of the start of
3859                  * the current run.
3860                  */
3861                 yy_bp = yy_cp;
3862
3863                 yy_current_state = (yy_start);
3864 yy_match:
3865                 do
3866                         {
3867                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3868                         if ( yy_accept[yy_current_state] )
3869                                 {
3870                                 (yy_last_accepting_state) = yy_current_state;
3871                                 (yy_last_accepting_cpos) = yy_cp;
3872                                 }
3873                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3874                                 {
3875                                 yy_current_state = (int) yy_def[yy_current_state];
3876                                 if ( yy_current_state >= 2257 )
3877                                         yy_c = yy_meta[(unsigned int) yy_c];
3878                                 }
3879                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3880                         ++yy_cp;
3881                         }
3882                 while ( yy_base[yy_current_state] != 7722 );
3883
3884 yy_find_action:
3885                 yy_act = yy_accept[yy_current_state];
3886                 if ( yy_act == 0 )
3887                         { /* have to back up */
3888                         yy_cp = (yy_last_accepting_cpos);
3889                         yy_current_state = (yy_last_accepting_state);
3890                         yy_act = yy_accept[yy_current_state];
3891                         }
3892
3893                 YY_DO_BEFORE_ACTION;
3894
3895                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
3896                         {
3897                         int yyl;
3898                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
3899                                 if ( surf_parse_text[yyl] == '\n' )
3900                                            
3901     surf_parse_lineno++;
3902 ;
3903                         }
3904
3905 do_action:      /* This label is used only to access EOF actions. */
3906
3907                 switch ( yy_act )
3908         { /* beginning of action switch */
3909                         case 0: /* must back up */
3910                         /* undo the effects of YY_DO_BEFORE_ACTION */
3911                         *yy_cp = (yy_hold_char);
3912                         yy_cp = (yy_last_accepting_cpos);
3913                         yy_current_state = (yy_last_accepting_state);
3914                         goto yy_find_action;
3915
3916 case 1:
3917 YY_RULE_SETUP
3918 ENTER(INCOMMENT);
3919         YY_BREAK
3920 case 2:
3921 YY_RULE_SETUP
3922 ENTER(INPI);
3923         YY_BREAK
3924
3925 case 3:
3926 YY_RULE_SETUP
3927 LEAVE;
3928         YY_BREAK
3929 case 4:
3930 case 5:
3931 case 6:
3932 /* rule 6 can match eol */
3933 YY_RULE_SETUP
3934 SKIP;
3935         YY_BREAK
3936 case YY_STATE_EOF(INCOMMENT):
3937 FAIL("EOF in comment.");
3938         YY_BREAK
3939
3940 case 7:
3941 YY_RULE_SETUP
3942 LEAVE;
3943         YY_BREAK
3944 case 8:
3945 case 9:
3946 /* rule 9 can match eol */
3947 YY_RULE_SETUP
3948 SKIP;
3949         YY_BREAK
3950 case YY_STATE_EOF(INPI):
3951 FAIL("EOF in PI (processing instruction).");
3952         YY_BREAK
3953
3954 /* SPACES: skipped uniformly */
3955 case 10:
3956 /* rule 10 can match eol */
3957 YY_RULE_SETUP
3958 SKIP;
3959         YY_BREAK
3960 /* PROLOG: determine root element and process it. */
3961
3962 case 11:
3963 /* rule 11 can match eol */
3964 YY_RULE_SETUP
3965 SET(DOCTYPE); 
3966         YY_BREAK
3967 case 12:
3968 /* rule 12 can match eol */
3969 YY_RULE_SETUP
3970 FAIL("Bad declaration %s.",surf_parse_text);
3971         YY_BREAK
3972
3973 case 13:
3974 /* rule 13 can match eol */
3975 YY_RULE_SETUP
3976 SET(ROOT_surfxml_platform);
3977         YY_BREAK
3978 case 14:
3979 /* rule 14 can match eol */
3980 YY_RULE_SETUP
3981 FAIL("Bad declaration %s.",surf_parse_text);
3982         YY_BREAK
3983 case 15:
3984 YY_RULE_SETUP
3985 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
3986         YY_BREAK
3987 case YY_STATE_EOF(PROLOG):
3988 case YY_STATE_EOF(DOCTYPE):
3989 FAIL("EOF in prolog.");
3990         YY_BREAK
3991
3992 /* RULES DERIVED FROM DTD. */
3993 /* <!-- Small DTD for SURF based tools. -->  */
3994 case 16:
3995 /* rule 16 can match eol */
3996 YY_RULE_SETUP
3997 FAIL("Starting tag <platform> is not allowed here.");
3998         YY_BREAK
3999 case 17:
4000 /* rule 17 can match eol */
4001 YY_RULE_SETUP
4002 {
4003   AX_surfxml_platform_version = 1;
4004   ENTER(AL_surfxml_platform); pushbuffer(0);
4005   }
4006         YY_BREAK
4007
4008 case 18:
4009 /* rule 18 can match eol */
4010 YY_RULE_SETUP
4011 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
4012         YY_BREAK
4013 case 19:
4014 /* rule 19 can match eol */
4015 YY_RULE_SETUP
4016 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
4017         YY_BREAK
4018 case 20:
4019 YY_RULE_SETUP
4020 {
4021   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
4022  }
4023         YY_BREAK
4024 case 21:
4025 YY_RULE_SETUP
4026 {
4027   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
4028   switch (YY_START) {
4029    case ROOT_surfxml_platform: SET(EPILOG); break;
4030   }
4031  }
4032         YY_BREAK
4033 case 22:
4034 YY_RULE_SETUP
4035 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
4036         YY_BREAK
4037 case 23:
4038 YY_RULE_SETUP
4039 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
4040         YY_BREAK
4041 case YY_STATE_EOF(AL_surfxml_platform):
4042 FAIL("EOF in attribute list of `platform' element.");
4043         YY_BREAK
4044
4045 case 24:
4046 /* rule 24 can match eol */
4047 YY_RULE_SETUP
4048 {
4049   LEAVE;
4050   ETag_surfxml_platform();
4051   popbuffer(); /* attribute */
4052   switch (YY_START) {
4053    case ROOT_surfxml_platform: SET(EPILOG); break;
4054   }
4055  }
4056         YY_BREAK
4057 case 25:
4058 /* rule 25 can match eol */
4059 YY_RULE_SETUP
4060 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
4061         YY_BREAK
4062 case 26:
4063 YY_RULE_SETUP
4064 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
4065         YY_BREAK
4066 case YY_STATE_EOF(S_surfxml_platform_2):
4067 case YY_STATE_EOF(S_surfxml_platform_1):
4068 case YY_STATE_EOF(S_surfxml_platform):
4069 case YY_STATE_EOF(S_surfxml_platform_4):
4070 case YY_STATE_EOF(S_surfxml_platform_6):
4071 case YY_STATE_EOF(E_surfxml_platform):
4072 FAIL("Premature EOF: `</platform>' expected.");
4073         YY_BREAK
4074
4075 case 27:
4076 /* rule 27 can match eol */
4077 YY_RULE_SETUP
4078 FAIL("Starting tag <trace> is not allowed here.");
4079         YY_BREAK
4080 case 28:
4081 /* rule 28 can match eol */
4082 YY_RULE_SETUP
4083 {
4084   AX_surfxml_trace_id = 0;
4085   AX_surfxml_trace_file = 0;
4086   AX_surfxml_trace_periodicity = 0;
4087   ENTER(AL_surfxml_trace); pushbuffer(0);
4088   }
4089         YY_BREAK
4090
4091 case 29:
4092 /* rule 29 can match eol */
4093 YY_RULE_SETUP
4094 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
4095         YY_BREAK
4096 case 30:
4097 /* rule 30 can match eol */
4098 YY_RULE_SETUP
4099 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
4100         YY_BREAK
4101 case 31:
4102 /* rule 31 can match eol */
4103 YY_RULE_SETUP
4104 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
4105         YY_BREAK
4106 case 32:
4107 /* rule 32 can match eol */
4108 YY_RULE_SETUP
4109 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
4110         YY_BREAK
4111 case 33:
4112 /* rule 33 can match eol */
4113 YY_RULE_SETUP
4114 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
4115         YY_BREAK
4116 case 34:
4117 /* rule 34 can match eol */
4118 YY_RULE_SETUP
4119 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
4120         YY_BREAK
4121 case 35:
4122 YY_RULE_SETUP
4123 {
4124   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
4125   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
4126   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
4127  }
4128         YY_BREAK
4129 case 36:
4130 YY_RULE_SETUP
4131 {
4132   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
4133   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
4134   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
4135   switch (YY_START) {
4136    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4137    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4138    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4139    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4140    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4141    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4142   }
4143  }
4144         YY_BREAK
4145 case 37:
4146 YY_RULE_SETUP
4147 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
4148         YY_BREAK
4149 case 38:
4150 YY_RULE_SETUP
4151 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
4152         YY_BREAK
4153 case YY_STATE_EOF(AL_surfxml_trace):
4154 FAIL("EOF in attribute list of `trace' element.");
4155         YY_BREAK
4156
4157 case 39:
4158 /* rule 39 can match eol */
4159 YY_RULE_SETUP
4160 {
4161   LEAVE;
4162   BUFFERDONE;
4163   ETag_surfxml_trace();
4164   surfxml_pcdata_ix = popbuffer();
4165   popbuffer(); /* attribute */
4166   switch (YY_START) {
4167    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4168    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4169    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4170    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4171    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4172    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4173   }
4174  }
4175         YY_BREAK
4176 case 40:
4177 /* rule 40 can match eol */
4178 YY_RULE_SETUP
4179 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
4180         YY_BREAK
4181 case YY_STATE_EOF(IN_trace):
4182 FAIL("Premature EOF: `</trace>' expected.");
4183         YY_BREAK
4184
4185 case 41:
4186 /* rule 41 can match eol */
4187 YY_RULE_SETUP
4188 FAIL("Starting tag <random> is not allowed here.");
4189         YY_BREAK
4190 case 42:
4191 /* rule 42 can match eol */
4192 YY_RULE_SETUP
4193 {
4194   AX_surfxml_random_id = 0;
4195   AX_surfxml_random_min = 0;
4196   AX_surfxml_random_max = 0;
4197   AX_surfxml_random_mean = 0;
4198   AX_surfxml_random_std_deviation = 0;
4199   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
4200   ENTER(AL_surfxml_random); pushbuffer(0);
4201   }
4202         YY_BREAK
4203
4204 case 43:
4205 /* rule 43 can match eol */
4206 YY_RULE_SETUP
4207 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
4208         YY_BREAK
4209 case 44:
4210 /* rule 44 can match eol */
4211 YY_RULE_SETUP
4212 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
4213         YY_BREAK
4214 case 45:
4215 /* rule 45 can match eol */
4216 YY_RULE_SETUP
4217 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
4218         YY_BREAK
4219 case 46:
4220 /* rule 46 can match eol */
4221 YY_RULE_SETUP
4222 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
4223         YY_BREAK
4224 case 47:
4225 /* rule 47 can match eol */
4226 YY_RULE_SETUP
4227 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
4228         YY_BREAK
4229 case 48:
4230 /* rule 48 can match eol */
4231 YY_RULE_SETUP
4232 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
4233         YY_BREAK
4234 case 49:
4235 /* rule 49 can match eol */
4236 YY_RULE_SETUP
4237 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
4238         YY_BREAK
4239 case 50:
4240 /* rule 50 can match eol */
4241 YY_RULE_SETUP
4242 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
4243         YY_BREAK
4244 case 51:
4245 /* rule 51 can match eol */
4246 YY_RULE_SETUP
4247 ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std_deviation);
4248         YY_BREAK
4249 case 52:
4250 /* rule 52 can match eol */
4251 YY_RULE_SETUP
4252 ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std_deviation);
4253         YY_BREAK
4254 case 53:
4255 /* rule 53 can match eol */
4256 case 54:
4257 /* rule 54 can match eol */
4258 YY_RULE_SETUP
4259 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
4260         YY_BREAK
4261 case 55:
4262 /* rule 55 can match eol */
4263 case 56:
4264 /* rule 56 can match eol */
4265 YY_RULE_SETUP
4266 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
4267         YY_BREAK
4268 case 57:
4269 YY_RULE_SETUP
4270 {
4271   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
4272   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
4273   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
4274   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
4275   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
4276   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(S_surfxml_random);
4277  }
4278         YY_BREAK
4279 case 58:
4280 YY_RULE_SETUP
4281 {
4282   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
4283   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
4284   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
4285   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
4286   if (!AX_surfxml_random_std_deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
4287   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
4288   switch (YY_START) {
4289    case S_surfxml_config: SET(E_surfxml_config); break;
4290   }
4291  }
4292         YY_BREAK
4293 case 59:
4294 YY_RULE_SETUP
4295 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
4296         YY_BREAK
4297 case 60:
4298 YY_RULE_SETUP
4299 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
4300         YY_BREAK
4301 case YY_STATE_EOF(AL_surfxml_random):
4302 FAIL("EOF in attribute list of `random' element.");
4303         YY_BREAK
4304
4305 case 61:
4306 /* rule 61 can match eol */
4307 YY_RULE_SETUP
4308 {
4309   LEAVE;
4310   ETag_surfxml_random();
4311   popbuffer(); /* attribute */
4312   switch (YY_START) {
4313    case S_surfxml_config: SET(E_surfxml_config); break;
4314   }
4315  }
4316         YY_BREAK
4317 case 62:
4318 /* rule 62 can match eol */
4319 YY_RULE_SETUP
4320 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
4321         YY_BREAK
4322 case 63:
4323 YY_RULE_SETUP
4324 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
4325         YY_BREAK
4326 case YY_STATE_EOF(S_surfxml_random_2):
4327 case YY_STATE_EOF(S_surfxml_random):
4328 case YY_STATE_EOF(E_surfxml_random):
4329 FAIL("Premature EOF: `</random>' expected.");
4330         YY_BREAK
4331
4332 case 64:
4333 /* rule 64 can match eol */
4334 YY_RULE_SETUP
4335 FAIL("Starting tag <trace_connect> is not allowed here.");
4336         YY_BREAK
4337 case 65:
4338 /* rule 65 can match eol */
4339 YY_RULE_SETUP
4340 {
4341   AX_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
4342   AX_surfxml_trace_connect_trace = 0;
4343   AX_surfxml_trace_connect_element = 0;
4344   ENTER(AL_surfxml_trace_connect); pushbuffer(0);
4345   }
4346         YY_BREAK
4347
4348 case 66:
4349 /* rule 66 can match eol */
4350 case 67:
4351 /* rule 67 can match eol */
4352 YY_RULE_SETUP
4353 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_HOST_AVAIL;
4354         YY_BREAK
4355 case 68:
4356 /* rule 68 can match eol */
4357 case 69:
4358 /* rule 69 can match eol */
4359 YY_RULE_SETUP
4360 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_POWER;
4361         YY_BREAK
4362 case 70:
4363 /* rule 70 can match eol */
4364 case 71:
4365 /* rule 71 can match eol */
4366 YY_RULE_SETUP
4367 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LINK_AVAIL;
4368         YY_BREAK
4369 case 72:
4370 /* rule 72 can match eol */
4371 case 73:
4372 /* rule 73 can match eol */
4373 YY_RULE_SETUP
4374 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_BANDWIDTH;
4375         YY_BREAK
4376 case 74:
4377 /* rule 74 can match eol */
4378 case 75:
4379 /* rule 75 can match eol */
4380 YY_RULE_SETUP
4381 A_surfxml_trace_connect_kind = A_surfxml_trace_connect_kind_LATENCY;
4382         YY_BREAK
4383 case 76:
4384 /* rule 76 can match eol */
4385 YY_RULE_SETUP
4386 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_trace);
4387         YY_BREAK
4388 case 77:
4389 /* rule 77 can match eol */
4390 YY_RULE_SETUP
4391 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_trace);
4392         YY_BREAK
4393 case 78:
4394 /* rule 78 can match eol */
4395 YY_RULE_SETUP
4396 ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_connect_element);
4397         YY_BREAK
4398 case 79:
4399 /* rule 79 can match eol */
4400 YY_RULE_SETUP
4401 ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_connect_element);
4402         YY_BREAK
4403 case 80:
4404 YY_RULE_SETUP
4405 {
4406   if (!AX_surfxml_trace_connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
4407   if (!AX_surfxml_trace_connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
4408   LEAVE; STag_surfxml_trace_connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace_connect);
4409  }
4410         YY_BREAK
4411 case 81:
4412 YY_RULE_SETUP
4413 {
4414   if (!AX_surfxml_trace_connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
4415   if (!AX_surfxml_trace_connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
4416   LEAVE; STag_surfxml_trace_connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace_connect(); popbuffer(); /* attribute */
4417   switch (YY_START) {
4418    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4419    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4420    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4421    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4422    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4423    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4424   }
4425  }
4426         YY_BREAK
4427 case 82:
4428 YY_RULE_SETUP
4429 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
4430         YY_BREAK
4431 case 83:
4432 YY_RULE_SETUP
4433 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
4434         YY_BREAK
4435 case YY_STATE_EOF(AL_surfxml_trace_connect):
4436 FAIL("EOF in attribute list of `trace_connect' element.");
4437         YY_BREAK
4438
4439 case 84:
4440 /* rule 84 can match eol */
4441 YY_RULE_SETUP
4442 {
4443   LEAVE;
4444   ETag_surfxml_trace_connect();
4445   popbuffer(); /* attribute */
4446   switch (YY_START) {
4447    case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
4448    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4449    case S_surfxml_AS_2: SET(S_surfxml_AS_3); break;
4450    case S_surfxml_AS_1: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
4451    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4452    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_13: SET(S_surfxml_AS_13); break;
4453   }
4454  }
4455         YY_BREAK
4456 case 85:
4457 /* rule 85 can match eol */
4458 YY_RULE_SETUP
4459 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
4460         YY_BREAK
4461 case 86:
4462 YY_RULE_SETUP
4463 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
4464         YY_BREAK
4465 case YY_STATE_EOF(E_surfxml_trace_connect):
4466 FAIL("Premature EOF: `</trace_connect>' expected.");
4467         YY_BREAK
4468
4469 case 87:
4470 /* rule 87 can match eol */
4471 YY_RULE_SETUP
4472 FAIL("Starting tag <AS> is not allowed here.");
4473         YY_BREAK
4474 case 88:
4475 /* rule 88 can match eol */
4476 YY_RULE_SETUP
4477 {
4478   AX_surfxml_AS_id = 0;
4479   AX_surfxml_AS_routing = 0;
4480   ENTER(AL_surfxml_AS); pushbuffer(0);
4481   }
4482         YY_BREAK
4483
4484 case 89:
4485 /* rule 89 can match eol */
4486 YY_RULE_SETUP
4487 ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
4488         YY_BREAK
4489 case 90:
4490 /* rule 90 can match eol */
4491 YY_RULE_SETUP
4492 ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
4493         YY_BREAK
4494 case 91:
4495 /* rule 91 can match eol */
4496 YY_RULE_SETUP
4497 ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_routing);
4498         YY_BREAK
4499 case 92:
4500 /* rule 92 can match eol */
4501 YY_RULE_SETUP
4502 ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_routing);
4503         YY_BREAK
4504 case 93:
4505 YY_RULE_SETUP
4506 {
4507   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
4508   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
4509   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
4510  }
4511         YY_BREAK
4512 case 94:
4513 YY_RULE_SETUP
4514 {
4515   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
4516   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
4517   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
4518   switch (YY_START) {
4519    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4520    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4521   }
4522  }
4523         YY_BREAK
4524 case 95:
4525 YY_RULE_SETUP
4526 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
4527         YY_BREAK
4528 case 96:
4529 YY_RULE_SETUP
4530 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
4531         YY_BREAK
4532 case YY_STATE_EOF(AL_surfxml_AS):
4533 FAIL("EOF in attribute list of `AS' element.");
4534         YY_BREAK
4535
4536 case 97:
4537 /* rule 97 can match eol */
4538 YY_RULE_SETUP
4539 {
4540   LEAVE;
4541   ETag_surfxml_AS();
4542   popbuffer(); /* attribute */
4543   switch (YY_START) {
4544    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4545    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4546   }
4547  }
4548         YY_BREAK
4549 case 98:
4550 /* rule 98 can match eol */
4551 YY_RULE_SETUP
4552 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
4553         YY_BREAK
4554 case 99:
4555 YY_RULE_SETUP
4556 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
4557         YY_BREAK
4558 case YY_STATE_EOF(S_surfxml_AS_1):
4559 case YY_STATE_EOF(S_surfxml_AS_9):
4560 case YY_STATE_EOF(S_surfxml_AS_11):
4561 case YY_STATE_EOF(S_surfxml_AS_6):
4562 case YY_STATE_EOF(E_surfxml_AS):
4563 case YY_STATE_EOF(S_surfxml_AS_3):
4564 case YY_STATE_EOF(S_surfxml_AS_13):
4565 case YY_STATE_EOF(S_surfxml_AS_8):
4566 case YY_STATE_EOF(S_surfxml_AS):
4567 case YY_STATE_EOF(S_surfxml_AS_4):
4568 FAIL("Premature EOF: `</AS>' expected.");
4569         YY_BREAK
4570
4571 case 100:
4572 /* rule 100 can match eol */
4573 YY_RULE_SETUP
4574 FAIL("Starting tag <host> is not allowed here.");
4575         YY_BREAK
4576 case 101:
4577 /* rule 101 can match eol */
4578 YY_RULE_SETUP
4579 {
4580   AX_surfxml_host_id = 0;
4581   AX_surfxml_host_power = 0;
4582   AX_surfxml_host_core = 5;
4583   AX_surfxml_host_availability = 7;
4584   AX_surfxml_host_availability_file = 0;
4585   AX_surfxml_host_state = A_surfxml_host_state_ON;
4586   AX_surfxml_host_state_file = 0;
4587   AX_surfxml_host_coordinates = 0;
4588   ENTER(AL_surfxml_host); pushbuffer(0);
4589   }
4590         YY_BREAK
4591
4592 case 102:
4593 /* rule 102 can match eol */
4594 YY_RULE_SETUP
4595 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
4596         YY_BREAK
4597 case 103:
4598 /* rule 103 can match eol */
4599 YY_RULE_SETUP
4600 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
4601         YY_BREAK
4602 case 104:
4603 /* rule 104 can match eol */
4604 YY_RULE_SETUP
4605 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
4606         YY_BREAK
4607 case 105:
4608 /* rule 105 can match eol */
4609 YY_RULE_SETUP
4610 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
4611         YY_BREAK
4612 case 106:
4613 /* rule 106 can match eol */
4614 YY_RULE_SETUP
4615 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
4616         YY_BREAK
4617 case 107:
4618 /* rule 107 can match eol */
4619 YY_RULE_SETUP
4620 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
4621         YY_BREAK
4622 case 108:
4623 /* rule 108 can match eol */
4624 YY_RULE_SETUP
4625 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
4626         YY_BREAK
4627 case 109:
4628 /* rule 109 can match eol */
4629 YY_RULE_SETUP
4630 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
4631         YY_BREAK
4632 case 110:
4633 /* rule 110 can match eol */
4634 YY_RULE_SETUP
4635 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
4636         YY_BREAK
4637 case 111:
4638 /* rule 111 can match eol */
4639 YY_RULE_SETUP
4640 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
4641         YY_BREAK
4642 case 112:
4643 /* rule 112 can match eol */
4644 case 113:
4645 /* rule 113 can match eol */
4646 YY_RULE_SETUP
4647 A_surfxml_host_state = A_surfxml_host_state_ON;
4648         YY_BREAK
4649 case 114:
4650 /* rule 114 can match eol */
4651 case 115:
4652 /* rule 115 can match eol */
4653 YY_RULE_SETUP
4654 A_surfxml_host_state = A_surfxml_host_state_OFF;
4655         YY_BREAK
4656 case 116:
4657 /* rule 116 can match eol */
4658 YY_RULE_SETUP
4659 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
4660         YY_BREAK
4661 case 117:
4662 /* rule 117 can match eol */
4663 YY_RULE_SETUP
4664 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
4665         YY_BREAK
4666 case 118:
4667 /* rule 118 can match eol */
4668 YY_RULE_SETUP
4669 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
4670         YY_BREAK
4671 case 119:
4672 /* rule 119 can match eol */
4673 YY_RULE_SETUP
4674 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
4675         YY_BREAK
4676 case 120:
4677 YY_RULE_SETUP
4678 {
4679   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
4680   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
4681   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
4682  }
4683         YY_BREAK
4684 case 121:
4685 YY_RULE_SETUP
4686 {
4687   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
4688   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
4689   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
4690   switch (YY_START) {
4691    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4692   }
4693  }
4694         YY_BREAK
4695 case 122:
4696 YY_RULE_SETUP
4697 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
4698         YY_BREAK
4699 case 123:
4700 YY_RULE_SETUP
4701 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
4702         YY_BREAK
4703 case YY_STATE_EOF(AL_surfxml_host):
4704 FAIL("EOF in attribute list of `host' element.");
4705         YY_BREAK
4706
4707 case 124:
4708 /* rule 124 can match eol */
4709 YY_RULE_SETUP
4710 {
4711   LEAVE;
4712   ETag_surfxml_host();
4713   popbuffer(); /* attribute */
4714   switch (YY_START) {
4715    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
4716   }
4717  }
4718         YY_BREAK
4719 case 125:
4720 /* rule 125 can match eol */
4721 YY_RULE_SETUP
4722 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
4723         YY_BREAK
4724 case 126:
4725 YY_RULE_SETUP
4726 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
4727         YY_BREAK
4728 case YY_STATE_EOF(S_surfxml_host):
4729 case YY_STATE_EOF(E_surfxml_host):
4730 case YY_STATE_EOF(S_surfxml_host_2):
4731 FAIL("Premature EOF: `</host>' expected.");
4732         YY_BREAK
4733
4734 case 127:
4735 /* rule 127 can match eol */
4736 YY_RULE_SETUP
4737 FAIL("Starting tag <cluster> is not allowed here.");
4738         YY_BREAK
4739 case 128:
4740 /* rule 128 can match eol */
4741 YY_RULE_SETUP
4742 {
4743   AX_surfxml_cluster_id = 0;
4744   AX_surfxml_cluster_prefix = 0;
4745   AX_surfxml_cluster_suffix = 0;
4746   AX_surfxml_cluster_radical = 0;
4747   AX_surfxml_cluster_power = 0;
4748   AX_surfxml_cluster_core = 11;
4749   AX_surfxml_cluster_bw = 0;
4750   AX_surfxml_cluster_lat = 0;
4751   AX_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_SHARED;
4752   AX_surfxml_cluster_bb_bw = 0;
4753   AX_surfxml_cluster_bb_lat = 0;
4754   AX_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
4755   AX_surfxml_cluster_availability_file = 0;
4756   AX_surfxml_cluster_state_file = 0;
4757   ENTER(AL_surfxml_cluster); pushbuffer(0);
4758   }
4759         YY_BREAK
4760
4761 case 129:
4762 /* rule 129 can match eol */
4763 YY_RULE_SETUP
4764 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
4765         YY_BREAK
4766 case 130:
4767 /* rule 130 can match eol */
4768 YY_RULE_SETUP
4769 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
4770         YY_BREAK
4771 case 131:
4772 /* rule 131 can match eol */
4773 YY_RULE_SETUP
4774 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
4775         YY_BREAK
4776 case 132:
4777 /* rule 132 can match eol */
4778 YY_RULE_SETUP
4779 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
4780         YY_BREAK
4781 case 133:
4782 /* rule 133 can match eol */
4783 YY_RULE_SETUP
4784 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
4785         YY_BREAK
4786 case 134:
4787 /* rule 134 can match eol */
4788 YY_RULE_SETUP
4789 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
4790         YY_BREAK
4791 case 135:
4792 /* rule 135 can match eol */
4793 YY_RULE_SETUP
4794 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
4795         YY_BREAK
4796 case 136:
4797 /* rule 136 can match eol */
4798 YY_RULE_SETUP
4799 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
4800         YY_BREAK
4801 case 137:
4802 /* rule 137 can match eol */
4803 YY_RULE_SETUP
4804 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_power);
4805         YY_BREAK
4806 case 138:
4807 /* rule 138 can match eol */
4808 YY_RULE_SETUP
4809 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_power);
4810         YY_BREAK
4811 case 139:
4812 /* rule 139 can match eol */
4813 YY_RULE_SETUP
4814 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
4815         YY_BREAK
4816 case 140:
4817 /* rule 140 can match eol */
4818 YY_RULE_SETUP
4819 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
4820         YY_BREAK
4821 case 141:
4822 /* rule 141 can match eol */
4823 YY_RULE_SETUP
4824 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
4825         YY_BREAK
4826 case 142:
4827 /* rule 142 can match eol */
4828 YY_RULE_SETUP
4829 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
4830         YY_BREAK
4831 case 143:
4832 /* rule 143 can match eol */
4833 YY_RULE_SETUP
4834 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
4835         YY_BREAK
4836 case 144:
4837 /* rule 144 can match eol */
4838 YY_RULE_SETUP
4839 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
4840         YY_BREAK
4841 case 145:
4842 /* rule 145 can match eol */
4843 case 146:
4844 /* rule 146 can match eol */
4845 YY_RULE_SETUP
4846 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_SHARED;
4847         YY_BREAK
4848 case 147:
4849 /* rule 147 can match eol */
4850 case 148:
4851 /* rule 148 can match eol */
4852 YY_RULE_SETUP
4853 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FULLDUPLEX;
4854         YY_BREAK
4855 case 149:
4856 /* rule 149 can match eol */
4857 case 150:
4858 /* rule 150 can match eol */
4859 YY_RULE_SETUP
4860 A_surfxml_cluster_sharing_policy = A_surfxml_cluster_sharing_policy_FATPIPE;
4861         YY_BREAK
4862 case 151:
4863 /* rule 151 can match eol */
4864 YY_RULE_SETUP
4865 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_bw);
4866         YY_BREAK
4867 case 152:
4868 /* rule 152 can match eol */
4869 YY_RULE_SETUP
4870 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_bw);
4871         YY_BREAK
4872 case 153:
4873 /* rule 153 can match eol */
4874 YY_RULE_SETUP
4875 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb_lat);
4876         YY_BREAK
4877 case 154:
4878 /* rule 154 can match eol */
4879 YY_RULE_SETUP
4880 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb_lat);
4881         YY_BREAK
4882 case 155:
4883 /* rule 155 can match eol */
4884 case 156:
4885 /* rule 156 can match eol */
4886 YY_RULE_SETUP
4887 A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_SHARED;
4888         YY_BREAK
4889 case 157:
4890 /* rule 157 can match eol */
4891 case 158:
4892 /* rule 158 can match eol */
4893 YY_RULE_SETUP
4894 A_surfxml_cluster_bb_sharing_policy = A_surfxml_cluster_bb_sharing_policy_FATPIPE;
4895         YY_BREAK
4896 case 159:
4897 /* rule 159 can match eol */
4898 YY_RULE_SETUP
4899 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability_file);
4900         YY_BREAK
4901 case 160:
4902 /* rule 160 can match eol */
4903 YY_RULE_SETUP
4904 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability_file);
4905         YY_BREAK
4906 case 161:
4907 /* rule 161 can match eol */
4908 YY_RULE_SETUP
4909 ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state_file);
4910         YY_BREAK
4911 case 162:
4912 /* rule 162 can match eol */
4913 YY_RULE_SETUP
4914 ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state_file);
4915         YY_BREAK
4916 case 163:
4917 YY_RULE_SETUP
4918 {
4919   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
4920   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
4921   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
4922   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
4923   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
4924   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
4925   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
4926   if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4927   if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4928   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cluster);
4929  }
4930         YY_BREAK
4931 case 164:
4932 YY_RULE_SETUP
4933 {
4934   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
4935   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
4936   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
4937   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
4938   if (!AX_surfxml_cluster_power) FAIL("Required attribute `power' not set for `cluster' element.");
4939   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
4940   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
4941   if (!AX_surfxml_cluster_bb_bw) FAIL("Required attribute `bb_bw' not set for `cluster' element.");
4942   if (!AX_surfxml_cluster_bb_lat) FAIL("Required attribute `bb_lat' not set for `cluster' element.");
4943   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
4944   switch (YY_START) {
4945    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4946    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4947   }
4948  }
4949         YY_BREAK
4950 case 165:
4951 YY_RULE_SETUP
4952 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
4953         YY_BREAK
4954 case 166:
4955 YY_RULE_SETUP
4956 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
4957         YY_BREAK
4958 case YY_STATE_EOF(AL_surfxml_cluster):
4959 FAIL("EOF in attribute list of `cluster' element.");
4960         YY_BREAK
4961
4962 case 167:
4963 /* rule 167 can match eol */
4964 YY_RULE_SETUP
4965 {
4966   LEAVE;
4967   ETag_surfxml_cluster();
4968   popbuffer(); /* attribute */
4969   switch (YY_START) {
4970    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
4971    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
4972   }
4973  }
4974         YY_BREAK
4975 case 168:
4976 /* rule 168 can match eol */
4977 YY_RULE_SETUP
4978 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
4979         YY_BREAK
4980 case 169:
4981 YY_RULE_SETUP
4982 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
4983         YY_BREAK
4984 case YY_STATE_EOF(E_surfxml_cluster):
4985 FAIL("Premature EOF: `</cluster>' expected.");
4986         YY_BREAK
4987
4988 case 170:
4989 /* rule 170 can match eol */
4990 YY_RULE_SETUP
4991 FAIL("Starting tag <peer> is not allowed here.");
4992         YY_BREAK
4993 case 171:
4994 /* rule 171 can match eol */
4995 YY_RULE_SETUP
4996 {
4997   AX_surfxml_peer_id = 0;
4998   AX_surfxml_peer_power = 0;
4999   AX_surfxml_peer_bw_in = 0;
5000   AX_surfxml_peer_bw_out = 0;
5001   AX_surfxml_peer_lat = 0;
5002   AX_surfxml_peer_coordinates = 0;
5003   AX_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_FULLDUPLEX;
5004   ENTER(AL_surfxml_peer); pushbuffer(0);
5005   }
5006         YY_BREAK
5007
5008 case 172:
5009 /* rule 172 can match eol */
5010 YY_RULE_SETUP
5011 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
5012         YY_BREAK
5013 case 173:
5014 /* rule 173 can match eol */
5015 YY_RULE_SETUP
5016 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
5017         YY_BREAK
5018 case 174:
5019 /* rule 174 can match eol */
5020 YY_RULE_SETUP
5021 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_power);
5022         YY_BREAK
5023 case 175:
5024 /* rule 175 can match eol */
5025 YY_RULE_SETUP
5026 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_power);
5027         YY_BREAK
5028 case 176:
5029 /* rule 176 can match eol */
5030 YY_RULE_SETUP
5031 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_in);
5032         YY_BREAK
5033 case 177:
5034 /* rule 177 can match eol */
5035 YY_RULE_SETUP
5036 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_in);
5037         YY_BREAK
5038 case 178:
5039 /* rule 178 can match eol */
5040 YY_RULE_SETUP
5041 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw_out);
5042         YY_BREAK
5043 case 179:
5044 /* rule 179 can match eol */
5045 YY_RULE_SETUP
5046 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw_out);
5047         YY_BREAK
5048 case 180:
5049 /* rule 180 can match eol */
5050 YY_RULE_SETUP
5051 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
5052         YY_BREAK
5053 case 181:
5054 /* rule 181 can match eol */
5055 YY_RULE_SETUP
5056 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
5057         YY_BREAK
5058 case 182:
5059 /* rule 182 can match eol */
5060 YY_RULE_SETUP
5061 ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
5062         YY_BREAK
5063 case 183:
5064 /* rule 183 can match eol */
5065 YY_RULE_SETUP
5066 ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
5067         YY_BREAK
5068 case 184:
5069 /* rule 184 can match eol */
5070 case 185:
5071 /* rule 185 can match eol */
5072 YY_RULE_SETUP
5073 A_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_SHARED;
5074         YY_BREAK
5075 case 186:
5076 /* rule 186 can match eol */
5077 case 187:
5078 /* rule 187 can match eol */
5079 YY_RULE_SETUP
5080 A_surfxml_peer_sharing_policy = A_surfxml_peer_sharing_policy_FULLDUPLEX;
5081         YY_BREAK
5082 case 188:
5083 YY_RULE_SETUP
5084 {
5085   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
5086   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
5087   if (!AX_surfxml_peer_bw_in) FAIL("Required attribute `bw_in' not set for `peer' element.");
5088   if (!AX_surfxml_peer_bw_out) FAIL("Required attribute `bw_out' not set for `peer' element.");
5089   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
5090   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
5091  }
5092         YY_BREAK
5093 case 189:
5094 YY_RULE_SETUP
5095 {
5096   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
5097   if (!AX_surfxml_peer_power) FAIL("Required attribute `power' not set for `peer' element.");
5098   if (!AX_surfxml_peer_bw_in) FAIL("Required attribute `bw_in' not set for `peer' element.");
5099   if (!AX_surfxml_peer_bw_out) FAIL("Required attribute `bw_out' not set for `peer' element.");
5100   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
5101   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
5102   switch (YY_START) {
5103    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5104    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
5105   }
5106  }
5107         YY_BREAK
5108 case 190:
5109 YY_RULE_SETUP
5110 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
5111         YY_BREAK
5112 case 191:
5113 YY_RULE_SETUP
5114 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
5115         YY_BREAK
5116 case YY_STATE_EOF(AL_surfxml_peer):
5117 FAIL("EOF in attribute list of `peer' element.");
5118         YY_BREAK
5119
5120 case 192:
5121 /* rule 192 can match eol */
5122 YY_RULE_SETUP
5123 {
5124   LEAVE;
5125   ETag_surfxml_peer();
5126   popbuffer(); /* attribute */
5127   switch (YY_START) {
5128    case S_surfxml_AS_2: case S_surfxml_AS: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5129    case S_surfxml_platform_4: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_4); break;
5130   }
5131  }
5132         YY_BREAK
5133 case 193:
5134 /* rule 193 can match eol */
5135 YY_RULE_SETUP
5136 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
5137         YY_BREAK
5138 case 194:
5139 YY_RULE_SETUP
5140 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
5141         YY_BREAK
5142 case YY_STATE_EOF(E_surfxml_peer):
5143 FAIL("Premature EOF: `</peer>' expected.");
5144         YY_BREAK
5145
5146 case 195:
5147 /* rule 195 can match eol */
5148 YY_RULE_SETUP
5149 FAIL("Starting tag <router> is not allowed here.");
5150         YY_BREAK
5151 case 196:
5152 /* rule 196 can match eol */
5153 YY_RULE_SETUP
5154 {
5155   AX_surfxml_router_id = 0;
5156   AX_surfxml_router_coordinates = 0;
5157   ENTER(AL_surfxml_router); pushbuffer(0);
5158   }
5159         YY_BREAK
5160
5161 case 197:
5162 /* rule 197 can match eol */
5163 YY_RULE_SETUP
5164 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
5165         YY_BREAK
5166 case 198:
5167 /* rule 198 can match eol */
5168 YY_RULE_SETUP
5169 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
5170         YY_BREAK
5171 case 199:
5172 /* rule 199 can match eol */
5173 YY_RULE_SETUP
5174 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
5175         YY_BREAK
5176 case 200:
5177 /* rule 200 can match eol */
5178 YY_RULE_SETUP
5179 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
5180         YY_BREAK
5181 case 201:
5182 YY_RULE_SETUP
5183 {
5184   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
5185   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
5186  }
5187         YY_BREAK
5188 case 202:
5189 YY_RULE_SETUP
5190 {
5191   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
5192   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
5193   switch (YY_START) {
5194    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5195   }
5196  }
5197         YY_BREAK
5198 case 203:
5199 YY_RULE_SETUP
5200 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
5201         YY_BREAK
5202 case 204:
5203 YY_RULE_SETUP
5204 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
5205         YY_BREAK
5206 case YY_STATE_EOF(AL_surfxml_router):
5207 FAIL("EOF in attribute list of `router' element.");
5208         YY_BREAK
5209
5210 case 205:
5211 /* rule 205 can match eol */
5212 YY_RULE_SETUP
5213 {
5214   LEAVE;
5215   ETag_surfxml_router();
5216   popbuffer(); /* attribute */
5217   switch (YY_START) {
5218    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5219   }
5220  }
5221         YY_BREAK
5222 case 206:
5223 /* rule 206 can match eol */
5224 YY_RULE_SETUP
5225 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
5226         YY_BREAK
5227 case 207:
5228 YY_RULE_SETUP
5229 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
5230         YY_BREAK
5231 case YY_STATE_EOF(E_surfxml_router):
5232 FAIL("Premature EOF: `</router>' expected.");
5233         YY_BREAK
5234
5235 case 208:
5236 /* rule 208 can match eol */
5237 YY_RULE_SETUP
5238 FAIL("Starting tag <link> is not allowed here.");
5239         YY_BREAK
5240 case 209:
5241 /* rule 209 can match eol */
5242 YY_RULE_SETUP
5243 {
5244   AX_surfxml_link_id = 0;
5245   AX_surfxml_link_bandwidth = 0;
5246   AX_surfxml_link_bandwidth_file = 0;
5247   AX_surfxml_link_latency = 13;
5248   AX_surfxml_link_latency_file = 0;
5249   AX_surfxml_link_state = A_surfxml_link_state_ON;
5250   AX_surfxml_link_state_file = 0;
5251   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
5252   ENTER(AL_surfxml_link); pushbuffer(0);
5253   }
5254         YY_BREAK
5255
5256 case 210:
5257 /* rule 210 can match eol */
5258 YY_RULE_SETUP
5259 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
5260         YY_BREAK
5261 case 211:
5262 /* rule 211 can match eol */
5263 YY_RULE_SETUP
5264 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
5265         YY_BREAK
5266 case 212:
5267 /* rule 212 can match eol */
5268 YY_RULE_SETUP
5269 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
5270         YY_BREAK
5271 case 213:
5272 /* rule 213 can match eol */
5273 YY_RULE_SETUP
5274 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
5275         YY_BREAK
5276 case 214:
5277 /* rule 214 can match eol */
5278 YY_RULE_SETUP
5279 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
5280         YY_BREAK
5281 case 215:
5282 /* rule 215 can match eol */
5283 YY_RULE_SETUP
5284 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
5285         YY_BREAK
5286 case 216:
5287 /* rule 216 can match eol */
5288 YY_RULE_SETUP
5289 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
5290         YY_BREAK
5291 case 217:
5292 /* rule 217 can match eol */
5293 YY_RULE_SETUP
5294 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
5295         YY_BREAK
5296 case 218:
5297 /* rule 218 can match eol */
5298 YY_RULE_SETUP
5299 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
5300         YY_BREAK
5301 case 219:
5302 /* rule 219 can match eol */
5303 YY_RULE_SETUP
5304 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
5305         YY_BREAK
5306 case 220:
5307 /* rule 220 can match eol */
5308 case 221:
5309 /* rule 221 can match eol */
5310 YY_RULE_SETUP
5311 A_surfxml_link_state = A_surfxml_link_state_ON;
5312         YY_BREAK
5313 case 222:
5314 /* rule 222 can match eol */
5315 case 223:
5316 /* rule 223 can match eol */
5317 YY_RULE_SETUP
5318 A_surfxml_link_state = A_surfxml_link_state_OFF;
5319         YY_BREAK
5320 case 224:
5321 /* rule 224 can match eol */
5322 YY_RULE_SETUP
5323 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
5324         YY_BREAK
5325 case 225:
5326 /* rule 225 can match eol */
5327 YY_RULE_SETUP
5328 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
5329         YY_BREAK
5330 case 226:
5331 /* rule 226 can match eol */
5332 case 227:
5333 /* rule 227 can match eol */
5334 YY_RULE_SETUP
5335 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
5336         YY_BREAK
5337 case 228:
5338 /* rule 228 can match eol */
5339 case 229:
5340 /* rule 229 can match eol */
5341 YY_RULE_SETUP
5342 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
5343         YY_BREAK
5344 case 230:
5345 /* rule 230 can match eol */
5346 case 231:
5347 /* rule 231 can match eol */
5348 YY_RULE_SETUP
5349 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FULLDUPLEX;
5350         YY_BREAK
5351 case 232:
5352 YY_RULE_SETUP
5353 {
5354   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
5355   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
5356   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
5357  }
5358         YY_BREAK
5359 case 233:
5360 YY_RULE_SETUP
5361 {
5362   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
5363   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
5364   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
5365   switch (YY_START) {
5366    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5367    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5368   }
5369  }
5370         YY_BREAK
5371 case 234:
5372 YY_RULE_SETUP
5373 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
5374         YY_BREAK
5375 case 235:
5376 YY_RULE_SETUP
5377 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
5378         YY_BREAK
5379 case YY_STATE_EOF(AL_surfxml_link):
5380 FAIL("EOF in attribute list of `link' element.");
5381         YY_BREAK
5382
5383 case 236:
5384 /* rule 236 can match eol */
5385 YY_RULE_SETUP
5386 {
5387   LEAVE;
5388   ETag_surfxml_link();
5389   popbuffer(); /* attribute */
5390   switch (YY_START) {
5391    case S_surfxml_AS_11: case S_surfxml_AS_10: case S_surfxml_AS: SET(S_surfxml_AS_11); break;
5392    case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
5393   }
5394  }
5395         YY_BREAK
5396 case 237:
5397 /* rule 237 can match eol */
5398 YY_RULE_SETUP
5399 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
5400         YY_BREAK
5401 case 238:
5402 YY_RULE_SETUP
5403 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
5404         YY_BREAK
5405 case YY_STATE_EOF(E_surfxml_link):
5406 case YY_STATE_EOF(S_surfxml_link_2):
5407 case YY_STATE_EOF(S_surfxml_link):
5408 FAIL("Premature EOF: `</link>' expected.");
5409         YY_BREAK
5410
5411 case 239:
5412 /* rule 239 can match eol */
5413 YY_RULE_SETUP
5414 FAIL("Starting tag <route> is not allowed here.");
5415         YY_BREAK
5416 case 240:
5417 /* rule 240 can match eol */
5418 YY_RULE_SETUP
5419 {
5420   AX_surfxml_route_src = 0;
5421   AX_surfxml_route_dst = 0;
5422   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
5423   ENTER(AL_surfxml_route); pushbuffer(0);
5424   }
5425         YY_BREAK
5426
5427 case 241:
5428 /* rule 241 can match eol */
5429 YY_RULE_SETUP
5430 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
5431         YY_BREAK
5432 case 242:
5433 /* rule 242 can match eol */
5434 YY_RULE_SETUP
5435 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
5436         YY_BREAK
5437 case 243:
5438 /* rule 243 can match eol */
5439 YY_RULE_SETUP
5440 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
5441         YY_BREAK
5442 case 244:
5443 /* rule 244 can match eol */
5444 YY_RULE_SETUP
5445 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
5446         YY_BREAK
5447 case 245:
5448 /* rule 245 can match eol */
5449 case 246:
5450 /* rule 246 can match eol */
5451 YY_RULE_SETUP
5452 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
5453         YY_BREAK
5454 case 247:
5455 /* rule 247 can match eol */
5456 case 248:
5457 /* rule 248 can match eol */
5458 YY_RULE_SETUP
5459 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
5460         YY_BREAK
5461 case 249:
5462 YY_RULE_SETUP
5463 {
5464   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
5465   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
5466   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
5467  }
5468         YY_BREAK
5469 case 250:
5470 YY_RULE_SETUP
5471 {
5472   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
5473   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
5474   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
5475   switch (YY_START) {
5476    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_11: case S_surfxml_AS_13: case S_surfxml_AS: SET(S_surfxml_AS_13); break;
5477   }
5478  }
5479         YY_BREAK
5480 case 251:
5481 YY_RULE_SETUP
5482 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
5483         YY_BREAK
5484 case 252:
5485 YY_RULE_SETUP
5486 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
5487         YY_BREAK
5488 case YY_STATE_EOF(AL_surfxml_route):
5489 FAIL("EOF in attribute list of `route' element.");
5490         YY_BREAK
5491
5492 case 253:
5493 /* rule 253 can match eol */
5494 YY_RULE_SETUP
5495 {
5496   LEAVE;
5497   ETag_surfxml_route();
5498   popbuffer(); /* attribute */
5499   switch (YY_START) {
5500    case S_surfxml_AS_12: case S_surfxml_AS_9: case S_surfxml_AS_11: case S_surfxml_AS_13: case S_surfxml_AS: SET(S_surfxml_AS_13); break;
5501   }
5502  }
5503         YY_BREAK
5504 case 254:
5505 /* rule 254 can match eol */
5506 YY_RULE_SETUP
5507 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
5508         YY_BREAK
5509 case 255:
5510 YY_RULE_SETUP
5511 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
5512         YY_BREAK
5513 case YY_STATE_EOF(S_surfxml_route):
5514 case YY_STATE_EOF(S_surfxml_route_2):
5515 case YY_STATE_EOF(E_surfxml_route):
5516 FAIL("Premature EOF: `</route>' expected.");
5517         YY_BREAK
5518
5519 case 256:
5520 /* rule 256 can match eol */
5521 YY_RULE_SETUP
5522 FAIL("Starting tag <ASroute> is not allowed here.");
5523         YY_BREAK
5524 case 257:
5525 /* rule 257 can match eol */
5526 YY_RULE_SETUP
5527 {
5528   AX_surfxml_ASroute_src = 0;
5529   AX_surfxml_ASroute_dst = 0;
5530   AX_surfxml_ASroute_gw_src = 0;
5531   AX_surfxml_ASroute_gw_dst = 0;
5532   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5533   ENTER(AL_surfxml_ASroute); pushbuffer(0);
5534   }
5535         YY_BREAK
5536
5537 case 258:
5538 /* rule 258 can match eol */
5539 YY_RULE_SETUP
5540 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
5541         YY_BREAK
5542 case 259:
5543 /* rule 259 can match eol */
5544 YY_RULE_SETUP
5545 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
5546         YY_BREAK
5547 case 260:
5548 /* rule 260 can match eol */
5549 YY_RULE_SETUP
5550 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
5551         YY_BREAK
5552 case 261:
5553 /* rule 261 can match eol */
5554 YY_RULE_SETUP
5555 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
5556         YY_BREAK
5557 case 262:
5558 /* rule 262 can match eol */
5559 YY_RULE_SETUP
5560 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_src);
5561         YY_BREAK
5562 case 263:
5563 /* rule 263 can match eol */
5564 YY_RULE_SETUP
5565 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_src);
5566         YY_BREAK
5567 case 264:
5568 /* rule 264 can match eol */
5569 YY_RULE_SETUP
5570 ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw_dst);
5571         YY_BREAK
5572 case 265:
5573 /* rule 265 can match eol */
5574 YY_RULE_SETUP
5575 ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw_dst);
5576         YY_BREAK
5577 case 266:
5578 /* rule 266 can match eol */
5579 case 267:
5580 /* rule 267 can match eol */
5581 YY_RULE_SETUP
5582 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5583         YY_BREAK
5584 case 268:
5585 /* rule 268 can match eol */
5586 case 269:
5587 /* rule 269 can match eol */
5588 YY_RULE_SETUP
5589 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
5590         YY_BREAK
5591 case 270:
5592 YY_RULE_SETUP
5593 {
5594   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5595   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5596   if (!AX_surfxml_ASroute_gw_src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5597   if (!AX_surfxml_ASroute_gw_dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5598   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
5599  }
5600         YY_BREAK
5601 case 271:
5602 YY_RULE_SETUP
5603 {
5604   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5605   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5606   if (!AX_surfxml_ASroute_gw_src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5607   if (!AX_surfxml_ASroute_gw_dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5608   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
5609   switch (YY_START) {
5610    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5611   }
5612  }
5613         YY_BREAK
5614 case 272:
5615 YY_RULE_SETUP
5616 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
5617         YY_BREAK
5618 case 273:
5619 YY_RULE_SETUP
5620 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
5621         YY_BREAK
5622 case YY_STATE_EOF(AL_surfxml_ASroute):
5623 FAIL("EOF in attribute list of `ASroute' element.");
5624         YY_BREAK
5625
5626 case 274:
5627 /* rule 274 can match eol */
5628 YY_RULE_SETUP
5629 {
5630   LEAVE;
5631   ETag_surfxml_ASroute();
5632   popbuffer(); /* attribute */
5633   switch (YY_START) {
5634    case S_surfxml_AS_1: case S_surfxml_AS_5: case S_surfxml_AS: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_6); break;
5635   }
5636  }
5637         YY_BREAK
5638 case 275:
5639 /* rule 275 can match eol */
5640 YY_RULE_SETUP
5641 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
5642         YY_BREAK
5643 case 276:
5644 YY_RULE_SETUP
5645 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
5646         YY_BREAK
5647 case YY_STATE_EOF(E_surfxml_ASroute):
5648 case YY_STATE_EOF(S_surfxml_ASroute):
5649 case YY_STATE_EOF(S_surfxml_ASroute_2):
5650 FAIL("Premature EOF: `</ASroute>' expected.");
5651         YY_BREAK
5652
5653 case 277:
5654 /* rule 277 can match eol */
5655 YY_RULE_SETUP
5656 FAIL("Starting tag <link_ctn> is not allowed here.");
5657         YY_BREAK
5658 case 278:
5659 /* rule 278 can match eol */
5660 YY_RULE_SETUP
5661 {
5662   AX_surfxml_link_ctn_id = 0;
5663   AX_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
5664   ENTER(AL_surfxml_link_ctn); pushbuffer(0);
5665   }
5666         YY_BREAK
5667
5668 case 279:
5669 /* rule 279 can match eol */
5670 YY_RULE_SETUP
5671 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_ctn_id);
5672         YY_BREAK
5673 case 280:
5674 /* rule 280 can match eol */
5675 YY_RULE_SETUP
5676 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_ctn_id);
5677         YY_BREAK
5678 case 281:
5679 /* rule 281 can match eol */
5680 case 282:
5681 /* rule 282 can match eol */
5682 YY_RULE_SETUP
5683 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_UP;
5684         YY_BREAK
5685 case 283:
5686 /* rule 283 can match eol */
5687 case 284:
5688 /* rule 284 can match eol */
5689 YY_RULE_SETUP
5690 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_DOWN;
5691         YY_BREAK
5692 case 285:
5693 /* rule 285 can match eol */
5694 case 286:
5695 /* rule 286 can match eol */
5696 YY_RULE_SETUP
5697 A_surfxml_link_ctn_direction = A_surfxml_link_ctn_direction_NONE;
5698         YY_BREAK
5699 case 287:
5700 YY_RULE_SETUP
5701 {
5702   if (!AX_surfxml_link_ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
5703   LEAVE; STag_surfxml_link_ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link_ctn);
5704  }
5705         YY_BREAK
5706 case 288:
5707 YY_RULE_SETUP
5708 {
5709   if (!AX_surfxml_link_ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
5710   LEAVE; STag_surfxml_link_ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link_ctn(); popbuffer(); /* attribute */
5711   switch (YY_START) {
5712    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_2: case S_surfxml_bypassRoute_1: SET(S_surfxml_bypassRoute_2); break;
5713    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
5714    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
5715   }
5716  }
5717         YY_BREAK
5718 case 289:
5719 YY_RULE_SETUP
5720 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
5721         YY_BREAK
5722 case 290:
5723 YY_RULE_SETUP
5724 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
5725         YY_BREAK
5726 case YY_STATE_EOF(AL_surfxml_link_ctn):
5727 FAIL("EOF in attribute list of `link_ctn' element.");
5728         YY_BREAK
5729
5730 case 291:
5731 /* rule 291 can match eol */
5732 YY_RULE_SETUP
5733 {
5734   LEAVE;
5735   ETag_surfxml_link_ctn();
5736   popbuffer(); /* attribute */
5737   switch (YY_START) {
5738    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_2: case S_surfxml_bypassRoute_1: SET(S_surfxml_bypassRoute_2); break;
5739    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
5740    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
5741   }
5742  }
5743         YY_BREAK
5744 case 292:
5745 /* rule 292 can match eol */
5746 YY_RULE_SETUP
5747 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
5748         YY_BREAK
5749 case 293:
5750 YY_RULE_SETUP
5751 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
5752         YY_BREAK
5753 case YY_STATE_EOF(E_surfxml_link_ctn):
5754 FAIL("Premature EOF: `</link_ctn>' expected.");
5755         YY_BREAK
5756
5757 case 294:
5758 /* rule 294 can match eol */
5759 YY_RULE_SETUP
5760 FAIL("Starting tag <bypassRoute> is not allowed here.");
5761         YY_BREAK
5762 case 295:
5763 /* rule 295 can match eol */
5764 YY_RULE_SETUP
5765 {
5766   AX_surfxml_bypassRoute_src = 0;
5767   AX_surfxml_bypassRoute_dst = 0;
5768   AX_surfxml_bypassRoute_gw_src = 0;
5769   AX_surfxml_bypassRoute_gw_dst = 0;
5770   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
5771   }
5772         YY_BREAK
5773
5774 case 296:
5775 /* rule 296 can match eol */
5776 YY_RULE_SETUP
5777 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
5778         YY_BREAK
5779 case 297:
5780 /* rule 297 can match eol */
5781 YY_RULE_SETUP
5782 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
5783         YY_BREAK
5784 case 298:
5785 /* rule 298 can match eol */
5786 YY_RULE_SETUP
5787 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
5788         YY_BREAK
5789 case 299:
5790 /* rule 299 can match eol */
5791 YY_RULE_SETUP
5792 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
5793         YY_BREAK
5794 case 300:
5795 /* rule 300 can match eol */
5796 YY_RULE_SETUP
5797 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_gw_src);
5798         YY_BREAK
5799 case 301:
5800 /* rule 301 can match eol */
5801 YY_RULE_SETUP
5802 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_gw_src);
5803         YY_BREAK
5804 case 302:
5805 /* rule 302 can match eol */
5806 YY_RULE_SETUP
5807 ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_gw_dst);
5808         YY_BREAK
5809 case 303:
5810 /* rule 303 can match eol */
5811 YY_RULE_SETUP
5812 ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_gw_dst);
5813         YY_BREAK
5814 case 304:
5815 YY_RULE_SETUP
5816 {
5817   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
5818   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
5819   if (!AX_surfxml_bypassRoute_gw_src) FAIL("Required attribute `gw_src' not set for `bypassRoute' element.");
5820   if (!AX_surfxml_bypassRoute_gw_dst) FAIL("Required attribute `gw_dst' not set for `bypassRoute' element.");
5821   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
5822  }
5823         YY_BREAK
5824 case 305:
5825 YY_RULE_SETUP
5826 {
5827   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
5828   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
5829   if (!AX_surfxml_bypassRoute_gw_src) FAIL("Required attribute `gw_src' not set for `bypassRoute' element.");
5830   if (!AX_surfxml_bypassRoute_gw_dst) FAIL("Required attribute `gw_dst' not set for `bypassRoute' element.");
5831   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
5832   switch (YY_START) {
5833    case S_surfxml_AS_1: case S_surfxml_AS: case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
5834   }
5835  }
5836         YY_BREAK
5837 case 306:
5838 YY_RULE_SETUP
5839 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
5840         YY_BREAK
5841 case 307:
5842 YY_RULE_SETUP
5843 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
5844         YY_BREAK
5845 case YY_STATE_EOF(AL_surfxml_bypassRoute):
5846 FAIL("EOF in attribute list of `bypassRoute' element.");
5847         YY_BREAK
5848
5849 case 308:
5850 /* rule 308 can match eol */
5851 YY_RULE_SETUP
5852 {
5853   LEAVE;
5854   ETag_surfxml_bypassRoute();
5855   popbuffer(); /* attribute */
5856   switch (YY_START) {
5857    case S_surfxml_AS_1: case S_surfxml_AS: case S_surfxml_AS_8: case S_surfxml_AS_4: case S_surfxml_AS_7: case S_surfxml_AS_6: case S_surfxml_AS_3: SET(S_surfxml_AS_8); break;
5858   }
5859  }
5860         YY_BREAK
5861 case 309:
5862 /* rule 309 can match eol */
5863 YY_RULE_SETUP
5864 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
5865         YY_BREAK
5866 case 310:
5867 YY_RULE_SETUP
5868 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
5869         YY_BREAK
5870 case YY_STATE_EOF(S_surfxml_bypassRoute):
5871 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
5872 case YY_STATE_EOF(E_surfxml_bypassRoute):
5873 FAIL("Premature EOF: `</bypassRoute>' expected.");
5874         YY_BREAK
5875
5876 case 311:
5877 /* rule 311 can match eol */
5878 YY_RULE_SETUP
5879 FAIL("Starting tag <process> is not allowed here.");
5880         YY_BREAK
5881 case 312:
5882 /* rule 312 can match eol */
5883 YY_RULE_SETUP
5884 {
5885   AX_surfxml_process_host = 0;
5886   AX_surfxml_process_function = 0;
5887   AX_surfxml_process_start_time = 17;
5888   AX_surfxml_process_kill_time = 22;
5889   ENTER(AL_surfxml_process); pushbuffer(0);
5890   }
5891         YY_BREAK
5892
5893 case 313:
5894 /* rule 313 can match eol */
5895 YY_RULE_SETUP
5896 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
5897         YY_BREAK
5898 case 314:
5899 /* rule 314 can match eol */
5900 YY_RULE_SETUP
5901 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
5902         YY_BREAK
5903 case 315:
5904 /* rule 315 can match eol */
5905 YY_RULE_SETUP
5906 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
5907         YY_BREAK
5908 case 316:
5909 /* rule 316 can match eol */
5910 YY_RULE_SETUP
5911 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
5912         YY_BREAK
5913 case 317:
5914 /* rule 317 can match eol */
5915 YY_RULE_SETUP
5916 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
5917         YY_BREAK
5918 case 318:
5919 /* rule 318 can match eol */
5920 YY_RULE_SETUP
5921 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
5922         YY_BREAK
5923 case 319:
5924 /* rule 319 can match eol */
5925 YY_RULE_SETUP
5926 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
5927         YY_BREAK
5928 case 320:
5929 /* rule 320 can match eol */
5930 YY_RULE_SETUP
5931 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
5932         YY_BREAK
5933 case 321:
5934 YY_RULE_SETUP
5935 {
5936   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
5937   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
5938   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
5939  }
5940         YY_BREAK
5941 case 322:
5942 YY_RULE_SETUP
5943 {
5944   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
5945   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
5946   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
5947   switch (YY_START) {
5948    case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_5: case S_surfxml_platform_2: case S_surfxml_platform_1: case S_surfxml_platform: SET(S_surfxml_platform_6); break;
5949   }
5950  }
5951         YY_BREAK
5952 case 323:
5953 YY_RULE_SETUP
5954 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
5955         YY_BREAK
5956 case 324:
5957 YY_RULE_SETUP
5958 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
5959         YY_BREAK
5960 case YY_STATE_EOF(AL_surfxml_process):
5961 FAIL("EOF in attribute list of `process' element.");
5962         YY_BREAK
5963
5964 case 325:
5965 /* rule 325 can match eol */
5966 YY_RULE_SETUP
5967 {
5968   LEAVE;
5969   ETag_surfxml_process();
5970   popbuffer(); /* attribute */
5971   switch (YY_START) {
5972    case S_surfxml_platform_6: case S_surfxml_platform_4: case S_surfxml_platform_5: case S_surfxml_platform_2: case S_surfxml_platform_1: case S_surfxml_platform: SET(S_surfxml_platform_6); break;
5973   }
5974  }
5975         YY_BREAK
5976 case 326:
5977 /* rule 326 can match eol */
5978 YY_RULE_SETUP
5979 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
5980         YY_BREAK
5981 case 327:
5982 YY_RULE_SETUP
5983 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
5984         YY_BREAK
5985 case YY_STATE_EOF(E_surfxml_process):
5986 case YY_STATE_EOF(S_surfxml_process):
5987 case YY_STATE_EOF(S_surfxml_process_2):
5988 FAIL("Premature EOF: `</process>' expected.");
5989         YY_BREAK
5990
5991 case 328:
5992 /* rule 328 can match eol */
5993 YY_RULE_SETUP
5994 FAIL("Starting tag <argument> is not allowed here.");
5995         YY_BREAK
5996 case 329:
5997 /* rule 329 can match eol */
5998 YY_RULE_SETUP
5999 {
6000   AX_surfxml_argument_value = 0;
6001   ENTER(AL_surfxml_argument); pushbuffer(0);
6002   }
6003         YY_BREAK
6004
6005 case 330:
6006 /* rule 330 can match eol */
6007 YY_RULE_SETUP
6008 ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
6009         YY_BREAK
6010 case 331:
6011 /* rule 331 can match eol */
6012 YY_RULE_SETUP
6013 ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
6014         YY_BREAK
6015 case 332:
6016 YY_RULE_SETUP
6017 {
6018   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
6019   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
6020  }
6021         YY_BREAK
6022 case 333:
6023 YY_RULE_SETUP
6024 {
6025   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
6026   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
6027   switch (YY_START) {
6028    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6029   }
6030  }
6031         YY_BREAK
6032 case 334:
6033 YY_RULE_SETUP
6034 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
6035         YY_BREAK
6036 case 335:
6037 YY_RULE_SETUP
6038 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
6039         YY_BREAK
6040 case YY_STATE_EOF(AL_surfxml_argument):
6041 FAIL("EOF in attribute list of `argument' element.");
6042         YY_BREAK
6043
6044 case 336:
6045 /* rule 336 can match eol */
6046 YY_RULE_SETUP
6047 {
6048   LEAVE;
6049   ETag_surfxml_argument();
6050   popbuffer(); /* attribute */
6051   switch (YY_START) {
6052    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6053   }
6054  }
6055         YY_BREAK
6056 case 337:
6057 /* rule 337 can match eol */
6058 YY_RULE_SETUP
6059 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
6060         YY_BREAK
6061 case 338:
6062 YY_RULE_SETUP
6063 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
6064         YY_BREAK
6065 case YY_STATE_EOF(E_surfxml_argument):
6066 FAIL("Premature EOF: `</argument>' expected.");
6067         YY_BREAK
6068
6069 case 339:
6070 /* rule 339 can match eol */
6071 YY_RULE_SETUP
6072 FAIL("Starting tag <config> is not allowed here.");
6073         YY_BREAK
6074 case 340:
6075 /* rule 340 can match eol */
6076 YY_RULE_SETUP
6077 {
6078   AX_surfxml_config_id = 0;
6079   ENTER(AL_surfxml_config); pushbuffer(0);
6080   }
6081         YY_BREAK
6082
6083 case 341:
6084 /* rule 341 can match eol */
6085 YY_RULE_SETUP
6086 ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
6087         YY_BREAK
6088 case 342:
6089 /* rule 342 can match eol */
6090 YY_RULE_SETUP
6091 ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
6092         YY_BREAK
6093 case 343:
6094 YY_RULE_SETUP
6095 {
6096   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
6097  }
6098         YY_BREAK
6099 case 344:
6100 YY_RULE_SETUP
6101 {
6102   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
6103   switch (YY_START) {
6104    case S_surfxml_platform: SET(S_surfxml_platform_1); break;
6105   }
6106  }
6107         YY_BREAK
6108 case 345:
6109 YY_RULE_SETUP
6110 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
6111         YY_BREAK
6112 case 346:
6113 YY_RULE_SETUP
6114 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
6115         YY_BREAK
6116 case YY_STATE_EOF(AL_surfxml_config):
6117 FAIL("EOF in attribute list of `config' element.");
6118         YY_BREAK
6119
6120 case 347:
6121 /* rule 347 can match eol */
6122 YY_RULE_SETUP
6123 {
6124   LEAVE;
6125   ETag_surfxml_config();
6126   popbuffer(); /* attribute */
6127   switch (YY_START) {
6128    case S_surfxml_platform: SET(S_surfxml_platform_1); break;
6129   }
6130  }
6131         YY_BREAK
6132 case 348:
6133 /* rule 348 can match eol */
6134 YY_RULE_SETUP
6135 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
6136         YY_BREAK
6137 case 349:
6138 YY_RULE_SETUP
6139 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
6140         YY_BREAK
6141 case YY_STATE_EOF(S_surfxml_config):
6142 case YY_STATE_EOF(S_surfxml_config_2):
6143 case YY_STATE_EOF(E_surfxml_config):
6144 FAIL("Premature EOF: `</config>' expected.");
6145         YY_BREAK
6146
6147 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
6148   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
6149 case 350:
6150 /* rule 350 can match eol */
6151 YY_RULE_SETUP
6152 FAIL("Starting tag <prop> is not allowed here.");
6153         YY_BREAK
6154 case 351:
6155 /* rule 351 can match eol */
6156 YY_RULE_SETUP
6157 {
6158   AX_surfxml_prop_id = 0;
6159   AX_surfxml_prop_value = 0;
6160   ENTER(AL_surfxml_prop); pushbuffer(0);
6161   }
6162         YY_BREAK
6163
6164 case 352:
6165 /* rule 352 can match eol */
6166 YY_RULE_SETUP
6167 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
6168         YY_BREAK
6169 case 353:
6170 /* rule 353 can match eol */
6171 YY_RULE_SETUP
6172 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
6173         YY_BREAK
6174 case 354:
6175 /* rule 354 can match eol */
6176 YY_RULE_SETUP
6177 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
6178         YY_BREAK
6179 case 355:
6180 /* rule 355 can match eol */
6181 YY_RULE_SETUP
6182 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
6183         YY_BREAK
6184 case 356:
6185 YY_RULE_SETUP
6186 {
6187   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
6188   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
6189   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
6190  }
6191         YY_BREAK
6192 case 357:
6193 YY_RULE_SETUP
6194 {
6195   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
6196   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
6197   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
6198   switch (YY_START) {
6199    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
6200    case S_surfxml_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
6201    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6202    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
6203    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
6204   }
6205  }
6206         YY_BREAK
6207 case 358:
6208 YY_RULE_SETUP
6209 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
6210         YY_BREAK
6211 case 359:
6212 YY_RULE_SETUP
6213 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
6214         YY_BREAK
6215 case YY_STATE_EOF(AL_surfxml_prop):
6216 FAIL("EOF in attribute list of `prop' element.");
6217         YY_BREAK
6218
6219 case 360:
6220 /* rule 360 can match eol */
6221 YY_RULE_SETUP
6222 {
6223   LEAVE;
6224   ETag_surfxml_prop();
6225   popbuffer(); /* attribute */
6226   switch (YY_START) {
6227    case S_surfxml_random: case S_surfxml_random_2: case S_surfxml_random_1: SET(S_surfxml_random_2); break;
6228    case S_surfxml_config_1: case S_surfxml_config: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
6229    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
6230    case S_surfxml_host_1: case S_surfxml_host_2: case S_surfxml_host: SET(S_surfxml_host_2); break;
6231    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
6232   }
6233  }
6234         YY_BREAK
6235 case 361:
6236 /* rule 361 can match eol */
6237 YY_RULE_SETUP
6238 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
6239         YY_BREAK
6240 case 362:
6241 YY_RULE_SETUP
6242 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
6243         YY_BREAK
6244 case YY_STATE_EOF(E_surfxml_prop):
6245 FAIL("Premature EOF: `</prop>' expected.");
6246         YY_BREAK
6247
6248 /* EPILOG: after the root element. */
6249
6250 case 363:
6251 YY_RULE_SETUP
6252 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
6253         YY_BREAK
6254 case YY_STATE_EOF(EPILOG):
6255 SUCCEED;
6256         YY_BREAK
6257
6258 /* CHARACTER DATA. */
6259
6260 /* Non-defined standard entities... */
6261 case 364:
6262 YY_RULE_SETUP
6263 BUFFERPUTC('&');
6264         YY_BREAK
6265 case 365:
6266 YY_RULE_SETUP
6267 BUFFERPUTC('<');
6268         YY_BREAK
6269 case 366:
6270 YY_RULE_SETUP
6271 BUFFERPUTC('>');
6272         YY_BREAK
6273 case 367:
6274 YY_RULE_SETUP
6275 BUFFERPUTC('\'');
6276         YY_BREAK
6277 case 368:
6278 YY_RULE_SETUP
6279 BUFFERPUTC('"');
6280         YY_BREAK
6281 /* Character entities. */
6282 case 369:
6283 YY_RULE_SETUP
6284 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
6285         YY_BREAK
6286 case 370:
6287 YY_RULE_SETUP
6288 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
6289         YY_BREAK
6290
6291 case 371:
6292 /* rule 371 can match eol */
6293 case 372:
6294 /* rule 372 can match eol */
6295 case 373:
6296 /* rule 373 can match eol */
6297 case 374:
6298 /* rule 374 can match eol */
6299 YY_RULE_SETUP
6300 BUFFERPUTC('\n');
6301         YY_BREAK
6302
6303 case 375:
6304 YY_RULE_SETUP
6305 ENTER(CDATA);
6306         YY_BREAK
6307 case 376:
6308 YY_RULE_SETUP
6309 FAIL("Unexpected `]""]>' in character data.");
6310         YY_BREAK
6311
6312 case 377:
6313 YY_RULE_SETUP
6314 BUFFERDONE; LEAVE;
6315         YY_BREAK
6316 case YY_STATE_EOF(VALUE1):
6317 FAIL("EOF in literal (\"'\" expected).");
6318         YY_BREAK
6319
6320 case 378:
6321 YY_RULE_SETUP
6322 BUFFERDONE; LEAVE;
6323         YY_BREAK
6324 case YY_STATE_EOF(VALUE2):
6325 FAIL("EOF in literal (`\"' expected).");
6326         YY_BREAK
6327
6328 case 379:
6329 /* rule 379 can match eol */
6330 YY_RULE_SETUP
6331 BUFFERPUTC(surf_parse_text[0]);
6332         YY_BREAK
6333 case 380:
6334 YY_RULE_SETUP
6335 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
6336         YY_BREAK
6337
6338 case 381:
6339 YY_RULE_SETUP
6340 LEAVE;
6341         YY_BREAK
6342 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
6343 case 382:
6344 YY_RULE_SETUP
6345 BUFFERPUTC(surf_parse_text[0]);
6346         YY_BREAK
6347 case YY_STATE_EOF(CDATA):
6348 FAIL("EOF in CDATA section.");
6349         YY_BREAK
6350
6351 /* Impossible rules to avoid warnings from flex(1). */
6352 /* Ideally, this should be replaced by code in flexml.pl that
6353     generates just the states not covered by other rules. */
6354
6355 case 383:
6356 /* rule 383 can match eol */
6357 YY_RULE_SETUP
6358 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
6359         YY_BREAK
6360
6361 case 384:
6362 YY_RULE_SETUP
6363 ECHO;
6364         YY_BREAK
6365 case YY_STATE_EOF(INITIAL):
6366 case YY_STATE_EOF(ROOT_surfxml_platform):
6367 case YY_STATE_EOF(S_surfxml_platform_3):
6368 case YY_STATE_EOF(S_surfxml_platform_5):
6369 case YY_STATE_EOF(S_surfxml_random_1):
6370 case YY_STATE_EOF(S_surfxml_AS_2):
6371 case YY_STATE_EOF(S_surfxml_AS_5):
6372 case YY_STATE_EOF(S_surfxml_AS_7):
6373 case YY_STATE_EOF(S_surfxml_AS_10):
6374 case YY_STATE_EOF(S_surfxml_AS_12):
6375 case YY_STATE_EOF(S_surfxml_host_1):
6376 case YY_STATE_EOF(S_surfxml_link_1):
6377 case YY_STATE_EOF(S_surfxml_route_1):
6378 case YY_STATE_EOF(S_surfxml_ASroute_1):
6379 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
6380 case YY_STATE_EOF(S_surfxml_process_1):
6381 case YY_STATE_EOF(S_surfxml_config_1):
6382 case YY_STATE_EOF(IMPOSSIBLE):
6383         yyterminate();
6384
6385         case YY_END_OF_BUFFER:
6386                 {
6387                 /* Amount of text matched not including the EOB char. */
6388                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
6389
6390                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
6391                 *yy_cp = (yy_hold_char);
6392                 YY_RESTORE_YY_MORE_OFFSET
6393
6394                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
6395                         {
6396                         /* We're scanning a new file or input source.  It's
6397                          * possible that this happened because the user
6398                          * just pointed surf_parse_in at a new source and called
6399                          * surf_parse_lex().  If so, then we have to assure
6400                          * consistency between YY_CURRENT_BUFFER and our
6401                          * globals.  Here is the right place to do so, because
6402                          * this is the first action (other than possibly a
6403                          * back-up) that will match for the new input source.
6404                          */
6405                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6406                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
6407                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6408                         }
6409
6410                 /* Note that here we test for yy_c_buf_p "<=" to the position
6411                  * of the first EOB in the buffer, since yy_c_buf_p will
6412                  * already have been incremented past the NUL character
6413                  * (since all states make transitions on EOB to the
6414                  * end-of-buffer state).  Contrast this with the test
6415                  * in input().
6416                  */
6417                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6418                         { /* This was really a NUL. */
6419                         yy_state_type yy_next_state;
6420
6421                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
6422
6423                         yy_current_state = yy_get_previous_state(  );
6424
6425                         /* Okay, we're now positioned to make the NUL
6426                          * transition.  We couldn't have
6427                          * yy_get_previous_state() go ahead and do it
6428                          * for us because it doesn't know how to deal
6429                          * with the possibility of jamming (and we don't
6430                          * want to build jamming into it because then it
6431                          * will run more slowly).
6432                          */
6433
6434                         yy_next_state = yy_try_NUL_trans( yy_current_state );
6435
6436                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6437
6438                         if ( yy_next_state )
6439                                 {
6440                                 /* Consume the NUL. */
6441                                 yy_cp = ++(yy_c_buf_p);
6442                                 yy_current_state = yy_next_state;
6443                                 goto yy_match;
6444                                 }
6445
6446                         else
6447                                 {
6448                                 yy_cp = (yy_c_buf_p);
6449                                 goto yy_find_action;
6450                                 }
6451                         }
6452
6453                 else switch ( yy_get_next_buffer(  ) )
6454                         {
6455                         case EOB_ACT_END_OF_FILE:
6456                                 {
6457                                 (yy_did_buffer_switch_on_eof) = 0;
6458
6459                                 if ( surf_parse_wrap( ) )
6460                                         {
6461                                         /* Note: because we've taken care in
6462                                          * yy_get_next_buffer() to have set up
6463                                          * surf_parse_text, we can now set up
6464                                          * yy_c_buf_p so that if some total
6465                                          * hoser (like flex itself) wants to
6466                                          * call the scanner after we return the
6467                                          * YY_NULL, it'll still work - another
6468                                          * YY_NULL will get returned.
6469                                          */
6470                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
6471
6472                                         yy_act = YY_STATE_EOF(YY_START);
6473                                         goto do_action;
6474                                         }
6475
6476                                 else
6477                                         {
6478                                         if ( ! (yy_did_buffer_switch_on_eof) )
6479                                                 YY_NEW_FILE;
6480                                         }
6481                                 break;
6482                                 }
6483
6484                         case EOB_ACT_CONTINUE_SCAN:
6485                                 (yy_c_buf_p) =
6486                                         (yytext_ptr) + yy_amount_of_matched_text;
6487
6488                                 yy_current_state = yy_get_previous_state(  );
6489
6490                                 yy_cp = (yy_c_buf_p);
6491                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6492                                 goto yy_match;
6493
6494                         case EOB_ACT_LAST_MATCH:
6495                                 (yy_c_buf_p) =
6496                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
6497
6498                                 yy_current_state = yy_get_previous_state(  );
6499
6500                                 yy_cp = (yy_c_buf_p);
6501                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6502                                 goto yy_find_action;
6503                         }
6504                 break;
6505                 }
6506
6507         default:
6508                 YY_FATAL_ERROR(
6509                         "fatal flex scanner internal error--no action found" );
6510         } /* end of action switch */
6511                 } /* end of scanning one token */
6512 } /* end of surf_parse_lex */
6513
6514 /* yy_get_next_buffer - try to read in a new buffer
6515  *
6516  * Returns a code representing an action:
6517  *      EOB_ACT_LAST_MATCH -
6518  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
6519  *      EOB_ACT_END_OF_FILE - end of file
6520  */
6521 static int yy_get_next_buffer (void)
6522 {
6523         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6524         register char *source = (yytext_ptr);
6525         register int number_to_move, i;
6526         int ret_val;
6527
6528         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
6529                 YY_FATAL_ERROR(
6530                 "fatal flex scanner internal error--end of buffer missed" );
6531
6532         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
6533                 { /* Don't try to fill the buffer, so this is an EOF. */
6534                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
6535                         {
6536                         /* We matched a single character, the EOB, so
6537                          * treat this as a final EOF.
6538                          */
6539                         return EOB_ACT_END_OF_FILE;
6540                         }
6541
6542                 else
6543                         {
6544                         /* We matched some text prior to the EOB, first
6545                          * process it.
6546                          */
6547                         return EOB_ACT_LAST_MATCH;
6548                         }
6549                 }
6550
6551         /* Try to read more data. */
6552
6553         /* First move last chars to start of buffer. */
6554         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6555
6556         for ( i = 0; i < number_to_move; ++i )
6557                 *(dest++) = *(source++);
6558
6559         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6560                 /* don't do the read, it's not guaranteed to return an EOF,
6561                  * just force an EOF
6562                  */
6563                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6564
6565         else
6566                 {
6567                         int num_to_read =
6568                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6569
6570                 while ( num_to_read <= 0 )
6571                         { /* Not enough room in the buffer - grow it. */
6572
6573                         /* just a shorter name for the current buffer */
6574                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
6575
6576                         int yy_c_buf_p_offset =
6577                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
6578
6579                         if ( b->yy_is_our_buffer )
6580                                 {
6581                                 int new_size = b->yy_buf_size * 2;
6582
6583                                 if ( new_size <= 0 )
6584                                         b->yy_buf_size += b->yy_buf_size / 8;
6585                                 else
6586                                         b->yy_buf_size *= 2;
6587
6588                                 b->yy_ch_buf = (char *)
6589                                         /* Include room in for 2 EOB chars. */
6590                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
6591                                 }
6592                         else
6593                                 /* Can't grow it, we don't own it. */
6594                                 b->yy_ch_buf = 0;
6595
6596                         if ( ! b->yy_ch_buf )
6597                                 YY_FATAL_ERROR(
6598                                 "fatal error - scanner input buffer overflow" );
6599
6600                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
6601
6602                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
6603                                                 number_to_move - 1;
6604
6605                         }
6606
6607                 if ( num_to_read > YY_READ_BUF_SIZE )
6608                         num_to_read = YY_READ_BUF_SIZE;
6609
6610                 /* Read in more data. */
6611                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6612                         (yy_n_chars), (size_t) num_to_read );
6613
6614                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6615                 }
6616
6617         if ( (yy_n_chars) == 0 )
6618                 {
6619                 if ( number_to_move == YY_MORE_ADJ )
6620                         {
6621                         ret_val = EOB_ACT_END_OF_FILE;
6622                         surf_parse_restart(surf_parse_in  );
6623                         }
6624
6625                 else
6626                         {
6627                         ret_val = EOB_ACT_LAST_MATCH;
6628                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6629                                 YY_BUFFER_EOF_PENDING;
6630                         }
6631                 }
6632
6633         else
6634                 ret_val = EOB_ACT_CONTINUE_SCAN;
6635
6636         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6637                 /* Extend the array by 50%, plus the number we really need. */
6638                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6639                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
6640                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6641                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6642         }
6643
6644         (yy_n_chars) += number_to_move;
6645         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
6646         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
6647
6648         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6649
6650         return ret_val;
6651 }
6652
6653 /* yy_get_previous_state - get the state just before the EOB char was reached */
6654
6655     static yy_state_type yy_get_previous_state (void)
6656 {
6657         register yy_state_type yy_current_state;
6658         register char *yy_cp;
6659     
6660         yy_current_state = (yy_start);
6661
6662         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6663                 {
6664                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6665                 if ( yy_accept[yy_current_state] )
6666                         {
6667                         (yy_last_accepting_state) = yy_current_state;
6668                         (yy_last_accepting_cpos) = yy_cp;
6669                         }
6670                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6671                         {
6672                         yy_current_state = (int) yy_def[yy_current_state];
6673                         if ( yy_current_state >= 2257 )
6674                                 yy_c = yy_meta[(unsigned int) yy_c];
6675                         }
6676                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6677                 }
6678
6679         return yy_current_state;
6680 }
6681
6682 /* yy_try_NUL_trans - try to make a transition on the NUL character
6683  *
6684  * synopsis
6685  *      next_state = yy_try_NUL_trans( current_state );
6686  */
6687     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
6688 {
6689         register int yy_is_jam;
6690         register char *yy_cp = (yy_c_buf_p);
6691
6692         register YY_CHAR yy_c = 1;
6693         if ( yy_accept[yy_current_state] )
6694                 {
6695                 (yy_last_accepting_state) = yy_current_state;
6696                 (yy_last_accepting_cpos) = yy_cp;
6697                 }
6698         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6699                 {
6700                 yy_current_state = (int) yy_def[yy_current_state];
6701                 if ( yy_current_state >= 2257 )
6702                         yy_c = yy_meta[(unsigned int) yy_c];
6703                 }
6704         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6705         yy_is_jam = (yy_current_state == 2256);
6706
6707         return yy_is_jam ? 0 : yy_current_state;
6708 }
6709
6710 #ifndef YY_NO_INPUT
6711 #ifdef __cplusplus
6712     static int yyinput (void)
6713 #else
6714     static int input  (void)
6715 #endif
6716
6717 {
6718         int c;
6719     
6720         *(yy_c_buf_p) = (yy_hold_char);
6721
6722         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6723                 {
6724                 /* yy_c_buf_p now points to the character we want to return.
6725                  * If this occurs *before* the EOB characters, then it's a
6726                  * valid NUL; if not, then we've hit the end of the buffer.
6727                  */
6728                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6729                         /* This was really a NUL. */
6730                         *(yy_c_buf_p) = '\0';
6731
6732                 else
6733                         { /* need more input */
6734                         int offset = (yy_c_buf_p) - (yytext_ptr);
6735                         ++(yy_c_buf_p);
6736
6737                         switch ( yy_get_next_buffer(  ) )
6738                                 {
6739                                 case EOB_ACT_LAST_MATCH:
6740                                         /* This happens because yy_g_n_b()
6741                                          * sees that we've accumulated a
6742                                          * token and flags that we need to
6743                                          * try matching the token before
6744                                          * proceeding.  But for input(),
6745                                          * there's no matching to consider.
6746                                          * So convert the EOB_ACT_LAST_MATCH
6747                                          * to EOB_ACT_END_OF_FILE.
6748                                          */
6749
6750                                         /* Reset buffer status. */
6751                                         surf_parse_restart(surf_parse_in );
6752
6753                                         /*FALLTHROUGH*/
6754
6755                                 case EOB_ACT_END_OF_FILE:
6756                                         {
6757                                         if ( surf_parse_wrap( ) )
6758                                                 return EOF;
6759
6760                                         if ( ! (yy_did_buffer_switch_on_eof) )
6761                                                 YY_NEW_FILE;
6762 #ifdef __cplusplus
6763                                         return yyinput();
6764 #else
6765                                         return input();
6766 #endif
6767                                         }
6768
6769                                 case EOB_ACT_CONTINUE_SCAN:
6770                                         (yy_c_buf_p) = (yytext_ptr) + offset;
6771                                         break;
6772                                 }
6773                         }
6774                 }
6775
6776         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
6777         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
6778         (yy_hold_char) = *++(yy_c_buf_p);
6779
6780         if ( c == '\n' )
6781                    
6782     surf_parse_lineno++;
6783 ;
6784
6785         return c;
6786 }
6787 #endif  /* ifndef YY_NO_INPUT */
6788
6789 /** Immediately switch to a different input stream.
6790  * @param input_file A readable stream.
6791  * 
6792  * @note This function does not reset the start condition to @c INITIAL .
6793  */
6794     void surf_parse_restart  (FILE * input_file )
6795 {
6796     
6797         if ( ! YY_CURRENT_BUFFER ){
6798         surf_parse_ensure_buffer_stack ();
6799                 YY_CURRENT_BUFFER_LVALUE =
6800             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
6801         }
6802
6803         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
6804         surf_parse__load_buffer_state( );
6805 }
6806
6807 /** Switch to a different input buffer.
6808  * @param new_buffer The new input buffer.
6809  * 
6810  */
6811     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
6812 {
6813     
6814         /* TODO. We should be able to replace this entire function body
6815          * with
6816          *              surf_parse_pop_buffer_state();
6817          *              surf_parse_push_buffer_state(new_buffer);
6818      */
6819         surf_parse_ensure_buffer_stack ();
6820         if ( YY_CURRENT_BUFFER == new_buffer )
6821                 return;
6822
6823         if ( YY_CURRENT_BUFFER )
6824                 {
6825                 /* Flush out information for old buffer. */
6826                 *(yy_c_buf_p) = (yy_hold_char);
6827                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6828                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6829                 }
6830
6831         YY_CURRENT_BUFFER_LVALUE = new_buffer;
6832         surf_parse__load_buffer_state( );
6833
6834         /* We don't actually know whether we did this switch during
6835          * EOF (surf_parse_wrap()) processing, but the only time this flag
6836          * is looked at is after surf_parse_wrap() is called, so it's safe
6837          * to go ahead and always set it.
6838          */
6839         (yy_did_buffer_switch_on_eof) = 1;
6840 }
6841
6842 static void surf_parse__load_buffer_state  (void)
6843 {
6844         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6845         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6846         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6847         (yy_hold_char) = *(yy_c_buf_p);
6848 }
6849
6850 /** Allocate and initialize an input buffer state.
6851  * @param file A readable stream.
6852  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6853  * 
6854  * @return the allocated buffer state.
6855  */
6856     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
6857 {
6858         YY_BUFFER_STATE b;
6859     
6860         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
6861         if ( ! b )
6862                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
6863
6864         b->yy_buf_size = size;
6865
6866         /* yy_ch_buf has to be 2 characters longer than the size given because
6867          * we need to put in 2 end-of-buffer characters.
6868          */
6869         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
6870         if ( ! b->yy_ch_buf )
6871                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
6872
6873         b->yy_is_our_buffer = 1;
6874
6875         surf_parse__init_buffer(b,file );
6876
6877         return b;
6878 }
6879
6880 /** Destroy the buffer.
6881  * @param b a buffer created with surf_parse__create_buffer()
6882  * 
6883  */
6884     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
6885 {
6886     
6887         if ( ! b )
6888                 return;
6889
6890         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6891                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6892
6893         if ( b->yy_is_our_buffer )
6894                 surf_parse_free((void *) b->yy_ch_buf  );
6895
6896         surf_parse_free((void *) b  );
6897 }
6898
6899 #ifndef __cplusplus
6900 extern int isatty (int );
6901 #endif /* __cplusplus */
6902     
6903 /* Initializes or reinitializes a buffer.
6904  * This function is sometimes called more than once on the same buffer,
6905  * such as during a surf_parse_restart() or at EOF.
6906  */
6907     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
6908
6909 {
6910         int oerrno = errno;
6911     
6912         surf_parse__flush_buffer(b );
6913
6914         b->yy_input_file = file;
6915         b->yy_fill_buffer = 1;
6916
6917     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
6918      * called from surf_parse_restart() or through yy_get_next_buffer.
6919      * In that case, we don't want to reset the lineno or column.
6920      */
6921     if (b != YY_CURRENT_BUFFER){
6922         b->yy_bs_lineno = 1;
6923         b->yy_bs_column = 0;
6924     }
6925
6926         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6927     
6928         errno = oerrno;
6929 }
6930
6931 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6932  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6933  * 
6934  */
6935     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
6936 {
6937         if ( ! b )
6938                 return;
6939
6940         b->yy_n_chars = 0;
6941
6942         /* We always need two end-of-buffer characters.  The first causes
6943          * a transition to the end-of-buffer state.  The second causes
6944          * a jam in that state.
6945          */
6946         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6947         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6948
6949         b->yy_buf_pos = &b->yy_ch_buf[0];
6950
6951         b->yy_at_bol = 1;
6952         b->yy_buffer_status = YY_BUFFER_NEW;
6953
6954         if ( b == YY_CURRENT_BUFFER )
6955                 surf_parse__load_buffer_state( );
6956 }
6957
6958 /** Pushes the new state onto the stack. The new state becomes
6959  *  the current state. This function will allocate the stack
6960  *  if necessary.
6961  *  @param new_buffer The new state.
6962  *  
6963  */
6964 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
6965 {
6966         if (new_buffer == NULL)
6967                 return;
6968
6969         surf_parse_ensure_buffer_stack();
6970
6971         /* This block is copied from surf_parse__switch_to_buffer. */
6972         if ( YY_CURRENT_BUFFER )
6973                 {
6974                 /* Flush out information for old buffer. */
6975                 *(yy_c_buf_p) = (yy_hold_char);
6976                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6977                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6978                 }
6979
6980         /* Only push if top exists. Otherwise, replace top. */
6981         if (YY_CURRENT_BUFFER)
6982                 (yy_buffer_stack_top)++;
6983         YY_CURRENT_BUFFER_LVALUE = new_buffer;
6984
6985         /* copied from surf_parse__switch_to_buffer. */
6986         surf_parse__load_buffer_state( );
6987         (yy_did_buffer_switch_on_eof) = 1;
6988 }
6989
6990 /** Removes and deletes the top of the stack, if present.
6991  *  The next element becomes the new top.
6992  *  
6993  */
6994 void surf_parse_pop_buffer_state (void)
6995 {
6996         if (!YY_CURRENT_BUFFER)
6997                 return;
6998
6999         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
7000         YY_CURRENT_BUFFER_LVALUE = NULL;
7001         if ((yy_buffer_stack_top) > 0)
7002                 --(yy_buffer_stack_top);
7003
7004         if (YY_CURRENT_BUFFER) {
7005                 surf_parse__load_buffer_state( );
7006                 (yy_did_buffer_switch_on_eof) = 1;
7007         }
7008 }
7009
7010 /* Allocates the stack if it does not exist.
7011  *  Guarantees space for at least one push.
7012  */
7013 static void surf_parse_ensure_buffer_stack (void)
7014 {
7015         int num_to_alloc;
7016     
7017         if (!(yy_buffer_stack)) {
7018
7019                 /* First allocation is just for 2 elements, since we don't know if this
7020                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
7021                  * immediate realloc on the next call.
7022          */
7023                 num_to_alloc = 1;
7024                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
7025                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
7026                                                                 );
7027                 if ( ! (yy_buffer_stack) )
7028                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
7029                                                                   
7030                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
7031                                 
7032                 (yy_buffer_stack_max) = num_to_alloc;
7033                 (yy_buffer_stack_top) = 0;
7034                 return;
7035         }
7036
7037         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
7038
7039                 /* Increase the buffer to prepare for a possible push. */
7040                 int grow_size = 8 /* arbitrary grow size */;
7041
7042                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
7043                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
7044                                                                 ((yy_buffer_stack),
7045                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
7046                                                                 );
7047                 if ( ! (yy_buffer_stack) )
7048                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
7049
7050                 /* zero only the new slots.*/
7051                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
7052                 (yy_buffer_stack_max) = num_to_alloc;
7053         }
7054 }
7055
7056 /** Setup the input buffer state to scan directly from a user-specified character buffer.
7057  * @param base the character buffer
7058  * @param size the size in bytes of the character buffer
7059  * 
7060  * @return the newly allocated buffer state object. 
7061  */
7062 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
7063 {
7064         YY_BUFFER_STATE b;
7065     
7066         if ( size < 2 ||
7067              base[size-2] != YY_END_OF_BUFFER_CHAR ||
7068              base[size-1] != YY_END_OF_BUFFER_CHAR )
7069                 /* They forgot to leave room for the EOB's. */
7070                 return 0;
7071
7072         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
7073         if ( ! b )
7074                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
7075
7076         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
7077         b->yy_buf_pos = b->yy_ch_buf = base;
7078         b->yy_is_our_buffer = 0;
7079         b->yy_input_file = 0;
7080         b->yy_n_chars = b->yy_buf_size;
7081         b->yy_is_interactive = 0;
7082         b->yy_at_bol = 1;
7083         b->yy_fill_buffer = 0;
7084         b->yy_buffer_status = YY_BUFFER_NEW;
7085
7086         surf_parse__switch_to_buffer(b  );
7087
7088         return b;
7089 }
7090
7091 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
7092  * scan from a @e copy of @a str.
7093  * @param yystr a NUL-terminated string to scan
7094  * 
7095  * @return the newly allocated buffer state object.
7096  * @note If you want to scan bytes that may contain NUL values, then use
7097  *       surf_parse__scan_bytes() instead.
7098  */
7099 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
7100 {
7101     
7102         return surf_parse__scan_bytes(yystr,strlen(yystr) );
7103 }
7104
7105 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
7106  * scan from a @e copy of @a bytes.
7107  * @param yybytes the byte buffer to scan
7108  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
7109  * 
7110  * @return the newly allocated buffer state object.
7111  */
7112 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
7113 {
7114         YY_BUFFER_STATE b;
7115         char *buf;
7116         yy_size_t n;
7117         int i;
7118     
7119         /* Get memory for full buffer, including space for trailing EOB's. */
7120         n = _yybytes_len + 2;
7121         buf = (char *) surf_parse_alloc(n  );
7122         if ( ! buf )
7123                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
7124
7125         for ( i = 0; i < _yybytes_len; ++i )
7126                 buf[i] = yybytes[i];
7127
7128         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
7129
7130         b = surf_parse__scan_buffer(buf,n );
7131         if ( ! b )
7132                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
7133
7134         /* It's okay to grow etc. this buffer, and we should throw it
7135          * away when we're done.
7136          */
7137         b->yy_is_our_buffer = 1;
7138
7139         return b;
7140 }
7141
7142     static void yy_push_state (int  new_state )
7143 {
7144         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
7145                 {
7146                 yy_size_t new_size;
7147
7148                 (yy_start_stack_depth) += YY_START_STACK_INCR;
7149                 new_size = (yy_start_stack_depth) * sizeof( int );
7150
7151                 if ( ! (yy_start_stack) )
7152                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
7153
7154                 else
7155                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
7156
7157                 if ( ! (yy_start_stack) )
7158                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
7159                 }
7160
7161         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
7162
7163         BEGIN(new_state);
7164 }
7165
7166     static void yy_pop_state  (void)
7167 {
7168         if ( --(yy_start_stack_ptr) < 0 )
7169                 YY_FATAL_ERROR( "start-condition stack underflow" );
7170
7171         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
7172 }
7173
7174 #ifndef YY_EXIT_FAILURE
7175 #define YY_EXIT_FAILURE 2
7176 #endif
7177
7178 static void yy_fatal_error (yyconst char* msg )
7179 {
7180         (void) fprintf( stderr, "%s\n", msg );
7181         exit( YY_EXIT_FAILURE );
7182 }
7183
7184 /* Redefine yyless() so it works in section 3 code. */
7185
7186 #undef yyless
7187 #define yyless(n) \
7188         do \
7189                 { \
7190                 /* Undo effects of setting up surf_parse_text. */ \
7191         int yyless_macro_arg = (n); \
7192         YY_LESS_LINENO(yyless_macro_arg);\
7193                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
7194                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
7195                 (yy_hold_char) = *(yy_c_buf_p); \
7196                 *(yy_c_buf_p) = '\0'; \
7197                 surf_parse_leng = yyless_macro_arg; \
7198                 } \
7199         while ( 0 )
7200
7201 /* Accessor  methods (get/set functions) to struct members. */
7202
7203 /** Get the current line number.
7204  * 
7205  */
7206 int surf_parse_get_lineno  (void)
7207 {
7208         
7209     return surf_parse_lineno;
7210 }
7211
7212 /** Get the input stream.
7213  * 
7214  */
7215 FILE *surf_parse_get_in  (void)
7216 {
7217         return surf_parse_in;
7218 }
7219
7220 /** Get the output stream.
7221  * 
7222  */
7223 FILE *surf_parse_get_out  (void)
7224 {
7225         return surf_parse_out;
7226 }
7227
7228 /** Get the length of the current token.
7229  * 
7230  */
7231 int surf_parse_get_leng  (void)
7232 {
7233         return surf_parse_leng;
7234 }
7235
7236 /** Get the current token.
7237  * 
7238  */
7239
7240 char *surf_parse_get_text  (void)
7241 {
7242         return surf_parse_text;
7243 }
7244
7245 /** Set the current line number.
7246  * @param line_number
7247  * 
7248  */
7249 void surf_parse_set_lineno (int  line_number )
7250 {
7251     
7252     surf_parse_lineno = line_number;
7253 }
7254
7255 /** Set the input stream. This does not discard the current
7256  * input buffer.
7257  * @param in_str A readable stream.
7258  * 
7259  * @see surf_parse__switch_to_buffer
7260  */
7261 void surf_parse_set_in (FILE *  in_str )
7262 {
7263         surf_parse_in = in_str ;
7264 }
7265
7266 void surf_parse_set_out (FILE *  out_str )
7267 {
7268         surf_parse_out = out_str ;
7269 }
7270
7271 int surf_parse_get_debug  (void)
7272 {
7273         return surf_parse__flex_debug;
7274 }
7275
7276 void surf_parse_set_debug (int  bdebug )
7277 {
7278         surf_parse__flex_debug = bdebug ;
7279 }
7280
7281 static int yy_init_globals (void)
7282 {
7283         /* Initialization is the same as for the non-reentrant scanner.
7284      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
7285      */
7286
7287     /* We do not touch surf_parse_lineno unless the option is enabled. */
7288     surf_parse_lineno =  1;
7289     
7290     (yy_buffer_stack) = 0;
7291     (yy_buffer_stack_top) = 0;
7292     (yy_buffer_stack_max) = 0;
7293     (yy_c_buf_p) = (char *) 0;
7294     (yy_init) = 0;
7295     (yy_start) = 0;
7296
7297     (yy_start_stack_ptr) = 0;
7298     (yy_start_stack_depth) = 0;
7299     (yy_start_stack) =  NULL;
7300
7301 /* Defined in main.c */
7302 #ifdef YY_STDINIT
7303     surf_parse_in = stdin;
7304     surf_parse_out = stdout;
7305 #else
7306     surf_parse_in = (FILE *) 0;
7307     surf_parse_out = (FILE *) 0;
7308 #endif
7309
7310     /* For future reference: Set errno on error, since we are called by
7311      * surf_parse_lex_init()
7312      */
7313     return 0;
7314 }
7315
7316 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
7317 int surf_parse_lex_destroy  (void)
7318 {
7319     
7320     /* Pop the buffer stack, destroying each element. */
7321         while(YY_CURRENT_BUFFER){
7322                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
7323                 YY_CURRENT_BUFFER_LVALUE = NULL;
7324                 surf_parse_pop_buffer_state();
7325         }
7326
7327         /* Destroy the stack itself. */
7328         surf_parse_free((yy_buffer_stack) );
7329         (yy_buffer_stack) = NULL;
7330
7331     /* Destroy the start condition stack. */
7332         surf_parse_free((yy_start_stack)  );
7333         (yy_start_stack) = NULL;
7334
7335     /* Reset the globals. This is important in a non-reentrant scanner so the next time
7336      * surf_parse_lex() is called, initialization will occur. */
7337     yy_init_globals( );
7338
7339     return 0;
7340 }
7341
7342 /*
7343  * Internal utility routines.
7344  */
7345
7346 #ifndef yytext_ptr
7347 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
7348 {
7349         register int i;
7350         for ( i = 0; i < n; ++i )
7351                 s1[i] = s2[i];
7352 }
7353 #endif
7354
7355 #ifdef YY_NEED_STRLEN
7356 static int yy_flex_strlen (yyconst char * s )
7357 {
7358         register int n;
7359         for ( n = 0; s[n]; ++n )
7360                 ;
7361
7362         return n;
7363 }
7364 #endif
7365
7366 void *surf_parse_alloc (yy_size_t  size )
7367 {
7368         return (void *) malloc( size );
7369 }
7370
7371 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
7372 {
7373         /* The cast to (char *) in the following accommodates both
7374          * implementations that use char* generic pointers, and those
7375          * that use void* generic pointers.  It works with the latter
7376          * because both ANSI C and C++ allow castless assignment from
7377          * any pointer type to void*, and deal with argument conversions
7378          * as though doing an assignment.
7379          */
7380         return (void *) realloc( (char *) ptr, size );
7381 }
7382
7383 void surf_parse_free (void * ptr )
7384 {
7385         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
7386 }
7387
7388 #define YYTABLES_NAME "yytables"
7389
7390 /* Element context stack lookup. */
7391 int surfxml_element_context(int i)
7392 {
7393   return (0<i && i<yy_start_stack_depth
7394           ? yy_start_stack[yy_start_stack_ptr - i]
7395           : 0);
7396 }
7397
7398 #ifdef FLEX_DEBUG
7399 void print_yy_stack(char* fmt, ...)
7400 {
7401   int i = 0; va_list ap; va_start(ap, fmt);
7402   vfprintf(stderr, fmt, ap);
7403   if (surfxml_statenames) {
7404       for (i=1; i<yy_start_stack_ptr; i++) {
7405           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
7406       }
7407       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
7408   }
7409   va_end(ap);
7410 }
7411
7412 void print_surfxml_bufferstack()
7413 {
7414     int i;
7415     fputs("Buffer: ", stderr);
7416     for (i = 0; i < blimit; i++) {
7417        if ( surfxml_bufferstack[i] == '\377' ) break;
7418          putc(surfxml_bufferstack[i], stderr);
7419     }
7420     putc('\n', stderr);
7421 }
7422
7423 static void debug_enter(int state, const char* statename) {
7424   yy_push_state(state);
7425   if (surf_parse__flex_debug) {
7426        print_yy_stack("--ENTER(%s) : ",statename);
7427        print_surfxml_bufferstack();
7428   }
7429 }
7430
7431 static void debug_leave(void) {
7432     if (surf_parse__flex_debug) {
7433         print_yy_stack("--LEAVE : ");
7434         print_surfxml_bufferstack();
7435     }
7436   yy_pop_state();
7437 }
7438
7439 static void debug_set(int state, const char* statename) {
7440   BEGIN(state);
7441   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
7442 }
7443 #endif
7444
7445 static void cleanup(void)
7446 {
7447     if (surfxml_statenames) {
7448         free(surfxml_statenames);
7449         surfxml_statenames = NULL;
7450     }
7451     free(surfxml_bufferstack);
7452     surfxml_bufferstack = NULL;
7453
7454     free(indexstack);
7455     indexstack = NULL;
7456 }
7457
7458 static int fail(const char* fmt, ...)
7459 {
7460     int chars_left, used;
7461     va_list ap; va_start(ap, fmt);
7462 #ifdef FLEXML_yylineno
7463     used = sprintf(flexml_err_msg,
7464                    "Invalid XML (XML input line %d, state %d): ",
7465                    surf_parse_lineno, YY_START);
7466 #else
7467     used = sprintf(flexml_err_msg,
7468                    "Invalid XML (state %d): ",
7469                    YY_START);
7470 #endif
7471     chars_left = flexml_max_err_msg_size - used - 1;
7472     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
7473     va_end(ap);
7474
7475 #ifndef FLEXML_quiet_parser
7476     /* print directly to sdterr */
7477     fprintf(stderr, "%s\n", flexml_err_msg);
7478     flexml_err_msg[0] = '\0';
7479 #endif
7480
7481     cleanup();
7482
7483     return 1;
7484 }
7485