Logo AND Algorithmique Numérique Distribuée

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