Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Enforce some order on the tags; needs flexml 1.8 to get relevant error messages when...
[simgrid.git] / src / surf / surfxml.c
1
2 #line 3 "surf/surfxml.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 198
383 #define YY_END_OF_BUFFER 199
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[1531] =
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,  199,  197,
403
404        23,   10,   10,   23,   23,  177,   10,  177,    5,    6,
405         5,    8,    9,    8,  193,  185,  186,  194,  191,  194,
406       192,  196,  185,  186,  196,  197,   30,   10,   30,   30,
407        30,   28,   30,   34,   10,   34,   34,  197,  197,   34,
408       197,   41,   10,   41,   41,   41,   39,   41,   45,   10,
409        45,  197,   72,   10,   72,   72,   72,   70,   72,   72,
410        72,   72,   72,   72,   76,   10,   76,  197,   83,   10,
411        83,   83,   83,   81,   83,   87,   10,   87,  197,  112,
412        10,  112,  112,  112,  110,  112,  112,  112,  112,  116,
413        10,  116,  197,  133,   10,  133,  133,  133,  131,  133,
414
415       133,  133,  137,   10,  137,  197,  137,  197,  144,   10,
416       144,  144,  144,  142,  144,  148,   10,  148,  197,  161,
417        10,  161,  161,  161,  159,  161,  161,  161,  161,  165,
418        10,  165,  197,  165,  197,  172,   10,  172,  172,  172,
419       170,  172,  176,   10,  176,  194,  193,   10,    0,    2,
420         2,    0,    4,    7,  188,  187,    0,    0,    0,    0,
421         0,    0,    0,   29,   31,   31,    0,    0,    0,    0,
422         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
423        40,   42,   42,    0,   71,   73,   73,   73,   73,   73,
424        73,   73,    0,    0,   82,   84,   84,    0,  111,  113,
425
426       113,  113,  113,  113,  113,    0,    0,  132,  134,  134,
427       134,  134,    0,    0,    0,  143,  145,  145,    0,    0,
428       160,  162,  162,  162,  162,  162,    0,    0,  171,  173,
429       173,    0,    0,    0,    0,    0,    0,    0,    3,    0,
430         0,    0,    0,    0,    0,    0,  195,    0,   31,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,   42,    0,    0,   73,   73,
433        73,   73,   73,   73,    0,    0,    0,   84,    0,    0,
434       113,  113,  113,  113,  113,    0,    0,    0,  134,  134,
435       134,    0,    0,    0,    0,  145,    0,    0,  162,  162,
436
437       162,  162,    0,    0,    0,  173,    0,    0,    0,  190,
438         0,   22,    1,    0,    0,  183,    0,    0,    0,  180,
439       179,    0,    0,   31,    0,    0,   33,    0,    0,   47,
440         0,    0,    0,    0,    0,   46,    0,    0,    0,    0,
441         0,    0,   42,    0,    0,   44,    0,   73,   73,   73,
442        73,   73,   73,    0,    0,   75,    0,    0,   84,    0,
443         0,   86,    0,  113,  113,  113,  113,  113,    0,    0,
444       115,    0,    0,    0,    0,  134,    0,    0,    0,    0,
445       136,    0,    0,    0,  145,    0,    0,  147,    0,  162,
446       162,  162,  162,    0,    0,  164,    0,    0,  173,    0,
447
448         0,  175,    0,    0,    0,    0,  184,  178,    0,    0,
449         0,   31,    0,    0,   47,    0,    0,    0,    0,    0,
450        46,    0,    0,    0,    0,    0,    0,    0,    0,    0,
451        73,   73,   73,    0,    0,   73,   73,    0,    0,    0,
452         0,    0,  113,  113,    0,    0,  113,  113,    0,    0,
453         0,  122,  121,  134,    0,  120,  119,    0,    0,    0,
454         0,    0,    0,  162,    0,    0,  162,  162,    0,    0,
455       173,    0,    0,    0,    0,    0,   12,    0,  181,  182,
456         0,   31,    0,    0,    0,    0,    0,    0,  118,    0,
457       118,    0,  117,    0,  117,    0,   38,   37,    0,   73,
458
459        73,   73,    0,   49,   48,    0,    0,    0,    0,   73,
460         0,   74,    0,    0,   80,   79,    0,  113,  113,    0,
461        91,   90,  113,    0,    0,  113,    0,  118,  134,    0,
462       117,    0,    0,  141,  140,    0,  162,    0,  152,  151,
463       162,  162,    0,    0,    0,    0,    0,    0,    0,    0,
464         0,   11,    0,   31,    0,    0,    0,    0,    0,    0,
465       118,    0,   78,    0,   77,    0,  117,    0,    0,   73,
466        73,   73,    0,   51,   50,    0,    0,    0,   73,    0,
467       113,  113,  113,    0,    0,    0,  113,    0,  134,    0,
468         0,    0,  162,  162,  162,    0,    0,    0,  169,  168,
469
470         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
471        36,    0,    0,  150,    0,   78,    0,   77,  149,   35,
472         0,   73,   73,   73,    0,    0,   73,    0,  113,    0,
473         0,  113,  113,    0,    0,  113,    0,  134,    0,  135,
474         0,    0,  162,  162,  162,    0,    0,    0,    0,    0,
475         0,    0,    0,    0,   27,   26,    0,  166,   36,    0,
476         0,  150,    0,    0,  149,   35,    0,   73,   73,   73,
477         0,    0,    0,    0,   73,    0,   85,  113,    0,   97,
478        96,  113,  113,    0,    0,    0,    0,  113,    0,  134,
479         0,    0,    0,    0,  162,  162,    0,  167,    0,  189,
480
481         0,    0,    0,    0,    0,  166,    0,    0,    0,    0,
482         0,   43,   73,   73,   73,    0,   57,    0,   56,   73,
483         0,    0,  113,  113,  113,    0,  101,    0,  100,  113,
484         0,  134,    0,    0,    0,  154,  153,    0,    0,  162,
485         0,  163,  167,    0,    0,    0,    0,    0,    0,    0,
486         0,    0,    0,    0,    0,    0,    0,    0,   73,   73,
487        73,   59,   58,    0,    0,    0,   93,   92,  113,  113,
488       113,  103,  102,    0,    0,    0,  134,  134,    0,    0,
489         0,  158,  157,    0,    0,    0,  174,    0,    0,    0,
490         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
491
492         0,    0,   73,   73,   73,    0,   61,   60,  113,  113,
493       113,    0,  105,  104,    0,  134,  134,    0,    0,    0,
494       156,  155,    0,    0,    0,    0,    0,    0,    0,    0,
495         0,    0,    0,   89,    0,    0,   88,    0,    0,   73,
496        73,   73,  113,    0,    0,  113,    0,  134,  134,    0,
497         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
498         0,    0,    0,   89,    0,  138,   88,    0,   53,   52,
499        73,   73,   73,   73,  113,    0,   99,   98,  113,    0,
500         0,    0,  134,    0,    0,  134,  139,    0,    0,    0,
501         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
502
503         0,    0,    0,  138,   73,   73,   73,   73,    0,    0,
504         0,    0,    0,  114,    0,  126,  125,  134,    0,  124,
505       123,  134,  139,    0,    0,    0,    0,    0,    0,    0,
506         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
507         0,   73,   73,   73,   73,    0,   95,   94,    0,    0,
508         0,  134,  134,    0,  146,    0,    0,    0,    0,    0,
509         0,    0,    0,    0,    0,    0,   12,    0,   12,    0,
510         0,    0,    0,   73,   73,   73,   73,    0,    0,    0,
511         0,  134,  134,    0,    0,    0,    0,    0,    0,    0,
512         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
513
514         0,    0,    0,    0,    0,   73,    0,    0,    0,    0,
515         0,    0,  134,  134,    0,    0,    0,    0,    0,    0,
516         0,    0,    0,    0,    0,    0,    0,    0,   55,   54,
517         0,   65,   64,    0,   63,   62,   73,    0,   69,   68,
518         0,    0,    0,    0,  134,  134,    0,    0,    0,    0,
519         0,    0,    0,    0,    0,   11,    0,    0,    0,   73,
520         0,    0,    0,    0,  134,  134,    0,    0,    0,    0,
521         0,    0,    0,    0,    0,   25,    0,   24,   73,    0,
522         0,    0,    0,  134,  134,    0,    0,    0,    0,    0,
523         0,    0,    0,    0,    0,   25,    0,   24,   73,    0,
524
525         0,    0,    0,  134,  134,    0,    0,    0,    0,    0,
526         0,    0,    0,    0,    0,    0,   32,    0,    0,    0,
527       107,    0,  106,  134,  134,    0,    0,    0,    0,    0,
528         0,    0,    0,    0,    0,    0,    0,   67,   66,  109,
529       108,  134,  134,    0,    0,    0,    0,    0,    0,    0,
530         0,    0,    0,    0,    0,  134,  134,    0,    0,    0,
531         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
532         0,  134,  134,    0,    0,    0,    0,    0,    0,    0,
533         0,    0,    0,    0,    0,    0,    0,    0,  134,  134,
534         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
535
536         0,    0,    0,    0,    0,  134,  134,    0,    0,    0,
537         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
538         0,    0,  134,  134,    0,    0,    0,    0,    0,    0,
539         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
540         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
541         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
542       130,  129,    0,  128,  127,    0,    0,    0,    0,    0,
543         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
544         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
545         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
546
547         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
548         0,    0,    0,    0,    0,    0,    0,    0,   13,    0,
549         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
550         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
551         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
552         0,    0,    0,    0,    0,    0,   15,    0,    0,    0,
553         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
554        18,    0,    0,   14,    0,    0,    0,    0,    0,   17,
555         0,    0,    0,   19,    0,    0,    0,    0,    0,    0,
556         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
557
558         0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
559         0,    0,    0,    0,    0,   20,    0,    0,    0,    0,
560         0,    0,    0,    0,    0,    0,    0,    0,   21,    0
561     } ;
562
563 static yyconst flex_int32_t yy_ec[256] =
564     {   0,
565         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
566         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
567         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
568         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
569         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
570        13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
571        17,   18,   19,    1,   20,   21,   22,   23,   24,   25,
572        14,   26,   27,   14,   14,   14,   28,   29,   30,   31,
573        14,   32,   33,   34,   14,   14,   14,   14,   35,   14,
574        36,    1,   37,    1,   38,    1,   39,   40,   41,   42,
575
576        43,   44,   45,   46,   47,   14,   48,   49,   50,   51,
577        52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
578        62,   14,    1,    1,    1,    1,    1,    1,    1,    1,
579         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
580         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
581         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
582         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
583         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
584         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
585         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
586
587         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
588         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
589         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
590         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
591         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
592         1,    1,    1,    1,    1
593     } ;
594
595 static yyconst flex_int32_t yy_meta[63] =
596     {   0,
597         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
598         3,    1,    4,    5,    1,    1,    1,    6,    1,    7,
599         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
600         5,    5,    5,    5,    5,    1,    1,    5,    7,    7,
601         7,    7,    7,    7,    5,    5,    5,    5,    5,    5,
602         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
603         5,    5
604     } ;
605
606 static yyconst flex_int16_t yy_base[1592] =
607     {   0,
608         0,    0,    0,    3,    6,    9,   24,   27,   11,   14,
609        15,   17,   29,   38,   45,   52,   59,   61,   67,   70,
610        98,  157,   73,   76,  116,  120,  123,  126,  175,  179,
611       182,  185,  201,  204,  207,  210,  225,  228,  244,  288,
612       262,  266,  269,  306,  332,    0,  310,  313,  393,  396,
613       412,  463,  430,  434,  437,  440,  514,  570,  481,  485,
614       488,  491,  626,  682,  532,  536,  539,  542,  588,  592,
615       595,  598,  644,  648,  738,  789,  651,  654,  700,  704,
616       840,  896,  707,  710,  756,  760,  763,  766,  807,  811,
617       814,  817,  952, 1011,  858,  862,  879,  914, 4148, 4149,
618
619      4149,   91,  141,   47,   62, 4149,  144,  132, 4149, 4149,
620      4137, 4149, 4149, 4128, 4149, 4141, 4141,  882, 4149, 4149,
621      4149, 4149, 4139, 4139, 4104,  214, 4149,  150, 4122,    0,
622       136, 4149, 4096, 4149,  232, 1020, 1033, 1038, 1057, 1078,
623       919, 4149,  235, 4120,    0,  440, 4149, 4090, 4149,  272,
624       442,  849, 4149,  316, 4118,    0,  491, 4149, 4076, 4083,
625      4094, 4093, 4079, 4073, 4149,  399,  493,  548, 4149,  402,
626      4111,    0,  542, 4149, 4089, 4149,  613,  660,  819, 4149,
627       620, 4109,    0,  656, 4149, 4087, 4086, 4085,   92, 4149,
628       674,  716,  817, 4149,  728, 4105,    0,  661, 4149, 4066,
629
630      4071, 4065, 4149,  781, 1087, 1096, 1111,  874, 4149,  784,
631      4101,    0,  717, 4149, 4079, 4149,  943,  929,  866, 4149,
632       970, 4099,    0,  862, 4149, 4058, 4063, 4067, 4056, 4149,
633       973, 1134, 1149, 1158, 1030, 4149,  976, 4094,    0,  875,
634      4149, 4072, 4149,  979,  979, 4105, 4072,  983,   34, 4047,
635      4149, 4097, 4088, 4149, 4149, 4149,   26,   32, 4048, 4047,
636      4045, 4084, 4052, 4149,    0, 4045, 4046, 4043, 4044, 4045,
637      4052,   35, 4042, 4040, 4049, 4039,   42, 4038, 4038, 4036,
638      4149,    0, 4038, 4039, 4149,    0, 4046, 4027, 4022, 4032,
639      4021, 4041, 4038, 4026, 4149,    0, 4027, 4021, 4149,    0,
640
641      4024, 4017, 4023, 4033, 4032, 4019, 4017, 4149,    0, 4011,
642      4014, 4025, 4010, 4012, 4011, 4149,    0, 4012, 4006, 4005,
643      4149,    0, 4008, 4002, 4008, 4017, 4002, 3999, 4149,    0,
644      4004, 4013, 4015, 4032, 4031, 4038,    5, 3997, 4149,  118,
645         0, 3993, 3993, 4029, 4028, 3990, 4149, 4002, 3984,  990,
646      1038, 3994, 3980, 3996, 3979, 3996, 3982, 3975, 3974, 3974,
647      3972, 3977, 3970, 3986, 3968, 3982, 1118, 1176, 3977, 3980,
648      3984, 3978, 3977, 3962, 1153, 1180, 3960, 3974, 1189, 1212,
649      3974, 3972, 3971, 3958, 3955, 1216, 1219, 3953,  993, 3971,
650      1051, 1222, 1239, 3951, 3950, 3964, 1242, 1245, 3965, 3948,
651
652      3955, 3948, 1248, 1251, 3957, 3943, 1268, 1271, 3978, 4149,
653      3981, 4149, 4149,  174, 3949, 4149, 3982, 3981, 3939, 4149,
654      4149, 3937, 3936, 3945, 1274, 1277, 4149, 1280, 3933,  997,
655      3941, 3929, 3931, 3946, 3929, 1000, 3925, 3927, 3942, 3925,
656      3932, 3923, 1061, 1297, 1300, 4149, 1305, 3930, 3923, 3925,
657      1157, 3921, 3932, 1309, 1318, 4149, 1326, 3917, 1330, 1335,
658      1338, 4149, 1346, 3913, 3921, 1355, 3924, 3927, 1358, 1363,
659      4149, 1367, 3912, 1371, 1387, 3927, 1375, 1396, 1404, 1407,
660      4149, 1410, 3910, 3909, 1413, 1416, 1429, 4149, 1433, 3908,
661      1436, 3926, 3906, 1439, 1442, 4149, 1446, 3904, 3918, 1452,
662
663      1459, 4149, 1463, 3937,  122, 1469, 4149, 4149, 3944, 3943,
664      3913, 3904, 1472, 3905, 1003, 3896, 3901, 3908, 3908, 3907,
665      1476, 3897, 3905, 3904, 3903, 3887, 3901, 1480, 1490, 1498,
666      3904, 3898, 3883, 1501, 1508, 1517, 1520, 1523, 3897, 1528,
667      1540, 1536, 3892, 3897, 1548, 1553, 3886, 1564, 1567, 3893,
668      1570, 4149, 4149, 3878, 1580, 4149, 4149, 1588, 3891, 3890,
669      1592, 1595, 1608, 3885, 1611, 1614, 3874, 3892, 1628, 3879,
670      1631, 1634, 3908,  162, 3909, 1637, 4149, 3908, 4149, 4149,
671      3873, 3873, 1640, 3880, 3880, 3866, 3868, 3863, 1647, 3863,
672      1657, 3861, 1660, 3874, 1668, 1672, 4149, 4149, 1664, 3875,
673
674      3871, 3856, 1684, 4149, 4149, 1697, 1701, 1714, 1723, 3868,
675      1717, 4149, 3856, 1734, 4149, 4149, 1742, 3868, 3847, 1745,
676      4149, 4149, 3863, 1753, 1759, 3863, 1769, 1772, 3868, 1775,
677      1778, 3867, 1786, 4149, 4149, 1794, 3852, 1797, 4149, 4149,
678      3856, 3845, 1805, 3858, 1811, 1823, 1832, 3866,  184,   70,
679       181, 4149, 3844, 1836, 1839, 3847, 3854, 3848, 3840, 3838,
680      1842, 3850, 1852, 3844, 1856, 3835, 1859, 3847, 1862, 3842,
681      3833, 3842, 1865, 4149, 4149, 1875, 3856, 3855, 3837, 1883,
682      3826, 1886, 3844, 1890, 3851, 3850, 3832, 1903, 3826, 1907,
683      3834, 1910, 3825, 3825, 3827, 1913, 3822, 1930, 4149, 4149,
684
685      1938, 3852,  259,  261,  203, 3821, 1942, 1948, 1958, 3813,
686      1916, 3831, 3818, 1961, 3818, 1964, 3828, 1968, 1971, 1975,
687      1980, 3816, 3821, 3811,  193,  298, 3813, 1983, 3815, 1986,
688      1990, 3816, 3806,  382,  426, 3809, 2002, 3806, 2006, 4149,
689      3807, 2012, 2015, 3812, 3804, 2023, 3796, 2031, 3816, 2034,
690       269,   94, 3813, 2042, 4149, 4149, 2054, 2057, 2060, 3801,
691      3811, 2063, 3805, 3798, 2066, 2071, 2074, 3799, 3794, 3797,
692      3818, 3836, 3816, 3831, 3796, 2081, 4149, 2084, 2087, 4149,
693      4149, 3791, 3785, 3811, 3829, 3809, 3824, 3789, 2103, 3793,
694      3787, 2106, 2109, 2114, 2125, 3786, 2128, 2131, 2134, 4149,
695
696      2190,  444,  153, 3786, 2141, 2145, 3780, 3784, 3775, 3777,
697      2154, 4149, 3766, 3781, 3770, 3814, 4149, 3810, 4149, 2158,
698      2161, 2164, 3774, 3768, 3767, 3809, 4149, 3805, 4149, 2178,
699      2181,  881, 3763, 2184, 2194, 4149, 4149, 2202, 2207, 2218,
700      2221, 4149, 2230, 2244,  538,  172,  874,  268,  678,  408,
701       459,  485, 3769, 2247, 3760, 3767, 3766, 3757, 3745, 3763,
702      3760, 4149, 4149, 2250, 2254, 2266, 4149, 4149, 3757, 3760,
703      3755, 4149, 4149, 2274, 2277, 2290, 3745, 3745, 3756, 2293,
704      2296, 4149, 4149, 2310, 2313, 2321, 4149,  390,  491,  762,
705       548,  734,  510,  551,  892, 1015, 3742, 2326, 3749, 3740,
706
707      3744, 3642, 2329, 3651, 3641, 2332, 4149, 4149, 3627, 2345,
708      3632, 2348, 4149, 4149, 2356, 3613, 3626, 3613, 2361, 2369,
709      4149, 4149,  719, 2378,  600,  224,  602,  794,  816,  539,
710      2381, 3620, 2384, 2387, 3617, 3598, 2390, 2406, 2409, 3608,
711       275, 3590, 3597, 2417, 2422, 3573, 2433, 2439, 2442, 3573,
712      2445,  813, 2450,  811,  622, 1016, 1064, 1084, 2458, 2467,
713      2484, 3570, 2495, 2462, 3565, 2470, 2501, 2505, 4149, 4149,
714      3568, 3567, 3562, 3393, 2513, 2516, 4149, 4149, 2524, 2529,
715      2535, 2540, 3371, 2551, 2554, 3370, 2562, 2567, 1126,  699,
716       663,  873, 1093,  819, 2570, 2573, 2577, 2594, 2625, 2662,
717
718      3381, 2602, 3380, 2590, 3376, 3383, 3372, 3364, 2619, 2607,
719      2643, 2646, 2682, 4149, 2685, 4149, 4149, 3371, 2699, 4149,
720      4149, 3370, 2615, 2693, 1063,  902, 1158, 1076,  991, 1085,
721      2710, 1185, 2713, 2716,  607,   41, 2743, 2780, 3363, 2772,
722      3349, 3358, 3299, 3213, 3211, 2733, 4149, 4149, 2761,  535,
723      1011, 3161, 3150, 2800, 4149, 1091, 1276, 2803,  743, 1082,
724      2806, 1177, 1168, 2809, 1250,  439, 3154,  493, 3083, 2826,
725      3010, 2829, 3002, 2832, 2835, 2851, 2854, 3006, 2964, 2948,
726      2939, 2916, 2871, 2857, 1013, 2860, 1190, 1220, 2863, 1272,
727      1188, 1296, 2891, 2857, 2817, 2870, 2773, 2881, 2710, 2888,
728
729      2898, 2906, 2912, 2922, 2925, 2666, 2933, 2938, 2622, 2633,
730      2601, 2475, 2384, 2367, 2949,  697, 1317, 1214,  908, 1333,
731      1369, 1217, 1362, 2358, 2304, 2952, 2274, 2955, 4149, 4149,
732      2969, 4149, 4149, 2977, 4149, 4149, 2264, 2985, 4149, 4149,
733      2273, 2185, 2140, 2068, 2046, 2045, 1434, 2993, 1364, 1376,
734      1383, 1495, 1241, 1517, 1530, 4149, 2044, 2998, 2002, 1971,
735      1920, 1906, 1899, 1851, 1762, 1640, 1545, 3001, 1543, 1269,
736      1154, 1569,  921, 1557, 1405, 2769, 3010, 3018, 1529, 1549,
737      1483, 1455, 1363, 1250, 1247, 1587, 1298, 1307, 1471, 3021,
738      1077, 1491, 3027, 1267, 1327, 3030, 3033, 3038, 3045, 1264,
739
740      1161, 1141, 1104, 1062, 1007, 1601, 1325, 1589, 1655, 3050,
741      1403, 1661, 3054, 3062, 3067, 3071, 4149, 3074, 3084,  984,
742      4149,  819, 4149,  616,  614, 1706, 1636, 1639, 3092, 1518,
743      1582, 3095, 1710, 1735, 3098, 3102, 3115, 4149, 4149, 4149,
744      4149,  574,  526, 3123, 1441, 1489, 3126, 1734, 1741, 3134,
745      1746, 1766, 1695, 1793, 1852,  503,  458, 3144, 1812, 1834,
746      1879, 1935, 1724, 1693, 1984, 2024, 1765, 1792, 1784, 1865,
747      1937,  465,  409, 2025, 2084, 1606, 1659, 1989, 2013, 1715,
748      1804, 2036, 2096, 1787, 1854, 1909, 1882, 2121,  359,  287,
749      2132, 2156, 1604, 1931, 2171, 2183, 1993, 2101, 2189, 2200,
750
751      2151, 2210, 2004, 1858, 2107,  201,  181, 2218, 2246,  760,
752       821, 2222, 2241, 3152, 1690, 2243, 2266, 1979, 2224, 2327,
753      2300, 2377, 3155, 3161, 2322, 2324, 2264, 2335, 2396, 2421,
754      3165, 3173, 2440, 2449, 2272, 2352, 3177, 2270, 2379, 3182,
755      3194, 3185, 3202, 2460, 2473, 1982, 2398, 2382, 2474, 2159,
756      2494, 3210, 2511, 2517, 1040, 1218, 3213, 2533, 2566, 3221,
757      4149, 4149, 3230, 4149, 4149, 2589, 2633, 2385, 2388, 2641,
758      2655, 2482, 2541, 1751, 2657, 2658, 2560, 2596, 2636, 2654,
759      1911, 2712, 2675, 2691, 2097, 2720, 2715, 2782, 2714, 2723,
760      2461, 2783, 2804, 2432, 2488, 2822, 2828, 2640, 2735, 2830,
761
762      2832, 3238, 2852, 2861, 2807, 2851, 2399, 2869, 2880, 2888,
763      2901, 2736, 2894, 2505, 2530, 2927, 2942, 3242, 4149, 2709,
764      2928, 2859, 2915, 2285, 3025, 3066, 2583, 2805, 2930, 2948,
765      2975, 3037, 3085, 3094, 3091, 3097, 2959, 2988, 2980, 3131,
766      3148, 3245, 3174, 3176, 2750, 3009, 3208, 3211, 3116, 3192,
767      2914, 2997, 3255, 3203, 3243, 3262, 4149, 3143, 3220, 3265,
768      3256, 3263, 3273, 3096, 3260, 3283, 3291, 3202, 3261, 3294,
769      4149, 3300, 3303, 4149, 3266, 3272, 3264, 3270, 3313, 4149,
770      3311, 3312, 3330, 4149, 3281, 3282, 3293, 3295, 3301, 3307,
771      3310, 3317, 3026, 3127, 3306, 3309, 3336, 3327, 3323, 3326,
772
773      3319, 3322, 3353, 3328, 3329, 3344, 3351, 3370, 4149, 3347,
774      3350, 3373, 3360, 3361, 3378, 4149, 3374, 3375, 3365, 3366,
775      3369, 3376, 3377, 3380, 3393, 3394, 3402, 3411, 4149, 4149,
776      3433, 3440, 3447, 3454, 3461, 3468, 3475, 3482, 3489, 3496,
777      3503, 3510, 3517, 3524, 3531, 3538, 3545, 3552, 3559, 3566,
778      3573, 3580, 3587, 3594, 3599, 3604, 3609, 3614, 3619, 3624,
779      3629, 3634, 3639, 3646, 3649, 3652, 3655, 3658, 3661, 3664,
780      3667, 3670, 3673, 3680, 3684, 3690, 3696, 3702, 3708, 3714,
781      3720, 3726, 3732, 3738, 3745, 3752, 3759, 3766, 3773, 3780,
782      3787
783
784     } ;
785
786 static yyconst flex_int16_t yy_def[1592] =
787     {   0,
788      1531, 1531, 1532, 1532, 1532, 1532, 1533, 1533, 1534, 1534,
789      1535, 1535, 1536, 1536, 1536, 1536, 1537, 1537, 1531, 1531,
790      1538, 1538, 1539, 1539, 1539, 1539, 1531, 1531, 1539, 1539,
791      1531, 1531, 1539, 1539, 1539, 1539, 1531, 1531, 1540, 1540,
792      1541, 1541, 1531, 1531, 1530,   45, 1542, 1542, 1531, 1531,
793      1543, 1543, 1544, 1544, 1531, 1531, 1545, 1545, 1546, 1546,
794      1531, 1531, 1547, 1547, 1548, 1548, 1531, 1531, 1548, 1548,
795      1548, 1548, 1531, 1531, 1549, 1549, 1550, 1550, 1531, 1531,
796      1551, 1551, 1552, 1552, 1531, 1531, 1552, 1552, 1552, 1552,
797      1531, 1531, 1553, 1553, 1554, 1554, 1536, 1536, 1530, 1530,
798
799      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
800      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
801      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1555,
802      1530, 1530, 1555, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
803      1530, 1530, 1530, 1530, 1556, 1530, 1530, 1556, 1530, 1530,
804      1530, 1530, 1530, 1530, 1530, 1557, 1530, 1530, 1557, 1557,
805      1557, 1557, 1557, 1557, 1530, 1530, 1530, 1530, 1530, 1530,
806      1530, 1558, 1530, 1530, 1558, 1530, 1530, 1530, 1530, 1530,
807      1530, 1530, 1559, 1530, 1530, 1559, 1559, 1559, 1559, 1530,
808      1530, 1530, 1530, 1530, 1530, 1530, 1560, 1530, 1530, 1560,
809
810      1560, 1560, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
811      1530, 1561, 1530, 1530, 1561, 1530, 1530, 1530, 1530, 1530,
812      1530, 1530, 1562, 1530, 1530, 1562, 1562, 1562, 1562, 1530,
813      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1563, 1530,
814      1530, 1563, 1530, 1530, 1530, 1530, 1530, 1530, 1564, 1530,
815      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
816      1530, 1530, 1530, 1530, 1555, 1555, 1565, 1530, 1530, 1530,
817      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
818      1530, 1556, 1556, 1566, 1530, 1557, 1557, 1557, 1557, 1557,
819      1557, 1557, 1567, 1530, 1530, 1558, 1558, 1568, 1530, 1559,
820
821      1559, 1559, 1559, 1559, 1559, 1569, 1530, 1530, 1560, 1560,
822      1560, 1560, 1570, 1530, 1530, 1530, 1561, 1561, 1571, 1530,
823      1530, 1562, 1562, 1562, 1562, 1562, 1572, 1530, 1530, 1563,
824      1563, 1573, 1530, 1530, 1574, 1530, 1574, 1530, 1530, 1530,
825      1575, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1555, 1576,
826      1576, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
827      1530, 1530, 1530, 1530, 1530, 1556, 1577, 1577, 1557, 1557,
828      1557, 1557, 1557, 1557, 1578, 1578, 1530, 1558, 1579, 1579,
829      1559, 1559, 1559, 1559, 1559, 1580, 1580, 1530, 1560, 1560,
830      1560, 1581, 1581, 1530, 1530, 1561, 1582, 1582, 1562, 1562,
831
832      1562, 1562, 1583, 1583, 1530, 1563, 1584, 1584, 1530, 1530,
833      1574, 1530, 1530, 1574, 1530, 1530, 1575, 1530, 1530, 1530,
834      1530, 1530, 1530, 1555, 1530, 1576, 1530, 1576, 1530, 1530,
835      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
836      1530, 1530, 1556, 1530, 1577, 1530, 1577, 1557, 1557, 1557,
837      1557, 1557, 1557, 1530, 1578, 1530, 1578, 1530, 1558, 1530,
838      1579, 1530, 1579, 1559, 1559, 1559, 1559, 1559, 1530, 1580,
839      1530, 1580, 1530, 1530, 1530, 1560, 1530, 1530, 1530, 1581,
840      1530, 1581, 1530, 1530, 1561, 1530, 1582, 1530, 1582, 1562,
841      1562, 1562, 1562, 1530, 1583, 1530, 1583, 1530, 1563, 1530,
842
843      1584, 1530, 1584, 1530, 1574, 1585, 1530, 1530, 1530, 1530,
844      1530, 1555, 1576, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
845      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1577,
846      1557, 1557, 1557, 1530, 1530, 1557, 1557, 1578, 1530, 1530,
847      1530, 1579, 1559, 1559, 1530, 1530, 1559, 1559, 1580, 1530,
848      1530, 1530, 1530, 1560, 1530, 1530, 1530, 1581, 1530, 1530,
849      1530, 1530, 1582, 1562, 1530, 1530, 1562, 1562, 1583, 1530,
850      1563, 1584, 1530, 1574, 1585, 1585, 1530, 1585, 1530, 1530,
851      1530, 1555, 1576, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
852      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1577, 1557,
853
854      1557, 1557, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1557,
855      1530, 1530, 1530, 1530, 1530, 1530, 1579, 1559, 1559, 1530,
856      1530, 1530, 1559, 1530, 1530, 1559, 1580, 1530, 1560, 1581,
857      1530, 1530, 1530, 1530, 1530, 1582, 1562, 1530, 1530, 1530,
858      1562, 1562, 1583, 1530, 1530, 1530, 1584, 1530, 1574, 1585,
859      1585, 1530, 1530, 1555, 1576, 1530, 1530, 1530, 1530, 1530,
860      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1577, 1557,
861      1557, 1557, 1530, 1530, 1530, 1530, 1530, 1530, 1557, 1579,
862      1559, 1559, 1559, 1530, 1530, 1530, 1559, 1580, 1560, 1581,
863      1530, 1582, 1562, 1562, 1562, 1583, 1530, 1530, 1530, 1530,
864
865      1584, 1530, 1574, 1585, 1585, 1530, 1530, 1530, 1576, 1530,
866      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
867      1577, 1557, 1557, 1557, 1530, 1530, 1557, 1579, 1559, 1530,
868      1530, 1559, 1559, 1530, 1530, 1559, 1580, 1560, 1530, 1530,
869      1530, 1582, 1562, 1562, 1562, 1583, 1530, 1584, 1530, 1574,
870      1585, 1585, 1530, 1530, 1530, 1530, 1576, 1530, 1530, 1530,
871      1530, 1530, 1530, 1530, 1530, 1530, 1577, 1557, 1557, 1557,
872      1530, 1530, 1530, 1530, 1557, 1530, 1530, 1559, 1530, 1530,
873      1530, 1559, 1559, 1530, 1530, 1530, 1530, 1559, 1580, 1560,
874      1530, 1582, 1530, 1530, 1562, 1562, 1583, 1530, 1584, 1530,
875
876      1574, 1585, 1585, 1530, 1576, 1530, 1530, 1530, 1530, 1530,
877      1530, 1530, 1557, 1557, 1557, 1530, 1530, 1530, 1530, 1557,
878      1530, 1530, 1559, 1559, 1559, 1530, 1530, 1530, 1530, 1559,
879      1580, 1560, 1530, 1582, 1530, 1530, 1530, 1530, 1530, 1562,
880      1530, 1530, 1530, 1584, 1574, 1574, 1574, 1574, 1574, 1574,
881      1585, 1585, 1530, 1576, 1530, 1530, 1530, 1530, 1557, 1557,
882      1557, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1559, 1559,
883      1559, 1530, 1530, 1530, 1530, 1580, 1560, 1560, 1530, 1582,
884      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1574, 1574, 1574,
885      1574, 1574, 1574, 1574, 1585, 1585, 1530, 1576, 1530, 1530,
886
887      1530, 1530, 1557, 1557, 1557, 1530, 1530, 1530, 1559, 1559,
888      1559, 1530, 1530, 1530, 1580, 1560, 1560, 1530, 1582, 1530,
889      1530, 1530, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1585,
890      1585, 1530, 1576, 1530, 1530, 1530, 1530, 1530, 1530, 1557,
891      1557, 1557, 1559, 1530, 1530, 1559, 1580, 1560, 1560, 1530,
892      1582, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1585, 1585,
893      1585, 1530, 1576, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
894      1557, 1557, 1557, 1557, 1559, 1530, 1530, 1530, 1559, 1580,
895      1530, 1530, 1560, 1530, 1530, 1560, 1530, 1582, 1574, 1574,
896      1574, 1574, 1574, 1574, 1574, 1585, 1585, 1585, 1586, 1587,
897
898      1530, 1576, 1530, 1530, 1557, 1557, 1557, 1557, 1530, 1530,
899      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1560, 1530, 1530,
900      1530, 1560, 1530, 1582, 1574, 1574, 1574, 1574, 1574, 1574,
901      1574, 1574, 1574, 1585, 1588, 1589, 1586, 1587, 1530, 1576,
902      1530, 1557, 1557, 1557, 1557, 1530, 1530, 1530, 1530, 1530,
903      1530, 1560, 1560, 1530, 1530, 1574, 1574, 1574, 1574, 1574,
904      1574, 1574, 1574, 1574, 1588, 1585, 1590, 1589, 1591, 1585,
905      1530, 1576, 1530, 1557, 1557, 1557, 1557, 1530, 1530, 1530,
906      1530, 1560, 1560, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
907      1574, 1574, 1590, 1530, 1591, 1585, 1530, 1576, 1530, 1530,
908
909      1530, 1530, 1530, 1530, 1530, 1557, 1530, 1530, 1530, 1530,
910      1530, 1530, 1560, 1560, 1574, 1574, 1574, 1574, 1574, 1574,
911      1574, 1574, 1574, 1530, 1530, 1576, 1530, 1530, 1530, 1530,
912      1530, 1530, 1530, 1530, 1530, 1530, 1557, 1530, 1530, 1530,
913      1530, 1530, 1530, 1530, 1560, 1560, 1574, 1574, 1574, 1574,
914      1574, 1574, 1574, 1574, 1574, 1530, 1530, 1576, 1530, 1557,
915      1530, 1530, 1530, 1530, 1560, 1560, 1574, 1574, 1574, 1574,
916      1574, 1574, 1574, 1574, 1574, 1530, 1576, 1530, 1557, 1530,
917      1530, 1530, 1530, 1560, 1560, 1574, 1574, 1574, 1574, 1574,
918      1574, 1574, 1574, 1574, 1574, 1530, 1576, 1530, 1557, 1530,
919
920      1530, 1530, 1530, 1560, 1560, 1574, 1574, 1574, 1574, 1574,
921      1574, 1574, 1574, 1574, 1574, 1530, 1530, 1530, 1530, 1530,
922      1530, 1530, 1530, 1560, 1560, 1574, 1574, 1574, 1574, 1574,
923      1574, 1574, 1574, 1574, 1574, 1574, 1530, 1530, 1530, 1530,
924      1530, 1560, 1560, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
925      1574, 1574, 1574, 1574, 1574, 1560, 1560, 1574, 1574, 1574,
926      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
927      1574, 1560, 1560, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
928      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1560, 1560,
929      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
930
931      1574, 1574, 1574, 1574, 1574, 1560, 1560, 1574, 1574, 1574,
932      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
933      1574, 1574, 1560, 1560, 1574, 1574, 1574, 1574, 1574, 1574,
934      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1530,
935      1530, 1530, 1530, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
936      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1530,
937      1530, 1530, 1530, 1530, 1530, 1574, 1574, 1574, 1574, 1574,
938      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
939      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
940      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
941
942      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
943      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1530, 1574,
944      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
945      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
946      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
947      1574, 1574, 1574, 1574, 1574, 1574, 1530, 1574, 1574, 1574,
948      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
949      1530, 1574, 1574, 1530, 1574, 1574, 1574, 1574, 1574, 1530,
950      1574, 1574, 1574, 1530, 1574, 1574, 1574, 1574, 1574, 1574,
951      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574,
952
953      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1530, 1574,
954      1574, 1574, 1574, 1574, 1574, 1530, 1574, 1574, 1574, 1574,
955      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1574, 1530,    0,
956      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
957      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
958      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
959      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
960      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
961      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
962      1530
963
964     } ;
965
966 static yyconst flex_int16_t yy_nxt[4212] =
967     {   0,
968      1530,  102,  103,  102,  102,  103,  102,  102,  103,  102,
969       102,  103,  102,  110, 1530,  104,  110,  113,  104,  113,
970       111,  105,  412,  111,  105,  107,  103,  107,  107,  103,
971       107,  116,  117,  114,  414,  114,  118,  119,  340,  108,
972       116,  117,  108,  336,  120,  118,  119,  116,  117, 1066,
973       121,  249,  118,  120,  116,  117,  337,  121, 1069,  118,
974       120,  123,  124,  123,  124,  250,  249,  120,  103,  103,
975       103,  103,  103,  103,  135,  103,  135,  135,  103,  135,
976       251,  342,  126,  356,  343,  126,  341,  577,  136,  357,
977       356,  136,  248,  248,  248,  125,  362,  125,  127,  128,
978
979       103,  128,  127,  127,  127,  127,  127,  127,  127,  129,
980       127,  577,  127,  131,  127,  132,  127,  135,  103,  135,
981       704,  135,  103,  135,  103,  103,  103,  103,  103,  103,
982       340,  137,  416,  127,  127,  137,  252,  304,  138,  412,
983       252,  138,  248,  248,  248,  248,  248,  248,  305,  803,
984       251,  248,  248,  248,  251,  574,  133,  127,  128,  103,
985       128,  127,  127,  127,  127,  127,  127,  127,  129,  127,
986       577,  127,  131,  127,  132,  127,  135,  103,  135,  412,
987       135,  103,  135,  103,  103,  103,  103,  103,  103,  412,
988       136,  412,  127,  127,  136,  505,  649,  139,  577,  852,
989
990       139,  412,  135,  103,  135,  135,  103,  135,  135,  103,
991       135,  135,  103,  135,  703,  133,  137,  771,  252,  137,
992       577,  772,  140,  705,  889,  140,  103,  103,  103,  103,
993       103,  103,  251,  248,  248,  248,  248,  248,  248, 1324,
994       141,  412, 1323,  141,  142,  143,  103,  143,  142,  142,
995       142,  142,  142,  142,  142,  144,  142,  752,  142,  146,
996       142,  147,  142,  150,  103,  150,  263,  150,  103,  150,
997       103,  103,  103,  248,  248,  248,  412,  151,  577,  142,
998       142,  151,  750,  955,  152,  412,  577,  148,  142,  143,
999       103,  143,  142,  142,  142,  142,  142,  142,  142,  144,
1000
1001       142,  751,  142,  146,  142,  147,  142,  103,  103,  103,
1002       891,  166,  103,  166,  166,  103,  166,  248,  248,  248,
1003       802,  152,  773,  142,  142,  167,  774, 1307,  167,  972,
1004       973,  148,  153,  154,  103,  154,  153,  153,  153,  153,
1005       153,  153,  153,  155,  153,  156,  153,  157,  153,  158,
1006       153,  156,  156,  156,  156,  156,  156,  156,  156,  156,
1007       156,  156,  156,  156,  156,  156,  156,  153,  153,  156,
1008       159,  156,  156,  156,  156,  156,  156,  156,  160,  156,
1009       156,  161,  162,  156,  163,  156,  156,  164,  156,  156,
1010       156,  156,  156,  156,  103,  103,  103,  103,  103,  103,
1011
1012       248,  248,  248,  248,  248,  248,  784,  412,  168, 1306,
1013       785,  168,  169,  170,  103,  170,  169,  169,  169,  169,
1014       169,  169,  169,  171,  169,  412,  169,  173,  169,  174,
1015       169,  177,  103,  177,  923,  177,  103,  177,  103,  103,
1016       103,  103,  103,  103,  252,  178,  252,  169,  169,  178,
1017       786, 1290,  179,  284,  787,  179,  577,  578,  251,  894,
1018       251,  577,  175,  169,  170,  103,  170,  169,  169,  169,
1019       169,  169,  169,  169,  171,  169,  577,  169,  173,  169,
1020       174,  169,  191,  103,  191,  851,  191,  103,  191,  103,
1021       103,  103,  103,  103,  103,  252,  192,  252,  169,  169,
1022
1023       192, 1066,  577,  193,  293,  895,  193, 1289,  412,  251,
1024      1069,  251, 1273,  175,  180,  181,  103,  181,  180,  180,
1025       180,  180,  180,  180,  180,  182,  180,  412,  180,  184,
1026       180,  185,  180,  204,  103,  204,  896,  204,  103,  204,
1027       103,  103,  103,  103,  103,  103,  252,  205,  924,  180,
1028       180,  205,  252,  186,  206,  412,  577,  206, 1272, 1078,
1029       251,  928,  187, 1257,  188,  412,  251, 1079,  412,  189,
1030       180,  181,  103,  181,  180,  180,  180,  180,  180,  180,
1031       180,  182,  180,  959,  180,  184,  180,  185,  180,  204,
1032       103,  204,  888,  204,  103,  204,  204,  103,  204,  204,
1033
1034       103,  204,  294,  205,  926,  180,  180,  205,  929,  186,
1035       207, 1256, 1066,  207,  248,  248,  248,  412,  187,  412,
1036       188,  248,  248,  248, 1067,  189,  194,  195,  103,  195,
1037       194,  194,  194,  194,  194,  194,  194,  196,  194,  412,
1038       194,  198,  194,  199,  194,  103,  103,  103,  954,  103,
1039       103,  103,  217,  103,  217,  217,  103,  217,  956,  208,
1040       252,  194,  194,  208,  252,  252,  218,  200, 1243,  218,
1041      1242,  298,  201,  992,  251,  248,  248,  248,  251,  251,
1042       412,  202,  194,  195,  103,  195,  194,  194,  194,  194,
1043       194,  194,  194,  196,  194,  412,  194,  198,  194,  199,
1044
1045       194,  103,  103,  103, 1027,  103,  103,  103,  231,  103,
1046       231,  231,  103,  231,  412,  219,  412,  194,  194,  219,
1047       252,  252,  232,  200, 1148,  232,  892,  306,  201,  248,
1048       248,  248,  893, 1026,  251,  251,  412,  202,  209,  210,
1049       103,  210,  209,  209,  209,  209,  209,  209,  209,  211,
1050       209,  412,  209,  213,  209,  214,  209,  103,  103,  103,
1051       412,  103,  103,  103,  231,  103,  231,  231,  103,  231,
1052      1327,  233,  927,  209,  209,  233,  952,  412,  232,  412,
1053      1087,  232,  248,  248,  248,  248,  248,  248,  215,  209,
1054       210,  103,  210,  209,  209,  209,  209,  209,  209,  209,
1055
1056       211,  209,  925,  209,  213,  209,  214,  209,  231,  103,
1057       231,  412,  231,  103,  231,  103,  103,  103,  103,  103,
1058       103,  252,  234,  252,  209,  209,  234, 1241,  412,  235,
1059       412, 1328,  235,  412,  957,  251,  412,  251,  412,  215,
1060       220,  221,  103,  221,  220,  220,  220,  220,  220,  220,
1061       220,  222,  220,  252,  220,  224,  220,  225,  220,  244,
1062       103,  244,  989,  244,  103,  244,  252,  251,  991,  271,
1063       252,  307,  958,  245, 1030,  220,  220,  245,  252,  252,
1064       251,  116,  117,  226,  251,  227,  118,  228,  257,  269,
1065       412,  412,  251,  251,  246,  229,  220,  221,  103,  221,
1066
1067       220,  220,  220,  220,  220,  220,  220,  222,  220,  577,
1068       220,  224,  220,  225,  220,  247,  116,  117,  320,  412,
1069       258,  118,  877,  252,  890,  412,  259, 1028,  315,  246,
1070       260,  220,  220,  252, 1057,  261,  878,  251,  412,  226,
1071       319,  227,  930,  228,  248,  248,  248,  251, 1193, 1151,
1072       247,  229,  236,  237,  103,  237,  236,  236,  236,  236,
1073       236,  236,  236,  238,  236,  270,  236,  240,  236,  241,
1074       236,  248,  248,  248,  248,  248,  248,  248,  248,  248,
1075       248,  248,  248,  252,  248,  248,  248,  236,  236, 1240,
1076       332,  425,  425,  425,  474,  474,  474,  251,  515,  515,
1077
1078       515,  521,  521,  521,  515,  515,  515,  427,  412,  475,
1079       242,  236,  237,  103,  237,  236,  236,  236,  236,  236,
1080       236,  236,  238,  236,  252,  236,  240,  236,  241,  236,
1081       412,  267,  577,  412,  252, 1080, 1116,  252,  251,  425,
1082       425,  425,  252, 1081,  267, 1060,  236,  236,  251, 1225,
1083      1377,  251,  477,  477,  477,  427,  251,  412,  268,  993,
1084       269,  252,  528,  528,  528,  931,  270,  478,  328,  242,
1085       271,  268,  272,  274,  273,  251,  268,  529,  269,  270,
1086       412,  412,  252,  275,  270,  272,  428,  276,  271,  267,
1087       277,  252,  278,  412,  412,  268,  251,  274,  313,  412,
1088
1089       252,  412,  412,  270, 1224,  251,  994,  275,  412,  272,
1090       412,  276, 1223, 1056,  251,  252,  268, 1211,  274,  444,
1091       444,  444,  313, 1059,  279,  268,  995,  274,  275,  251,
1092       277, 1088,  280,  279,  268,  446,  274,  275,  252,  277,
1093      1061,  314,  279,  412, 1029,  327,  275, 1084,  277,  268,
1094       314,  274,  251,  252,  454,  454,  454,  279,  534,  534,
1095       534,  275,  252,  277, 1222,  280, 1221,  251, 1025,  327,
1096       456,  412,  328,  535,  274,  412,  251,  444,  444,  444,
1097       279,  454,  454,  454,  275,  412,  277,  328,  280,  274,
1098       460,  460,  460,  446,  412,  279,  268,  456,  274,  275,
1099
1100      1058,  277,  412,  280,  279,  412,  462,  412,  275, 1191,
1101       277, 1090,  280,  460,  460,  460, 1091,  469,  469,  469,
1102       469,  469,  469,  479,  479,  479,  447, 1063, 1378,  462,
1103      1122,  412,  457,  471,  412,  412,  471,  412, 1118,  481,
1104       479,  479,  479,  486,  486,  486,  486,  486,  486,  494,
1105       494,  494,  494,  494,  494, 1066,  481, 1119,  412,  488,
1106      1150,  472,  488,  463, 1173,  496, 1154, 1067,  496,  500,
1107       500,  500,  500,  500,  500,  425,  425,  425,  425,  425,
1108       425,  425,  425,  425,  412,  502,  412, 1220,  502,  412,
1109       482,  427, 1205,  412,  427, 1204,  489,  427,  444,  444,
1110
1111       444,  444,  444,  444, 1121,  497,  444,  444,  444, 1085,
1112       454,  454,  454,  412,  446,  412, 1190,  446,  513,  454,
1113       454,  454,  446, 1214,  412,  503,  456,  454,  454,  454,
1114      1123,  540,  540,  540,  412,  456,  460,  460,  460,  460,
1115       460,  460,  412,  456,  412,  530,  541,  460,  460,  460,
1116       412, 1149,  462, 1207, 1215,  462,  545,  545,  545,  469,
1117       469,  469, 1208,  462,  469,  469,  469, 1152,  469,  469,
1118       469,  546,  474,  474,  474,  471,  477,  477,  477,  412,
1119       471,  412, 1227,  538,  471, 1203,  412,  475,  551,  551,
1120       551,  478,  552,  412, 1155,  553, 1169,  555,  555,  555,
1121
1122       412,  556, 1153,  542,  557,  479,  479,  479,  479,  479,
1123       479,  479,  479,  479,  561,  561,  561,  486,  486,  486,
1124       412,  481,  412,  549,  481, 1171, 1170,  481, 1195,  562,
1125       486,  486,  486,  488,  486,  486,  486,  565,  565,  565,
1126       494,  494,  494,  494,  494,  494,  488,  494,  494,  494,
1127       488,  412,  566,  500,  500,  500,  496, 1231,  412,  496,
1128       500,  500,  500,  496,  500,  500,  500,  558, 1167,  502,
1129       576,  576,  576,  425,  425,  425,  502,  521,  521,  521,
1130       502,  528,  528,  528, 1259, 1202,  577,  578,  412,  427,
1131       563,  596,  596,  596, 1209,  597,  529,  569,  598,  444,
1132
1133       444,  444,  534,  534,  534, 1201,  412,  572,  412,  603,
1134       603,  603,  412,  604, 1212,  446,  605,  535,  606,  606,
1135       606,  608,  608,  608,  611,  611,  611, 1172,  583,  540,
1136       540,  540, 1260,  607,  412,  412,  609,  460,  460,  460,
1137       612,  614,  614,  614,  541,  615,  599,  412,  616,  545,
1138       545,  545, 1248,  462,  620,  620,  620,  610,  621, 1174,
1139       412,  622,  412, 1175,  546,  624,  624,  624,  469,  469,
1140       469,  551,  551,  551,  412,  552, 1189, 1186,  553, 1200,
1141       625,  555,  555,  555,  471,  556,  412, 1199,  557,  479,
1142       479,  479,  617,  561,  561,  561,  633,  633,  633,  412,
1143
1144       634,  626, 1192,  635,  412,  481,  412, 1194,  562,  486,
1145       486,  486,  565,  565,  565,  638,  638,  638,  412,  639,
1146      1206,  412,  640,  412, 1226,  488,  627,  566, 1249,  494,
1147       494,  494,  645,  645,  645,  500,  500,  500,  576,  576,
1148       576,  425,  425,  425,  630,  496, 1228,  646,  661,  661,
1149       661,  502, 1310,  412,  577, 1293,  412,  427,  661,  661,
1150       661,  667,  667,  667,  636,  444,  444,  444,  643,  667,
1151       667,  667,  412,  596,  596,  596,  412,  597,  412,  650,
1152       598,  446, 1229,  655,  662,  603,  603,  603, 1232,  604,
1153      1245,  647,  605, 1246,  662,  651, 1185,  662,  606,  606,
1154
1155       606,  663,  673,  673,  673,  662,  674,  412, 1294,  675,
1156       412,  665,  412,  607,  663,  608,  608,  608,  611,  611,
1157       611,  669,  665,  412,  676,  676,  676,  412,  677, 1269,
1158       609,  678,  412, 1244,  612,  614,  614,  614, 1297,  615,
1159      1332,  412,  616,  460,  460,  460,  620,  620,  620, 1281,
1160       621,  412,  412,  622,  624,  624,  624, 1280,  412,  462,
1161       684,  684,  684,  412,  685, 1251, 1263,  686,  412,  625,
1162       469,  469,  469,  661,  661,  661,  479,  479,  479,  667,
1163       667,  667,  412,  412,  680, 1391,  471,  633,  633,  633,
1164      1252,  634,  481, 1264,  635,  486,  486,  486,  638,  638,
1165
1166       638,  412,  639, 1267,  412,  640,  494,  494,  494,  412,
1167       412,  488,  645,  645,  645,  691, 1286,  690, 1184, 1284,
1168       688,  412,  496, 1268,  698,  698,  698,  646,  699,  412,
1169      1301,  700,  665,  500,  500,  500,  692,  707,  707,  707,
1170       425,  425,  425,  661,  661,  661, 1285,  696, 1270,  502,
1171      1298,  412,  708,  716,  716,  716,  427,  718,  718,  718,
1172       667,  667,  667,  444,  444,  444,  673,  673,  673,  412,
1173       674,  412, 1276,  675, 1183,  412,  676,  676,  676,  446,
1174       677,  701,  412,  678,  460,  460,  460,  730,  730,  730,
1175       709,  684,  684,  684, 1277,  685,  412, 1302,  686,  412,
1176
1177       462, 1321,  731,  721,  469,  469,  469, 1271,  739,  739,
1178       739,  486,  486,  486,  494,  494,  494,  759,  759,  759,
1179       471, 1398, 1287,  732,  740, 1182,  412,  488,  412, 1181,
1180       496,  698,  698,  698, 1278,  699, 1304,  728,  700,  500,
1181       500,  500, 1303,  707,  707,  707, 1180,  742,  412,  754,
1182       754,  754,  412,  755,  412,  502,  756,  737,  708,  425,
1183       425,  425,  762,  762,  762,  716,  716,  716,  746,  718,
1184       718,  718,  765,  765,  765,  427,  766,  766,  766, 1311,
1185       748,  444,  444,  444,  776,  776,  776,  730,  730,  730,
1186      1279,  779,  779,  779, 1288,  780,  412,  446,  781,  412,
1187
1188       777,  412,  731,  469,  469,  469,  412,  739,  739,  739,
1189       412, 1179,  757,  486,  486,  486,  793,  793,  793,  471,
1190      1314,  412,  767,  740,  494,  494,  494, 1320, 1335,  488,
1191       412,  794,  500,  500,  500,  801,  801,  801, 1368, 1282,
1192       496,  412,  412,  754,  754,  754, 1295,  755,  502,  789,
1193       756,  412, 1178,  412,  792,  425,  425,  425,  806,  806,
1194       806,  759,  759,  759,  762,  762,  762,  765,  765,  765,
1195      1296,  427,  766,  766,  766,  811,  811,  811,  797, 1283,
1196      1291,  799,  776,  776,  776,  821,  821,  821,  779,  779,
1197       779,  812,  780, 1299, 1176,  781, 1166, 1165,  777, 1164,
1198
1199       822,  412, 1402,  805,  469,  469,  469,  486,  486,  486,
1200       793,  793,  793,  412,  412,  835,  835,  835,  412,  836,
1201       471,  823,  837,  488,  412,  794,  838,  838,  838,  841,
1202       841,  841,  843,  843,  843,  500,  500,  500,  412, 1292,
1203       831,  839,  425,  425,  425,  842,  806,  806,  806,  412,
1204      1322,  502, 1315, 1300,  834,  811,  811,  811,  427,  864,
1205       864,  864,  821,  821,  821,  866,  866,  866,  412,  867,
1206      1163,  812,  868,  412,  865, 1305,  412,  822,  854,  874,
1207       874,  874,  469,  469,  469,  486,  486,  486,  412, 1308,
1208       844,  801,  801,  801,  875,  835,  835,  835,  471,  836,
1209
1210       412,  488,  837,  838,  838,  838,  412,  412,  881,  881,
1211       881, 1318,  882, 1309, 1372,  883, 1162,  412,  839,  884,
1212       884,  884,  841,  841,  841, 1312,  880,  412,  845,  876,
1213       846,  843,  843,  843,  885,  412,  847, 1313,  842,  412,
1214       848,  412,  849, 1316,  850,  886,  886,  886,  425,  425,
1215       425,  864,  864,  864, 1317,  906,  906,  906,  412,  907,
1216       412,  887,  908,  412,  427, 1329,  865,  866,  866,  866,
1217      1319,  867, 1325, 1336,  868,  874,  874,  874,  912,  912,
1218       912,  412,  913,  412, 1330,  914, 1333,  412,  898,  412,
1219       875,  469,  469,  469,  486,  486,  486,  881,  881,  881,
1220
1221      1326,  882,  412, 1161,  883, 1346, 1160,  471, 1439, 1334,
1222       488,  884,  884,  884,  920,  920,  920,  412,  921, 1358,
1223      1355,  922,  886,  886,  886, 1159,  885,  425,  425,  425,
1224       938,  938,  938,  906,  906,  906,  915,  907,  887,  412,
1225       908,  412,  919,  427,  412,  939,  944,  944,  944,  912,
1226       912,  912,  412,  913, 1337, 1157,  914,  469,  469,  469,
1227      1338,  945,  486,  486,  486, 1344,  940, 1345,  933,  412,
1228       920,  920,  920,  471,  921, 1156, 1347,  922,  488,  953,
1229       953,  953,  960,  960,  960,  425,  425,  425,  964,  964,
1230       964,  967,  967,  967,  412,  412,  412,  961,  577,  412,
1231
1232      1356,  427,  412,  951, 1146,  412,  947,  938,  938,  938,
1233       968,  968,  968,  412,  969,  412,  412,  970,  944,  944,
1234       944, 1145,  939,  976,  976,  976, 1385,  977, 1359, 1386,
1235       978, 1370, 1424,  945,  469,  469,  469, 1339,  412,  963,
1236       981,  981,  981,  984,  984,  984,  486,  486,  486,  412,
1237       471,  953,  953,  953, 1369,  982, 1348,  412,  985,  996,
1238       996,  996,  488,  964,  964,  964,  412,  412,  960,  960,
1239       960, 1004, 1004, 1004,  997,  577,  983,  412,  412,  986,
1240       980, 1349,  990,  961,  577,  998,  998,  998, 1410,  999,
1241       412,  412, 1000, 1407, 1144,  988,  425,  425,  425,  412,
1242
1243      1353,  577,  967,  967,  967,  412,  968,  968,  968, 1354,
1244       969,  412,  427,  970, 1009, 1009, 1009,  976,  976,  976,
1245      1366,  977,  412, 1371,  978, 1011, 1011, 1011,  412, 1010,
1246      1013, 1013, 1013, 1367,  412, 1002,  981,  981,  981, 1389,
1247      1012, 1015, 1015, 1015, 1411, 1016, 1014,  412, 1017, 1373,
1248       412,  982,  984,  984,  984, 1019, 1019, 1019,  412, 1020,
1249      1375, 1431, 1021, 1023, 1023, 1023, 1376,  985,  486,  486,
1250       486, 1031, 1031, 1031,  996,  996,  996,  412, 1034, 1034,
1251      1034, 1381, 1035,  412,  488, 1036, 1432,  412, 1442,  997,
1252       577, 1004, 1004, 1004,  577,  998,  998,  998, 1390,  999,
1253
1254       412, 1394, 1000,  425,  425,  425,  412, 1032, 1046, 1046,
1255      1046,  577, 1047,  412, 1382, 1048, 1023, 1023, 1023,  427,
1256      1009, 1009, 1009, 1024, 1033,  575,  575,  575,  575,  575,
1257       575,  575,  575,  575, 1143, 1010,  575, 1395, 1383,  575,
1258       575,  575,  577,  575, 1011, 1011, 1011, 1049, 1049, 1049,
1259       412, 1050, 1142,  412, 1051, 1141, 1040,  412,  412, 1012,
1260       575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
1261       575,  412,  412,  575,  412,  412,  575,  575,  575,  577,
1262       575, 1414, 1384, 1013, 1013, 1013, 1015, 1015, 1015, 1387,
1263      1016, 1396,  412, 1017, 1054, 1054, 1054,  575,  575, 1014,
1264
1265      1019, 1019, 1019, 1388, 1020, 1392, 1393, 1021,  412, 1397,
1266      1055, 1031, 1031, 1031, 1064, 1064, 1064, 1034, 1034, 1034,
1267      1137, 1035, 1399, 1400, 1036, 1403,  412,  412, 1402,  412,
1268       412,  412,  412,  577, 1046, 1046, 1046,  412, 1047, 1401,
1269       412, 1048, 1062,  575,  575,  575,  575,  575, 1070,  575,
1270       575,  575,  412,  412,  575, 1460, 1127,  575,  575,  575,
1271       577,  575, 1049, 1049, 1049, 1435, 1050,  412, 1405, 1051,
1272      1196, 1196, 1196,  425,  425,  425, 1415, 1406,  575,  575,
1273       575,  575,  575,  575,  575,  575,  575,  575, 1070,  427,
1274      1429,  575, 1404, 1408,  575,  575,  575,  577,  575,  412,
1275
1276       412, 1054, 1054, 1054, 1086, 1086, 1086, 1089, 1089, 1089,
1277      1064, 1064, 1064, 1442, 1409,  575,  575, 1055, 1072, 1125,
1278       412,  412,  412,  412,  412, 1094,  412, 1096, 1096, 1096,
1279       425,  425,  425, 1100, 1100, 1100, 1102, 1102, 1102,  412,
1280      1416, 1092, 1417,  577,  578,  412,  427,  412, 1101,  412,
1281      1422, 1103, 1104, 1104, 1104, 1107, 1107, 1107, 1115, 1115,
1282      1115, 1086, 1086, 1086, 1089, 1089, 1089, 1105,  412,  412,
1283      1108, 1096, 1096, 1096,  412, 1124,  412,  412,  412, 1412,
1284       412, 1098,  425,  425,  425, 1413,  412,  577, 1106, 1100,
1285      1100, 1100, 1117, 1420, 1423, 1120, 1094,  412,  427, 1128,
1286
1287      1128, 1128, 1421, 1129, 1101,  412, 1130, 1102, 1102, 1102,
1288      1425,  412,  650, 1131, 1131, 1131, 1114, 1132,  412, 1437,
1289      1133, 1426, 1103, 1104, 1104, 1104, 1134, 1134, 1134, 1427,
1290      1135,  412,  412, 1136, 1107, 1107, 1107, 1126, 1105, 1138,
1291      1138, 1138, 1428, 1139,  412,  412, 1140,  412, 1430, 1108,
1292      1115, 1115, 1115,  425,  425,  425, 1128, 1128, 1128,  412,
1293      1129, 1113, 1464, 1130, 1112,  412,  412, 1111, 1433,  427,
1294      1131, 1131, 1131, 1443, 1132, 1438,  412, 1133, 1134, 1134,
1295      1134, 1147, 1135, 1434, 1436, 1136, 1138, 1138, 1138, 1110,
1296      1139, 1444,  412, 1140, 1168, 1168, 1168,  412, 1158,  425,
1297
1298       425,  425, 1168, 1168, 1168,  412, 1187, 1453, 1451, 1188,
1299       412,  425,  425,  425,  412,  427, 1445, 1460,  412, 1198,
1300      1198, 1198, 1210, 1210, 1210, 1109,  412,  427, 1213, 1213,
1301      1213, 1196, 1196, 1196, 1216, 1216, 1216, 1452,  412, 1198,
1302      1198, 1198,  412,  412,  412, 1465, 1218, 1218, 1218, 1177,
1303      1217, 1210, 1210, 1210,  412, 1213, 1213, 1213, 1099, 1233,
1304      1197, 1219, 1234, 1235, 1235, 1235, 1097,  412, 1236, 1236,
1305      1236,  412, 1216, 1216, 1216, 1218, 1218, 1218, 1446,  412,
1306      1499, 1440, 1230,  412,  412, 1237, 1237, 1237, 1217, 1238,
1307      1219, 1094, 1239, 1247, 1247, 1247, 1250, 1250, 1250, 1235,
1308
1309      1235, 1235,  412, 1236, 1236, 1236, 1475, 1254,  412,  412,
1310      1255,  412,  412,  412,  412,  412, 1237, 1237, 1237,  412,
1311      1238, 1463, 1441, 1239, 1258, 1258, 1258, 1247, 1247, 1247,
1312      1253, 1261, 1449,  412, 1262, 1250, 1250, 1250, 1450, 1265,
1313       412, 1447, 1266,  412,  412, 1258, 1258, 1258,  412, 1274,
1314      1448,  412, 1275, 1331, 1331, 1331, 1340, 1340, 1340, 1094,
1315       412,  412, 1342, 1342, 1342,  412, 1331, 1331, 1331,  412,
1316      1350, 1341, 1454, 1351, 1352, 1352, 1352, 1343, 1357, 1357,
1317      1357, 1500,  412, 1340, 1340, 1340, 1342, 1342, 1342, 1455,
1318       412,  412, 1468,  412,  412, 1360, 1360, 1360, 1341, 1361,
1319
1320      1463, 1343, 1362, 1363, 1363, 1363, 1083, 1364, 1467,  412,
1321      1365, 1352, 1352, 1352, 1357, 1357, 1357, 1082, 1379,  412,
1322       412, 1380, 1360, 1360, 1360,  412, 1361,  412,  412, 1362,
1323       412, 1363, 1363, 1363, 1458, 1364, 1459,  412, 1365, 1418,
1324      1418, 1418, 1374, 1418, 1418, 1418, 1456, 1456, 1456, 1461,
1325      1481, 1467, 1462, 1077, 1076, 1419, 1466, 1466, 1466, 1419,
1326       412, 1472, 1457, 1456, 1456, 1456, 1470, 1470, 1470, 1469,
1327      1476, 1472,  412,  412, 1473, 1473, 1473,  412,  412, 1457,
1328       412,  412, 1471,  412, 1466, 1466, 1466,  412, 1477,  412,
1329      1474, 1478, 1479, 1479, 1479, 1470, 1470, 1470,  412,  412,
1330
1331       412, 1483, 1483, 1483, 1473, 1473, 1473, 1485, 1480, 1482,
1332       412, 1471,  412, 1486, 1479, 1479, 1479, 1484,  412, 1487,
1333      1474, 1489, 1490,  412,  412, 1488,  412,  412,  412,  412,
1334      1480, 1483, 1483, 1483,  412, 1503,  412, 1491, 1492,  412,
1335       412, 1503, 1495,  412,  412,  412,  412, 1484, 1496, 1512,
1336      1493, 1497, 1494,  412, 1508, 1508, 1508, 1075, 1498, 1512,
1337      1506,  412, 1501, 1507,  412, 1502, 1504,  412,  412, 1505,
1338      1509, 1508, 1508, 1508, 1515, 1515, 1515,  412,  412, 1515,
1339      1515, 1515,  412,  412, 1519, 1520,  412, 1509, 1510, 1511,
1340      1516,  412,  412,  412,  412, 1516, 1513,  412, 1527, 1514,
1341
1342      1074, 1073, 1527, 1528, 1528, 1528, 1521, 1522, 1517, 1518,
1343       412,  412, 1528, 1528, 1528, 1071, 1053, 1052, 1525, 1529,
1344      1045, 1526, 1044, 1043, 1042, 1523, 1041, 1039, 1529, 1022,
1345      1018, 1008, 1524,  100,  100,  100,  100,  100,  100,  100,
1346       101,  101,  101,  101,  101,  101,  101,  106,  106,  106,
1347       106,  106,  106,  106,  109,  109,  109,  109,  109,  109,
1348       109,  112,  112,  112,  112,  112,  112,  112,  115,  115,
1349       115,  115,  115,  115,  115,  122,  122,  122,  122,  122,
1350       122,  122,  130,  130,  130,  130,  130,  130,  130,  134,
1351       134,  134,  134,  134,  134,  134,  145,  145,  145,  145,
1352
1353       145,  145,  145,  149,  149,  149,  149,  149,  149,  149,
1354       165,  165,  165,  165,  165,  165,  165,  172,  172,  172,
1355       172,  172,  172,  172,  176,  176,  176,  176,  176,  176,
1356       176,  183,  183,  183,  183,  183,  183,  183,  190,  190,
1357       190,  190,  190,  190,  190,  197,  197,  197,  197,  197,
1358       197,  197,  203,  203,  203,  203,  203,  203,  203,  212,
1359       212,  212,  212,  212,  212,  212,  216,  216,  216,  216,
1360       216,  216,  216,  223,  223,  223,  223,  223,  223,  223,
1361       230,  230,  230,  230,  230,  230,  230,  239,  239,  239,
1362       239,  239,  239,  239,  243,  243,  243,  243,  243,  243,
1363
1364       243,  265,  265,  265, 1007,  265,  282,  282,  282, 1006,
1365       282,  286,  286,  286, 1005,  286,  296,  296,  296, 1003,
1366       296,  300,  300,  300, 1001,  300,  309,  309,  309,  987,
1367       309,  317,  317,  317,  979,  317,  322,  322,  322,  975,
1368       322,  330,  330,  330,  974,  330,  335,  335,  335,  335,
1369       335,  971,  335,  350,  966,  350,  367,  965,  367,  375,
1370       962,  375,  379,  950,  379,  386,  949,  386,  392,  948,
1371       392,  397,  946,  397,  403,  943,  403,  407,  942,  407,
1372       411,  411,  411,  411,  411,  411,  411,  417,  941,  937,
1373       417,  426,  426,  426,  426,  426,  426,  445,  445,  445,
1374
1375       445,  445,  445,  455,  455,  455,  455,  455,  455,  461,
1376       461,  461,  461,  461,  461,  470,  470,  470,  470,  470,
1377       470,  480,  480,  480,  480,  480,  480,  487,  487,  487,
1378       487,  487,  487,  495,  495,  495,  495,  495,  495,  501,
1379       501,  501,  501,  501,  501,  575,  575,  575,  575,  575,
1380       575,  575, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1038,
1381      1038, 1038, 1038, 1038, 1038, 1038, 1065, 1065, 1065, 1065,
1382      1065, 1065, 1065, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
1383      1093, 1093, 1093, 1093, 1093, 1093, 1093, 1095, 1095, 1095,
1384      1095, 1095, 1095, 1095,  936,  935,  934,  932,  918,  917,
1385
1386       916,  911,  910,  909,  905,  904,  903,  902,  901,  900,
1387       899,  897,  879,  873,  872,  871,  870,  869,  863,  862,
1388       861,  860,  859,  858,  857,  856,  855,  853,  840,  833,
1389       832,  830,  829,  828,  827,  826,  825,  824,  820,  819,
1390       818,  817,  816,  815,  814,  813,  810,  809,  808,  807,
1391       804,  800,  798,  796,  795,  791,  790,  788,  783,  782,
1392       778,  775,  770,  769,  768,  764,  763,  761,  760,  758,
1393       753,  749,  747,  745,  744,  743,  741,  738,  736,  735,
1394       734,  733,  729,  727,  726,  725,  724,  723,  722,  720,
1395       719,  717,  715,  714,  713,  712,  711,  710,  706,  702,
1396
1397       697,  695,  694,  693,  691,  689,  687,  683,  682,  681,
1398       663,  679,  672,  671,  670,  668,  666,  664,  660,  659,
1399       658,  657,  656,  654,  653,  652,  577,  648,  644,  642,
1400       641,  637,  632,  631,  629,  628,  623,  619,  618,  613,
1401       602,  601,  600,  595,  594,  593,  592,  591,  590,  589,
1402       588,  587,  586,  585,  584,  582,  581,  580,  579,  573,
1403       571,  570,  568,  567,  564,  560,  559,  554,  550,  548,
1404       547,  544,  543,  539,  537,  536,  533,  532,  531,  527,
1405       526,  525,  524,  523,  522,  520,  519,  518,  517,  516,
1406       514,  512,  511,  510,  509,  508,  507,  506,  412,  504,
1407
1408       499,  498,  493,  492,  491,  490,  485,  484,  483,  476,
1409       473,  468,  467,  466,  465,  464,  459,  458,  453,  452,
1410       451,  450,  449,  448,  443,  442,  441,  440,  439,  438,
1411       437,  436,  435,  434,  433,  432,  431,  430,  429,  424,
1412       423,  422,  421,  420,  419,  418,  415,  413,  412,  410,
1413       409,  408,  406,  405,  404,  402,  401,  400,  399,  357,
1414       398,  396,  395,  394,  393,  391,  390,  389,  388,  387,
1415       385,  384,  383,  382,  381,  380,  378,  377,  376,  374,
1416       373,  372,  371,  370,  369,  368,  366,  365,  364,  363,
1417       361,  360,  359,  358,  355,  354,  353,  352,  351,  349,
1418
1419       348,  347,  346,  345,  344,  339,  336,  338,  334,  333,
1420       331,  329,  326,  325,  324,  323,  321,  318,  316,  312,
1421       311,  310,  308,  303,  302,  301,  299,  297,  295,  292,
1422       291,  290,  289,  288,  287,  285,  283,  281,  266,  264,
1423       262,  256,  255,  256,  255,  254,  253, 1530,   99, 1530,
1424      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1425      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1426      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1427      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1428      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1429
1430      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1431      1530
1432     } ;
1433
1434 static yyconst flex_int16_t yy_chk[4212] =
1435     {   0,
1436         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
1437         6,    6,    6,    9,    0,    3,   10,   11,    4,   12,
1438         9,    5,  337,   10,    6,    7,    7,    7,    8,    8,
1439         8,   13,   13,   11,  337,   12,   13,   13,  257,    7,
1440        14,   14,    8,  249,   13,   14,   14,   15,   15, 1036,
1441        15,  104,   15,   14,   16,   16,  249,   16, 1036,   16,
1442        15,   17,   17,   18,   18,  104,  105,   16,   19,   19,
1443        19,   20,   20,   20,   23,   23,   23,   24,   24,   24,
1444       105,  258,   19,  272,  258,   20,  257,  650,   23,  272,
1445       277,   24,  102,  102,  102,   17,  277,   18,   21,   21,
1446
1447        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
1448        21,  752,   21,   21,   21,   21,   21,   25,   25,   25,
1449       650,   26,   26,   26,   27,   27,   27,   28,   28,   28,
1450       340,   25,  340,   21,   21,   26,  108,  189,   27,  505,
1451       131,   28,  103,  103,  103,  107,  107,  107,  189,  752,
1452       108,  128,  128,  128,  131,  505,   21,   22,   22,   22,
1453        22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1454       803,   22,   22,   22,   22,   22,   29,   29,   29,  574,
1455        30,   30,   30,   31,   31,   31,   32,   32,   32,  846,
1456        29,  414,   22,   22,   30,  414,  574,   31,  651,  803,
1457
1458        32,  649,   33,   33,   33,   34,   34,   34,   35,   35,
1459        35,   36,   36,   36,  649,   22,   33,  725,  126,   34,
1460       705,  725,   35,  651,  846,   36,   37,   37,   37,   38,
1461        38,   38,  126,  135,  135,  135,  143,  143,  143, 1307,
1462        37,  926, 1306,   38,   39,   39,   39,   39,   39,   39,
1463        39,   39,   39,   39,   39,   39,   39,  705,   39,   39,
1464        39,   39,   39,   41,   41,   41,  126,   42,   42,   42,
1465        43,   43,   43,  150,  150,  150,  703,   41,  704,   39,
1466        39,   42,  703,  926,   43,  848,  751,   39,   40,   40,
1467        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1468
1469        40,  704,   40,   40,   40,   40,   40,   44,   44,   44,
1470       848,   47,   47,   47,   48,   48,   48,  154,  154,  154,
1471       751,   44,  726,   40,   40,   47,  726, 1290,   48,  941,
1472       941,   40,   45,   45,   45,   45,   45,   45,   45,   45,
1473        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1474        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1475        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1476        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1477        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
1478        45,   45,   45,   45,   49,   49,   49,   50,   50,   50,
1479
1480       166,  166,  166,  170,  170,  170,  734,  888,   49, 1289,
1481       734,   50,   51,   51,   51,   51,   51,   51,   51,   51,
1482        51,   51,   51,   51,   51,  850,   51,   51,   51,   51,
1483        51,   53,   53,   53,  888,   54,   54,   54,   55,   55,
1484        55,   56,   56,   56,  146,   53,  151,   51,   51,   54,
1485       735, 1273,   55,  151,  735,   56, 1066, 1066,  146,  850,
1486       151,  802,   51,   52,   52,   52,   52,   52,   52,   52,
1487        52,   52,   52,   52,   52,   52,  851,   52,   52,   52,
1488        52,   52,   59,   59,   59,  802,   60,   60,   60,   61,
1489        61,   61,   62,   62,   62,  157,   59,  167,   52,   52,
1490
1491        60, 1068,  852,   61,  167,  851,   62, 1272,  889,  157,
1492      1068,  167, 1257,   52,   57,   57,   57,   57,   57,   57,
1493        57,   57,   57,   57,   57,   57,   57,  893,   57,   57,
1494        57,   57,   57,   65,   65,   65,  852,   66,   66,   66,
1495        67,   67,   67,   68,   68,   68,  173,   65,  889,   57,
1496        57,   66,  168,   57,   67,  845,  930,   68, 1256, 1050,
1497       173,  893,   57, 1243,   57,  891,  168, 1050,  894,   57,
1498        58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
1499        58,   58,   58,  930,   58,   58,   58,   58,   58,   69,
1500        69,   69,  845,   70,   70,   70,   71,   71,   71,   72,
1501
1502        72,   72,  168,   69,  891,   58,   58,   70,  894,   58,
1503        71, 1242, 1035,   72,  177,  177,  177,  925,   58,  927,
1504        58,  181,  181,  181, 1035,   58,   63,   63,   63,   63,
1505        63,   63,   63,   63,   63,   63,   63,   63,   63,  955,
1506        63,   63,   63,   63,   63,   73,   73,   73,  925,   74,
1507        74,   74,   77,   77,   77,   78,   78,   78,  927,   73,
1508       184,   63,   63,   74,  178,  198,   77,   63, 1225,   78,
1509      1224,  178,   63,  955,  184,  191,  191,  191,  178,  198,
1510       991,   63,   64,   64,   64,   64,   64,   64,   64,   64,
1511        64,   64,   64,   64,   64,  849,   64,   64,   64,   64,
1512
1513        64,   79,   79,   79,  991,   80,   80,   80,   83,   83,
1514        83,   84,   84,   84, 1116,   79,  990,   64,   64,   80,
1515       192,  213,   83,   64, 1116,   84,  849,  192,   64,  195,
1516       195,  195,  849,  990,  192,  213,  923,   64,   75,   75,
1517        75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
1518        75,  892,   75,   75,   75,   75,   75,   85,   85,   85,
1519      1059,   86,   86,   86,   87,   87,   87,   88,   88,   88,
1520      1310,   85,  892,   75,   75,   86,  923, 1310,   87,  890,
1521      1059,   88,  204,  204,  204,  210,  210,  210,   75,   76,
1522        76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
1523
1524        76,   76,  890,   76,   76,   76,   76,   76,   89,   89,
1525        89,  928,   90,   90,   90,   91,   91,   91,   92,   92,
1526        92,  193,   89,  179,   76,   76,   90, 1222,  954,   91,
1527       952, 1311,   92,  929,  928,  193,  994,  179, 1311,   76,
1528        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
1529        81,   81,   81,  152,   81,   81,   81,   81,   81,   95,
1530        95,   95,  952,   96,   96,   96,  224,  152,  954,  179,
1531       219,  193,  929,   95,  994,   81,   81,   96,  208,  240,
1532       224,   97,   97,   81,  219,   81,   97,   81,  118,  152,
1533       992,  847,  208,  240,   97,   81,   82,   82,   82,   82,
1534
1535        82,   82,   82,   82,   82,   82,   82,   82,   82,  895,
1536        82,   82,   82,   82,   82,   97,   98,   98,  219, 1026,
1537       118,   98,  832,  141,  847, 1119,  118,  992,  208,   98,
1538       118,   82,   82,  218, 1026,  118,  832,  141, 1173,   82,
1539       218,   82,  895,   82,  217,  217,  217,  218, 1173, 1119,
1540        98,   82,   93,   93,   93,   93,   93,   93,   93,   93,
1541        93,   93,   93,   93,   93,  141,   93,   93,   93,   93,
1542        93,  221,  221,  221,  231,  231,  231,  237,  237,  237,
1543       244,  244,  244,  245,  248,  248,  248,   93,   93, 1220,
1544       245,  350,  350,  350,  389,  389,  389,  245,  430,  430,
1545
1546       430,  436,  436,  436,  515,  515,  515,  350, 1029,  389,
1547        93,   94,   94,   94,   94,   94,   94,   94,   94,   94,
1548        94,   94,   94,   94,  136,   94,   94,   94,   94,   94,
1549      1085,  136,  896,  956,  235, 1051, 1085,  137,  136,  351,
1550       351,  351,  138, 1051,  137, 1029,   94,   94,  235, 1205,
1551      1355,  137,  391,  391,  391,  351,  138, 1355,  136,  956,
1552       136,  139,  443,  443,  443,  896,  136,  391,  235,   94,
1553       136,  137,  136,  137,  136,  139,  138,  443,  138,  137,
1554      1025,  957,  140,  137,  138,  137,  351,  137,  138,  140,
1555       138,  205,  138, 1028, 1191,  139,  140,  139,  205, 1060,
1556
1557       206,  958, 1030,  139, 1204,  205,  957,  139, 1056,  139,
1558       993,  139, 1203, 1025,  206,  207,  140, 1191,  140,  367,
1559       367,  367,  207, 1028,  140,  205,  958,  205,  140,  207,
1560       140, 1060,  140,  205,  206,  367,  206,  205,  232,  205,
1561      1030,  205,  206,  989,  993,  232,  206, 1056,  206,  207,
1562       206,  207,  232,  233,  375,  375,  375,  207,  451,  451,
1563       451,  207,  234,  207, 1202,  207, 1201,  233,  989,  234,
1564       375, 1171,  232,  451,  232, 1027,  234,  368,  368,  368,
1565       232,  376,  376,  376,  232, 1063,  232,  233,  232,  233,
1566       379,  379,  379,  368, 1062,  233,  234,  376,  234,  233,
1567
1568      1027,  233, 1032,  233,  234, 1091,  379, 1087,  234, 1171,
1569       234, 1062,  234,  380,  380,  380, 1063,  386,  386,  386,
1570       387,  387,  387,  392,  392,  392,  368, 1032, 1356,  380,
1571      1091, 1118,  376,  386, 1122, 1356,  387, 1088, 1087,  392,
1572       393,  393,  393,  397,  397,  397,  398,  398,  398,  403,
1573       403,  403,  404,  404,  404, 1065,  393, 1088, 1153,  397,
1574      1118,  387,  398,  380, 1153,  403, 1122, 1065,  404,  407,
1575       407,  407,  408,  408,  408,  425,  425,  425,  426,  426,
1576       426,  428,  428,  428, 1194,  407, 1170, 1200,  408, 1090,
1577       393,  425, 1185, 1057,  426, 1184,  398,  428,  444,  444,
1578
1579       444,  445,  445,  445, 1090,  404,  447,  447,  447, 1057,
1580       454,  454,  454, 1092,  444, 1187, 1170,  445,  428,  455,
1581       455,  455,  447, 1194, 1188,  408,  454,  457,  457,  457,
1582      1092,  459,  459,  459, 1117,  455,  460,  460,  460,  461,
1583       461,  461, 1207,  457, 1195,  447,  459,  463,  463,  463,
1584      1120, 1117,  460, 1187, 1195,  461,  466,  466,  466,  469,
1585       469,  469, 1188,  463,  470,  470,  470, 1120,  472,  472,
1586       472,  466,  474,  474,  474,  469,  477,  477,  477, 1123,
1587       470, 1149, 1207,  457,  472, 1183, 1121,  474,  475,  475,
1588       475,  477,  475, 1150, 1123,  475, 1149,  478,  478,  478,
1589
1590      1151,  478, 1121,  463,  478,  479,  479,  479,  480,  480,
1591       480,  482,  482,  482,  485,  485,  485,  486,  486,  486,
1592      1211,  479, 1175,  472,  480, 1151, 1150,  482, 1175,  485,
1593       487,  487,  487,  486,  489,  489,  489,  491,  491,  491,
1594       494,  494,  494,  495,  495,  495,  487,  497,  497,  497,
1595       489, 1147,  491,  500,  500,  500,  494, 1211, 1245,  495,
1596       501,  501,  501,  497,  503,  503,  503,  482, 1147,  500,
1597       506,  506,  506,  513,  513,  513,  501,  521,  521,  521,
1598       503,  528,  528,  528, 1245, 1182,  506,  506, 1189,  513,
1599       489,  529,  529,  529, 1189,  529,  528,  497,  529,  530,
1600
1601       530,  530,  534,  534,  534, 1181, 1246,  503, 1192,  535,
1602       535,  535, 1152,  535, 1192,  530,  535,  534,  536,  536,
1603       536,  537,  537,  537,  538,  538,  538, 1152,  513,  540,
1604       540,  540, 1246,  536, 1154, 1230,  537,  542,  542,  542,
1605       538,  541,  541,  541,  540,  541,  530, 1155,  541,  545,
1606       545,  545, 1230,  542,  546,  546,  546,  537,  546, 1154,
1607      1169,  546, 1167, 1155,  545,  548,  548,  548,  549,  549,
1608       549,  551,  551,  551, 1174,  551, 1169, 1167,  551, 1180,
1609       548,  555,  555,  555,  549,  555, 1172, 1179,  555,  558,
1610       558,  558,  542,  561,  561,  561,  562,  562,  562, 1231,
1611
1612       562,  548, 1172,  562, 1186,  558, 1208, 1174,  561,  563,
1613       563,  563,  565,  565,  565,  566,  566,  566, 1206,  566,
1614      1186, 1293,  566, 1276, 1206,  563,  549,  565, 1231,  569,
1615       569,  569,  571,  571,  571,  572,  572,  572,  576,  576,
1616       576,  583,  583,  583,  558,  569, 1208,  571,  589,  589,
1617       589,  572, 1293, 1227,  576, 1276, 1228,  583,  591,  591,
1618       591,  593,  593,  593,  563,  599,  599,  599,  569,  595,
1619       595,  595, 1209,  596,  596,  596, 1277,  596, 1212,  576,
1620       596,  599, 1209,  583,  589,  603,  603,  603, 1212,  603,
1621      1227,  572,  603, 1228,  591,  576, 1166,  593,  606,  606,
1622
1623       606,  589,  607,  607,  607,  595,  607, 1315, 1277,  607,
1624      1264,  591, 1253,  606,  593,  608,  608,  608,  611,  611,
1625       611,  599,  595, 1226,  609,  609,  609, 1233,  609, 1253,
1626       608,  609, 1280, 1226,  611,  614,  614,  614, 1280,  614,
1627      1315, 1263,  614,  617,  617,  617,  620,  620,  620, 1264,
1628       620, 1248, 1234,  620,  624,  624,  624, 1263, 1249,  617,
1629       625,  625,  625, 1251,  625, 1233, 1248,  625, 1374,  624,
1630       627,  627,  627,  628,  628,  628,  630,  630,  630,  631,
1631       631,  631, 1267, 1252,  617, 1374,  627,  633,  633,  633,
1632      1234,  633,  630, 1249,  633,  636,  636,  636,  638,  638,
1633
1634       638, 1269,  638, 1251, 1284,  638,  643,  643,  643, 1268,
1635      1254,  636,  645,  645,  645,  631, 1269,  630, 1165, 1267,
1636       627, 1281,  643, 1252,  646,  646,  646,  645,  646, 1259,
1637      1284,  646,  631,  647,  647,  647,  636,  654,  654,  654,
1638       655,  655,  655,  661,  661,  661, 1268,  643, 1254,  647,
1639      1281, 1260,  654,  663,  663,  663,  655,  665,  665,  665,
1640       667,  667,  667,  669,  669,  669,  673,  673,  673, 1255,
1641       673, 1285, 1259,  673, 1164, 1304,  676,  676,  676,  669,
1642       676,  647, 1270,  676,  680,  680,  680,  682,  682,  682,
1643       655,  684,  684,  684, 1260,  684, 1261, 1285,  684, 1287,
1644
1645       680, 1304,  682,  669,  688,  688,  688, 1255,  690,  690,
1646       690,  692,  692,  692,  696,  696,  696,  711,  711,  711,
1647       688, 1381, 1270,  682,  690, 1163, 1286,  692, 1381, 1162,
1648       696,  698,  698,  698, 1261,  698, 1287,  680,  698,  701,
1649       701,  701, 1286,  707,  707,  707, 1161,  692, 1294,  708,
1650       708,  708, 1262,  708, 1271,  701,  708,  688,  707,  709,
1651       709,  709,  714,  714,  714,  716,  716,  716,  696,  718,
1652       718,  718,  719,  719,  719,  709,  720,  720,  720, 1294,
1653       701,  721,  721,  721,  728,  728,  728,  730,  730,  730,
1654      1262,  731,  731,  731, 1271,  731, 1318,  721,  731, 1346,
1655
1656       728, 1265,  730,  737,  737,  737, 1278,  739,  739,  739,
1657      1297, 1160,  709,  742,  742,  742,  743,  743,  743,  737,
1658      1297, 1303,  721,  739,  746,  746,  746, 1303, 1318,  742,
1659      1279,  743,  748,  748,  748,  750,  750,  750, 1346, 1265,
1660       746, 1266, 1274,  754,  754,  754, 1278,  754,  748,  737,
1661       754,  750, 1159, 1282,  742,  757,  757,  757,  758,  758,
1662       758,  759,  759,  759,  762,  762,  762,  765,  765,  765,
1663      1279,  757,  766,  766,  766,  767,  767,  767,  746, 1266,
1664      1274,  748,  776,  776,  776,  778,  778,  778,  779,  779,
1665       779,  767,  779, 1282, 1157,  779, 1146, 1145,  776, 1144,
1666
1667       778, 1275, 1385,  757,  789,  789,  789,  792,  792,  792,
1668       793,  793,  793, 1283, 1385,  794,  794,  794, 1298,  794,
1669       789,  778,  794,  792, 1305,  793,  795,  795,  795,  797,
1670       797,  797,  798,  798,  798,  799,  799,  799, 1288, 1275,
1671       789,  795,  805,  805,  805,  797,  806,  806,  806, 1291,
1672      1305,  799, 1298, 1283,  792,  811,  811,  811,  805,  820,
1673       820,  820,  821,  821,  821,  822,  822,  822, 1301,  822,
1674      1143,  811,  822, 1292,  820, 1288, 1350,  821,  805,  830,
1675       830,  830,  831,  831,  831,  834,  834,  834, 1295, 1291,
1676       799,  801,  801,  801,  830,  835,  835,  835,  831,  835,
1677
1678      1296,  834,  835,  838,  838,  838, 1299,  801,  839,  839,
1679       839, 1301,  839, 1292, 1350,  839, 1142, 1300,  838,  840,
1680       840,  840,  841,  841,  841, 1295,  834, 1302,  801,  831,
1681       801,  843,  843,  843,  840, 1308,  801, 1296,  841, 1312,
1682       801, 1319,  801, 1299,  801,  844,  844,  844,  854,  854,
1683       854,  864,  864,  864, 1300,  865,  865,  865, 1313,  865,
1684      1316,  844,  865, 1309,  854, 1312,  864,  866,  866,  866,
1685      1302,  866, 1308, 1319,  866,  874,  874,  874,  875,  875,
1686       875, 1327,  875, 1317, 1313,  875, 1316, 1338,  854, 1335,
1687       874,  876,  876,  876,  880,  880,  880,  881,  881,  881,
1688
1689      1309,  881, 1424, 1141,  881, 1327, 1137,  876, 1424, 1317,
1690       880,  884,  884,  884,  885,  885,  885, 1321,  885, 1338,
1691      1335,  885,  886,  886,  886, 1127,  884,  898,  898,  898,
1692       903,  903,  903,  906,  906,  906,  876,  906,  886, 1325,
1693       906, 1326,  880,  898, 1320,  903,  910,  910,  910,  912,
1694       912,  912, 1328,  912, 1320, 1125,  912,  915,  915,  915,
1695      1321,  910,  919,  919,  919, 1325,  903, 1326,  898, 1336,
1696       920,  920,  920,  915,  920, 1124, 1328,  920,  919,  924,
1697       924,  924,  931,  931,  931,  933,  933,  933,  934,  934,
1698       934,  937,  937,  937, 1322,  924, 1339,  931,  931, 1348,
1699
1700      1336,  933, 1368,  919, 1114, 1369,  915,  938,  938,  938,
1701       939,  939,  939, 1329,  939, 1347, 1407,  939,  944,  944,
1702       944, 1113,  938,  945,  945,  945, 1368,  945, 1339, 1369,
1703       945, 1348, 1407,  944,  947,  947,  947, 1322, 1330,  933,
1704       948,  948,  948,  949,  949,  949,  951,  951,  951, 1394,
1705       947,  953,  953,  953, 1347,  948, 1329, 1333,  949,  959,
1706       959,  959,  951,  964,  964,  964, 1334,  953,  960,  960,
1707       960,  966,  966,  966,  959,  959,  948, 1344, 1391,  949,
1708       947, 1330,  953,  960,  960,  961,  961,  961, 1394,  961,
1709      1345, 1349,  961, 1391, 1112,  951,  963,  963,  963, 1372,
1710
1711      1333,  961,  967,  967,  967, 1395,  968,  968,  968, 1334,
1712       968, 1351,  963,  968,  975,  975,  975,  976,  976,  976,
1713      1344,  976, 1414, 1349,  976,  979,  979,  979, 1353,  975,
1714       980,  980,  980, 1345, 1354,  963,  981,  981,  981, 1372,
1715       979,  982,  982,  982, 1395,  982,  980, 1415,  982, 1351,
1716      1358,  981,  984,  984,  984,  985,  985,  985, 1373,  985,
1717      1353, 1414,  985,  987,  987,  987, 1354,  984,  988,  988,
1718       988,  995,  995,  995,  996,  996,  996, 1377,  997,  997,
1719       997, 1358,  997, 1359,  988,  997, 1415,  995, 1427,  996,
1720       996, 1004, 1004, 1004,  997,  998,  998,  998, 1373,  998,
1721
1722      1427, 1377,  998, 1002, 1002, 1002, 1366,  995, 1010, 1010,
1723      1010,  998, 1010, 1378, 1359, 1010, 1023, 1023, 1023, 1002,
1724      1009, 1009, 1009,  988,  995,  999,  999,  999,  999,  999,
1725       999,  999,  999,  999, 1111, 1009,  999, 1378, 1366,  999,
1726       999,  999,  999,  999, 1011, 1011, 1011, 1012, 1012, 1012,
1727      1367, 1012, 1110, 1379, 1012, 1109, 1002, 1398, 1370, 1011,
1728       999,  999, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
1729      1000, 1380, 1371, 1000, 1375, 1376, 1000, 1000, 1000, 1000,
1730      1000, 1398, 1367, 1013, 1013, 1013, 1015, 1015, 1015, 1370,
1731      1015, 1379, 1383, 1015, 1024, 1024, 1024, 1000, 1000, 1013,
1732
1733      1019, 1019, 1019, 1371, 1019, 1375, 1376, 1019, 1384, 1380,
1734      1024, 1031, 1031, 1031, 1033, 1033, 1033, 1034, 1034, 1034,
1735      1106, 1034, 1382, 1383, 1034, 1387, 1420, 1031, 1386, 1382,
1736      1033, 1389, 1387, 1034, 1046, 1046, 1046, 1386, 1046, 1384,
1737      1390, 1046, 1031, 1037, 1037, 1037, 1037, 1037, 1037, 1037,
1738      1037, 1037, 1399, 1412, 1037, 1445, 1099, 1037, 1037, 1037,
1739      1037, 1037, 1049, 1049, 1049, 1420, 1049, 1445, 1389, 1049,
1740      1176, 1176, 1176, 1040, 1040, 1040, 1399, 1390, 1037, 1037,
1741      1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1040,
1742      1412, 1038, 1388, 1392, 1038, 1038, 1038, 1038, 1038, 1388,
1743
1744      1392, 1054, 1054, 1054, 1058, 1058, 1058, 1061, 1061, 1061,
1745      1064, 1064, 1064, 1428, 1393, 1038, 1038, 1054, 1040, 1097,
1746      1058, 1393, 1428, 1061, 1405, 1095, 1064, 1070, 1070, 1070,
1747      1072, 1072, 1072, 1074, 1074, 1074, 1075, 1075, 1075, 1396,
1748      1400, 1064, 1401, 1070, 1070, 1397, 1072, 1400, 1074, 1401,
1749      1405, 1075, 1076, 1076, 1076, 1077, 1077, 1077, 1084, 1084,
1750      1084, 1086, 1086, 1086, 1089, 1089, 1089, 1076, 1406, 1403,
1751      1077, 1096, 1096, 1096, 1084, 1094, 1422, 1086, 1404, 1396,
1752      1089, 1072, 1098, 1098, 1098, 1397, 1408, 1096, 1076, 1100,
1753      1100, 1100, 1086, 1403, 1406, 1089, 1093, 1409, 1098, 1101,
1754
1755      1101, 1101, 1404, 1101, 1100, 1410, 1101, 1102, 1102, 1102,
1756      1408, 1413, 1096, 1103, 1103, 1103, 1083, 1103, 1411, 1422,
1757      1103, 1409, 1102, 1104, 1104, 1104, 1105, 1105, 1105, 1410,
1758      1105, 1451, 1423, 1105, 1107, 1107, 1107, 1098, 1104, 1108,
1759      1108, 1108, 1411, 1108, 1416, 1421, 1108, 1429, 1413, 1107,
1760      1115, 1115, 1115, 1126, 1126, 1126, 1128, 1128, 1128, 1417,
1761      1128, 1082, 1451, 1128, 1081, 1430, 1115, 1080, 1416, 1126,
1762      1131, 1131, 1131, 1429, 1131, 1423, 1437, 1131, 1134, 1134,
1763      1134, 1115, 1134, 1417, 1421, 1134, 1138, 1138, 1138, 1079,
1764      1138, 1430, 1431, 1138, 1148, 1148, 1148, 1439, 1126, 1158,
1765
1766      1158, 1158, 1168, 1168, 1168, 1438, 1168, 1439, 1437, 1168,
1767      1148, 1177, 1177, 1177, 1452, 1158, 1431, 1446, 1168, 1178,
1768      1178, 1178, 1190, 1190, 1190, 1078, 1446, 1177, 1193, 1193,
1769      1193, 1196, 1196, 1196, 1197, 1197, 1197, 1438, 1190, 1198,
1770      1198, 1198, 1425, 1493, 1193, 1452, 1199, 1199, 1199, 1158,
1771      1197, 1210, 1210, 1210, 1432, 1213, 1213, 1213, 1073, 1213,
1772      1177, 1199, 1213, 1214, 1214, 1214, 1071, 1210, 1215, 1215,
1773      1215, 1213, 1216, 1216, 1216, 1218, 1218, 1218, 1432, 1214,
1774      1493, 1425, 1210, 1426, 1215, 1219, 1219, 1219, 1216, 1219,
1775      1218, 1069, 1219, 1229, 1229, 1229, 1232, 1232, 1232, 1235,
1776
1777      1235, 1235, 1433, 1236, 1236, 1236, 1464, 1236, 1435, 1229,
1778      1236, 1434, 1232, 1464, 1436, 1235, 1237, 1237, 1237, 1236,
1779      1237, 1449, 1426, 1237, 1244, 1244, 1244, 1247, 1247, 1247,
1780      1235, 1247, 1435, 1449, 1247, 1250, 1250, 1250, 1436, 1250,
1781      1244, 1433, 1250, 1247, 1494, 1258, 1258, 1258, 1440, 1258,
1782      1434, 1250, 1258, 1314, 1314, 1314, 1323, 1323, 1323, 1067,
1783      1458, 1258, 1324, 1324, 1324, 1441, 1331, 1331, 1331, 1314,
1784      1331, 1323, 1440, 1331, 1332, 1332, 1332, 1324, 1337, 1337,
1785      1337, 1494, 1331, 1340, 1340, 1340, 1342, 1342, 1342, 1441,
1786      1332, 1443, 1458, 1444, 1337, 1341, 1341, 1341, 1340, 1341,
1787
1788      1450, 1342, 1341, 1343, 1343, 1343, 1053, 1343, 1454, 1450,
1789      1343, 1352, 1352, 1352, 1357, 1357, 1357, 1052, 1357, 1468,
1790      1454, 1357, 1360, 1360, 1360, 1447, 1360, 1352, 1448, 1360,
1791      1357, 1363, 1363, 1363, 1443, 1363, 1444, 1459, 1363, 1402,
1792      1402, 1402, 1352, 1418, 1418, 1418, 1442, 1442, 1442, 1447,
1793      1468, 1455, 1448, 1045, 1044, 1402, 1453, 1453, 1453, 1418,
1794      1455, 1461, 1442, 1456, 1456, 1456, 1460, 1460, 1460, 1459,
1795      1465, 1462, 1453, 1461, 1463, 1463, 1463, 1465, 1469, 1456,
1796      1462, 1477, 1460, 1475, 1466, 1466, 1466, 1478, 1466, 1476,
1797      1463, 1466, 1467, 1467, 1467, 1470, 1470, 1470, 1485, 1486,
1798
1799      1466, 1472, 1472, 1472, 1473, 1473, 1473, 1475, 1467, 1469,
1800      1487, 1470, 1488, 1476, 1479, 1479, 1479, 1472, 1489, 1477,
1801      1473, 1481, 1482, 1495, 1490, 1478, 1496, 1491, 1481, 1482,
1802      1479, 1483, 1483, 1483, 1492, 1498, 1501, 1485, 1486, 1502,
1803      1499, 1497, 1489, 1500, 1498, 1504, 1505, 1483, 1490, 1506,
1804      1487, 1491, 1488, 1497, 1503, 1503, 1503, 1043, 1492, 1507,
1805      1501, 1506, 1495, 1502, 1510, 1496, 1499, 1511, 1507, 1500,
1806      1503, 1508, 1508, 1508, 1512, 1512, 1512, 1513, 1514, 1515,
1807      1515, 1515, 1519, 1520, 1517, 1518, 1521, 1508, 1504, 1505,
1808      1512, 1517, 1518, 1522, 1523, 1515, 1510, 1524, 1525, 1511,
1809
1810      1042, 1041, 1526, 1527, 1527, 1527, 1519, 1520, 1513, 1514,
1811      1525, 1526, 1528, 1528, 1528, 1039, 1022, 1018, 1523, 1527,
1812      1008, 1524, 1007, 1006, 1005, 1521, 1003, 1001, 1528,  986,
1813       983,  974, 1522, 1531, 1531, 1531, 1531, 1531, 1531, 1531,
1814      1532, 1532, 1532, 1532, 1532, 1532, 1532, 1533, 1533, 1533,
1815      1533, 1533, 1533, 1533, 1534, 1534, 1534, 1534, 1534, 1534,
1816      1534, 1535, 1535, 1535, 1535, 1535, 1535, 1535, 1536, 1536,
1817      1536, 1536, 1536, 1536, 1536, 1537, 1537, 1537, 1537, 1537,
1818      1537, 1537, 1538, 1538, 1538, 1538, 1538, 1538, 1538, 1539,
1819      1539, 1539, 1539, 1539, 1539, 1539, 1540, 1540, 1540, 1540,
1820
1821      1540, 1540, 1540, 1541, 1541, 1541, 1541, 1541, 1541, 1541,
1822      1542, 1542, 1542, 1542, 1542, 1542, 1542, 1543, 1543, 1543,
1823      1543, 1543, 1543, 1543, 1544, 1544, 1544, 1544, 1544, 1544,
1824      1544, 1545, 1545, 1545, 1545, 1545, 1545, 1545, 1546, 1546,
1825      1546, 1546, 1546, 1546, 1546, 1547, 1547, 1547, 1547, 1547,
1826      1547, 1547, 1548, 1548, 1548, 1548, 1548, 1548, 1548, 1549,
1827      1549, 1549, 1549, 1549, 1549, 1549, 1550, 1550, 1550, 1550,
1828      1550, 1550, 1550, 1551, 1551, 1551, 1551, 1551, 1551, 1551,
1829      1552, 1552, 1552, 1552, 1552, 1552, 1552, 1553, 1553, 1553,
1830      1553, 1553, 1553, 1553, 1554, 1554, 1554, 1554, 1554, 1554,
1831
1832      1554, 1555, 1555, 1555,  973, 1555, 1556, 1556, 1556,  972,
1833      1556, 1557, 1557, 1557,  971, 1557, 1558, 1558, 1558,  965,
1834      1558, 1559, 1559, 1559,  962, 1559, 1560, 1560, 1560,  950,
1835      1560, 1561, 1561, 1561,  946, 1561, 1562, 1562, 1562,  943,
1836      1562, 1563, 1563, 1563,  942, 1563, 1564, 1564, 1564, 1564,
1837      1564,  940, 1564, 1565,  936, 1565, 1566,  935, 1566, 1567,
1838       932, 1567, 1568,  918, 1568, 1569,  917, 1569, 1570,  916,
1839      1570, 1571,  911, 1571, 1572,  909, 1572, 1573,  905, 1573,
1840      1574, 1574, 1574, 1574, 1574, 1574, 1574, 1575,  904,  902,
1841      1575, 1576, 1576, 1576, 1576, 1576, 1576, 1577, 1577, 1577,
1842
1843      1577, 1577, 1577, 1578, 1578, 1578, 1578, 1578, 1578, 1579,
1844      1579, 1579, 1579, 1579, 1579, 1580, 1580, 1580, 1580, 1580,
1845      1580, 1581, 1581, 1581, 1581, 1581, 1581, 1582, 1582, 1582,
1846      1582, 1582, 1582, 1583, 1583, 1583, 1583, 1583, 1583, 1584,
1847      1584, 1584, 1584, 1584, 1584, 1585, 1585, 1585, 1585, 1585,
1848      1585, 1585, 1586, 1586, 1586, 1586, 1586, 1586, 1586, 1587,
1849      1587, 1587, 1587, 1587, 1587, 1587, 1588, 1588, 1588, 1588,
1850      1588, 1588, 1588, 1589, 1589, 1589, 1589, 1589, 1589, 1589,
1851      1590, 1590, 1590, 1590, 1590, 1590, 1590, 1591, 1591, 1591,
1852      1591, 1591, 1591, 1591,  901,  900,  899,  897,  879,  878,
1853
1854       877,  871,  870,  869,  861,  860,  859,  858,  857,  856,
1855       855,  853,  833,  828,  826,  825,  824,  823,  818,  816,
1856       815,  814,  813,  810,  809,  808,  807,  804,  796,  791,
1857       790,  788,  787,  786,  785,  784,  783,  782,  775,  774,
1858       773,  772,  771,  770,  769,  768,  764,  763,  761,  760,
1859       753,  749,  747,  745,  744,  741,  738,  736,  733,  732,
1860       729,  727,  724,  723,  722,  717,  715,  713,  712,  710,
1861       706,  702,  697,  695,  694,  693,  691,  689,  687,  686,
1862       685,  683,  681,  679,  678,  677,  672,  671,  670,  668,
1863       666,  664,  662,  660,  659,  658,  657,  656,  653,  648,
1864
1865       644,  642,  641,  637,  632,  629,  626,  623,  619,  618,
1866       613,  610,  602,  601,  600,  594,  592,  590,  588,  587,
1867       586,  585,  584,  582,  581,  578,  575,  573,  570,  568,
1868       567,  564,  560,  559,  554,  550,  547,  544,  543,  539,
1869       533,  532,  531,  527,  526,  525,  524,  523,  522,  520,
1870       519,  518,  517,  516,  514,  512,  511,  510,  509,  504,
1871       499,  498,  493,  492,  490,  484,  483,  476,  473,  468,
1872       467,  465,  464,  458,  453,  452,  450,  449,  448,  442,
1873       441,  440,  439,  438,  437,  435,  434,  433,  432,  431,
1874       429,  424,  423,  422,  419,  418,  417,  415,  411,  409,
1875
1876       406,  405,  402,  401,  400,  399,  396,  395,  394,  390,
1877       388,  385,  384,  383,  382,  381,  378,  377,  374,  373,
1878       372,  371,  370,  369,  366,  365,  364,  363,  362,  361,
1879       360,  359,  358,  357,  356,  355,  354,  353,  352,  349,
1880       348,  346,  345,  344,  343,  342,  338,  336,  335,  334,
1881       333,  332,  331,  328,  327,  326,  325,  324,  323,  320,
1882       319,  318,  315,  314,  313,  312,  311,  310,  307,  306,
1883       305,  304,  303,  302,  301,  298,  297,  294,  293,  292,
1884       291,  290,  289,  288,  287,  284,  283,  280,  279,  278,
1885       276,  275,  274,  273,  271,  270,  269,  268,  267,  266,
1886
1887       263,  262,  261,  260,  259,  253,  252,  250,  247,  246,
1888       242,  238,  229,  228,  227,  226,  222,  215,  211,  202,
1889       201,  200,  196,  188,  187,  186,  182,  175,  171,  164,
1890       163,  162,  161,  160,  159,  155,  148,  144,  133,  129,
1891       125,  124,  123,  117,  116,  114,  111,   99, 1530, 1530,
1892      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1893      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1894      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1895      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1896      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1897
1898      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
1899      1530
1900     } ;
1901
1902 /* Table of booleans, true if rule could match eol. */
1903 static yyconst flex_int32_t yy_rule_can_match_eol[199] =
1904     {   0,
1905 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1906     1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 
1907     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1908     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
1909     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1910     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
1911     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
1912     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
1913     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 
1914     0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,     };
1915
1916 static yy_state_type yy_last_accepting_state;
1917 static char *yy_last_accepting_cpos;
1918
1919 extern int surf_parse__flex_debug;
1920 int surf_parse__flex_debug = 0;
1921
1922 /* The intent behind this definition is that it'll catch
1923  * any uses of REJECT which flex missed.
1924  */
1925 #define REJECT reject_used_but_not_detected
1926 #define yymore() yymore_used_but_not_detected
1927 #define YY_MORE_ADJ 0
1928 #define YY_RESTORE_YY_MORE_OFFSET
1929 char *surf_parse_text;
1930 /* Validating XML processor for surf/surfxml.dtd.
1931  * Generated 2007/10/12 10:23:15.
1932  *
1933  * This program was generated with the FleXML XML processor generator.
1934  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
1935  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
1936  * (Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp).
1937  * 
1938  * There are two, intertwined parts to this program, part A and part B.
1939  *
1940  * Part A
1941  * ------
1942  * 
1943  * Some parts, here collectively called "Part A", are found in the 
1944  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
1945  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
1946  *
1947  * You can redistribute, use, perform, display and/or modify "Part A"
1948  * provided the following two conditions hold:
1949  *
1950  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
1951  *    FleXML; without even the implied warranty of MERCHANTABILITY or
1952  *    FITNESS FOR A PARTICULAR PURPOSE.
1953  *
1954  * 2. The program distribution conditions do not in any way affect the
1955  *    distribution conditions of the FleXML system used to generate this
1956  *    file or any version of FleXML derived from that system.
1957  *
1958  * Notice that these are explicit rights granted to you for files
1959  * generated by the FleXML system.  For your rights in connection with
1960  * the FleXML system itself please consult the GNU General Public License.
1961  * 
1962  * Part B
1963  * ------
1964  * 
1965  * The other parts, here collectively called "Part B", and which came 
1966  * from the DTD used by FleXML to generate this program, can be 
1967  * distributed (or not, as the case may be) under the terms of whoever
1968  * wrote them, provided these terms respect and obey the two conditions 
1969  * above under the heading "Part A".
1970  *
1971  * The author of and contributors to FleXML specifically disclaim
1972  * any copyright interest in "Part B", unless "Part B" was written 
1973  * by the author of or contributors to FleXML.
1974  * 
1975  */
1976
1977 /* Version strings. */
1978 const char rcs_surfxml_flexml_skeleton[] =
1979  "$" "Id: skel,v 1.40 2007/10/11 09:57:24 mquinson Exp $";
1980 const char rcs_surfxml_flexml[] =
1981  "$" "Id: flexml.pl,v 1.62 2007/10/11 10:00:14 mquinson Exp $";
1982
1983 /* ANSI headers. */
1984 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
1985 #include <stdio.h>
1986 #include <string.h>
1987 #include <assert.h>
1988 #include <stdarg.h>
1989 #include <ctype.h>
1990      
1991 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
1992 # ifndef __STRICT_ANSI__
1993 #  include <io.h>
1994 #  include <process.h>
1995 # endif
1996 #else
1997 # include <unistd.h>
1998 #endif
1999      
2000 #ifndef FLEXML_INDEXSTACKSIZE
2001 #define FLEXML_INDEXSTACKSIZE 1000
2002 #endif
2003
2004 /* Generated definitions. */
2005 #define FLEXML_yylineno
2006 #ifndef FLEXML_BUFFERSTACKSIZE
2007 #define FLEXML_BUFFERSTACKSIZE 1000000
2008 #endif
2009 #define FLEXML_NEED_BUFFERLIT
2010
2011 /* XML processor api. */
2012 /* FleXML-provided data. */
2013 int surfxml_pcdata_ix;
2014 extern char *surfxml_bufferstack;
2015 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
2016 AT_surfxml_network_link_bandwidth AX_surfxml_network_link_bandwidth;
2017 #define A_surfxml_network_link_bandwidth (surfxml_bufferstack + AX_surfxml_network_link_bandwidth)
2018 AT_surfxml_router_name AX_surfxml_router_name;
2019 #define A_surfxml_router_name (surfxml_bufferstack + AX_surfxml_router_name)
2020 AT_surfxml_process_host AX_surfxml_process_host;
2021 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
2022 AT_surfxml_network_link_latency_file AX_surfxml_network_link_latency_file;
2023 #define A_surfxml_network_link_latency_file (surfxml_bufferstack + AX_surfxml_network_link_latency_file)
2024 AT_surfxml_route_impact_on_dst_with_other_send AX_surfxml_route_impact_on_dst_with_other_send;
2025 #define A_surfxml_route_impact_on_dst_with_other_send (surfxml_bufferstack + AX_surfxml_route_impact_on_dst_with_other_send)
2026 AT_surfxml_cpu_interference_send_recv AX_surfxml_cpu_interference_send_recv;
2027 #define A_surfxml_cpu_interference_send_recv (surfxml_bufferstack + AX_surfxml_cpu_interference_send_recv)
2028 AT_surfxml_route_impact_on_dst AX_surfxml_route_impact_on_dst;
2029 #define A_surfxml_route_impact_on_dst (surfxml_bufferstack + AX_surfxml_route_impact_on_dst)
2030 AT_surfxml_platform_description_version AX_surfxml_platform_description_version;
2031 #define A_surfxml_platform_description_version (surfxml_bufferstack + AX_surfxml_platform_description_version)
2032 AT_surfxml_route_impact_on_src_with_other_recv AX_surfxml_route_impact_on_src_with_other_recv;
2033 #define A_surfxml_route_impact_on_src_with_other_recv (surfxml_bufferstack + AX_surfxml_route_impact_on_src_with_other_recv)
2034 AT_surfxml_route_element_name AX_surfxml_route_element_name;
2035 #define A_surfxml_route_element_name (surfxml_bufferstack + AX_surfxml_route_element_name)
2036 AT_surfxml_process_start_time AX_surfxml_process_start_time;
2037 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
2038 AT_surfxml_process_function AX_surfxml_process_function;
2039 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
2040 AT_surfxml_cpu_state AX_surfxml_cpu_state;
2041 #define A_surfxml_cpu_state AX_surfxml_cpu_state
2042 AT_surfxml_cpu_interference_send AX_surfxml_cpu_interference_send;
2043 #define A_surfxml_cpu_interference_send (surfxml_bufferstack + AX_surfxml_cpu_interference_send)
2044 AT_surfxml_network_link_bandwidth_file AX_surfxml_network_link_bandwidth_file;
2045 #define A_surfxml_network_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_network_link_bandwidth_file)
2046 AT_surfxml_cpu_name AX_surfxml_cpu_name;
2047 #define A_surfxml_cpu_name (surfxml_bufferstack + AX_surfxml_cpu_name)
2048 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
2049 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
2050 AT_surfxml_network_link_state AX_surfxml_network_link_state;
2051 #define A_surfxml_network_link_state AX_surfxml_network_link_state
2052 AT_surfxml_cpu_availability_file AX_surfxml_cpu_availability_file;
2053 #define A_surfxml_cpu_availability_file (surfxml_bufferstack + AX_surfxml_cpu_availability_file)
2054 AT_surfxml_argument_value AX_surfxml_argument_value;
2055 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
2056 AT_surfxml_route_src AX_surfxml_route_src;
2057 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
2058 AT_surfxml_route_impact_on_src AX_surfxml_route_impact_on_src;
2059 #define A_surfxml_route_impact_on_src (surfxml_bufferstack + AX_surfxml_route_impact_on_src)
2060 AT_surfxml_cpu_max_outgoing_rate AX_surfxml_cpu_max_outgoing_rate;
2061 #define A_surfxml_cpu_max_outgoing_rate (surfxml_bufferstack + AX_surfxml_cpu_max_outgoing_rate)
2062 AT_surfxml_cpu_availability AX_surfxml_cpu_availability;
2063 #define A_surfxml_cpu_availability (surfxml_bufferstack + AX_surfxml_cpu_availability)
2064 AT_surfxml_cpu_interference_recv AX_surfxml_cpu_interference_recv;
2065 #define A_surfxml_cpu_interference_recv (surfxml_bufferstack + AX_surfxml_cpu_interference_recv)
2066 AT_surfxml_network_link_name AX_surfxml_network_link_name;
2067 #define A_surfxml_network_link_name (surfxml_bufferstack + AX_surfxml_network_link_name)
2068 AT_surfxml_cpu_power AX_surfxml_cpu_power;
2069 #define A_surfxml_cpu_power (surfxml_bufferstack + AX_surfxml_cpu_power)
2070 AT_surfxml_include_file AX_surfxml_include_file;
2071 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
2072 AT_surfxml_network_link_sharing_policy AX_surfxml_network_link_sharing_policy;
2073 #define A_surfxml_network_link_sharing_policy AX_surfxml_network_link_sharing_policy
2074 AT_surfxml_route_dst AX_surfxml_route_dst;
2075 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
2076 AT_surfxml_network_link_latency AX_surfxml_network_link_latency;
2077 #define A_surfxml_network_link_latency (surfxml_bufferstack + AX_surfxml_network_link_latency)
2078 AT_surfxml_cpu_state_file AX_surfxml_cpu_state_file;
2079 #define A_surfxml_cpu_state_file (surfxml_bufferstack + AX_surfxml_cpu_state_file)
2080 AT_surfxml_network_link_state_file AX_surfxml_network_link_state_file;
2081 #define A_surfxml_network_link_state_file (surfxml_bufferstack + AX_surfxml_network_link_state_file)
2082
2083 /* XML state. */
2084 #ifdef FLEX_DEBUG
2085 # define ENTER(state)   debug_enter(state,#state)
2086 # define LEAVE          debug_leave()
2087 # define SET(state)     debug_set(state,#state)
2088   static void debug_enter(int, const char*);
2089   static void debug_leave(void);
2090   static void debug_set(int, const char*);
2091 #else
2092 # define ENTER(state)   (yy_push_state(state))
2093 # define LEAVE          (yy_pop_state())
2094 # define SET(state)     BEGIN(state)
2095 #endif
2096
2097 /* Generic actions. */
2098 #define SKIP    /*skip*/
2099 #define SUCCEED        CLEANUP; return 0
2100
2101 #define FAIL    return fail
2102 static int fail(const char*, ...);
2103
2104 enum {flexml_max_err_msg_size = 512};
2105 static char flexml_err_msg[flexml_max_err_msg_size];
2106 const char * surfxml_parse_err_msg()
2107 {
2108     return flexml_err_msg;
2109 }
2110 static void reset_surfxml_parse_err_msg()
2111 {
2112     flexml_err_msg[0] = '\0';
2113 }
2114
2115 /* Cleanup */
2116 static void cleanup(void);
2117 #define CLEANUP  cleanup()
2118
2119 /* Text buffer stack handling. */
2120 char *surfxml_bufferstack = NULL;
2121 static int blimit = FLEXML_BUFFERSTACKSIZE;
2122 static int bnext = 1;
2123
2124 static int *indexstack = NULL;
2125 static int ilimit = FLEXML_INDEXSTACKSIZE;
2126 static int inext = 1;
2127
2128 #define BUFFERSET(P)  (P = bnext)
2129 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
2130 #define BUFFERDONE    (BUFFERPUTC('\0'))
2131
2132 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
2133
2134 /* after this is called, there are at least 2 slots left in the stack */
2135 static int ck_blimit()
2136 {
2137      if (bnext >= blimit) {
2138          blimit += FLEXML_BUFFERSTACKSIZE + 2;
2139          {
2140              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
2141              assert(temp);
2142              surfxml_bufferstack = temp;
2143          }
2144      }
2145      return 0;
2146 }
2147
2148 /* after this is called, there are at least 2 slots left in the stack */
2149 static int ck_ilimit()
2150 {
2151      if (inext >= ilimit) {
2152          ilimit += FLEXML_INDEXSTACKSIZE + 2;
2153          {
2154              int *temp = (int *) realloc(indexstack, ilimit);
2155              assert(temp);
2156              indexstack = temp;
2157          }
2158      }
2159      return 0;
2160 }
2161
2162 #ifdef FLEXML_NEED_BUFFERLIT
2163 static void surfxml_bufferliteral(char c, int* pp, const char* text)
2164 {
2165   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
2166   assert(s <= e); BUFFERSET(*pp);
2167   while (++s<e) {
2168     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
2169     else BUFFERPUTC(*s);
2170   }
2171   BUFFERDONE;
2172 }
2173 #endif
2174
2175 static void pushbuffer(int p)
2176 {
2177     ck_ilimit();
2178     indexstack[inext++] = p;
2179     indexstack[inext++] = bnext;    
2180 }
2181
2182 static int popbuffer(void)
2183 {
2184     assert(inext >= 2);
2185     bnext = indexstack[--inext];
2186     return indexstack[--inext];
2187 }
2188
2189 /* General internal entities are `unput' back onto the input stream... */
2190 #define ENTITYTEXT(T) \
2191   { char *s = (T), *e = s+strlen(s);\
2192     while (--e >= s) { unput(*e); }}
2193
2194 /* Flex standard options. */
2195 #define YY_NO_INPUT 1
2196 /* Flex user-requested options. */
2197 /* XML character classes (currently restricted to ASCII). */
2198 /* "Common syntactic structures." */
2199 /* "Names and Tokens." */
2200 /* Miscellaneous. */
2201 /* Parser states (flex `exclusive start conditions'):
2202  *
2203  * PROLOG       the XML prolog of the document before <?xml...>
2204  * DOCTYPE      the XML prolog of the document after <?xml...>
2205  * EPILOG       after the root element
2206  * INCOMMENT    inside an XML comment <!--....-->
2207  * INPI         inside an XML PI <?...?>
2208  * VALUE1       inside a '...'-delimited literal
2209  * VALUE2       inside a "..."-delimited literal
2210  * CDATA        inside a <![CDATA[...] ]> section.
2211  * ROOT_<tag>   expect root element <tag>
2212  * AL_<tag>     inside the attribute list for <tag>
2213  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
2214  * IMPOSSIBLE   dummy to permit disabling rules; must be last
2215  */
2216
2217 /* State names. */
2218 const char* *surfxml_statenames=NULL;
2219
2220 #define INITIAL 0
2221 #define PROLOG 1
2222 #define DOCTYPE 2
2223 #define EPILOG 3
2224 #define INCOMMENT 4
2225 #define INPI 5
2226 #define VALUE1 6
2227 #define VALUE2 7
2228 #define CDATA 8
2229 #define ROOT_surfxml_platform_description 9
2230 #define AL_surfxml_platform_description 10
2231 #define S_surfxml_platform_description 11
2232 #define S_surfxml_platform_description_1 12
2233 #define S_surfxml_platform_description_2 13
2234 #define S_surfxml_platform_description_3 14
2235 #define S_surfxml_platform_description_4 15
2236 #define S_surfxml_platform_description_5 16
2237 #define E_surfxml_platform_description 17
2238 #define ROOT_surfxml_include 18
2239 #define AL_surfxml_include 19
2240 #define E_surfxml_include 20
2241 #define ROOT_surfxml_cpu 21
2242 #define AL_surfxml_cpu 22
2243 #define E_surfxml_cpu 23
2244 #define ROOT_surfxml_router 24
2245 #define AL_surfxml_router 25
2246 #define E_surfxml_router 26
2247 #define ROOT_surfxml_network_link 27
2248 #define AL_surfxml_network_link 28
2249 #define E_surfxml_network_link 29
2250 #define ROOT_surfxml_route 30
2251 #define AL_surfxml_route 31
2252 #define S_surfxml_route 32
2253 #define S_surfxml_route_1 33
2254 #define S_surfxml_route_2 34
2255 #define E_surfxml_route 35
2256 #define ROOT_surfxml_route_element 36
2257 #define AL_surfxml_route_element 37
2258 #define E_surfxml_route_element 38
2259 #define ROOT_surfxml_process 39
2260 #define AL_surfxml_process 40
2261 #define S_surfxml_process 41
2262 #define S_surfxml_process_1 42
2263 #define S_surfxml_process_2 43
2264 #define E_surfxml_process 44
2265 #define ROOT_surfxml_argument 45
2266 #define AL_surfxml_argument 46
2267 #define E_surfxml_argument 47
2268 #define IMPOSSIBLE 48
2269
2270 #ifndef YY_NO_UNISTD_H
2271 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2272  * down here because we want the user's section 1 to have been scanned first.
2273  * The user has a chance to override it with an option.
2274  */
2275 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
2276 #  ifndef __STRICT_ANSI__
2277 #    include <io.h>
2278 #    include <process.h>
2279 #  endif
2280 #else
2281 #  include <unistd.h>
2282 #endif
2283 #endif
2284
2285 #ifndef YY_EXTRA_TYPE
2286 #define YY_EXTRA_TYPE void *
2287 #endif
2288
2289 static int yy_init_globals (void );
2290
2291 /* Macros after this point can all be overridden by user definitions in
2292  * section 1.
2293  */
2294
2295 #ifndef YY_SKIP_YYWRAP
2296 #ifdef __cplusplus
2297 extern "C" int surf_parse_wrap (void );
2298 #else
2299 extern int surf_parse_wrap (void );
2300 #endif
2301 #endif
2302
2303 #ifndef yytext_ptr
2304 static void yy_flex_strncpy (char *,yyconst char *,int );
2305 #endif
2306
2307 #ifdef YY_NEED_STRLEN
2308 static int yy_flex_strlen (yyconst char * );
2309 #endif
2310
2311 #ifndef YY_NO_INPUT
2312
2313 #ifdef __cplusplus
2314 static int yyinput (void );
2315 #else
2316 static int input (void );
2317 #endif
2318
2319 #endif
2320
2321         static int yy_start_stack_ptr = 0;
2322         static int yy_start_stack_depth = 0;
2323         static int *yy_start_stack = NULL;
2324     
2325     static void yy_push_state (int new_state );
2326     
2327     static void yy_pop_state (void );
2328     
2329 /* Amount of stuff to slurp up with each read. */
2330 #ifndef YY_READ_BUF_SIZE
2331 #define YY_READ_BUF_SIZE 8192
2332 #endif
2333
2334 /* Copy whatever the last rule matched to the standard output. */
2335 #ifndef ECHO
2336 /* This used to be an fputs(), but since the string might contain NUL's,
2337  * we now use fwrite().
2338  */
2339 #define ECHO (void) fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )
2340 #endif
2341
2342 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2343  * is returned in "result".
2344  */
2345 #ifndef YY_INPUT
2346 #define YY_INPUT(buf,result,max_size) \
2347         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2348                 { \
2349                 int c = '*'; \
2350                 size_t n; \
2351                 for ( n = 0; n < max_size && \
2352                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
2353                         buf[n] = (char) c; \
2354                 if ( c == '\n' ) \
2355                         buf[n++] = (char) c; \
2356                 if ( c == EOF && ferror( surf_parse_in ) ) \
2357                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
2358                 result = n; \
2359                 } \
2360         else \
2361                 { \
2362                 errno=0; \
2363                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
2364                         { \
2365                         if( errno != EINTR) \
2366                                 { \
2367                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2368                                 break; \
2369                                 } \
2370                         errno=0; \
2371                         clearerr(surf_parse_in); \
2372                         } \
2373                 }\
2374 \
2375
2376 #endif
2377
2378 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2379  * we don't want an extra ';' after the "return" because that will cause
2380  * some compilers to complain about unreachable statements.
2381  */
2382 #ifndef yyterminate
2383 #define yyterminate() return YY_NULL
2384 #endif
2385
2386 /* Number of entries by which start-condition stack grows. */
2387 #ifndef YY_START_STACK_INCR
2388 #define YY_START_STACK_INCR 25
2389 #endif
2390
2391 /* Report a fatal error. */
2392 #ifndef YY_FATAL_ERROR
2393 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2394 #endif
2395
2396 /* end tables serialization structures and prototypes */
2397
2398 /* Default declaration of generated scanner - a define so the user can
2399  * easily add parameters.
2400  */
2401 #ifndef YY_DECL
2402 #define YY_DECL_IS_OURS 1
2403
2404 extern int surf_parse_lex (void);
2405
2406 #define YY_DECL int surf_parse_lex (void)
2407 #endif /* !YY_DECL */
2408
2409 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
2410  * have been set up.
2411  */
2412 #ifndef YY_USER_ACTION
2413 #define YY_USER_ACTION
2414 #endif
2415
2416 /* Code executed at the end of each rule. */
2417 #ifndef YY_BREAK
2418 #define YY_BREAK break;
2419 #endif
2420
2421 #define YY_RULE_SETUP \
2422         YY_USER_ACTION
2423
2424 /** The main scanner function which does all the work.
2425  */
2426 YY_DECL
2427 {
2428         register yy_state_type yy_current_state;
2429         register char *yy_cp, *yy_bp;
2430         register int yy_act;
2431     
2432  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
2433  SET(PROLOG);
2434  reset_surfxml_parse_err_msg();
2435  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
2436  assert(surfxml_bufferstack);
2437  #ifdef FLEX_DEBUG
2438  {
2439      int i;
2440      for (i = 0; i < blimit; i++) {
2441          surfxml_bufferstack[i] = '\377';
2442      }
2443  }
2444  #endif
2445  surfxml_bufferstack[0] = '\0';
2446  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
2447  assert(indexstack);
2448  indexstack[0] = 0;
2449
2450   /* FleXML_init */
2451   bnext = inext = 1;
2452   surfxml_bufferliteral('\0', &bnext, "0.0");
2453   surfxml_bufferliteral('\0', &bnext, "1.0");
2454   surfxml_bufferliteral('\0', &bnext, "1.0");
2455   surfxml_bufferliteral('\0', &bnext, "1.0");
2456   surfxml_bufferliteral('\0', &bnext, "1.0");
2457   surfxml_bufferliteral('\0', &bnext, "-1.0");
2458   surfxml_bufferliteral('\0', &bnext, "0.0");
2459   surfxml_bufferliteral('\0', &bnext, "0.0");
2460   surfxml_bufferliteral('\0', &bnext, "0.0");
2461   surfxml_bufferliteral('\0', &bnext, "0.0");
2462   surfxml_bufferliteral('\0', &bnext, "0.0");
2463   surfxml_bufferliteral('\0', &bnext, "-1.0");
2464   surfxml_bufferliteral('\0', &bnext, "-1.0");
2465   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
2466   surfxml_statenames[PROLOG] = NULL;
2467   surfxml_statenames[DOCTYPE] = NULL;
2468   surfxml_statenames[EPILOG] = NULL;
2469   surfxml_statenames[INCOMMENT] = NULL;
2470   surfxml_statenames[INPI] = NULL;
2471   surfxml_statenames[VALUE1] = NULL;
2472   surfxml_statenames[VALUE2] = NULL;
2473   surfxml_statenames[CDATA] = NULL;
2474   surfxml_statenames[ROOT_surfxml_platform_description] = NULL;
2475   surfxml_statenames[AL_surfxml_platform_description] = NULL;
2476   surfxml_statenames[S_surfxml_platform_description] = "platform_description";
2477   surfxml_statenames[S_surfxml_platform_description_1] = "platform_description";
2478   surfxml_statenames[S_surfxml_platform_description_2] = "platform_description";
2479   surfxml_statenames[S_surfxml_platform_description_3] = "platform_description";
2480   surfxml_statenames[S_surfxml_platform_description_4] = "platform_description";
2481   surfxml_statenames[S_surfxml_platform_description_5] = "platform_description";
2482   surfxml_statenames[E_surfxml_platform_description] = "platform_description";
2483   surfxml_statenames[ROOT_surfxml_include] = NULL;
2484   surfxml_statenames[AL_surfxml_include] = NULL;
2485   surfxml_statenames[E_surfxml_include] = "include";
2486   surfxml_statenames[ROOT_surfxml_cpu] = NULL;
2487   surfxml_statenames[AL_surfxml_cpu] = NULL;
2488   surfxml_statenames[E_surfxml_cpu] = "cpu";
2489   surfxml_statenames[ROOT_surfxml_router] = NULL;
2490   surfxml_statenames[AL_surfxml_router] = NULL;
2491   surfxml_statenames[E_surfxml_router] = "router";
2492   surfxml_statenames[ROOT_surfxml_network_link] = NULL;
2493   surfxml_statenames[AL_surfxml_network_link] = NULL;
2494   surfxml_statenames[E_surfxml_network_link] = "network_link";
2495   surfxml_statenames[ROOT_surfxml_route] = NULL;
2496   surfxml_statenames[AL_surfxml_route] = NULL;
2497   surfxml_statenames[S_surfxml_route] = "route";
2498   surfxml_statenames[S_surfxml_route_1] = "route";
2499   surfxml_statenames[S_surfxml_route_2] = "route";
2500   surfxml_statenames[E_surfxml_route] = "route";
2501   surfxml_statenames[ROOT_surfxml_route_element] = NULL;
2502   surfxml_statenames[AL_surfxml_route_element] = NULL;
2503   surfxml_statenames[E_surfxml_route_element] = "route_element";
2504   surfxml_statenames[ROOT_surfxml_process] = NULL;
2505   surfxml_statenames[AL_surfxml_process] = NULL;
2506   surfxml_statenames[S_surfxml_process] = "process";
2507   surfxml_statenames[S_surfxml_process_1] = "process";
2508   surfxml_statenames[S_surfxml_process_2] = "process";
2509   surfxml_statenames[E_surfxml_process] = "process";
2510   surfxml_statenames[ROOT_surfxml_argument] = NULL;
2511   surfxml_statenames[AL_surfxml_argument] = NULL;
2512   surfxml_statenames[E_surfxml_argument] = "argument";
2513   }
2514
2515  /* COMMENTS and PIs: handled uniformly for efficiency. */
2516
2517         if ( !(yy_init) )
2518                 {
2519                 (yy_init) = 1;
2520
2521 #ifdef YY_USER_INIT
2522                 YY_USER_INIT;
2523 #endif
2524
2525                 if ( ! (yy_start) )
2526                         (yy_start) = 1; /* first start state */
2527
2528                 if ( ! surf_parse_in )
2529                         surf_parse_in = stdin;
2530
2531                 if ( ! surf_parse_out )
2532                         surf_parse_out = stdout;
2533
2534                 if ( ! YY_CURRENT_BUFFER ) {
2535                         surf_parse_ensure_buffer_stack ();
2536                         YY_CURRENT_BUFFER_LVALUE =
2537                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
2538                 }
2539
2540                 surf_parse__load_buffer_state( );
2541                 }
2542
2543         while ( 1 )             /* loops until end-of-file is reached */
2544                 {
2545                 yy_cp = (yy_c_buf_p);
2546
2547                 /* Support of surf_parse_text. */
2548                 *yy_cp = (yy_hold_char);
2549
2550                 /* yy_bp points to the position in yy_ch_buf of the start of
2551                  * the current run.
2552                  */
2553                 yy_bp = yy_cp;
2554
2555                 yy_current_state = (yy_start);
2556 yy_match:
2557                 do
2558                         {
2559                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2560                         if ( yy_accept[yy_current_state] )
2561                                 {
2562                                 (yy_last_accepting_state) = yy_current_state;
2563                                 (yy_last_accepting_cpos) = yy_cp;
2564                                 }
2565                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2566                                 {
2567                                 yy_current_state = (int) yy_def[yy_current_state];
2568                                 if ( yy_current_state >= 1531 )
2569                                         yy_c = yy_meta[(unsigned int) yy_c];
2570                                 }
2571                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2572                         ++yy_cp;
2573                         }
2574                 while ( yy_base[yy_current_state] != 4149 );
2575
2576 yy_find_action:
2577                 yy_act = yy_accept[yy_current_state];
2578                 if ( yy_act == 0 )
2579                         { /* have to back up */
2580                         yy_cp = (yy_last_accepting_cpos);
2581                         yy_current_state = (yy_last_accepting_state);
2582                         yy_act = yy_accept[yy_current_state];
2583                         }
2584
2585                 YY_DO_BEFORE_ACTION;
2586
2587                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2588                         {
2589                         int yyl;
2590                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
2591                                 if ( surf_parse_text[yyl] == '\n' )
2592                                            
2593     surf_parse_lineno++;
2594 ;
2595                         }
2596
2597 do_action:      /* This label is used only to access EOF actions. */
2598
2599                 switch ( yy_act )
2600         { /* beginning of action switch */
2601                         case 0: /* must back up */
2602                         /* undo the effects of YY_DO_BEFORE_ACTION */
2603                         *yy_cp = (yy_hold_char);
2604                         yy_cp = (yy_last_accepting_cpos);
2605                         yy_current_state = (yy_last_accepting_state);
2606                         goto yy_find_action;
2607
2608 case 1:
2609 YY_RULE_SETUP
2610 ENTER(INCOMMENT);
2611         YY_BREAK
2612 case 2:
2613 YY_RULE_SETUP
2614 ENTER(INPI);
2615         YY_BREAK
2616
2617 case 3:
2618 YY_RULE_SETUP
2619 LEAVE;
2620         YY_BREAK
2621 case 4:
2622 case 5:
2623 case 6:
2624 /* rule 6 can match eol */
2625 YY_RULE_SETUP
2626 SKIP;
2627         YY_BREAK
2628 case YY_STATE_EOF(INCOMMENT):
2629 FAIL("EOF in comment.");
2630         YY_BREAK
2631
2632 case 7:
2633 YY_RULE_SETUP
2634 LEAVE;
2635         YY_BREAK
2636 case 8:
2637 case 9:
2638 /* rule 9 can match eol */
2639 YY_RULE_SETUP
2640 SKIP;
2641         YY_BREAK
2642 case YY_STATE_EOF(INPI):
2643 FAIL("EOF in PI (processing instruction).");
2644         YY_BREAK
2645
2646 /* SPACES: skipped uniformly */
2647 case 10:
2648 /* rule 10 can match eol */
2649 YY_RULE_SETUP
2650 SKIP;
2651         YY_BREAK
2652 /* PROLOG: determine root element and process it. */
2653
2654 case 11:
2655 /* rule 11 can match eol */
2656 YY_RULE_SETUP
2657 SET(DOCTYPE); 
2658         YY_BREAK
2659 case 12:
2660 /* rule 12 can match eol */
2661 YY_RULE_SETUP
2662 FAIL("Bad declaration %s.",surf_parse_text);
2663         YY_BREAK
2664
2665 case 13:
2666 /* rule 13 can match eol */
2667 YY_RULE_SETUP
2668 SET(ROOT_surfxml_cpu);
2669         YY_BREAK
2670 case 14:
2671 /* rule 14 can match eol */
2672 YY_RULE_SETUP
2673 SET(ROOT_surfxml_include);
2674         YY_BREAK
2675 case 15:
2676 /* rule 15 can match eol */
2677 YY_RULE_SETUP
2678 SET(ROOT_surfxml_route);
2679         YY_BREAK
2680 case 16:
2681 /* rule 16 can match eol */
2682 YY_RULE_SETUP
2683 SET(ROOT_surfxml_network_link);
2684         YY_BREAK
2685 case 17:
2686 /* rule 17 can match eol */
2687 YY_RULE_SETUP
2688 SET(ROOT_surfxml_process);
2689         YY_BREAK
2690 case 18:
2691 /* rule 18 can match eol */
2692 YY_RULE_SETUP
2693 SET(ROOT_surfxml_router);
2694         YY_BREAK
2695 case 19:
2696 /* rule 19 can match eol */
2697 YY_RULE_SETUP
2698 SET(ROOT_surfxml_argument);
2699         YY_BREAK
2700 case 20:
2701 /* rule 20 can match eol */
2702 YY_RULE_SETUP
2703 SET(ROOT_surfxml_route_element);
2704         YY_BREAK
2705 case 21:
2706 /* rule 21 can match eol */
2707 YY_RULE_SETUP
2708 SET(ROOT_surfxml_platform_description);
2709         YY_BREAK
2710 case 22:
2711 /* rule 22 can match eol */
2712 YY_RULE_SETUP
2713 FAIL("Bad declaration %s.",surf_parse_text);
2714         YY_BREAK
2715 case 23:
2716 YY_RULE_SETUP
2717 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
2718         YY_BREAK
2719 case YY_STATE_EOF(PROLOG):
2720 case YY_STATE_EOF(DOCTYPE):
2721 FAIL("EOF in prolog.");
2722         YY_BREAK
2723
2724 /* RULES DERIVED FROM DTD. */
2725 /* <!-- Small DTD for SURF based tools. -->  */
2726 case 24:
2727 /* rule 24 can match eol */
2728 YY_RULE_SETUP
2729 FAIL("Starting tag <platform_description> is not allowed here.");
2730         YY_BREAK
2731 case 25:
2732 /* rule 25 can match eol */
2733 YY_RULE_SETUP
2734 {
2735   AX_surfxml_platform_description_version = 1;
2736   ENTER(AL_surfxml_platform_description); pushbuffer(0);
2737   }
2738         YY_BREAK
2739
2740 case 26:
2741 /* rule 26 can match eol */
2742 YY_RULE_SETUP
2743 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_description_version);
2744         YY_BREAK
2745 case 27:
2746 /* rule 27 can match eol */
2747 YY_RULE_SETUP
2748 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_description_version);
2749         YY_BREAK
2750 case 28:
2751 YY_RULE_SETUP
2752 {
2753   LEAVE; STag_surfxml_platform_description();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform_description);
2754  }
2755         YY_BREAK
2756 case 29:
2757 YY_RULE_SETUP
2758 {
2759   LEAVE; STag_surfxml_platform_description(); surfxml_pcdata_ix = 0; ETag_surfxml_platform_description(); popbuffer(); /* attribute */
2760   switch (YY_START) {
2761    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2762   }
2763  }
2764         YY_BREAK
2765 case 30:
2766 YY_RULE_SETUP
2767 FAIL("Unexpected character `%c' in attribute list of platform_description element.", surf_parse_text[0]);
2768         YY_BREAK
2769 case 31:
2770 YY_RULE_SETUP
2771 FAIL("Bad attribute `%s' in `platform_description' element start tag.",surf_parse_text);
2772         YY_BREAK
2773 case YY_STATE_EOF(AL_surfxml_platform_description):
2774 FAIL("EOF in attribute list of `platform_description' element.");
2775         YY_BREAK
2776
2777 case 32:
2778 /* rule 32 can match eol */
2779 YY_RULE_SETUP
2780 {
2781   LEAVE;
2782   ETag_surfxml_platform_description();
2783   popbuffer(); /* attribute */
2784   switch (YY_START) {
2785    case ROOT_surfxml_platform_description: SET(EPILOG); break;
2786   }
2787  }
2788         YY_BREAK
2789 case 33:
2790 /* rule 33 can match eol */
2791 YY_RULE_SETUP
2792 FAIL("Unexpected end-tag `%s': `</platform_description>' expected.",surf_parse_text);
2793         YY_BREAK
2794 case 34:
2795 YY_RULE_SETUP
2796 FAIL("Unexpected character `%c': `</platform_description>' expected.",surf_parse_text[0]);
2797         YY_BREAK
2798 case YY_STATE_EOF(E_surfxml_platform_description):
2799 case YY_STATE_EOF(S_surfxml_platform_description_5):
2800 case YY_STATE_EOF(S_surfxml_platform_description_3):
2801 case YY_STATE_EOF(S_surfxml_platform_description_1):
2802 case YY_STATE_EOF(S_surfxml_platform_description):
2803 FAIL("Premature EOF: `</platform_description>' expected.");
2804         YY_BREAK
2805
2806 case 35:
2807 /* rule 35 can match eol */
2808 YY_RULE_SETUP
2809 FAIL("Starting tag <include> is not allowed here.");
2810         YY_BREAK
2811 case 36:
2812 /* rule 36 can match eol */
2813 YY_RULE_SETUP
2814 {
2815   AX_surfxml_include_file = 0;
2816   ENTER(AL_surfxml_include); pushbuffer(0);
2817   }
2818         YY_BREAK
2819
2820 case 37:
2821 /* rule 37 can match eol */
2822 YY_RULE_SETUP
2823 ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
2824         YY_BREAK
2825 case 38:
2826 /* rule 38 can match eol */
2827 YY_RULE_SETUP
2828 ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
2829         YY_BREAK
2830 case 39:
2831 YY_RULE_SETUP
2832 {
2833   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2834   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(E_surfxml_include);
2835  }
2836         YY_BREAK
2837 case 40:
2838 YY_RULE_SETUP
2839 {
2840   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2841   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
2842   switch (YY_START) {
2843    case S_surfxml_platform_description_2: SET(S_surfxml_platform_description_3); break;
2844    case ROOT_surfxml_include: SET(EPILOG); break;
2845    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
2846   }
2847  }
2848         YY_BREAK
2849 case 41:
2850 YY_RULE_SETUP
2851 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
2852         YY_BREAK
2853 case 42:
2854 YY_RULE_SETUP
2855 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
2856         YY_BREAK
2857 case YY_STATE_EOF(AL_surfxml_include):
2858 FAIL("EOF in attribute list of `include' element.");
2859         YY_BREAK
2860
2861 case 43:
2862 /* rule 43 can match eol */
2863 YY_RULE_SETUP
2864 {
2865   LEAVE;
2866   ETag_surfxml_include();
2867   popbuffer(); /* attribute */
2868   switch (YY_START) {
2869    case S_surfxml_platform_description_2: SET(S_surfxml_platform_description_3); break;
2870    case ROOT_surfxml_include: SET(EPILOG); break;
2871    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
2872   }
2873  }
2874         YY_BREAK
2875 case 44:
2876 /* rule 44 can match eol */
2877 YY_RULE_SETUP
2878 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
2879         YY_BREAK
2880 case 45:
2881 YY_RULE_SETUP
2882 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
2883         YY_BREAK
2884 case YY_STATE_EOF(E_surfxml_include):
2885 FAIL("Premature EOF: `</include>' expected.");
2886         YY_BREAK
2887
2888 case 46:
2889 /* rule 46 can match eol */
2890 YY_RULE_SETUP
2891 FAIL("Starting tag <cpu> is not allowed here.");
2892         YY_BREAK
2893 case 47:
2894 /* rule 47 can match eol */
2895 YY_RULE_SETUP
2896 {
2897   AX_surfxml_cpu_name = 0;
2898   AX_surfxml_cpu_power = 0;
2899   AX_surfxml_cpu_availability = 5;
2900   AX_surfxml_cpu_availability_file = 0;
2901   AX_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2902   AX_surfxml_cpu_state_file = 0;
2903   AX_surfxml_cpu_interference_send = 9;
2904   AX_surfxml_cpu_interference_recv = 13;
2905   AX_surfxml_cpu_interference_send_recv = 17;
2906   AX_surfxml_cpu_max_outgoing_rate = 21;
2907   ENTER(AL_surfxml_cpu); pushbuffer(0);
2908   }
2909         YY_BREAK
2910
2911 case 48:
2912 /* rule 48 can match eol */
2913 YY_RULE_SETUP
2914 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_name);
2915         YY_BREAK
2916 case 49:
2917 /* rule 49 can match eol */
2918 YY_RULE_SETUP
2919 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_name);
2920         YY_BREAK
2921 case 50:
2922 /* rule 50 can match eol */
2923 YY_RULE_SETUP
2924 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_power);
2925         YY_BREAK
2926 case 51:
2927 /* rule 51 can match eol */
2928 YY_RULE_SETUP
2929 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_power);
2930         YY_BREAK
2931 case 52:
2932 /* rule 52 can match eol */
2933 YY_RULE_SETUP
2934 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_availability);
2935         YY_BREAK
2936 case 53:
2937 /* rule 53 can match eol */
2938 YY_RULE_SETUP
2939 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_availability);
2940         YY_BREAK
2941 case 54:
2942 /* rule 54 can match eol */
2943 YY_RULE_SETUP
2944 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_availability_file);
2945         YY_BREAK
2946 case 55:
2947 /* rule 55 can match eol */
2948 YY_RULE_SETUP
2949 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_availability_file);
2950         YY_BREAK
2951 case 56:
2952 /* rule 56 can match eol */
2953 case 57:
2954 /* rule 57 can match eol */
2955 YY_RULE_SETUP
2956 A_surfxml_cpu_state = A_surfxml_cpu_state_ON;
2957         YY_BREAK
2958 case 58:
2959 /* rule 58 can match eol */
2960 case 59:
2961 /* rule 59 can match eol */
2962 YY_RULE_SETUP
2963 A_surfxml_cpu_state = A_surfxml_cpu_state_OFF;
2964         YY_BREAK
2965 case 60:
2966 /* rule 60 can match eol */
2967 YY_RULE_SETUP
2968 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_state_file);
2969         YY_BREAK
2970 case 61:
2971 /* rule 61 can match eol */
2972 YY_RULE_SETUP
2973 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_state_file);
2974         YY_BREAK
2975 case 62:
2976 /* rule 62 can match eol */
2977 YY_RULE_SETUP
2978 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_interference_send);
2979         YY_BREAK
2980 case 63:
2981 /* rule 63 can match eol */
2982 YY_RULE_SETUP
2983 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_interference_send);
2984         YY_BREAK
2985 case 64:
2986 /* rule 64 can match eol */
2987 YY_RULE_SETUP
2988 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_interference_recv);
2989         YY_BREAK
2990 case 65:
2991 /* rule 65 can match eol */
2992 YY_RULE_SETUP
2993 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_interference_recv);
2994         YY_BREAK
2995 case 66:
2996 /* rule 66 can match eol */
2997 YY_RULE_SETUP
2998 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_interference_send_recv);
2999         YY_BREAK
3000 case 67:
3001 /* rule 67 can match eol */
3002 YY_RULE_SETUP
3003 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_interference_send_recv);
3004         YY_BREAK
3005 case 68:
3006 /* rule 68 can match eol */
3007 YY_RULE_SETUP
3008 ENTER(VALUE1); BUFFERSET(AX_surfxml_cpu_max_outgoing_rate);
3009         YY_BREAK
3010 case 69:
3011 /* rule 69 can match eol */
3012 YY_RULE_SETUP
3013 ENTER(VALUE2); BUFFERSET(AX_surfxml_cpu_max_outgoing_rate);
3014         YY_BREAK
3015 case 70:
3016 YY_RULE_SETUP
3017 {
3018   if (!AX_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
3019   if (!AX_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
3020   LEAVE; STag_surfxml_cpu();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cpu);
3021  }
3022         YY_BREAK
3023 case 71:
3024 YY_RULE_SETUP
3025 {
3026   if (!AX_surfxml_cpu_name) FAIL("Required attribute `name' not set for `cpu' element.");
3027   if (!AX_surfxml_cpu_power) FAIL("Required attribute `power' not set for `cpu' element.");
3028   LEAVE; STag_surfxml_cpu(); surfxml_pcdata_ix = 0; ETag_surfxml_cpu(); popbuffer(); /* attribute */
3029   switch (YY_START) {
3030    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3031    case ROOT_surfxml_cpu: SET(EPILOG); break;
3032   }
3033  }
3034         YY_BREAK
3035 case 72:
3036 YY_RULE_SETUP
3037 FAIL("Unexpected character `%c' in attribute list of cpu element.", surf_parse_text[0]);
3038         YY_BREAK
3039 case 73:
3040 YY_RULE_SETUP
3041 FAIL("Bad attribute `%s' in `cpu' element start tag.",surf_parse_text);
3042         YY_BREAK
3043 case YY_STATE_EOF(AL_surfxml_cpu):
3044 FAIL("EOF in attribute list of `cpu' element.");
3045         YY_BREAK
3046
3047 case 74:
3048 /* rule 74 can match eol */
3049 YY_RULE_SETUP
3050 {
3051   LEAVE;
3052   ETag_surfxml_cpu();
3053   popbuffer(); /* attribute */
3054   switch (YY_START) {
3055    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3056    case ROOT_surfxml_cpu: SET(EPILOG); break;
3057   }
3058  }
3059         YY_BREAK
3060 case 75:
3061 /* rule 75 can match eol */
3062 YY_RULE_SETUP
3063 FAIL("Unexpected end-tag `%s': `</cpu>' expected.",surf_parse_text);
3064         YY_BREAK
3065 case 76:
3066 YY_RULE_SETUP
3067 FAIL("Unexpected character `%c': `</cpu>' expected.",surf_parse_text[0]);
3068         YY_BREAK
3069 case YY_STATE_EOF(E_surfxml_cpu):
3070 FAIL("Premature EOF: `</cpu>' expected.");
3071         YY_BREAK
3072
3073 case 77:
3074 /* rule 77 can match eol */
3075 YY_RULE_SETUP
3076 FAIL("Starting tag <router> is not allowed here.");
3077         YY_BREAK
3078 case 78:
3079 /* rule 78 can match eol */
3080 YY_RULE_SETUP
3081 {
3082   AX_surfxml_router_name = 0;
3083   ENTER(AL_surfxml_router); pushbuffer(0);
3084   }
3085         YY_BREAK
3086
3087 case 79:
3088 /* rule 79 can match eol */
3089 YY_RULE_SETUP
3090 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_name);
3091         YY_BREAK
3092 case 80:
3093 /* rule 80 can match eol */
3094 YY_RULE_SETUP
3095 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_name);
3096         YY_BREAK
3097 case 81:
3098 YY_RULE_SETUP
3099 {
3100   if (!AX_surfxml_router_name) FAIL("Required attribute `name' not set for `router' element.");
3101   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
3102  }
3103         YY_BREAK
3104 case 82:
3105 YY_RULE_SETUP
3106 {
3107   if (!AX_surfxml_router_name) FAIL("Required attribute `name' not set for `router' element.");
3108   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
3109   switch (YY_START) {
3110    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3111    case ROOT_surfxml_router: SET(EPILOG); break;
3112   }
3113  }
3114         YY_BREAK
3115 case 83:
3116 YY_RULE_SETUP
3117 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
3118         YY_BREAK
3119 case 84:
3120 YY_RULE_SETUP
3121 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
3122         YY_BREAK
3123 case YY_STATE_EOF(AL_surfxml_router):
3124 FAIL("EOF in attribute list of `router' element.");
3125         YY_BREAK
3126
3127 case 85:
3128 /* rule 85 can match eol */
3129 YY_RULE_SETUP
3130 {
3131   LEAVE;
3132   ETag_surfxml_router();
3133   popbuffer(); /* attribute */
3134   switch (YY_START) {
3135    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3136    case ROOT_surfxml_router: SET(EPILOG); break;
3137   }
3138  }
3139         YY_BREAK
3140 case 86:
3141 /* rule 86 can match eol */
3142 YY_RULE_SETUP
3143 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
3144         YY_BREAK
3145 case 87:
3146 YY_RULE_SETUP
3147 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
3148         YY_BREAK
3149 case YY_STATE_EOF(E_surfxml_router):
3150 FAIL("Premature EOF: `</router>' expected.");
3151         YY_BREAK
3152
3153 case 88:
3154 /* rule 88 can match eol */
3155 YY_RULE_SETUP
3156 FAIL("Starting tag <network_link> is not allowed here.");
3157         YY_BREAK
3158 case 89:
3159 /* rule 89 can match eol */
3160 YY_RULE_SETUP
3161 {
3162   AX_surfxml_network_link_name = 0;
3163   AX_surfxml_network_link_bandwidth = 0;
3164   AX_surfxml_network_link_bandwidth_file = 0;
3165   AX_surfxml_network_link_latency = 26;
3166   AX_surfxml_network_link_latency_file = 0;
3167   AX_surfxml_network_link_state = A_surfxml_network_link_state_ON;
3168   AX_surfxml_network_link_state_file = 0;
3169   AX_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
3170   ENTER(AL_surfxml_network_link); pushbuffer(0);
3171   }
3172         YY_BREAK
3173
3174 case 90:
3175 /* rule 90 can match eol */
3176 YY_RULE_SETUP
3177 ENTER(VALUE1); BUFFERSET(AX_surfxml_network_link_name);
3178         YY_BREAK
3179 case 91:
3180 /* rule 91 can match eol */
3181 YY_RULE_SETUP
3182 ENTER(VALUE2); BUFFERSET(AX_surfxml_network_link_name);
3183         YY_BREAK
3184 case 92:
3185 /* rule 92 can match eol */
3186 YY_RULE_SETUP
3187 ENTER(VALUE1); BUFFERSET(AX_surfxml_network_link_bandwidth);
3188         YY_BREAK
3189 case 93:
3190 /* rule 93 can match eol */
3191 YY_RULE_SETUP
3192 ENTER(VALUE2); BUFFERSET(AX_surfxml_network_link_bandwidth);
3193         YY_BREAK
3194 case 94:
3195 /* rule 94 can match eol */
3196 YY_RULE_SETUP
3197 ENTER(VALUE1); BUFFERSET(AX_surfxml_network_link_bandwidth_file);
3198         YY_BREAK
3199 case 95:
3200 /* rule 95 can match eol */
3201 YY_RULE_SETUP
3202 ENTER(VALUE2); BUFFERSET(AX_surfxml_network_link_bandwidth_file);
3203         YY_BREAK
3204 case 96:
3205 /* rule 96 can match eol */
3206 YY_RULE_SETUP
3207 ENTER(VALUE1); BUFFERSET(AX_surfxml_network_link_latency);
3208         YY_BREAK
3209 case 97:
3210 /* rule 97 can match eol */
3211 YY_RULE_SETUP
3212 ENTER(VALUE2); BUFFERSET(AX_surfxml_network_link_latency);
3213         YY_BREAK
3214 case 98:
3215 /* rule 98 can match eol */
3216 YY_RULE_SETUP
3217 ENTER(VALUE1); BUFFERSET(AX_surfxml_network_link_latency_file);
3218         YY_BREAK
3219 case 99:
3220 /* rule 99 can match eol */
3221 YY_RULE_SETUP
3222 ENTER(VALUE2); BUFFERSET(AX_surfxml_network_link_latency_file);
3223         YY_BREAK
3224 case 100:
3225 /* rule 100 can match eol */
3226 case 101:
3227 /* rule 101 can match eol */
3228 YY_RULE_SETUP
3229 A_surfxml_network_link_state = A_surfxml_network_link_state_ON;
3230         YY_BREAK
3231 case 102:
3232 /* rule 102 can match eol */
3233 case 103:
3234 /* rule 103 can match eol */
3235 YY_RULE_SETUP
3236 A_surfxml_network_link_state = A_surfxml_network_link_state_OFF;
3237         YY_BREAK
3238 case 104:
3239 /* rule 104 can match eol */
3240 YY_RULE_SETUP
3241 ENTER(VALUE1); BUFFERSET(AX_surfxml_network_link_state_file);
3242         YY_BREAK
3243 case 105:
3244 /* rule 105 can match eol */
3245 YY_RULE_SETUP
3246 ENTER(VALUE2); BUFFERSET(AX_surfxml_network_link_state_file);
3247         YY_BREAK
3248 case 106:
3249 /* rule 106 can match eol */
3250 case 107:
3251 /* rule 107 can match eol */
3252 YY_RULE_SETUP
3253 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_SHARED;
3254         YY_BREAK
3255 case 108:
3256 /* rule 108 can match eol */
3257 case 109:
3258 /* rule 109 can match eol */
3259 YY_RULE_SETUP
3260 A_surfxml_network_link_sharing_policy = A_surfxml_network_link_sharing_policy_FATPIPE;
3261         YY_BREAK
3262 case 110:
3263 YY_RULE_SETUP
3264 {
3265   if (!AX_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
3266   if (!AX_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
3267   LEAVE; STag_surfxml_network_link();surfxml_pcdata_ix = 0; ENTER(E_surfxml_network_link);
3268  }
3269         YY_BREAK
3270 case 111:
3271 YY_RULE_SETUP
3272 {
3273   if (!AX_surfxml_network_link_name) FAIL("Required attribute `name' not set for `network_link' element.");
3274   if (!AX_surfxml_network_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `network_link' element.");
3275   LEAVE; STag_surfxml_network_link(); surfxml_pcdata_ix = 0; ETag_surfxml_network_link(); popbuffer(); /* attribute */
3276   switch (YY_START) {
3277    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3278    case ROOT_surfxml_network_link: SET(EPILOG); break;
3279   }
3280  }
3281         YY_BREAK
3282 case 112:
3283 YY_RULE_SETUP
3284 FAIL("Unexpected character `%c' in attribute list of network_link element.", surf_parse_text[0]);
3285         YY_BREAK
3286 case 113:
3287 YY_RULE_SETUP
3288 FAIL("Bad attribute `%s' in `network_link' element start tag.",surf_parse_text);
3289         YY_BREAK
3290 case YY_STATE_EOF(AL_surfxml_network_link):
3291 FAIL("EOF in attribute list of `network_link' element.");
3292         YY_BREAK
3293
3294 case 114:
3295 /* rule 114 can match eol */
3296 YY_RULE_SETUP
3297 {
3298   LEAVE;
3299   ETag_surfxml_network_link();
3300   popbuffer(); /* attribute */
3301   switch (YY_START) {
3302    case S_surfxml_platform_description_2: case S_surfxml_platform_description_3: case S_surfxml_platform_description: SET(S_surfxml_platform_description_3); break;
3303    case ROOT_surfxml_network_link: SET(EPILOG); break;
3304   }
3305  }
3306         YY_BREAK
3307 case 115:
3308 /* rule 115 can match eol */
3309 YY_RULE_SETUP
3310 FAIL("Unexpected end-tag `%s': `</network_link>' expected.",surf_parse_text);
3311         YY_BREAK
3312 case 116:
3313 YY_RULE_SETUP
3314 FAIL("Unexpected character `%c': `</network_link>' expected.",surf_parse_text[0]);
3315         YY_BREAK
3316 case YY_STATE_EOF(E_surfxml_network_link):
3317 FAIL("Premature EOF: `</network_link>' expected.");
3318         YY_BREAK
3319
3320 case 117:
3321 /* rule 117 can match eol */
3322 YY_RULE_SETUP
3323 FAIL("Starting tag <route> is not allowed here.");
3324         YY_BREAK
3325 case 118:
3326 /* rule 118 can match eol */
3327 YY_RULE_SETUP
3328 {
3329   AX_surfxml_route_src = 0;
3330   AX_surfxml_route_dst = 0;
3331   AX_surfxml_route_impact_on_src = 30;
3332   AX_surfxml_route_impact_on_dst = 34;
3333   AX_surfxml_route_impact_on_src_with_other_recv = 38;
3334   AX_surfxml_route_impact_on_dst_with_other_send = 42;
3335   ENTER(AL_surfxml_route); pushbuffer(0);
3336   }
3337         YY_BREAK
3338
3339 case 119:
3340 /* rule 119 can match eol */
3341 YY_RULE_SETUP
3342 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
3343         YY_BREAK
3344 case 120:
3345 /* rule 120 can match eol */
3346 YY_RULE_SETUP
3347 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
3348         YY_BREAK
3349 case 121:
3350 /* rule 121 can match eol */
3351 YY_RULE_SETUP
3352 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
3353         YY_BREAK
3354 case 122:
3355 /* rule 122 can match eol */
3356 YY_RULE_SETUP
3357 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
3358         YY_BREAK
3359 case 123:
3360 /* rule 123 can match eol */
3361 YY_RULE_SETUP
3362 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src);
3363         YY_BREAK
3364 case 124:
3365 /* rule 124 can match eol */
3366 YY_RULE_SETUP
3367 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src);
3368         YY_BREAK
3369 case 125:
3370 /* rule 125 can match eol */
3371 YY_RULE_SETUP
3372 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst);
3373         YY_BREAK
3374 case 126:
3375 /* rule 126 can match eol */
3376 YY_RULE_SETUP
3377 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst);
3378         YY_BREAK
3379 case 127:
3380 /* rule 127 can match eol */
3381 YY_RULE_SETUP
3382 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
3383         YY_BREAK
3384 case 128:
3385 /* rule 128 can match eol */
3386 YY_RULE_SETUP
3387 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
3388         YY_BREAK
3389 case 129:
3390 /* rule 129 can match eol */
3391 YY_RULE_SETUP
3392 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
3393         YY_BREAK
3394 case 130:
3395 /* rule 130 can match eol */
3396 YY_RULE_SETUP
3397 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
3398         YY_BREAK
3399 case 131:
3400 YY_RULE_SETUP
3401 {
3402   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3403   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3404   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
3405  }
3406         YY_BREAK
3407 case 132:
3408 YY_RULE_SETUP
3409 {
3410   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3411   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3412   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
3413   switch (YY_START) {
3414    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
3415    case ROOT_surfxml_route: SET(EPILOG); break;
3416   }
3417  }
3418         YY_BREAK
3419 case 133:
3420 YY_RULE_SETUP
3421 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
3422         YY_BREAK
3423 case 134:
3424 YY_RULE_SETUP
3425 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
3426         YY_BREAK
3427 case YY_STATE_EOF(AL_surfxml_route):
3428 FAIL("EOF in attribute list of `route' element.");
3429         YY_BREAK
3430
3431 case 135:
3432 /* rule 135 can match eol */
3433 YY_RULE_SETUP
3434 {
3435   LEAVE;
3436   ETag_surfxml_route();
3437   popbuffer(); /* attribute */
3438   switch (YY_START) {
3439    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
3440    case ROOT_surfxml_route: SET(EPILOG); break;
3441   }
3442  }
3443         YY_BREAK
3444 case 136:
3445 /* rule 136 can match eol */
3446 YY_RULE_SETUP
3447 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
3448         YY_BREAK
3449 case 137:
3450 YY_RULE_SETUP
3451 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
3452         YY_BREAK
3453 case YY_STATE_EOF(S_surfxml_route):
3454 case YY_STATE_EOF(S_surfxml_route_2):
3455 case YY_STATE_EOF(E_surfxml_route):
3456 FAIL("Premature EOF: `</route>' expected.");
3457         YY_BREAK
3458
3459 case 138:
3460 /* rule 138 can match eol */
3461 YY_RULE_SETUP
3462 FAIL("Starting tag <route_element> is not allowed here.");
3463         YY_BREAK
3464 case 139:
3465 /* rule 139 can match eol */
3466 YY_RULE_SETUP
3467 {
3468   AX_surfxml_route_element_name = 0;
3469   ENTER(AL_surfxml_route_element); pushbuffer(0);
3470   }
3471         YY_BREAK
3472
3473 case 140:
3474 /* rule 140 can match eol */
3475 YY_RULE_SETUP
3476 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_element_name);
3477         YY_BREAK
3478 case 141:
3479 /* rule 141 can match eol */
3480 YY_RULE_SETUP
3481 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_element_name);
3482         YY_BREAK
3483 case 142:
3484 YY_RULE_SETUP
3485 {
3486   if (!AX_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3487   LEAVE; STag_surfxml_route_element();surfxml_pcdata_ix = 0; ENTER(E_surfxml_route_element);
3488  }
3489         YY_BREAK
3490 case 143:
3491 YY_RULE_SETUP
3492 {
3493   if (!AX_surfxml_route_element_name) FAIL("Required attribute `name' not set for `route_element' element.");
3494   LEAVE; STag_surfxml_route_element(); surfxml_pcdata_ix = 0; ETag_surfxml_route_element(); popbuffer(); /* attribute */
3495   switch (YY_START) {
3496    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3497    case ROOT_surfxml_route_element: SET(EPILOG); break;
3498   }
3499  }
3500         YY_BREAK
3501 case 144:
3502 YY_RULE_SETUP
3503 FAIL("Unexpected character `%c' in attribute list of route_element element.", surf_parse_text[0]);
3504         YY_BREAK
3505 case 145:
3506 YY_RULE_SETUP
3507 FAIL("Bad attribute `%s' in `route_element' element start tag.",surf_parse_text);
3508         YY_BREAK
3509 case YY_STATE_EOF(AL_surfxml_route_element):
3510 FAIL("EOF in attribute list of `route_element' element.");
3511         YY_BREAK
3512
3513 case 146:
3514 /* rule 146 can match eol */
3515 YY_RULE_SETUP
3516 {
3517   LEAVE;
3518   ETag_surfxml_route_element();
3519   popbuffer(); /* attribute */
3520   switch (YY_START) {
3521    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3522    case ROOT_surfxml_route_element: SET(EPILOG); break;
3523   }
3524  }
3525         YY_BREAK
3526 case 147:
3527 /* rule 147 can match eol */
3528 YY_RULE_SETUP
3529 FAIL("Unexpected end-tag `%s': `</route_element>' expected.",surf_parse_text);
3530         YY_BREAK
3531 case 148:
3532 YY_RULE_SETUP
3533 FAIL("Unexpected character `%c': `</route_element>' expected.",surf_parse_text[0]);
3534         YY_BREAK
3535 case YY_STATE_EOF(E_surfxml_route_element):
3536 FAIL("Premature EOF: `</route_element>' expected.");
3537         YY_BREAK
3538
3539 case 149:
3540 /* rule 149 can match eol */
3541 YY_RULE_SETUP
3542 FAIL("Starting tag <process> is not allowed here.");
3543         YY_BREAK
3544 case 150:
3545 /* rule 150 can match eol */
3546 YY_RULE_SETUP
3547 {
3548   AX_surfxml_process_host = 0;
3549   AX_surfxml_process_function = 0;
3550   AX_surfxml_process_start_time = 46;
3551   AX_surfxml_process_kill_time = 51;
3552   ENTER(AL_surfxml_process); pushbuffer(0);
3553   }
3554         YY_BREAK
3555
3556 case 151:
3557 /* rule 151 can match eol */
3558 YY_RULE_SETUP
3559 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
3560         YY_BREAK
3561 case 152:
3562 /* rule 152 can match eol */
3563 YY_RULE_SETUP
3564 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
3565         YY_BREAK
3566 case 153:
3567 /* rule 153 can match eol */
3568 YY_RULE_SETUP
3569 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
3570         YY_BREAK
3571 case 154:
3572 /* rule 154 can match eol */
3573 YY_RULE_SETUP
3574 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
3575         YY_BREAK
3576 case 155:
3577 /* rule 155 can match eol */
3578 YY_RULE_SETUP
3579 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
3580         YY_BREAK
3581 case 156:
3582 /* rule 156 can match eol */
3583 YY_RULE_SETUP
3584 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
3585         YY_BREAK
3586 case 157:
3587 /* rule 157 can match eol */
3588 YY_RULE_SETUP
3589 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
3590         YY_BREAK
3591 case 158:
3592 /* rule 158 can match eol */
3593 YY_RULE_SETUP
3594 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
3595         YY_BREAK
3596 case 159:
3597 YY_RULE_SETUP
3598 {
3599   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3600   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3601   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
3602  }
3603         YY_BREAK
3604 case 160:
3605 YY_RULE_SETUP
3606 {
3607   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3608   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3609   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
3610   switch (YY_START) {
3611    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
3612    case ROOT_surfxml_process: SET(EPILOG); break;
3613   }
3614  }
3615         YY_BREAK
3616 case 161:
3617 YY_RULE_SETUP
3618 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
3619         YY_BREAK
3620 case 162:
3621 YY_RULE_SETUP
3622 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
3623         YY_BREAK
3624 case YY_STATE_EOF(AL_surfxml_process):
3625 FAIL("EOF in attribute list of `process' element.");
3626         YY_BREAK
3627
3628 case 163:
3629 /* rule 163 can match eol */
3630 YY_RULE_SETUP
3631 {
3632   LEAVE;
3633   ETag_surfxml_process();
3634   popbuffer(); /* attribute */
3635   switch (YY_START) {
3636    case S_surfxml_platform_description_5: case S_surfxml_platform_description_3: case S_surfxml_platform_description_1: case S_surfxml_platform_description: case S_surfxml_platform_description_4: SET(S_surfxml_platform_description_5); break;
3637    case ROOT_surfxml_process: SET(EPILOG); break;
3638   }
3639  }
3640         YY_BREAK
3641 case 164:
3642 /* rule 164 can match eol */
3643 YY_RULE_SETUP
3644 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
3645         YY_BREAK
3646 case 165:
3647 YY_RULE_SETUP
3648 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
3649         YY_BREAK
3650 case YY_STATE_EOF(S_surfxml_process):
3651 case YY_STATE_EOF(E_surfxml_process):
3652 case YY_STATE_EOF(S_surfxml_process_2):
3653 FAIL("Premature EOF: `</process>' expected.");
3654         YY_BREAK
3655
3656 case 166:
3657 /* rule 166 can match eol */
3658 YY_RULE_SETUP
3659 FAIL("Starting tag <argument> is not allowed here.");
3660         YY_BREAK
3661 case 167:
3662 /* rule 167 can match eol */
3663 YY_RULE_SETUP
3664 {
3665   AX_surfxml_argument_value = 0;
3666   ENTER(AL_surfxml_argument); pushbuffer(0);
3667   }
3668         YY_BREAK
3669
3670 case 168:
3671 /* rule 168 can match eol */
3672 YY_RULE_SETUP
3673 ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
3674         YY_BREAK
3675 case 169:
3676 /* rule 169 can match eol */
3677 YY_RULE_SETUP
3678 ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
3679         YY_BREAK
3680 case 170:
3681 YY_RULE_SETUP
3682 {
3683   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3684   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
3685  }
3686         YY_BREAK
3687 case 171:
3688 YY_RULE_SETUP
3689 {
3690   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3691   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
3692   switch (YY_START) {
3693    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3694    case ROOT_surfxml_argument: SET(EPILOG); break;
3695   }
3696  }
3697         YY_BREAK
3698 case 172:
3699 YY_RULE_SETUP
3700 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
3701         YY_BREAK
3702 case 173:
3703 YY_RULE_SETUP
3704 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
3705         YY_BREAK
3706 case YY_STATE_EOF(AL_surfxml_argument):
3707 FAIL("EOF in attribute list of `argument' element.");
3708         YY_BREAK
3709
3710 case 174:
3711 /* rule 174 can match eol */
3712 YY_RULE_SETUP
3713 {
3714   LEAVE;
3715   ETag_surfxml_argument();
3716   popbuffer(); /* attribute */
3717   switch (YY_START) {
3718    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3719    case ROOT_surfxml_argument: SET(EPILOG); break;
3720   }
3721  }
3722         YY_BREAK
3723 case 175:
3724 /* rule 175 can match eol */
3725 YY_RULE_SETUP
3726 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
3727         YY_BREAK
3728 case 176:
3729 YY_RULE_SETUP
3730 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
3731         YY_BREAK
3732 case YY_STATE_EOF(E_surfxml_argument):
3733 FAIL("Premature EOF: `</argument>' expected.");
3734         YY_BREAK
3735
3736 /* EPILOG: after the root element. */
3737
3738 case 177:
3739 YY_RULE_SETUP
3740 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
3741         YY_BREAK
3742 case YY_STATE_EOF(EPILOG):
3743 SUCCEED;
3744         YY_BREAK
3745
3746 /* CHARACTER DATA. */
3747
3748 /* Non-defined standard entities... */
3749 case 178:
3750 YY_RULE_SETUP
3751 BUFFERPUTC('&');
3752         YY_BREAK
3753 case 179:
3754 YY_RULE_SETUP
3755 BUFFERPUTC('<');
3756         YY_BREAK
3757 case 180:
3758 YY_RULE_SETUP
3759 BUFFERPUTC('>');
3760         YY_BREAK
3761 case 181:
3762 YY_RULE_SETUP
3763 BUFFERPUTC('\'');
3764         YY_BREAK
3765 case 182:
3766 YY_RULE_SETUP
3767 BUFFERPUTC('"');
3768         YY_BREAK
3769 /* Character entities. */
3770 case 183:
3771 YY_RULE_SETUP
3772 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
3773         YY_BREAK
3774 case 184:
3775 YY_RULE_SETUP
3776 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
3777         YY_BREAK
3778
3779 case 185:
3780 /* rule 185 can match eol */
3781 case 186:
3782 /* rule 186 can match eol */
3783 case 187:
3784 /* rule 187 can match eol */
3785 case 188:
3786 /* rule 188 can match eol */
3787 YY_RULE_SETUP
3788 BUFFERPUTC('\n');
3789         YY_BREAK
3790
3791 case 189:
3792 YY_RULE_SETUP
3793 ENTER(CDATA);
3794         YY_BREAK
3795 case 190:
3796 YY_RULE_SETUP
3797 FAIL("Unexpected `]""]>' in character data.");
3798         YY_BREAK
3799
3800 case 191:
3801 YY_RULE_SETUP
3802 BUFFERDONE; LEAVE;
3803         YY_BREAK
3804 case YY_STATE_EOF(VALUE1):
3805 FAIL("EOF in literal (\"'\" expected).");
3806         YY_BREAK
3807
3808 case 192:
3809 YY_RULE_SETUP
3810 BUFFERDONE; LEAVE;
3811         YY_BREAK
3812 case YY_STATE_EOF(VALUE2):
3813 FAIL("EOF in literal (`\"' expected).");
3814         YY_BREAK
3815
3816 case 193:
3817 /* rule 193 can match eol */
3818 YY_RULE_SETUP
3819 BUFFERPUTC(surf_parse_text[0]);
3820         YY_BREAK
3821 case 194:
3822 YY_RULE_SETUP
3823 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
3824         YY_BREAK
3825
3826 case 195:
3827 YY_RULE_SETUP
3828 LEAVE;
3829         YY_BREAK
3830 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
3831 case 196:
3832 YY_RULE_SETUP
3833 BUFFERPUTC(surf_parse_text[0]);
3834         YY_BREAK
3835 case YY_STATE_EOF(CDATA):
3836 FAIL("EOF in CDATA section.");
3837         YY_BREAK
3838
3839 /* Impossible rules to avoid warnings from flex(1). */
3840 /* Ideally, this should be replaced by code in flexml.pl that
3841     generates just the states not covered by other rules. */
3842
3843 case 197:
3844 /* rule 197 can match eol */
3845 YY_RULE_SETUP
3846 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
3847         YY_BREAK
3848
3849 case 198:
3850 YY_RULE_SETUP
3851 ECHO;
3852         YY_BREAK
3853 case YY_STATE_EOF(INITIAL):
3854 case YY_STATE_EOF(ROOT_surfxml_platform_description):
3855 case YY_STATE_EOF(S_surfxml_platform_description_2):
3856 case YY_STATE_EOF(S_surfxml_platform_description_4):
3857 case YY_STATE_EOF(ROOT_surfxml_include):
3858 case YY_STATE_EOF(ROOT_surfxml_cpu):
3859 case YY_STATE_EOF(ROOT_surfxml_router):
3860 case YY_STATE_EOF(ROOT_surfxml_network_link):
3861 case YY_STATE_EOF(ROOT_surfxml_route):
3862 case YY_STATE_EOF(S_surfxml_route_1):
3863 case YY_STATE_EOF(ROOT_surfxml_route_element):
3864 case YY_STATE_EOF(ROOT_surfxml_process):
3865 case YY_STATE_EOF(S_surfxml_process_1):
3866 case YY_STATE_EOF(ROOT_surfxml_argument):
3867 case YY_STATE_EOF(IMPOSSIBLE):
3868         yyterminate();
3869
3870         case YY_END_OF_BUFFER:
3871                 {
3872                 /* Amount of text matched not including the EOB char. */
3873                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3874
3875                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3876                 *yy_cp = (yy_hold_char);
3877                 YY_RESTORE_YY_MORE_OFFSET
3878
3879                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3880                         {
3881                         /* We're scanning a new file or input source.  It's
3882                          * possible that this happened because the user
3883                          * just pointed surf_parse_in at a new source and called
3884                          * surf_parse_lex().  If so, then we have to assure
3885                          * consistency between YY_CURRENT_BUFFER and our
3886                          * globals.  Here is the right place to do so, because
3887                          * this is the first action (other than possibly a
3888                          * back-up) that will match for the new input source.
3889                          */
3890                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3891                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
3892                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3893                         }
3894
3895                 /* Note that here we test for yy_c_buf_p "<=" to the position
3896                  * of the first EOB in the buffer, since yy_c_buf_p will
3897                  * already have been incremented past the NUL character
3898                  * (since all states make transitions on EOB to the
3899                  * end-of-buffer state).  Contrast this with the test
3900                  * in input().
3901                  */
3902                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3903                         { /* This was really a NUL. */
3904                         yy_state_type yy_next_state;
3905
3906                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3907
3908                         yy_current_state = yy_get_previous_state(  );
3909
3910                         /* Okay, we're now positioned to make the NUL
3911                          * transition.  We couldn't have
3912                          * yy_get_previous_state() go ahead and do it
3913                          * for us because it doesn't know how to deal
3914                          * with the possibility of jamming (and we don't
3915                          * want to build jamming into it because then it
3916                          * will run more slowly).
3917                          */
3918
3919                         yy_next_state = yy_try_NUL_trans( yy_current_state );
3920
3921                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3922
3923                         if ( yy_next_state )
3924                                 {
3925                                 /* Consume the NUL. */
3926                                 yy_cp = ++(yy_c_buf_p);
3927                                 yy_current_state = yy_next_state;
3928                                 goto yy_match;
3929                                 }
3930
3931                         else
3932                                 {
3933                                 yy_cp = (yy_c_buf_p);
3934                                 goto yy_find_action;
3935                                 }
3936                         }
3937
3938                 else switch ( yy_get_next_buffer(  ) )
3939                         {
3940                         case EOB_ACT_END_OF_FILE:
3941                                 {
3942                                 (yy_did_buffer_switch_on_eof) = 0;
3943
3944                                 if ( surf_parse_wrap( ) )
3945                                         {
3946                                         /* Note: because we've taken care in
3947                                          * yy_get_next_buffer() to have set up
3948                                          * surf_parse_text, we can now set up
3949                                          * yy_c_buf_p so that if some total
3950                                          * hoser (like flex itself) wants to
3951                                          * call the scanner after we return the
3952                                          * YY_NULL, it'll still work - another
3953                                          * YY_NULL will get returned.
3954                                          */
3955                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3956
3957                                         yy_act = YY_STATE_EOF(YY_START);
3958                                         goto do_action;
3959                                         }
3960
3961                                 else
3962                                         {
3963                                         if ( ! (yy_did_buffer_switch_on_eof) )
3964                                                 YY_NEW_FILE;
3965                                         }
3966                                 break;
3967                                 }
3968
3969                         case EOB_ACT_CONTINUE_SCAN:
3970                                 (yy_c_buf_p) =
3971                                         (yytext_ptr) + yy_amount_of_matched_text;
3972
3973                                 yy_current_state = yy_get_previous_state(  );
3974
3975                                 yy_cp = (yy_c_buf_p);
3976                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3977                                 goto yy_match;
3978
3979                         case EOB_ACT_LAST_MATCH:
3980                                 (yy_c_buf_p) =
3981                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3982
3983                                 yy_current_state = yy_get_previous_state(  );
3984
3985                                 yy_cp = (yy_c_buf_p);
3986                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3987                                 goto yy_find_action;
3988                         }
3989                 break;
3990                 }
3991
3992         default:
3993                 YY_FATAL_ERROR(
3994                         "fatal flex scanner internal error--no action found" );
3995         } /* end of action switch */
3996                 } /* end of scanning one token */
3997 } /* end of surf_parse_lex */
3998
3999 /* yy_get_next_buffer - try to read in a new buffer
4000  *
4001  * Returns a code representing an action:
4002  *      EOB_ACT_LAST_MATCH -
4003  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4004  *      EOB_ACT_END_OF_FILE - end of file
4005  */
4006 static int yy_get_next_buffer (void)
4007 {
4008         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4009         register char *source = (yytext_ptr);
4010         register int number_to_move, i;
4011         int ret_val;
4012
4013         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4014                 YY_FATAL_ERROR(
4015                 "fatal flex scanner internal error--end of buffer missed" );
4016
4017         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4018                 { /* Don't try to fill the buffer, so this is an EOF. */
4019                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4020                         {
4021                         /* We matched a single character, the EOB, so
4022                          * treat this as a final EOF.
4023                          */
4024                         return EOB_ACT_END_OF_FILE;
4025                         }
4026
4027                 else
4028                         {
4029                         /* We matched some text prior to the EOB, first
4030                          * process it.
4031                          */
4032                         return EOB_ACT_LAST_MATCH;
4033                         }
4034                 }
4035
4036         /* Try to read more data. */
4037
4038         /* First move last chars to start of buffer. */
4039         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
4040
4041         for ( i = 0; i < number_to_move; ++i )
4042                 *(dest++) = *(source++);
4043
4044         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4045                 /* don't do the read, it's not guaranteed to return an EOF,
4046                  * just force an EOF
4047                  */
4048                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4049
4050         else
4051                 {
4052                         int num_to_read =
4053                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4054
4055                 while ( num_to_read <= 0 )
4056                         { /* Not enough room in the buffer - grow it. */
4057
4058                         /* just a shorter name for the current buffer */
4059                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
4060
4061                         int yy_c_buf_p_offset =
4062                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
4063
4064                         if ( b->yy_is_our_buffer )
4065                                 {
4066                                 int new_size = b->yy_buf_size * 2;
4067
4068                                 if ( new_size <= 0 )
4069                                         b->yy_buf_size += b->yy_buf_size / 8;
4070                                 else
4071                                         b->yy_buf_size *= 2;
4072
4073                                 b->yy_ch_buf = (char *)
4074                                         /* Include room in for 2 EOB chars. */
4075                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
4076                                 }
4077                         else
4078                                 /* Can't grow it, we don't own it. */
4079                                 b->yy_ch_buf = 0;
4080
4081                         if ( ! b->yy_ch_buf )
4082                                 YY_FATAL_ERROR(
4083                                 "fatal error - scanner input buffer overflow" );
4084
4085                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4086
4087                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4088                                                 number_to_move - 1;
4089
4090                         }
4091
4092                 if ( num_to_read > YY_READ_BUF_SIZE )
4093                         num_to_read = YY_READ_BUF_SIZE;
4094
4095                 /* Read in more data. */
4096                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4097                         (yy_n_chars), (size_t) num_to_read );
4098
4099                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4100                 }
4101
4102         if ( (yy_n_chars) == 0 )
4103                 {
4104                 if ( number_to_move == YY_MORE_ADJ )
4105                         {
4106                         ret_val = EOB_ACT_END_OF_FILE;
4107                         surf_parse_restart(surf_parse_in  );
4108                         }
4109
4110                 else
4111                         {
4112                         ret_val = EOB_ACT_LAST_MATCH;
4113                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4114                                 YY_BUFFER_EOF_PENDING;
4115                         }
4116                 }
4117
4118         else
4119                 ret_val = EOB_ACT_CONTINUE_SCAN;
4120
4121         (yy_n_chars) += number_to_move;
4122         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4123         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4124
4125         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4126
4127         return ret_val;
4128 }
4129
4130 /* yy_get_previous_state - get the state just before the EOB char was reached */
4131
4132     static yy_state_type yy_get_previous_state (void)
4133 {
4134         register yy_state_type yy_current_state;
4135         register char *yy_cp;
4136     
4137         yy_current_state = (yy_start);
4138
4139         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4140                 {
4141                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4142                 if ( yy_accept[yy_current_state] )
4143                         {
4144                         (yy_last_accepting_state) = yy_current_state;
4145                         (yy_last_accepting_cpos) = yy_cp;
4146                         }
4147                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4148                         {
4149                         yy_current_state = (int) yy_def[yy_current_state];
4150                         if ( yy_current_state >= 1531 )
4151                                 yy_c = yy_meta[(unsigned int) yy_c];
4152                         }
4153                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4154                 }
4155
4156         return yy_current_state;
4157 }
4158
4159 /* yy_try_NUL_trans - try to make a transition on the NUL character
4160  *
4161  * synopsis
4162  *      next_state = yy_try_NUL_trans( current_state );
4163  */
4164     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
4165 {
4166         register int yy_is_jam;
4167         register char *yy_cp = (yy_c_buf_p);
4168
4169         register YY_CHAR yy_c = 1;
4170         if ( yy_accept[yy_current_state] )
4171                 {
4172                 (yy_last_accepting_state) = yy_current_state;
4173                 (yy_last_accepting_cpos) = yy_cp;
4174                 }
4175         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4176                 {
4177                 yy_current_state = (int) yy_def[yy_current_state];
4178                 if ( yy_current_state >= 1531 )
4179                         yy_c = yy_meta[(unsigned int) yy_c];
4180                 }
4181         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4182         yy_is_jam = (yy_current_state == 1530);
4183
4184         return yy_is_jam ? 0 : yy_current_state;
4185 }
4186
4187 #ifndef YY_NO_INPUT
4188 #ifdef __cplusplus
4189     static int yyinput (void)
4190 #else
4191     static int input  (void)
4192 #endif
4193
4194 {
4195         int c;
4196     
4197         *(yy_c_buf_p) = (yy_hold_char);
4198
4199         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
4200                 {
4201                 /* yy_c_buf_p now points to the character we want to return.
4202                  * If this occurs *before* the EOB characters, then it's a
4203                  * valid NUL; if not, then we've hit the end of the buffer.
4204                  */
4205                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4206                         /* This was really a NUL. */
4207                         *(yy_c_buf_p) = '\0';
4208
4209                 else
4210                         { /* need more input */
4211                         int offset = (yy_c_buf_p) - (yytext_ptr);
4212                         ++(yy_c_buf_p);
4213
4214                         switch ( yy_get_next_buffer(  ) )
4215                                 {
4216                                 case EOB_ACT_LAST_MATCH:
4217                                         /* This happens because yy_g_n_b()
4218                                          * sees that we've accumulated a
4219                                          * token and flags that we need to
4220                                          * try matching the token before
4221                                          * proceeding.  But for input(),
4222                                          * there's no matching to consider.
4223                                          * So convert the EOB_ACT_LAST_MATCH
4224                                          * to EOB_ACT_END_OF_FILE.
4225                                          */
4226
4227                                         /* Reset buffer status. */
4228                                         surf_parse_restart(surf_parse_in );
4229
4230                                         /*FALLTHROUGH*/
4231
4232                                 case EOB_ACT_END_OF_FILE:
4233                                         {
4234                                         if ( surf_parse_wrap( ) )
4235                                                 return EOF;
4236
4237                                         if ( ! (yy_did_buffer_switch_on_eof) )
4238                                                 YY_NEW_FILE;
4239 #ifdef __cplusplus
4240                                         return yyinput();
4241 #else
4242                                         return input();
4243 #endif
4244                                         }
4245
4246                                 case EOB_ACT_CONTINUE_SCAN:
4247                                         (yy_c_buf_p) = (yytext_ptr) + offset;
4248                                         break;
4249                                 }
4250                         }
4251                 }
4252
4253         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
4254         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
4255         (yy_hold_char) = *++(yy_c_buf_p);
4256
4257         if ( c == '\n' )
4258                    
4259     surf_parse_lineno++;
4260 ;
4261
4262         return c;
4263 }
4264 #endif  /* ifndef YY_NO_INPUT */
4265
4266 /** Immediately switch to a different input stream.
4267  * @param input_file A readable stream.
4268  * 
4269  * @note This function does not reset the start condition to @c INITIAL .
4270  */
4271     void surf_parse_restart  (FILE * input_file )
4272 {
4273     
4274         if ( ! YY_CURRENT_BUFFER ){
4275         surf_parse_ensure_buffer_stack ();
4276                 YY_CURRENT_BUFFER_LVALUE =
4277             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
4278         }
4279
4280         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
4281         surf_parse__load_buffer_state( );
4282 }
4283
4284 /** Switch to a different input buffer.
4285  * @param new_buffer The new input buffer.
4286  * 
4287  */
4288     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
4289 {
4290     
4291         /* TODO. We should be able to replace this entire function body
4292          * with
4293          *              surf_parse_pop_buffer_state();
4294          *              surf_parse_push_buffer_state(new_buffer);
4295      */
4296         surf_parse_ensure_buffer_stack ();
4297         if ( YY_CURRENT_BUFFER == new_buffer )
4298                 return;
4299
4300         if ( YY_CURRENT_BUFFER )
4301                 {
4302                 /* Flush out information for old buffer. */
4303                 *(yy_c_buf_p) = (yy_hold_char);
4304                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4305                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4306                 }
4307
4308         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4309         surf_parse__load_buffer_state( );
4310
4311         /* We don't actually know whether we did this switch during
4312          * EOF (surf_parse_wrap()) processing, but the only time this flag
4313          * is looked at is after surf_parse_wrap() is called, so it's safe
4314          * to go ahead and always set it.
4315          */
4316         (yy_did_buffer_switch_on_eof) = 1;
4317 }
4318
4319 static void surf_parse__load_buffer_state  (void)
4320 {
4321         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4322         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4323         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4324         (yy_hold_char) = *(yy_c_buf_p);
4325 }
4326
4327 /** Allocate and initialize an input buffer state.
4328  * @param file A readable stream.
4329  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4330  * 
4331  * @return the allocated buffer state.
4332  */
4333     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
4334 {
4335         YY_BUFFER_STATE b;
4336     
4337         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4338         if ( ! b )
4339                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4340
4341         b->yy_buf_size = size;
4342
4343         /* yy_ch_buf has to be 2 characters longer than the size given because
4344          * we need to put in 2 end-of-buffer characters.
4345          */
4346         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
4347         if ( ! b->yy_ch_buf )
4348                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4349
4350         b->yy_is_our_buffer = 1;
4351
4352         surf_parse__init_buffer(b,file );
4353
4354         return b;
4355 }
4356
4357 /** Destroy the buffer.
4358  * @param b a buffer created with surf_parse__create_buffer()
4359  * 
4360  */
4361     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
4362 {
4363     
4364         if ( ! b )
4365                 return;
4366
4367         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4368                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4369
4370         if ( b->yy_is_our_buffer )
4371                 surf_parse_free((void *) b->yy_ch_buf  );
4372
4373         surf_parse_free((void *) b  );
4374 }
4375
4376 #ifndef __cplusplus
4377 extern int isatty (int );
4378 #endif /* __cplusplus */
4379     
4380 /* Initializes or reinitializes a buffer.
4381  * This function is sometimes called more than once on the same buffer,
4382  * such as during a surf_parse_restart() or at EOF.
4383  */
4384     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
4385
4386 {
4387         int oerrno = errno;
4388     
4389         surf_parse__flush_buffer(b );
4390
4391         b->yy_input_file = file;
4392         b->yy_fill_buffer = 1;
4393
4394     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
4395      * called from surf_parse_restart() or through yy_get_next_buffer.
4396      * In that case, we don't want to reset the lineno or column.
4397      */
4398     if (b != YY_CURRENT_BUFFER){
4399         b->yy_bs_lineno = 1;
4400         b->yy_bs_column = 0;
4401     }
4402
4403         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4404     
4405         errno = oerrno;
4406 }
4407
4408 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4409  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4410  * 
4411  */
4412     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
4413 {
4414         if ( ! b )
4415                 return;
4416
4417         b->yy_n_chars = 0;
4418
4419         /* We always need two end-of-buffer characters.  The first causes
4420          * a transition to the end-of-buffer state.  The second causes
4421          * a jam in that state.
4422          */
4423         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4424         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4425
4426         b->yy_buf_pos = &b->yy_ch_buf[0];
4427
4428         b->yy_at_bol = 1;
4429         b->yy_buffer_status = YY_BUFFER_NEW;
4430
4431         if ( b == YY_CURRENT_BUFFER )
4432                 surf_parse__load_buffer_state( );
4433 }
4434
4435 /** Pushes the new state onto the stack. The new state becomes
4436  *  the current state. This function will allocate the stack
4437  *  if necessary.
4438  *  @param new_buffer The new state.
4439  *  
4440  */
4441 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
4442 {
4443         if (new_buffer == NULL)
4444                 return;
4445
4446         surf_parse_ensure_buffer_stack();
4447
4448         /* This block is copied from surf_parse__switch_to_buffer. */
4449         if ( YY_CURRENT_BUFFER )
4450                 {
4451                 /* Flush out information for old buffer. */
4452                 *(yy_c_buf_p) = (yy_hold_char);
4453                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4454                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4455                 }
4456
4457         /* Only push if top exists. Otherwise, replace top. */
4458         if (YY_CURRENT_BUFFER)
4459                 (yy_buffer_stack_top)++;
4460         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4461
4462         /* copied from surf_parse__switch_to_buffer. */
4463         surf_parse__load_buffer_state( );
4464         (yy_did_buffer_switch_on_eof) = 1;
4465 }
4466
4467 /** Removes and deletes the top of the stack, if present.
4468  *  The next element becomes the new top.
4469  *  
4470  */
4471 void surf_parse_pop_buffer_state (void)
4472 {
4473         if (!YY_CURRENT_BUFFER)
4474                 return;
4475
4476         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
4477         YY_CURRENT_BUFFER_LVALUE = NULL;
4478         if ((yy_buffer_stack_top) > 0)
4479                 --(yy_buffer_stack_top);
4480
4481         if (YY_CURRENT_BUFFER) {
4482                 surf_parse__load_buffer_state( );
4483                 (yy_did_buffer_switch_on_eof) = 1;
4484         }
4485 }
4486
4487 /* Allocates the stack if it does not exist.
4488  *  Guarantees space for at least one push.
4489  */
4490 static void surf_parse_ensure_buffer_stack (void)
4491 {
4492         int num_to_alloc;
4493     
4494         if (!(yy_buffer_stack)) {
4495
4496                 /* First allocation is just for 2 elements, since we don't know if this
4497                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4498                  * immediate realloc on the next call.
4499          */
4500                 num_to_alloc = 1;
4501                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
4502                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4503                                                                 );
4504                 
4505                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4506                                 
4507                 (yy_buffer_stack_max) = num_to_alloc;
4508                 (yy_buffer_stack_top) = 0;
4509                 return;
4510         }
4511
4512         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4513
4514                 /* Increase the buffer to prepare for a possible push. */
4515                 int grow_size = 8 /* arbitrary grow size */;
4516
4517                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4518                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
4519                                                                 ((yy_buffer_stack),
4520                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4521                                                                 );
4522
4523                 /* zero only the new slots.*/
4524                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4525                 (yy_buffer_stack_max) = num_to_alloc;
4526         }
4527 }
4528
4529 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4530  * @param base the character buffer
4531  * @param size the size in bytes of the character buffer
4532  * 
4533  * @return the newly allocated buffer state object. 
4534  */
4535 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
4536 {
4537         YY_BUFFER_STATE b;
4538     
4539         if ( size < 2 ||
4540              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4541              base[size-1] != YY_END_OF_BUFFER_CHAR )
4542                 /* They forgot to leave room for the EOB's. */
4543                 return 0;
4544
4545         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4546         if ( ! b )
4547                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
4548
4549         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4550         b->yy_buf_pos = b->yy_ch_buf = base;
4551         b->yy_is_our_buffer = 0;
4552         b->yy_input_file = 0;
4553         b->yy_n_chars = b->yy_buf_size;
4554         b->yy_is_interactive = 0;
4555         b->yy_at_bol = 1;
4556         b->yy_fill_buffer = 0;
4557         b->yy_buffer_status = YY_BUFFER_NEW;
4558
4559         surf_parse__switch_to_buffer(b  );
4560
4561         return b;
4562 }
4563
4564 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
4565  * scan from a @e copy of @a str.
4566  * @param yystr a NUL-terminated string to scan
4567  * 
4568  * @return the newly allocated buffer state object.
4569  * @note If you want to scan bytes that may contain NUL values, then use
4570  *       surf_parse__scan_bytes() instead.
4571  */
4572 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
4573 {
4574     
4575         return surf_parse__scan_bytes(yystr,strlen(yystr) );
4576 }
4577
4578 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
4579  * scan from a @e copy of @a bytes.
4580  * @param bytes the byte buffer to scan
4581  * @param len the number of bytes in the buffer pointed to by @a bytes.
4582  * 
4583  * @return the newly allocated buffer state object.
4584  */
4585 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
4586 {
4587         YY_BUFFER_STATE b;
4588         char *buf;
4589         yy_size_t n;
4590         int i;
4591     
4592         /* Get memory for full buffer, including space for trailing EOB's. */
4593         n = _yybytes_len + 2;
4594         buf = (char *) surf_parse_alloc(n  );
4595         if ( ! buf )
4596                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
4597
4598         for ( i = 0; i < _yybytes_len; ++i )
4599                 buf[i] = yybytes[i];
4600
4601         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4602
4603         b = surf_parse__scan_buffer(buf,n );
4604         if ( ! b )
4605                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
4606
4607         /* It's okay to grow etc. this buffer, and we should throw it
4608          * away when we're done.
4609          */
4610         b->yy_is_our_buffer = 1;
4611
4612         return b;
4613 }
4614
4615     static void yy_push_state (int  new_state )
4616 {
4617         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4618                 {
4619                 yy_size_t new_size;
4620
4621                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4622                 new_size = (yy_start_stack_depth) * sizeof( int );
4623
4624                 if ( ! (yy_start_stack) )
4625                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
4626
4627                 else
4628                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
4629
4630                 if ( ! (yy_start_stack) )
4631                         YY_FATAL_ERROR(
4632                         "out of memory expanding start-condition stack" );
4633                 }
4634
4635         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4636
4637         BEGIN(new_state);
4638 }
4639
4640     static void yy_pop_state  (void)
4641 {
4642         if ( --(yy_start_stack_ptr) < 0 )
4643                 YY_FATAL_ERROR( "start-condition stack underflow" );
4644
4645         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4646 }
4647
4648 #ifndef YY_EXIT_FAILURE
4649 #define YY_EXIT_FAILURE 2
4650 #endif
4651
4652 static void yy_fatal_error (yyconst char* msg )
4653 {
4654         (void) fprintf( stderr, "%s\n", msg );
4655         exit( YY_EXIT_FAILURE );
4656 }
4657
4658 /* Redefine yyless() so it works in section 3 code. */
4659
4660 #undef yyless
4661 #define yyless(n) \
4662         do \
4663                 { \
4664                 /* Undo effects of setting up surf_parse_text. */ \
4665         int yyless_macro_arg = (n); \
4666         YY_LESS_LINENO(yyless_macro_arg);\
4667                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
4668                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
4669                 (yy_hold_char) = *(yy_c_buf_p); \
4670                 *(yy_c_buf_p) = '\0'; \
4671                 surf_parse_leng = yyless_macro_arg; \
4672                 } \
4673         while ( 0 )
4674
4675 /* Accessor  methods (get/set functions) to struct members. */
4676
4677 /** Get the current line number.
4678  * 
4679  */
4680 int surf_parse_get_lineno  (void)
4681 {
4682         
4683     return surf_parse_lineno;
4684 }
4685
4686 /** Get the input stream.
4687  * 
4688  */
4689 FILE *surf_parse_get_in  (void)
4690 {
4691         return surf_parse_in;
4692 }
4693
4694 /** Get the output stream.
4695  * 
4696  */
4697 FILE *surf_parse_get_out  (void)
4698 {
4699         return surf_parse_out;
4700 }
4701
4702 /** Get the length of the current token.
4703  * 
4704  */
4705 int surf_parse_get_leng  (void)
4706 {
4707         return surf_parse_leng;
4708 }
4709
4710 /** Get the current token.
4711  * 
4712  */
4713
4714 char *surf_parse_get_text  (void)
4715 {
4716         return surf_parse_text;
4717 }
4718
4719 /** Set the current line number.
4720  * @param line_number
4721  * 
4722  */
4723 void surf_parse_set_lineno (int  line_number )
4724 {
4725     
4726     surf_parse_lineno = line_number;
4727 }
4728
4729 /** Set the input stream. This does not discard the current
4730  * input buffer.
4731  * @param in_str A readable stream.
4732  * 
4733  * @see surf_parse__switch_to_buffer
4734  */
4735 void surf_parse_set_in (FILE *  in_str )
4736 {
4737         surf_parse_in = in_str ;
4738 }
4739
4740 void surf_parse_set_out (FILE *  out_str )
4741 {
4742         surf_parse_out = out_str ;
4743 }
4744
4745 int surf_parse_get_debug  (void)
4746 {
4747         return surf_parse__flex_debug;
4748 }
4749
4750 void surf_parse_set_debug (int  bdebug )
4751 {
4752         surf_parse__flex_debug = bdebug ;
4753 }
4754
4755 static int yy_init_globals (void)
4756 {
4757         /* Initialization is the same as for the non-reentrant scanner.
4758      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
4759      */
4760
4761     /* We do not touch surf_parse_lineno unless the option is enabled. */
4762     surf_parse_lineno =  1;
4763     
4764     (yy_buffer_stack) = 0;
4765     (yy_buffer_stack_top) = 0;
4766     (yy_buffer_stack_max) = 0;
4767     (yy_c_buf_p) = (char *) 0;
4768     (yy_init) = 0;
4769     (yy_start) = 0;
4770
4771     (yy_start_stack_ptr) = 0;
4772     (yy_start_stack_depth) = 0;
4773     (yy_start_stack) =  NULL;
4774
4775 /* Defined in main.c */
4776 #ifdef YY_STDINIT
4777     surf_parse_in = stdin;
4778     surf_parse_out = stdout;
4779 #else
4780     surf_parse_in = (FILE *) 0;
4781     surf_parse_out = (FILE *) 0;
4782 #endif
4783
4784     /* For future reference: Set errno on error, since we are called by
4785      * surf_parse_lex_init()
4786      */
4787     return 0;
4788 }
4789
4790 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
4791 int surf_parse_lex_destroy  (void)
4792 {
4793     
4794     /* Pop the buffer stack, destroying each element. */
4795         while(YY_CURRENT_BUFFER){
4796                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
4797                 YY_CURRENT_BUFFER_LVALUE = NULL;
4798                 surf_parse_pop_buffer_state();
4799         }
4800
4801         /* Destroy the stack itself. */
4802         surf_parse_free((yy_buffer_stack) );
4803         (yy_buffer_stack) = NULL;
4804
4805     /* Destroy the start condition stack. */
4806         surf_parse_free((yy_start_stack)  );
4807         (yy_start_stack) = NULL;
4808
4809     /* Reset the globals. This is important in a non-reentrant scanner so the next time
4810      * surf_parse_lex() is called, initialization will occur. */
4811     yy_init_globals( );
4812
4813     return 0;
4814 }
4815
4816 /*
4817  * Internal utility routines.
4818  */
4819
4820 #ifndef yytext_ptr
4821 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4822 {
4823         register int i;
4824         for ( i = 0; i < n; ++i )
4825                 s1[i] = s2[i];
4826 }
4827 #endif
4828
4829 #ifdef YY_NEED_STRLEN
4830 static int yy_flex_strlen (yyconst char * s )
4831 {
4832         register int n;
4833         for ( n = 0; s[n]; ++n )
4834                 ;
4835
4836         return n;
4837 }
4838 #endif
4839
4840 void *surf_parse_alloc (yy_size_t  size )
4841 {
4842         return (void *) malloc( size );
4843 }
4844
4845 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
4846 {
4847         /* The cast to (char *) in the following accommodates both
4848          * implementations that use char* generic pointers, and those
4849          * that use void* generic pointers.  It works with the latter
4850          * because both ANSI C and C++ allow castless assignment from
4851          * any pointer type to void*, and deal with argument conversions
4852          * as though doing an assignment.
4853          */
4854         return (void *) realloc( (char *) ptr, size );
4855 }
4856
4857 void surf_parse_free (void * ptr )
4858 {
4859         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
4860 }
4861
4862 #define YYTABLES_NAME "yytables"
4863
4864 /* Element context stack lookup. */
4865 int surfxml_element_context(int i)
4866 {
4867   return (0<i && i<yy_start_stack_depth
4868           ? yy_start_stack[yy_start_stack_ptr - i]
4869           : 0);
4870 }
4871
4872 #ifdef FLEX_DEBUG
4873 void print_yy_stack(char* fmt, ...)
4874 {
4875   int i = 0; va_list ap; va_start(ap, fmt);
4876   vfprintf(stderr, fmt, ap);
4877   if (surfxml_statenames) {
4878       for (i=1; i<yy_start_stack_ptr; i++) {
4879           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
4880       }
4881       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
4882   }
4883   va_end(ap);
4884 }
4885
4886 void print_surfxml_bufferstack()
4887 {
4888     int i;
4889     fputs("Buffer: ", stderr);
4890     for (i = 0; i < blimit; i++) {
4891        if ( surfxml_bufferstack[i] == '\377' ) break;
4892          putc(surfxml_bufferstack[i], stderr);
4893     }
4894     putc('\n', stderr);
4895 }
4896
4897 static void debug_enter(int state, const char* statename) {
4898   yy_push_state(state);
4899   if (surf_parse__flex_debug) {
4900        print_yy_stack("--ENTER(%s) : ",statename);
4901        print_surfxml_bufferstack();
4902   }
4903 }
4904
4905 static void debug_leave(void) {
4906     if (surf_parse__flex_debug) {
4907         print_yy_stack("--LEAVE : ");
4908         print_surfxml_bufferstack();
4909     }
4910   yy_pop_state();
4911 }
4912
4913 static void debug_set(int state, const char* statename) {
4914   BEGIN(state);
4915   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
4916 }
4917 #endif
4918
4919 static void cleanup(void)
4920 {
4921     if (surfxml_statenames) {
4922         free(surfxml_statenames);
4923         surfxml_statenames = NULL;
4924     }
4925     free(surfxml_bufferstack);
4926     surfxml_bufferstack = NULL;
4927
4928     free(indexstack);
4929     indexstack = NULL;
4930 }
4931
4932 static int fail(const char* fmt, ...)
4933 {
4934     int chars_left, used;
4935     va_list ap; va_start(ap, fmt);
4936 #ifdef FLEXML_yylineno
4937     used = sprintf(flexml_err_msg,
4938                    "Invalid XML (XML input line %d, state %d): ",
4939                    surf_parse_lineno, YY_START);
4940 #else
4941     used = sprintf(flexml_err_msg,
4942                    "Invalid XML (state %d): ",
4943                    YY_START);
4944 #endif
4945     chars_left = flexml_max_err_msg_size - used - 1;
4946     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
4947     va_end(ap);
4948
4949 #ifndef FLEXML_quiet_parser
4950     /* print directly to sdterr */
4951     fprintf(stderr, "%s\n", flexml_err_msg);
4952     flexml_err_msg[0] = '\0';
4953 #endif
4954
4955     cleanup();
4956
4957     return 1;
4958 }
4959