Logo AND Algorithmique Numérique Distribuée

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