Logo AND Algorithmique Numérique Distribuée

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