Logo AND Algorithmique Numérique Distribuée

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