Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
mstorage was never implemented anyway
[simgrid.git] / src / surf / xml / simgrid_dtd.c
1
2 #line 3 "src/surf/xml/simgrid_dtd.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define yy_create_buffer surf_parse__create_buffer
9 #define yy_delete_buffer surf_parse__delete_buffer
10 #define yy_flex_debug surf_parse__flex_debug
11 #define yy_init_buffer surf_parse__init_buffer
12 #define yy_flush_buffer surf_parse__flush_buffer
13 #define yy_load_buffer_state surf_parse__load_buffer_state
14 #define yy_switch_to_buffer surf_parse__switch_to_buffer
15 #define yyin surf_parse_in
16 #define yyleng surf_parse_leng
17 #define yylex surf_parse_lex
18 #define yylineno surf_parse_lineno
19 #define yyout surf_parse_out
20 #define yyrestart surf_parse_restart
21 #define yytext surf_parse_text
22 #define yywrap surf_parse_wrap
23 #define yyalloc surf_parse_alloc
24 #define yyrealloc surf_parse_realloc
25 #define yyfree surf_parse_free
26
27 #define FLEX_SCANNER
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 39
31 #if YY_FLEX_SUBMINOR_VERSION > 0
32 #define FLEX_BETA
33 #endif
34
35 /* First, we deal with  platform-specific or compiler-specific issues. */
36
37 /* begin standard C headers. */
38 #include <stdio.h>
39 #include <string.h>
40 #include <errno.h>
41 #include <stdlib.h>
42
43 /* end standard C headers. */
44
45 /* flex integer type definitions */
46
47 #ifndef FLEXINT_H
48 #define FLEXINT_H
49
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
51
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
53
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55  * if you want the limit (max/min) macros for int types. 
56  */
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
59 #endif
60
61 #include <inttypes.h>
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 #else
69 typedef signed char flex_int8_t;
70 typedef short int flex_int16_t;
71 typedef int flex_int32_t;
72 typedef unsigned char flex_uint8_t; 
73 typedef unsigned short int flex_uint16_t;
74 typedef unsigned int flex_uint32_t;
75
76 /* Limits of integral types. */
77 #ifndef INT8_MIN
78 #define INT8_MIN               (-128)
79 #endif
80 #ifndef INT16_MIN
81 #define INT16_MIN              (-32767-1)
82 #endif
83 #ifndef INT32_MIN
84 #define INT32_MIN              (-2147483647-1)
85 #endif
86 #ifndef INT8_MAX
87 #define INT8_MAX               (127)
88 #endif
89 #ifndef INT16_MAX
90 #define INT16_MAX              (32767)
91 #endif
92 #ifndef INT32_MAX
93 #define INT32_MAX              (2147483647)
94 #endif
95 #ifndef UINT8_MAX
96 #define UINT8_MAX              (255U)
97 #endif
98 #ifndef UINT16_MAX
99 #define UINT16_MAX             (65535U)
100 #endif
101 #ifndef UINT32_MAX
102 #define UINT32_MAX             (4294967295U)
103 #endif
104
105 #endif /* ! C99 */
106
107 #endif /* ! FLEXINT_H */
108
109 #ifdef __cplusplus
110
111 /* The "const" storage-class-modifier is valid. */
112 #define YY_USE_CONST
113
114 #else   /* ! __cplusplus */
115
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
118
119 #define YY_USE_CONST
120
121 #endif  /* defined (__STDC__) */
122 #endif  /* ! __cplusplus */
123
124 #ifdef YY_USE_CONST
125 #define yyconst const
126 #else
127 #define yyconst
128 #endif
129
130 /* Returned upon end-of-file. */
131 #define YY_NULL 0
132
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134  * integer for use as an array index.  If the signed char is negative,
135  * we want to instead treat it as an 8-bit unsigned char, hence the
136  * double cast.
137  */
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
139
140 /* Enter a start condition.  This macro really ought to take a parameter,
141  * but we do it the disgusting crufty way forced on us by the ()-less
142  * definition of BEGIN.
143  */
144 #define BEGIN (yy_start) = 1 + 2 *
145
146 /* Translate the current start state into a value that can be later handed
147  * to BEGIN to return to the state.  The YYSTATE alias is for lex
148  * compatibility.
149  */
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
152
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
155
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
158
159 #define YY_END_OF_BUFFER_CHAR 0
160
161 /* Size of default input buffer. */
162 #ifndef YY_BUF_SIZE
163 #ifdef __ia64__
164 /* On IA-64, the buffer size is 16k, not 8k.
165  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
166  * Ditto for the __ia64__ case accordingly.
167  */
168 #define YY_BUF_SIZE 32768
169 #else
170 #define YY_BUF_SIZE 16384
171 #endif /* __ia64__ */
172 #endif
173
174 /* The state buf must be large enough to hold one state per character in the main buffer.
175  */
176 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
177
178 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
179 #define YY_TYPEDEF_YY_BUFFER_STATE
180 typedef struct yy_buffer_state *YY_BUFFER_STATE;
181 #endif
182
183 #ifndef YY_TYPEDEF_YY_SIZE_T
184 #define YY_TYPEDEF_YY_SIZE_T
185 typedef size_t yy_size_t;
186 #endif
187
188 extern yy_size_t surf_parse_leng;
189
190 extern FILE *surf_parse_in, *surf_parse_out;
191
192 #define EOB_ACT_CONTINUE_SCAN 0
193 #define EOB_ACT_END_OF_FILE 1
194 #define EOB_ACT_LAST_MATCH 2
195
196     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
197      *       access to the local variable yy_act. Since yyless() is a macro, it would break
198      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
199      *       One obvious solution it to make yy_act a global. I tried that, and saw
200      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
201      *       normally declared as a variable-- so it is not worth it.
202      */
203     #define  YY_LESS_LINENO(n) \
204             do { \
205                 unsigned int yyl;\
206                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
207                     if ( surf_parse_text[yyl] == '\n' )\
208                         --surf_parse_lineno;\
209             }while(0)
210     #define YY_LINENO_REWIND_TO(dst) \
211             do {\
212                 const char *p;\
213                 for ( p = yy_cp-1; p >= (dst); --p)\
214                     if ( *p == '\n' )\
215                         --surf_parse_lineno;\
216             }while(0)
217     
218 /* Return all but the first "n" matched characters back to the input stream. */
219 #define yyless(n) \
220         do \
221                 { \
222                 /* Undo effects of setting up surf_parse_text. */ \
223         int yyless_macro_arg = (n); \
224         YY_LESS_LINENO(yyless_macro_arg);\
225                 *yy_cp = (yy_hold_char); \
226                 YY_RESTORE_YY_MORE_OFFSET \
227                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
228                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
229                 } \
230         while ( 0 )
231
232 #define unput(c) yyunput( c, (yytext_ptr)  )
233
234 #ifndef YY_STRUCT_YY_BUFFER_STATE
235 #define YY_STRUCT_YY_BUFFER_STATE
236 struct yy_buffer_state
237         {
238         FILE *yy_input_file;
239
240         char *yy_ch_buf;                /* input buffer */
241         char *yy_buf_pos;               /* current position in input buffer */
242
243         /* Size of input buffer in bytes, not including room for EOB
244          * characters.
245          */
246         yy_size_t yy_buf_size;
247
248         /* Number of characters read into yy_ch_buf, not including EOB
249          * characters.
250          */
251         yy_size_t yy_n_chars;
252
253         /* Whether we "own" the buffer - i.e., we know we created it,
254          * and can realloc() it to grow it, and should free() it to
255          * delete it.
256          */
257         int yy_is_our_buffer;
258
259         /* Whether this is an "interactive" input source; if so, and
260          * if we're using stdio for input, then we want to use getc()
261          * instead of fread(), to make sure we stop fetching input after
262          * each newline.
263          */
264         int yy_is_interactive;
265
266         /* Whether we're considered to be at the beginning of a line.
267          * If so, '^' rules will be active on the next match, otherwise
268          * not.
269          */
270         int yy_at_bol;
271
272     int yy_bs_lineno; /**< The line count. */
273     int yy_bs_column; /**< The column count. */
274     
275         /* Whether to try to fill the input buffer when we reach the
276          * end of it.
277          */
278         int yy_fill_buffer;
279
280         int yy_buffer_status;
281
282 #define YY_BUFFER_NEW 0
283 #define YY_BUFFER_NORMAL 1
284         /* When an EOF's been seen but there's still some text to process
285          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
286          * shouldn't try reading from the input source any more.  We might
287          * still have a bunch of tokens to match, though, because of
288          * possible backing-up.
289          *
290          * When we actually see the EOF, we change the status to "new"
291          * (via surf_parse_restart()), so that the user can continue scanning by
292          * just pointing surf_parse_in at a new input file.
293          */
294 #define YY_BUFFER_EOF_PENDING 2
295
296         };
297 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
298
299 /* Stack of input buffers. */
300 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
301 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
302 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
303
304 /* We provide macros for accessing buffer states in case in the
305  * future we want to put the buffer states in a more general
306  * "scanner state".
307  *
308  * Returns the top of the stack, or NULL.
309  */
310 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
311                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
312                           : NULL)
313
314 /* Same as previous macro, but useful when we know that the buffer stack is not
315  * NULL or when we need an lvalue. For internal use only.
316  */
317 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
318
319 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
320 static char yy_hold_char;
321 static yy_size_t yy_n_chars;            /* number of characters read into yy_ch_buf */
322 yy_size_t surf_parse_leng;
323
324 /* Points to current character in buffer. */
325 static char *yy_c_buf_p = (char *) 0;
326 static int yy_init = 0;         /* whether we need to initialize */
327 static int yy_start = 0;        /* start state number */
328
329 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
330  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
331  */
332 static int yy_did_buffer_switch_on_eof;
333
334 void surf_parse_restart (FILE *input_file  );
335 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
336 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
337 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
338 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
339 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
340 void surf_parse_pop_buffer_state (void );
341
342 static void surf_parse_ensure_buffer_stack (void );
343 static void surf_parse__load_buffer_state (void );
344 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
345
346 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
347
348 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
349 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
350 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,yy_size_t len  );
351
352 void *surf_parse_alloc (yy_size_t  );
353 void *surf_parse_realloc (void *,yy_size_t  );
354 void surf_parse_free (void *  );
355
356 #define yy_new_buffer surf_parse__create_buffer
357
358 #define yy_set_interactive(is_interactive) \
359         { \
360         if ( ! YY_CURRENT_BUFFER ){ \
361         surf_parse_ensure_buffer_stack (); \
362                 YY_CURRENT_BUFFER_LVALUE =    \
363             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
364         } \
365         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
366         }
367
368 #define yy_set_bol(at_bol) \
369         { \
370         if ( ! YY_CURRENT_BUFFER ){\
371         surf_parse_ensure_buffer_stack (); \
372                 YY_CURRENT_BUFFER_LVALUE =    \
373             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
374         } \
375         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
376         }
377
378 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
379
380 /* Begin user sect3 */
381
382 #define surf_parse_wrap() 1
383 #define YY_SKIP_YYWRAP
384
385 typedef unsigned char YY_CHAR;
386
387 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
388
389 typedef int yy_state_type;
390
391 extern int surf_parse_lineno;
392
393 int surf_parse_lineno = 1;
394
395 extern char *surf_parse_text;
396 #define yytext_ptr surf_parse_text
397
398 static yy_state_type yy_get_previous_state (void );
399 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
400 static int yy_get_next_buffer (void );
401 static void yy_fatal_error (yyconst char msg[]  );
402
403 /* Done after the current pattern has been matched and before the
404  * corresponding action - sets up surf_parse_text.
405  */
406 #define YY_DO_BEFORE_ACTION \
407         (yytext_ptr) = yy_bp; \
408         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
409         (yy_hold_char) = *yy_cp; \
410         *yy_cp = '\0'; \
411         (yy_c_buf_p) = yy_cp;
412
413 #define YY_NUM_RULES 561
414 #define YY_END_OF_BUFFER 562
415 /* This struct is not used in this scanner,
416    but its presence is necessary. */
417 struct yy_trans_info
418         {
419         flex_int32_t yy_verify;
420         flex_int32_t yy_nxt;
421         };
422 static yyconst flex_int16_t yy_accept[3330] =
423     {   0,
424         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
427         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
428         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
434
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
437         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
438         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
439         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
440         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
441         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
442         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
443         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
444         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
445
446         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
447         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
448         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
449         0,    0,    0,    0,    0,    0,    0,    0,  562,  560,
450        15,   10,   10,   15,   15,  540,   10,  540,    5,    6,
451         5,    8,    9,    8,  556,  548,  549,  557,  554,  557,
452       555,  559,  548,  549,  559,   40,   10,   40,   40,   40,
453        38,   40,   40,   44,   10,   44,   44,  560,   44,  560,
454       560,   44,   61,   10,   61,   61,   61,   59,   61,   61,
455        61,   65,   10,   65,  560,   65,   72,   10,   72,   72,
456
457        72,   70,   72,   76,   10,   76,   87,   10,   87,   87,
458        87,   85,   87,   87,   87,   91,   10,   91,  104,   10,
459       104,  104,  104,  102,  104,  104,  104,  108,   10,  108,
460       108,  117,   10,  117,  117,  117,  115,  117,  117,  121,
461        10,  121,  121,  140,   10,  140,  140,  140,  138,  140,
462       140,  140,  140,  140,  140,  144,   10,  144,  199,   10,
463       199,  199,  199,  197,  199,  199,  199,  199,  199,  199,
464       199,  199,  199,  203,   10,  203,  203,  210,   10,  210,
465       210,  210,  208,  210,  214,   10,  214,  214,  233,   10,
466       233,  233,  233,  231,  233,  233,  233,  233,  233,  237,
467
468        10,  237,  560,  237,  248,   10,  248,  248,  248,  246,
469       248,  248,  248,  252,   10,  252,  259,   10,  259,  259,
470       259,  257,  259,  263,   10,  263,  560,  263,  286,   10,
471       286,  286,  286,  284,  286,  286,  286,  286,  290,   10,
472       290,  290,  303,   10,  303,  303,  303,  301,  303,  303,
473       307,   10,  307,  316,   10,  316,  316,  316,  314,  316,
474       316,  320,   10,  320,  329,   10,  329,  329,  329,  327,
475       329,  329,  333,   10,  333,  354,   10,  354,  354,  354,
476       352,  354,  354,  354,  354,  354,  354,  358,   10,  358,
477       560,  365,   10,  365,  365,  365,  363,  365,  369,   10,
478
479       369,  369,  560,  369,  560,  369,  386,   10,  386,  386,
480       386,  384,  386,  386,  386,  386,  386,  390,   10,  390,
481       560,  390,  399,   10,  399,  399,  399,  397,  399,  399,
482       403,   10,  403,  430,   10,  430,  430,  430,  428,  430,
483       430,  430,  430,  430,  434,   10,  434,  447,   10,  447,
484       447,  447,  445,  447,  447,  451,   10,  451,  451,  460,
485        10,  460,  460,  460,  458,  460,  460,  464,   10,  464,
486       479,   10,  479,  479,  479,  477,  479,  479,  479,  479,
487       483,   10,  483,  483,  498,   10,  498,  498,  498,  496,
488       498,  498,  498,  498,  502,   10,  502,  560,  502,  513,
489
490        10,  513,  513,  513,  511,  513,  513,  513,  557,  556,
491       535,   10,  535,  535,  535,  533,  535,  535,  535,  539,
492        10,  539,   10,    0,    2,    2,    0,    4,    7,  551,
493       550,    0,    0,    0,    0,    0,    0,   39,   41,   41,
494        41,    0,    0,    0,    0,    0,    0,    0,    0,    0,
495         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
496         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
497         0,   60,   62,   62,   62,   62,   62,    0,    0,   71,
498        73,   73,    0,   86,   88,   88,   88,   88,    0,  103,
499       105,  105,  105,  105,    0,  116,  118,  118,  118,    0,
500
501       139,  141,  141,  141,  141,  141,  141,  141,  141,    0,
502       198,  200,  200,  200,  200,  200,  200,  200,  200,  200,
503       200,  200,  200,  200,  200,  200,  200,  200,    0,  209,
504       211,  211,    0,  232,  234,  234,  234,  234,  234,  234,
505       234,    0,    0,  247,  249,  249,  249,  249,    0,  258,
506       260,  260,    0,    0,  285,  287,  287,  287,  287,  287,
507       287,    0,  302,  304,  304,  304,    0,  315,  317,  317,
508       317,    0,  328,  330,  330,  330,    0,  353,  355,  355,
509       355,  355,  355,  355,  355,  355,    0,    0,  364,  366,
510       366,    0,    0,    0,    0,    0,    0,  385,  387,  387,
511
512       387,  387,  387,  387,    0,    0,  398,  400,  400,  400,
513         0,  429,  431,  431,  431,  431,  431,  431,  431,  431,
514       431,    0,  446,  448,  448,  448,  448,    0,  459,  461,
515       461,  461,    0,  478,  480,  480,  480,  480,  480,    0,
516       497,  499,  499,  499,  499,  499,    0,    0,  512,  514,
517       514,  514,  514,    0,    0,    0,  534,  536,  536,  536,
518       536,    0,    0,    0,    0,    0,    3,    0,    0,    0,
519         0,    0,    0,    0,  558,    0,    0,   41,    0,    0,
520        17,    0,    0,    0,    0,    0,    0,    0,    0,    0,
521         0,    0,    0,    0,    0,    0,    0,    0,    0,   16,
522
523         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
524         0,   16,    0,    0,   62,   62,   62,   62,    0,    0,
525         0,   73,    0,    0,   88,    0,    0,   88,    0,    0,
526       105,  105,  105,    0,    0,  118,  118,    0,    0,    0,
527         0,    0,    0,  141,  141,  141,  141,  141,    0,    0,
528       200,  200,    0,    0,  200,    0,    0,  200,  200,  200,
529       200,  200,  200,  200,  200,  200,  200,  200,    0,    0,
530         0,    0,    0,    0,  234,  234,  234,    0,    0,  234,
531       234,  234,    0,    0,    0,  249,    0,    0,    0,    0,
532         0,    0,  260,    0,    0,   17,  287,    0,    0,  287,
533
534       287,  287,    0,    0,  304,    0,    0,    0,    0,    0,
535         0,  317,    0,    0,  330,  330,    0,    0,  355,  355,
536       355,    0,    0,  355,  355,  355,    0,    0,    0,  366,
537         0,    0,    0,    0,    0,  387,  387,  387,  387,  387,
538         0,    0,    0,    0,    0,  400,    0,    0,  431,    0,
539         0,  431,  431,  431,  431,  431,  431,    0,    0,  448,
540       448,  448,    0,    0,  461,    0,    0,    0,    0,  480,
541       480,    0,    0,  480,    0,    0,  499,    0,    0,  499,
542       499,    0,    0,    0,  514,    0,    0,  514,    0,    0,
543         0,  553,  536,  536,  536,    0,    0,    0,   14,    1,
544
545         0,    0,  546,    0,    0,    0,  543,  542,    0,    0,
546        19,   18,   41,    0,    0,   43,    0,   17,    0,    0,
547         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
548         0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
549         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
550         0,    0,    0,    0,    0,   62,   62,    0,    0,   62,
551         0,    0,   64,    0,    0,   73,    0,    0,   75,    0,
552        88,    0,   82,   81,   88,    0,    0,   90,    0,    0,
553         0,  105,  105,    0,    0,    0,    0,  107,    0,    0,
554         0,    0,    0,    0,    0,  120,    0,    0,  125,  124,
555
556         0,  127,  126,    0,    0,  141,  141,  141,  141,    0,
557         0,  143,    0,  200,  200,  200,  200,    0,  158,  157,
558       200,    0,  162,  161,    0,    0,  200,  200,  200,  200,
559       200,  200,  200,  200,  200,  200,    0,    0,  202,    0,
560         0,  207,  206,    0,    0,  213,    0,  234,  234,  234,
561         0,  224,  223,  234,  234,  234,    0,    0,  236,    0,
562         0,  249,    0,  243,  242,    0,  245,  244,    0,    0,
563       251,    0,  260,    0,    0,  262,    0,  287,    0,  271,
564       270,  287,  287,  287,    0,    0,  289,    0,  304,    0,
565       300,  299,    0,    0,  306,    0,    0,  311,  310,  317,
566
567         0,    0,  319,    0,  330,  330,    0,    0,  332,    0,
568       355,  355,  355,  355,    0,  345,  344,    0,    0,  355,
569       355,    0,    0,  357,    0,    0,  366,    0,    0,  368,
570         0,    0,    0,    0,  387,  387,  387,  387,  387,    0,
571         0,  389,    0,    0,    0,  394,  393,  400,    0,    0,
572       402,    0,  431,    0,  415,  414,    0,    0,  431,    0,
573         0,  431,  431,  431,    0,    0,  433,    0,    0,    0,
574         0,    0,  448,    0,    0,  450,    0,  461,    0,  457,
575       456,    0,    0,  463,    0,  480,  480,    0,  474,  473,
576       480,    0,    0,  482,    0,  499,    0,  491,  490,  499,
577
578       499,    0,    0,  501,    0,    0,  514,    0,  508,  507,
579       514,    0,    0,    0,  516,    0,  536,  536,  536,    0,
580         0,  538,    0,    0,    0,  547,  541,    0,    0,   41,
581         0,   42,    0,    0,    0,    0,    0,    0,    0,  216,
582         0,  265,    0,    0,  335,    0,    0,  392,    0,    0,
583         0,    0,  391,    0,    0,    0,    0,    0,  215,    0,
584       264,  334,    0,    0,    0,    0,    0,    0,   48,   47,
585        62,   62,    0,   54,   53,   62,    0,  264,   73,    0,
586        88,   88,    0,    0,   95,   94,  105,  105,    0,  101,
587       100,    0,    0,  112,  111,    0,  114,  113,    0,    0,
588
589       129,  128,  141,  141,  141,  141,    0,  200,  200,  200,
590       200,    0,    0,    0,  164,  163,  200,  200,  200,  200,
591       200,  200,  200,  200,  200,  200,  200,    0,    0,  234,
592       234,    0,    0,  234,  234,  234,    0,    0,    0,    0,
593         0,    0,    0,    0,  287,  287,  287,  287,    0,  304,
594         0,  317,    0,    0,    0,  330,    0,  355,  355,  355,
595       355,    0,  347,  346,  355,  355,    0,    0,  366,    0,
596         0,    0,    0,  387,    0,    0,  387,  387,  387,    0,
597         0,  400,    0,  431,    0,  417,  416,    0,    0,    0,
598       421,  420,  431,    0,    0,  431,    0,    0,  438,  437,
599
600         0,  440,  439,  448,    0,  461,    0,  480,  480,  480,
601         0,  499,  499,    0,    0,    0,    0,    0,    0,  514,
602         0,    0,  536,    0,    0,  536,    0,    0,    0,    0,
603        12,    0,  544,  545,   41,    0,    0,    0,    0,    0,
604         0,    0,  216,    0,    0,  265,    0,    0,  321,  335,
605         0,    0,  392,    0,  436,    0,  504,  391,    0,    0,
606         0,    0,    0,  215,    0,    0,  264,  334,  435,    0,
607       503,  436,  435,   62,   62,   62,    0,    0,    0,    0,
608         0,   88,   88,    0,  105,  105,    0,    0,  141,  141,
609         0,    0,  141,    0,  200,    0,    0,  200,  200,    0,
610
611       160,  159,  200,  200,  200,  200,  200,  200,    0,    0,
612       200,  200,  200,  200,    0,    0,  234,  234,    0,  222,
613       221,  234,    0,    0,  234,    0,  322,    0,  241,  240,
614         0,    0,  256,  255,    0,  287,  287,  287,  287,    0,
615       304,    0,    0,    0,    0,    0,  324,  323,  330,    0,
616       355,    0,    0,  355,  355,    0,    0,  355,    0,    0,
617       366,    0,    0,    0,    0,  387,    0,  375,  374,  387,
618       387,  387,    0,    0,    0,    0,    0,  431,    0,  419,
619       418,  431,    0,  425,  424,  431,    0,  448,    0,  461,
620         0,  480,  480,  480,    0,  499,    0,    0,    0,  495,
621
622       494,    0,    0,    0,  506,  505,  514,    0,    0,  536,
623         0,    0,    0,    0,    0,    0,    0,    0,    0,   11,
624        41,    0,    0,    0,    0,    0,    0,  204,    0,    0,
625         0,    0,  321,    0,    0,  404,  436,  453,    0,  504,
626         0,    0,    0,    0,    0,    0,    0,    0,  435,  452,
627         0,  503,    0,    0,    0,    0,    0,   62,    0,    0,
628         0,   69,   68,    0,   88,   88,    0,    0,    0,    0,
629         0,    0,    0,    0,    0,  141,    0,  135,  134,    0,
630         0,    0,  200,    0,  150,  149,    0,    0,  200,  200,
631       200,    0,    0,  200,  200,  200,    0,  184,  183,  200,
632
633         0,    0,  200,  200,    0,    0,  234,  234,    0,    0,
634         0,  228,  227,  234,    0,  235,  322,    0,    0,  287,
635       287,  287,  287,    0,  288,  304,    0,    0,  313,  312,
636         0,  330,    0,  355,    0,  339,  338,    0,    0,  355,
637         0,  349,  348,  355,    0,  356,    0,  366,    0,  205,
638         0,  405,  387,  387,  387,  387,    0,    0,    0,  396,
639       395,    0,  401,  431,  431,  431,    0,  448,    0,  461,
640         0,    0,    0,  480,    0,    0,    0,  499,    0,  493,
641       492,    0,    0,  514,    0,    0,  536,    0,    0,    0,
642         0,    0,    0,    0,    0,    0,  532,  531,    0,    0,
643
644         0,    0,    0,    0,   46,    0,    0,    0,    0,  123,
645       146,  204,    0,  254,    0,    0,    0,  370,  404,  453,
646       466,    0,   45,    0,    0,    0,  122,  145,    0,  253,
647       452,  465,    0,    0,   50,   49,    0,   52,   51,   62,
648         0,    0,    0,   88,    0,    0,    0,    0,   97,   96,
649         0,   99,   98,    0,    0,    0,  131,  130,    0,    0,
650         0,  137,  136,    0,  200,    0,  152,  151,  200,  200,
651       200,    0,  172,  171,    0,    0,  200,  200,  200,    0,
652       188,  187,  200,  200,    0,    0,  234,  234,    0,  226,
653       225,  234,    0,    0,  287,    0,    0,  287,  287,  287,
654
655       304,    0,    0,  330,    0,  331,  355,    0,  341,  340,
656       355,  355,    0,    0,    0,    0,  205,  371,  405,  387,
657       387,  387,  387,    0,    0,  431,    0,    0,  431,    0,
658       448,    0,  449,  461,    0,    0,  468,  467,    0,    0,
659       480,    0,  476,  475,    0,    0,    0,  499,    0,    0,
660       514,    0,    0,  515,    0,    0,    0,    0,    0,    0,
661         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
662         0,    0,    0,   46,   66,   78,    0,    0,  123,  146,
663         0,  254,  291,    0,  359,  370,  466,    0,    0,   45,
664        77,    0,    0,  122,  145,    0,  253,  465,    0,    0,
665
666        62,    0,  292,    0,   88,    0,   84,   83,    0,    0,
667         0,    0,  133,  132,    0,  200,  200,  200,  200,    0,
668       174,  173,  200,  200,  200,  200,    0,    0,    0,    0,
669       212,  234,  234,  234,    0,    0,  287,    0,  273,  272,
670       287,  287,  287,  304,    0,    0,  330,  355,  355,  355,
671       360,    0,  362,  361,    0,  371,    0,    0,  387,  387,
672       387,    0,   67,  431,    0,  423,  422,  431,    0,  432,
673       448,  461,    0,  462,    0,  470,  469,  480,    0,    0,
674       487,  486,  499,    0,    0,  514,  552,    0,  520,  519,
675         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
676
677         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
678         0,    0,    0,    0,   66,   78,    0,    0,  239,  291,
679         0,  359,    0,    0,   77,    0,    0,  238,    0,    0,
680        62,    0,   63,  292,    0,    0,    0,    0,    0,    0,
681         0,  142,  200,  200,  200,  200,  200,    0,    0,  200,
682       200,  200,    0,    0,    0,    0,  201,  234,  234,  234,
683         0,    0,  261,    0,    0,  287,  287,  287,  287,    0,
684         0,    0,    0,    0,    0,  355,  355,  355,  360,    0,
685         0,  373,  372,    0,    0,  387,  387,    0,  388,   67,
686         0,    0,  431,  448,  461,  480,    0,  481,  499,    0,
687
688         0,  514,    0,    0,    0,    0,    0,    0,    0,    0,
689         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
690         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
691       239,  308,    0,    0,    0,    0,  238,    0,    0,   62,
692         0,   74,    0,   80,   79,    0,   89,    0,    0,  200,
693       200,  200,  200,  200,    0,  176,  175,  200,    0,    0,
694       200,    0,    0,    0,    0,  234,  234,    0,    0,    0,
695         0,  267,  266,  287,  287,  287,    0,    0,    0,    0,
696         0,    0,  305,    0,    0,  326,  325,  355,  355,    0,
697         0,    0,  367,    0,  377,  376,    0,    0,    0,    0,
698
699         0,    0,    0,  431,  448,  461,  480,  499,    0,  309,
700       514,    0,    0,    0,    0,    0,    0,    0,    0,    0,
701         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
702         0,    0,    0,    0,    0,    0,    0,    0,  110,  308,
703         0,    0,    0,  109,    0,    0,    0,    0,    0,    0,
704       200,  200,  200,    0,    0,  200,  200,    0,  186,  185,
705       200,    0,    0,    0,    0,    0,    0,  234,    0,    0,
706         0,  230,  229,    0,  250,  287,  287,  287,    0,  283,
707       282,    0,    0,    0,    0,    0,    0,    0,  355,    0,
708         0,    0,  351,  350,    0,    0,    0,    0,  383,  382,
709
710         0,    0,    0,    0,    0,    0,  431,    0,    0,    0,
711         0,  480,  499,    0,  309,    0,    0,    0,    0,    0,
712         0,  524,    0,    0,    0,    0,  523,    0,    0,    0,
713         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
714         0,    0,    0,    0,  110,  485,    0,    0,  109,  484,
715         0,    0,    0,    0,    0,    0,  200,  200,    0,    0,
716         0,  168,  167,    0,    0,  200,  200,    0,    0,    0,
717         0,    0,    0,  234,    0,  220,  219,  287,    0,    0,
718       287,    0,    0,    0,    0,    0,    0,    0,  318,  355,
719         0,  343,  342,    0,    0,    0,    0,    0,    0,    0,
720
721         0,    0,    0,    0,    0,  431,    0,    0,    0,    0,
722       455,  454,    0,    0,    0,    0,    0,    0,  510,  509,
723         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
724         0,    0,    0,    0,    0,    0,   21,   29,    0,    0,
725         0,    0,   20,   28,    0,   93,  485,  518,   92,  484,
726       517,    0,    0,    0,    0,    0,    0,  119,  200,  200,
727         0,  166,  165,    0,  170,  169,  200,  200,    0,    0,
728         0,    0,    0,    0,  234,  287,    0,  275,  274,  287,
729         0,    0,  294,    0,    0,  293,  355,    0,    0,    0,
730         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
731
732         0,    0,    0,    0,    0,    0,  472,  471,    0,  489,
733       488,    0,    0,    0,  530,    0,    0,    0,  529,    0,
734         0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
735         0,    0,    0,   22,    0,   93,  518,   92,  517,    0,
736         0,    0,    0,    0,  200,  200,    0,    0,  200,    0,
737       192,    0,    0,  191,    0,  234,    0,    0,    0,    0,
738         0,    0,    0,    0,  355,    0,    0,    0,    0,    0,
739         0,    0,    0,    0,    0,    0,    0,    0,  427,  426,
740         0,    0,    0,    0,    0,  500,    0,    0,    0,    0,
741         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
742
743         0,    0,    0,    0,    0,   58,    0,   57,    0,    0,
744       106,  200,  200,    0,    0,    0,    0,    0,    0,  194,
745         0,  193,  234,    0,  269,  268,    0,    0,    0,  296,
746       298,  295,  297,  355,  379,    0,  378,    0,    0,  413,
747       409,    0,    0,  412,  408,    0,  444,    0,  443,    0,
748       528,    0,    0,  527,    0,    0,    0,  537,    0,    0,
749         0,   12,    0,   12,    0,   33,    0,    0,    0,   31,
750        32,    0,    0,    0,   30,   56,   55,  200,  200,    0,
751         0,    0,    0,    0,  190,  189,    0,    0,  234,    0,
752         0,    0,    0,  355,    0,    0,    0,    0,    0,    0,
753
754       442,  441,  522,  526,  521,  525,    0,    0,    0,    0,
755         0,    0,    0,   25,    0,    0,    0,   24,    0,    0,
756         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
757         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
758         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
759         0,    0,    0,    0,    0,    0,  148,  147,    0,    0,
760         0,    0,    0,    0,    0,    0,    0,  196,  195,    0,
761       218,  217,    0,    0,    0,    0,    0,    0,    0,  337,
762       336,    0,    0,  407,    0,  406,    0,    0,   11,    0,
763         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
764
765         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
766         0,  381,  380,    0,    0,    0,    0,    0,    0,    0,
767         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
768         0,    0,    0,    0,    0,    0,    0,    0,  411,  410,
769         0,    0,   35,    0,    0,   34,    0,    0,    0,    0,
770         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
771         0,    0,    0,    0,    0,   27,    0,   26,    0,    0,
772         0,    0,    0,    0,  178,    0,    0,  177,    0,    0,
773       277,    0,    0,  276,    0,   37,   36,    0,    0,    0,
774         0,  182,    0,  181,    0,  279,    0,  278,    0,    0,
775
776         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
777       154,    0,  153,    0,    0,    0,    0,    0,    0,  156,
778       155,  180,  179,  281,  280,    0,    0,    0,    0,    0,
779         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
780         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
781         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
782         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
783         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
784         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
785         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
786
787         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
788         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
789         0,    0,    0,    0,    0,    0,    0,   13,    0
790     } ;
791
792 static yyconst flex_int32_t yy_ec[256] =
793     {   0,
794         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
795         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
796         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
797         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
798         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
799        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
800        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
801        28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
802        31,   38,   39,   40,   41,   42,   43,   44,   45,   31,
803        46,    1,   47,    1,   48,    1,   49,   50,   51,   52,
804
805        53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
806        63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
807        73,   74,    1,    1,    1,    1,    1,    1,    1,    1,
808         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
809         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
810         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
811         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
812         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
813         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
814         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
815
816         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
817         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
818         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
819         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
820         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
821         1,    1,    1,    1,    1
822     } ;
823
824 static yyconst flex_int32_t yy_meta[75] =
825     {   0,
826         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
827         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
828         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
829         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
830         5,    5,    5,    5,    5,    1,    1,    5,    9,    9,
831         9,    9,    9,    9,    5,    5,    5,    5,    5,    5,
832         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
833         5,    5,    5,    5
834     } ;
835
836 static yyconst flex_int16_t yy_base[3809] =
837     {   0,
838         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
839        14,   17,   33,   36,   49,   55,   45,   61,  108,  174,
840        66,   72,   75,   78,   83,  128,  131,  134,  138,  141,
841       194,  197,  200,  204,  207,  224,  230,  233,  241,  250,
842       268,  335,  288,  291,  294,  298,  301,  355,  358,  361,
843       402,  472,  365,  368,  542,  602,  422,  425,  662,  729,
844       428,  432,  435,  452,  492,  495,  498,  502,  796,  863,
845       505,  522,  562,  565,  568,  572,  575,  622,  930,  997,
846       625,  628, 1064,    0,  632,  635,  682,  685,  688,  692,
847       695,  749, 1138, 1195,  752,  755,  759,  762,  816,  819,
848
849       822,  826, 1252, 1319,  829,  883,  886,  889,  893,  896,
850       950,  953, 1386, 1455,  956,  960, 1524, 1578,  963, 1017,
851      1020, 1023, 1027, 1030, 1158, 1161, 1632, 1699, 1164, 1168,
852      1171, 1215, 1218, 1221, 1225, 1228, 1766, 1823, 1272, 1275,
853      1880, 1950, 1278, 1282, 2020, 2087, 1339, 1342, 2154, 2221,
854      1345, 1349, 1406, 1409, 2288, 2358, 1412, 1416, 1419, 1475,
855      1478, 1481, 1485, 1488, 1544, 1547, 1550, 1554, 1557, 1598,
856      1601, 1604, 1608, 1611, 1652, 1655, 2428, 2495, 1658, 1662,
857      1665, 1719, 1722, 1725, 1729, 1732, 2562, 2632, 1786, 1789,
858      2702, 2769, 1792, 1796, 2836, 2903, 1799, 1843, 1846, 1849,
859
860      1853, 1856, 1900, 1903, 2970, 3027, 1906, 1910, 3084, 3152,
861      1913, 1930, 1970, 1973, 1976, 1980, 1983, 2000, 3220, 3287,
862      2040, 2043, 2046, 2050, 2053, 2107, 2110, 2113, 3354, 3418,
863      2132, 2134, 3482, 3550, 2174, 2180,    0,    0, 9050,11804,
864     11804,   95,  100,   29,   41,11804,  103,   51,11804,11804,
865      9037,11804,11804, 9026,11804, 9041, 9037,  164,11804,11804,
866     11804,11804, 9035, 9035, 8988,11804,  158, 9014,    0,  142,
867     11804, 8981, 8965,11804,  164, 3614, 8963, 3678, 2187, 1238,
868      9014,   31,11804,  253, 9003,    0,  143,11804, 8955, 8950,
869        84,11804,  258,  253, 9004, 8955,11804,  322, 8994,    0,
870
871       148,11804, 8962,11804,  325,  218,11804,  328, 8990,    0,
872       242,11804, 8960, 8952, 8954,11804,  389,  373,11804,  393,
873      8982,    0,  245,11804, 8932, 8927, 8931,11804,  396, 8980,
874        11,11804,  455, 8971,    0,  313,11804, 8923, 8921,11804,
875       458, 8974,   79,11804,  461, 8965,    0,  446,11804, 8909,
876      8927, 8929, 8909, 8925,   19,11804,  525,  509,11804,  529,
877      8953,    0,  447,11804, 8898,  101, 8904, 8914,  317, 8897,
878       258,  651, 8899,11804,  532, 8949,  246,11804,  535, 8936,
879         0,  576,11804, 8903,11804,  592, 8942,  287,11804,  652,
880      8931,    0,  577,11804, 8880, 8886, 8892, 8876,  320,11804,
881
882       719,  112, 8881,  377,11804,  722, 8919,    0,  579,11804,
883      8875, 8885, 8868,11804,  783,  639,11804,  786, 8911,    0,
884       580,11804, 8873,11804,  789, 2129, 8915,  629,11804,  847,
885      8906,    0,  637,11804, 8876, 8868, 8870,  102,11804,  850,
886      8906,  704,11804,  853, 8895,    0,  640,11804, 8857, 8861,
887     11804,  856,  706,11804,  914, 8888,    0,  707,11804, 8855,
888      8857,11804,  917,  901,11804,  921, 8883,    0,  773,11804,
889      8853, 8833,11804,  924,  967,11804,  980, 8876,    0,  774,
890     11804, 8825, 8823, 8828, 8838, 8840,  447,11804,  989, 1034,
891       841,11804, 1047, 8864,    0,  840,11804, 8822,11804, 1056,
892
893      1305,  748, 1126,  771, 8810,  815,11804, 1245, 8853,    0,
894       964,11804, 8799, 8804, 8809, 8799, 8792,11804, 1308,  454,
895      8810,  882,11804, 1311, 8834,    0,  965,11804, 8801, 8803,
896     11804, 1370, 1423,11804, 1375, 8827,    0,  968,11804, 8793,
897      8793, 1134, 8791,  137,11804, 1378, 1424,11804, 1437, 8819,
898         0, 1031,11804, 8771, 1115,11804, 1444, 8821,  204,11804,
899      1447, 8812,    0, 1032,11804, 8768, 8774,11804, 1450, 1492,
900     11804, 1506, 8805,    0, 1035,11804, 8756, 8756, 8766, 8744,
901     11804, 1512, 8800,  949,11804, 1515, 8791,    0, 1173,11804,
902      8747, 8753, 8741, 8746,11804, 1518,  272, 8737, 1181,11804,
903
904      1682, 8777,    0, 1230,11804, 8739, 8739, 8737, 1669, 8742,
905     11804, 1691, 8764,    0, 1284,11804, 8723, 8725, 8711,11804,
906      1694, 1736, 1749,  408, 8704,11804, 8765, 8750,11804,11804,
907     11804, 1747,  153, 8701, 8700, 8694, 8742,11804,    0, 2120,
908      8692, 8734, 8716, 8688,  328, 1177, 8686, 8686, 8690, 8679,
909      1445,  259, 8673, 8674, 1755, 8696,  396, 1234, 8671, 8671,
910      8671, 1756,  524, 8659, 8660, 8682,  398, 1812,  584,  439,
911       979,11804,    0, 8652, 8671, 8663, 8652, 8690, 8650,11804,
912         0, 8646, 8656,11804,    0, 8638, 2187, 8631, 8648,11804,
913         0, 8625, 8644, 8640, 8096,11804,    0, 8077, 8092, 8092,
914
915     11804,    0, 2241, 2244, 8073, 8087, 8087, 8085, 8083, 8084,
916     11804,    0, 8085, 8084, 2254, 8058, 2308, 8055, 8060, 8050,
917      8058, 8058, 8039, 8054, 8049, 8051, 8040, 8028, 8037,11804,
918         0, 2311, 8035,11804,    0, 8036,  175, 2314, 8007, 8011,
919      8014, 7997, 7989,11804,    0, 7979, 2317, 2320, 7984,11804,
920         0, 7973, 7975, 7991,11804,    0, 7967, 2338, 7944, 7960,
921      7958, 7943,11804,    0, 7934, 2378, 7939,11804,    0, 2381,
922      7931, 7929,11804,    0, 7927, 7920, 7921,11804,    0, 7931,
923      7923, 7907, 2384, 7898, 7900, 7896, 7880, 7882,11804,    0,
924      7870, 7871, 1301, 1813, 1368, 1506, 1869,11804,    0, 7871,
925
926      7857, 7859, 7859, 7857, 7835, 7832,11804,    0, 2387, 7836,
927      7831,11804,    0, 7831, 2390, 7813, 7835, 7820, 7821, 7819,
928      7818, 7802,11804,    0, 7780, 7796, 7784, 7774,11804,    0,
929      7775, 2408, 7771,11804,    0, 7767, 7759, 2448, 7738, 7733,
930     11804,    0, 7737, 2451, 7745, 7712, 7708, 7711,11804,    0,
931      7712, 2454, 7701,  512, 7698, 7743,11804,    0, 7708, 7698,
932      7709, 7688, 7735, 7743, 1271, 7678,11804, 1925,    0, 7674,
933      7673, 7714, 7711, 7659,11804, 2457, 2006, 7652, 2192, 2516,
934      2077, 7656, 7659, 7640, 7653, 7632, 7628, 7620, 7631, 7618,
935       860, 7626, 7628, 7606, 7606, 7569, 7573, 7583, 7564, 2081,
936
937      7568, 7554, 7558, 7538, 7530, 7545, 7532, 7533, 7514, 7515,
938      7528, 2142, 7502, 7497, 2460, 2526, 2519, 2529, 2262, 2582,
939      7493, 7485, 2523, 2592, 7500, 2585, 2341, 7490, 2595, 2652,
940      2603, 2666, 2657, 2660, 2663, 2671, 2722, 2725, 2735, 2728,
941      2411, 2748, 2614, 2790, 2798, 2801, 2808, 2865, 2740, 2876,
942      7484, 1939, 2794, 2622, 7483, 2862, 2689, 2868, 7478, 7469,
943      7470, 7459, 7446, 7436, 7444, 7428, 7440, 7413, 2871, 2926,
944      2929, 2819, 2932, 2936, 7418, 7407, 7418, 2939, 2891, 7421,
945      7415, 7386, 2990, 2993, 1266, 7391, 2999, 2957, 3003, 3048,
946      3056, 3059, 7398, 3062, 3106, 2213, 7398, 3109, 3066, 7380,
947
948      7366, 7362, 3112, 3117, 7376, 3121, 3140, 3173, 3185, 3176,
949      3188, 7358, 3180, 3248, 7369, 7355, 3241, 3252, 7358,    3,
950      7348, 3244, 3204, 3255, 7359, 7333, 3310, 3317, 7351, 7331,
951      3320, 3323, 7331, 7329, 7328, 7334, 7314, 7316, 7321, 7307,
952      3374, 3377, 7310, 3383, 3276, 7295, 3386, 3389, 7305, 3438,
953      3343, 3442, 7295, 3447, 7298, 7290, 7287, 3450, 3456, 3504,
954      3507, 3511, 3514, 3517, 7268, 3529, 3401, 3571, 3574, 7275,
955      7255, 3579, 3465, 7268, 3582, 3585, 7245, 3597, 3536, 7258,
956      7257, 3604, 3608, 1306, 7251, 3611, 3636, 7243, 7274, 3629,
957      3648,11804, 7227, 7234, 7233, 3652, 3657, 7259,11804,11804,
958
959       681, 7218,11804, 7259, 7254, 7199,11804,11804, 7180, 3682,
960     11804,11804, 7190, 3690, 3693,11804, 3699, 1761, 7182, 7175,
961      7183, 7192, 7167, 7156, 7162, 7147, 7148, 7148, 7149, 7139,
962      7129, 7122,  718, 7137, 7110, 7110, 7117, 1244, 1941, 7104,
963      7106, 7111, 7102, 7090, 7077, 7083, 7079, 7071, 7058, 7059,
964      7072, 7047, 7045, 3702, 3745, 7045, 7044, 3705, 3753, 7056,
965      3713, 3761,11804, 3764, 7048, 7053, 3767, 3770,11804, 3773,
966      7033, 3776,11804,11804, 7030, 3792, 3795,11804, 3798, 3801,
967      3804, 7024, 7023, 3819, 3823, 3831, 3837,11804, 3840, 3843,
968      3850, 3861, 3864, 3872, 3875,11804, 3879, 3882,11804,11804,
969
970      3894,11804,11804, 3903, 3906, 7024, 7028, 7024, 7011, 3914,
971      3917,11804, 3921, 7000, 6988, 7000, 6992, 3924,11804,11804,
972      3936, 3942,11804,11804, 3950, 3954, 6978, 6982, 6974, 6978,
973      6975, 6965, 6969, 6951, 6945, 1516, 3962, 3970,11804, 3973,
974      3977,11804,11804, 3985, 3992,11804, 3995, 6941, 6943, 3998,
975      4004,11804,11804, 6925, 6940, 6919, 4016, 4019,11804, 4023,
976      6909, 4026, 4029,11804,11804, 4044,11804,11804, 4052, 4056,
977     11804, 4059, 4062, 4065, 4071,11804, 4080, 6889, 4090,11804,
978     11804, 6897, 6900, 6890, 4084, 4099,11804, 4103, 6891, 4106,
979     11804,11804, 4114, 4118,11804, 4125, 4133,11804,11804, 6887,
980
981      4144, 4147,11804, 4150, 4153, 4156, 4159, 4174,11804, 4178,
982      6879, 6875, 6867, 6878, 4182,11804,11804, 4193, 4197, 6869,
983      6867, 4205, 4211,11804, 4214, 6846, 6856, 4217, 4220,11804,
984      4224, 6857, 1566, 6848, 6831, 4239, 6849, 6842, 6821, 4246,
985      4249,11804, 4252, 6819, 4259,11804,11804, 6832, 4272, 4275,
986     11804, 4278, 6818, 4281,11804,11804, 4297, 4300, 4308, 4315,
987      4319, 6831, 4327, 6828, 4333, 4336,11804, 4340, 4345, 4348,
988      4359, 4363, 6826, 4371, 4377,11804, 4380, 6823, 4383,11804,
989     11804, 4391, 4401,11804, 4404, 6810, 6805, 4410,11804,11804,
990      6827, 4423, 4426,11804, 4430, 6802, 4433,11804,11804, 6790,
991
992      4449, 4452, 4455,11804, 4458, 6776, 4461, 4479,11804,11804,
993      4467, 6794, 4487, 4492,11804, 4495, 6747, 4498, 6723, 4502,
994      4506,11804, 4516,  955, 4521,11804,11804, 6737, 6730, 6641,
995      4525,11804, 6628, 6620, 6581, 6552, 6555, 6548, 6557, 2070,
996      6523, 2073, 6530, 6466, 2216, 6359, 6317, 2272, 6238, 6191,
997      6167, 6160, 2281, 6050, 5928, 5904, 5890, 5783, 2350,   20,
998      2420, 2486,   41,   51,  193,  196,  214, 4529,11804,11804,
999       243,  324, 4544,11804,11804,  374, 4552, 2829, 4555, 4558,
1000       387,  466, 4564, 4567,11804,11804,  473,  540, 4577,11804,
1001     11804, 4585, 4588,11804,11804, 4597,11804,11804, 4605, 4608,
1002
1003     11804,11804,  546,  608, 4616,  606, 4626,  653, 4629,  636,
1004       696, 4634, 4638, 4653,11804,11804,  718,  723,  702,  787,
1005       772,  777, 4647,  793,  830,  839,  845, 4661, 4665, 1013,
1006      1097, 4668, 4671, 1116, 4686, 1132, 4689, 1143, 4692, 4695,
1007      4704, 4710, 4714, 4723, 1177, 1187, 1182, 1220, 4728, 1219,
1008      4731, 4734, 4738, 4742, 4760, 1237, 4772, 1305, 4752, 1287,
1009      1302, 4775,11804,11804, 4791, 1314, 4794, 1330, 1322, 4797,
1010      1345, 1372, 1363, 1385, 4800, 4803, 1403, 1429, 1446, 4818,
1011      1434, 4821, 4824, 1451, 4827,11804,11804, 4839, 4843, 4853,
1012     11804,11804, 1474, 4864, 4868, 1487, 4876, 4883,11804,11804,
1013
1014      4891,11804,11804, 1495, 4899, 1510, 4902, 1517, 1512, 1525,
1015      4905, 1532, 4908, 4911, 4914, 4929, 1549, 4932, 4935, 1566,
1016      1598, 4943, 1559, 4950, 4953, 4962, 4970, 1603, 1607, 4973,
1017     11804, 1608,11804,11804, 1576, 1595, 1618, 1609, 1608, 1624,
1018      1634, 1633, 2490, 1631, 1663, 2557, 1679, 1690, 2684, 2762,
1019      1676, 1675, 2965, 1683, 3411, 1699, 3212, 3021, 1687, 1695,
1020      1715, 1744, 1752, 3215, 1746, 1759, 3314, 3476, 4976, 1765,
1021      3618, 4980, 4983, 4994, 4997, 5000, 5003, 1788, 5006, 5025,
1022      5033, 1802, 1789, 5036, 5048, 5055, 5058, 5061, 5066, 5073,
1023      5080, 5087, 5098, 5101, 1813, 5104, 5107, 5116, 1802, 5128,
1024
1025     11804,11804, 1810, 1826, 5136, 1836, 1863, 1864, 5139, 5142,
1026      1866, 5150, 1874, 1870, 5157, 5162, 1880, 1874, 5169,11804,
1027     11804, 5177, 5181, 5184, 1887, 5195, 3644, 5199,11804,11804,
1028      5207, 5214,11804,11804, 5210, 1894, 1874, 1894, 1912, 5229,
1029      1924, 5232, 5235, 5238, 5254, 5257,11804,11804, 1937, 5265,
1030      1942, 5268, 5280, 5273, 1931, 5291, 5294, 1941, 5302, 1937,
1031      1943, 5305, 1956, 1946, 1953, 1953, 5309,11804,11804, 1960,
1032      1959, 1968, 5317, 1998, 5324, 5332, 5327, 1991, 5342,11804,
1033     11804, 2000, 5351,11804,11804, 1992, 5359, 1997, 5362, 2003,
1034      5365, 5369, 5372, 5390, 5393, 2001, 5397, 5401, 5417,11804,
1035
1036     11804, 5425, 2022, 5428,11804,11804, 2021, 2046, 5444, 2035,
1037      5447, 2511, 2975, 5456, 5459, 5467, 2133, 2187, 2234,11804,
1038      5474, 2066, 2058, 2064, 2110, 2059, 2063, 3728, 2073, 2132,
1039      2119, 2124, 5477, 2136, 2143, 5480, 5486, 5492, 2160, 5496,
1040      2199, 2199, 2197, 2239, 2194, 2203, 2223, 2233, 5499, 5502,
1041      2251, 5505, 2274, 5508, 5512, 5520, 5526, 2269, 5534, 2260,
1042      5538,11804,11804, 5546, 2261, 5549, 5553, 5556, 5561, 5574,
1043      5577, 5585, 5588, 5592, 5611, 5619, 5622,11804,11804, 5630,
1044      5633, 5641, 2274, 5644,11804,11804, 5654, 5660, 2275, 2289,
1045      2279, 5668, 5672, 5680, 2289, 2300, 5686,11804,11804, 2292,
1046
1047      5694, 5698, 2285, 2282, 5706, 5712, 2299, 2325, 5715, 5718,
1048      5727,11804,11804, 2338, 5735,11804, 5738, 5741, 5744, 2328,
1049      5747, 2351, 2344, 5750,11804, 2339, 5754, 5769,11804,11804,
1050      5777, 2377, 5780, 2351, 5783,11804,11804, 5800, 5804, 2367,
1051      5812,11804,11804, 2361, 5820,11804, 2353, 5824, 5827, 5830,
1052      2354, 5833, 2363, 2365, 2375, 2408, 5842, 2404, 5846,11804,
1053     11804, 5854,11804, 2406, 5857, 2414, 5861, 2415, 5864, 2428,
1054      5867, 5875, 5889, 5897, 5900, 5904, 5921, 5924, 5928,11804,
1055     11804, 5936, 2414, 2429, 2459, 5944, 5947, 2461, 2449, 2517,
1056      2449, 2489, 2481, 2570, 2487, 5951,11804,11804, 5959, 2526,
1057
1058      2734, 2537, 5965, 5971, 5979, 2467, 2484, 2514, 2493, 5983,
1059      5986, 5990, 2529, 5993, 2539, 2544, 2550, 5996, 5999, 6002,
1060      6006, 2550, 6009, 2561, 2588, 2566, 6012, 6015, 2568, 6018,
1061      6021, 6024, 2585, 6027,11804,11804, 6035,11804,11804, 2606,
1062      6043, 2609, 6046, 2621, 6049, 6053, 6067, 6071,11804,11804,
1063      6079,11804,11804, 6087, 6090, 6095,11804,11804, 6111, 6114,
1064      6129,11804,11804, 6122, 2621, 6137,11804,11804, 2620, 2624,
1065      2646, 6145,11804,11804, 6153, 6156, 2644, 2633, 2639, 6164,
1066     11804,11804, 2651, 6172, 6175, 6178, 2674, 2667, 6183,11804,
1067     11804, 2680, 6197, 6200, 2690, 6203, 6206, 2699, 2692, 2698,
1068
1069      2699, 6222, 6225, 2710, 6228,11804, 2731, 6231,11804,11804,
1070      2727, 2739, 2745, 6247, 6253, 6261, 6265, 6268, 6271, 6274,
1071      6280, 6283, 6292, 6301, 2739, 2748, 6304, 6310, 2769, 6322,
1072      2768, 6326,11804, 2761, 6332, 6335,11804,11804, 6352, 6355,
1073      2766, 6363,11804,11804, 6371, 6374, 6377, 2791, 6385, 2794,
1074      2805, 2817, 6392,11804, 6395, 6398, 2841, 2846, 2846, 2854,
1075      2864, 2857, 2859, 2859, 2866, 2876, 6406, 6413, 2937, 2942,
1076      6416, 3943, 4725, 6425, 6428, 6432, 2860, 2858, 6437, 6440,
1077      2878, 6443, 6446, 2881, 6449, 6452, 6456, 2877, 2885, 6459,
1078      6462, 2885, 2884, 6465, 6468, 2895, 6471, 6474, 2896, 2903,
1079
1080      2962, 6477, 6480, 6483, 6486, 6489,11804,11804, 6497, 6504,
1081      6507, 6510,11804,11804, 6518, 2955, 2960, 2962, 2993, 6526,
1082     11804,11804, 6537, 2957, 2973, 2988, 6542, 6551, 6545, 6560,
1083     11804, 2998, 3014, 3018, 6564, 6569, 6572, 6579,11804,11804,
1084      6575, 6593, 6596, 6599, 6602, 6605, 6625, 3020, 3027, 3028,
1085      6631, 6634,11804,11804, 6643, 6648, 6651, 6656, 6664, 6670,
1086      6673, 6676, 6682, 6691, 6696,11804,11804, 6705, 6709,11804,
1087      3034, 3047, 6712,11804, 6716,11804,11804, 3033, 6731, 6734,
1088     11804,11804, 3034, 6742, 3054, 3050,11804, 6746,11804,11804,
1089      3102, 3089, 3108, 3104, 3112, 3114, 3105, 3121, 3116, 3124,
1090
1091      6754, 6757, 3184, 3192, 3091, 3124, 3142, 3122, 3129, 3136,
1092      3196, 3204, 3199, 3208, 6761, 6764, 3206, 3202, 6767, 6776,
1093      3211, 6779, 3203, 3221, 6782, 3221, 3218, 6785, 3230, 3247,
1094      3250, 6789,11804, 6792, 6795, 6799, 6802, 6810, 6820, 6823,
1095      6829,11804, 3260, 3281, 3269, 3261, 3286, 6832, 6835, 3276,
1096      6843, 3286, 6850, 3355, 3372, 6861,11804, 3273, 3275, 6864,
1097      6867, 6870,11804, 6874, 6892, 3296, 3291, 3293, 6900, 6903,
1098      6906, 6914, 6921, 6925, 6929, 3316, 3329, 6943, 6946, 6949,
1099      6952,11804,11804, 6961, 6964, 6972, 6975, 6979,11804, 6983,
1100      6986, 6994, 7004, 3338, 3349, 3353, 7007,11804, 3370, 7010,
1101
1102      3383, 3375, 3413, 3414, 3428, 3425, 3456, 3455, 3456, 3477,
1103      3474, 3499, 7013, 3584, 3570, 3516, 3456, 3469, 3480, 3484,
1104      3484, 3477, 3480, 3508, 3529, 3533, 3533, 3547, 3554, 3572,
1105      7016, 7022, 3565, 3581, 3572, 3590, 7032, 3593, 3605, 7035,
1106      7038,11804, 7041,11804,11804, 7049,11804, 7053, 7060, 3589,
1107      3603, 3610, 7063, 3605, 7068,11804,11804, 3622, 7081, 7084,
1108      3619, 3689, 3653, 3703, 3654, 3625, 7092, 7095, 7099, 7115,
1109      7118,11804,11804, 3655, 3665, 3663, 7127, 7130, 7138, 3999,
1110      4089, 7146,11804, 7149, 7152,11804,11804, 3653, 7160, 7168,
1111      7171, 7179,11804, 7182,11804,11804, 7190, 7194, 7202, 7208,
1112
1113      7216, 3715, 3823, 7224, 7227, 7230, 3684, 3688, 7233, 7236,
1114      7248, 3713, 3730, 3734, 3738, 3755, 3753, 3764, 3764, 3767,
1115      3782, 7252, 3852, 3849, 3851, 3725, 3750, 3738, 3754, 3763,
1116      3768, 3752, 3765, 3758, 3776, 3784, 3801, 3787, 7255, 7258,
1117      3834, 3838, 3822, 7261, 3840, 3843, 7266, 7271, 7279, 7287,
1118      3854, 3851, 7290, 7293, 7299, 7313, 3878, 7316,11804,11804,
1119      3878, 3892, 3913, 3898, 3902, 3925, 3911, 3902, 7324, 7327,
1120      7335,11804,11804, 7343,11804, 3899, 7347, 3910, 7350,11804,
1121     11804, 3926, 3948, 3954, 3956, 3967, 3967, 7358, 3961, 7365,
1122      7368, 7377,11804,11804, 7385, 4073, 4207, 7393,11804,11804,
1123
1124      3973, 3978, 4211, 3978, 4001, 4235, 7401, 7404, 7407, 7415,
1125      7422, 7433, 7436, 7439, 7442, 7445, 7463, 4016, 4002, 4004,
1126      4009,11804, 4027, 4028, 4026, 4035,11804, 7454, 4075, 4058,
1127      7458, 4012, 4022, 4045, 4119, 4126, 4073, 4072, 4074, 4092,
1128      4157, 4159, 4109, 4118, 7477, 7480, 4105, 4121, 7483, 7486,
1129      4115, 7489, 4194, 4251, 7497, 7502, 4135, 4130, 7506, 7509,
1130      7517,11804,11804, 7525, 7528, 4119, 4127, 4156, 4170, 4170,
1131      4182, 4195, 4195, 4184, 7536,11804,11804, 4206, 7544, 7547,
1132      4187, 4221, 4236, 4282, 4246, 4256, 4284, 7555,11804, 4240,
1133      7558,11804,11804, 4267, 4279, 4277, 4282, 4291, 4279, 4285,
1134
1135      4296, 4304, 4297, 4298, 4317, 7566, 7570, 4323, 4353, 7578,
1136     11804,11804, 7586, 7589, 7597, 7600, 7608, 7611,11804,11804,
1137      4315, 4337, 4364, 4349, 4336, 4355, 4381, 4374, 7619, 4390,
1138      7622, 7627, 7631, 4346, 4333, 4403,11804,11804, 4363, 4364,
1139      4350, 4411,11804,11804, 4370, 7641, 7646, 7650, 7653, 7656,
1140      7660, 4387, 4405, 4402, 4414, 7663, 7669,11804, 4384, 4388,
1141      7672,11804,11804, 7682,11804,11804, 7690, 4380, 4408, 4460,
1142      4428, 4434, 4467, 4438, 4422, 7693, 7696,11804,11804, 7704,
1143      4449, 4461,11804, 4457, 4477,11804, 4454, 4487, 4475, 4490,
1144      4495, 4502, 4513, 4515, 4504, 4514, 4525, 4527, 4524, 7711,
1145
1146      7715, 4528, 4549, 4541, 4556, 7723,11804,11804, 7731,11804,
1147     11804, 7739, 4556, 4563,11804, 4565, 4567, 4568,11804, 4572,
1148      7742, 4619, 7745, 7748, 7767, 7810, 7857, 4538, 4547,11804,
1149      4559, 4555, 4556,11804, 4567, 7775, 7778, 7781, 7786, 4620,
1150      4604, 4636, 4613, 7789, 4598, 4609, 7801, 7792, 7804, 4623,
1151     11804, 4670, 4640,11804, 4670, 4624, 7822, 7830, 7848, 7840,
1152      4680, 4694, 4693, 4694, 4650, 4709, 4681, 4713, 4699, 4722,
1153      4753, 4759, 4728, 4745, 4764, 4771, 4742, 7877,11804,11804,
1154      4779, 4747, 4779, 4750, 7851,11804, 4802, 4778, 4780, 4806,
1155      4783, 4785, 7885, 4815, 7888, 4831, 4830, 7908, 7955, 5005,
1156
1157      4783, 4842, 5167, 4804, 4845,11804, 4855,11804, 4854, 7898,
1158     11804, 4811, 4800, 7928, 4921, 4985, 7919, 7937, 4849,11804,
1159      4850,11804, 4829, 7975,11804,11804, 7983, 4991, 5085,11804,
1160     11804,11804,11804, 4831,11804, 4868,11804, 4869, 4884,11804,
1161     11804, 4861, 4907,11804,11804, 4886,11804, 4920,11804, 4920,
1162     11804, 4934, 4936,11804, 4934, 4941, 7945,11804, 4972, 5035,
1163      4968, 4952, 5078, 4952, 7948,11804, 4919, 4928, 5073,11804,
1164     11804, 4965, 4952, 5064,11804,11804,11804, 7991, 7994, 5073,
1165      4988, 5127, 4991, 8002,11804,11804, 4996, 5018, 8012, 5148,
1166      5018, 5202, 5019, 8015, 5016, 5033, 5065, 5089, 5107, 5100,
1167
1168     11804,11804,11804,11804,11804,11804, 8018, 5121, 5108, 5127,
1169      8021, 5079, 5084,11804, 5107, 5089, 5096,11804, 5118, 8024,
1170      8033, 8042, 8045, 5134, 5158, 5170, 5155, 5171, 5184, 5215,
1171      5213, 8053, 8056, 5186, 5195, 5207, 5205, 5213, 5226, 8064,
1172      8067, 5210, 5211, 5247, 5240, 5255, 5243, 8075, 5253, 5238,
1173      5212, 5237, 5250, 5222, 5248, 8078,11804,11804, 8087, 5313,
1174      5350, 5264, 5269, 5278, 5280, 5290, 5286,11804,11804, 8095,
1175     11804,11804, 5295, 5306, 5304, 5312, 5317, 5318, 8103,11804,
1176     11804, 5352, 5369,11804, 5346,11804, 5347, 5363,11804, 5318,
1177      5319, 5331, 5324, 5331, 5346, 5384, 5382, 5390, 5385, 5387,
1178
1179      5399, 5399, 5403, 5410, 5410, 5408, 5414, 5415, 5413, 5419,
1180      5426,11804,11804, 5448, 5446, 5446, 5404, 5461, 5419, 5420,
1181      5477, 5438, 5452, 5491, 5477, 5497, 5488, 5485, 5506, 5496,
1182      5493, 5518, 5508, 5505, 5536, 5525, 5528, 5546,11804,11804,
1183      5564, 5519,11804, 5568, 5529,11804, 5576, 5560, 5560, 5563,
1184      5563, 5577, 5569, 5601, 5583, 5573, 5603, 5592, 5582, 5621,
1185      5603, 5593, 5631, 5634, 5635,11804, 5642,11804, 5629, 5639,
1186      5637, 5642, 5671, 5646,11804, 5671, 5652,11804, 5680, 5658,
1187     11804, 5684, 5670,11804, 5691,11804,11804, 5668, 5681, 5675,
1188      5698,11804, 5702,11804, 5709,11804, 5734,11804, 5736, 8113,
1189
1190      5737, 5759, 5742, 5760, 5732, 5733, 5744, 5746, 8116, 5785,
1191     11804, 5784,11804, 5788, 5789, 5793, 5800, 5797, 5819,11804,
1192     11804,11804,11804,11804,11804, 5818, 5821, 5852, 5853, 5865,
1193      5894, 5895, 6044, 5800, 5868, 5885, 5924, 5892, 5898, 6022,
1194      6038, 5822, 6015, 5862, 5915, 5876, 6012, 6045, 6064, 6085,
1195      6092, 6023, 6116, 6114, 6133, 6091, 6130, 5791, 6151, 6020,
1196      6086, 6141, 6163, 6047, 6144, 6227, 6232, 6201, 6203, 6041,
1197      6174, 6173, 6226, 6241, 6260, 6271, 6298, 6268, 6289, 6277,
1198      6328, 6340, 6476, 6199, 6320, 6295, 6323, 6364, 6474, 6102,
1199      6290, 6330, 6482, 6503, 6573, 6495, 6566, 6484, 6506, 6391,
1200
1201      6513, 6325, 6590, 6567, 6591, 6302, 6498, 6662, 6686, 6621,
1202      6622, 6670, 6671, 6649, 6701, 6610, 6719, 6755, 6790, 6593,
1203      6752, 6796, 6808, 6417, 6722, 8124, 8127,11804,11804, 8147,
1204      8156, 8165, 8174, 8183, 8192, 8201, 8210, 8219, 8228, 8237,
1205      8246, 8255, 8264, 8273, 8282, 8291, 8300, 8309, 8318, 8327,
1206      8336, 8345, 8354, 8363, 8372, 8381, 8390, 8399, 8408, 8417,
1207      8426, 8435, 8444, 8453, 8462, 8471, 8480, 8489, 8498, 8507,
1208      8516, 8525, 8534, 8543, 8552, 8561, 8570, 8579, 8588, 8597,
1209      8606, 8615, 8624, 8633, 8642, 8651, 8660, 8669, 8678, 8685,
1210      8692, 8699, 8706, 8713, 8720, 8727, 8734, 8741, 8748, 8755,
1211
1212      8762, 8769, 8776, 8783, 8790, 8797, 8804, 8811, 8818, 8825,
1213      8832, 8839, 8846, 8853, 8860, 8867, 8876, 8883, 8888, 8895,
1214      8900, 8907, 8912, 8919, 8924, 8931, 8936, 8943, 8948, 8955,
1215      8960, 8967, 8972, 8979, 8984, 8991, 8996, 9003, 9008, 9015,
1216      9020, 9027, 9032, 9039, 9044, 9051, 9056, 9063, 9068, 9075,
1217      9080, 9087, 9092, 9099, 9104, 9111, 9116, 9123, 9128, 9135,
1218      9140, 9147, 9152, 9159, 9164, 9171, 9176, 9183, 9188, 9195,
1219      9200, 9209, 9215, 9222, 9230, 9238, 9246, 9253, 9261, 9268,
1220      9276, 9284, 9292, 9300, 9308, 9316, 9324, 9331, 9339, 9347,
1221      9354, 9362, 9369, 9377, 9384, 9392, 9399, 9407, 9414, 9422,
1222
1223      9429, 9437, 9444, 9452, 9459, 9467, 9474, 9482, 9489, 9497,
1224      9504, 9512, 9519, 9527, 9535, 9543, 9550, 9558, 9565, 9573,
1225      9580, 9588, 9595, 9603, 9610, 9618, 9627, 9633, 9640, 9648,
1226      9655, 9663, 9670, 9678, 9685, 9693, 9700, 9708, 9716, 9723,
1227      9731, 9738, 9746, 9754, 9761, 9769, 9777, 9785, 9793, 9801,
1228      9808, 9816, 9823, 9831, 9838, 9846, 9854, 9862, 9869, 9877,
1229      9884, 9892, 9899, 9907, 9914, 9922, 9929, 9937, 9944, 9952,
1230      9959, 9967, 9974, 9982, 9989, 9997,10005,10013,10020,10028,
1231     10037,10046,10053,10060,10068,10076,10084,10091,10099,10106,
1232     10114,10122,10129,10137,10144,10152,10160,10167,10175,10183,
1233
1234     10191,10198,10206,10213,10221,10229,10237,10244,10252,10259,
1235     10267,10274,10282,10289,10297,10305,10313,10320,10328,10335,
1236     10343,10350,10358,10365,10373,10380,10388,10395,10403,10410,
1237     10418,10427,10436,10443,10451,10459,10467,10474,10482,10490,
1238     10498,10506,10514,10522,10529,10537,10545,10552,10560,10568,
1239     10576,10583,10591,10598,10606,10614,10621,10629,10636,10644,
1240     10651,10659,10666,10674,10682,10689,10697,10704,10712,10719,
1241     10727,10735,10743,10750,10758,10765,10773,10780,10788,10797,
1242     10806,10814,10821,10829,10837,10844,10852,10860,10868,10876,
1243     10884,10891,10899,10907,10914,10922,10930,10937,10944,10952,
1244
1245     10960,10967,10975,10982,10990,10998,11005,11013,11020,11028,
1246     11035,11043,11050,11058,11066,11074,11082,11090,11097,11105,
1247     11113,11121,11130,11139,11146,11154,11162,11169,11177,11185,
1248     11193,11201,11208,11216,11224,11231,11239,11247,11254,11261,
1249     11269,11277,11284,11291,11299,11307,11315,11322,11330,11337,
1250     11344,11352,11359,11367,11374,11382,11389,11397,11406,11415,
1251     11422,11430,11438,11446,11454,11462,11470,11478,11485,11493,
1252     11500,11508,11516,11524,11532,11540,11548,11556,11563,11571,
1253     11579,11587,11595,11602,11609,11616,11624,11631,11639,11646,
1254     11654,11663,11672,11679,11687,11695,11703,11711,11718,11725,
1255
1256     11733,11740,11749,11758,11767,11776,11785,11794
1257     } ;
1258
1259 static yyconst flex_int16_t yy_def[3809] =
1260     {   0,
1261      3330, 3330, 3331, 3331, 3331, 3331, 3332, 3332, 3333, 3333,
1262      3334, 3334, 3335, 3335, 3335, 3335, 3336, 3336, 3337, 3337,
1263      3338, 3338, 3338, 3338, 3330, 3330, 3338, 3338, 3338, 3338,
1264      3330, 3330, 3338, 3338, 3330, 3330, 3338, 3338, 3338, 3338,
1265      3339, 3339, 3340, 3340, 3330, 3330, 3340, 3340, 3340, 3340,
1266      3341, 3341, 3342, 3342, 3343, 3343, 3344, 3344, 3345, 3345,
1267      3346, 3346, 3330, 3330, 3346, 3346, 3346, 3346, 3347, 3347,
1268      3348, 3348, 3330, 3330, 3348, 3348, 3348, 3348, 3349, 3349,
1269      3350, 3350, 3329,   83, 3351, 3351, 3330, 3330, 3351, 3351,
1270      3351, 3351, 3352, 3352, 3353, 3353, 3330, 3330, 3353, 3353,
1271
1272      3353, 3353, 3354, 3354, 3355, 3355, 3330, 3330, 3355, 3355,
1273      3355, 3355, 3356, 3356, 3357, 3357, 3358, 3358, 3359, 3359,
1274      3330, 3330, 3359, 3359, 3359, 3359, 3360, 3360, 3361, 3361,
1275      3330, 3330, 3361, 3361, 3361, 3361, 3362, 3362, 3363, 3363,
1276      3364, 3364, 3365, 3365, 3366, 3366, 3367, 3367, 3368, 3368,
1277      3369, 3369, 3330, 3330, 3370, 3370, 3371, 3371, 3371, 3371,
1278      3330, 3330, 3371, 3371, 3371, 3371, 3330, 3330, 3371, 3371,
1279      3330, 3330, 3371, 3371, 3371, 3371, 3372, 3372, 3373, 3373,
1280      3330, 3330, 3373, 3373, 3373, 3373, 3374, 3374, 3375, 3375,
1281      3376, 3376, 3377, 3377, 3378, 3378, 3379, 3379, 3330, 3330,
1282
1283      3379, 3379, 3379, 3379, 3380, 3380, 3381, 3381, 3382, 3382,
1284      3383, 3383, 3330, 3330, 3383, 3383, 3383, 3383, 3384, 3384,
1285      3385, 3385, 3330, 3330, 3385, 3385, 3385, 3385, 3386, 3386,
1286      3387, 3387, 3388, 3388, 3389, 3389, 3330, 3330, 3329, 3329,
1287      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1288      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1289      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3390, 3329,
1290      3329, 3390, 3390, 3329, 3329, 3329,  276, 3329,  278,  276,
1291       279,  278, 3329, 3329, 3329, 3391, 3329, 3329, 3391, 3391,
1292      3391, 3329, 3329,  278,  294,  294, 3329, 3329, 3329, 3392,
1293
1294      3329, 3329, 3392, 3329, 3329, 3329, 3329, 3329, 3329, 3393,
1295      3329, 3329, 3393, 3393, 3393, 3329, 3329, 3329, 3329, 3329,
1296      3329, 3394, 3329, 3329, 3394, 3394, 3394, 3329, 3329,  294,
1297       294, 3329, 3329, 3329, 3395, 3329, 3329, 3395, 3395, 3329,
1298      3329,  294,  294, 3329, 3329, 3329, 3396, 3329, 3329, 3396,
1299      3396, 3396, 3396, 3396, 3396, 3329, 3329, 3329, 3329, 3329,
1300      3329, 3397, 3329, 3329, 3397, 3397, 3397, 3397, 3397, 3397,
1301      3397, 3397, 3397, 3329, 3329,  278,  278, 3329, 3329, 3329,
1302      3398, 3329, 3329, 3398, 3329, 3329,  278,  278, 3329, 3329,
1303      3329, 3399, 3329, 3329, 3399, 3399, 3399, 3399, 3399, 3329,
1304
1305      3329,  278,  278,  278, 3329, 3329, 3329, 3400, 3329, 3329,
1306      3400, 3400, 3400, 3329, 3329, 3329, 3329, 3329, 3329, 3401,
1307      3329, 3329, 3401, 3329, 3329,  278,  426,  278, 3329, 3329,
1308      3329, 3402, 3329, 3329, 3402, 3402, 3402, 3402, 3329, 3329,
1309       278,  278, 3329, 3329, 3329, 3403, 3329, 3329, 3403, 3403,
1310      3329, 3329, 3329, 3329, 3329, 3329, 3404, 3329, 3329, 3404,
1311      3404, 3329, 3329, 3329, 3329, 3329, 3329, 3405, 3329, 3329,
1312      3405, 3405, 3329, 3329, 3329, 3329, 3329, 3329, 3406, 3329,
1313      3329, 3406, 3406, 3406, 3406, 3406, 3406, 3329, 3329, 3329,
1314      3329, 3329, 3329, 3329, 3407, 3329, 3329, 3407, 3329, 3329,
1315
1316       426,  426,  278,  278,  278,  278, 3329, 3329, 3329, 3408,
1317      3329, 3329, 3408, 3408, 3408, 3408, 3408, 3329, 3329,  278,
1318       278,  278, 3329, 3329, 3329, 3409, 3329, 3329, 3409, 3409,
1319      3329, 3329, 3329, 3329, 3329, 3329, 3410, 3329, 3329, 3410,
1320      3410, 3410, 3410, 3410, 3329, 3329, 3329, 3329, 3329, 3329,
1321      3411, 3329, 3329, 3411, 3411, 3329, 3329,  294,  294, 3329,
1322      3329, 3329, 3412, 3329, 3329, 3412, 3412, 3329, 3329, 3329,
1323      3329, 3329, 3329, 3413, 3329, 3329, 3413, 3413, 3413, 3413,
1324      3329, 3329,  278,  278, 3329, 3329, 3329, 3414, 3329, 3329,
1325      3414, 3414, 3414, 3414, 3329, 3329,  278,  278,  278, 3329,
1326
1327      3329, 3329, 3415, 3329, 3329, 3415, 3415, 3415, 3329, 3329,
1328      3329, 3329, 3329, 3416, 3329, 3329, 3416, 3416, 3416, 3329,
1329      3329, 3329, 3329, 3417, 3329, 3329, 3329, 3329, 3329, 3329,
1330      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3418, 3418,
1331      3418, 3419, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1332      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1333      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1334      3329, 3329, 3420, 3420, 3420, 3420, 3420, 3421, 3329, 3329,
1335      3422, 3422, 3423, 3329, 3424, 3424, 3424, 3424, 3425, 3329,
1336      3426, 3426, 3426, 3426, 3427, 3329, 3428, 3428, 3428, 3429,
1337
1338      3329, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3430, 3431,
1339      3329, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432,
1340      3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3433, 3329,
1341      3434, 3434, 3435, 3329, 3436, 3436, 3436, 3436, 3436, 3436,
1342      3436, 3437, 3329, 3329, 3438, 3438, 3438, 3438, 3439, 3329,
1343      3440, 3440, 3441, 3329, 3329, 3442, 3442, 3442, 3442, 3442,
1344      3442, 3443, 3329, 3444, 3444, 3444, 3445, 3329, 3446, 3446,
1345      3446, 3447, 3329, 3448, 3448, 3448, 3449, 3329, 3450, 3450,
1346      3450, 3450, 3450, 3450, 3450, 3450, 3451, 3329, 3329, 3452,
1347      3452, 3453, 3329, 3329, 3329, 3329, 3329, 3329, 3454, 3454,
1348
1349      3454, 3454, 3454, 3454, 3455, 3329, 3329, 3456, 3456, 3456,
1350      3457, 3329, 3458, 3458, 3458, 3458, 3458, 3458, 3458, 3458,
1351      3458, 3459, 3329, 3460, 3460, 3460, 3460, 3461, 3329, 3462,
1352      3462, 3462, 3463, 3329, 3464, 3464, 3464, 3464, 3464, 3465,
1353      3329, 3466, 3466, 3466, 3466, 3466, 3467, 3329, 3329, 3468,
1354      3468, 3468, 3468, 3329, 3469, 3329, 3329, 3470, 3470, 3470,
1355      3470, 3471, 3472, 3329, 3472, 3329, 3329, 3329, 3473, 3329,
1356      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3474, 3475, 3475,
1357      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1358      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1359
1360      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1361      3329, 3329, 3329, 3329, 3476, 3476, 3476, 3476, 3477, 3477,
1362      3329, 3478, 3479, 3479, 3480, 3329, 3329, 3480, 3481, 3481,
1363      3482, 3482, 3482, 3483, 3483, 3484, 3484, 3485, 3485, 3329,
1364      3329, 3329, 3329, 3486, 3486, 3486, 3486, 3486, 3487, 3487,
1365      3488, 3488, 3329, 3329, 3488, 3329, 3329, 3488, 3488, 3488,
1366      3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3489, 3489,
1367      3329, 3329, 3490, 3490, 3491, 3491, 3491, 3329, 3329, 3491,
1368      3491, 3491, 3492, 3492, 3329, 3493, 3329, 3329, 3329, 3329,
1369      3494, 3494, 3495, 3496, 3496, 3329, 3497, 3329, 3329, 3497,
1370
1371      3497, 3497, 3498, 3498, 3499, 3329, 3329, 3500, 3500, 3329,
1372      3329, 3501, 3502, 3502, 3503, 3503, 3504, 3504, 3505, 3505,
1373      3505, 3329, 3329, 3505, 3505, 3505, 3506, 3506, 3329, 3507,
1374      3508, 3508, 3329, 3329, 3329, 3509, 3509, 3509, 3509, 3509,
1375      3510, 3510, 3329, 3329, 3329, 3511, 3512, 3512, 3513, 3329,
1376      3329, 3513, 3513, 3513, 3513, 3513, 3513, 3514, 3514, 3515,
1377      3515, 3515, 3516, 3516, 3517, 3329, 3329, 3518, 3518, 3519,
1378      3519, 3329, 3329, 3519, 3520, 3520, 3521, 3329, 3329, 3521,
1379      3521, 3522, 3522, 3329, 3523, 3329, 3329, 3523, 3329, 3524,
1380      3524, 3329, 3525, 3525, 3525, 3526, 3526, 3527, 3329, 3329,
1381
1382      3527, 3329, 3329, 3528, 3329, 3329, 3329, 3329, 3329, 3329,
1383      3329, 3329, 3529, 3329, 3530, 3329, 3530, 3329, 3329, 3329,
1384      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1385      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1386      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1387      3329, 3329, 3329, 3329, 3329, 3531, 3531, 3329, 3329, 3531,
1388      3329, 3532, 3329, 3532, 3329, 3533, 3329, 3534, 3329, 3534,
1389      3535, 3329, 3329, 3329, 3535, 3329, 3536, 3329, 3536, 3329,
1390      3329, 3537, 3537, 3329, 3329, 3329, 3538, 3329, 3538, 3329,
1391      3329, 3329, 3329, 3329, 3539, 3329, 3539, 3329, 3329, 3329,
1392
1393      3329, 3329, 3329, 3329, 3329, 3540, 3540, 3540, 3540, 3329,
1394      3541, 3329, 3541, 3542, 3542, 3542, 3542, 3329, 3329, 3329,
1395      3542, 3329, 3329, 3329, 3329, 3329, 3542, 3542, 3542, 3542,
1396      3542, 3542, 3542, 3542, 3542, 3542, 3329, 3543, 3329, 3543,
1397      3329, 3329, 3329, 3329, 3544, 3329, 3544, 3545, 3545, 3545,
1398      3329, 3329, 3329, 3545, 3545, 3545, 3329, 3546, 3329, 3546,
1399      3329, 3547, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3548,
1400      3329, 3548, 3549, 3329, 3550, 3329, 3550, 3551, 3329, 3329,
1401      3329, 3551, 3551, 3551, 3329, 3552, 3329, 3552, 3553, 3329,
1402      3329, 3329, 3329, 3554, 3329, 3554, 3329, 3329, 3329, 3555,
1403
1404      3329, 3556, 3329, 3556, 3557, 3557, 3329, 3558, 3329, 3558,
1405      3559, 3559, 3559, 3559, 3329, 3329, 3329, 3329, 3329, 3559,
1406      3559, 3329, 3560, 3329, 3560, 3329, 3561, 3329, 3562, 3329,
1407      3562, 3329, 3329, 3329, 3563, 3563, 3563, 3563, 3563, 3329,
1408      3564, 3329, 3564, 3329, 3329, 3329, 3329, 3565, 3329, 3566,
1409      3329, 3566, 3567, 3329, 3329, 3329, 3329, 3329, 3567, 3329,
1410      3329, 3567, 3567, 3567, 3329, 3568, 3329, 3568, 3329, 3329,
1411      3329, 3329, 3569, 3329, 3570, 3329, 3570, 3571, 3329, 3329,
1412      3329, 3329, 3572, 3329, 3572, 3573, 3573, 3329, 3329, 3329,
1413      3573, 3329, 3574, 3329, 3574, 3575, 3329, 3329, 3329, 3575,
1414
1415      3575, 3329, 3576, 3329, 3576, 3329, 3577, 3329, 3329, 3329,
1416      3577, 3329, 3329, 3578, 3329, 3578, 3579, 3579, 3579, 3329,
1417      3580, 3329, 3580, 3581, 3582, 3329, 3329, 3329, 3329, 3583,
1418      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1419      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1420      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1421      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1422      3584, 3584, 3329, 3329, 3329, 3584, 3585, 3329, 3586, 3587,
1423      3588, 3588, 3589, 3329, 3329, 3329, 3590, 3590, 3329, 3329,
1424      3329, 3591, 3329, 3329, 3329, 3329, 3329, 3329, 3592, 3329,
1425
1426      3329, 3329, 3593, 3593, 3593, 3593, 3594, 3595, 3595, 3595,
1427      3595, 3329, 3329, 3329, 3329, 3329, 3595, 3595, 3595, 3595,
1428      3595, 3595, 3595, 3595, 3595, 3595, 3595, 3596, 3597, 3598,
1429      3598, 3329, 3329, 3598, 3598, 3598, 3599, 3329, 3329, 3329,
1430      3600, 3329, 3329, 3601, 3602, 3602, 3602, 3602, 3603, 3604,
1431      3605, 3606, 3607, 3329, 3329, 3608, 3609, 3610, 3610, 3610,
1432      3610, 3329, 3329, 3329, 3610, 3610, 3611, 3329, 3612, 3613,
1433      3329, 3329, 3329, 3614, 3329, 3329, 3614, 3614, 3614, 3615,
1434      3329, 3616, 3617, 3618, 3329, 3329, 3329, 3329, 3329, 3329,
1435      3329, 3329, 3618, 3329, 3329, 3618, 3619, 3329, 3329, 3329,
1436
1437      3329, 3329, 3329, 3620, 3621, 3622, 3623, 3624, 3624, 3624,
1438      3625, 3626, 3626, 3329, 3329, 3627, 3329, 3329, 3329, 3628,
1439      3329, 3629, 3630, 3329, 3329, 3630, 3631, 3632, 3633, 3633,
1440      3329, 3633, 3329, 3329, 3634, 3329, 3329, 3329, 3329, 3329,
1441      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1442      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1443      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1444      3329, 3329, 3329, 3635, 3635, 3635, 3636, 3329, 3329, 3329,
1445      3637, 3638, 3638, 3639, 3640, 3640, 3641, 3642, 3643, 3643,
1446      3329, 3329, 3643, 3644, 3645, 3329, 3329, 3645, 3645, 3329,
1447
1448      3329, 3329, 3645, 3645, 3645, 3645, 3645, 3645, 3329, 3329,
1449      3645, 3645, 3645, 3645, 3646, 3647, 3648, 3648, 3329, 3329,
1450      3329, 3648, 3329, 3329, 3648, 3649, 3329, 3329, 3329, 3329,
1451      3650, 3329, 3329, 3329, 3651, 3652, 3652, 3652, 3652, 3653,
1452      3654, 3655, 3329, 3329, 3656, 3329, 3329, 3329, 3657, 3658,
1453      3659, 3329, 3329, 3659, 3659, 3329, 3329, 3659, 3660, 3329,
1454      3661, 3662, 3329, 3329, 3329, 3663, 3329, 3329, 3329, 3663,
1455      3663, 3663, 3664, 3329, 3329, 3329, 3665, 3666, 3329, 3329,
1456      3329, 3666, 3329, 3329, 3329, 3666, 3667, 3668, 3669, 3670,
1457      3671, 3672, 3672, 3672, 3673, 3674, 3329, 3329, 3329, 3329,
1458
1459      3329, 3675, 3329, 3329, 3329, 3329, 3676, 3329, 3677, 3678,
1460      3329, 3329, 3329, 3329, 3329, 3679, 3680, 3681, 3681, 3329,
1461      3682, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1462      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1463      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1464      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3683, 3684, 3329,
1465      3329, 3329, 3329, 3685, 3686, 3686, 3687, 3329, 3329, 3329,
1466      3329, 3688, 3689, 3329, 3329, 3690, 3329, 3329, 3329, 3329,
1467      3329, 3691, 3692, 3329, 3329, 3329, 3329, 3329, 3692, 3692,
1468      3692, 3329, 3329, 3692, 3692, 3692, 3329, 3329, 3329, 3692,
1469
1470      3329, 3329, 3692, 3692, 3693, 3694, 3695, 3695, 3329, 3329,
1471      3329, 3329, 3329, 3695, 3329, 3329, 3329, 3696, 3697, 3698,
1472      3698, 3698, 3698, 3329, 3329, 3699, 3700, 3329, 3329, 3329,
1473      3701, 3702, 3703, 3704, 3329, 3329, 3329, 3329, 3329, 3704,
1474      3329, 3329, 3329, 3704, 3329, 3329, 3329, 3705, 3706, 3329,
1475      3329, 3329, 3707, 3707, 3707, 3707, 3708, 3329, 3329, 3329,
1476      3329, 3329, 3329, 3709, 3709, 3709, 3710, 3711, 3712, 3713,
1477      3714, 3329, 3329, 3715, 3329, 3329, 3716, 3717, 3329, 3329,
1478      3329, 3718, 3329, 3719, 3329, 3720, 3721, 3329, 3329, 3329,
1479      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3722, 3723,
1480
1481      3724, 3724, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1482      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1483      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1484      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3725,
1485      3726, 3329, 3727, 3728, 3329, 3329, 3729, 3329, 3329, 3329,
1486      3329, 3329, 3329, 3730, 3731, 3329, 3329, 3329, 3329, 3329,
1487      3329, 3329, 3329, 3732, 3733, 3329, 3329, 3329, 3733, 3733,
1488      3733, 3329, 3329, 3329, 3329, 3329, 3733, 3733, 3733, 3329,
1489      3329, 3329, 3733, 3733, 3734, 3735, 3736, 3736, 3329, 3329,
1490      3329, 3736, 3737, 3738, 3739, 3329, 3329, 3739, 3739, 3739,
1491
1492      3740, 3741, 3742, 3743, 3329, 3329, 3744, 3329, 3329, 3329,
1493      3744, 3744, 3329, 3329, 3329, 3745, 3329, 3329, 3329, 3746,
1494      3746, 3746, 3746, 3747, 3329, 3748, 3329, 3329, 3748, 3749,
1495      3750, 3329, 3329, 3751, 3752, 3329, 3329, 3329, 3329, 3329,
1496      3753, 3329, 3329, 3329, 3754, 3329, 3329, 3755, 3756, 3329,
1497      3757, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1498      3329, 3329, 3329, 3329, 3329, 3329, 3758, 3759, 3760, 3760,
1499      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1500      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1501      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1502
1503      3761, 3762, 3329, 3763, 3764, 3329, 3329, 3329, 3765, 3766,
1504      3767, 3329, 3329, 3329, 3768, 3769, 3769, 3769, 3769, 3329,
1505      3329, 3329, 3769, 3769, 3769, 3769, 3329, 3329, 3770, 3329,
1506      3329, 3771, 3771, 3771, 3772, 3773, 3774, 3329, 3329, 3329,
1507      3774, 3774, 3774, 3775, 3776, 3777, 3778, 3779, 3779, 3779,
1508      3329, 3329, 3329, 3329, 3780, 3329, 3329, 3329, 3781, 3781,
1509      3781, 3782, 3329, 3783, 3329, 3329, 3329, 3783, 3329, 3329,
1510      3784, 3785, 3329, 3329, 3329, 3329, 3329, 3786, 3787, 3329,
1511      3329, 3329, 3788, 3789, 3329, 3790, 3329, 3329, 3329, 3329,
1512      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1513
1514      3791, 3792, 3793, 3793, 3329, 3329, 3329, 3329, 3329, 3329,
1515      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1516      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1517      3794, 3329, 3329, 3329, 3795, 3329, 3329, 3796, 3797, 3798,
1518      3329, 3329, 3799, 3799, 3799, 3799, 3799, 3329, 3329, 3799,
1519      3799, 3799, 3329, 3329, 3329, 3329, 3329, 3800, 3800, 3800,
1520      3801, 3329, 3329, 3329, 3329, 3802, 3802, 3802, 3802, 3329,
1521      3329, 3776, 3777, 3329, 3329, 3779, 3779, 3779, 3329, 3780,
1522      3329, 3329, 3329, 3329, 3329, 3781, 3781, 3329, 3329, 3329,
1523      3329, 3329, 3783, 3784, 3785, 3786, 3329, 3329, 3788, 3789,
1524
1525      3329, 3790, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1526      3329, 3329, 3791, 3792, 3793, 3793, 3329, 3329, 3329, 3329,
1527      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1528      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3794,
1529      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3797, 3798, 3799,
1530      3799, 3799, 3799, 3799, 3329, 3329, 3329, 3799, 3329, 3329,
1531      3799, 3329, 3329, 3329, 3329, 3800, 3800, 3329, 3329, 3801,
1532      3329, 3329, 3329, 3802, 3802, 3802, 3329, 3329, 3329, 3329,
1533      3329, 3329, 3329, 3777, 3329, 3329, 3329, 3779, 3779, 3329,
1534      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1535
1536      3329, 3329, 3329, 3783, 3784, 3785, 3786, 3788, 3789, 3329,
1537      3790, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1538      3329, 3791, 3792, 3793, 3793, 3329, 3329, 3329, 3329, 3329,
1539      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1540      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3797, 3798,
1541      3799, 3799, 3799, 3329, 3329, 3799, 3799, 3329, 3329, 3329,
1542      3799, 3329, 3329, 3329, 3329, 3329, 3329, 3800, 3329, 3329,
1543      3329, 3329, 3329, 3329, 3329, 3802, 3802, 3802, 3329, 3329,
1544      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3777, 3779, 3329,
1545      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1546
1547      3329, 3329, 3329, 3329, 3329, 3329, 3783, 3329, 3329, 3329,
1548      3329, 3786, 3788, 3789, 3329, 3329, 3329, 3329, 3329, 3329,
1549      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3791, 3792, 3793,
1550      3793, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1551      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1552      3329, 3329, 3329, 3329, 3797, 3798, 3799, 3799, 3329, 3329,
1553      3329, 3329, 3329, 3329, 3329, 3799, 3799, 3329, 3329, 3329,
1554      3329, 3329, 3329, 3800, 3329, 3329, 3329, 3802, 3329, 3329,
1555      3802, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3779,
1556      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1557
1558      3329, 3329, 3329, 3329, 3329, 3783, 3329, 3329, 3329, 3329,
1559      3329, 3329, 3329, 3329, 3329, 3329, 3789, 3329, 3329, 3329,
1560      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3791, 3792,
1561      3793, 3793, 3793, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1562      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1563      3329, 3329, 3329, 3329, 3329, 3797, 3329, 3329, 3799, 3799,
1564      3329, 3329, 3329, 3329, 3329, 3329, 3799, 3799, 3329, 3329,
1565      3329, 3329, 3329, 3329, 3800, 3802, 3329, 3329, 3329, 3802,
1566      3329, 3329, 3329, 3329, 3329, 3329, 3779, 3329, 3329, 3329,
1567      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1568
1569      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1570      3329, 3789, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1571      3791, 3792, 3793, 3793, 3793, 3803, 3804, 3329, 3329, 3329,
1572      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1573      3329, 3329, 3329, 3797, 3799, 3799, 3329, 3329, 3799, 3329,
1574      3329, 3329, 3329, 3329, 3329, 3800, 3329, 3329, 3329, 3329,
1575      3329, 3329, 3329, 3329, 3779, 3329, 3329, 3329, 3329, 3329,
1576      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1577      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1578      3329, 3329, 3791, 3792, 3793, 3805, 3806, 3803, 3804, 3329,
1579
1580      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1581      3329, 3799, 3799, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1582      3329, 3329, 3800, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1583      3329, 3329, 3329, 3779, 3329, 3329, 3329, 3329, 3329, 3329,
1584      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1585      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3792, 3805,
1586      3793, 3807, 3806, 3808, 3793, 3329, 3329, 3329, 3329, 3329,
1587      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3799, 3799, 3329,
1588      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3800, 3329,
1589      3329, 3329, 3329, 3779, 3329, 3329, 3329, 3329, 3329, 3329,
1590
1591      3329, 3329, 3329, 3329, 3329, 3329, 3792, 3807, 3329, 3808,
1592      3793, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1593      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1594      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1595      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3792, 3329, 3329,
1596      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1597      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1598      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1599      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3792, 3329, 3329,
1600      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1601
1602      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1603      3329, 3329, 3329, 3329, 3329, 3792, 3329, 3329, 3329, 3329,
1604      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1605      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1606      3792, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1607      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1608      3329, 3329, 3329, 3792, 3329, 3329, 3329, 3329, 3329, 3329,
1609      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1610      3329, 3329, 3329, 3329, 3792, 3329, 3329, 3329, 3329, 3329,
1611      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3792,
1612
1613      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3792, 3329,
1614      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3792, 3792, 3329,
1615      3329, 3329, 3329, 3329, 3329, 3792, 3792, 3792, 3792, 3792,
1616      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1617      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1618      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1619      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1620      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1621      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1622      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1623
1624      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1625      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
1626      3792, 3792, 3792, 3792, 3792, 3792, 3792, 3329,    0, 3329,
1627      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1628      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1629      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1630      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1631      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1632      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1633      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1634
1635      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1636      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1637      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1638      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1639      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1640      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1641      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1642      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1643      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1644      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1645
1646      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1647      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1648      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1649      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1650      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1651      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1652      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1653      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1654      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1655      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1656
1657      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1658      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1659      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1660      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1661      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1662      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1663      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1664      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1665      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1666      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1667
1668      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1669      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1670      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1671      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1672      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1673      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1674      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1675      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1676      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1677      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
1678
1679      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329
1680     } ;
1681
1682 static yyconst flex_int16_t yy_nxt[11879] =
1683     {   0,
1684      3329,  242,  243,  242,  242,  243,  242,  242,  243,  242,
1685       242,  243,  242,  247,  243,  247,  253,  244,  250,  253,
1686       244,  250,  695,  245, 3329,  251,  245, 3329,  251,  248,
1687       247,  243,  247,  624,  254,  256,  257,  254,  256,  257,
1688       258,  259,  642,  258,  259,  624,  248,  263,  264,  625,
1689       260,  256,  257,  260,  261,  627,  258,  256,  257, 1312,
1690       261,  626,  258,  263,  264, 1313,  260,  275,  243,  275,
1691       661,  626,  260,  275,  243,  275,  275,  243,  275,  275,
1692       243,  275,  708,  276,  243,  243,  243,  709, 1666,  276,
1693       700,  265,  277, 1669,  668,  277,  623,  623,  623, 1670,
1694
1695       278,  623,  623,  623,  623,  623,  623,  265,  266,  267,
1696       243,  267,  266,  266,  266,  266,  266,  266,  266,  268,
1697       266,  266,  266,  742,  266,  270,  266,  271,  266,  243,
1698       243,  243,  275,  243,  275,  275,  243,  275,  661,  275,
1699       243,  275,  275,  243,  275,  278,  627,  627,  276,  676,
1700       714,  276,  627,  266,  266,  279,  677,  760,  279,  623,
1701       623,  623,  626,  626,  272,  623,  623,  623,  626,  761,
1702       632,  715,  743,  273,  266,  267,  243,  267,  266,  266,
1703       266,  266,  266,  266,  266,  268,  266,  266,  266,  820,
1704       266,  270,  266,  271,  266,  243,  243,  243,  243,  243,
1705
1706       243,  275,  243,  275,  821,  275,  243,  275,  243,  243,
1707       243,  280,  633,  870,  280,  828,  871,  277,  634,  266,
1708       266,  277,  627,  635,  281,  243,  243,  243,  636,  683,
1709       272,  275,  243,  275,  275,  243,  275,  976,  626,  273,
1710       977,  281,  275,  243,  275, 1671,  627,  279, 1672,  627,
1711       279,  275,  243,  275,  623,  623,  623,  729,  282,  623,
1712       623,  623,  626,  661,  678,  626, 1673,  282,  283,  284,
1713       243,  284,  283,  283,  283,  283,  283,  283,  283,  285,
1714       283,  283,  283,  847,  283,  287,  283,  288,  283,  293,
1715       243,  293,  293,  243,  293,  243,  243,  243,  733,  243,
1716
1717       243,  243,  293,  243,  293,  294,  722,  895,  294,  668,
1718      1674,  295,  679,  283,  283,  295,  668,  627,  294,  289,
1719       723,  896,  290,  623,  623,  623,  623,  623,  623,  623,
1720       623,  623,  848,  626,  291,  283,  284,  243,  284,  283,
1721       283,  283,  283,  283,  283,  283,  285,  283,  283,  283,
1722       668,  283,  287,  283,  288,  283,  293,  243,  293,  293,
1723       243,  293,  293,  243,  293,  718,  305,  243,  305,  305,
1724       243,  305,  294,  719, 1675,  296,  883,  627,  296,  720,
1725       283,  283,  306,  740,  689,  306,  289,  741,  742,  290,
1726       623,  623,  623,  626,  623,  623,  623,  623,  623,  623,
1727
1728       884,  291,  297,  298,  243,  298,  297,  297,  297,  297,
1729       297,  297,  297,  299,  297,  297,  297,  864,  297,  301,
1730       297,  302,  297,  317,  243,  317,  317,  243,  317,  329,
1731       243,  329,  865,  329,  243,  329,  243,  243,  243,  318,
1732       668, 1676,  318, 1682,  901,  330,  901,  297,  297,  330,
1733       627,  627,  295,  243,  243,  243,  623,  623,  623,  623,
1734       623,  623,  623,  623,  623,  805,  626,  626,  902,  295,
1735       884,  303,  297,  298,  243,  298,  297,  297,  297,  297,
1736       297,  297,  297,  299,  297,  297,  297,  883,  297,  301,
1737       297,  302,  297,  329,  243,  329,  329,  243,  329,  329,
1738
1739       243,  329,  806,  329,  243,  329,  341,  243,  341,  330,
1740       785,  902,  330,  627,  786,  331, 1683,  297,  297,  331,
1741       710,  864,  342,  341,  243,  341,  623,  623,  623,  626,
1742       623,  623,  623,  623,  623,  623,  623,  623,  623,  342,
1743      1685,  303,  307,  308,  243,  308,  307,  307,  307,  307,
1744       307,  307,  307,  309,  307,  307,  307, 1089,  307,  311,
1745       307,  312,  307,  243,  243,  243,  243,  243,  243,  341,
1746       243,  341,  895,  341,  243,  341,  341,  243,  341,  295,
1747       627,  627,  295,  627,  627,  342,  909,  307,  307,  342,
1748      1686,  313,  343,  623,  623,  623,  626,  626,  314,  626,
1749
1750       626,  315,  307,  308,  243,  308,  307,  307,  307,  307,
1751       307,  307,  307,  309,  307,  307,  307, 1689,  307,  311,
1752       307,  312,  307,  341,  243,  341,  357,  243,  357,  357,
1753       243,  357,  895,  375,  243,  375,  375,  243,  375,  343,
1754       753,  627,  358,  627,  627,  358,  913,  307,  307,  376,
1755       749,  313,  376,  623,  623,  623, 1690,  626,  314,  626,
1756       626,  315,  319,  320,  243,  320,  319,  319,  319,  319,
1757       319,  319,  319,  321,  319,  319,  319, 1693,  319,  323,
1758       319,  324,  319,  243,  243,  243,  243,  243,  243,  375,
1759       243,  375,  668,  375,  243,  375,  375,  243,  375,  278,
1760
1761      1099, 1695,  278, 1698, 1424,  376,  724,  319,  319,  376,
1762       627,  627,  377,  325,  725,  762,  326,  767,  726,  727,
1763       623,  623,  623,  623,  623,  623,  626,  626,  327,  319,
1764       320,  243,  320,  319,  319,  319,  319,  319,  319,  319,
1765       321,  319,  319,  319, 1699,  319,  323,  319,  324,  319,
1766       375,  243,  375,  386,  243,  386,  386,  243,  386,  792,
1767       243,  243,  243,  243,  243,  243,  377,  668, 1447,  387,
1768      1703, 1704,  387, 1705,  319,  319,  278,  627,  627,  278,
1769       325, 1448,  792,  326,  623,  623,  623,  623,  623,  623,
1770       623,  623,  623,  626,  626,  327,  332,  333,  243,  333,
1771
1772       332,  332,  332,  332,  332,  332,  332,  334,  332,  332,
1773       332,  794,  332,  336,  332,  337,  332,  386,  243,  386,
1774       386,  243,  386,  386,  243,  386,  792,  386,  243,  386,
1775       401,  243,  401,  387,  797, 1706,  387, 1707, 1708,  388,
1776      1711,  332,  332,  388,  627,  627,  402,  338,  623,  623,
1777       623,  623,  623,  623,  623,  623,  623,  623,  623,  623,
1778       626,  626,  339,  332,  333,  243,  333,  332,  332,  332,
1779       332,  332,  332,  332,  334,  332,  332,  332,  668,  332,
1780       336,  332,  337,  332,  401,  243,  401,  243,  243,  243,
1781       243,  243,  243,  805,  401,  243,  401,  401,  243,  401,
1782
1783       402, 1712, 1713,  403,  788,  627,  403, 1714,  332,  332,
1784       402, 1129,  772,  402,  338,  623,  623,  623,  623,  623,
1785       623,  626,  623,  623,  623,  623,  623,  623, 1130,  339,
1786       344,  345,  243,  345,  344,  344,  344,  344,  344,  344,
1787       344,  346,  344,  344,  344,  668,  344,  348,  344,  349,
1788       344,  401,  243,  401,  401,  243,  401,  415,  243,  415,
1789       840,  415,  243,  415,  425,  243,  425,  404,  627,  627,
1790       404,  627,  627,  416, 1099,  344,  344,  416,  777,  350,
1791       426,  623,  623,  623,  626,  626,  351,  626,  626,  352,
1792       623,  623,  623,  353, 1628,  354,  355,  344,  345,  243,
1793
1794       345,  344,  344,  344,  344,  344,  344,  344,  346,  344,
1795       344,  344,  668,  344,  348,  344,  349,  344,  425,  243,
1796       425,  243,  243,  243,  243,  243,  243,  895,  425,  243,
1797       425,  425,  243,  425,  426,  627,  627,  427,  627,  627,
1798       427,  914,  344,  344,  426,  787,  350,  426,  623,  623,
1799       623,  626,  626,  351,  626,  626,  352,  623,  623,  623,
1800       353, 1717,  354,  355,  359,  360,  243,  360,  359,  359,
1801       359,  359,  359,  359,  359,  361,  359,  359,  359,  362,
1802       359,  363,  359,  364,  359,  362,  362,  362,  362,  362,
1803       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1804
1805       362,  362,  362,  362,  362,  362,  362,  362,  362,  359,
1806       359,  362,  365,  366,  367,  362,  362,  362,  362,  362,
1807       368,  362,  362,  369,  362,  362,  362,  370,  362,  371,
1808       372,  373,  362,  362,  362,  362,  362,  362,  378,  379,
1809       243,  379,  378,  378,  378,  378,  378,  378,  378,  380,
1810       378,  378,  378, 1718,  378,  382,  378,  383,  378,  425,
1811       243,  425,  425,  243,  425,  440,  243,  440, 1722,  440,
1812       243,  440,  243,  243,  243,  428,  796,  627,  428, 1725,
1813       826,  441,  816,  378,  378,  441,  817,  827,  278,  668,
1814       818,  795,  847,  626,  384,  378,  379,  243,  379,  378,
1815
1816       378,  378,  378,  378,  378,  378,  380,  378,  378,  378,
1817      1727,  378,  382,  378,  383,  378,  243,  243,  243,  440,
1818       243,  440,  440,  243,  440,  885,  440,  243,  440,  440,
1819       243,  440,  278, 1736,  627,  441,  886, 1737,  441,  887,
1820       378,  378,  442, 1738,  668,  442,  623,  623,  623, 3329,
1821       626,  384,  389,  390,  243,  390,  389,  389,  389,  389,
1822       389,  389,  389,  391,  389,  389,  389, 1739,  389,  393,
1823       389,  394,  389,  452,  243,  452,  452,  243,  452,  463,
1824       243,  463,  903,  463,  243,  463, 1741,  670,  627,  453,
1825      1099, 1749,  453,  904, 1447,  464,  887,  389,  389,  464,
1826
1827       395,  655,  396,  671,  626,  665, 1101, 1453,  397,  623,
1828       623,  623,  623,  623,  623,  398,  792, 1129,  399,  389,
1829       390,  243,  390,  389,  389,  389,  389,  389,  389,  389,
1830       391,  389,  389,  389, 1261,  389,  393,  389,  394,  389,
1831       474,  243,  474,  474,  243,  474,  489,  243,  489,  885,
1832       489,  243,  489, 1751, 1754,  793,  475, 1406, 1755,  475,
1833       886, 1758,  490, 1033,  389,  389,  490,  395,  794,  396,
1834       795,  623,  623,  623, 1130,  397,  623,  623,  623,  623,
1835       623,  623,  398, 1760, 1761,  399,  405,  406,  243,  406,
1836       405,  405,  405,  405,  405,  405,  405,  407,  405,  405,
1837
1838       405, 1763,  405,  409,  405,  410,  405,  243,  243,  243,
1839       243,  243,  243,  500,  243,  500, 1035,  500,  243,  500,
1840       500,  243,  500,  491, 1764, 1765,  491,  627,  627,  501,
1841       909,  405,  405,  501,  811,  822,  502,  411,  623,  623,
1842       623, 1766,  412,  626,  626,  623,  623,  623,  623,  623,
1843       623,  623,  623,  623,  413,  405,  406,  243,  406,  405,
1844       405,  405,  405,  405,  405,  405,  407,  405,  405,  405,
1845      1770,  405,  409,  405,  410,  405,  500,  243,  500,  243,
1846       243,  243,  243,  243,  243, 1771,  500,  243,  500,  500,
1847       243,  500,  502, 1772, 1774,  503,  627,  892,  503, 1778,
1848
1849       405,  405,  501,  833,  893,  501,  411,  623,  623,  623,
1850       894,  412,  626,  623,  623,  623,  623,  623,  623,  623,
1851       623,  623, 1782,  413,  417,  418,  243,  418,  417,  417,
1852       417,  417,  417,  417,  417,  419,  417,  417,  417, 1786,
1853       417,  421,  417,  422,  417,  500,  243,  500,  500,  243,
1854       500,  243,  243,  243,  903,  243,  243,  243,  500,  243,
1855       500,  504, 1788, 1526,  504,  904, 1790,  427, 1033,  417,
1856       417,  427, 1792, 1793,  502, 1527, 1794,  423,  417,  418,
1857       243,  418,  417,  417,  417,  417,  417,  417,  417,  419,
1858       417,  417,  417, 1796,  417,  421,  417,  422,  417,  500,
1859
1860       243,  500,  243,  243,  243,  243,  243,  243, 1803,  500,
1861       243,  500,  500,  243,  500,  502, 1572, 1807,  505, 1808,
1862      1810,  505, 1099,  417,  417,  504, 1631, 1820,  504, 1453,
1863      1821,  423,  429,  430,  243,  430,  429,  429,  429,  429,
1864       429,  429,  429,  431,  429,  429,  429, 1817,  429,  433,
1865       429,  434,  429,  500,  243,  500,  500,  243,  500,  519,
1866       243,  519, 1822,  519,  243,  519,  243,  243,  243,  506,
1867      1823, 1824,  506,  854, 1825,  520, 1826,  429,  429,  520,
1868       855,  435,  521,  623,  623,  623, 1827, 1828,  436,  626,
1869      1829,  437,  623,  623,  623,  623,  623,  623,  438,  429,
1870
1871       430,  243,  430,  429,  429,  429,  429,  429,  429,  429,
1872       431,  429,  429,  429, 1830,  429,  433,  429,  434,  429,
1873       243,  243,  243,  519,  243,  519,  519,  243,  519, 1831,
1874       519,  243,  519,  519,  243,  519,  521, 1832, 1834,  520,
1875       627, 1835,  520, 1836,  429,  429,  522,  862,  435,  522,
1876       623,  623,  623, 1839, 1842,  436,  626, 1843,  437,  868,
1877       868,  868, 1118, 1118, 1118,  438,  443,  444,  243,  444,
1878       443,  443,  443,  443,  443,  443,  443,  445,  443,  443,
1879       443, 1844,  443,  447,  443,  448,  443,  532,  243,  532,
1880       532,  243,  532,  546,  243,  546, 1845,  546,  243,  546,
1881
1882       557,  243,  557,  533, 1846, 1847,  533,  892,  908,  547,
1883      1848,  443,  443,  547,  893,  893,  558,  449,  869, 1851,
1884       899,  894,  450,  443,  444,  243,  444,  443,  443,  443,
1885       443,  443,  443,  443,  445,  443,  443,  443, 1860,  443,
1886       447,  443,  448,  443,  557,  243,  557,  243,  243,  243,
1887       243,  243,  243, 1865,  557,  243,  557,  557,  243,  557,
1888       558, 1866, 1883,  295,  908,  892,  295, 1889,  443,  443,
1889       558,  893,  893,  558,  449, 1890, 1891,  899, 1034,  450,
1890       454,  455,  243,  455,  454,  454,  454,  454,  454,  454,
1891       454,  456,  454,  454,  454, 1894,  454,  458,  454,  459,
1892
1893       454,  557,  243,  557,  557,  243,  557,  569,  243,  569,
1894      1895,  569,  243,  569,  582,  243,  582,  559, 1896, 1900,
1895       559,  908, 1903,  570, 1904,  454,  454,  570,  893, 1907,
1896       583,  582,  243,  582, 1034, 1908,  460,  868,  868,  868,
1897      1914, 1103, 1139, 1139, 1139, 1920, 1921,  583, 1922,  461,
1898       454,  455,  243,  455,  454,  454,  454,  454,  454,  454,
1899       454,  456,  454,  454,  454, 1923,  454,  458,  454,  459,
1900       454,  243,  243,  243,  243,  243,  243,  582,  243,  582,
1901      1926,  582,  243,  582,  582,  243,  582,  278, 1215, 1932,
1902       278, 1934, 1940,  583, 1944,  454,  454,  583, 1216, 1947,
1903
1904       584,  582,  243,  582, 1948, 1217,  460, 1110, 1110, 1110,
1905      1950, 1111, 1951, 1952, 1112, 1953, 1954,  584, 1955,  461,
1906       465,  466,  243,  466,  465,  465,  465,  465,  465,  465,
1907       465,  467,  465,  465,  465, 1956,  465,  469,  465,  470,
1908       465,  596,  243,  596,  596,  243,  596,  243,  243,  243,
1909      1958,  243,  243,  243,  596,  243,  596,  597, 1964, 1965,
1910       597, 1966, 1968,  598, 1970,  465,  465,  598, 1978, 1983,
1911       597, 1643, 1643, 1643, 1646, 1646, 1646, 1984, 1118, 1118,
1912      1118,  471, 1139, 1139, 1139, 1985,  472,  465,  466,  243,
1913       466,  465,  465,  465,  465,  465,  465,  465,  467,  465,
1914
1915       465,  465, 1987,  465,  469,  465,  470,  465,  596,  243,
1916       596,  596,  243,  596,  596,  243,  596, 1644, 2005, 2006,
1917      1647,  876,  876,  876,  597, 2007, 2010,  599, 2011, 2013,
1918       599, 2008,  465,  465,  256,  257,  256,  257,  877,  258,
1919       753,  258, 1119, 1139, 1139, 1139, 1140, 2009,  471,  609,
1920       754,  609, 1099,  472,  476,  477,  243,  477,  476,  476,
1921       476,  476,  476,  476,  476,  478,  476,  476,  476, 2000,
1922       476,  480,  476,  481,  476,  621,  243,  621,  610,  646,
1923       610,  621,  243,  621, 2014,  648, 2015, 2016,  926,  926,
1924       926,  622,  655, 1114, 1114, 1114,  654,  622,  642,  476,
1925
1926       476, 2017,  482,  483,  484,  927, 1631, 1119,  666, 2018,
1927       485, 1116, 2021,  486, 1118, 1118, 1118, 1650, 1650, 1650,
1928       487,  476,  477,  243,  477,  476,  476,  476,  476,  476,
1929       476,  476,  478,  476,  476,  476,  667,  476,  480,  476,
1930       481,  476,  940,  940,  940,  942,  942,  942, 2001, 2022,
1931       668, 2023,  669, 1631,  654,  953,  953,  953, 2024,  941,
1932      2025, 2027,  943, 1161, 1161, 1161,  476,  476, 2028,  482,
1933       483,  484,  954, 1653, 1653, 1653, 2026,  485, 1140, 2029,
1934       486, 1163, 1658, 1658, 1658, 2030, 2002,  487,  492,  493,
1935       243,  493,  492,  492,  492,  492,  492,  492,  492,  494,
1936
1937       492,  492,  492, 2032,  492,  496,  492,  497,  492,  956,
1938       956,  956,  971,  971,  971,  978,  978,  978,  987,  987,
1939       987,  989,  989,  989, 2033, 2040,  957, 2042, 2044,  972,
1940      2065, 2069,  979,  492,  492,  988, 2070, 2071,  990,  998,
1941       998,  998, 1172, 1172, 1172, 2077, 1173, 2078, 2079, 1174,
1942      2083, 1664, 1664, 1664, 2084, 2087,  999,  498,  492,  493,
1943       243,  493,  492,  492,  492,  492,  492,  492,  492,  494,
1944       492,  492,  492, 2088,  492,  496,  492,  497,  492, 1006,
1945      1006, 1006, 1010, 1010, 1010, 1022, 1022, 1022, 1044, 1044,
1946      1044, 1050, 1050, 1050, 2092, 2095, 1007, 1665, 2099, 1011,
1947
1948      2100, 2101, 1023,  492,  492, 1045, 2104, 2107, 1051, 1066,
1949      1066, 1066, 1198, 1198, 1198, 2111, 1199, 2112, 2113, 1200,
1950      2118, 1667, 1667, 1667, 2120, 2121, 1067,  498,  507,  508,
1951       243,  508,  507,  507,  507,  507,  507,  507,  507,  509,
1952       507,  507,  507, 2122,  507,  511,  507,  512,  507, 1072,
1953      1072, 1072, 1078, 1078, 1078, 1086, 1086, 1086,  876,  876,
1954       876, 1154, 1154, 1154, 2123, 2125, 1073, 1647, 2126, 1079,
1955      2129, 2131, 1087,  507,  507,  877, 2134, 2150, 1155, 2151,
1956      2152,  513, 2157,  514, 2158, 2161,  515, 1668, 1668, 1668,
1957       516, 1643, 1643, 1643,  517,  507,  508,  243,  508,  507,
1958
1959       507,  507,  507,  507,  507,  507,  509,  507,  507,  507,
1960      2162,  507,  511,  507,  512,  507, 2163, 1114, 1114, 1114,
1961      1158, 1158, 1158, 2166, 1167, 1167, 1167, 3329, 3329, 3329,
1962      3329, 3329, 3329, 1988, 2175, 1116, 2176, 1159, 2159, 1989,
1963       507,  507, 1169, 1990, 3329, 1099, 2160, 3329,  513, 1991,
1964       514, 2168, 2177,  515, 1117, 2178, 1631,  516, 1646, 1646,
1965      1646,  517,  523,  524,  243,  524,  523,  523,  523,  523,
1966       523,  523,  523,  525,  523,  523,  523, 1156,  523,  527,
1967       523,  528,  523, 1161, 1161, 1161,  926,  926,  926, 1160,
1968      2181, 2164, 1157, 1167, 1167, 1167, 1176, 1176, 1176, 2165,
1969
1970      2183, 1163, 2170,  927, 1180, 1180, 1180,  523,  523, 2184,
1971      2185, 1169, 2189, 2191, 1178, 1201, 1201, 1201,  529, 1202,
1972      1164, 1181, 1203, 1218, 1218, 1218, 2192, 1219, 2193, 2196,
1973      1220,  530,  523,  524,  243,  524,  523,  523,  523,  523,
1974       523,  523,  523,  525,  523,  523,  523, 2200,  523,  527,
1975       523,  528,  523, 1176, 1176, 1176, 2201, 1170, 1184, 1184,
1976      1184, 1186, 1186, 1186, 1186, 1186, 1186, 3329, 3329, 3329,
1977      2203, 1178, 1190, 1190, 1190, 1185, 2205,  523,  523, 1188,
1978      2216, 2217, 1188, 2218, 3329, 1833, 1833, 1833,  529, 1191,
1979      1222, 1222, 1222, 2219, 1223, 2223, 2224, 1224, 2225, 2226,
1980
1981      1179,  530,  534,  535,  243,  535,  534,  534,  534,  534,
1982       534,  534,  534,  536,  534,  534,  534, 1182,  534,  538,
1983       534,  539,  534, 1192, 1192, 1192, 1194, 1194, 1194,  940,
1984       940,  940, 1183, 2232, 2233, 1189, 1194, 1194, 1194, 2234,
1985      1193, 1210, 1210, 1210, 1196, 2237,  941,  534,  534,  942,
1986       942,  942, 2241, 1631, 1196, 2242,  540, 2243,  541, 1212,
1987      2244, 2247,  542, 1650, 1650, 1650,  943,  543,  544,  534,
1988       535,  243,  535,  534,  534,  534,  534,  534,  534,  534,
1989       536,  534,  534,  534, 2169,  534,  538,  534,  539,  534,
1990      2248, 1204, 1204, 1204, 2249,  953,  953,  953, 2250, 3329,
1991
1992      3329, 3329, 3329, 3329, 3329, 2251, 2263, 1197, 1205, 3329,
1993      3329, 3329,  954, 2264,  534,  534, 3329, 2268, 2271, 3329,
1994      1241, 1241, 1241,  540, 1242,  541, 3329, 1243, 2272,  542,
1995      1667, 1667, 1667, 2278,  543,  544,  548,  549,  243,  549,
1996       548,  548,  548,  548,  548,  548,  548,  550,  548,  548,
1997       548, 1206,  548,  552,  548,  553,  548, 1207, 2283, 2285,
1998      1208, 2286, 2287,  956,  956,  956, 3329, 3329, 3329, 1225,
1999      1225, 1225, 1237, 1237, 1237, 2291, 1678, 1210, 1210, 1210,
2000       957,  548,  548, 3329, 2292, 2293, 1226,  554, 2294, 2295,
2001      1239, 2296, 1251, 1251, 1251, 1212, 1252, 2297, 2298, 1253,
2002
2003      2299, 2300,  555,  548,  549,  243,  549,  548,  548,  548,
2004       548,  548,  548,  548,  550,  548,  548,  548, 1209,  548,
2005       552,  548,  553,  548, 1213, 2317, 2318, 1237, 1237, 1237,
2006       971,  971,  971, 1244, 1244, 1244, 2319, 1244, 1244, 1244,
2007       978,  978,  978, 2321, 2323, 1239, 2324,  972,  548,  548,
2008      2326, 1246, 2327, 2328,  554, 1246, 1631,  979, 1263, 1263,
2009      1263, 1631, 1264, 2329, 2330, 1265, 1653, 1653, 1653,  555,
2010       560,  561,  243,  561,  560,  560,  560,  560,  560,  560,
2011       560,  562,  560,  560,  560, 1240,  560,  564,  560,  565,
2012       560, 1257, 1257, 1257, 1257, 1257, 1257, 1992, 1247, 2303,
2013
2014       987,  987,  987, 1993,  989,  989,  989, 1994, 2304, 1259,
2015      2331, 2343, 1259, 1995, 2344,  560,  560,  988, 2345, 2350,
2016       566,  990, 1658, 1658, 1658, 2351,  567,  560,  561,  243,
2017       561,  560,  560,  560,  560,  560,  560,  560,  562,  560,
2018       560,  560, 2346,  560,  564,  560,  565,  560, 2352, 1266,
2019      1266, 1266, 2347, 1267, 2358, 1260, 1268, 1269, 1269, 1269,
2020      1269, 1269, 1269, 1274, 1274, 1274, 2359, 1279, 1279, 1279,
2021      2360, 1280,  560,  560, 1281, 1271, 2376,  566, 1271, 2377,
2022      2378, 1276, 2394,  567,  571,  572,  243,  572,  571,  571,
2023       571,  571,  571,  571,  571,  573,  571,  571,  571, 2395,
2024
2025       571,  575,  571,  576,  571, 2396, 2399, 1274, 1274, 1274,
2026       998,  998,  998, 1285, 1285, 1285, 2401, 2402, 1285, 1285,
2027      1285, 1272, 1006, 1006, 1006, 1276, 2403,  999, 2404,  571,
2028       571, 1287,  577, 2405,  578, 2406, 1287, 2407, 2408, 1007,
2029       579, 1290, 1290, 1290, 2409, 1291, 2410, 2411, 1292, 2412,
2030      2417,  580,  571,  572,  243,  572,  571,  571,  571,  571,
2031       571,  571,  571,  573,  571,  571,  571, 1277,  571,  575,
2032       571,  576,  571, 1288, 1293, 1293, 1293, 1010, 1010, 1010,
2033      2418, 1301, 1301, 1301, 2421, 2422, 1293, 1293, 1293, 1297,
2034      1297, 1297, 1295, 1298, 1011, 2423, 1299,  571,  571, 1303,
2035
2036       577, 2419,  578, 1631, 1295, 1315, 1315, 1315,  579, 1316,
2037      2420, 1631, 1317, 1840, 1840, 1840, 1664, 1664, 1664,  580,
2038       585,  586,  243,  586,  585,  585,  585,  585,  585,  585,
2039       585,  587,  585,  585,  585, 2415,  585,  589,  585,  590,
2040       585, 1296, 1307, 1307, 1307, 1022, 1022, 1022, 2416, 1301,
2041      1301, 1301, 2424, 1307, 1307, 1307, 1318, 1318, 1318, 1841,
2042      1309, 2427, 1023, 2425, 2428,  585,  585, 1303, 2429, 2430,
2043       591, 1309, 2426, 1319, 2432, 2433,  592, 1345, 1345, 1345,
2044       593, 1346, 2434, 2435, 1347, 2436,  594,  585,  586,  243,
2045       586,  585,  585,  585,  585,  585,  585,  585,  587,  585,
2046
2047       585,  585, 2438,  585,  589,  585,  590,  585, 2439, 2440,
2048      1304, 1322, 1322, 1322, 1310, 1667, 1667, 1667, 1322, 1322,
2049      1322, 1328, 1328, 1328, 1328, 1328, 1328, 2450, 2451, 1324,
2050      2452, 2453,  585,  585, 2454, 2458, 1324,  591, 2461, 1330,
2051      2466, 2467, 1330,  592, 1354, 1354, 1354,  593, 1355, 2474,
2052      2475, 1356, 2476,  594,  600,  601,  243,  601,  600,  600,
2053       600,  600,  600,  600,  600,  602,  600,  600,  600, 1325,
2054       600,  604,  600,  605,  600, 1340, 1340, 1340, 1340, 1340,
2055      1340, 2462, 1331, 2488, 1044, 1044, 1044, 1349, 1349, 1349,
2056      1349, 1349, 1349, 1342, 2463, 2489, 1342, 2505, 2464,  600,
2057
2058       600, 1045, 1379, 1379, 1379, 1351, 1380,  606, 1351, 1381,
2059       607, 2465, 1837, 1837, 1837, 2506, 2507,  608,  600,  601,
2060       243,  601,  600,  600,  600,  600,  600,  600,  600,  602,
2061       600,  600,  600, 2508,  600,  604,  600,  605,  600, 1050,
2062      1050, 1050, 1343, 1357, 1357, 1357, 2510, 2511, 1360, 1360,
2063      1360, 1365, 1365, 1365, 1352, 2512, 1051, 1365, 1365, 1365,
2064      1358, 2513, 2514,  600,  600, 1361, 1388, 1388, 1388, 1367,
2065      1389,  606, 2515, 1390,  607, 1367, 1838, 1668, 1668, 1668,
2066      2516,  608,  611,  612,  243,  612,  611,  611,  611,  611,
2067       611,  611,  611,  613,  611,  611,  611, 2517,  611,  615,
2068
2069       611,  616,  611, 2518, 1368, 1369, 1369, 1369, 1371, 1371,
2070      1371, 2519, 3329, 3329, 3329, 1374, 1374, 1374, 1374, 1374,
2071      1374, 2520, 1370, 2521, 2526, 1372, 2527,  611,  611, 3329,
2072      1066, 1066, 1066, 1376,  617, 1631, 1376, 1397, 1397, 1397,
2073       618, 1398, 2528, 2529, 1399, 2530, 2531, 1067, 2532,  619,
2074       611,  612,  243,  612,  611,  611,  611,  611,  611,  611,
2075       611,  613,  611,  611,  611, 2533,  611,  615,  611,  616,
2076       611, 1373, 1382, 1382, 1382, 1382, 1382, 1382, 2525, 1377,
2077      1072, 1072, 1072, 1392, 1392, 1392, 1392, 1392, 1392, 1631,
2078      1384, 2534, 2535, 1384, 2536,  611,  611, 1073, 1078, 1078,
2079
2080      1078, 1394,  617, 1099, 1394, 1402, 1402, 1402,  618, 1402,
2081      1402, 1402, 1086, 1086, 1086, 1079, 2537,  619,  627, 1852,
2082      1852, 1852, 2538, 1404, 2539,  642, 2524, 1404, 2541, 1087,
2083      1413, 1413, 1413, 2542,  626,  643, 1385, 1408, 1408, 1408,
2084      2543, 1409, 2544, 2523, 1410, 1917, 1917, 1917, 1415, 1413,
2085      1413, 1413, 1395, 1420, 1420, 1420, 2545, 2546, 1420, 1420,
2086      1420, 2551,  644,  645,  646, 1853, 2552, 1415, 2553,  647,
2087       648, 1422, 2556,  649,  650, 1405, 1422,  651, 2557,  652,
2088       653,  654,  627, 1110, 1110, 1110, 2561, 1111, 2564, 2567,
2089      1112, 1114, 1114, 1114, 1114, 1114, 1114, 2568,  626,  656,
2090
2091      1431, 1431, 1431, 1154, 1154, 1154, 1158, 1158, 1158, 1116,
2092      2562, 2576, 1116, 1416, 1161, 1161, 1161, 2577, 1432, 2578,
2093      1155, 2563, 1423, 1159, 2565, 2589,  644,  657,  658, 2012,
2094      2012, 2012, 1163,  659,  660, 2566, 2612,  661,  650, 2601,
2095      2613,  662, 2618,  663,  664,  665, 1468, 1468, 1468, 2602,
2096      1469, 2619, 2603, 1470, 1473, 1473, 1473, 2620, 1474, 2621,
2097      2622, 1475, 1161, 1161, 1161, 1161, 1161, 1161, 1167, 1167,
2098      1167, 1167, 1167, 1167, 1167, 1167, 1167, 1172, 1172, 1172,
2099      1163, 1173, 2623, 1163, 1174, 2624, 1169, 2625, 2626, 1169,
2100      2627, 2632, 1169, 1176, 1176, 1176, 1176, 1176, 1176, 1176,
2101
2102      1176, 1176, 1180, 1180, 1180, 1484, 1484, 1484, 2633, 1485,
2103      2634, 1178, 1486, 2635, 1178, 2636, 2637, 1178, 2638, 1181,
2104      1184, 1184, 1184, 2639, 1489, 1489, 1489, 1480, 1490, 1477,
2105      2640, 1491, 1186, 1186, 1186, 2641, 2642, 1185, 1186, 1186,
2106      1186, 1186, 1186, 1186, 1190, 1190, 1190, 2604, 1483, 2643,
2107      1188, 1493, 1493, 1493, 2644, 1494, 1188, 2605, 1495, 1188,
2108      2606, 1191, 1192, 1192, 1192, 1496, 1496, 1496, 1631, 1497,
2109      1631, 1099, 1498, 1194, 1194, 1194, 1194, 1194, 1194, 1193,
2110      1194, 1194, 1194, 1198, 1198, 1198, 2646, 1199, 2647, 2648,
2111      1200, 1196, 2650, 2651, 1196, 1201, 1201, 1201, 1196, 1202,
2112
2113      2629, 2657, 1203, 1492, 1204, 1204, 1204, 1500, 1500, 1500,
2114      2630, 1501, 2631, 2658, 1502, 1210, 1210, 1210, 1210, 1210,
2115      1210, 1205, 1210, 1210, 1210, 1218, 1218, 1218, 2666, 1219,
2116      2667, 2668, 1220, 1212, 2669, 2670, 1212, 1512, 1512, 1512,
2117      1212, 2671, 1499, 1222, 1222, 1222, 2672, 1223, 2673, 2674,
2118      1224, 1225, 1225, 1225, 1513, 1514, 1514, 1514, 2678, 1515,
2119      2681, 2682, 1516, 1237, 1237, 1237, 2305, 2306, 1226, 2307,
2120      1507, 1237, 1237, 1237, 1237, 1237, 1237, 2308, 1241, 1241,
2121      1241, 1239, 1242, 2683, 2309, 1243, 1244, 1244, 1244, 1239,
2122      2684, 2685, 1239, 1244, 1244, 1244, 1244, 1244, 1244, 1532,
2123
2124      1532, 1532, 2686, 2687, 1246, 1251, 1251, 1251, 2690, 1252,
2125      2698, 1246, 1253, 2699, 1246, 2702, 1533, 1257, 1257, 1257,
2126      1257, 1257, 1257, 2582, 1257, 1257, 1257, 1539, 1539, 1539,
2127      1263, 1263, 1263, 2583, 1264, 1259, 2703, 1265, 1259, 2584,
2128      2721, 1528, 1259, 2722, 1540, 1266, 1266, 1266, 2723, 1267,
2129      2724, 2725, 1268, 1269, 1269, 1269, 1529, 1269, 1269, 1269,
2130      1269, 1269, 1269, 1542, 1542, 1542, 1274, 1274, 1274, 2726,
2131      2727, 1271, 1274, 1274, 1274, 1271, 2728, 1631, 1271, 2734,
2132      1543, 1274, 1274, 1274, 1276, 1285, 1285, 1285, 2735, 1537,
2133      1276, 1279, 1279, 1279, 1099, 1280, 2736, 2694, 1281, 1276,
2134
2135      1285, 1285, 1285, 1287, 1285, 1285, 1285, 1290, 1290, 1290,
2136      2695, 1291, 2731, 2585, 1292, 1293, 1293, 1293, 1287, 1293,
2137      1293, 1293, 1287, 2586, 2737, 1541, 1293, 1293, 1293, 2587,
2138      1544, 2738, 2739, 1295, 1297, 1297, 1297, 1295, 1298, 2740,
2139      2741, 1299, 2730, 2742, 1295, 1301, 1301, 1301, 1301, 1301,
2140      1301, 1301, 1301, 1301, 1554, 1554, 1554, 3329, 3329, 3329,
2141      1307, 1307, 1307, 1303, 1549, 2743, 1303, 2744, 2745, 1303,
2142      2746, 1555, 2748, 2749, 3329, 1307, 1307, 1307, 1309, 1307,
2143      1307, 1307, 2751, 1315, 1315, 1315, 1551, 1316, 2759, 2760,
2144      1317, 2767, 2768, 1309, 1318, 1318, 1318, 1309, 1562, 1562,
2145
2146      1562, 1553, 1563, 2769, 1556, 1564, 1322, 1322, 1322, 2770,
2147      2771, 1319, 1322, 1322, 1322, 1322, 1322, 1322, 1328, 1328,
2148      1328, 1328, 1328, 1328, 1324, 1328, 1328, 1328, 2752, 2772,
2149      1324, 2696, 2700, 1324, 2773, 2774, 1330, 2775, 2753, 1330,
2150      1575, 1575, 1575, 1330, 2697, 2701, 1557, 1340, 1340, 1340,
2151      1340, 1340, 1340, 1340, 1340, 1340, 2704, 1576, 2776, 2780,
2152      1345, 1345, 1345, 2781, 1346, 1342, 1567, 1347, 1342, 2705,
2153      2782, 1342, 1570, 1349, 1349, 1349, 1349, 1349, 1349, 1349,
2154      1349, 1349, 1354, 1354, 1354, 2754, 1355, 2783, 2784, 1356,
2155      2785, 1351, 2786, 2787, 1351, 2755, 2788, 1351, 1357, 1357,
2156
2157      1357, 1585, 1585, 1585, 2789, 1586, 2790, 2791, 1587, 1588,
2158      1588, 1588, 2792, 2793, 1580, 1358, 1360, 1360, 1360, 2794,
2159      1590, 1590, 1590, 2795, 1591, 2796, 1589, 1592, 1594, 1594,
2160      1594, 2797, 2798, 1361, 1365, 1365, 1365, 1365, 1365, 1365,
2161      1583, 1365, 1365, 1365, 2799, 1595, 1369, 1369, 1369, 1598,
2162      1598, 1598, 1367, 1599, 2813, 1367, 1600, 2802, 2814, 1367,
2163      1371, 1371, 1371, 1370, 1601, 1601, 1601, 2803, 1602, 2815,
2164      2816, 1603, 1374, 1374, 1374, 2817, 2818, 1372, 1374, 1374,
2165      1374, 1374, 1374, 1374, 1379, 1379, 1379, 2804, 1380, 2819,
2166      1376, 1381, 1382, 1382, 1382, 2820, 1376, 2805, 2828, 1376,
2167
2168      2829, 1597, 1382, 1382, 1382, 1382, 1382, 1382, 2830, 1099,
2169      1384, 1388, 1388, 1388, 2831, 1389, 2832, 2833, 1390, 2834,
2170      1384, 2835, 2840, 1384, 1392, 1392, 1392, 1392, 1392, 1392,
2171      2841, 1392, 1392, 1392, 1397, 1397, 1397, 2842, 1398, 2843,
2172      2845, 1399, 1394, 2822, 2846, 1394, 2849, 2850, 1605, 1394,
2173      1614, 1614, 1614, 1402, 1402, 1402, 1402, 1402, 1402, 1402,
2174      1402, 1402, 1618, 1618, 1618, 2851, 2852, 1615, 3329, 3329,
2175      3329, 1404, 1607, 2853, 1404, 2854, 2855, 1404, 2856, 1619,
2176      1408, 1408, 1408, 2861, 1409, 3329, 2862, 1410, 1413, 1413,
2177      1413, 2863, 1611, 1413, 1413, 1413, 1413, 1413, 1413, 1624,
2178
2179      1624, 1624, 2864, 1420, 1420, 1420, 1415, 1420, 1420, 1420,
2180      2865, 1415, 2866, 2867, 1415, 2868, 1625, 1420, 1420, 1420,
2181      1616, 1422, 1630, 1630, 1630, 1422, 1431, 1431, 1431, 1620,
2182      1468, 1468, 1468, 2869, 1469, 1422, 2870, 1470, 2871, 2872,
2183      1631, 1632, 2873, 1622, 1432, 1473, 1473, 1473, 2874, 1474,
2184      2875, 2876, 1475, 1161, 1161, 1161, 1679, 1679, 1679, 1167,
2185      1167, 1167, 2877, 2881, 1627, 1176, 1176, 1176, 1484, 1484,
2186      1484, 1163, 1485, 1680, 2882, 1486, 2883, 1169, 1489, 1489,
2187      1489, 2884, 1490, 1178, 2887, 1491, 1186, 1186, 1186, 1493,
2188      1493, 1493, 2888, 1494, 2889, 2890, 1495, 2891, 1496, 1496,
2189
2190      1496, 2892, 1497, 2900, 1188, 1498, 1194, 1194, 1194, 1500,
2191      1500, 1500, 2901, 1501, 1677, 2902, 1502, 1691, 1691, 1691,
2192      2903, 2904, 1684, 2905, 1196, 2906, 1681, 1210, 1210, 1210,
2193      1696, 1696, 1696, 1687, 1692, 1512, 1512, 1512, 1099, 1700,
2194      1700, 1700, 2907, 1701, 2908, 1212, 1702, 1697, 1709, 1709,
2195      1709, 2909, 1513, 1688, 1514, 1514, 1514, 2912, 1515, 2913,
2196      2919, 1516, 1237, 1237, 1237, 1710, 1244, 1244, 1244, 1532,
2197      1532, 1532, 1719, 1719, 1719, 2920, 1720, 2921, 2922, 1721,
2198      1239, 2894, 1694, 2923, 1246, 2930, 1533, 1723, 1723, 1723,
2199      1257, 1257, 1257, 1539, 1539, 1539, 1728, 1728, 1728, 2931,
2200
2201      1729, 2932, 2933, 1730, 1724, 1269, 1269, 1269, 1259, 2934,
2202      1540, 1542, 1542, 1542, 2935, 1732, 1732, 1732, 1716, 1733,
2203      2936, 2937, 1734, 1271, 1274, 1274, 1274, 1715, 1543, 1285,
2204      1285, 1285, 1293, 1293, 1293, 1743, 1743, 1743, 2938, 1301,
2205      1301, 1301, 1276, 1554, 1554, 1554, 2939, 1287, 2310, 2311,
2206      1295, 2312, 1744, 1752, 1752, 1752, 1726, 1303, 2940, 2313,
2207      1555, 1746, 1746, 1746, 2941, 1747, 2314, 2942, 1748, 2943,
2208      1753, 1731, 2944, 1307, 1307, 1307, 1562, 1562, 1562, 2945,
2209      1563, 2946, 1735, 1564, 2947, 2948, 1740, 2949, 2950, 1742,
2210      1745, 1309, 1756, 1756, 1756, 1322, 1322, 1322, 1328, 1328,
2211
2212      1328, 1575, 1575, 1575, 1767, 1767, 1767, 2951, 1768, 1757,
2213      2952, 1769, 2953, 1324, 2954, 2955, 1330, 2956, 1576, 1340,
2214      1340, 1340, 1775, 1775, 1775, 1349, 1349, 1349, 1585, 1585,
2215      1585, 2969, 1586, 1750, 1099, 1587, 2961, 1342, 2961, 1776,
2216      1588, 1588, 1588, 1351, 1779, 1779, 1779, 2970, 1780, 2964,
2217      2962, 1781, 2974, 2975, 1590, 1590, 1590, 1589, 1591, 1759,
2218      2976, 1592, 2977, 2978, 1762, 1594, 1594, 1594, 1773, 1783,
2219      1783, 1783, 2979, 1784, 2987, 2988, 1785, 1365, 1365, 1365,
2220      2959, 2989, 1595, 2994, 1598, 1598, 1598, 1777, 1599, 2995,
2221      2996, 1600, 1601, 1601, 1601, 1367, 1602, 2997, 2998, 1603,
2222
2223      1374, 1374, 1374, 1382, 1382, 1382, 1392, 1392, 1392, 1797,
2224      1797, 1797, 1614, 1614, 1614, 1799, 1799, 1799, 1376, 1800,
2225      2999, 1384, 1801, 3000, 1394, 3001, 1798, 1787, 3002, 1615,
2226      1402, 1402, 1402, 1618, 1618, 1618, 1804, 1804, 1804, 3003,
2227      1805, 3004, 3005, 1806, 1413, 1413, 1413, 2980, 1404, 3006,
2228      1619, 1624, 1624, 1624, 1811, 1811, 1811, 3009, 1812, 2981,
2229      3009, 1813, 1415, 1814, 1814, 1814, 1789, 3012, 1625, 1791,
2230      1795, 1420, 1420, 1420, 1630, 1630, 1630, 1849, 1849, 1849,
2231      1815, 1837, 1837, 1837, 1849, 1849, 1849, 1631, 1632, 1422,
2232      3013, 1099, 1631, 1809, 1802, 1854, 1854, 1854, 1856, 1856,
2233
2234      1856, 3329, 3329, 3329, 1161, 1161, 1161, 1679, 1679, 1679,
2235      2966, 2982, 1855, 3016, 3017, 1857, 3026, 2990, 3329, 3029,
2236      1816, 3030, 1163, 2983, 1680, 1818, 1861, 1861, 1861, 2991,
2237      1862, 2967, 3007, 1863, 1167, 1167, 1167, 1176, 1176, 1176,
2238      2961, 1850, 1819, 3031, 2968, 1850, 3036, 3039, 1838, 1868,
2239      1868, 1868, 1169, 3042, 2962, 1178, 1870, 1870, 1870, 1186,
2240      1186, 1186, 1194, 1194, 1194, 1858, 1869, 1874, 1874, 1874,
2241      3043, 1859, 3018, 1871, 3329, 3329, 3329, 1188, 3014, 3044,
2242      1196, 1691, 1691, 1691, 1875, 1867, 2961, 3019, 1877, 1877,
2243      1877, 3329, 1878, 1864, 3024, 1879, 3015, 2964, 1692, 1880,
2244
2245      1880, 1880, 1210, 1210, 1210, 1696, 1696, 1696, 1884, 1884,
2246      1884, 2992, 1885, 3025, 3045, 1886, 1881, 1887, 1887, 1887,
2247      1212, 3046, 1697, 2993, 1872, 3047, 3009, 1873, 3049, 1700,
2248      1700, 1700, 1876, 1701, 1888, 3009, 1702, 1892, 1892, 1892,
2249      1709, 1709, 1709, 1897, 1897, 1897, 3050, 1898, 3027, 3051,
2250      1899, 1901, 1901, 1901, 1893, 3052, 3053, 1710, 1237, 1237,
2251      1237, 3054, 1882, 1244, 1244, 1244, 3055, 3028, 1902, 3034,
2252      1719, 1719, 1719, 3062, 1720, 2971, 1239, 1721, 1909, 1909,
2253      1909, 1246, 1723, 1723, 1723, 1911, 1911, 1911, 3035, 1912,
2254      3063, 3064, 1913, 2972, 3065, 1910, 1915, 1915, 1915, 1724,
2255
2256      1728, 1728, 1728, 3066, 1729, 3067, 2973, 1730, 1269, 1269,
2257      1269, 1274, 1274, 1274, 1916, 1732, 1732, 1732, 1906, 1733,
2258      3068, 3069, 1734, 3037, 1905, 3073, 1271, 3074, 3075, 1276,
2259      1924, 1924, 1924, 1293, 1293, 1293, 1743, 1743, 1743, 1928,
2260      1928, 1928, 3038, 1929, 3076, 3077, 1930, 3078, 1925, 3082,
2261      3083, 1295, 3084, 1744, 1918, 1301, 1301, 1301, 1746, 1746,
2262      1746, 3085, 1747, 3086, 3087, 1748, 1307, 1307, 1307, 1752,
2263      1752, 1752, 3089, 1303, 1938, 1938, 1938, 3090, 1919, 1927,
2264      3091, 1935, 1935, 1935, 1309, 1936, 1753, 3092, 1937, 3093,
2265      3094, 1939, 1756, 1756, 1756, 1941, 1941, 1941, 3095, 1942,
2266
2267      3100, 3101, 1943, 1945, 1945, 1945, 1328, 1328, 1328, 1757,
2268      1767, 1767, 1767, 1931, 1768, 3102, 3103, 1769, 1340, 1340,
2269      1340, 1946, 3104, 3105, 1330, 1775, 1775, 1775, 1962, 1962,
2270      1962, 3106, 1933, 1959, 1959, 1959, 1342, 1960, 3107, 3096,
2271      1961, 3108, 1776, 1779, 1779, 1779, 1963, 1780, 3109, 3110,
2272      1781, 3097, 1783, 1783, 1783, 3111, 1784, 3112, 1949, 1785,
2273      1365, 1365, 1365, 1374, 1374, 1374, 1382, 1382, 1382, 1957,
2274      1972, 1972, 1972, 3329, 3329, 3329, 3098, 3113, 1367, 3114,
2275      3115, 1376, 1099, 3117, 1384, 3118, 3119, 1973, 3099, 3120,
2276      3329, 1975, 1975, 1975, 1392, 1392, 1392, 3121, 1797, 1797,
2277
2278      1797, 3122, 1979, 1979, 1979, 3123, 1980, 3116, 1976, 1981,
2279      3124, 3125, 1394, 3126, 1969, 1798, 3127, 1971, 1799, 1799,
2280      1799, 1967, 1800, 3128, 3129, 1801, 1402, 1402, 1402, 1804,
2281      1804, 1804, 3130, 1805, 3131, 3132, 1806, 3133, 3134, 1974,
2282      3135, 1977, 3136, 3137, 1404, 1413, 1413, 1413, 1811, 1811,
2283      1811, 3138, 1812, 3139, 3140, 1813, 3142, 1814, 1814, 1814,
2284      1996, 1996, 1996, 1415, 1997, 1099, 3143, 1998, 1420, 1420,
2285      1420, 3144, 3145, 1982, 1815, 2003, 2003, 2003, 1833, 1833,
2286      1833, 2019, 2019, 2019, 3141, 3146, 1422, 1837, 1837, 1837,
2287      3147, 3148, 2004, 2020, 2020, 2020, 1986, 1840, 1840, 1840,
2288
2289      1849, 1849, 1849, 2031, 2031, 2031, 1852, 1852, 1852, 1854,
2290      1854, 1854, 3149, 2034, 2034, 2034, 3150, 2035, 3151, 1999,
2291      2036, 1856, 1856, 1856, 3152, 3153, 1855, 2037, 2037, 2037,
2292      3154, 2038, 3155, 3156, 2039, 1161, 1161, 1161, 1857, 1861,
2293      1861, 1861, 3157, 1862, 3158, 3159, 1863, 1167, 1167, 1167,
2294      2045, 2045, 2045, 1163, 1176, 1176, 1176, 1868, 1868, 1868,
2295      3160, 3161, 2048, 2048, 2048, 1169, 2049, 2046, 3162, 2050,
2296      3163, 3165, 1178, 3166, 1869, 1870, 1870, 1870, 2051, 2051,
2297      2051, 3167, 2052, 1099, 3168, 2053, 1186, 1186, 1186, 1194,
2298      1194, 1194, 1871, 1874, 1874, 1874, 3169, 3170, 2043, 3171,
2299
2300      3172, 2041, 3173, 3164, 1188, 3174, 3175, 1196, 3176, 3177,
2301      1875, 3178, 2056, 2056, 2056, 2047, 2057, 3179, 3180, 2058,
2302      2059, 2059, 2059, 1877, 1877, 1877, 3181, 1878, 3182, 3183,
2303      1879, 1880, 1880, 1880, 2061, 2061, 2061, 2060, 2062, 3184,
2304      3186, 2063, 1210, 1210, 1210, 1884, 1884, 1884, 1881, 1885,
2305      3187, 2054, 1886, 1099, 2055, 1887, 1887, 1887, 3188, 3185,
2306      1212, 2066, 2066, 2066, 3189, 2067, 3190, 3191, 2068, 1892,
2307      1892, 1892, 1888, 2072, 2072, 2072, 3192, 2073, 3193, 3194,
2308      2074, 2075, 2075, 2075, 3195, 3196, 1893, 1897, 1897, 1897,
2309      3197, 1898, 3198, 2064, 1899, 1901, 1901, 1901, 2076, 2080,
2310
2311      2080, 2080, 3199, 2081, 3201, 3202, 2082, 1237, 1237, 1237,
2312      1099, 3203, 1902, 1244, 1244, 1244, 1909, 1909, 1909, 2089,
2313      2089, 2089, 3204, 2090, 3200, 1239, 2091, 3205, 1911, 1911,
2314      1911, 1246, 1912, 1910, 3206, 1913, 1915, 1915, 1915, 1917,
2315      1917, 1917, 1269, 1269, 1269, 1274, 1274, 1274, 2096, 2096,
2316      2096, 1924, 1924, 1924, 1916, 1293, 1293, 1293, 2085, 3207,
2317      1271, 3208, 3210, 1276, 3211, 2097, 2086, 3212, 3213, 1925,
2318      1928, 1928, 1928, 1295, 1929, 3214, 3215, 1930, 1301, 1301,
2319      1301, 2105, 2105, 2105, 1935, 1935, 1935, 3216, 1936, 3217,
2320      3220, 1937, 3221, 3222, 2098, 2094, 1303, 3223, 3224, 2106,
2321
2322      2093, 1938, 1938, 1938, 2102, 2108, 2108, 2108, 3225, 2109,
2323      1099, 3236, 2110, 1941, 1941, 1941, 1099, 1942, 1939, 1099,
2324      1943, 1945, 1945, 1945, 2103, 2114, 2114, 2114, 1328, 1328,
2325      1328, 2117, 2117, 2117, 2119, 2119, 2119, 1099, 1099, 1946,
2326      1099, 1099, 2115, 1340, 1340, 1340, 1330, 1959, 1959, 1959,
2327      1663, 1960, 3226, 3260, 1961, 1962, 1962, 1962, 2127, 2127,
2328      2127, 1342, 1365, 1365, 1365, 2132, 2132, 2132, 1382, 1382,
2329      1382, 1099, 1099, 1963, 3227, 2128, 1972, 1972, 1972, 3237,
2330      1367, 1099, 3244, 2133, 1099, 3228, 1384, 1099, 3229, 2116,
2331      2136, 2136, 2136, 1973, 2137, 1099, 3238, 2138, 2139, 2139,
2332
2333      2139, 1975, 1975, 1975, 1099, 2142, 2142, 2142, 2124, 2143,
2334      3234, 1099, 2144, 1099, 1099, 2140, 3246, 1099, 1976, 3230,
2335      3231, 2130, 1392, 1392, 1392, 2146, 2146, 2146, 3232, 1979,
2336      1979, 1979, 2135, 1980, 1099, 3239, 1981, 1402, 1402, 1402,
2337      1394, 3248, 2147, 1099, 2141, 2153, 2153, 2153, 2155, 2155,
2338      2155, 1662, 1996, 1996, 1996, 1404, 1997, 3233, 3240, 1998,
2339      1420, 1420, 1420, 2154, 3241, 2156, 2003, 2003, 2003, 3247,
2340      1661, 2148, 2171, 2171, 2171, 2145, 2172, 1660, 1422, 2173,
2341      2174, 2174, 2174, 2004, 2179, 2179, 2179, 2180, 2180, 2180,
2342      2149, 2012, 2012, 2012, 2182, 2182, 2182, 2186, 2186, 2186,
2343
2344      2019, 2019, 2019, 2020, 2020, 2020, 2167, 2187, 2187, 2187,
2345      2190, 2190, 2190, 2194, 2194, 2194, 2195, 2195, 2195, 2197,
2346      2197, 2197, 2031, 2031, 2031, 2198, 2198, 2198, 2034, 2034,
2347      2034, 1099, 2035, 3254, 1099, 2036, 2037, 2037, 2037, 1099,
2348      2038, 1099, 1099, 2039, 1161, 1161, 1161, 1167, 1167, 1167,
2349      2045, 2045, 2045, 2188, 2206, 2206, 2206, 1099, 2207, 3235,
2350      1099, 2208, 1163, 1099, 1099, 1169, 1099, 2046, 1176, 1176,
2351      1176, 2199, 2048, 2048, 2048, 3245, 2049, 3249, 3242, 2050,
2352      2051, 2051, 2051, 1099, 2052, 3262, 1178, 2053, 1186, 1186,
2353      1186, 1194, 1194, 1194, 3243, 2202, 2056, 2056, 2056, 3266,
2354
2355      2057, 3250, 3272, 2058, 1099, 1099, 1188, 2204, 2210, 1196,
2356      1099, 1099, 2059, 2059, 2059, 2212, 2212, 2212, 1659, 2213,
2357      3251, 1099, 2214, 1210, 1210, 1210, 3255, 2211, 2209, 2060,
2358      2061, 2061, 2061, 1099, 2062, 1099, 3252, 2063, 2066, 2066,
2359      2066, 1212, 2067, 3253, 3258, 2068, 2072, 2072, 2072, 1099,
2360      2073, 3263, 1099, 2074, 2075, 2075, 2075, 2220, 2220, 2220,
2361      1099, 2221, 3292, 1099, 2222, 2080, 2080, 2080, 3256, 2081,
2362      1099, 2076, 2082, 2227, 2227, 2227, 1237, 1237, 1237, 2230,
2363      2230, 2230, 1099, 3259, 2089, 2089, 2089, 3257, 2090, 2215,
2364      2228, 2091, 1099, 1099, 1239, 3264, 3267, 2231, 1269, 1269,
2365
2366      1269, 1274, 1274, 1274, 2096, 2096, 2096, 2238, 2238, 2238,
2367      3286, 2239, 1657, 3261, 2240, 1656, 1271, 3265, 1099, 1276,
2368      1099, 2097, 1099, 1293, 1293, 1293, 1301, 1301, 1301, 2105,
2369      2105, 2105, 2108, 2108, 2108, 3273, 2109, 3268, 3274, 2110,
2370      2229, 1295, 3269, 1655, 1303, 1099, 1099, 2106, 2114, 2114,
2371      2114, 1099, 2236, 2235, 2252, 2252, 2252, 3270, 2253, 3271,
2372      1099, 2254, 1328, 1328, 1328, 2115, 2117, 2117, 2117, 2256,
2373      2256, 2256, 2119, 2119, 2119, 2257, 2257, 2257, 3280, 1099,
2374      1330, 3329, 3329, 3329, 3329, 3329, 3329, 1099, 2246, 2245,
2375      1099, 3275, 2258, 3329, 3329, 3329, 1099, 3276, 3329, 3281,
2376
2377      1654, 3329, 1340, 1340, 1340, 2127, 2127, 2127, 1099, 1099,
2378      3329, 2265, 2265, 2265, 1099, 2266, 3277, 1099, 2267, 3278,
2379      1342, 1099, 2128, 2269, 2269, 2269, 2255, 2132, 2132, 2132,
2380      3282, 3287, 2259, 2273, 2273, 2273, 2136, 2136, 2136, 1099,
2381      2137, 2270, 1099, 2138, 1099, 2133, 3279, 1099, 2260, 1099,
2382      3293, 2274, 2261, 2139, 2139, 2139, 2275, 2275, 2275, 1099,
2383      2276, 3288, 3308, 2277, 2142, 2142, 2142, 2262, 2143, 1652,
2384      2140, 2144, 1392, 1392, 1392, 2146, 2146, 2146, 2280, 2280,
2385      2280, 3283, 2281, 1099, 3294, 2282, 1402, 1402, 1402, 3289,
2386      1394, 3304, 2147, 2153, 2153, 2153, 2155, 2155, 2155, 2288,
2387
2388      2288, 2288, 3302, 2289, 1404, 3284, 2290, 1420, 1420, 1420,
2389      1099, 2154, 1651, 2156, 2302, 2302, 2302, 2171, 2171, 2171,
2390      3290, 2172, 3326, 2279, 2173, 1422, 2174, 2174, 2174, 2315,
2391      2315, 2315, 1099, 2316, 2316, 2316, 1099, 2284, 2179, 2179,
2392      2179, 2180, 2180, 2180, 2182, 2182, 2182, 2320, 2320, 2320,
2393      2322, 2322, 2322, 2186, 2186, 2186, 2301, 2187, 2187, 2187,
2394      2190, 2190, 2190, 2325, 2325, 2325, 2194, 2194, 2194, 2195,
2395      2195, 2195, 2197, 2197, 2197, 2198, 2198, 2198, 2332, 2332,
2396      2332, 2334, 2334, 2334, 1167, 1167, 1167, 2336, 2336, 2336,
2397      2206, 2206, 2206, 1099, 2207, 1099, 2333, 2208, 1176, 1176,
2398
2399      1176, 1099, 1169, 1099, 2337, 1186, 1186, 1186, 1194, 1194,
2400      1194, 2212, 2212, 2212, 1099, 2213, 1178, 1099, 2214, 2341,
2401      2341, 2341, 1099, 1188, 3303, 1099, 1196, 2220, 2220, 2220,
2402      3291, 2221, 1099, 1649, 2222, 3300, 3295, 2342, 2348, 2348,
2403      2348, 3285, 2339, 2227, 2227, 2227, 2356, 2356, 2356, 2338,
2404      2335, 3298, 2353, 2353, 2353, 2349, 2354, 3301, 3309, 2355,
2405      2228, 2230, 2230, 2230, 2357, 1269, 1269, 1269, 3296, 2340,
2406      2362, 2362, 2362, 2364, 2364, 2364, 3329, 3329, 3329, 2231,
2407      2238, 2238, 2238, 1271, 2239, 1099, 1099, 2240, 2363, 1648,
2408      2365, 1645, 1099, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2409
2410      2370, 2370, 2370, 1293, 1293, 1293, 1301, 1301, 1301, 1099,
2411      1099, 3329, 1099, 1642, 3329, 1641, 1640, 2371, 1639, 2366,
2412      3318, 1295, 3299, 3306, 1303, 2361, 2374, 2374, 2374, 1099,
2413      1638, 2367, 2379, 2379, 2379, 2252, 2252, 2252, 3297, 2253,
2414      1099, 1099, 2254, 2375, 1328, 1328, 1328, 3307, 2369, 2256,
2415      2256, 2256, 2257, 2257, 2257, 2368, 3305, 2381, 2381, 2381,
2416      3322, 2382, 1330, 2372, 2383, 2384, 2384, 2384, 1099, 2258,
2417      2373, 3329, 3329, 3329, 3329, 3329, 3329, 2388, 2388, 2388,
2418      1637, 1099, 2385, 2390, 2390, 2390, 3312, 3313, 3329, 1099,
2419      1099, 3329, 2391, 2391, 2391, 2389, 1636, 2265, 2265, 2265,
2420
2421      3316, 2266, 1635, 2380, 2267, 1099, 3329, 3329, 3329, 2392,
2422      2269, 2269, 2269, 2273, 2273, 2273, 3310, 2275, 2275, 2275,
2423      1099, 2276, 2386, 3329, 2277, 2387, 3314, 3315, 2270, 3319,
2424      3326, 2274, 2397, 2397, 2397, 2280, 2280, 2280, 1099, 2281,
2425      3311, 1099, 2282, 1402, 1402, 1402, 1634, 2288, 2288, 2288,
2426      2398, 2289, 3317, 1633, 2290, 1420, 1420, 1420, 2302, 2302,
2427      2302, 1404, 2315, 2315, 2315, 2316, 2316, 2316, 2431, 2431,
2428      2431, 1099, 2393, 1422, 1099, 1626, 1099, 2320, 2320, 2320,
2429      2322, 2322, 2322, 2325, 2325, 2325, 2437, 2437, 2437, 2400,
2430      2332, 2332, 2332, 2334, 2334, 2334, 2441, 2441, 2441, 1623,
2431
2432      2336, 2336, 2336, 2443, 2443, 2443, 3320, 2444, 2333, 1099,
2433      2445, 2446, 2446, 2446, 2442, 1099, 2413, 2337, 1621, 3323,
2434      2414, 1186, 1186, 1186, 1194, 1194, 1194, 1099, 1617, 2447,
2435      2341, 2341, 2341, 2348, 2348, 2348, 2455, 2455, 2455, 1188,
2436      2456, 3321, 1196, 2457, 2459, 2459, 2459, 3324, 2342, 1613,
2437      2349, 2353, 2353, 2353, 1612, 2354, 1610, 1609, 2355, 3325,
2438      1608, 2460, 2356, 2356, 2356, 2468, 2468, 2468, 1269, 1269,
2439      1269, 2362, 2362, 2362, 1606, 2364, 2364, 2364, 1604, 1596,
2440      2357, 1593, 2469, 1584, 1582, 2448, 1271, 1581, 1579, 2363,
2441      1578, 2449, 2365, 2471, 2471, 2471, 1577, 2472, 1574, 1573,
2442
2443      2473, 2477, 2477, 2477, 2370, 2370, 2370, 2479, 2479, 2479,
2444      1571, 2480, 1569, 1568, 2481, 2482, 2482, 2482, 2478, 1566,
2445      1565, 2371, 1301, 1301, 1301, 2470, 2374, 2374, 2374, 1561,
2446      2485, 2485, 2485, 2483, 2486, 1560, 1559, 2487, 1558, 1552,
2447      1303, 1550, 1548, 2375, 2490, 2490, 2490, 2379, 2379, 2379,
2448      2492, 2492, 2492, 2381, 2381, 2381, 1547, 2382, 1546, 1545,
2449      2383, 2491, 2384, 2384, 2384, 2494, 2494, 2494, 2493, 2495,
2450      1538, 1536, 2496, 2497, 2497, 2497, 2499, 2499, 2499, 2385,
2451      2388, 2388, 2388, 2484, 2390, 2390, 2390, 2391, 2391, 2391,
2452      2498, 1535, 1534, 2500, 1531, 2501, 2501, 2501, 2389, 2502,
2453
2454      1530, 1525, 2503, 1524, 2392, 3329, 3329, 3329, 2397, 2397,
2455      2397, 1402, 1402, 1402, 1420, 1420, 1420, 2431, 2431, 2431,
2456      1523, 1522, 3329, 2540, 2540, 2540, 2398, 1521, 1520, 1404,
2457      1519, 1518, 1422, 2437, 2437, 2437, 2547, 2547, 2547, 2441,
2458      2441, 2441, 2443, 2443, 2443, 1517, 2444, 1511, 1510, 2445,
2459      2446, 2446, 2446, 2548, 1186, 1186, 1186, 2442, 1509, 1508,
2460      2504, 1194, 1194, 1194, 2554, 2554, 2554, 1506, 2447, 2455,
2461      2455, 2455, 1188, 2456, 2522, 1505, 2457, 2509, 1504, 1196,
2462      1503, 2555, 2459, 2459, 2459, 2558, 2558, 2558, 1488, 2559,
2463      1487, 1482, 2560, 2569, 2569, 2569, 2468, 2468, 2468, 2460,
2464
2465      2571, 2571, 2571, 1481, 2572, 1479, 1478, 2573, 1476, 1472,
2466      2570, 1471, 1467, 2469, 1466, 2549, 2574, 2574, 2574, 2471,
2467      2471, 2471, 1465, 2472, 1464, 1463, 2473, 2550, 2477, 2477,
2468      2477, 2579, 2579, 2579, 2575, 2580, 1462, 1461, 2581, 2479,
2469      2479, 2479, 1460, 2480, 1459, 2478, 2481, 2482, 2482, 2482,
2470      1301, 1301, 1301, 2485, 2485, 2485, 1458, 2486, 1457, 1456,
2471      2487, 2590, 2590, 2590, 1455, 2483, 1454, 1452, 1303, 2490,
2472      2490, 2490, 2592, 2592, 2592, 1451, 2593, 1450, 2591, 2594,
2473      2492, 2492, 2492, 2494, 2494, 2494, 2491, 2495, 1449, 1446,
2474      2496, 2497, 2497, 2497, 1445, 2595, 2595, 2595, 2493, 2596,
2475
2476      1444, 1443, 2597, 2499, 2499, 2499, 1442, 1441, 2498, 2598,
2477      2598, 2598, 2588, 2599, 1440, 1439, 2600, 2501, 2501, 2501,
2478      2500, 2502, 1438, 1437, 2503, 3329, 3329, 3329, 2608, 2608,
2479      2608, 2610, 2610, 2610, 1402, 1402, 1402, 2615, 2615, 2615,
2480      1436, 1435, 3329, 1434, 1433, 2609, 1430, 1429, 2611, 2616,
2481      2616, 2616, 1404, 1420, 1420, 1420, 2645, 2645, 2645, 2540,
2482      2540, 2540, 2649, 2649, 2649, 1428, 2617, 2547, 2547, 2547,
2483      1427, 1422, 2652, 2652, 2652, 1426, 2653, 1425, 1099, 2654,
2484      1186, 1186, 1186, 1419, 2548, 1418, 2607, 1417, 1194, 1194,
2485      1194, 2659, 2659, 2659, 2554, 2554, 2554, 1412, 1188, 1411,
2486
2487      2661, 2661, 2661, 1407, 2662, 2614, 1196, 2663, 2660, 1401,
2488      1400, 2555, 1396, 2628, 2664, 2664, 2664, 2558, 2558, 2558,
2489      1391, 2559, 1387, 1386, 2560, 2569, 2569, 2569, 2675, 2675,
2490      2675, 2665, 2676, 1378, 1364, 2677, 2571, 2571, 2571, 2656,
2491      2572, 1363, 2570, 2573, 2574, 2574, 2574, 2655, 2679, 2679,
2492      2679, 2579, 2579, 2579, 1362, 2580, 1359, 1353, 2581, 2688,
2493      2688, 2688, 2575, 1348, 1344, 2680, 2590, 2590, 2590, 2691,
2494      2691, 2691, 1339, 2692, 1338, 1337, 2693, 2689, 2592, 2592,
2495      2592, 1336, 2593, 2591, 1335, 2594, 2595, 2595, 2595, 1334,
2496      2596, 1333, 1332, 2597, 2598, 2598, 2598, 1327, 2599, 1326,
2497
2498      1321, 2600, 3329, 3329, 3329, 2608, 2608, 2608, 2707, 2707,
2499      2707, 1320, 2708, 1314, 1311, 2709, 2610, 2610, 2610, 3329,
2500      1306, 1305, 2609, 2710, 2710, 2710, 1300, 2711, 1289, 1284,
2501      2712, 1283, 1282, 2611, 2713, 2713, 2713, 2715, 2715, 2715,
2502      1402, 1402, 1402, 2615, 2615, 2615, 2616, 2616, 2616, 1278,
2503      1273, 2714, 1262, 1256, 2716, 1420, 1420, 1420, 1404, 2732,
2504      2732, 2732, 2706, 2617, 2718, 2718, 2718, 1255, 2719, 1254,
2505      1250, 2720, 1249, 1422, 1248, 1236, 2733, 1631, 2645, 2645,
2506      2645, 2747, 2747, 2747, 2649, 2649, 2649, 2750, 2750, 2750,
2507      2652, 2652, 2652, 1235, 2653, 1234, 1233, 2654, 1186, 1186,
2508
2509      1186, 1232, 2717, 2757, 2757, 2757, 2729, 2659, 2659, 2659,
2510      2761, 2761, 2761, 1231, 2762, 1230, 1188, 2763, 2661, 2661,
2511      2661, 2758, 2662, 1229, 2660, 2663, 2664, 2664, 2664, 2764,
2512      2764, 2764, 1228, 2765, 1227, 1221, 2766, 2675, 2675, 2675,
2513      1214, 2676, 1175, 2665, 2677, 2679, 2679, 2679, 2777, 2777,
2514      2777, 1171, 2778, 1166, 1165, 2779, 2688, 2688, 2688, 2691,
2515      2691, 2691, 2680, 2692, 2756, 1153, 2693, 2800, 2800, 2800,
2516      1152, 2707, 2707, 2707, 2689, 2708, 1151, 1150, 2709, 2710,
2517      2710, 2710, 1149, 2711, 2801, 1148, 2712, 2713, 2713, 2713,
2518      2806, 2806, 2806, 1147, 2807, 1146, 1145, 2808, 2715, 2715,
2519
2520      2715, 2809, 2809, 2809, 2714, 2810, 1144, 1143, 2811, 1402,
2521      1402, 1402, 2718, 2718, 2718, 2716, 2719, 1142, 1141, 2720,
2522      1420, 1420, 1420, 2823, 2823, 2823, 1138, 1404, 2732, 2732,
2523      2732, 1137, 2825, 2825, 2825, 1136, 2826, 1135, 1422, 2827,
2524      2824, 1631, 2836, 2836, 2836, 2733, 1631, 2747, 2747, 2747,
2525      1631, 2837, 2837, 2837, 2838, 2838, 2838, 2750, 2750, 2750,
2526      2812, 2839, 2839, 2839, 1186, 1186, 1186, 1134, 1133, 2821,
2527      2757, 2757, 2757, 2761, 2761, 2761, 1132, 2762, 1131, 1128,
2528      2763, 1127, 1188, 2764, 2764, 2764, 1126, 2765, 2758, 1125,
2529      2766, 2847, 2847, 2847, 2857, 2857, 2857, 2777, 2777, 2777,
2530
2531      1124, 2778, 1123, 1122, 2779, 2859, 2859, 2859, 2848, 1121,
2532      1120, 2858, 2800, 2800, 2800, 2844, 2878, 2878, 2878, 1113,
2533      2879, 1109, 2860, 2880, 2806, 2806, 2806, 1108, 2807, 2801,
2534      1107, 2808, 2809, 2809, 2809, 1106, 2810, 1105, 1102, 2811,
2535      2885, 2885, 2885, 1420, 1420, 1420, 2823, 2823, 2823, 2895,
2536      2895, 2895, 1100, 2896, 1099, 1097, 2897, 1095, 2886, 1094,
2537      1093, 1422, 1092, 2824, 1631, 1091, 1088, 1631, 2825, 2825,
2538      2825, 1085, 2826, 1084, 1083, 2827, 2836, 2836, 2836, 2837,
2539      2837, 2837, 2838, 2838, 2838, 1081, 1631, 2839, 2839, 2839,
2540      2910, 2910, 2910, 2914, 2914, 2914, 1080, 2915, 1077, 1076,
2541
2542      2916, 1074, 2847, 2847, 2847, 2917, 2917, 2917, 2911, 2893,
2543      1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 2848,
2544      1071, 1629, 2918, 2857, 2857, 2857, 1629, 1629, 1629, 1631,
2545      1629, 2924, 2924, 2924, 1070, 2925, 1069, 1065, 2926, 1064,
2546      2858, 2927, 2927, 2927, 1062, 2928, 1061, 1060, 2929, 2859,
2547      2859, 2859, 2885, 2885, 2885, 1629, 1629, 1629, 1629, 1629,
2548      1629, 1629, 1629, 1629, 1629, 1629, 2860, 1059, 1629, 1057,
2549      2886, 1056, 1055, 1629, 1629, 1629, 1631, 1629, 2878, 2878,
2550      2878, 1054, 2879, 1053, 1052, 2880, 2957, 2957, 2957, 2895,
2551      2895, 2895, 1049, 2896, 1048, 1046, 2897, 1043, 1042, 2910,
2552
2553      2910, 2910, 1629, 1629, 2958, 1040, 1039, 1631, 1629, 1629,
2554      1629, 1629, 1629, 2965, 1629, 1629, 1629, 2911, 1038, 1629,
2555      2917, 2917, 2917, 1037, 1629, 1629, 1629, 1631, 1629, 2914,
2556      2914, 2914, 1036, 2915, 1032, 1030, 2916, 2918, 2984, 2984,
2557      2984, 1029, 2985, 1028, 1026, 2986, 2957, 2957, 2957, 3011,
2558      3011, 3011, 1025, 1629, 1629, 1629, 1629, 1629, 1629, 1629,
2559      1629, 1629, 1629, 2965, 2958, 1024, 1629, 1631, 1632, 1021,
2560      1020, 1629, 1629, 1629, 1631, 1629, 2924, 2924, 2924, 1019,
2561      2925, 1018, 1016, 2926, 2927, 2927, 2927, 1015, 2928, 1014,
2562      1012, 2929, 3020, 3020, 3020, 3022, 3022, 3022, 1009, 1005,
2563
2564      1629, 1629, 1004, 2984, 2984, 2984, 1002, 2985, 1001, 3021,
2565      2986, 1000, 3023, 3032, 3032, 3032, 3040, 3040, 3040, 3048,
2566      3048, 3048, 3011, 3011, 3011, 3020, 3020, 3020,  997,  996,
2567      3033,  995,  993, 3041, 3056, 3056, 3056, 1099, 3057,  992,
2568      1631, 3058, 3021, 3022, 3022, 3022, 3059, 3059, 3059,  986,
2569      3060,  985,  984, 3061, 3032, 3032, 3032, 3070, 3070, 3070,
2570      3023, 3071,  982,  981, 3072, 3040, 3040, 3040, 3079, 3079,
2571      3079, 3033, 3080, 1818,  980, 3081, 3048, 3048, 3048, 3056,
2572      3056, 3056, 3041, 3057,  975,  974, 3058,  970, 3059, 3059,
2573      3059,  968, 3060,  967, 1099, 3061, 3070, 3070, 3070,  966,
2574
2575      3071,  965,  964, 3072, 3079, 3079, 3079,  963, 3080,  962,
2576       961, 3081,  960, 3088, 3209, 3209, 3209, 3209, 3209, 3209,
2577       959, 3218,  958,  955, 3219, 3327, 3327, 3327, 3327, 3327,
2578      3327,  952, 1099,  951,  950, 1099,  948,  947,  946,  945,
2579       944,  939,  937, 3328,  936,  935, 3328,  240,  240,  240,
2580       240,  240,  240,  240,  240,  240,  241,  241,  241,  241,
2581       241,  241,  241,  241,  241,  246,  246,  246,  246,  246,
2582       246,  246,  246,  246,  249,  249,  249,  249,  249,  249,
2583       249,  249,  249,  252,  252,  252,  252,  252,  252,  252,
2584       252,  252,  255,  255,  255,  255,  255,  255,  255,  255,
2585
2586       255,  262,  262,  262,  262,  262,  262,  262,  262,  262,
2587       269,  269,  269,  269,  269,  269,  269,  269,  269,  274,
2588       274,  274,  274,  274,  274,  274,  274,  274,  286,  286,
2589       286,  286,  286,  286,  286,  286,  286,  292,  292,  292,
2590       292,  292,  292,  292,  292,  292,  300,  300,  300,  300,
2591       300,  300,  300,  300,  300,  304,  304,  304,  304,  304,
2592       304,  304,  304,  304,  310,  310,  310,  310,  310,  310,
2593       310,  310,  310,  316,  316,  316,  316,  316,  316,  316,
2594       316,  316,  322,  322,  322,  322,  322,  322,  322,  322,
2595       322,  328,  328,  328,  328,  328,  328,  328,  328,  328,
2596
2597       335,  335,  335,  335,  335,  335,  335,  335,  335,  340,
2598       340,  340,  340,  340,  340,  340,  340,  340,  347,  347,
2599       347,  347,  347,  347,  347,  347,  347,  356,  356,  356,
2600       356,  356,  356,  356,  356,  356,  374,  374,  374,  374,
2601       374,  374,  374,  374,  374,  381,  381,  381,  381,  381,
2602       381,  381,  381,  381,  385,  385,  385,  385,  385,  385,
2603       385,  385,  385,  392,  392,  392,  392,  392,  392,  392,
2604       392,  392,  400,  400,  400,  400,  400,  400,  400,  400,
2605       400,  408,  408,  408,  408,  408,  408,  408,  408,  408,
2606       414,  414,  414,  414,  414,  414,  414,  414,  414,  420,
2607
2608       420,  420,  420,  420,  420,  420,  420,  420,  424,  424,
2609       424,  424,  424,  424,  424,  424,  424,  432,  432,  432,
2610       432,  432,  432,  432,  432,  432,  439,  439,  439,  439,
2611       439,  439,  439,  439,  439,  446,  446,  446,  446,  446,
2612       446,  446,  446,  446,  451,  451,  451,  451,  451,  451,
2613       451,  451,  451,  457,  457,  457,  457,  457,  457,  457,
2614       457,  457,  462,  462,  462,  462,  462,  462,  462,  462,
2615       462,  468,  468,  468,  468,  468,  468,  468,  468,  468,
2616       473,  473,  473,  473,  473,  473,  473,  473,  473,  479,
2617       479,  479,  479,  479,  479,  479,  479,  479,  488,  488,
2618
2619       488,  488,  488,  488,  488,  488,  488,  495,  495,  495,
2620       495,  495,  495,  495,  495,  495,  499,  499,  499,  499,
2621       499,  499,  499,  499,  499,  510,  510,  510,  510,  510,
2622       510,  510,  510,  510,  518,  518,  518,  518,  518,  518,
2623       518,  518,  518,  526,  526,  526,  526,  526,  526,  526,
2624       526,  526,  531,  531,  531,  531,  531,  531,  531,  531,
2625       531,  537,  537,  537,  537,  537,  537,  537,  537,  537,
2626       545,  545,  545,  545,  545,  545,  545,  545,  545,  551,
2627       551,  551,  551,  551,  551,  551,  551,  551,  556,  556,
2628       556,  556,  556,  556,  556,  556,  556,  563,  563,  563,
2629
2630       563,  563,  563,  563,  563,  563,  568,  568,  568,  568,
2631       568,  568,  568,  568,  568,  574,  574,  574,  574,  574,
2632       574,  574,  574,  574,  581,  581,  581,  581,  581,  581,
2633       581,  581,  581,  588,  588,  588,  588,  588,  588,  588,
2634       588,  588,  595,  595,  595,  595,  595,  595,  595,  595,
2635       595,  603,  603,  603,  603,  603,  603,  603,  603,  603,
2636       255,  255,  255,  255,  255,  255,  255,  255,  255,  614,
2637       614,  614,  614,  614,  614,  614,  614,  614,  620,  620,
2638       620,  620,  620,  620,  620,  620,  620,  639,  639,  639,
2639       933,  932,  931,  639,  673,  673,  673,  930,  928,  925,
2640
2641       673,  681,  681,  681,  924,  922,  921,  681,  685,  685,
2642       685,  920,  918,  917,  685,  691,  691,  691,  916,  915,
2643       912,  691,  697,  697,  697,  911,  910,  907,  697,  702,
2644       702,  702,  906,  905,  900,  702,  712,  712,  712,  898,
2645       897,  891,  712,  731,  731,  731,  890,  889,  888,  731,
2646       735,  735,  735,  882,  881,  880,  735,  745,  745,  745,
2647       878,  875,  874,  745,  751,  751,  751,  873,  872,  867,
2648       751,  756,  756,  756,  864,  866,  861,  756,  764,  764,
2649       764,  860,  859,  857,  764,  769,  769,  769,  856,  853,
2650       852,  769,  774,  774,  774,  851,  849,  848,  774,  779,
2651
2652       779,  779,  846,  845,  844,  779,  790,  790,  790,  843,
2653       841,  840,  790,  799,  799,  799,  839,  838,  837,  799,
2654       808,  808,  808,  836,  834,  832,  808,  813,  813,  813,
2655       831,  829,  828,  813,  824,  824,  824,  825,  823,  819,
2656       824,  830,  830,  830,  815,  814,  812,  830,  835,  835,
2657       835,  810,  809,  807,  835,  842,  842,  842,  806,  804,
2658       803,  842,  850,  850,  850,  802,  801,  800,  850,  858,
2659       858,  858,  798,  797,  791,  858,  863,  863,  863,  863,
2660       863,  863,  863,  789,  863,  639,  639,  639,  784,  783,
2661       782,  639,  879,  781,  780,  778,  879,  673,  673,  673,
2662
2663       776,  775,  773,  673,  919,  771,  770,  768,  919,  681,
2664       681,  681,  766,  765,  763,  681,  923,  762,  759,  758,
2665       923,  685,  685,  685,  757,  755, 3329,  685,  929,  752,
2666       750,  748,  929,  691,  691,  691,  747,  746,  744,  691,
2667       934,  743,  739,  738,  934,  697,  697,  697,  737,  736,
2668       734,  697,  938,  733,  732,  730,  938,  702,  702,  702,
2669       729,  728,  721,  702,  949,  717,  716,  713,  949,  712,
2670       712,  712,  711,  707,  706,  712,  969,  705,  704,  703,
2671       969,  731,  731,  731,  701,  700,  699,  731,  973,  698,
2672       696,  695,  973,  735,  735,  735,  694,  693,  692,  735,
2673
2674       983,  690,  688,  687,  983,  745,  745,  745,  686,  684,
2675       682,  745,  991,  680,  661, 3329,  991,  751,  751,  751,
2676       675,  674,  672,  751,  994, 3329,  655,  641,  994,  756,
2677       756,  756,  640,  638,  637,  756, 1003,  631,  630,  631,
2678      1003,  764,  764,  764,  630,  629,  628,  764, 1008, 3329,
2679      3329, 3329, 1008,  769,  769,  769, 3329, 3329, 3329,  769,
2680      1013, 3329, 3329, 3329, 1013,  774,  774,  774, 3329, 3329,
2681      3329,  774, 1017, 3329, 3329, 3329, 1017,  779,  779,  779,
2682      3329, 3329, 3329,  779, 1027, 3329, 3329, 3329, 1027,  790,
2683       790,  790, 3329, 3329, 3329,  790, 1031, 3329, 3329, 3329,
2684
2685      1031,  799,  799,  799, 3329, 3329, 3329,  799, 1041, 3329,
2686      3329, 3329, 1041,  808,  808,  808, 3329, 3329, 3329,  808,
2687      1047, 3329, 3329, 3329, 1047,  813,  813,  813, 3329, 3329,
2688      3329,  813, 1058, 3329, 3329, 3329, 1058,  824,  824,  824,
2689      3329, 3329, 3329,  824, 1063, 3329, 3329, 3329, 1063,  830,
2690       830,  830, 3329, 3329, 3329,  830, 1068, 3329, 3329, 3329,
2691      1068,  835,  835,  835, 3329, 3329, 3329,  835, 1075, 3329,
2692      3329, 3329, 1075,  842,  842,  842, 3329, 3329, 3329,  842,
2693      1082, 3329, 3329, 3329, 1082,  850,  850,  850, 3329, 3329,
2694      3329,  850, 1090, 3329, 3329, 3329, 1090,  858,  858,  858,
2695
2696      3329, 3329, 3329,  858, 1096, 3329, 3329, 3329, 1096, 1098,
2697      1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1104, 3329,
2698      3329, 3329, 3329, 1104,  639,  639,  639, 3329, 3329, 3329,
2699       639, 1115, 1115, 1115, 1115, 3329, 3329, 1115, 1115,  673,
2700       673,  673,  673, 3329,  673, 3329,  673, 1162, 1162, 1162,
2701      1162, 3329, 3329, 1162, 1162,  681,  681,  681, 3329, 3329,
2702      3329,  681, 1168, 1168, 1168, 1168, 3329, 3329, 1168, 1168,
2703       685,  685,  685, 3329, 3329, 3329,  685, 1177, 1177, 1177,
2704      1177, 3329, 3329, 1177, 1177,  691,  691,  691,  691, 3329,
2705       691, 3329,  691, 1187, 1187, 1187, 1187, 3329, 3329, 1187,
2706
2707      1187,  697,  697,  697,  697, 3329,  697, 3329,  697, 1195,
2708      1195, 1195, 1195, 3329, 3329, 1195, 1195,  702,  702,  702,
2709       702, 3329,  702, 3329,  702, 1211, 1211, 1211, 1211, 3329,
2710      3329, 1211, 1211,  712,  712,  712, 3329, 3329, 3329,  712,
2711      1238, 1238, 1238, 1238, 3329, 3329, 1238, 1238, 1245, 1245,
2712      1245, 1245, 3329, 3329, 1245, 1245,  735,  735,  735, 3329,
2713      3329, 3329,  735, 1258, 1258, 1258, 1258, 3329, 3329, 1258,
2714      1258,  745,  745,  745, 3329, 3329, 3329,  745, 1270, 1270,
2715      1270, 1270, 3329, 3329, 1270, 1270,  751,  751,  751, 3329,
2716      3329, 3329,  751, 1275, 1275, 1275, 1275, 3329, 3329, 1275,
2717
2718      1275,  756,  756,  756, 3329, 3329, 3329,  756, 1286, 1286,
2719      1286, 1286, 3329, 3329, 1286, 1286,  764,  764,  764, 3329,
2720      3329, 3329,  764, 1294, 1294, 1294, 1294, 3329, 3329, 1294,
2721      1294,  769,  769,  769, 3329, 3329, 3329,  769, 1302, 1302,
2722      1302, 1302, 3329, 3329, 1302, 1302,  774,  774,  774, 3329,
2723      3329, 3329,  774, 1308, 1308, 1308, 1308, 3329, 3329, 1308,
2724      1308,  779,  779,  779, 3329, 3329, 3329,  779, 1323, 1323,
2725      1323, 1323, 3329, 3329, 1323, 1323,  790,  790,  790, 3329,
2726      3329, 3329,  790, 1329, 1329, 1329, 1329, 3329, 3329, 1329,
2727      1329,  799,  799,  799, 3329, 3329, 3329,  799, 1341, 1341,
2728
2729      1341, 1341, 3329, 3329, 1341, 1341,  808,  808,  808, 3329,
2730      3329, 3329,  808, 1350, 1350, 1350, 1350, 3329, 3329, 1350,
2731      1350,  813,  813,  813, 3329, 3329, 3329,  813, 1366, 1366,
2732      1366, 1366, 3329, 3329, 1366, 1366,  824,  824,  824,  824,
2733      3329,  824, 3329,  824, 1375, 1375, 1375, 1375, 3329, 3329,
2734      1375, 1375,  830,  830,  830, 3329, 3329, 3329,  830, 1383,
2735      1383, 1383, 1383, 3329, 3329, 1383, 1383,  835,  835,  835,
2736      3329, 3329, 3329,  835, 1393, 1393, 1393, 1393, 3329, 3329,
2737      1393, 1393,  842,  842,  842, 3329, 3329, 3329,  842, 1403,
2738      1403, 1403, 1403, 3329, 3329, 1403, 1403,  850,  850,  850,
2739
2740      3329, 3329, 3329,  850, 1414, 1414, 1414, 1414, 3329, 3329,
2741      1414, 1414,  858,  858,  858, 3329, 3329, 3329,  858, 1421,
2742      1421, 1421, 1421, 3329, 3329, 1421, 1421, 1098, 1098, 1098,
2743      1098, 1098, 1098, 1098, 1098, 1098, 1104, 3329, 1104, 3329,
2744      3329, 1104,  639,  639,  639, 3329, 3329, 3329,  639, 1115,
2745      1115, 1115, 1115, 3329, 3329, 1115, 1115,  673,  673,  673,
2746      3329, 3329, 3329,  673, 1162, 1162, 1162, 1162, 3329, 3329,
2747      1162, 1162,  681,  681,  681, 3329, 3329, 3329,  681, 1168,
2748      1168, 1168, 1168, 3329, 3329, 1168, 1168,  685,  685,  685,
2749      3329, 3329, 3329,  685, 1177, 1177, 1177, 1177, 3329, 3329,
2750
2751      1177, 1177,  691,  691,  691, 3329, 3329, 3329,  691, 1187,
2752      1187, 1187, 1187, 3329, 3329, 1187, 1187, 1195, 1195, 1195,
2753      1195, 3329, 3329, 1195, 1195,  702,  702,  702, 3329, 3329,
2754      3329,  702, 1211, 1211, 1211, 1211, 3329, 3329, 1211, 1211,
2755       712,  712,  712, 3329, 3329, 3329,  712, 1238, 1238, 1238,
2756      1238, 3329, 3329, 1238, 1238, 1245, 1245, 1245, 1245, 3329,
2757      3329, 1245, 1245,  735,  735,  735, 3329, 3329, 3329,  735,
2758      1258, 1258, 1258, 1258, 3329, 3329, 1258, 1258,  745,  745,
2759       745,  745, 3329,  745, 3329,  745, 1270, 1270, 1270, 1270,
2760      3329, 3329, 1270, 1270,  751,  751,  751,  751, 3329,  751,
2761
2762      3329,  751, 1275, 1275, 1275, 1275, 3329, 3329, 1275, 1275,
2763       756,  756,  756, 3329, 3329, 3329,  756, 1286, 1286, 1286,
2764      1286, 3329, 3329, 1286, 1286,  764,  764,  764, 3329, 3329,
2765      3329,  764, 1294, 1294, 1294, 1294, 3329, 3329, 1294, 1294,
2766       769,  769,  769, 3329, 3329, 3329,  769, 1302, 1302, 1302,
2767      1302, 3329, 3329, 1302, 1302,  774,  774,  774,  774, 3329,
2768       774, 3329,  774, 1308, 1308, 1308, 1308, 3329, 3329, 1308,
2769      1308,  779,  779,  779, 3329, 3329, 3329,  779, 1323, 1323,
2770      1323, 1323, 3329, 3329, 1323, 1323,  790,  790,  790, 3329,
2771      3329, 3329,  790, 1329, 1329, 1329, 1329, 3329, 3329, 1329,
2772
2773      1329,  799,  799,  799, 3329, 3329, 3329,  799, 1341, 1341,
2774      1341, 1341, 3329, 3329, 1341, 1341,  808,  808,  808, 3329,
2775      3329, 3329,  808, 1350, 1350, 1350, 1350, 3329, 3329, 1350,
2776      1350,  813,  813,  813, 3329, 3329, 3329,  813, 1366, 1366,
2777      1366, 1366, 3329, 3329, 1366, 1366,  824,  824,  824, 3329,
2778      3329, 3329,  824, 1375, 1375, 1375, 1375, 3329, 3329, 1375,
2779      1375,  830,  830,  830, 3329, 3329, 3329,  830, 1383, 1383,
2780      1383, 1383, 3329, 3329, 1383, 1383,  835,  835,  835, 3329,
2781      3329, 3329,  835, 1393, 1393, 1393, 1393, 3329, 3329, 1393,
2782      1393,  842,  842,  842, 3329, 3329, 3329,  842, 1403, 1403,
2783
2784      1403, 1403, 3329, 3329, 1403, 1403,  850,  850,  850,  850,
2785      3329,  850, 3329,  850, 1414, 1414, 1414, 1414, 3329, 3329,
2786      1414, 1414,  858,  858,  858, 3329, 3329, 3329,  858, 1421,
2787      1421, 1421, 1421, 3329, 3329, 1421, 1421, 1098, 1098, 1098,
2788      1098, 1098, 1098, 1098, 1098, 1098, 1629, 1629, 1629, 1629,
2789      1629, 1629, 1629, 1629, 1629,  639,  639,  639, 3329, 3329,
2790      3329,  639,  673,  673,  673, 3329, 3329, 3329,  673, 1162,
2791      1162, 1162, 1162, 3329, 3329, 1162, 1162,  681,  681,  681,
2792       681, 3329,  681, 3329,  681, 1168, 1168, 1168, 1168, 3329,
2793      3329, 1168, 1168,  685,  685,  685, 3329, 3329, 3329,  685,
2794
2795      1177, 1177, 1177, 1177, 3329, 3329, 1177, 1177,  691,  691,
2796       691, 3329, 3329, 3329,  691, 1187, 1187, 1187, 1187, 3329,
2797      3329, 1187, 1187, 1195, 1195, 1195, 1195, 3329, 3329, 1195,
2798      1195,  702,  702,  702, 3329, 3329, 3329,  702, 1211, 1211,
2799      1211, 1211, 3329, 3329, 1211, 1211,  712,  712,  712, 3329,
2800      3329, 3329,  712, 1238, 1238, 1238, 1238, 3329, 3329, 1238,
2801      1238, 1245, 1245, 1245, 1245, 3329, 3329, 1245, 1245,  735,
2802       735,  735, 3329, 3329, 3329,  735, 1258, 1258, 1258, 1258,
2803      3329, 3329, 1258, 1258, 1270, 1270, 1270, 1270, 3329, 3329,
2804      1270, 1270, 1275, 1275, 1275, 1275, 3329, 3329, 1275, 1275,
2805
2806       756,  756,  756, 3329, 3329, 3329,  756, 1286, 1286, 1286,
2807      1286, 3329, 3329, 1286, 1286,  764,  764,  764, 3329, 3329,
2808      3329,  764, 1294, 1294, 1294, 1294, 3329, 3329, 1294, 1294,
2809       769,  769,  769,  769, 3329,  769, 3329,  769, 1302, 1302,
2810      1302, 1302, 3329, 3329, 1302, 1302,  774,  774,  774, 3329,
2811      3329, 3329,  774, 1308, 1308, 1308, 1308, 3329, 3329, 1308,
2812      1308,  779,  779,  779, 3329, 3329, 3329,  779, 1323, 1323,
2813      1323, 1323, 3329, 3329, 1323, 1323,  790,  790,  790, 3329,
2814      3329, 3329,  790, 1329, 1329, 1329, 1329, 3329, 3329, 1329,
2815      1329,  799,  799,  799, 3329, 3329, 3329,  799, 1341, 1341,
2816
2817      1341, 1341, 3329, 3329, 1341, 1341,  808,  808,  808,  808,
2818      3329,  808, 3329,  808, 1350, 1350, 1350, 1350, 3329, 3329,
2819      1350, 1350,  813,  813,  813, 3329, 3329, 3329,  813, 1366,
2820      1366, 1366, 1366, 3329, 3329, 1366, 1366,  824,  824,  824,
2821      3329, 3329, 3329,  824, 1375, 1375, 1375, 1375, 3329, 3329,
2822      1375, 1375,  830,  830,  830, 3329, 3329, 3329,  830, 1383,
2823      1383, 1383, 1383, 3329, 3329, 1383, 1383,  835,  835,  835,
2824      3329, 3329, 3329,  835, 1393, 1393, 1393, 1393, 3329, 3329,
2825      1393, 1393,  842,  842,  842, 3329, 3329, 3329,  842, 1403,
2826      1403, 1403, 1403, 3329, 3329, 1403, 1403,  850,  850,  850,
2827
2828      3329, 3329, 3329,  850, 1414, 1414, 1414, 1414, 3329, 3329,
2829      1414, 1414,  858,  858,  858, 3329, 3329, 3329,  858, 1421,
2830      1421, 1421, 1421, 3329, 3329, 1421, 1421, 1098, 1098, 1098,
2831      1098, 1098, 1098, 1098, 1098, 1098, 1629, 1629, 1629, 1629,
2832      1629, 1629, 1629, 1629, 1629,  639,  639,  639, 3329, 3329,
2833      3329,  639,  673,  673,  673,  673, 3329,  673, 3329,  673,
2834      1162, 1162, 1162, 1162, 3329, 3329, 1162, 1162, 1168, 1168,
2835      1168, 1168, 3329, 3329, 1168, 1168,  685,  685,  685, 3329,
2836      3329, 3329,  685, 1177, 1177, 1177, 1177, 3329, 3329, 1177,
2837      1177,  691,  691,  691,  691, 3329,  691, 3329,  691, 1187,
2838
2839      1187, 1187, 1187, 3329, 3329, 1187, 1187, 1195, 1195, 1195,
2840      1195, 3329, 3329, 1195, 1195,  702,  702,  702,  702, 3329,
2841       702, 3329,  702, 1211, 1211, 1211, 1211, 3329, 3329, 1211,
2842      1211,  712,  712,  712, 3329, 3329, 3329,  712, 1238, 1238,
2843      1238, 1238, 3329, 3329, 1238, 1238, 1245, 1245, 1245, 1245,
2844      3329, 3329, 1245, 1245,  735,  735,  735, 3329, 3329, 3329,
2845       735, 1258, 1258, 1258, 1258, 3329, 3329, 1258, 1258, 1270,
2846      1270, 1270, 1270, 3329, 3329, 1270, 1270, 1275, 1275, 1275,
2847      1275, 3329, 3329, 1275, 1275,  756,  756,  756, 3329, 3329,
2848      3329,  756, 1286, 1286, 1286, 1286, 3329, 3329, 1286, 1286,
2849
2850       764,  764,  764, 3329, 3329, 3329,  764, 1294, 1294, 1294,
2851      1294, 3329, 3329, 1294, 1294, 1302, 1302, 1302, 1302, 3329,
2852      3329, 1302, 1302,  774,  774,  774, 3329, 3329, 3329,  774,
2853      1308, 1308, 1308, 1308, 3329, 3329, 1308, 1308,  779,  779,
2854       779, 3329, 3329, 3329,  779, 1323, 1323, 1323, 1323, 3329,
2855      3329, 1323, 1323,  790,  790,  790, 3329, 3329, 3329,  790,
2856      1329, 1329, 1329, 1329, 3329, 3329, 1329, 1329,  799,  799,
2857       799, 3329, 3329, 3329,  799, 1341, 1341, 1341, 1341, 3329,
2858      3329, 1341, 1341, 1350, 1350, 1350, 1350, 3329, 3329, 1350,
2859      1350,  813,  813,  813, 3329, 3329, 3329,  813, 1366, 1366,
2860
2861      1366, 1366, 3329, 3329, 1366, 1366,  824,  824,  824, 3329,
2862      3329, 3329,  824, 1375, 1375, 1375, 1375, 3329, 3329, 1375,
2863      1375,  830,  830,  830, 3329, 3329, 3329,  830, 1383, 1383,
2864      1383, 1383, 3329, 3329, 1383, 1383,  835,  835,  835,  835,
2865      3329,  835, 3329,  835, 1393, 1393, 1393, 1393, 3329, 3329,
2866      1393, 1393,  842,  842,  842, 3329, 3329, 3329,  842, 1403,
2867      1403, 1403, 1403, 3329, 3329, 1403, 1403,  850,  850,  850,
2868      3329, 3329, 3329,  850, 1414, 1414, 1414, 1414, 3329, 3329,
2869      1414, 1414,  858,  858,  858, 3329, 3329, 3329,  858, 1421,
2870      1421, 1421, 1421, 3329, 3329, 1421, 1421, 1098, 1098, 1098,
2871
2872      1098, 1098, 1098, 1098, 1098, 1098, 1629, 1629, 1629, 1629,
2873      1629, 1629, 1629, 1629, 1629,  639,  639,  639,  639, 3329,
2874       639, 3329,  639,  673,  673,  673, 3329, 3329, 3329,  673,
2875      1162, 1162, 1162, 1162, 3329, 3329, 1162, 1162, 1168, 1168,
2876      1168, 1168, 3329, 3329, 1168, 1168,  685,  685,  685, 3329,
2877      3329, 3329,  685, 1177, 1177, 1177, 1177, 3329, 3329, 1177,
2878      1177, 1187, 1187, 1187, 1187, 3329, 3329, 1187, 1187, 1195,
2879      1195, 1195, 1195, 3329, 3329, 1195, 1195,  702,  702,  702,
2880       702, 3329,  702, 3329,  702, 1211, 1211, 1211, 1211, 3329,
2881      3329, 1211, 1211,  712,  712,  712, 3329, 3329, 3329,  712,
2882
2883      1238, 1238, 1238, 1238, 3329, 3329, 1238, 1238, 1245, 1245,
2884      1245, 1245, 3329, 3329, 1245, 1245,  735,  735,  735, 3329,
2885      3329, 3329,  735, 1270, 1270, 1270, 1270, 3329, 3329, 1270,
2886      1270, 1275, 1275, 1275, 1275, 3329, 3329, 1275, 1275,  756,
2887       756,  756, 3329, 3329, 3329,  756,  764,  764,  764, 3329,
2888      3329, 3329,  764, 1294, 1294, 1294, 1294, 3329, 3329, 1294,
2889      1294, 1302, 1302, 1302, 1302, 3329, 3329, 1302, 1302,  774,
2890       774,  774, 3329, 3329, 3329,  774, 1308, 1308, 1308, 1308,
2891      3329, 3329, 1308, 1308,  779,  779,  779, 3329, 3329, 3329,
2892       779,  790,  790,  790,  790, 3329,  790, 3329,  790, 1329,
2893
2894      1329, 1329, 1329, 3329, 3329, 1329, 1329,  799,  799,  799,
2895      3329, 3329, 3329,  799, 1341, 1341, 1341, 1341, 3329, 3329,
2896      1341, 1341,  813,  813,  813, 3329, 3329, 3329,  813, 1366,
2897      1366, 1366, 1366, 3329, 3329, 1366, 1366,  824,  824,  824,
2898      3329, 3329, 3329,  824, 1375, 1375, 1375, 1375, 3329, 3329,
2899      1375, 1375,  830,  830,  830, 3329, 3329, 3329,  830, 1383,
2900      1383, 1383, 1383, 3329, 3329, 1383, 1383,  835,  835,  835,
2901       835, 3329,  835, 3329,  835, 1393, 1393, 1393, 1393, 3329,
2902      3329, 1393, 1393,  842,  842,  842,  842, 3329,  842, 3329,
2903       842, 1403, 1403, 1403, 1403, 3329, 3329, 1403, 1403,  850,
2904
2905       850,  850, 3329, 3329, 3329,  850, 1414, 1414, 1414, 1414,
2906      3329, 3329, 1414, 1414,  858,  858,  858,  858, 3329,  858,
2907      3329,  858, 1421, 1421, 1421, 1421, 3329, 3329, 1421, 1421,
2908      1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1629,
2909      1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629,  673,  673,
2910       673, 3329, 3329, 3329,  673, 1162, 1162, 1162, 1162, 3329,
2911      3329, 1162, 1162, 1168, 1168, 1168, 1168, 3329, 3329, 1168,
2912      1168,  685,  685,  685, 3329, 3329, 3329,  685, 1177, 1177,
2913      1177, 1177, 3329, 3329, 1177, 1177, 1187, 1187, 1187, 1187,
2914      3329, 3329, 1187, 1187, 1195, 1195, 1195, 1195, 3329, 3329,
2915
2916      1195, 1195, 1211, 1211, 1211, 1211, 3329, 3329, 1211, 1211,
2917       712,  712,  712, 3329, 3329, 3329,  712, 1238, 1238, 1238,
2918      1238, 3329, 3329, 1238, 1238, 1245, 1245, 1245, 1245, 3329,
2919      3329, 1245, 1245,  735,  735,  735, 3329, 3329, 3329,  735,
2920      1270, 1270, 1270, 1270, 3329, 3329, 1270, 1270, 1275, 1275,
2921      1275, 1275, 3329, 3329, 1275, 1275,  756,  756,  756, 3329,
2922      3329, 3329,  756,  764,  764,  764, 3329, 3329, 3329,  764,
2923      1294, 1294, 1294, 1294, 3329, 3329, 1294, 1294, 1302, 1302,
2924      1302, 1302, 3329, 3329, 1302, 1302,  774,  774,  774, 3329,
2925      3329, 3329,  774,  779,  779,  779, 3329, 3329, 3329,  779,
2926
2927      1329, 1329, 1329, 1329, 3329, 3329, 1329, 1329,  799,  799,
2928       799,  799, 3329,  799, 3329,  799, 1341, 1341, 1341, 1341,
2929      3329, 3329, 1341, 1341,  813,  813,  813, 3329, 3329, 3329,
2930       813, 1366, 1366, 1366, 1366, 3329, 3329, 1366, 1366,  824,
2931       824,  824, 3329, 3329, 3329,  824,  830,  830,  830, 3329,
2932      3329, 3329,  830, 1383, 1383, 1383, 1383, 3329, 3329, 1383,
2933      1383,  835,  835,  835, 3329, 3329, 3329,  835, 1393, 1393,
2934      1393, 1393, 3329, 3329, 1393, 1393,  842,  842,  842, 3329,
2935      3329, 3329,  842, 1403, 1403, 1403, 1403, 3329, 3329, 1403,
2936      1403,  850,  850,  850, 3329, 3329, 3329,  850, 1421, 1421,
2937
2938      1421, 1421, 3329, 3329, 1421, 1421, 1098, 1098, 1098, 1098,
2939      1098, 1098, 1098, 1098, 1098, 1629, 1629, 1629, 1629, 1629,
2940      1629, 1629, 1629, 1629,  673,  673,  673, 3329, 3329, 3329,
2941       673, 1162, 1162, 1162, 1162, 3329, 3329, 1162, 1162, 1168,
2942      1168, 1168, 1168, 3329, 3329, 1168, 1168,  685,  685,  685,
2943       685, 3329,  685, 3329,  685, 1177, 1177, 1177, 1177, 3329,
2944      3329, 1177, 1177, 1187, 1187, 1187, 1187, 3329, 3329, 1187,
2945      1187, 1195, 1195, 1195, 1195, 3329, 3329, 1195, 1195, 1211,
2946      1211, 1211, 1211, 3329, 3329, 1211, 1211,  712,  712,  712,
2947      3329, 3329, 3329,  712, 1238, 1238, 1238, 1238, 3329, 3329,
2948
2949      1238, 1238,  735,  735,  735, 3329, 3329, 3329,  735, 1270,
2950      1270, 1270, 1270, 3329, 3329, 1270, 1270, 1275, 1275, 1275,
2951      1275, 3329, 3329, 1275, 1275,  756,  756,  756,  756, 3329,
2952       756, 3329,  756,  764,  764,  764,  764, 3329,  764, 3329,
2953       764, 1294, 1294, 1294, 1294, 3329, 3329, 1294, 1294, 1302,
2954      1302, 1302, 1302, 3329, 3329, 1302, 1302,  774,  774,  774,
2955       774, 3329,  774, 3329,  774,  779,  779,  779, 3329, 3329,
2956      3329,  779, 1329, 1329, 1329, 1329, 3329, 3329, 1329, 1329,
2957       799,  799,  799,  799, 3329,  799, 3329,  799, 1341, 1341,
2958      1341, 1341, 3329, 3329, 1341, 1341,  813,  813,  813,  813,
2959
2960      3329,  813, 3329,  813,  824,  824,  824, 3329, 3329, 3329,
2961       824,  830,  830,  830, 3329, 3329, 3329,  830,  835,  835,
2962       835, 3329, 3329, 3329,  835, 1393, 1393, 1393, 1393, 3329,
2963      3329, 1393, 1393,  842,  842,  842, 3329, 3329, 3329,  842,
2964      1403, 1403, 1403, 1403, 3329, 3329, 1403, 1403,  850,  850,
2965       850, 3329, 3329, 3329,  850, 1421, 1421, 1421, 1421, 3329,
2966      3329, 1421, 1421, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
2967      1098, 1098, 1629, 1629, 1629, 1629, 1629, 1629, 1629, 1629,
2968      1629,  673,  673,  673, 3329, 3329, 3329,  673, 1168, 1168,
2969      1168, 1168, 3329, 3329, 1168, 1168, 1177, 1177, 1177, 1177,
2970
2971      3329, 3329, 1177, 1177, 1187, 1187, 1187, 1187, 3329, 3329,
2972      1187, 1187, 1195, 1195, 1195, 1195, 3329, 3329, 1195, 1195,
2973       712,  712,  712, 3329, 3329, 3329,  712,  735,  735,  735,
2974      3329, 3329, 3329,  735, 1270, 1270, 1270, 1270, 3329, 3329,
2975      1270, 1270,  756,  756,  756, 3329, 3329, 3329,  756, 2898,
2976      2898, 2898, 2898, 2898, 2898, 2898, 2898, 2898, 2899, 2899,
2977      2899, 2899, 2899, 2899, 2899, 2899, 2899, 2960, 2960, 2960,
2978      2960, 2960, 2960, 2960, 2960, 2960, 2963, 2963, 2963, 2963,
2979      2963, 2963, 2963, 2963, 2963, 3008, 3008, 3008, 3008, 3008,
2980      3008, 3008, 3008, 3008, 3010, 3010, 3010, 3010, 3010, 3010,
2981
2982      3010, 3010, 3010,  239, 3329, 3329, 3329, 3329, 3329, 3329,
2983      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2984      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2985      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2986      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2987      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2988      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
2989      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329
2990     } ;
2991
2992 static yyconst flex_int16_t yy_chk[11879] =
2993     {   0,
2994         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
2995         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
2996         4,   10,  331,    5,    0,    9,    6,    0,   10,    7,
2997         8,    8,    8,  244,   11,   13,   13,   12,   14,   14,
2998        13,   13,  282,   14,   14,  245,    8,   17,   17,  244,
2999        13,   15,   15,   14,   15,  248,   15,   16,   16, 1020,
3000        16,  245,   16,   18,   18, 1020,   15,   21,   21,   21,
3001       331,  248,   16,   22,   22,   22,   23,   23,   23,   24,
3002        24,   24,  355,   21,   25,   25,   25,  355, 1460,   22,
3003       343,   17,   23, 1463,  282,   24,  242,  242,  242, 1464,
3004
3005        25,  243,  243,  243,  247,  247,  247,   18,   19,   19,
3006        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
3007        19,   19,   19,  402,   19,   19,   19,   19,   19,   26,
3008        26,   26,   27,   27,   27,   28,   28,   28,  343,   29,
3009        29,   29,   30,   30,   30,   26,  270,  287,   27,  291,
3010       366,   28,  301,   19,   19,   29,  291,  438,   30,  267,
3011       267,  267,  270,  287,   19,  275,  275,  275,  301,  438,
3012       258,  366,  402,   19,   20,   20,   20,   20,   20,   20,
3013        20,   20,   20,   20,   20,   20,   20,   20,   20,  544,
3014        20,   20,   20,   20,   20,   31,   31,   31,   32,   32,
3015
3016        32,   33,   33,   33,  544,   34,   34,   34,   35,   35,
3017        35,   31,  258,  633,   32,  559,  633,   33,  258,   20,
3018        20,   34,  306,  258,   35,   36,   36,   36,  258,  306,
3019        20,   37,   37,   37,   38,   38,   38,  737,  306,   20,
3020       737,   36,   39,   39,   39, 1465,  311,   37, 1466,  323,
3021        38,   40,   40,   40,  284,  284,  284,  377,   39,  293,
3022       293,  293,  311,  559,  294,  323, 1467,   40,   41,   41,
3023        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
3024        41,   41,   41,  597,   41,   41,   41,   41,   41,   43,
3025        43,   43,   44,   44,   44,   45,   45,   45,  388,   46,
3026
3027        46,   46,   47,   47,   47,   43,  371,  652,   44,  377,
3028      1471,   45,  294,   41,   41,   46,  294,  336,   47,   41,
3029       371,  652,   41,  298,  298,  298,  305,  305,  305,  308,
3030       308,  308,  597,  336,   41,   42,   42,   42,   42,   42,
3031        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
3032       388,   42,   42,   42,   42,   42,   48,   48,   48,   49,
3033        49,   49,   50,   50,   50,  369,   53,   53,   53,   54,
3034        54,   54,   48,  369, 1472,   49,  645,  318,   50,  369,
3035        42,   42,   53,  399,  318,   54,   42,  399,  404,   42,
3036       317,  317,  317,  318,  320,  320,  320,  329,  329,  329,
3037
3038       645,   42,   51,   51,   51,   51,   51,   51,   51,   51,
3039        51,   51,   51,   51,   51,   51,   51,  624,   51,   51,
3040        51,   51,   51,   57,   57,   57,   58,   58,   58,   61,
3041        61,   61,  624,   62,   62,   62,   63,   63,   63,   57,
3042       404, 1476,   58, 1481,  657,   61,  667,   51,   51,   62,
3043       348,  363,   63,   64,   64,   64,  333,  333,  333,  341,
3044       341,  341,  345,  345,  345,  520,  348,  363,  657,   64,
3045       667,   51,   52,   52,   52,   52,   52,   52,   52,   52,
3046        52,   52,   52,   52,   52,   52,   52,  670,   52,   52,
3047        52,   52,   52,   65,   65,   65,   66,   66,   66,   67,
3048
3049        67,   67,  520,   68,   68,   68,   71,   71,   71,   65,
3050       487,  670,   66,  358,  487,   67, 1482,   52,   52,   68,
3051       358,  854,   71,   72,   72,   72,  357,  357,  357,  358,
3052       360,  360,  360,  375,  375,  375,  379,  379,  379,   72,
3053      1487,   52,   55,   55,   55,   55,   55,   55,   55,   55,
3054        55,   55,   55,   55,   55,   55,   55,  854,   55,   55,
3055        55,   55,   55,   73,   73,   73,   74,   74,   74,   75,
3056        75,   75,  663,   76,   76,   76,   77,   77,   77,   73,
3057       382,  393,   74,  409,  421,   75,  663,   55,   55,   76,
3058      1488,   55,   77,  386,  386,  386,  382,  393,   55,  409,
3059
3060       421,   55,   56,   56,   56,   56,   56,   56,   56,   56,
3061        56,   56,   56,   56,   56,   56,   56, 1503,   56,   56,
3062        56,   56,   56,   78,   78,   78,   81,   81,   81,   82,
3063        82,   82,  669,   85,   85,   85,   86,   86,   86,   78,
3064       428,  433,   81,  416,  447,   82,  669,   56,   56,   85,
3065       416,   56,   86,  390,  390,  390, 1504,  433,   56,  416,
3066       447,   56,   59,   59,   59,   59,   59,   59,   59,   59,
3067        59,   59,   59,   59,   59,   59,   59, 1506,   59,   59,
3068        59,   59,   59,   87,   87,   87,   88,   88,   88,   89,
3069        89,   89,  428,   90,   90,   90,   91,   91,   91,   87,
3070
3071      1101, 1508,   88, 1510, 1101,   89,  372,   59,   59,   90,
3072       453,  458,   91,   59,  372,  442,   59,  453,  372,  372,
3073       401,  401,  401,  406,  406,  406,  453,  458,   59,   60,
3074        60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
3075        60,   60,   60,   60, 1511,   60,   60,   60,   60,   60,
3076        92,   92,   92,   95,   95,   95,   96,   96,   96,  502,
3077        97,   97,   97,   98,   98,   98,   92,  442, 1133,   95,
3078      1517, 1518,   96, 1519,   60,   60,   97,  469,  480,   98,
3079        60, 1133,  504,   60,  415,  415,  415,  418,  418,  418,
3080       425,  425,  425,  469,  480,   60,   69,   69,   69,   69,
3081
3082        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
3083        69,  502,   69,   69,   69,   69,   69,   99,   99,   99,
3084       100,  100,  100,  101,  101,  101,  506,  102,  102,  102,
3085       105,  105,  105,   99,  504, 1520,  100, 1521, 1522,  101,
3086      1524,   69,   69,  102,  496,  491,  105,   69,  430,  430,
3087       430,  440,  440,  440,  444,  444,  444,  452,  452,  452,
3088       496,  491,   69,   70,   70,   70,   70,   70,   70,   70,
3089        70,   70,   70,   70,   70,   70,   70,   70,  506,   70,
3090        70,   70,   70,   70,  106,  106,  106,  107,  107,  107,
3091       108,  108,  108,  522,  109,  109,  109,  110,  110,  110,
3092
3093       106, 1525, 1526,  107,  491,  464,  108, 1527,   70,   70,
3094       109,  891,  464,  110,   70,  455,  455,  455,  463,  463,
3095       463,  464,  466,  466,  466,  474,  474,  474,  891,   70,
3096        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
3097        79,   79,   79,   79,   79,  522,   79,   79,   79,   79,
3098        79,  111,  111,  111,  112,  112,  112,  115,  115,  115,
3099       584,  116,  116,  116,  119,  119,  119,  111,  511,  527,
3100       112,  475,  538,  115, 1424,   79,   79,  116,  475,   79,
3101       119,  477,  477,  477,  511,  527,   79,  475,  538,   79,
3102       489,  489,  489,   79, 1424,   79,   79,   80,   80,   80,
3103
3104        80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
3105        80,   80,  584,   80,   80,   80,   80,   80,  120,  120,
3106       120,  121,  121,  121,  122,  122,  122,  671,  123,  123,
3107       123,  124,  124,  124,  120,  552,  564,  121,  490,  575,
3108       122,  671,   80,   80,  123,  490,   80,  124,  493,  493,
3109       493,  552,  564,   80,  490,  575,   80,  500,  500,  500,
3110        80, 1530,   80,   80,   83,   83,   83,   83,   83,   83,
3111        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3112        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3113        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3114
3115        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3116        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3117        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3118        83,   83,   83,   83,   83,   83,   83,   83,   93,   93,
3119        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
3120        93,   93,   93, 1531,   93,   93,   93,   93,   93,  125,
3121       125,  125,  126,  126,  126,  129,  129,  129, 1534,  130,
3122       130,  130,  131,  131,  131,  125,  503,  589,  126, 1536,
3123       555,  129,  542,   93,   93,  130,  542,  555,  131,  503,
3124       542,  503,  599,  589,   93,   94,   94,   94,   94,   94,
3125
3126        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
3127      1538,   94,   94,   94,   94,   94,  132,  132,  132,  133,
3128       133,  133,  134,  134,  134,  646,  135,  135,  135,  136,
3129       136,  136,  132, 1545,  604,  133,  646, 1546,  134,  646,
3130        94,   94,  135, 1547,  599,  136,  508,  508,  508,  280,
3131       604,   94,  103,  103,  103,  103,  103,  103,  103,  103,
3132       103,  103,  103,  103,  103,  103,  103, 1548,  103,  103,
3133       103,  103,  103,  139,  139,  139,  140,  140,  140,  143,
3134       143,  143,  658,  144,  144,  144, 1550,  280,  615,  139,
3135       865, 1556,  140,  658, 1138,  143,  658,  103,  103,  144,
3136
3137       103,  280,  103,  280,  615,  280,  865, 1138,  103,  519,
3138       519,  519,  524,  524,  524,  103,  501,  985,  103,  104,
3139       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
3140       104,  104,  104,  104,  985,  104,  104,  104,  104,  104,
3141       147,  147,  147,  148,  148,  148,  151,  151,  151,  793,
3142       152,  152,  152, 1558, 1560,  501,  147, 1084, 1561,  148,
3143       793, 1566,  151,  793,  104,  104,  152,  104,  501,  104,
3144       501,  532,  532,  532, 1084,  104,  535,  535,  535,  546,
3145       546,  546,  104, 1568, 1569,  104,  113,  113,  113,  113,
3146       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
3147
3148       113, 1571,  113,  113,  113,  113,  113,  153,  153,  153,
3149       154,  154,  154,  157,  157,  157,  795,  158,  158,  158,
3150       159,  159,  159,  153, 1572, 1573,  154,  533,  547,  157,
3151       795,  113,  113,  158,  533,  547,  159,  113,  549,  549,
3152       549, 1574,  113,  533,  547,  557,  557,  557,  561,  561,
3153       561,  569,  569,  569,  113,  114,  114,  114,  114,  114,
3154       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
3155      1577,  114,  114,  114,  114,  114,  160,  160,  160,  161,
3156       161,  161,  162,  162,  162, 1578,  163,  163,  163,  164,
3157       164,  164,  160, 1579, 1581,  161,  570,  651,  162, 1584,
3158
3159       114,  114,  163,  570,  651,  164,  114,  572,  572,  572,
3160       651,  114,  570,  582,  582,  582,  586,  586,  586,  596,
3161       596,  596, 1593,  114,  117,  117,  117,  117,  117,  117,
3162       117,  117,  117,  117,  117,  117,  117,  117,  117, 1596,
3163       117,  117,  117,  117,  117,  165,  165,  165,  166,  166,
3164       166,  167,  167,  167,  796,  168,  168,  168,  169,  169,
3165       169,  165, 1604, 1236,  166,  796, 1606,  167,  796,  117,
3166       117,  168, 1608, 1609,  169, 1236, 1610,  117,  118,  118,
3167       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
3168       118,  118,  118, 1612,  118,  118,  118,  118,  118,  170,
3169
3170       170,  170,  171,  171,  171,  172,  172,  172, 1617,  173,
3171       173,  173,  174,  174,  174,  170, 1333, 1620,  171, 1621,
3172      1623,  172, 1628,  118,  118,  173, 1629, 1632,  174, 1333,
3173      1635,  118,  127,  127,  127,  127,  127,  127,  127,  127,
3174       127,  127,  127,  127,  127,  127,  127, 1628,  127,  127,
3175       127,  127,  127,  175,  175,  175,  176,  176,  176,  179,
3176       179,  179, 1636,  180,  180,  180,  181,  181,  181,  175,
3177      1637, 1638,  176,  609, 1639,  179, 1640,  127,  127,  180,
3178       609,  127,  181,  601,  601,  601, 1641, 1642,  127,  609,
3179      1644,  127,  612,  612,  612,  621,  621,  621,  127,  128,
3180
3181       128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
3182       128,  128,  128,  128, 1645,  128,  128,  128,  128,  128,
3183       182,  182,  182,  183,  183,  183,  184,  184,  184, 1647,
3184       185,  185,  185,  186,  186,  186,  182, 1648, 1651,  183,
3185       622, 1652,  184, 1654,  128,  128,  185,  622,  128,  186,
3186       623,  623,  623, 1656, 1659,  128,  622, 1660,  128,  632,
3187       632,  632, 1118, 1118, 1118,  128,  137,  137,  137,  137,
3188       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
3189       137, 1661,  137,  137,  137,  137,  137,  189,  189,  189,
3190       190,  190,  190,  193,  193,  193, 1662,  194,  194,  194,
3191
3192       197,  197,  197,  189, 1663, 1665,  190,  655,  662,  193,
3193      1666,  137,  137,  194,  655,  662,  197,  137,  632, 1670,
3194       655,  662,  137,  138,  138,  138,  138,  138,  138,  138,
3195       138,  138,  138,  138,  138,  138,  138,  138, 1678,  138,
3196       138,  138,  138,  138,  198,  198,  198,  199,  199,  199,
3197       200,  200,  200, 1682,  201,  201,  201,  202,  202,  202,
3198       198, 1683, 1695,  199,  668,  794,  200, 1699,  138,  138,
3199       201,  668,  794,  202,  138, 1703, 1704,  668,  794,  138,
3200       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
3201       141,  141,  141,  141,  141, 1706,  141,  141,  141,  141,
3202
3203       141,  203,  203,  203,  204,  204,  204,  207,  207,  207,
3204      1707,  208,  208,  208,  211,  211,  211,  203, 1708, 1711,
3205       204,  797, 1713,  207, 1714,  141,  141,  208,  797, 1717,
3206       211,  212,  212,  212,  797, 1718,  141,  868,  868,  868,
3207      1725,  868, 1139, 1139, 1139, 1736, 1737,  212, 1738,  141,
3208       142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
3209       142,  142,  142,  142,  142, 1739,  142,  142,  142,  142,
3210       142,  213,  213,  213,  214,  214,  214,  215,  215,  215,
3211      1741,  216,  216,  216,  217,  217,  217,  213,  952, 1749,
3212       214, 1751, 1755,  215, 1758,  142,  142,  216,  952, 1760,
3213
3214       217,  218,  218,  218, 1761,  952,  142,  877,  877,  877,
3215      1763,  877, 1764, 1765,  877, 1766, 1770,  218, 1771,  142,
3216       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
3217       145,  145,  145,  145,  145, 1772,  145,  145,  145,  145,
3218       145,  221,  221,  221,  222,  222,  222,  223,  223,  223,
3219      1774,  224,  224,  224,  225,  225,  225,  221, 1778, 1782,
3220       222, 1786, 1788,  223, 1790,  145,  145,  224, 1796, 1803,
3221       225, 1440, 1440, 1440, 1442, 1442, 1442, 1807,  881,  881,
3222       881,  145,  900,  900,  900, 1808,  145,  146,  146,  146,
3223       146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
3224
3225       146,  146, 1810,  146,  146,  146,  146,  146,  226,  226,
3226       226,  227,  227,  227,  228,  228,  228, 1440, 1822, 1823,
3227      1442,  640,  640,  640,  226, 1824, 1826,  227, 1827, 1829,
3228       228, 1825,  146,  146,  231,  231,  232,  232,  640,  231,
3229       426,  232,  881,  912,  912,  912,  900, 1825,  146,  231,
3230       426,  232, 1817,  146,  149,  149,  149,  149,  149,  149,
3231       149,  149,  149,  149,  149,  149,  149,  149,  149, 1817,
3232       149,  149,  149,  149,  149,  235,  235,  235,  231,  426,
3233       232,  236,  236,  236, 1830,  426, 1831, 1832,  687,  687,
3234       687,  235,  426,  879,  879,  879,  426,  236,  279,  149,
3235
3236       149, 1834,  149,  149,  149,  687, 1818,  912,  279, 1835,
3237       149,  879, 1839,  149,  996,  996,  996, 1445, 1445, 1445,
3238       149,  150,  150,  150,  150,  150,  150,  150,  150,  150,
3239       150,  150,  150,  150,  150,  150,  279,  150,  150,  150,
3240       150,  150,  703,  703,  703,  704,  704,  704, 1818, 1841,
3241       279, 1842,  279, 1819,  279,  715,  715,  715, 1843,  703,
3242      1844, 1845,  704,  919,  919,  919,  150,  150, 1846,  150,
3243       150,  150,  715, 1448, 1448, 1448, 1844,  150,  996, 1847,
3244       150,  919, 1453, 1453, 1453, 1848, 1819,  150,  155,  155,
3245       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
3246
3247       155,  155,  155, 1851,  155,  155,  155,  155,  155,  717,
3248       717,  717,  732,  732,  732,  738,  738,  738,  747,  747,
3249       747,  748,  748,  748, 1853, 1858,  717, 1860, 1865,  732,
3250      1883, 1889,  738,  155,  155,  747, 1890, 1891,  748,  758,
3251       758,  758,  927,  927,  927, 1895,  927, 1896, 1900,  927,
3252      1903, 1459, 1459, 1459, 1904, 1907,  758,  155,  156,  156,
3253       156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
3254       156,  156,  156, 1908,  156,  156,  156,  156,  156,  766,
3255       766,  766,  770,  770,  770,  783,  783,  783,  809,  809,
3256       809,  815,  815,  815, 1914, 1920,  766, 1459, 1922,  770,
3257
3258      1923, 1926,  783,  156,  156,  809, 1932, 1934,  815,  832,
3259       832,  832,  941,  941,  941, 1940,  941, 1944, 1947,  941,
3260      1951, 1461, 1461, 1461, 1953, 1954,  832,  156,  177,  177,
3261       177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
3262       177,  177,  177, 1955,  177,  177,  177,  177,  177,  838,
3263       838,  838,  844,  844,  844,  852,  852,  852,  876,  876,
3264       876,  915,  915,  915, 1956, 1958,  838, 1461, 1964,  844,
3265      1966, 1968,  852,  177,  177,  876, 1970, 1983,  915, 1984,
3266      1985,  177, 1988,  177, 1989, 1991,  177, 1462, 1462, 1462,
3267       177, 1643, 1643, 1643,  177,  178,  178,  178,  178,  178,
3268
3269       178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
3270      1992,  178,  178,  178,  178,  178, 1993,  880,  880,  880,
3271       917,  917,  917, 1995,  923,  923,  923,  916,  916,  916,
3272       918,  918,  918, 1812, 2006,  880, 2007,  917, 1990, 1812,
3273       178,  178,  923, 1812,  916, 2000, 1990,  918,  178, 1812,
3274       178, 2000, 2008,  178,  880, 2009, 2002,  178, 1646, 1646,
3275      1646,  178,  187,  187,  187,  187,  187,  187,  187,  187,
3276       187,  187,  187,  187,  187,  187,  187,  916,  187,  187,
3277       187,  187,  187,  920,  920,  920,  926,  926,  926,  918,
3278      2013, 1994,  916,  924,  924,  924,  929,  929,  929, 1994,
3279
3280      2015,  920, 2002,  926,  931,  931,  931,  187,  187, 2016,
3281      2017,  924, 2022, 2024,  929,  943,  943,  943,  187,  943,
3282       920,  931,  943,  954,  954,  954, 2025,  954, 2026, 2029,
3283       954,  187,  188,  188,  188,  188,  188,  188,  188,  188,
3284       188,  188,  188,  188,  188,  188,  188, 2033,  188,  188,
3285       188,  188,  188,  930,  930,  930, 2040,  924,  933,  933,
3286       933,  934,  934,  934,  935,  935,  935,  932,  932,  932,
3287      2042,  930,  936,  936,  936,  933, 2044,  188,  188,  934,
3288      2065, 2069,  935, 2070,  932, 1649, 1649, 1649,  188,  936,
3289       957,  957,  957, 2071,  957, 2077, 2078,  957, 2079, 2083,
3290
3291       930,  188,  191,  191,  191,  191,  191,  191,  191,  191,
3292       191,  191,  191,  191,  191,  191,  191,  932,  191,  191,
3293       191,  191,  191,  937,  937,  937,  938,  938,  938,  940,
3294       940,  940,  932, 2087, 2088,  935,  939,  939,  939, 2092,
3295       937,  949,  949,  949,  938, 2095,  940,  191,  191,  942,
3296       942,  942, 2098, 2001,  939, 2099,  191, 2100,  191,  949,
3297      2101, 2104,  191, 1650, 1650, 1650,  942,  191,  191,  192,
3298       192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
3299       192,  192,  192,  192, 2001,  192,  192,  192,  192,  192,
3300      2107,  944,  944,  944, 2111,  953,  953,  953, 2112,  945,
3301
3302       945,  945,  946,  946,  946, 2113, 2125,  939,  944,  947,
3303       947,  947,  953, 2126,  192,  192,  945, 2129, 2131,  946,
3304       972,  972,  972,  192,  972,  192,  947,  972, 2134,  192,
3305      1478, 1478, 1478, 2141,  192,  192,  195,  195,  195,  195,
3306       195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
3307       195,  945,  195,  195,  195,  195,  195,  946, 2148, 2150,
3308       947, 2151, 2152,  956,  956,  956,  948,  948,  948,  958,
3309       958,  958,  969,  969,  969, 2157, 1478,  950,  950,  950,
3310       956,  195,  195,  948, 2158, 2159,  958,  195, 2160, 2161,
3311       969, 2162,  979,  979,  979,  950,  979, 2163, 2164,  979,
3312
3313      2165, 2166,  195,  196,  196,  196,  196,  196,  196,  196,
3314       196,  196,  196,  196,  196,  196,  196,  196,  948,  196,
3315       196,  196,  196,  196,  950, 2177, 2178,  970,  970,  970,
3316       971,  971,  971,  973,  973,  973, 2181,  974,  974,  974,
3317       978,  978,  978, 2184, 2188,  970, 2189,  971,  196,  196,
3318      2192,  973, 2193, 2196,  196,  974, 2169,  978,  988,  988,
3319       988, 2170,  988, 2199, 2200,  988, 1653, 1653, 1653,  196,
3320       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
3321       205,  205,  205,  205,  205,  970,  205,  205,  205,  205,
3322       205,  983,  983,  983,  984,  984,  984, 1813,  974, 2169,
3323
3324       987,  987,  987, 1813,  989,  989,  989, 1813, 2170,  983,
3325      2201, 2216,  984, 1813, 2217,  205,  205,  987, 2218, 2224,
3326       205,  989, 1658, 1658, 1658, 2225,  205,  206,  206,  206,
3327       206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
3328       206,  206, 2219,  206,  206,  206,  206,  206, 2226,  990,
3329       990,  990, 2219,  990, 2232,  984,  990,  991,  991,  991,
3330       992,  992,  992,  994,  994,  994, 2233,  999,  999,  999,
3331      2234,  999,  206,  206,  999,  991, 2248,  206,  992, 2249,
3332      2250,  994, 2271,  206,  209,  209,  209,  209,  209,  209,
3333       209,  209,  209,  209,  209,  209,  209,  209,  209, 2272,
3334
3335       209,  209,  209,  209,  209, 2278, 2283,  995,  995,  995,
3336       998,  998,  998, 1003, 1003, 1003, 2285, 2286, 1004, 1004,
3337      1004,  992, 1006, 1006, 1006,  995, 2291,  998, 2292,  209,
3338       209, 1003,  209, 2293,  209, 2294, 1004, 2295, 2296, 1006,
3339       209, 1007, 1007, 1007, 2297, 1007, 2298, 2299, 1007, 2300,
3340      2305,  209,  210,  210,  210,  210,  210,  210,  210,  210,
3341       210,  210,  210,  210,  210,  210,  210,  995,  210,  210,
3342       210,  210,  210, 1004, 1008, 1008, 1008, 1010, 1010, 1010,
3343      2306, 1013, 1013, 1013, 2308, 2309, 1009, 1009, 1009, 1011,
3344      1011, 1011, 1008, 1011, 1010, 2310, 1011,  210,  210, 1013,
3345
3346       210, 2307,  210, 2303, 1009, 1023, 1023, 1023,  210, 1023,
3347      2307, 2304, 1023, 1657, 1657, 1657, 1664, 1664, 1664,  210,
3348       219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
3349       219,  219,  219,  219,  219, 2303,  219,  219,  219,  219,
3350       219, 1009, 1017, 1017, 1017, 1022, 1022, 1022, 2304, 1014,
3351      1014, 1014, 2311, 1018, 1018, 1018, 1024, 1024, 1024, 1657,
3352      1017, 2313, 1022, 2312, 2314,  219,  219, 1014, 2317, 2318,
3353       219, 1018, 2312, 1024, 2321, 2323,  219, 1045, 1045, 1045,
3354       219, 1045, 2324, 2326, 1045, 2327,  219,  220,  220,  220,
3355       220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
3356
3357       220,  220, 2329,  220,  220,  220,  220,  220, 2330, 2331,
3358      1014, 1027, 1027, 1027, 1018, 1667, 1667, 1667, 1028, 1028,
3359      1028, 1031, 1031, 1031, 1032, 1032, 1032, 2343, 2344, 1027,
3360      2345, 2346,  220,  220, 2347, 2350, 1028,  220, 2352, 1031,
3361      2358, 2359, 1032,  220, 1051, 1051, 1051,  220, 1051, 2366,
3362      2367, 1051, 2368,  220,  229,  229,  229,  229,  229,  229,
3363       229,  229,  229,  229,  229,  229,  229,  229,  229, 1028,
3364       229,  229,  229,  229,  229, 1041, 1041, 1041, 1042, 1042,
3365      1042, 2354, 1032, 2376, 1044, 1044, 1044, 1047, 1047, 1047,
3366      1048, 1048, 1048, 1041, 2354, 2377, 1042, 2394, 2355,  229,
3367
3368       229, 1044, 1067, 1067, 1067, 1047, 1067,  229, 1048, 1067,
3369       229, 2355, 1655, 1655, 1655, 2395, 2396,  229,  230,  230,
3370       230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
3371       230,  230,  230, 2399,  230,  230,  230,  230,  230, 1050,
3372      1050, 1050, 1042, 1052, 1052, 1052, 2401, 2402, 1054, 1054,
3373      1054, 1058, 1058, 1058, 1048, 2403, 1050, 1059, 1059, 1059,
3374      1052, 2404, 2405,  230,  230, 1054, 1073, 1073, 1073, 1058,
3375      1073,  230, 2406, 1073,  230, 1059, 1655, 1668, 1668, 1668,
3376      2407,  230,  233,  233,  233,  233,  233,  233,  233,  233,
3377       233,  233,  233,  233,  233,  233,  233, 2408,  233,  233,
3378
3379       233,  233,  233, 2409, 1059, 1060, 1060, 1060, 1061, 1061,
3380      1061, 2410, 1062, 1062, 1062, 1063, 1063, 1063, 1064, 1064,
3381      1064, 2411, 1060, 2412, 2417, 1061, 2418,  233,  233, 1062,
3382      1066, 1066, 1066, 1063,  233, 2416, 1064, 1079, 1079, 1079,
3383       233, 1079, 2419, 2420, 1079, 2421, 2422, 1066, 2423,  233,
3384       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
3385       234,  234,  234,  234,  234, 2424,  234,  234,  234,  234,
3386       234, 1062, 1068, 1068, 1068, 1069, 1069, 1069, 2416, 1064,
3387      1072, 1072, 1072, 1075, 1075, 1075, 1076, 1076, 1076, 2415,
3388      1068, 2425, 2426, 1069, 2427,  234,  234, 1072, 1078, 1078,
3389
3390      1078, 1075,  234, 2414, 1076, 1082, 1082, 1082,  234, 1083,
3391      1083, 1083, 1086, 1086, 1086, 1078, 2428,  234,  276, 1671,
3392      1671, 1671, 2429, 1082, 2430,  276, 2415, 1083, 2433, 1086,
3393      1090, 1090, 1090, 2434,  276,  276, 1069, 1087, 1087, 1087,
3394      2435, 1087, 2436, 2414, 1087, 1727, 1727, 1727, 1090, 1091,
3395      1091, 1091, 1076, 1096, 1096, 1096, 2438, 2439, 1097, 1097,
3396      1097, 2450,  276,  276,  276, 1671, 2451, 1091, 2452,  276,
3397       276, 1096, 2454,  276,  276, 1083, 1097,  276, 2458,  276,
3398       276,  276,  278, 1110, 1110, 1110, 2461, 1110, 2463, 2465,
3399      1110, 1114, 1114, 1114, 1115, 1115, 1115, 2466,  278,  278,
3400
3401      1117, 1117, 1117, 1154, 1154, 1154, 1158, 1158, 1158, 1114,
3402      2462, 2474, 1115, 1091, 1161, 1161, 1161, 2475, 1117, 2476,
3403      1154, 2462, 1097, 1158, 2464, 2488,  278,  278,  278, 1828,
3404      1828, 1828, 1161,  278,  278, 2464, 2507,  278,  278, 2502,
3405      2508,  278, 2512,  278,  278,  278, 1155, 1155, 1155, 2502,
3406      1155, 2513, 2502, 1155, 1159, 1159, 1159, 2514, 1159, 2515,
3407      2516, 1159, 1162, 1162, 1162, 1164, 1164, 1164, 1167, 1167,
3408      1167, 1168, 1168, 1168, 1170, 1170, 1170, 1172, 1172, 1172,
3409      1162, 1172, 2517, 1164, 1172, 2518, 1167, 2519, 2520, 1168,
3410      2521, 2526, 1170, 1176, 1176, 1176, 1177, 1177, 1177, 1179,
3411
3412      1179, 1179, 1180, 1180, 1180, 1181, 1181, 1181, 2527, 1181,
3413      2528, 1176, 1181, 2529, 1177, 2530, 2531, 1179, 2532, 1180,
3414      1184, 1184, 1184, 2533, 1185, 1185, 1185, 1170, 1185, 1164,
3415      2534, 1185, 1186, 1186, 1186, 2535, 2536, 1184, 1187, 1187,
3416      1187, 1189, 1189, 1189, 1190, 1190, 1190, 2503, 1179, 2537,
3417      1186, 1191, 1191, 1191, 2538, 1191, 1187, 2503, 1191, 1189,
3418      2503, 1190, 1192, 1192, 1192, 1193, 1193, 1193, 2524, 1193,
3419      2525, 2523, 1193, 1194, 1194, 1194, 1195, 1195, 1195, 1192,
3420      1197, 1197, 1197, 1198, 1198, 1198, 2541, 1198, 2542, 2543,
3421      1198, 1194, 2545, 2546, 1195, 1201, 1201, 1201, 1197, 1201,
3422
3423      2523, 2551, 1201, 1189, 1204, 1204, 1204, 1205, 1205, 1205,
3424      2524, 1205, 2525, 2552, 1205, 1210, 1210, 1210, 1211, 1211,
3425      1211, 1204, 1213, 1213, 1213, 1218, 1218, 1218, 2557, 1218,
3426      2561, 2562, 1218, 1210, 2563, 2564, 1211, 1221, 1221, 1221,
3427      1213, 2565, 1197, 1222, 1222, 1222, 2566, 1222, 2567, 2568,
3428      1222, 1225, 1225, 1225, 1221, 1226, 1226, 1226, 2576, 1226,
3429      2578, 2582, 1226, 1237, 1237, 1237, 2172, 2172, 1225, 2172,
3430      1213, 1238, 1238, 1238, 1240, 1240, 1240, 2172, 1241, 1241,
3431      1241, 1237, 1241, 2583, 2172, 1241, 1244, 1244, 1244, 1238,
3432      2584, 2585, 1240, 1245, 1245, 1245, 1247, 1247, 1247, 1250,
3433
3434      1250, 1250, 2586, 2587, 1244, 1251, 1251, 1251, 2589, 1251,
3435      2601, 1245, 1251, 2602, 1247, 2604, 1250, 1257, 1257, 1257,
3436      1258, 1258, 1258, 2480, 1260, 1260, 1260, 1262, 1262, 1262,
3437      1263, 1263, 1263, 2480, 1263, 1257, 2605, 1263, 1258, 2480,
3438      2618, 1240, 1260, 2619, 1262, 1266, 1266, 1266, 2620, 1266,
3439      2621, 2623, 1266, 1269, 1269, 1269, 1247, 1270, 1270, 1270,
3440      1272, 1272, 1272, 1273, 1273, 1273, 1274, 1274, 1274, 2624,
3441      2625, 1269, 1275, 1275, 1275, 1270, 2626, 2630, 1272, 2632,
3442      1273, 1277, 1277, 1277, 1274, 1285, 1285, 1285, 2633, 1260,
3443      1275, 1279, 1279, 1279, 2629, 1279, 2634, 2596, 1279, 1277,
3444
3445      1286, 1286, 1286, 1285, 1288, 1288, 1288, 1290, 1290, 1290,
3446      2596, 1290, 2630, 2481, 1290, 1293, 1293, 1293, 1286, 1294,
3447      1294, 1294, 1288, 2481, 2635, 1272, 1296, 1296, 1296, 2481,
3448      1277, 2636, 2637, 1293, 1297, 1297, 1297, 1294, 1297, 2638,
3449      2639, 1297, 2629, 2640, 1296, 1301, 1301, 1301, 1302, 1302,
3450      1302, 1304, 1304, 1304, 1305, 1305, 1305, 1306, 1306, 1306,
3451      1307, 1307, 1307, 1301, 1288, 2641, 1302, 2642, 2643, 1304,
3452      2644, 1305, 2647, 2648, 1306, 1308, 1308, 1308, 1307, 1310,
3453      1310, 1310, 2651, 1315, 1315, 1315, 1296, 1315, 2657, 2658,
3454      1315, 2666, 2667, 1308, 1318, 1318, 1318, 1310, 1319, 1319,
3455
3456      1319, 1304, 1319, 2668, 1306, 1319, 1322, 1322, 1322, 2669,
3457      2670, 1318, 1323, 1323, 1323, 1325, 1325, 1325, 1328, 1328,
3458      1328, 1329, 1329, 1329, 1322, 1331, 1331, 1331, 2653, 2671,
3459      1323, 2597, 2603, 1325, 2672, 2673, 1328, 2674, 2653, 1329,
3460      1336, 1336, 1336, 1331, 2597, 2603, 1310, 1340, 1340, 1340,
3461      1341, 1341, 1341, 1343, 1343, 1343, 2606, 1336, 2678, 2681,
3462      1345, 1345, 1345, 2682, 1345, 1340, 1325, 1345, 1341, 2606,
3463      2683, 1343, 1331, 1349, 1349, 1349, 1350, 1350, 1350, 1352,
3464      1352, 1352, 1354, 1354, 1354, 2654, 1354, 2684, 2685, 1354,
3465      2686, 1349, 2687, 2690, 1350, 2654, 2694, 1352, 1357, 1357,
3466
3467      1357, 1358, 1358, 1358, 2695, 1358, 2696, 2697, 1358, 1359,
3468      1359, 1359, 2698, 2699, 1343, 1357, 1360, 1360, 1360, 2700,
3469      1361, 1361, 1361, 2701, 1361, 2702, 1359, 1361, 1363, 1363,
3470      1363, 2703, 2704, 1360, 1365, 1365, 1365, 1366, 1366, 1366,
3471      1352, 1368, 1368, 1368, 2705, 1363, 1369, 1369, 1369, 1370,
3472      1370, 1370, 1365, 1370, 2721, 1366, 1370, 2708, 2722, 1368,
3473      1371, 1371, 1371, 1369, 1372, 1372, 1372, 2708, 1372, 2723,
3474      2724, 1372, 1374, 1374, 1374, 2725, 2726, 1371, 1375, 1375,
3475      1375, 1377, 1377, 1377, 1379, 1379, 1379, 2709, 1379, 2727,
3476      1374, 1379, 1382, 1382, 1382, 2728, 1375, 2709, 2734, 1377,
3477
3478      2735, 1368, 1383, 1383, 1383, 1385, 1385, 1385, 2736, 2730,
3479      1382, 1388, 1388, 1388, 2739, 1388, 2740, 2741, 1388, 2742,
3480      1383, 2745, 2752, 1385, 1392, 1392, 1392, 1393, 1393, 1393,
3481      2753, 1395, 1395, 1395, 1397, 1397, 1397, 2754, 1397, 2755,
3482      2759, 1397, 1392, 2730, 2760, 1393, 2768, 2769, 1377, 1395,
3483      1401, 1401, 1401, 1402, 1402, 1402, 1403, 1403, 1403, 1405,
3484      1405, 1405, 1407, 1407, 1407, 2770, 2771, 1401, 1411, 1411,
3485      1411, 1402, 1385, 2772, 1403, 2773, 2774, 1405, 2775, 1407,
3486      1408, 1408, 1408, 2781, 1408, 1411, 2782, 1408, 1413, 1413,
3487      1413, 2784, 1395, 1414, 1414, 1414, 1416, 1416, 1416, 1418,
3488
3489      1418, 1418, 2785, 1420, 1420, 1420, 1413, 1421, 1421, 1421,
3490      2787, 1414, 2788, 2789, 1416, 2790, 1418, 1423, 1423, 1423,
3491      1405, 1420, 1425, 1425, 1425, 1421, 1431, 1431, 1431, 1411,
3492      1468, 1468, 1468, 2791, 1468, 1423, 2792, 1468, 2793, 2794,
3493      1425, 1425, 2795, 1416, 1431, 1473, 1473, 1473, 2796, 1473,
3494      2797, 2798, 1473, 1477, 1477, 1477, 1479, 1479, 1479, 1480,
3495      1480, 1480, 2799, 2802, 1423, 1483, 1483, 1483, 1484, 1484,
3496      1484, 1477, 1484, 1479, 2803, 1484, 2804, 1480, 1489, 1489,
3497      1489, 2805, 1489, 1483, 2813, 1489, 1492, 1492, 1492, 1493,
3498      1493, 1493, 2814, 1493, 2816, 2817, 1493, 2818, 1496, 1496,
3499
3500      1496, 2820, 1496, 2828, 1492, 1496, 1499, 1499, 1499, 1500,
3501      1500, 1500, 2829, 1500, 1477, 2831, 1500, 1505, 1505, 1505,
3502      2832, 2833, 1483, 2835, 1499, 2840, 1480, 1507, 1507, 1507,
3503      1509, 1509, 1509, 1492, 1505, 1512, 1512, 1512, 2822, 1513,
3504      1513, 1513, 2841, 1513, 2842, 1507, 1513, 1509, 1523, 1523,
3505      1523, 2843, 1512, 1499, 1514, 1514, 1514, 2845, 1514, 2846,
3506      2850, 1514, 1528, 1528, 1528, 1523, 1529, 1529, 1529, 1532,
3507      1532, 1532, 1533, 1533, 1533, 2852, 1533, 2853, 2855, 1533,
3508      1528, 2822, 1507, 2856, 1529, 2861, 1532, 1535, 1535, 1535,
3509      1537, 1537, 1537, 1539, 1539, 1539, 1540, 1540, 1540, 2862,
3510
3511      1540, 2863, 2864, 1540, 1535, 1541, 1541, 1541, 1537, 2865,
3512      1539, 1542, 1542, 1542, 2866, 1543, 1543, 1543, 1529, 1543,
3513      2867, 2868, 1543, 1541, 1544, 1544, 1544, 1528, 1542, 1549,
3514      1549, 1549, 1551, 1551, 1551, 1552, 1552, 1552, 2869, 1553,
3515      1553, 1553, 1544, 1554, 1554, 1554, 2870, 1549, 2173, 2173,
3516      1551, 2173, 1552, 1559, 1559, 1559, 1537, 1553, 2871, 2173,
3517      1554, 1555, 1555, 1555, 2872, 1555, 2173, 2873, 1555, 2874,
3518      1559, 1541, 2875, 1557, 1557, 1557, 1562, 1562, 1562, 2876,
3519      1562, 2877, 1544, 1562, 2881, 2882, 1549, 2883, 2884, 1551,
3520      1553, 1557, 1565, 1565, 1565, 1567, 1567, 1567, 1570, 1570,
3521
3522      1570, 1575, 1575, 1575, 1576, 1576, 1576, 2887, 1576, 1565,
3523      2888, 1576, 2889, 1567, 2890, 2891, 1570, 2892, 1575, 1580,
3524      1580, 1580, 1582, 1582, 1582, 1583, 1583, 1583, 1585, 1585,
3525      1585, 2901, 1585, 1557, 2894, 1585, 2896, 1580, 2897, 1582,
3526      1588, 1588, 1588, 1583, 1589, 1589, 1589, 2902, 1589, 2897,
3527      2896, 1589, 2904, 2905, 1590, 1590, 1590, 1588, 1590, 1567,
3528      2907, 1590, 2909, 2912, 1570, 1594, 1594, 1594, 1580, 1595,
3529      1595, 1595, 2913, 1595, 2919, 2921, 1595, 1597, 1597, 1597,
3530      2894, 2923, 1594, 2934, 1598, 1598, 1598, 1583, 1598, 2936,
3531      2938, 1598, 1601, 1601, 1601, 1597, 1601, 2939, 2942, 1601,
3532
3533      1605, 1605, 1605, 1607, 1607, 1607, 1611, 1611, 1611, 1613,
3534      1613, 1613, 1614, 1614, 1614, 1615, 1615, 1615, 1605, 1615,
3535      2943, 1607, 1615, 2946, 1611, 2948, 1613, 1597, 2950, 1614,
3536      1616, 1616, 1616, 1618, 1618, 1618, 1619, 1619, 1619, 2952,
3537      1619, 2953, 2955, 1619, 1622, 1622, 1622, 2915, 1616, 2956,
3538      1618, 1624, 1624, 1624, 1625, 1625, 1625, 2962, 1625, 2915,
3539      2964, 1625, 1622, 1626, 1626, 1626, 1605, 2967, 1624, 1607,
3540      1611, 1627, 1627, 1627, 1630, 1630, 1630, 1669, 1669, 1669,
3541      1626, 1672, 1672, 1672, 1673, 1673, 1673, 2961, 2961, 1627,
3542      2968, 2959, 1630, 1622, 1616, 1674, 1674, 1674, 1675, 1675,
3543
3544      1675, 1676, 1676, 1676, 1677, 1677, 1677, 1679, 1679, 1679,
3545      2900, 2916, 1674, 2972, 2973, 1675, 2981, 2928, 1676, 2983,
3546      1627, 2987, 1677, 2916, 1679, 1630, 1680, 1680, 1680, 2928,
3547      1680, 2900, 2959, 1680, 1681, 1681, 1681, 1684, 1684, 1684,
3548      2960, 1669, 1630, 2988, 2900, 1672, 2991, 2993, 1673, 1685,
3549      1685, 1685, 1681, 2995, 2960, 1684, 1686, 1686, 1686, 1687,
3550      1687, 1687, 1688, 1688, 1688, 1676, 1685, 1689, 1689, 1689,
3551      2996, 1677, 2974, 1686, 1690, 1690, 1690, 1687, 2969, 2997,
3552      1688, 1691, 1691, 1691, 1689, 1684, 2963, 2974, 1692, 1692,
3553      1692, 1690, 1692, 1681, 2980, 1692, 2969, 2963, 1691, 1693,
3554
3555      1693, 1693, 1694, 1694, 1694, 1696, 1696, 1696, 1697, 1697,
3556      1697, 2929, 1697, 2980, 2998, 1697, 1693, 1698, 1698, 1698,
3557      1694, 2999, 1696, 2929, 1687, 3000, 3008, 1688, 3009, 1700,
3558      1700, 1700, 1690, 1700, 1698, 3010, 1700, 1705, 1705, 1705,
3559      1709, 1709, 1709, 1710, 1710, 1710, 3012, 1710, 2982, 3013,
3560      1710, 1712, 1712, 1712, 1705, 3015, 3016, 1709, 1715, 1715,
3561      1715, 3017, 1694, 1716, 1716, 1716, 3019, 2982, 1712, 2990,
3562      1719, 1719, 1719, 3024, 1719, 2903, 1715, 1719, 1722, 1722,
3563      1722, 1716, 1723, 1723, 1723, 1724, 1724, 1724, 2990, 1724,
3564      3025, 3026, 1724, 2903, 3027, 1722, 1726, 1726, 1726, 1723,
3565
3566      1728, 1728, 1728, 3028, 1728, 3029, 2903, 1728, 1731, 1731,
3567      1731, 1735, 1735, 1735, 1726, 1732, 1732, 1732, 1716, 1732,
3568      3030, 3031, 1732, 2992, 1715, 3034, 1731, 3035, 3036, 1735,
3569      1740, 1740, 1740, 1742, 1742, 1742, 1743, 1743, 1743, 1744,
3570      1744, 1744, 2992, 1744, 3037, 3038, 1744, 3039, 1740, 3042,
3571      3043, 1742, 3044, 1743, 1731, 1745, 1745, 1745, 1746, 1746,
3572      1746, 3045, 1746, 3046, 3047, 1746, 1750, 1750, 1750, 1752,
3573      1752, 1752, 3049, 1745, 1754, 1754, 1754, 3050, 1735, 1742,
3574      3051, 1753, 1753, 1753, 1750, 1753, 1752, 3052, 1753, 3053,
3575      3054, 1754, 1756, 1756, 1756, 1757, 1757, 1757, 3055, 1757,
3576
3577      3062, 3063, 1757, 1759, 1759, 1759, 1762, 1762, 1762, 1756,
3578      1767, 1767, 1767, 1745, 1767, 3064, 3065, 1767, 1773, 1773,
3579      1773, 1759, 3066, 3067, 1762, 1775, 1775, 1775, 1777, 1777,
3580      1777, 3073, 1750, 1776, 1776, 1776, 1773, 1776, 3074, 3060,
3581      1776, 3075, 1775, 1779, 1779, 1779, 1777, 1779, 3076, 3077,
3582      1779, 3060, 1783, 1783, 1783, 3078, 1783, 3082, 1762, 1783,
3583      1787, 1787, 1787, 1789, 1789, 1789, 1791, 1791, 1791, 1773,
3584      1792, 1792, 1792, 1793, 1793, 1793, 3061, 3083, 1787, 3085,
3585      3087, 1789, 3088, 3090, 1791, 3091, 3092, 1792, 3061, 3093,
3586      1793, 1794, 1794, 1794, 1795, 1795, 1795, 3094, 1797, 1797,
3587
3588      1797, 3095, 1798, 1798, 1798, 3096, 1798, 3088, 1794, 1798,
3589      3097, 3098, 1795, 3099, 1789, 1797, 3100, 1791, 1799, 1799,
3590      1799, 1787, 1799, 3101, 3102, 1799, 1802, 1802, 1802, 1804,
3591      1804, 1804, 3103, 1804, 3104, 3105, 1804, 3106, 3107, 1793,
3592      3108, 1795, 3109, 3110, 1802, 1809, 1809, 1809, 1811, 1811,
3593      1811, 3111, 1811, 3114, 3115, 1811, 3117, 1814, 1814, 1814,
3594      1815, 1815, 1815, 1809, 1815, 3116, 3118, 1815, 1816, 1816,
3595      1816, 3119, 3120, 1802, 1814, 1821, 1821, 1821, 1833, 1833,
3596      1833, 1836, 1836, 1836, 3116, 3121, 1816, 1837, 1837, 1837,
3597      3122, 3123, 1821, 1838, 1838, 1838, 1809, 1840, 1840, 1840,
3598
3599      1849, 1849, 1849, 1850, 1850, 1850, 1852, 1852, 1852, 1854,
3600      1854, 1854, 3124, 1855, 1855, 1855, 3125, 1855, 3126, 1816,
3601      1855, 1856, 1856, 1856, 3127, 3128, 1854, 1857, 1857, 1857,
3602      3129, 1857, 3130, 3131, 1857, 1859, 1859, 1859, 1856, 1861,
3603      1861, 1861, 3132, 1861, 3133, 3134, 1861, 1864, 1864, 1864,
3604      1866, 1866, 1866, 1859, 1867, 1867, 1867, 1868, 1868, 1868,
3605      3135, 3136, 1869, 1869, 1869, 1864, 1869, 1866, 3137, 1869,
3606      3138, 3142, 1867, 3144, 1868, 1870, 1870, 1870, 1871, 1871,
3607      1871, 3145, 1871, 3141, 3147, 1871, 1872, 1872, 1872, 1873,
3608      1873, 1873, 1870, 1874, 1874, 1874, 3148, 3149, 1864, 3150,
3609
3610      3151, 1859, 3152, 3141, 1872, 3153, 3154, 1873, 3155, 3156,
3611      1874, 3157, 1875, 1875, 1875, 1867, 1875, 3158, 3159, 1875,
3612      1876, 1876, 1876, 1877, 1877, 1877, 3160, 1877, 3161, 3162,
3613      1877, 1880, 1880, 1880, 1881, 1881, 1881, 1876, 1881, 3163,
3614      3165, 1881, 1882, 1882, 1882, 1884, 1884, 1884, 1880, 1884,
3615      3167, 1872, 1884, 3164, 1873, 1887, 1887, 1887, 3169, 3164,
3616      1882, 1888, 1888, 1888, 3170, 1888, 3171, 3172, 1888, 1892,
3617      1892, 1892, 1887, 1893, 1893, 1893, 3173, 1893, 3174, 3176,
3618      1893, 1894, 1894, 1894, 3177, 3179, 1892, 1897, 1897, 1897,
3619      3180, 1897, 3182, 1882, 1897, 1901, 1901, 1901, 1894, 1902,
3620
3621      1902, 1902, 3183, 1902, 3188, 3189, 1902, 1905, 1905, 1905,
3622      3185, 3190, 1901, 1906, 1906, 1906, 1909, 1909, 1909, 1910,
3623      1910, 1910, 3191, 1910, 3185, 1905, 1910, 3193, 1911, 1911,
3624      1911, 1906, 1911, 1909, 3195, 1911, 1915, 1915, 1915, 1917,
3625      1917, 1917, 1918, 1918, 1918, 1919, 1919, 1919, 1921, 1921,
3626      1921, 1924, 1924, 1924, 1915, 1927, 1927, 1927, 1905, 3197,
3627      1918, 3199, 3201, 1919, 3202, 1921, 1906, 3203, 3204, 1924,
3628      1928, 1928, 1928, 1927, 1928, 3205, 3206, 1928, 1931, 1931,
3629      1931, 1933, 1933, 1933, 1935, 1935, 1935, 3207, 1935, 3208,
3630      3210, 1935, 3212, 3214, 1921, 1919, 1931, 3215, 3216, 1933,
3631
3632      1918, 1938, 1938, 1938, 1927, 1939, 1939, 1939, 3217, 1939,
3633      3258, 3234, 1939, 1941, 1941, 1941, 3218, 1941, 1938, 3234,
3634      1941, 1945, 1945, 1945, 1931, 1948, 1948, 1948, 1949, 1949,
3635      1949, 1950, 1950, 1950, 1952, 1952, 1952, 3226, 3219, 1945,
3636      3227, 3242, 1948, 1957, 1957, 1957, 1949, 1959, 1959, 1959,
3637      1458, 1959, 3218, 3258, 1959, 1962, 1962, 1962, 1965, 1965,
3638      1965, 1957, 1967, 1967, 1967, 1969, 1969, 1969, 1971, 1971,
3639      1971, 3228, 3229, 1962, 3219, 1965, 1972, 1972, 1972, 3235,
3640      1967, 3244, 3242, 1969, 3230, 3226, 1971, 3235, 3227, 1949,
3641      1973, 1973, 1973, 1972, 1973, 3246, 3236, 1973, 1974, 1974,
3642
3643      1974, 1975, 1975, 1975, 3236, 1976, 1976, 1976, 1957, 1976,
3644      3232, 3238, 1976, 3231, 3232, 1974, 3244, 3239, 1975, 3228,
3645      3229, 1967, 1977, 1977, 1977, 1978, 1978, 1978, 3230, 1979,
3646      1979, 1979, 1971, 1979, 3245, 3237, 1979, 1982, 1982, 1982,
3647      1977, 3246, 1978, 3237, 1974, 1986, 1986, 1986, 1987, 1987,
3648      1987, 1457, 1996, 1996, 1996, 1982, 1996, 3231, 3238, 1996,
3649      1999, 1999, 1999, 1986, 3239, 1987, 2003, 2003, 2003, 3245,
3650      1456, 1978, 2004, 2004, 2004, 1977, 2004, 1455, 1999, 2004,
3651      2005, 2005, 2005, 2003, 2010, 2010, 2010, 2011, 2011, 2011,
3652      1982, 2012, 2012, 2012, 2014, 2014, 2014, 2018, 2018, 2018,
3653
3654      2019, 2019, 2019, 2020, 2020, 2020, 1999, 2021, 2021, 2021,
3655      2023, 2023, 2023, 2027, 2027, 2027, 2028, 2028, 2028, 2030,
3656      2030, 2030, 2031, 2031, 2031, 2032, 2032, 2032, 2034, 2034,
3657      2034, 3247, 2034, 3252, 3243, 2034, 2037, 2037, 2037, 3260,
3658      2037, 3240, 3252, 2037, 2041, 2041, 2041, 2043, 2043, 2043,
3659      2045, 2045, 2045, 2021, 2046, 2046, 2046, 3241, 2046, 3233,
3660      3270, 2046, 2041, 3233, 3248, 2043, 3264, 2045, 2047, 2047,
3661      2047, 2032, 2048, 2048, 2048, 3243, 2048, 3247, 3240, 2048,
3662      2051, 2051, 2051, 3249, 2051, 3260, 2047, 2051, 2054, 2054,
3663      2054, 2055, 2055, 2055, 3241, 2041, 2056, 2056, 2056, 3264,
3664
3665      2056, 3248, 3270, 2056, 3250, 3261, 2054, 2043, 2054, 2055,
3666      3256, 3251, 2059, 2059, 2059, 2060, 2060, 2060, 1454, 2060,
3667      3249, 3290, 2060, 2064, 2064, 2064, 3253, 2055, 2047, 2059,
3668      2061, 2061, 2061, 3254, 2061, 3253, 3250, 2061, 2066, 2066,
3669      2066, 2064, 2066, 3251, 3256, 2066, 2072, 2072, 2072, 3257,
3670      2072, 3261, 3255, 2072, 2075, 2075, 2075, 2076, 2076, 2076,
3671      3262, 2076, 3290, 3265, 2076, 2080, 2080, 2080, 3254, 2080,
3672      3259, 2075, 2080, 2084, 2084, 2084, 2085, 2085, 2085, 2086,
3673      2086, 2086, 3263, 3257, 2089, 2089, 2089, 3255, 2089, 2064,
3674      2084, 2089, 3272, 3271, 2085, 3262, 3265, 2086, 2093, 2093,
3675
3676      2093, 2094, 2094, 2094, 2096, 2096, 2096, 2097, 2097, 2097,
3677      3284, 2097, 1452, 3259, 2097, 1451, 2093, 3263, 3284, 2094,
3678      3268, 2096, 3269, 2102, 2102, 2102, 2103, 2103, 2103, 2105,
3679      2105, 2105, 2108, 2108, 2108, 3271, 2108, 3266, 3272, 2108,
3680      2085, 2102, 3267, 1450, 2103, 3273, 3266, 2105, 2114, 2114,
3681      2114, 3267, 2094, 2093, 2115, 2115, 2115, 3268, 2115, 3269,
3682      3274, 2115, 2116, 2116, 2116, 2114, 2117, 2117, 2117, 2118,
3683      2118, 2118, 2119, 2119, 2119, 2120, 2120, 2120, 3278, 3275,
3684      2116, 2121, 2121, 2121, 2122, 2122, 2122, 3278, 2103, 2102,
3685      3276, 3273, 2120, 2123, 2123, 2123, 3280, 3274, 2121, 3279,
3686
3687      1449, 2122, 2124, 2124, 2124, 2127, 2127, 2127, 3279, 3291,
3688      2123, 2128, 2128, 2128, 3286, 2128, 3275, 3277, 2128, 3276,
3689      2124, 3306, 2127, 2130, 2130, 2130, 2116, 2132, 2132, 2132,
3690      3280, 3285, 2121, 2135, 2135, 2135, 2136, 2136, 2136, 3285,
3691      2136, 2130, 3287, 2136, 3302, 2132, 3277, 3281, 2122, 3292,
3692      3291, 2135, 2123, 2139, 2139, 2139, 2140, 2140, 2140, 3282,
3693      2140, 3286, 3306, 2140, 2142, 2142, 2142, 2124, 2142, 1447,
3694      2139, 2142, 2145, 2145, 2145, 2146, 2146, 2146, 2147, 2147,
3695      2147, 3281, 2147, 3288, 3292, 2147, 2149, 2149, 2149, 3287,
3696      2145, 3302, 2146, 2153, 2153, 2153, 2155, 2155, 2155, 2156,
3697
3698      2156, 2156, 3300, 2156, 2149, 3282, 2156, 2167, 2167, 2167,
3699      3300, 2153, 1446, 2155, 2168, 2168, 2168, 2171, 2171, 2171,
3700      3288, 2171, 3324, 2145, 2171, 2167, 2174, 2174, 2174, 2175,
3701      2175, 2175, 2168, 2176, 2176, 2176, 3324, 2149, 2179, 2179,
3702      2179, 2180, 2180, 2180, 2182, 2182, 2182, 2183, 2183, 2183,
3703      2185, 2185, 2185, 2186, 2186, 2186, 2167, 2187, 2187, 2187,
3704      2190, 2190, 2190, 2191, 2191, 2191, 2194, 2194, 2194, 2195,
3705      2195, 2195, 2197, 2197, 2197, 2198, 2198, 2198, 2202, 2202,
3706      2202, 2203, 2203, 2203, 2204, 2204, 2204, 2205, 2205, 2205,
3707      2206, 2206, 2206, 3289, 2206, 3283, 2202, 2206, 2209, 2209,
3708
3709      2209, 3293, 2204, 3298, 2205, 2210, 2210, 2210, 2211, 2211,
3710      2211, 2212, 2212, 2212, 3296, 2212, 2209, 3307, 2212, 2215,
3711      2215, 2215, 3294, 2210, 3301, 3299, 2211, 2220, 2220, 2220,
3712      3289, 2220, 3301, 1444, 2220, 3298, 3293, 2215, 2223, 2223,
3713      2223, 3283, 2210, 2227, 2227, 2227, 2229, 2229, 2229, 2209,
3714      2204, 3296, 2228, 2228, 2228, 2223, 2228, 3299, 3307, 2228,
3715      2227, 2230, 2230, 2230, 2229, 2235, 2235, 2235, 3294, 2211,
3716      2236, 2236, 2236, 2237, 2237, 2237, 2241, 2241, 2241, 2230,
3717      2238, 2238, 2238, 2235, 2238, 3297, 3304, 2238, 2236, 1443,
3718      2237, 1441, 3295, 2241, 2242, 2242, 2242, 2243, 2243, 2243,
3719
3720      2244, 2244, 2244, 2245, 2245, 2245, 2246, 2246, 2246, 3303,
3721      3305, 2242, 3320, 1439, 2243, 1438, 1437, 2244, 1436, 2237,
3722      3316, 2245, 3297, 3304, 2246, 2235, 2247, 2247, 2247, 3316,
3723      1435, 2241, 2251, 2251, 2251, 2252, 2252, 2252, 3295, 2252,
3724      3310, 3311, 2252, 2247, 2255, 2255, 2255, 3305, 2243, 2256,
3725      2256, 2256, 2257, 2257, 2257, 2242, 3303, 2258, 2258, 2258,
3726      3320, 2258, 2255, 2245, 2258, 2259, 2259, 2259, 3314, 2257,
3727      2246, 2260, 2260, 2260, 2261, 2261, 2261, 2262, 2262, 2262,
3728      1434, 3308, 2259, 2263, 2263, 2263, 3310, 3311, 2260, 3312,
3729      3313, 2261, 2264, 2264, 2264, 2262, 1433, 2265, 2265, 2265,
3730
3731      3314, 2265, 1430, 2255, 2265, 3309, 2268, 2268, 2268, 2264,
3732      2269, 2269, 2269, 2273, 2273, 2273, 3308, 2275, 2275, 2275,
3733      3315, 2275, 2260, 2268, 2275, 2261, 3312, 3313, 2269, 3317,
3734      3325, 2273, 2279, 2279, 2279, 2280, 2280, 2280, 3317, 2280,
3735      3309, 3325, 2280, 2284, 2284, 2284, 1429, 2288, 2288, 2288,
3736      2279, 2288, 3315, 1428, 2288, 2301, 2301, 2301, 2302, 2302,
3737      2302, 2284, 2315, 2315, 2315, 2316, 2316, 2316, 2319, 2319,
3738      2319, 3321, 2268, 2301, 3318, 1419, 2302, 2320, 2320, 2320,
3739      2322, 2322, 2322, 2325, 2325, 2325, 2328, 2328, 2328, 2284,
3740      2332, 2332, 2332, 2334, 2334, 2334, 2335, 2335, 2335, 1417,
3741
3742      2336, 2336, 2336, 2337, 2337, 2337, 3318, 2337, 2332, 3319,
3743      2337, 2338, 2338, 2338, 2335, 3322, 2301, 2336, 1412, 3321,
3744      2302, 2339, 2339, 2339, 2340, 2340, 2340, 3323, 1406, 2338,
3745      2341, 2341, 2341, 2348, 2348, 2348, 2349, 2349, 2349, 2339,
3746      2349, 3319, 2340, 2349, 2351, 2351, 2351, 3322, 2341, 1400,
3747      2348, 2353, 2353, 2353, 1396, 2353, 1391, 1387, 2353, 3323,
3748      1386, 2351, 2356, 2356, 2356, 2360, 2360, 2360, 2361, 2361,
3749      2361, 2362, 2362, 2362, 1378, 2364, 2364, 2364, 1373, 1364,
3750      2356, 1362, 2360, 1353, 1348, 2339, 2361, 1344, 1339, 2362,
3751      1338, 2340, 2364, 2365, 2365, 2365, 1337, 2365, 1335, 1334,
3752
3753      2365, 2369, 2369, 2369, 2370, 2370, 2370, 2371, 2371, 2371,
3754      1332, 2371, 1327, 1326, 2371, 2372, 2372, 2372, 2369, 1321,
3755      1320, 2370, 2373, 2373, 2373, 2361, 2374, 2374, 2374, 1314,
3756      2375, 2375, 2375, 2372, 2375, 1313, 1312, 2375, 1311, 1300,
3757      2373, 1289, 1284, 2374, 2378, 2378, 2378, 2379, 2379, 2379,
3758      2380, 2380, 2380, 2381, 2381, 2381, 1283, 2381, 1282, 1278,
3759      2381, 2378, 2384, 2384, 2384, 2385, 2385, 2385, 2380, 2385,
3760      1261, 1256, 2385, 2386, 2386, 2386, 2387, 2387, 2387, 2384,
3761      2388, 2388, 2388, 2373, 2390, 2390, 2390, 2391, 2391, 2391,
3762      2386, 1255, 1254, 2387, 1249, 2392, 2392, 2392, 2388, 2392,
3763
3764      1248, 1235, 2392, 1234, 2391, 2393, 2393, 2393, 2397, 2397,
3765      2397, 2400, 2400, 2400, 2413, 2413, 2413, 2431, 2431, 2431,
3766      1233, 1232, 2393, 2432, 2432, 2432, 2397, 1231, 1230, 2400,
3767      1229, 1228, 2413, 2437, 2437, 2437, 2440, 2440, 2440, 2441,
3768      2441, 2441, 2443, 2443, 2443, 1227, 2443, 1217, 1216, 2443,
3769      2446, 2446, 2446, 2440, 2448, 2448, 2448, 2441, 1215, 1214,
3770      2393, 2449, 2449, 2449, 2453, 2453, 2453, 1209, 2446, 2455,
3771      2455, 2455, 2448, 2455, 2413, 1208, 2455, 2400, 1207, 2449,
3772      1206, 2453, 2459, 2459, 2459, 2460, 2460, 2460, 1183, 2460,
3773      1182, 1175, 2460, 2467, 2467, 2467, 2468, 2468, 2468, 2459,
3774
3775      2469, 2469, 2469, 1171, 2469, 1166, 1165, 2469, 1160, 1157,
3776      2467, 1156, 1153, 2468, 1152, 2448, 2470, 2470, 2470, 2471,
3777      2471, 2471, 1151, 2471, 1150, 1149, 2471, 2449, 2477, 2477,
3778      2477, 2478, 2478, 2478, 2470, 2478, 1148, 1147, 2478, 2479,
3779      2479, 2479, 1146, 2479, 1145, 2477, 2479, 2482, 2482, 2482,
3780      2484, 2484, 2484, 2485, 2485, 2485, 1144, 2485, 1143, 1142,
3781      2485, 2489, 2489, 2489, 1141, 2482, 1140, 1137, 2484, 2490,
3782      2490, 2490, 2491, 2491, 2491, 1136, 2491, 1135, 2489, 2491,
3783      2492, 2492, 2492, 2494, 2494, 2494, 2490, 2494, 1134, 1132,
3784      2494, 2497, 2497, 2497, 1131, 2498, 2498, 2498, 2492, 2498,
3785
3786      1130, 1129, 2498, 2499, 2499, 2499, 1128, 1127, 2497, 2500,
3787      2500, 2500, 2484, 2500, 1126, 1125, 2500, 2501, 2501, 2501,
3788      2499, 2501, 1124, 1123, 2501, 2504, 2504, 2504, 2505, 2505,
3789      2505, 2506, 2506, 2506, 2509, 2509, 2509, 2510, 2510, 2510,
3790      1122, 1121, 2504, 1120, 1119, 2505, 1113, 1109, 2506, 2511,
3791      2511, 2511, 2509, 2522, 2522, 2522, 2539, 2539, 2539, 2540,
3792      2540, 2540, 2544, 2544, 2544, 1106, 2511, 2547, 2547, 2547,
3793      1105, 2522, 2548, 2548, 2548, 1104, 2548, 1102, 1098, 2548,
3794      2549, 2549, 2549, 1095, 2547, 1094, 2504, 1093, 2550, 2550,
3795      2550, 2553, 2553, 2553, 2554, 2554, 2554, 1089, 2549, 1088,
3796
3797      2555, 2555, 2555, 1085, 2555, 2509, 2550, 2555, 2553, 1081,
3798      1080, 2554, 1077, 2522, 2556, 2556, 2556, 2558, 2558, 2558,
3799      1074, 2558, 1071, 1070, 2558, 2569, 2569, 2569, 2570, 2570,
3800      2570, 2556, 2570, 1065, 1057, 2570, 2571, 2571, 2571, 2550,
3801      2571, 1056, 2569, 2571, 2574, 2574, 2574, 2549, 2577, 2577,
3802      2577, 2579, 2579, 2579, 1055, 2579, 1053, 1049, 2579, 2588,
3803      2588, 2588, 2574, 1046, 1043, 2577, 2590, 2590, 2590, 2591,
3804      2591, 2591, 1040, 2591, 1039, 1038, 2591, 2588, 2592, 2592,
3805      2592, 1037, 2592, 2590, 1036, 2592, 2595, 2595, 2595, 1035,
3806      2595, 1034, 1033, 2595, 2598, 2598, 2598, 1030, 2598, 1029,
3807
3808      1026, 2598, 2607, 2607, 2607, 2608, 2608, 2608, 2609, 2609,
3809      2609, 1025, 2609, 1021, 1019, 2609, 2610, 2610, 2610, 2607,
3810      1016, 1015, 2608, 2611, 2611, 2611, 1012, 2611, 1005, 1002,
3811      2611, 1001, 1000, 2610, 2612, 2612, 2612, 2613, 2613, 2613,
3812      2614, 2614, 2614, 2615, 2615, 2615, 2616, 2616, 2616,  997,
3813       993, 2612,  986,  982, 2613, 2628, 2628, 2628, 2614, 2631,
3814      2631, 2631, 2607, 2616, 2617, 2617, 2617,  981, 2617,  980,
3815       977, 2617,  976, 2628,  975,  968, 2631, 2631, 2645, 2645,
3816      2645, 2646, 2646, 2646, 2649, 2649, 2649, 2650, 2650, 2650,
3817      2652, 2652, 2652,  967, 2652,  966,  965, 2652, 2655, 2655,
3818
3819      2655,  964, 2614, 2656, 2656, 2656, 2628, 2659, 2659, 2659,
3820      2660, 2660, 2660,  963, 2660,  962, 2655, 2660, 2661, 2661,
3821      2661, 2656, 2661,  961, 2659, 2661, 2664, 2664, 2664, 2665,
3822      2665, 2665,  960, 2665,  959,  955, 2665, 2675, 2675, 2675,
3823       951, 2675,  928, 2664, 2675, 2679, 2679, 2679, 2680, 2680,
3824      2680,  925, 2680,  922,  921, 2680, 2688, 2688, 2688, 2691,
3825      2691, 2691, 2679, 2691, 2655,  914, 2691, 2706, 2706, 2706,
3826       913, 2707, 2707, 2707, 2688, 2707,  911,  910, 2707, 2710,
3827      2710, 2710,  909, 2710, 2706,  908, 2710, 2713, 2713, 2713,
3828      2714, 2714, 2714,  907, 2714,  906,  905, 2714, 2715, 2715,
3829
3830      2715, 2716, 2716, 2716, 2713, 2716,  904,  903, 2716, 2717,
3831      2717, 2717, 2718, 2718, 2718, 2715, 2718,  902,  901, 2718,
3832      2729, 2729, 2729, 2731, 2731, 2731,  899, 2717, 2732, 2732,
3833      2732,  898, 2733, 2733, 2733,  897, 2733,  896, 2729, 2733,
3834      2731, 2731, 2746, 2746, 2746, 2732, 2732, 2747, 2747, 2747,
3835      2733, 2748, 2748, 2748, 2749, 2749, 2749, 2750, 2750, 2750,
3836      2717, 2751, 2751, 2751, 2756, 2756, 2756,  895,  894, 2729,
3837      2757, 2757, 2757, 2761, 2761, 2761,  893, 2761,  892,  890,
3838      2761,  889, 2756, 2764, 2764, 2764,  888, 2764, 2757,  887,
3839      2764, 2767, 2767, 2767, 2776, 2776, 2776, 2777, 2777, 2777,
3840
3841       886, 2777,  885,  884, 2777, 2780, 2780, 2780, 2767,  883,
3842       882, 2776, 2800, 2800, 2800, 2756, 2801, 2801, 2801,  878,
3843      2801,  874, 2780, 2801, 2806, 2806, 2806,  873, 2806, 2800,
3844       872, 2806, 2809, 2809, 2809,  871, 2809,  870,  866, 2809,
3845      2812, 2812, 2812, 2821, 2821, 2821, 2823, 2823, 2823, 2824,
3846      2824, 2824,  864, 2824,  863,  862, 2824,  861, 2812,  860,
3847       859, 2821,  856, 2823, 2823,  855,  853, 2824, 2825, 2825,
3848      2825,  851, 2825,  848,  847, 2825, 2836, 2836, 2836, 2837,
3849      2837, 2837, 2838, 2838, 2838,  846, 2825, 2839, 2839, 2839,
3850      2844, 2844, 2844, 2848, 2848, 2848,  845, 2848,  843,  840,
3851
3852      2848,  839, 2847, 2847, 2847, 2849, 2849, 2849, 2844, 2821,
3853      2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2826, 2847,
3854       837, 2826, 2849, 2857, 2857, 2857, 2826, 2826, 2826, 2826,
3855      2826, 2858, 2858, 2858,  836, 2858,  833,  831, 2858,  828,
3856      2857, 2860, 2860, 2860,  827, 2860,  826,  825, 2860, 2859,
3857      2859, 2859, 2885, 2885, 2885, 2826, 2826, 2827, 2827, 2827,
3858      2827, 2827, 2827, 2827, 2827, 2827, 2859,  822, 2827,  821,
3859      2885,  820,  819, 2827, 2827, 2827, 2827, 2827, 2878, 2878,
3860      2878,  818, 2878,  817,  816, 2878, 2893, 2893, 2893, 2895,
3861      2895, 2895,  814, 2895,  811,  810, 2895,  806,  805, 2910,
3862
3863      2910, 2910, 2827, 2827, 2893,  804,  803, 2895, 2898, 2898,
3864      2898, 2898, 2898, 2898, 2898, 2898, 2898, 2910,  802, 2898,
3865      2917, 2917, 2917,  801, 2898, 2898, 2898, 2898, 2898, 2914,
3866      2914, 2914,  800, 2914,  792,  791, 2914, 2917, 2918, 2918,
3867      2918,  788, 2918,  787,  786, 2918, 2957, 2957, 2957, 2965,
3868      2965, 2965,  785, 2898, 2898, 2899, 2899, 2899, 2899, 2899,
3869      2899, 2899, 2899, 2899, 2957,  784, 2899, 2965, 2965,  782,
3870       781, 2899, 2899, 2899, 2899, 2899, 2924, 2924, 2924,  780,
3871      2924,  777,  776, 2924, 2927, 2927, 2927,  775, 2927,  772,
3872       771, 2927, 2978, 2978, 2978, 2979, 2979, 2979,  767,  765,
3873
3874      2899, 2899,  762, 2984, 2984, 2984,  761, 2984,  760, 2978,
3875      2984,  759, 2979, 2989, 2989, 2989, 2994, 2994, 2994, 3007,
3876      3007, 3007, 3011, 3011, 3011, 3020, 3020, 3020,  757,  754,
3877      2989,  753,  752, 2994, 3021, 3021, 3021, 3007, 3021,  749,
3878      3011, 3021, 3020, 3022, 3022, 3022, 3023, 3023, 3023,  746,
3879      3023,  743,  742, 3023, 3032, 3032, 3032, 3033, 3033, 3033,
3880      3022, 3033,  741,  740, 3033, 3040, 3040, 3040, 3041, 3041,
3881      3041, 3032, 3041, 3011,  739, 3041, 3048, 3048, 3048, 3056,
3882      3056, 3056, 3040, 3056,  736,  733, 3056,  729, 3059, 3059,
3883      3059,  728, 3059,  727, 3048, 3059, 3070, 3070, 3070,  726,
3884
3885      3070,  725,  724, 3070, 3079, 3079, 3079,  723, 3079,  722,
3886       721, 3079,  720, 3048, 3200, 3200, 3200, 3209, 3209, 3209,
3887       719, 3209,  718,  716, 3209, 3326, 3326, 3326, 3327, 3327,
3888      3327,  714, 3200,  713,  710, 3209,  709,  708,  707,  706,
3889       705,  700,  699, 3326,  698,  695, 3327, 3330, 3330, 3330,
3890      3330, 3330, 3330, 3330, 3330, 3330, 3331, 3331, 3331, 3331,
3891      3331, 3331, 3331, 3331, 3331, 3332, 3332, 3332, 3332, 3332,
3892      3332, 3332, 3332, 3332, 3333, 3333, 3333, 3333, 3333, 3333,
3893      3333, 3333, 3333, 3334, 3334, 3334, 3334, 3334, 3334, 3334,
3894      3334, 3334, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335,
3895
3896      3335, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336,
3897      3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3338,
3898      3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3339, 3339,
3899      3339, 3339, 3339, 3339, 3339, 3339, 3339, 3340, 3340, 3340,
3900      3340, 3340, 3340, 3340, 3340, 3340, 3341, 3341, 3341, 3341,
3901      3341, 3341, 3341, 3341, 3341, 3342, 3342, 3342, 3342, 3342,
3902      3342, 3342, 3342, 3342, 3343, 3343, 3343, 3343, 3343, 3343,
3903      3343, 3343, 3343, 3344, 3344, 3344, 3344, 3344, 3344, 3344,
3904      3344, 3344, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345,
3905      3345, 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3346,
3906
3907      3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3348,
3908      3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3349, 3349,
3909      3349, 3349, 3349, 3349, 3349, 3349, 3349, 3350, 3350, 3350,
3910      3350, 3350, 3350, 3350, 3350, 3350, 3351, 3351, 3351, 3351,
3911      3351, 3351, 3351, 3351, 3351, 3352, 3352, 3352, 3352, 3352,
3912      3352, 3352, 3352, 3352, 3353, 3353, 3353, 3353, 3353, 3353,
3913      3353, 3353, 3353, 3354, 3354, 3354, 3354, 3354, 3354, 3354,
3914      3354, 3354, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355,
3915      3355, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356,
3916      3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3358,
3917
3918      3358, 3358, 3358, 3358, 3358, 3358, 3358, 3358, 3359, 3359,
3919      3359, 3359, 3359, 3359, 3359, 3359, 3359, 3360, 3360, 3360,
3920      3360, 3360, 3360, 3360, 3360, 3360, 3361, 3361, 3361, 3361,
3921      3361, 3361, 3361, 3361, 3361, 3362, 3362, 3362, 3362, 3362,
3922      3362, 3362, 3362, 3362, 3363, 3363, 3363, 3363, 3363, 3363,
3923      3363, 3363, 3363, 3364, 3364, 3364, 3364, 3364, 3364, 3364,
3924      3364, 3364, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365,
3925      3365, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366,
3926      3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3368,
3927      3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3369, 3369,
3928
3929      3369, 3369, 3369, 3369, 3369, 3369, 3369, 3370, 3370, 3370,
3930      3370, 3370, 3370, 3370, 3370, 3370, 3371, 3371, 3371, 3371,
3931      3371, 3371, 3371, 3371, 3371, 3372, 3372, 3372, 3372, 3372,
3932      3372, 3372, 3372, 3372, 3373, 3373, 3373, 3373, 3373, 3373,
3933      3373, 3373, 3373, 3374, 3374, 3374, 3374, 3374, 3374, 3374,
3934      3374, 3374, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375,
3935      3375, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376,
3936      3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3378,
3937      3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3379, 3379,
3938      3379, 3379, 3379, 3379, 3379, 3379, 3379, 3380, 3380, 3380,
3939
3940      3380, 3380, 3380, 3380, 3380, 3380, 3381, 3381, 3381, 3381,
3941      3381, 3381, 3381, 3381, 3381, 3382, 3382, 3382, 3382, 3382,
3942      3382, 3382, 3382, 3382, 3383, 3383, 3383, 3383, 3383, 3383,
3943      3383, 3383, 3383, 3384, 3384, 3384, 3384, 3384, 3384, 3384,
3944      3384, 3384, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385,
3945      3385, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386,
3946      3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388,
3947      3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3389, 3389,
3948      3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3390, 3390,
3949       694,  693,  692, 3390, 3391, 3391, 3391,  689,  688,  686,
3950
3951      3391, 3392, 3392, 3392,  683,  682,  679, 3392, 3393, 3393,
3952      3393,  678,  677,  676, 3393, 3394, 3394, 3394,  675,  674,
3953       666, 3394, 3395, 3395, 3395,  665,  664,  661, 3395, 3396,
3954      3396, 3396,  660,  659,  656, 3396, 3397, 3397, 3397,  654,
3955       653,  650, 3397, 3398, 3398, 3398,  649,  648,  647, 3398,
3956      3399, 3399, 3399,  644,  643,  642, 3399, 3400, 3400, 3400,
3957       641,  637,  636, 3400, 3401, 3401, 3401,  635,  634,  628,
3958      3401, 3402, 3402, 3402,  627,  625,  619, 3402, 3403, 3403,
3959      3403,  618,  617,  613, 3403, 3404, 3404, 3404,  610,  608,
3960       607, 3404, 3405, 3405, 3405,  606,  602,  598, 3405, 3406,
3961
3962      3406, 3406,  594,  593,  592, 3406, 3407, 3407, 3407,  591,
3963       587,  583, 3407, 3408, 3408, 3408,  580,  579,  578, 3408,
3964      3409, 3409, 3409,  577,  573,  567, 3409, 3410, 3410, 3410,
3965       566,  562,  558, 3410, 3411, 3411, 3411,  554,  550,  543,
3966      3411, 3412, 3412, 3412,  541,  540,  536, 3412, 3413, 3413,
3967      3413,  530,  529,  525, 3413, 3414, 3414, 3414,  521,  517,
3968       516, 3414, 3415, 3415, 3415,  515,  514,  513, 3415, 3416,
3969      3416, 3416,  509,  505,  498, 3416, 3417, 3417, 3417, 3417,
3970      3417, 3417, 3417,  494, 3417, 3418, 3418, 3418,  486,  485,
3971       484, 3418, 3419,  483,  482,  478, 3419, 3420, 3420, 3420,
3972
3973       472,  471,  467, 3420, 3421,  461,  460,  456, 3421, 3422,
3974      3422, 3422,  450,  449,  445, 3422, 3423,  441,  437,  436,
3975      3423, 3424, 3424, 3424,  435,  431,  427, 3424, 3425,  423,
3976       419,  413, 3425, 3426, 3426, 3426,  412,  411,  407, 3426,
3977      3427,  403,  398,  397, 3427, 3428, 3428, 3428,  396,  395,
3978       391, 3428, 3429,  387,  384,  380, 3429, 3430, 3430, 3430,
3979       376,  373,  370, 3430, 3431,  368,  367,  365, 3431, 3432,
3980      3432, 3432,  361,  354,  353, 3432, 3433,  352,  351,  350,
3981      3433, 3434, 3434, 3434,  346,  342,  339, 3434, 3435,  338,
3982       334,  330, 3435, 3436, 3436, 3436,  327,  326,  325, 3436,
3983
3984      3437,  321,  315,  314, 3437, 3438, 3438, 3438,  313,  309,
3985       303, 3438, 3439,  299,  296,  295, 3439, 3440, 3440, 3440,
3986       290,  289,  285, 3440, 3441,  281,  277,  273, 3441, 3442,
3987      3442, 3442,  272,  268,  265, 3442, 3443,  264,  263,  257,
3988      3443, 3444, 3444, 3444,  256,  254,  251, 3444, 3445,  239,
3989         0,    0, 3445, 3446, 3446, 3446,    0,    0,    0, 3446,
3990      3447,    0,    0,    0, 3447, 3448, 3448, 3448,    0,    0,
3991         0, 3448, 3449,    0,    0,    0, 3449, 3450, 3450, 3450,
3992         0,    0,    0, 3450, 3451,    0,    0,    0, 3451, 3452,
3993      3452, 3452,    0,    0,    0, 3452, 3453,    0,    0,    0,
3994
3995      3453, 3454, 3454, 3454,    0,    0,    0, 3454, 3455,    0,
3996         0,    0, 3455, 3456, 3456, 3456,    0,    0,    0, 3456,
3997      3457,    0,    0,    0, 3457, 3458, 3458, 3458,    0,    0,
3998         0, 3458, 3459,    0,    0,    0, 3459, 3460, 3460, 3460,
3999         0,    0,    0, 3460, 3461,    0,    0,    0, 3461, 3462,
4000      3462, 3462,    0,    0,    0, 3462, 3463,    0,    0,    0,
4001      3463, 3464, 3464, 3464,    0,    0,    0, 3464, 3465,    0,
4002         0,    0, 3465, 3466, 3466, 3466,    0,    0,    0, 3466,
4003      3467,    0,    0,    0, 3467, 3468, 3468, 3468,    0,    0,
4004         0, 3468, 3469,    0,    0,    0, 3469, 3470, 3470, 3470,
4005
4006         0,    0,    0, 3470, 3471,    0,    0,    0, 3471, 3472,
4007      3472, 3472, 3472, 3472, 3472, 3472, 3472, 3472, 3473,    0,
4008         0,    0,    0, 3473, 3474, 3474, 3474,    0,    0,    0,
4009      3474, 3475, 3475, 3475, 3475,    0,    0, 3475, 3475, 3476,
4010      3476, 3476, 3476,    0, 3476,    0, 3476, 3477, 3477, 3477,
4011      3477,    0,    0, 3477, 3477, 3478, 3478, 3478,    0,    0,
4012         0, 3478, 3479, 3479, 3479, 3479,    0,    0, 3479, 3479,
4013      3480, 3480, 3480,    0,    0,    0, 3480, 3481, 3481, 3481,
4014      3481,    0,    0, 3481, 3481, 3482, 3482, 3482, 3482,    0,
4015      3482,    0, 3482, 3483, 3483, 3483, 3483,    0,    0, 3483,
4016
4017      3483, 3484, 3484, 3484, 3484,    0, 3484,    0, 3484, 3485,
4018      3485, 3485, 3485,    0,    0, 3485, 3485, 3486, 3486, 3486,
4019      3486,    0, 3486,    0, 3486, 3487, 3487, 3487, 3487,    0,
4020         0, 3487, 3487, 3488, 3488, 3488,    0,    0,    0, 3488,
4021      3489, 3489, 3489, 3489,    0,    0, 3489, 3489, 3490, 3490,
4022      3490, 3490,    0,    0, 3490, 3490, 3491, 3491, 3491,    0,
4023         0,    0, 3491, 3492, 3492, 3492, 3492,    0,    0, 3492,
4024      3492, 3493, 3493, 3493,    0,    0,    0, 3493, 3494, 3494,
4025      3494, 3494,    0,    0, 3494, 3494, 3495, 3495, 3495,    0,
4026         0,    0, 3495, 3496, 3496, 3496, 3496,    0,    0, 3496,
4027
4028      3496, 3497, 3497, 3497,    0,    0,    0, 3497, 3498, 3498,
4029      3498, 3498,    0,    0, 3498, 3498, 3499, 3499, 3499,    0,
4030         0,    0, 3499, 3500, 3500, 3500, 3500,    0,    0, 3500,
4031      3500, 3501, 3501, 3501,    0,    0,    0, 3501, 3502, 3502,
4032      3502, 3502,    0,    0, 3502, 3502, 3503, 3503, 3503,    0,
4033         0,    0, 3503, 3504, 3504, 3504, 3504,    0,    0, 3504,
4034      3504, 3505, 3505, 3505,    0,    0,    0, 3505, 3506, 3506,
4035      3506, 3506,    0,    0, 3506, 3506, 3507, 3507, 3507,    0,
4036         0,    0, 3507, 3508, 3508, 3508, 3508,    0,    0, 3508,
4037      3508, 3509, 3509, 3509,    0,    0,    0, 3509, 3510, 3510,
4038
4039      3510, 3510,    0,    0, 3510, 3510, 3511, 3511, 3511,    0,
4040         0,    0, 3511, 3512, 3512, 3512, 3512,    0,    0, 3512,
4041      3512, 3513, 3513, 3513,    0,    0,    0, 3513, 3514, 3514,
4042      3514, 3514,    0,    0, 3514, 3514, 3515, 3515, 3515, 3515,
4043         0, 3515,    0, 3515, 3516, 3516, 3516, 3516,    0,    0,
4044      3516, 3516, 3517, 3517, 3517,    0,    0,    0, 3517, 3518,
4045      3518, 3518, 3518,    0,    0, 3518, 3518, 3519, 3519, 3519,
4046         0,    0,    0, 3519, 3520, 3520, 3520, 3520,    0,    0,
4047      3520, 3520, 3521, 3521, 3521,    0,    0,    0, 3521, 3522,
4048      3522, 3522, 3522,    0,    0, 3522, 3522, 3523, 3523, 3523,
4049
4050         0,    0,    0, 3523, 3524, 3524, 3524, 3524,    0,    0,
4051      3524, 3524, 3525, 3525, 3525,    0,    0,    0, 3525, 3526,
4052      3526, 3526, 3526,    0,    0, 3526, 3526, 3527, 3527, 3527,
4053      3527, 3527, 3527, 3527, 3527, 3527, 3528,    0, 3528,    0,
4054         0, 3528, 3529, 3529, 3529,    0,    0,    0, 3529, 3530,
4055      3530, 3530, 3530,    0,    0, 3530, 3530, 3531, 3531, 3531,
4056         0,    0,    0, 3531, 3532, 3532, 3532, 3532,    0,    0,
4057      3532, 3532, 3533, 3533, 3533,    0,    0,    0, 3533, 3534,
4058      3534, 3534, 3534,    0,    0, 3534, 3534, 3535, 3535, 3535,
4059         0,    0,    0, 3535, 3536, 3536, 3536, 3536,    0,    0,
4060
4061      3536, 3536, 3537, 3537, 3537,    0,    0,    0, 3537, 3538,
4062      3538, 3538, 3538,    0,    0, 3538, 3538, 3539, 3539, 3539,
4063      3539,    0,    0, 3539, 3539, 3540, 3540, 3540,    0,    0,
4064         0, 3540, 3541, 3541, 3541, 3541,    0,    0, 3541, 3541,
4065      3542, 3542, 3542,    0,    0,    0, 3542, 3543, 3543, 3543,
4066      3543,    0,    0, 3543, 3543, 3544, 3544, 3544, 3544,    0,
4067         0, 3544, 3544, 3545, 3545, 3545,    0,    0,    0, 3545,
4068      3546, 3546, 3546, 3546,    0,    0, 3546, 3546, 3547, 3547,
4069      3547, 3547,    0, 3547,    0, 3547, 3548, 3548, 3548, 3548,
4070         0,    0, 3548, 3548, 3549, 3549, 3549, 3549,    0, 3549,
4071
4072         0, 3549, 3550, 3550, 3550, 3550,    0,    0, 3550, 3550,
4073      3551, 3551, 3551,    0,    0,    0, 3551, 3552, 3552, 3552,
4074      3552,    0,    0, 3552, 3552, 3553, 3553, 3553,    0,    0,
4075         0, 3553, 3554, 3554, 3554, 3554,    0,    0, 3554, 3554,
4076      3555, 3555, 3555,    0,    0,    0, 3555, 3556, 3556, 3556,
4077      3556,    0,    0, 3556, 3556, 3557, 3557, 3557, 3557,    0,
4078      3557,    0, 3557, 3558, 3558, 3558, 3558,    0,    0, 3558,
4079      3558, 3559, 3559, 3559,    0,    0,    0, 3559, 3560, 3560,
4080      3560, 3560,    0,    0, 3560, 3560, 3561, 3561, 3561,    0,
4081         0,    0, 3561, 3562, 3562, 3562, 3562,    0,    0, 3562,
4082
4083      3562, 3563, 3563, 3563,    0,    0,    0, 3563, 3564, 3564,
4084      3564, 3564,    0,    0, 3564, 3564, 3565, 3565, 3565,    0,
4085         0,    0, 3565, 3566, 3566, 3566, 3566,    0,    0, 3566,
4086      3566, 3567, 3567, 3567,    0,    0,    0, 3567, 3568, 3568,
4087      3568, 3568,    0,    0, 3568, 3568, 3569, 3569, 3569,    0,
4088         0,    0, 3569, 3570, 3570, 3570, 3570,    0,    0, 3570,
4089      3570, 3571, 3571, 3571,    0,    0,    0, 3571, 3572, 3572,
4090      3572, 3572,    0,    0, 3572, 3572, 3573, 3573, 3573,    0,
4091         0,    0, 3573, 3574, 3574, 3574, 3574,    0,    0, 3574,
4092      3574, 3575, 3575, 3575,    0,    0,    0, 3575, 3576, 3576,
4093
4094      3576, 3576,    0,    0, 3576, 3576, 3577, 3577, 3577, 3577,
4095         0, 3577,    0, 3577, 3578, 3578, 3578, 3578,    0,    0,
4096      3578, 3578, 3579, 3579, 3579,    0,    0,    0, 3579, 3580,
4097      3580, 3580, 3580,    0,    0, 3580, 3580, 3581, 3581, 3581,
4098      3581, 3581, 3581, 3581, 3581, 3581, 3582, 3582, 3582, 3582,
4099      3582, 3582, 3582, 3582, 3582, 3583, 3583, 3583,    0,    0,
4100         0, 3583, 3584, 3584, 3584,    0,    0,    0, 3584, 3585,
4101      3585, 3585, 3585,    0,    0, 3585, 3585, 3586, 3586, 3586,
4102      3586,    0, 3586,    0, 3586, 3587, 3587, 3587, 3587,    0,
4103         0, 3587, 3587, 3588, 3588, 3588,    0,    0,    0, 3588,
4104
4105      3589, 3589, 3589, 3589,    0,    0, 3589, 3589, 3590, 3590,
4106      3590,    0,    0,    0, 3590, 3591, 3591, 3591, 3591,    0,
4107         0, 3591, 3591, 3592, 3592, 3592, 3592,    0,    0, 3592,
4108      3592, 3593, 3593, 3593,    0,    0,    0, 3593, 3594, 3594,
4109      3594, 3594,    0,    0, 3594, 3594, 3595, 3595, 3595,    0,
4110         0,    0, 3595, 3596, 3596, 3596, 3596,    0,    0, 3596,
4111      3596, 3597, 3597, 3597, 3597,    0,    0, 3597, 3597, 3598,
4112      3598, 3598,    0,    0,    0, 3598, 3599, 3599, 3599, 3599,
4113         0,    0, 3599, 3599, 3600, 3600, 3600, 3600,    0,    0,
4114      3600, 3600, 3601, 3601, 3601, 3601,    0,    0, 3601, 3601,
4115
4116      3602, 3602, 3602,    0,    0,    0, 3602, 3603, 3603, 3603,
4117      3603,    0,    0, 3603, 3603, 3604, 3604, 3604,    0,    0,
4118         0, 3604, 3605, 3605, 3605, 3605,    0,    0, 3605, 3605,
4119      3606, 3606, 3606, 3606,    0, 3606,    0, 3606, 3607, 3607,
4120      3607, 3607,    0,    0, 3607, 3607, 3608, 3608, 3608,    0,
4121         0,    0, 3608, 3609, 3609, 3609, 3609,    0,    0, 3609,
4122      3609, 3610, 3610, 3610,    0,    0,    0, 3610, 3611, 3611,
4123      3611, 3611,    0,    0, 3611, 3611, 3612, 3612, 3612,    0,
4124         0,    0, 3612, 3613, 3613, 3613, 3613,    0,    0, 3613,
4125      3613, 3614, 3614, 3614,    0,    0,    0, 3614, 3615, 3615,
4126
4127      3615, 3615,    0,    0, 3615, 3615, 3616, 3616, 3616, 3616,
4128         0, 3616,    0, 3616, 3617, 3617, 3617, 3617,    0,    0,
4129      3617, 3617, 3618, 3618, 3618,    0,    0,    0, 3618, 3619,
4130      3619, 3619, 3619,    0,    0, 3619, 3619, 3620, 3620, 3620,
4131         0,    0,    0, 3620, 3621, 3621, 3621, 3621,    0,    0,
4132      3621, 3621, 3622, 3622, 3622,    0,    0,    0, 3622, 3623,
4133      3623, 3623, 3623,    0,    0, 3623, 3623, 3624, 3624, 3624,
4134         0,    0,    0, 3624, 3625, 3625, 3625, 3625,    0,    0,
4135      3625, 3625, 3626, 3626, 3626,    0,    0,    0, 3626, 3627,
4136      3627, 3627, 3627,    0,    0, 3627, 3627, 3628, 3628, 3628,
4137
4138         0,    0,    0, 3628, 3629, 3629, 3629, 3629,    0,    0,
4139      3629, 3629, 3630, 3630, 3630,    0,    0,    0, 3630, 3631,
4140      3631, 3631, 3631,    0,    0, 3631, 3631, 3632, 3632, 3632,
4141      3632, 3632, 3632, 3632, 3632, 3632, 3633, 3633, 3633, 3633,
4142      3633, 3633, 3633, 3633, 3633, 3634, 3634, 3634,    0,    0,
4143         0, 3634, 3635, 3635, 3635, 3635,    0, 3635,    0, 3635,
4144      3636, 3636, 3636, 3636,    0,    0, 3636, 3636, 3637, 3637,
4145      3637, 3637,    0,    0, 3637, 3637, 3638, 3638, 3638,    0,
4146         0,    0, 3638, 3639, 3639, 3639, 3639,    0,    0, 3639,
4147      3639, 3640, 3640, 3640, 3640,    0, 3640,    0, 3640, 3641,
4148
4149      3641, 3641, 3641,    0,    0, 3641, 3641, 3642, 3642, 3642,
4150      3642,    0,    0, 3642, 3642, 3643, 3643, 3643, 3643,    0,
4151      3643,    0, 3643, 3644, 3644, 3644, 3644,    0,    0, 3644,
4152      3644, 3645, 3645, 3645,    0,    0,    0, 3645, 3646, 3646,
4153      3646, 3646,    0,    0, 3646, 3646, 3647, 3647, 3647, 3647,
4154         0,    0, 3647, 3647, 3648, 3648, 3648,    0,    0,    0,
4155      3648, 3649, 3649, 3649, 3649,    0,    0, 3649, 3649, 3650,
4156      3650, 3650, 3650,    0,    0, 3650, 3650, 3651, 3651, 3651,
4157      3651,    0,    0, 3651, 3651, 3652, 3652, 3652,    0,    0,
4158         0, 3652, 3653, 3653, 3653, 3653,    0,    0, 3653, 3653,
4159
4160      3654, 3654, 3654,    0,    0,    0, 3654, 3655, 3655, 3655,
4161      3655,    0,    0, 3655, 3655, 3656, 3656, 3656, 3656,    0,
4162         0, 3656, 3656, 3657, 3657, 3657,    0,    0,    0, 3657,
4163      3658, 3658, 3658, 3658,    0,    0, 3658, 3658, 3659, 3659,
4164      3659,    0,    0,    0, 3659, 3660, 3660, 3660, 3660,    0,
4165         0, 3660, 3660, 3661, 3661, 3661,    0,    0,    0, 3661,
4166      3662, 3662, 3662, 3662,    0,    0, 3662, 3662, 3663, 3663,
4167      3663,    0,    0,    0, 3663, 3664, 3664, 3664, 3664,    0,
4168         0, 3664, 3664, 3665, 3665, 3665, 3665,    0,    0, 3665,
4169      3665, 3666, 3666, 3666,    0,    0,    0, 3666, 3667, 3667,
4170
4171      3667, 3667,    0,    0, 3667, 3667, 3668, 3668, 3668,    0,
4172         0,    0, 3668, 3669, 3669, 3669, 3669,    0,    0, 3669,
4173      3669, 3670, 3670, 3670,    0,    0,    0, 3670, 3671, 3671,
4174      3671, 3671,    0,    0, 3671, 3671, 3672, 3672, 3672, 3672,
4175         0, 3672,    0, 3672, 3673, 3673, 3673, 3673,    0,    0,
4176      3673, 3673, 3674, 3674, 3674,    0,    0,    0, 3674, 3675,
4177      3675, 3675, 3675,    0,    0, 3675, 3675, 3676, 3676, 3676,
4178         0,    0,    0, 3676, 3677, 3677, 3677, 3677,    0,    0,
4179      3677, 3677, 3678, 3678, 3678,    0,    0,    0, 3678, 3679,
4180      3679, 3679, 3679,    0,    0, 3679, 3679, 3680, 3680, 3680,
4181
4182      3680, 3680, 3680, 3680, 3680, 3680, 3681, 3681, 3681, 3681,
4183      3681, 3681, 3681, 3681, 3681, 3682, 3682, 3682, 3682,    0,
4184      3682,    0, 3682, 3683, 3683, 3683,    0,    0,    0, 3683,
4185      3684, 3684, 3684, 3684,    0,    0, 3684, 3684, 3685, 3685,
4186      3685, 3685,    0,    0, 3685, 3685, 3686, 3686, 3686,    0,
4187         0,    0, 3686, 3687, 3687, 3687, 3687,    0,    0, 3687,
4188      3687, 3688, 3688, 3688, 3688,    0,    0, 3688, 3688, 3689,
4189      3689, 3689, 3689,    0,    0, 3689, 3689, 3690, 3690, 3690,
4190      3690,    0, 3690,    0, 3690, 3691, 3691, 3691, 3691,    0,
4191         0, 3691, 3691, 3692, 3692, 3692,    0,    0,    0, 3692,
4192
4193      3693, 3693, 3693, 3693,    0,    0, 3693, 3693, 3694, 3694,
4194      3694, 3694,    0,    0, 3694, 3694, 3695, 3695, 3695,    0,
4195         0,    0, 3695, 3696, 3696, 3696, 3696,    0,    0, 3696,
4196      3696, 3697, 3697, 3697, 3697,    0,    0, 3697, 3697, 3698,
4197      3698, 3698,    0,    0,    0, 3698, 3699, 3699, 3699,    0,
4198         0,    0, 3699, 3700, 3700, 3700, 3700,    0,    0, 3700,
4199      3700, 3701, 3701, 3701, 3701,    0,    0, 3701, 3701, 3702,
4200      3702, 3702,    0,    0,    0, 3702, 3703, 3703, 3703, 3703,
4201         0,    0, 3703, 3703, 3704, 3704, 3704,    0,    0,    0,
4202      3704, 3705, 3705, 3705, 3705,    0, 3705,    0, 3705, 3706,
4203
4204      3706, 3706, 3706,    0,    0, 3706, 3706, 3707, 3707, 3707,
4205         0,    0,    0, 3707, 3708, 3708, 3708, 3708,    0,    0,
4206      3708, 3708, 3709, 3709, 3709,    0,    0,    0, 3709, 3710,
4207      3710, 3710, 3710,    0,    0, 3710, 3710, 3711, 3711, 3711,
4208         0,    0,    0, 3711, 3712, 3712, 3712, 3712,    0,    0,
4209      3712, 3712, 3713, 3713, 3713,    0,    0,    0, 3713, 3714,
4210      3714, 3714, 3714,    0,    0, 3714, 3714, 3715, 3715, 3715,
4211      3715,    0, 3715,    0, 3715, 3716, 3716, 3716, 3716,    0,
4212         0, 3716, 3716, 3717, 3717, 3717, 3717,    0, 3717,    0,
4213      3717, 3718, 3718, 3718, 3718,    0,    0, 3718, 3718, 3719,
4214
4215      3719, 3719,    0,    0,    0, 3719, 3720, 3720, 3720, 3720,
4216         0,    0, 3720, 3720, 3721, 3721, 3721, 3721,    0, 3721,
4217         0, 3721, 3722, 3722, 3722, 3722,    0,    0, 3722, 3722,
4218      3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3723, 3724,
4219      3724, 3724, 3724, 3724, 3724, 3724, 3724, 3724, 3725, 3725,
4220      3725,    0,    0,    0, 3725, 3726, 3726, 3726, 3726,    0,
4221         0, 3726, 3726, 3727, 3727, 3727, 3727,    0,    0, 3727,
4222      3727, 3728, 3728, 3728,    0,    0,    0, 3728, 3729, 3729,
4223      3729, 3729,    0,    0, 3729, 3729, 3730, 3730, 3730, 3730,
4224         0,    0, 3730, 3730, 3731, 3731, 3731, 3731,    0,    0,
4225
4226      3731, 3731, 3732, 3732, 3732, 3732,    0,    0, 3732, 3732,
4227      3733, 3733, 3733,    0,    0,    0, 3733, 3734, 3734, 3734,
4228      3734,    0,    0, 3734, 3734, 3735, 3735, 3735, 3735,    0,
4229         0, 3735, 3735, 3736, 3736, 3736,    0,    0,    0, 3736,
4230      3737, 3737, 3737, 3737,    0,    0, 3737, 3737, 3738, 3738,
4231      3738, 3738,    0,    0, 3738, 3738, 3739, 3739, 3739,    0,
4232         0,    0, 3739, 3740, 3740, 3740,    0,    0,    0, 3740,
4233      3741, 3741, 3741, 3741,    0,    0, 3741, 3741, 3742, 3742,
4234      3742, 3742,    0,    0, 3742, 3742, 3743, 3743, 3743,    0,
4235         0,    0, 3743, 3744, 3744, 3744,    0,    0,    0, 3744,
4236
4237      3745, 3745, 3745, 3745,    0,    0, 3745, 3745, 3746, 3746,
4238      3746, 3746,    0, 3746,    0, 3746, 3747, 3747, 3747, 3747,
4239         0,    0, 3747, 3747, 3748, 3748, 3748,    0,    0,    0,
4240      3748, 3749, 3749, 3749, 3749,    0,    0, 3749, 3749, 3750,
4241      3750, 3750,    0,    0,    0, 3750, 3751, 3751, 3751,    0,
4242         0,    0, 3751, 3752, 3752, 3752, 3752,    0,    0, 3752,
4243      3752, 3753, 3753, 3753,    0,    0,    0, 3753, 3754, 3754,
4244      3754, 3754,    0,    0, 3754, 3754, 3755, 3755, 3755,    0,
4245         0,    0, 3755, 3756, 3756, 3756, 3756,    0,    0, 3756,
4246      3756, 3757, 3757, 3757,    0,    0,    0, 3757, 3758, 3758,
4247
4248      3758, 3758,    0,    0, 3758, 3758, 3759, 3759, 3759, 3759,
4249      3759, 3759, 3759, 3759, 3759, 3760, 3760, 3760, 3760, 3760,
4250      3760, 3760, 3760, 3760, 3761, 3761, 3761,    0,    0,    0,
4251      3761, 3762, 3762, 3762, 3762,    0,    0, 3762, 3762, 3763,
4252      3763, 3763, 3763,    0,    0, 3763, 3763, 3764, 3764, 3764,
4253      3764,    0, 3764,    0, 3764, 3765, 3765, 3765, 3765,    0,
4254         0, 3765, 3765, 3766, 3766, 3766, 3766,    0,    0, 3766,
4255      3766, 3767, 3767, 3767, 3767,    0,    0, 3767, 3767, 3768,
4256      3768, 3768, 3768,    0,    0, 3768, 3768, 3769, 3769, 3769,
4257         0,    0,    0, 3769, 3770, 3770, 3770, 3770,    0,    0,
4258
4259      3770, 3770, 3771, 3771, 3771,    0,    0,    0, 3771, 3772,
4260      3772, 3772, 3772,    0,    0, 3772, 3772, 3773, 3773, 3773,
4261      3773,    0,    0, 3773, 3773, 3774, 3774, 3774, 3774,    0,
4262      3774,    0, 3774, 3775, 3775, 3775, 3775,    0, 3775,    0,
4263      3775, 3776, 3776, 3776, 3776,    0,    0, 3776, 3776, 3777,
4264      3777, 3777, 3777,    0,    0, 3777, 3777, 3778, 3778, 3778,
4265      3778,    0, 3778,    0, 3778, 3779, 3779, 3779,    0,    0,
4266         0, 3779, 3780, 3780, 3780, 3780,    0,    0, 3780, 3780,
4267      3781, 3781, 3781, 3781,    0, 3781,    0, 3781, 3782, 3782,
4268      3782, 3782,    0,    0, 3782, 3782, 3783, 3783, 3783, 3783,
4269
4270         0, 3783,    0, 3783, 3784, 3784, 3784,    0,    0,    0,
4271      3784, 3785, 3785, 3785,    0,    0,    0, 3785, 3786, 3786,
4272      3786,    0,    0,    0, 3786, 3787, 3787, 3787, 3787,    0,
4273         0, 3787, 3787, 3788, 3788, 3788,    0,    0,    0, 3788,
4274      3789, 3789, 3789, 3789,    0,    0, 3789, 3789, 3790, 3790,
4275      3790,    0,    0,    0, 3790, 3791, 3791, 3791, 3791,    0,
4276         0, 3791, 3791, 3792, 3792, 3792, 3792, 3792, 3792, 3792,
4277      3792, 3792, 3793, 3793, 3793, 3793, 3793, 3793, 3793, 3793,
4278      3793, 3794, 3794, 3794,    0,    0,    0, 3794, 3795, 3795,
4279      3795, 3795,    0,    0, 3795, 3795, 3796, 3796, 3796, 3796,
4280
4281         0,    0, 3796, 3796, 3797, 3797, 3797, 3797,    0,    0,
4282      3797, 3797, 3798, 3798, 3798, 3798,    0,    0, 3798, 3798,
4283      3799, 3799, 3799,    0,    0,    0, 3799, 3800, 3800, 3800,
4284         0,    0,    0, 3800, 3801, 3801, 3801, 3801,    0,    0,
4285      3801, 3801, 3802, 3802, 3802,    0,    0,    0, 3802, 3803,
4286      3803, 3803, 3803, 3803, 3803, 3803, 3803, 3803, 3804, 3804,
4287      3804, 3804, 3804, 3804, 3804, 3804, 3804, 3805, 3805, 3805,
4288      3805, 3805, 3805, 3805, 3805, 3805, 3806, 3806, 3806, 3806,
4289      3806, 3806, 3806, 3806, 3806, 3807, 3807, 3807, 3807, 3807,
4290      3807, 3807, 3807, 3807, 3808, 3808, 3808, 3808, 3808, 3808,
4291
4292      3808, 3808, 3808, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4293      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4294      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4295      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4296      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4297      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4298      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329,
4299      3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329
4300     } ;
4301
4302 /* Table of booleans, true if rule could match eol. */
4303 static yyconst flex_int32_t yy_rule_can_match_eol[562] =
4304     {   0,
4305 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
4306     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
4307     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 
4308     0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 
4309     1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 
4310     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 
4311     1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 
4312     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4313     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4314     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4315     0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4316     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
4317     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 
4318     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4319     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4320     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
4321     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4322     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
4323     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4324     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4325     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4326     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4327     1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 
4328     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4329     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
4330     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 
4331     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
4332     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 
4333     1, 0,     };
4334
4335 static yy_state_type yy_last_accepting_state;
4336 static char *yy_last_accepting_cpos;
4337
4338 extern int surf_parse__flex_debug;
4339 int surf_parse__flex_debug = 0;
4340
4341 /* The intent behind this definition is that it'll catch
4342  * any uses of REJECT which flex missed.
4343  */
4344 #define REJECT reject_used_but_not_detected
4345 #define yymore() yymore_used_but_not_detected
4346 #define YY_MORE_ADJ 0
4347 #define YY_RESTORE_YY_MORE_OFFSET
4348 char *surf_parse_text;
4349 /* Validating XML processor for src/surf/xml/simgrid.dtd.
4350  *
4351  * This program was generated with the FleXML XML processor generator.
4352  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
4353  * FleXML is Copyright (C) 2003-2013 Martin Quinson.  All rights reserved.
4354  * (1.9.6).
4355  * 
4356  * There are two, intertwined parts to this program, part A and part B.
4357  *
4358  * Part A
4359  * ------
4360  * 
4361  * Some parts, here collectively called "Part A", are found in the 
4362  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
4363  * and Copyright (C) 2003-2013 Martin Quinson. All rights reserved.
4364  *
4365  * You can redistribute, use, perform, display and/or modify "Part A"
4366  * provided the following two conditions hold:
4367  *
4368  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
4369  *    FleXML; without even the implied warranty of MERCHANTABILITY or
4370  *    FITNESS FOR A PARTICULAR PURPOSE.
4371  *
4372  * 2. The program distribution conditions do not in any way affect the
4373  *    distribution conditions of the FleXML system used to generate this
4374  *    file or any version of FleXML derived from that system.
4375  *
4376  * Notice that these are explicit rights granted to you for files
4377  * generated by the FleXML system.  For your rights in connection with
4378  * the FleXML system itself please consult the GNU General Public License.
4379  * 
4380  * Part B
4381  * ------
4382  * 
4383  * The other parts, here collectively called "Part B", and which came 
4384  * from the DTD used by FleXML to generate this program, can be 
4385  * distributed (or not, as the case may be) under the terms of whoever
4386  * wrote them, provided these terms respect and obey the two conditions 
4387  * above under the heading "Part A".
4388  *
4389  * The author of and contributors to FleXML specifically disclaim
4390  * any copyright interest in "Part B", unless "Part B" was written 
4391  * by the author of or contributors to FleXML.
4392  * 
4393  */
4394
4395 /* Version strings. */
4396 const char surfxml_flexml_version[] = "1.9.6";
4397
4398 /* ANSI headers. */
4399 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
4400 #include <stdio.h>
4401 #include <string.h>
4402 #include <assert.h>
4403 #include <stdarg.h>
4404 #include <ctype.h>
4405      
4406 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
4407 # ifndef __STRICT_ANSI__
4408 #  include <io.h>
4409 #  include <process.h>
4410 # endif
4411 #else
4412 # include <unistd.h>
4413 #endif
4414      
4415 #ifndef FLEXML_INDEXSTACKSIZE
4416 #define FLEXML_INDEXSTACKSIZE 1000
4417 #endif
4418
4419 /* Generated definitions. */
4420 #define FLEXML_yylineno
4421 #ifndef FLEXML_BUFFERSTACKSIZE
4422 #define FLEXML_BUFFERSTACKSIZE 1000000
4423 #endif
4424 #define FLEXML_NEED_BUFFERLIT
4425
4426 /* XML processor api. */
4427 /* FleXML-provided data. */
4428 int surfxml_pcdata_ix;
4429 extern char *surfxml_bufferstack;
4430 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
4431 AT_surfxml_AS_id AX_surfxml_AS_id;
4432 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
4433 short int surfxml_AS_id_isset;
4434 AT_surfxml_AS_routing AX_surfxml_AS_routing;
4435 #define A_surfxml_AS_routing AX_surfxml_AS_routing
4436 short int surfxml_AS_routing_isset;
4437 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
4438 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
4439 short int surfxml_ASroute_dst_isset;
4440 AT_surfxml_ASroute_gw___dst AX_surfxml_ASroute_gw___dst;
4441 #define A_surfxml_ASroute_gw___dst (surfxml_bufferstack + AX_surfxml_ASroute_gw___dst)
4442 short int surfxml_ASroute_gw___dst_isset;
4443 AT_surfxml_ASroute_gw___src AX_surfxml_ASroute_gw___src;
4444 #define A_surfxml_ASroute_gw___src (surfxml_bufferstack + AX_surfxml_ASroute_gw___src)
4445 short int surfxml_ASroute_gw___src_isset;
4446 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
4447 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
4448 short int surfxml_ASroute_src_isset;
4449 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
4450 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
4451 short int surfxml_ASroute_symmetrical_isset;
4452 AT_surfxml_argument_value AX_surfxml_argument_value;
4453 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
4454 short int surfxml_argument_value_isset;
4455 AT_surfxml_backbone_bandwidth AX_surfxml_backbone_bandwidth;
4456 #define A_surfxml_backbone_bandwidth (surfxml_bufferstack + AX_surfxml_backbone_bandwidth)
4457 short int surfxml_backbone_bandwidth_isset;
4458 AT_surfxml_backbone_id AX_surfxml_backbone_id;
4459 #define A_surfxml_backbone_id (surfxml_bufferstack + AX_surfxml_backbone_id)
4460 short int surfxml_backbone_id_isset;
4461 AT_surfxml_backbone_latency AX_surfxml_backbone_latency;
4462 #define A_surfxml_backbone_latency (surfxml_bufferstack + AX_surfxml_backbone_latency)
4463 short int surfxml_backbone_latency_isset;
4464 AT_surfxml_bypassASroute_dst AX_surfxml_bypassASroute_dst;
4465 #define A_surfxml_bypassASroute_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_dst)
4466 short int surfxml_bypassASroute_dst_isset;
4467 AT_surfxml_bypassASroute_gw___dst AX_surfxml_bypassASroute_gw___dst;
4468 #define A_surfxml_bypassASroute_gw___dst (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___dst)
4469 short int surfxml_bypassASroute_gw___dst_isset;
4470 AT_surfxml_bypassASroute_gw___src AX_surfxml_bypassASroute_gw___src;
4471 #define A_surfxml_bypassASroute_gw___src (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___src)
4472 short int surfxml_bypassASroute_gw___src_isset;
4473 AT_surfxml_bypassASroute_src AX_surfxml_bypassASroute_src;
4474 #define A_surfxml_bypassASroute_src (surfxml_bufferstack + AX_surfxml_bypassASroute_src)
4475 short int surfxml_bypassASroute_src_isset;
4476 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
4477 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
4478 short int surfxml_bypassRoute_dst_isset;
4479 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
4480 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
4481 short int surfxml_bypassRoute_src_isset;
4482 AT_surfxml_cabinet_bw AX_surfxml_cabinet_bw;
4483 #define A_surfxml_cabinet_bw (surfxml_bufferstack + AX_surfxml_cabinet_bw)
4484 short int surfxml_cabinet_bw_isset;
4485 AT_surfxml_cabinet_id AX_surfxml_cabinet_id;
4486 #define A_surfxml_cabinet_id (surfxml_bufferstack + AX_surfxml_cabinet_id)
4487 short int surfxml_cabinet_id_isset;
4488 AT_surfxml_cabinet_lat AX_surfxml_cabinet_lat;
4489 #define A_surfxml_cabinet_lat (surfxml_bufferstack + AX_surfxml_cabinet_lat)
4490 short int surfxml_cabinet_lat_isset;
4491 AT_surfxml_cabinet_prefix AX_surfxml_cabinet_prefix;
4492 #define A_surfxml_cabinet_prefix (surfxml_bufferstack + AX_surfxml_cabinet_prefix)
4493 short int surfxml_cabinet_prefix_isset;
4494 AT_surfxml_cabinet_radical AX_surfxml_cabinet_radical;
4495 #define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
4496 short int surfxml_cabinet_radical_isset;
4497 AT_surfxml_cabinet_speed AX_surfxml_cabinet_speed;
4498 #define A_surfxml_cabinet_speed (surfxml_bufferstack + AX_surfxml_cabinet_speed)
4499 short int surfxml_cabinet_speed_isset;
4500 AT_surfxml_cabinet_suffix AX_surfxml_cabinet_suffix;
4501 #define A_surfxml_cabinet_suffix (surfxml_bufferstack + AX_surfxml_cabinet_suffix)
4502 short int surfxml_cabinet_suffix_isset;
4503 AT_surfxml_cluster_availability___file AX_surfxml_cluster_availability___file;
4504 #define A_surfxml_cluster_availability___file (surfxml_bufferstack + AX_surfxml_cluster_availability___file)
4505 short int surfxml_cluster_availability___file_isset;
4506 AT_surfxml_cluster_bb___bw AX_surfxml_cluster_bb___bw;
4507 #define A_surfxml_cluster_bb___bw (surfxml_bufferstack + AX_surfxml_cluster_bb___bw)
4508 short int surfxml_cluster_bb___bw_isset;
4509 AT_surfxml_cluster_bb___lat AX_surfxml_cluster_bb___lat;
4510 #define A_surfxml_cluster_bb___lat (surfxml_bufferstack + AX_surfxml_cluster_bb___lat)
4511 short int surfxml_cluster_bb___lat_isset;
4512 AT_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy;
4513 #define A_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy
4514 short int surfxml_cluster_bb___sharing___policy_isset;
4515 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
4516 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
4517 short int surfxml_cluster_bw_isset;
4518 AT_surfxml_cluster_core AX_surfxml_cluster_core;
4519 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
4520 short int surfxml_cluster_core_isset;
4521 AT_surfxml_cluster_id AX_surfxml_cluster_id;
4522 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
4523 short int surfxml_cluster_id_isset;
4524 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
4525 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
4526 short int surfxml_cluster_lat_isset;
4527 AT_surfxml_cluster_limiter___link AX_surfxml_cluster_limiter___link;
4528 #define A_surfxml_cluster_limiter___link (surfxml_bufferstack + AX_surfxml_cluster_limiter___link)
4529 short int surfxml_cluster_limiter___link_isset;
4530 AT_surfxml_cluster_loopback___bw AX_surfxml_cluster_loopback___bw;
4531 #define A_surfxml_cluster_loopback___bw (surfxml_bufferstack + AX_surfxml_cluster_loopback___bw)
4532 short int surfxml_cluster_loopback___bw_isset;
4533 AT_surfxml_cluster_loopback___lat AX_surfxml_cluster_loopback___lat;
4534 #define A_surfxml_cluster_loopback___lat (surfxml_bufferstack + AX_surfxml_cluster_loopback___lat)
4535 short int surfxml_cluster_loopback___lat_isset;
4536 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
4537 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
4538 short int surfxml_cluster_prefix_isset;
4539 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
4540 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
4541 short int surfxml_cluster_radical_isset;
4542 AT_surfxml_cluster_router___id AX_surfxml_cluster_router___id;
4543 #define A_surfxml_cluster_router___id (surfxml_bufferstack + AX_surfxml_cluster_router___id)
4544 short int surfxml_cluster_router___id_isset;
4545 AT_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy;
4546 #define A_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy
4547 short int surfxml_cluster_sharing___policy_isset;
4548 AT_surfxml_cluster_speed AX_surfxml_cluster_speed;
4549 #define A_surfxml_cluster_speed (surfxml_bufferstack + AX_surfxml_cluster_speed)
4550 short int surfxml_cluster_speed_isset;
4551 AT_surfxml_cluster_state___file AX_surfxml_cluster_state___file;
4552 #define A_surfxml_cluster_state___file (surfxml_bufferstack + AX_surfxml_cluster_state___file)
4553 short int surfxml_cluster_state___file_isset;
4554 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
4555 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
4556 short int surfxml_cluster_suffix_isset;
4557 AT_surfxml_cluster_topo___parameters AX_surfxml_cluster_topo___parameters;
4558 #define A_surfxml_cluster_topo___parameters (surfxml_bufferstack + AX_surfxml_cluster_topo___parameters)
4559 short int surfxml_cluster_topo___parameters_isset;
4560 AT_surfxml_cluster_topology AX_surfxml_cluster_topology;
4561 #define A_surfxml_cluster_topology AX_surfxml_cluster_topology
4562 short int surfxml_cluster_topology_isset;
4563 AT_surfxml_config_id AX_surfxml_config_id;
4564 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
4565 short int surfxml_config_id_isset;
4566 AT_surfxml_host_availability___file AX_surfxml_host_availability___file;
4567 #define A_surfxml_host_availability___file (surfxml_bufferstack + AX_surfxml_host_availability___file)
4568 short int surfxml_host_availability___file_isset;
4569 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
4570 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
4571 short int surfxml_host_coordinates_isset;
4572 AT_surfxml_host_core AX_surfxml_host_core;
4573 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
4574 short int surfxml_host_core_isset;
4575 AT_surfxml_host_id AX_surfxml_host_id;
4576 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
4577 short int surfxml_host_id_isset;
4578 AT_surfxml_host_pstate AX_surfxml_host_pstate;
4579 #define A_surfxml_host_pstate (surfxml_bufferstack + AX_surfxml_host_pstate)
4580 short int surfxml_host_pstate_isset;
4581 AT_surfxml_host_speed AX_surfxml_host_speed;
4582 #define A_surfxml_host_speed (surfxml_bufferstack + AX_surfxml_host_speed)
4583 short int surfxml_host_speed_isset;
4584 AT_surfxml_host_state___file AX_surfxml_host_state___file;
4585 #define A_surfxml_host_state___file (surfxml_bufferstack + AX_surfxml_host_state___file)
4586 short int surfxml_host_state___file_isset;
4587 AT_surfxml_host___link_down AX_surfxml_host___link_down;
4588 #define A_surfxml_host___link_down (surfxml_bufferstack + AX_surfxml_host___link_down)
4589 short int surfxml_host___link_down_isset;
4590 AT_surfxml_host___link_id AX_surfxml_host___link_id;
4591 #define A_surfxml_host___link_id (surfxml_bufferstack + AX_surfxml_host___link_id)
4592 short int surfxml_host___link_id_isset;
4593 AT_surfxml_host___link_up AX_surfxml_host___link_up;
4594 #define A_surfxml_host___link_up (surfxml_bufferstack + AX_surfxml_host___link_up)
4595 short int surfxml_host___link_up_isset;
4596 AT_surfxml_include_file AX_surfxml_include_file;
4597 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
4598 short int surfxml_include_file_isset;
4599 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
4600 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
4601 short int surfxml_link_bandwidth_isset;
4602 AT_surfxml_link_bandwidth___file AX_surfxml_link_bandwidth___file;
4603 #define A_surfxml_link_bandwidth___file (surfxml_bufferstack + AX_surfxml_link_bandwidth___file)
4604 short int surfxml_link_bandwidth___file_isset;
4605 AT_surfxml_link_id AX_surfxml_link_id;
4606 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
4607 short int surfxml_link_id_isset;
4608 AT_surfxml_link_latency AX_surfxml_link_latency;
4609 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
4610 short int surfxml_link_latency_isset;
4611 AT_surfxml_link_latency___file AX_surfxml_link_latency___file;
4612 #define A_surfxml_link_latency___file (surfxml_bufferstack + AX_surfxml_link_latency___file)
4613 short int surfxml_link_latency___file_isset;
4614 AT_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy;
4615 #define A_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy
4616 short int surfxml_link_sharing___policy_isset;
4617 AT_surfxml_link_state___file AX_surfxml_link_state___file;
4618 #define A_surfxml_link_state___file (surfxml_bufferstack + AX_surfxml_link_state___file)
4619 short int surfxml_link_state___file_isset;
4620 AT_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction;
4621 #define A_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction
4622 short int surfxml_link___ctn_direction_isset;
4623 AT_surfxml_link___ctn_id AX_surfxml_link___ctn_id;
4624 #define A_surfxml_link___ctn_id (surfxml_bufferstack + AX_surfxml_link___ctn_id)
4625 short int surfxml_link___ctn_id_isset;
4626 AT_surfxml_model___prop_id AX_surfxml_model___prop_id;
4627 #define A_surfxml_model___prop_id (surfxml_bufferstack + AX_surfxml_model___prop_id)
4628 short int surfxml_model___prop_id_isset;
4629 AT_surfxml_model___prop_value AX_surfxml_model___prop_value;
4630 #define A_surfxml_model___prop_value (surfxml_bufferstack + AX_surfxml_model___prop_value)
4631 short int surfxml_model___prop_value_isset;
4632 AT_surfxml_mount_name AX_surfxml_mount_name;
4633 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
4634 short int surfxml_mount_name_isset;
4635 AT_surfxml_mount_storageId AX_surfxml_mount_storageId;
4636 #define A_surfxml_mount_storageId (surfxml_bufferstack + AX_surfxml_mount_storageId)
4637 short int surfxml_mount_storageId_isset;
4638 AT_surfxml_peer_availability___file AX_surfxml_peer_availability___file;
4639 #define A_surfxml_peer_availability___file (surfxml_bufferstack + AX_surfxml_peer_availability___file)
4640 short int surfxml_peer_availability___file_isset;
4641 AT_surfxml_peer_bw___in AX_surfxml_peer_bw___in;
4642 #define A_surfxml_peer_bw___in (surfxml_bufferstack + AX_surfxml_peer_bw___in)
4643 short int surfxml_peer_bw___in_isset;
4644 AT_surfxml_peer_bw___out AX_surfxml_peer_bw___out;
4645 #define A_surfxml_peer_bw___out (surfxml_bufferstack + AX_surfxml_peer_bw___out)
4646 short int surfxml_peer_bw___out_isset;
4647 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
4648 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
4649 short int surfxml_peer_coordinates_isset;
4650 AT_surfxml_peer_id AX_surfxml_peer_id;
4651 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
4652 short int surfxml_peer_id_isset;
4653 AT_surfxml_peer_lat AX_surfxml_peer_lat;
4654 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
4655 short int surfxml_peer_lat_isset;
4656 AT_surfxml_peer_speed AX_surfxml_peer_speed;
4657 #define A_surfxml_peer_speed (surfxml_bufferstack + AX_surfxml_peer_speed)
4658 short int surfxml_peer_speed_isset;
4659 AT_surfxml_peer_state___file AX_surfxml_peer_state___file;
4660 #define A_surfxml_peer_state___file (surfxml_bufferstack + AX_surfxml_peer_state___file)
4661 short int surfxml_peer_state___file_isset;
4662 AT_surfxml_platform_version AX_surfxml_platform_version;
4663 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
4664 short int surfxml_platform_version_isset;
4665 AT_surfxml_process_function AX_surfxml_process_function;
4666 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
4667 short int surfxml_process_function_isset;
4668 AT_surfxml_process_host AX_surfxml_process_host;
4669 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
4670 short int surfxml_process_host_isset;
4671 AT_surfxml_process_kill___time AX_surfxml_process_kill___time;
4672 #define A_surfxml_process_kill___time (surfxml_bufferstack + AX_surfxml_process_kill___time)
4673 short int surfxml_process_kill___time_isset;
4674 AT_surfxml_process_on___failure AX_surfxml_process_on___failure;
4675 #define A_surfxml_process_on___failure AX_surfxml_process_on___failure
4676 short int surfxml_process_on___failure_isset;
4677 AT_surfxml_process_start___time AX_surfxml_process_start___time;
4678 #define A_surfxml_process_start___time (surfxml_bufferstack + AX_surfxml_process_start___time)
4679 short int surfxml_process_start___time_isset;
4680 AT_surfxml_prop_id AX_surfxml_prop_id;
4681 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
4682 short int surfxml_prop_id_isset;
4683 AT_surfxml_prop_value AX_surfxml_prop_value;
4684 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
4685 short int surfxml_prop_value_isset;
4686 AT_surfxml_random_generator AX_surfxml_random_generator;
4687 #define A_surfxml_random_generator AX_surfxml_random_generator
4688 short int surfxml_random_generator_isset;
4689 AT_surfxml_random_id AX_surfxml_random_id;
4690 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
4691 short int surfxml_random_id_isset;
4692 AT_surfxml_random_max AX_surfxml_random_max;
4693 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
4694 short int surfxml_random_max_isset;
4695 AT_surfxml_random_mean AX_surfxml_random_mean;
4696 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
4697 short int surfxml_random_mean_isset;
4698 AT_surfxml_random_min AX_surfxml_random_min;
4699 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
4700 short int surfxml_random_min_isset;
4701 AT_surfxml_random_radical AX_surfxml_random_radical;
4702 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
4703 short int surfxml_random_radical_isset;
4704 AT_surfxml_random_seed AX_surfxml_random_seed;
4705 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
4706 short int surfxml_random_seed_isset;
4707 AT_surfxml_random_std___deviation AX_surfxml_random_std___deviation;
4708 #define A_surfxml_random_std___deviation (surfxml_bufferstack + AX_surfxml_random_std___deviation)
4709 short int surfxml_random_std___deviation_isset;
4710 AT_surfxml_route_dst AX_surfxml_route_dst;
4711 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
4712 short int surfxml_route_dst_isset;
4713 AT_surfxml_route_src AX_surfxml_route_src;
4714 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
4715 short int surfxml_route_src_isset;
4716 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
4717 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
4718 short int surfxml_route_symmetrical_isset;
4719 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
4720 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
4721 short int surfxml_router_coordinates_isset;
4722 AT_surfxml_router_id AX_surfxml_router_id;
4723 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
4724 short int surfxml_router_id_isset;
4725 AT_surfxml_storage_attach AX_surfxml_storage_attach;
4726 #define A_surfxml_storage_attach (surfxml_bufferstack + AX_surfxml_storage_attach)
4727 short int surfxml_storage_attach_isset;
4728 AT_surfxml_storage_content AX_surfxml_storage_content;
4729 #define A_surfxml_storage_content (surfxml_bufferstack + AX_surfxml_storage_content)
4730 short int surfxml_storage_content_isset;
4731 AT_surfxml_storage_content___type AX_surfxml_storage_content___type;
4732 #define A_surfxml_storage_content___type (surfxml_bufferstack + AX_surfxml_storage_content___type)
4733 short int surfxml_storage_content___type_isset;
4734 AT_surfxml_storage_id AX_surfxml_storage_id;
4735 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
4736 short int surfxml_storage_id_isset;
4737 AT_surfxml_storage_typeId AX_surfxml_storage_typeId;
4738 #define A_surfxml_storage_typeId (surfxml_bufferstack + AX_surfxml_storage_typeId)
4739 short int surfxml_storage_typeId_isset;
4740 AT_surfxml_storage___type_content AX_surfxml_storage___type_content;
4741 #define A_surfxml_storage___type_content (surfxml_bufferstack + AX_surfxml_storage___type_content)
4742 short int surfxml_storage___type_content_isset;
4743 AT_surfxml_storage___type_content___type AX_surfxml_storage___type_content___type;
4744 #define A_surfxml_storage___type_content___type (surfxml_bufferstack + AX_surfxml_storage___type_content___type)
4745 short int surfxml_storage___type_content___type_isset;
4746 AT_surfxml_storage___type_id AX_surfxml_storage___type_id;
4747 #define A_surfxml_storage___type_id (surfxml_bufferstack + AX_surfxml_storage___type_id)
4748 short int surfxml_storage___type_id_isset;
4749 AT_surfxml_storage___type_model AX_surfxml_storage___type_model;
4750 #define A_surfxml_storage___type_model (surfxml_bufferstack + AX_surfxml_storage___type_model)
4751 short int surfxml_storage___type_model_isset;
4752 AT_surfxml_storage___type_size AX_surfxml_storage___type_size;
4753 #define A_surfxml_storage___type_size (surfxml_bufferstack + AX_surfxml_storage___type_size)
4754 short int surfxml_storage___type_size_isset;
4755 AT_surfxml_trace_file AX_surfxml_trace_file;
4756 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
4757 short int surfxml_trace_file_isset;
4758 AT_surfxml_trace_id AX_surfxml_trace_id;
4759 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
4760 short int surfxml_trace_id_isset;
4761 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
4762 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
4763 short int surfxml_trace_periodicity_isset;
4764 AT_surfxml_trace___connect_element AX_surfxml_trace___connect_element;
4765 #define A_surfxml_trace___connect_element (surfxml_bufferstack + AX_surfxml_trace___connect_element)
4766 short int surfxml_trace___connect_element_isset;
4767 AT_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind;
4768 #define A_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind
4769 short int surfxml_trace___connect_kind_isset;
4770 AT_surfxml_trace___connect_trace AX_surfxml_trace___connect_trace;
4771 #define A_surfxml_trace___connect_trace (surfxml_bufferstack + AX_surfxml_trace___connect_trace)
4772 short int surfxml_trace___connect_trace_isset;
4773
4774 /* XML state. */
4775 #ifdef FLEX_DEBUG
4776 # define ENTER(state)   debug_enter(state,#state)
4777 # define LEAVE          debug_leave()
4778 # define SET(state)     debug_set(state,#state)
4779   static void debug_enter(int, const char*);
4780   static void debug_leave(void);
4781   static void debug_set(int, const char*);
4782 #else
4783 # define ENTER(state)   (yy_push_state(state))
4784 # define LEAVE          (yy_pop_state())
4785 # define SET(state)     BEGIN(state)
4786 #endif
4787
4788 /* Generic actions. */
4789 #define SKIP    /*skip*/
4790 #define SUCCEED        CLEANUP; return 0
4791
4792 #define FAIL    return fail
4793 static int fail(const char*, ...);
4794
4795 enum {flexml_max_err_msg_size = 512};
4796 static char flexml_err_msg[flexml_max_err_msg_size];
4797 const char * surfxml_parse_err_msg()
4798 {
4799     return flexml_err_msg;
4800 }
4801 static void reset_surfxml_parse_err_msg()
4802 {
4803     flexml_err_msg[0] = '\0';
4804 }
4805
4806 /* Cleanup */
4807 static void cleanup(void);
4808 #define CLEANUP  cleanup()
4809
4810 /* Text buffer stack handling. */
4811 char *surfxml_bufferstack = NULL;
4812 static int blimit = FLEXML_BUFFERSTACKSIZE;
4813 static int bnext = 1;
4814
4815 static int *indexstack = NULL;
4816 static int ilimit = FLEXML_INDEXSTACKSIZE;
4817 static int inext = 1;
4818
4819 #define BUFFERSET(P)  (P = bnext)
4820 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
4821 #define BUFFERDONE    (BUFFERPUTC('\0'))
4822
4823 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
4824
4825 /* after this is called, there are at least 2 slots left in the stack */
4826 static int ck_blimit()
4827 {
4828      if (bnext >= blimit) {
4829          blimit += FLEXML_BUFFERSTACKSIZE + 2;
4830          {
4831              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
4832              assert(temp);
4833              surfxml_bufferstack = temp;
4834          }
4835      }
4836      return 0;
4837 }
4838
4839 /* after this is called, there are at least 2 slots left in the stack */
4840 static int ck_ilimit()
4841 {
4842      if (inext >= ilimit) {
4843          ilimit += FLEXML_INDEXSTACKSIZE + 2;
4844          {
4845              int *temp = (int *) realloc(indexstack, ilimit);
4846              assert(temp);
4847              indexstack = temp;
4848          }
4849      }
4850      return 0;
4851 }
4852
4853 #ifdef FLEXML_NEED_BUFFERLIT
4854 static void surfxml_bufferliteral(char c, int* pp, const char* text)
4855 {
4856    BUFFERSET(*pp);
4857    if (c) {
4858       const char *s = strchr(text, c), *e = strrchr(text, c);
4859       assert(s && e && s <= e);
4860       ++s;
4861       while (s < e) {
4862          if (isspace(*s)) {
4863             BUFFERPUTC(' ');
4864             do ++s; while (s < e && isspace(*s));
4865          } else
4866            BUFFERPUTC(*s++);
4867       }
4868    } else {
4869       const char *s = text;
4870       while (*s)
4871         BUFFERPUTC(*s++);
4872    }
4873    BUFFERDONE;
4874 }
4875 #endif
4876
4877 static void pushbuffer(int p)
4878 {
4879     ck_ilimit();
4880     indexstack[inext++] = p;
4881     indexstack[inext++] = bnext;    
4882 }
4883
4884 static int popbuffer(void)
4885 {
4886     assert(inext >= 2);
4887     bnext = indexstack[--inext];
4888     return indexstack[--inext];
4889 }
4890
4891 /* General internal entities are `unput' back onto the input stream... */
4892 #define ENTITYTEXT(T) \
4893   { char *s = (T), *e = s+strlen(s);\
4894     while (--e >= s) { unput(*e); }}
4895
4896 /* Flex standard options. */
4897 #define YY_NO_INPUT 1
4898 /* Flex user-requested options. */
4899 /* XML character classes (currently restricted to ASCII). */
4900 /* "Common syntactic structures." */
4901 /* "Names and Tokens." */
4902 /* Miscellaneous. */
4903 /* Parser states (flex `exclusive start conditions'):
4904  *
4905  * PROLOG       the XML prolog of the document before <?xml...>
4906  * DOCTYPE      the XML prolog of the document after <?xml...>
4907  * EPILOG       after the root element
4908  * INCOMMENT    inside an XML comment <!--....-->
4909  * INPI         inside an XML PI <?...?>
4910  * VALUE1       inside a '...'-delimited literal
4911  * VALUE2       inside a "..."-delimited literal
4912  * CDATA        inside a <![CDATA[...] ]> section.
4913  * ROOT_<tag>   expect root element <tag>
4914  * AL_<tag>     inside the attribute list for <tag>
4915  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
4916  * IMPOSSIBLE   dummy to permit disabling rules; must be last
4917  */
4918
4919 /* State names. */
4920 const char* *surfxml_statenames=NULL;
4921
4922 #define INITIAL 0
4923 #define PROLOG 1
4924 #define DOCTYPE 2
4925 #define EPILOG 3
4926 #define INCOMMENT 4
4927 #define INPI 5
4928 #define VALUE1 6
4929 #define VALUE2 7
4930 #define CDATA 8
4931 #define AL_surfxml_AS 9
4932 #define S_surfxml_AS 10
4933 #define S_surfxml_AS_1 11
4934 #define S_surfxml_AS_2 12
4935 #define S_surfxml_AS_3 13
4936 #define S_surfxml_AS_4 14
4937 #define S_surfxml_AS_5 15
4938 #define S_surfxml_AS_6 16
4939 #define S_surfxml_AS_7 17
4940 #define S_surfxml_AS_8 18
4941 #define E_surfxml_AS 19
4942 #define AL_surfxml_ASroute 20
4943 #define S_surfxml_ASroute 21
4944 #define S_surfxml_ASroute_1 22
4945 #define S_surfxml_ASroute_2 23
4946 #define E_surfxml_ASroute 24
4947 #define AL_surfxml_argument 25
4948 #define E_surfxml_argument 26
4949 #define AL_surfxml_backbone 27
4950 #define E_surfxml_backbone 28
4951 #define AL_surfxml_bypassASroute 29
4952 #define S_surfxml_bypassASroute 30
4953 #define S_surfxml_bypassASroute_1 31
4954 #define S_surfxml_bypassASroute_2 32
4955 #define E_surfxml_bypassASroute 33
4956 #define AL_surfxml_bypassRoute 34
4957 #define S_surfxml_bypassRoute 35
4958 #define S_surfxml_bypassRoute_1 36
4959 #define S_surfxml_bypassRoute_2 37
4960 #define E_surfxml_bypassRoute 38
4961 #define AL_surfxml_cabinet 39
4962 #define E_surfxml_cabinet 40
4963 #define AL_surfxml_cluster 41
4964 #define S_surfxml_cluster 42
4965 #define S_surfxml_cluster_1 43
4966 #define S_surfxml_cluster_2 44
4967 #define E_surfxml_cluster 45
4968 #define AL_surfxml_config 46
4969 #define S_surfxml_config 47
4970 #define S_surfxml_config_1 48
4971 #define S_surfxml_config_2 49
4972 #define E_surfxml_config 50
4973 #define AL_surfxml_host 51
4974 #define S_surfxml_host 52
4975 #define S_surfxml_host_1 53
4976 #define S_surfxml_host_2 54
4977 #define E_surfxml_host 55
4978 #define AL_surfxml_host___link 56
4979 #define E_surfxml_host___link 57
4980 #define AL_surfxml_include 58
4981 #define S_surfxml_include 59
4982 #define S_surfxml_include_1 60
4983 #define S_surfxml_include_2 61
4984 #define E_surfxml_include 62
4985 #define AL_surfxml_link 63
4986 #define S_surfxml_link 64
4987 #define S_surfxml_link_1 65
4988 #define S_surfxml_link_2 66
4989 #define E_surfxml_link 67
4990 #define AL_surfxml_link___ctn 68
4991 #define E_surfxml_link___ctn 69
4992 #define AL_surfxml_model___prop 70
4993 #define E_surfxml_model___prop 71
4994 #define AL_surfxml_mount 72
4995 #define E_surfxml_mount 73
4996 #define AL_surfxml_peer 74
4997 #define E_surfxml_peer 75
4998 #define ROOT_surfxml_platform 76
4999 #define AL_surfxml_platform 77
5000 #define S_surfxml_platform 78
5001 #define S_surfxml_platform_1 79
5002 #define S_surfxml_platform_2 80
5003 #define S_surfxml_platform_3 81
5004 #define S_surfxml_platform_4 82
5005 #define S_surfxml_platform_5 83
5006 #define S_surfxml_platform_6 84
5007 #define S_surfxml_platform_7 85
5008 #define S_surfxml_platform_8 86
5009 #define E_surfxml_platform 87
5010 #define AL_surfxml_process 88
5011 #define S_surfxml_process 89
5012 #define S_surfxml_process_1 90
5013 #define S_surfxml_process_2 91
5014 #define E_surfxml_process 92
5015 #define AL_surfxml_prop 93
5016 #define E_surfxml_prop 94
5017 #define AL_surfxml_random 95
5018 #define E_surfxml_random 96
5019 #define AL_surfxml_route 97
5020 #define S_surfxml_route 98
5021 #define S_surfxml_route_1 99
5022 #define S_surfxml_route_2 100
5023 #define E_surfxml_route 101
5024 #define AL_surfxml_router 102
5025 #define E_surfxml_router 103
5026 #define AL_surfxml_storage 104
5027 #define S_surfxml_storage 105
5028 #define S_surfxml_storage_1 106
5029 #define S_surfxml_storage_2 107
5030 #define E_surfxml_storage 108
5031 #define AL_surfxml_storage___type 109
5032 #define S_surfxml_storage___type 110
5033 #define S_surfxml_storage___type_1 111
5034 #define S_surfxml_storage___type_2 112
5035 #define E_surfxml_storage___type 113
5036 #define AL_surfxml_trace 114
5037 #define IN_trace 115
5038 #define AL_surfxml_trace___connect 116
5039 #define E_surfxml_trace___connect 117
5040 #define IMPOSSIBLE 118
5041
5042 #ifndef YY_NO_UNISTD_H
5043 /* Special case for "unistd.h", since it is non-ANSI. We include it way
5044  * down here because we want the user's section 1 to have been scanned first.
5045  * The user has a chance to override it with an option.
5046  */
5047 #if defined(_WIN32)
5048 #  ifndef __STRICT_ANSI__
5049 #    include <io.h>
5050 #    include <process.h>
5051 #  endif
5052 #else
5053 #  include <unistd.h>
5054 #endif
5055 #endif
5056
5057 #ifndef YY_EXTRA_TYPE
5058 #define YY_EXTRA_TYPE void *
5059 #endif
5060
5061 static int yy_init_globals (void );
5062
5063 /* Accessor methods to globals.
5064    These are made visible to non-reentrant scanners for convenience. */
5065
5066 int surf_parse_lex_destroy (void );
5067
5068 int surf_parse_get_debug (void );
5069
5070 void surf_parse_set_debug (int debug_flag  );
5071
5072 YY_EXTRA_TYPE surf_parse_get_extra (void );
5073
5074 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
5075
5076 FILE *surf_parse_get_in (void );
5077
5078 void surf_parse_set_in  (FILE * in_str  );
5079
5080 FILE *surf_parse_get_out (void );
5081
5082 void surf_parse_set_out  (FILE * out_str  );
5083
5084 yy_size_t surf_parse_get_leng (void );
5085
5086 char *surf_parse_get_text (void );
5087
5088 int surf_parse_get_lineno (void );
5089
5090 void surf_parse_set_lineno (int line_number  );
5091
5092 /* Macros after this point can all be overridden by user definitions in
5093  * section 1.
5094  */
5095
5096 #ifndef YY_SKIP_YYWRAP
5097 #ifdef __cplusplus
5098 extern "C" int surf_parse_wrap (void );
5099 #else
5100 extern int surf_parse_wrap (void );
5101 #endif
5102 #endif
5103
5104 #ifndef yytext_ptr
5105 static void yy_flex_strncpy (char *,yyconst char *,int );
5106 #endif
5107
5108 #ifdef YY_NEED_STRLEN
5109 static int yy_flex_strlen (yyconst char * );
5110 #endif
5111
5112 #ifndef YY_NO_INPUT
5113
5114 #ifdef __cplusplus
5115 static int yyinput (void );
5116 #else
5117 static int input (void );
5118 #endif
5119
5120 #endif
5121
5122         static int yy_start_stack_ptr = 0;
5123         static int yy_start_stack_depth = 0;
5124         static int *yy_start_stack = NULL;
5125     
5126     static void yy_push_state (int new_state );
5127     
5128     static void yy_pop_state (void );
5129     
5130 /* Amount of stuff to slurp up with each read. */
5131 #ifndef YY_READ_BUF_SIZE
5132 #ifdef __ia64__
5133 /* On IA-64, the buffer size is 16k, not 8k */
5134 #define YY_READ_BUF_SIZE 16384
5135 #else
5136 #define YY_READ_BUF_SIZE 8192
5137 #endif /* __ia64__ */
5138 #endif
5139
5140 /* Copy whatever the last rule matched to the standard output. */
5141 #ifndef ECHO
5142 /* This used to be an fputs(), but since the string might contain NUL's,
5143  * we now use fwrite().
5144  */
5145 #define ECHO do { if (fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )) {} } while (0)
5146 #endif
5147
5148 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
5149  * is returned in "result".
5150  */
5151 #ifndef YY_INPUT
5152 #define YY_INPUT(buf,result,max_size) \
5153         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
5154                 { \
5155                 int c = '*'; \
5156                 size_t n; \
5157                 for ( n = 0; n < max_size && \
5158                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
5159                         buf[n] = (char) c; \
5160                 if ( c == '\n' ) \
5161                         buf[n++] = (char) c; \
5162                 if ( c == EOF && ferror( surf_parse_in ) ) \
5163                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
5164                 result = n; \
5165                 } \
5166         else \
5167                 { \
5168                 errno=0; \
5169                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
5170                         { \
5171                         if( errno != EINTR) \
5172                                 { \
5173                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
5174                                 break; \
5175                                 } \
5176                         errno=0; \
5177                         clearerr(surf_parse_in); \
5178                         } \
5179                 }\
5180 \
5181
5182 #endif
5183
5184 /* No semi-colon after return; correct usage is to write "yyterminate();" -
5185  * we don't want an extra ';' after the "return" because that will cause
5186  * some compilers to complain about unreachable statements.
5187  */
5188 #ifndef yyterminate
5189 #define yyterminate() return YY_NULL
5190 #endif
5191
5192 /* Number of entries by which start-condition stack grows. */
5193 #ifndef YY_START_STACK_INCR
5194 #define YY_START_STACK_INCR 25
5195 #endif
5196
5197 /* Report a fatal error. */
5198 #ifndef YY_FATAL_ERROR
5199 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
5200 #endif
5201
5202 /* end tables serialization structures and prototypes */
5203
5204 /* Default declaration of generated scanner - a define so the user can
5205  * easily add parameters.
5206  */
5207 #ifndef YY_DECL
5208 #define YY_DECL_IS_OURS 1
5209
5210 extern int surf_parse_lex (void);
5211
5212 #define YY_DECL int surf_parse_lex (void)
5213 #endif /* !YY_DECL */
5214
5215 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
5216  * have been set up.
5217  */
5218 #ifndef YY_USER_ACTION
5219 #define YY_USER_ACTION
5220 #endif
5221
5222 /* Code executed at the end of each rule. */
5223 #ifndef YY_BREAK
5224 #define YY_BREAK break;
5225 #endif
5226
5227 #define YY_RULE_SETUP \
5228         YY_USER_ACTION
5229
5230 /** The main scanner function which does all the work.
5231  */
5232 YY_DECL
5233 {
5234         yy_state_type yy_current_state;
5235         char *yy_cp, *yy_bp;
5236         int yy_act;
5237     
5238         if ( !(yy_init) )
5239                 {
5240                 (yy_init) = 1;
5241
5242 #ifdef YY_USER_INIT
5243                 YY_USER_INIT;
5244 #endif
5245
5246                 if ( ! (yy_start) )
5247                         (yy_start) = 1; /* first start state */
5248
5249                 if ( ! surf_parse_in )
5250                         surf_parse_in = stdin;
5251
5252                 if ( ! surf_parse_out )
5253                         surf_parse_out = stdout;
5254
5255                 if ( ! YY_CURRENT_BUFFER ) {
5256                         surf_parse_ensure_buffer_stack ();
5257                         YY_CURRENT_BUFFER_LVALUE =
5258                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
5259                 }
5260
5261                 surf_parse__load_buffer_state( );
5262                 }
5263
5264         {
5265
5266  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
5267  SET(PROLOG);
5268  reset_surfxml_parse_err_msg();
5269  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
5270  assert(surfxml_bufferstack);
5271  #ifdef FLEX_DEBUG
5272  {
5273      int i;
5274      for (i = 0; i < blimit; i++) {
5275          surfxml_bufferstack[i] = '\377';
5276      }
5277  }
5278  #endif
5279  surfxml_bufferstack[0] = '\0';
5280  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
5281  assert(indexstack);
5282  indexstack[0] = 0;
5283
5284   /* FleXML_init */
5285   bnext = inext = 1;
5286   surfxml_bufferliteral('\0', &bnext, "0.0");
5287   surfxml_bufferliteral('\0', &bnext, "2147483647");
5288   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5289   surfxml_bufferliteral('\0', &bnext, "1");
5290   surfxml_bufferliteral('\0', &bnext, "0.0");
5291   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5292   surfxml_bufferliteral('\0', &bnext, "1");
5293   surfxml_bufferliteral('\0', &bnext, "0s");
5294   surfxml_bufferliteral('\0', &bnext, "-1.0");
5295   surfxml_bufferliteral('\0', &bnext, "-1.0");
5296   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
5297   surfxml_statenames[PROLOG] = NULL;
5298   surfxml_statenames[DOCTYPE] = NULL;
5299   surfxml_statenames[EPILOG] = NULL;
5300   surfxml_statenames[INCOMMENT] = NULL;
5301   surfxml_statenames[INPI] = NULL;
5302   surfxml_statenames[VALUE1] = NULL;
5303   surfxml_statenames[VALUE2] = NULL;
5304   surfxml_statenames[CDATA] = NULL;
5305   surfxml_statenames[AL_surfxml_AS] = NULL;
5306   surfxml_statenames[S_surfxml_AS] = "AS";
5307   surfxml_statenames[S_surfxml_AS_1] = "AS";
5308   surfxml_statenames[S_surfxml_AS_2] = "AS";
5309   surfxml_statenames[S_surfxml_AS_3] = "AS";
5310   surfxml_statenames[S_surfxml_AS_4] = "AS";
5311   surfxml_statenames[S_surfxml_AS_5] = "AS";
5312   surfxml_statenames[S_surfxml_AS_6] = "AS";
5313   surfxml_statenames[S_surfxml_AS_7] = "AS";
5314   surfxml_statenames[S_surfxml_AS_8] = "AS";
5315   surfxml_statenames[E_surfxml_AS] = "AS";
5316   surfxml_statenames[AL_surfxml_ASroute] = NULL;
5317   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
5318   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
5319   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
5320   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
5321   surfxml_statenames[AL_surfxml_argument] = NULL;
5322   surfxml_statenames[E_surfxml_argument] = "argument";
5323   surfxml_statenames[AL_surfxml_backbone] = NULL;
5324   surfxml_statenames[E_surfxml_backbone] = "backbone";
5325   surfxml_statenames[AL_surfxml_bypassASroute] = NULL;
5326   surfxml_statenames[S_surfxml_bypassASroute] = "bypassASroute";
5327   surfxml_statenames[S_surfxml_bypassASroute_1] = "bypassASroute";
5328   surfxml_statenames[S_surfxml_bypassASroute_2] = "bypassASroute";
5329   surfxml_statenames[E_surfxml_bypassASroute] = "bypassASroute";
5330   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
5331   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
5332   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
5333   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
5334   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
5335   surfxml_statenames[AL_surfxml_cabinet] = NULL;
5336   surfxml_statenames[E_surfxml_cabinet] = "cabinet";
5337   surfxml_statenames[AL_surfxml_cluster] = NULL;
5338   surfxml_statenames[S_surfxml_cluster] = "cluster";
5339   surfxml_statenames[S_surfxml_cluster_1] = "cluster";
5340   surfxml_statenames[S_surfxml_cluster_2] = "cluster";
5341   surfxml_statenames[E_surfxml_cluster] = "cluster";
5342   surfxml_statenames[AL_surfxml_config] = NULL;
5343   surfxml_statenames[S_surfxml_config] = "config";
5344   surfxml_statenames[S_surfxml_config_1] = "config";
5345   surfxml_statenames[S_surfxml_config_2] = "config";
5346   surfxml_statenames[E_surfxml_config] = "config";
5347   surfxml_statenames[AL_surfxml_host] = NULL;
5348   surfxml_statenames[S_surfxml_host] = "host";
5349   surfxml_statenames[S_surfxml_host_1] = "host";
5350   surfxml_statenames[S_surfxml_host_2] = "host";
5351   surfxml_statenames[E_surfxml_host] = "host";
5352   surfxml_statenames[AL_surfxml_host___link] = NULL;
5353   surfxml_statenames[E_surfxml_host___link] = "host_link";
5354   surfxml_statenames[AL_surfxml_include] = NULL;
5355   surfxml_statenames[S_surfxml_include] = "include";
5356   surfxml_statenames[S_surfxml_include_1] = "include";
5357   surfxml_statenames[S_surfxml_include_2] = "include";
5358   surfxml_statenames[E_surfxml_include] = "include";
5359   surfxml_statenames[AL_surfxml_link] = NULL;
5360   surfxml_statenames[S_surfxml_link] = "link";
5361   surfxml_statenames[S_surfxml_link_1] = "link";
5362   surfxml_statenames[S_surfxml_link_2] = "link";
5363   surfxml_statenames[E_surfxml_link] = "link";
5364   surfxml_statenames[AL_surfxml_link___ctn] = NULL;
5365   surfxml_statenames[E_surfxml_link___ctn] = "link_ctn";
5366   surfxml_statenames[AL_surfxml_model___prop] = NULL;
5367   surfxml_statenames[E_surfxml_model___prop] = "model_prop";
5368   surfxml_statenames[AL_surfxml_mount] = NULL;
5369   surfxml_statenames[E_surfxml_mount] = "mount";
5370   surfxml_statenames[AL_surfxml_peer] = NULL;
5371   surfxml_statenames[E_surfxml_peer] = "peer";
5372   surfxml_statenames[ROOT_surfxml_platform] = NULL;
5373   surfxml_statenames[AL_surfxml_platform] = NULL;
5374   surfxml_statenames[S_surfxml_platform] = "platform";
5375   surfxml_statenames[S_surfxml_platform_1] = "platform";
5376   surfxml_statenames[S_surfxml_platform_2] = "platform";
5377   surfxml_statenames[S_surfxml_platform_3] = "platform";
5378   surfxml_statenames[S_surfxml_platform_4] = "platform";
5379   surfxml_statenames[S_surfxml_platform_5] = "platform";
5380   surfxml_statenames[S_surfxml_platform_6] = "platform";
5381   surfxml_statenames[S_surfxml_platform_7] = "platform";
5382   surfxml_statenames[S_surfxml_platform_8] = "platform";
5383   surfxml_statenames[E_surfxml_platform] = "platform";
5384   surfxml_statenames[AL_surfxml_process] = NULL;
5385   surfxml_statenames[S_surfxml_process] = "process";
5386   surfxml_statenames[S_surfxml_process_1] = "process";
5387   surfxml_statenames[S_surfxml_process_2] = "process";
5388   surfxml_statenames[E_surfxml_process] = "process";
5389   surfxml_statenames[AL_surfxml_prop] = NULL;
5390   surfxml_statenames[E_surfxml_prop] = "prop";
5391   surfxml_statenames[AL_surfxml_random] = NULL;
5392   surfxml_statenames[E_surfxml_random] = "random";
5393   surfxml_statenames[AL_surfxml_route] = NULL;
5394   surfxml_statenames[S_surfxml_route] = "route";
5395   surfxml_statenames[S_surfxml_route_1] = "route";
5396   surfxml_statenames[S_surfxml_route_2] = "route";
5397   surfxml_statenames[E_surfxml_route] = "route";
5398   surfxml_statenames[AL_surfxml_router] = NULL;
5399   surfxml_statenames[E_surfxml_router] = "router";
5400   surfxml_statenames[AL_surfxml_storage] = NULL;
5401   surfxml_statenames[S_surfxml_storage] = "storage";
5402   surfxml_statenames[S_surfxml_storage_1] = "storage";
5403   surfxml_statenames[S_surfxml_storage_2] = "storage";
5404   surfxml_statenames[E_surfxml_storage] = "storage";
5405   surfxml_statenames[AL_surfxml_storage___type] = NULL;
5406   surfxml_statenames[S_surfxml_storage___type] = "storage_type";
5407   surfxml_statenames[S_surfxml_storage___type_1] = "storage_type";
5408   surfxml_statenames[S_surfxml_storage___type_2] = "storage_type";
5409   surfxml_statenames[E_surfxml_storage___type] = "storage_type";
5410   surfxml_statenames[AL_surfxml_trace] = NULL;
5411   surfxml_statenames[IN_trace] = "trace";
5412   surfxml_statenames[AL_surfxml_trace___connect] = NULL;
5413   surfxml_statenames[E_surfxml_trace___connect] = "trace_connect";
5414   }
5415
5416  /* COMMENTS and PIs: handled uniformly for efficiency. */
5417
5418         while ( 1 )             /* loops until end-of-file is reached */
5419                 {
5420                 yy_cp = (yy_c_buf_p);
5421
5422                 /* Support of surf_parse_text. */
5423                 *yy_cp = (yy_hold_char);
5424
5425                 /* yy_bp points to the position in yy_ch_buf of the start of
5426                  * the current run.
5427                  */
5428                 yy_bp = yy_cp;
5429
5430                 yy_current_state = (yy_start);
5431 yy_match:
5432                 do
5433                         {
5434                         YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
5435                         if ( yy_accept[yy_current_state] )
5436                                 {
5437                                 (yy_last_accepting_state) = yy_current_state;
5438                                 (yy_last_accepting_cpos) = yy_cp;
5439                                 }
5440                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5441                                 {
5442                                 yy_current_state = (int) yy_def[yy_current_state];
5443                                 if ( yy_current_state >= 3330 )
5444                                         yy_c = yy_meta[(unsigned int) yy_c];
5445                                 }
5446                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
5447                         ++yy_cp;
5448                         }
5449                 while ( yy_base[yy_current_state] != 11804 );
5450
5451 yy_find_action:
5452                 yy_act = yy_accept[yy_current_state];
5453                 if ( yy_act == 0 )
5454                         { /* have to back up */
5455                         yy_cp = (yy_last_accepting_cpos);
5456                         yy_current_state = (yy_last_accepting_state);
5457                         yy_act = yy_accept[yy_current_state];
5458                         }
5459
5460                 YY_DO_BEFORE_ACTION;
5461
5462                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
5463                         {
5464                         yy_size_t yyl;
5465                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
5466                                 if ( surf_parse_text[yyl] == '\n' )
5467                                            
5468     surf_parse_lineno++;
5469 ;
5470                         }
5471
5472 do_action:      /* This label is used only to access EOF actions. */
5473
5474                 switch ( yy_act )
5475         { /* beginning of action switch */
5476                         case 0: /* must back up */
5477                         /* undo the effects of YY_DO_BEFORE_ACTION */
5478                         *yy_cp = (yy_hold_char);
5479                         yy_cp = (yy_last_accepting_cpos);
5480                         yy_current_state = (yy_last_accepting_state);
5481                         goto yy_find_action;
5482
5483 case 1:
5484 YY_RULE_SETUP
5485 ENTER(INCOMMENT);
5486         YY_BREAK
5487 case 2:
5488 YY_RULE_SETUP
5489 ENTER(INPI);
5490         YY_BREAK
5491
5492 case 3:
5493 YY_RULE_SETUP
5494 LEAVE;
5495         YY_BREAK
5496 case 4:
5497 case 5:
5498 case 6:
5499 /* rule 6 can match eol */
5500 YY_RULE_SETUP
5501 SKIP;
5502         YY_BREAK
5503 case YY_STATE_EOF(INCOMMENT):
5504 FAIL("EOF in comment.");
5505         YY_BREAK
5506
5507 case 7:
5508 YY_RULE_SETUP
5509 LEAVE;
5510         YY_BREAK
5511 case 8:
5512 case 9:
5513 /* rule 9 can match eol */
5514 YY_RULE_SETUP
5515 SKIP;
5516         YY_BREAK
5517 case YY_STATE_EOF(INPI):
5518 FAIL("EOF in PI (processing instruction).");
5519         YY_BREAK
5520
5521 /* SPACES: skipped uniformly */
5522 case 10:
5523 /* rule 10 can match eol */
5524 YY_RULE_SETUP
5525 SKIP;
5526         YY_BREAK
5527 /* PROLOG: determine root element and process it. */
5528
5529 case 11:
5530 /* rule 11 can match eol */
5531 YY_RULE_SETUP
5532 SET(DOCTYPE); 
5533         YY_BREAK
5534 case 12:
5535 /* rule 12 can match eol */
5536 YY_RULE_SETUP
5537 FAIL("Bad declaration %s.\nIf your are using a XML v3 file (check the version attribute in <platform>), please update it with tools/simgrid_update_xml.pl",surf_parse_text);
5538         YY_BREAK
5539
5540 case 13:
5541 /* rule 13 can match eol */
5542 YY_RULE_SETUP
5543 SET(ROOT_surfxml_platform);
5544         YY_BREAK
5545 case 14:
5546 /* rule 14 can match eol */
5547 YY_RULE_SETUP
5548 FAIL("Bad declaration %s.\nIf your are using a XML v3 file (check the version attribute in <platform>), please update it with tools/simgrid_update_xml.pl",surf_parse_text);
5549         YY_BREAK
5550 case 15:
5551 YY_RULE_SETUP
5552 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
5553         YY_BREAK
5554 case YY_STATE_EOF(PROLOG):
5555 case YY_STATE_EOF(DOCTYPE):
5556 FAIL("EOF in prolog.");
5557         YY_BREAK
5558
5559 /* RULES DERIVED FROM DTD. */
5560 case 16:
5561 /* rule 16 can match eol */
5562 YY_RULE_SETUP
5563 FAIL("Starting tag <AS> is not allowed here.");
5564         YY_BREAK
5565 case 17:
5566 /* rule 17 can match eol */
5567 YY_RULE_SETUP
5568 {
5569   AX_surfxml_AS_id = 0;
5570   surfxml_AS_id_isset = 0;
5571   AX_surfxml_AS_routing = AU_surfxml_AS_routing;
5572   surfxml_AS_routing_isset = 0;
5573   ENTER(AL_surfxml_AS); pushbuffer(0);
5574   }
5575         YY_BREAK
5576
5577 case 18:
5578 /* rule 18 can match eol */
5579 YY_RULE_SETUP
5580 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");} surfxml_AS_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
5581         YY_BREAK
5582 case 19:
5583 /* rule 19 can match eol */
5584 YY_RULE_SETUP
5585 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");}  surfxml_AS_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
5586         YY_BREAK
5587 case 20:
5588 /* rule 20 can match eol */
5589 case 21:
5590 /* rule 21 can match eol */
5591 YY_RULE_SETUP
5592 A_surfxml_AS_routing = A_surfxml_AS_routing_Full;
5593         YY_BREAK
5594 case 22:
5595 /* rule 22 can match eol */
5596 case 23:
5597 /* rule 23 can match eol */
5598 YY_RULE_SETUP
5599 A_surfxml_AS_routing = A_surfxml_AS_routing_Floyd;
5600         YY_BREAK
5601 case 24:
5602 /* rule 24 can match eol */
5603 case 25:
5604 /* rule 25 can match eol */
5605 YY_RULE_SETUP
5606 A_surfxml_AS_routing = A_surfxml_AS_routing_Dijkstra;
5607         YY_BREAK
5608 case 26:
5609 /* rule 26 can match eol */
5610 case 27:
5611 /* rule 27 can match eol */
5612 YY_RULE_SETUP
5613 A_surfxml_AS_routing = A_surfxml_AS_routing_DijkstraCache;
5614         YY_BREAK
5615 case 28:
5616 /* rule 28 can match eol */
5617 case 29:
5618 /* rule 29 can match eol */
5619 YY_RULE_SETUP
5620 A_surfxml_AS_routing = A_surfxml_AS_routing_None;
5621         YY_BREAK
5622 case 30:
5623 /* rule 30 can match eol */
5624 case 31:
5625 /* rule 31 can match eol */
5626 YY_RULE_SETUP
5627 A_surfxml_AS_routing = A_surfxml_AS_routing_Vivaldi;
5628         YY_BREAK
5629 case 32:
5630 /* rule 32 can match eol */
5631 case 33:
5632 /* rule 33 can match eol */
5633 YY_RULE_SETUP
5634 A_surfxml_AS_routing = A_surfxml_AS_routing_Cluster;
5635         YY_BREAK
5636 case 34:
5637 /* rule 34 can match eol */
5638 case 35:
5639 /* rule 35 can match eol */
5640 YY_RULE_SETUP
5641 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterTorus;
5642         YY_BREAK
5643 case 36:
5644 /* rule 36 can match eol */
5645 case 37:
5646 /* rule 37 can match eol */
5647 YY_RULE_SETUP
5648 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterFatTree;
5649         YY_BREAK
5650 case 38:
5651 YY_RULE_SETUP
5652 {
5653   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5654   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5655   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
5656  }
5657         YY_BREAK
5658 case 39:
5659 YY_RULE_SETUP
5660 {
5661   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5662   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5663   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
5664   switch (YY_START) {
5665    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
5666    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5667    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
5668   }
5669  }
5670         YY_BREAK
5671 case 40:
5672 YY_RULE_SETUP
5673 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
5674         YY_BREAK
5675 case 41:
5676 YY_RULE_SETUP
5677 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
5678         YY_BREAK
5679 case YY_STATE_EOF(AL_surfxml_AS):
5680 FAIL("EOF in attribute list of `AS' element.");
5681         YY_BREAK
5682
5683 case 42:
5684 /* rule 42 can match eol */
5685 YY_RULE_SETUP
5686 {
5687   LEAVE;
5688   ETag_surfxml_AS();
5689   popbuffer(); /* attribute */
5690   switch (YY_START) {
5691    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
5692    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5693    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
5694   }
5695  }
5696         YY_BREAK
5697 case 43:
5698 /* rule 43 can match eol */
5699 YY_RULE_SETUP
5700 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
5701         YY_BREAK
5702 case 44:
5703 YY_RULE_SETUP
5704 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
5705         YY_BREAK
5706 case YY_STATE_EOF(E_surfxml_AS):
5707 case YY_STATE_EOF(S_surfxml_AS):
5708 case YY_STATE_EOF(S_surfxml_AS_1):
5709 case YY_STATE_EOF(S_surfxml_AS_3):
5710 case YY_STATE_EOF(S_surfxml_AS_4):
5711 case YY_STATE_EOF(S_surfxml_AS_6):
5712 case YY_STATE_EOF(S_surfxml_AS_8):
5713 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</AS>' expected.");
5714         YY_BREAK
5715
5716 case 45:
5717 /* rule 45 can match eol */
5718 YY_RULE_SETUP
5719 FAIL("Starting tag <ASroute> is not allowed here.");
5720         YY_BREAK
5721 case 46:
5722 /* rule 46 can match eol */
5723 YY_RULE_SETUP
5724 {
5725   AX_surfxml_ASroute_dst = 0;
5726   surfxml_ASroute_dst_isset = 0;
5727   AX_surfxml_ASroute_gw___dst = 0;
5728   surfxml_ASroute_gw___dst_isset = 0;
5729   AX_surfxml_ASroute_gw___src = 0;
5730   surfxml_ASroute_gw___src_isset = 0;
5731   AX_surfxml_ASroute_src = 0;
5732   surfxml_ASroute_src_isset = 0;
5733   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5734   surfxml_ASroute_symmetrical_isset = 0;
5735   ENTER(AL_surfxml_ASroute); pushbuffer(0);
5736   }
5737         YY_BREAK
5738
5739 case 47:
5740 /* rule 47 can match eol */
5741 YY_RULE_SETUP
5742 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");} surfxml_ASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
5743         YY_BREAK
5744 case 48:
5745 /* rule 48 can match eol */
5746 YY_RULE_SETUP
5747 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");}  surfxml_ASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
5748         YY_BREAK
5749 case 49:
5750 /* rule 49 can match eol */
5751 YY_RULE_SETUP
5752 if (surfxml_ASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");} surfxml_ASroute_gw___dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw___dst);
5753         YY_BREAK
5754 case 50:
5755 /* rule 50 can match eol */
5756 YY_RULE_SETUP
5757 if (surfxml_ASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");}  surfxml_ASroute_gw___dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw___dst);
5758         YY_BREAK
5759 case 51:
5760 /* rule 51 can match eol */
5761 YY_RULE_SETUP
5762 if (surfxml_ASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");} surfxml_ASroute_gw___src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw___src);
5763         YY_BREAK
5764 case 52:
5765 /* rule 52 can match eol */
5766 YY_RULE_SETUP
5767 if (surfxml_ASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");}  surfxml_ASroute_gw___src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw___src);
5768         YY_BREAK
5769 case 53:
5770 /* rule 53 can match eol */
5771 YY_RULE_SETUP
5772 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");} surfxml_ASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
5773         YY_BREAK
5774 case 54:
5775 /* rule 54 can match eol */
5776 YY_RULE_SETUP
5777 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");}  surfxml_ASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
5778         YY_BREAK
5779 case 55:
5780 /* rule 55 can match eol */
5781 case 56:
5782 /* rule 56 can match eol */
5783 YY_RULE_SETUP
5784 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5785         YY_BREAK
5786 case 57:
5787 /* rule 57 can match eol */
5788 case 58:
5789 /* rule 58 can match eol */
5790 YY_RULE_SETUP
5791 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
5792         YY_BREAK
5793 case 59:
5794 YY_RULE_SETUP
5795 {
5796   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5797   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5798   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5799   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5800   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
5801  }
5802         YY_BREAK
5803 case 60:
5804 YY_RULE_SETUP
5805 {
5806   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5807   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5808   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5809   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5810   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
5811   switch (YY_START) {
5812    case S_surfxml_AS_3: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
5813    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
5814   }
5815  }
5816         YY_BREAK
5817 case 61:
5818 YY_RULE_SETUP
5819 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
5820         YY_BREAK
5821 case 62:
5822 YY_RULE_SETUP
5823 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
5824         YY_BREAK
5825 case YY_STATE_EOF(AL_surfxml_ASroute):
5826 FAIL("EOF in attribute list of `ASroute' element.");
5827         YY_BREAK
5828
5829 case 63:
5830 /* rule 63 can match eol */
5831 YY_RULE_SETUP
5832 {
5833   LEAVE;
5834   ETag_surfxml_ASroute();
5835   popbuffer(); /* attribute */
5836   switch (YY_START) {
5837    case S_surfxml_AS_3: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
5838    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
5839   }
5840  }
5841         YY_BREAK
5842 case 64:
5843 /* rule 64 can match eol */
5844 YY_RULE_SETUP
5845 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
5846         YY_BREAK
5847 case 65:
5848 YY_RULE_SETUP
5849 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
5850         YY_BREAK
5851 case YY_STATE_EOF(E_surfxml_ASroute):
5852 case YY_STATE_EOF(S_surfxml_ASroute):
5853 case YY_STATE_EOF(S_surfxml_ASroute_2):
5854 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</ASroute>' expected.");
5855         YY_BREAK
5856
5857 case 66:
5858 /* rule 66 can match eol */
5859 YY_RULE_SETUP
5860 FAIL("Starting tag <argument> is not allowed here.");
5861         YY_BREAK
5862 case 67:
5863 /* rule 67 can match eol */
5864 YY_RULE_SETUP
5865 {
5866   AX_surfxml_argument_value = 0;
5867   surfxml_argument_value_isset = 0;
5868   ENTER(AL_surfxml_argument); pushbuffer(0);
5869   }
5870         YY_BREAK
5871
5872 case 68:
5873 /* rule 68 can match eol */
5874 YY_RULE_SETUP
5875 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");} surfxml_argument_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
5876         YY_BREAK
5877 case 69:
5878 /* rule 69 can match eol */
5879 YY_RULE_SETUP
5880 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");}  surfxml_argument_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
5881         YY_BREAK
5882 case 70:
5883 YY_RULE_SETUP
5884 {
5885   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5886   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
5887  }
5888         YY_BREAK
5889 case 71:
5890 YY_RULE_SETUP
5891 {
5892   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5893   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
5894   switch (YY_START) {
5895    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5896   }
5897  }
5898         YY_BREAK
5899 case 72:
5900 YY_RULE_SETUP
5901 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
5902         YY_BREAK
5903 case 73:
5904 YY_RULE_SETUP
5905 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
5906         YY_BREAK
5907 case YY_STATE_EOF(AL_surfxml_argument):
5908 FAIL("EOF in attribute list of `argument' element.");
5909         YY_BREAK
5910
5911 case 74:
5912 /* rule 74 can match eol */
5913 YY_RULE_SETUP
5914 {
5915   LEAVE;
5916   ETag_surfxml_argument();
5917   popbuffer(); /* attribute */
5918   switch (YY_START) {
5919    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5920   }
5921  }
5922         YY_BREAK
5923 case 75:
5924 /* rule 75 can match eol */
5925 YY_RULE_SETUP
5926 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
5927         YY_BREAK
5928 case 76:
5929 YY_RULE_SETUP
5930 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
5931         YY_BREAK
5932 case YY_STATE_EOF(E_surfxml_argument):
5933 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</argument>' expected.");
5934         YY_BREAK
5935
5936 case 77:
5937 /* rule 77 can match eol */
5938 YY_RULE_SETUP
5939 FAIL("Starting tag <backbone> is not allowed here.");
5940         YY_BREAK
5941 case 78:
5942 /* rule 78 can match eol */
5943 YY_RULE_SETUP
5944 {
5945   AX_surfxml_backbone_bandwidth = 0;
5946   surfxml_backbone_bandwidth_isset = 0;
5947   AX_surfxml_backbone_id = 0;
5948   surfxml_backbone_id_isset = 0;
5949   AX_surfxml_backbone_latency = 0;
5950   surfxml_backbone_latency_isset = 0;
5951   ENTER(AL_surfxml_backbone); pushbuffer(0);
5952   }
5953         YY_BREAK
5954
5955 case 79:
5956 /* rule 79 can match eol */
5957 YY_RULE_SETUP
5958 if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");} surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_bandwidth);
5959         YY_BREAK
5960 case 80:
5961 /* rule 80 can match eol */
5962 YY_RULE_SETUP
5963 if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");}  surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_bandwidth);
5964         YY_BREAK
5965 case 81:
5966 /* rule 81 can match eol */
5967 YY_RULE_SETUP
5968 if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");} surfxml_backbone_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_id);
5969         YY_BREAK
5970 case 82:
5971 /* rule 82 can match eol */
5972 YY_RULE_SETUP
5973 if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");}  surfxml_backbone_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_id);
5974         YY_BREAK
5975 case 83:
5976 /* rule 83 can match eol */
5977 YY_RULE_SETUP
5978 if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");} surfxml_backbone_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_latency);
5979         YY_BREAK
5980 case 84:
5981 /* rule 84 can match eol */
5982 YY_RULE_SETUP
5983 if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");}  surfxml_backbone_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_latency);
5984         YY_BREAK
5985 case 85:
5986 YY_RULE_SETUP
5987 {
5988   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
5989   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
5990   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
5991   LEAVE; STag_surfxml_backbone();surfxml_pcdata_ix = 0; ENTER(E_surfxml_backbone);
5992  }
5993         YY_BREAK
5994 case 86:
5995 YY_RULE_SETUP
5996 {
5997   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
5998   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
5999   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
6000   LEAVE; STag_surfxml_backbone(); surfxml_pcdata_ix = 0; ETag_surfxml_backbone(); popbuffer(); /* attribute */
6001   switch (YY_START) {
6002    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6003   }
6004  }
6005         YY_BREAK
6006 case 87:
6007 YY_RULE_SETUP
6008 FAIL("Unexpected character `%c' in attribute list of backbone element.", surf_parse_text[0]);
6009         YY_BREAK
6010 case 88:
6011 YY_RULE_SETUP
6012 FAIL("Bad attribute `%s' in `backbone' element start tag.",surf_parse_text);
6013         YY_BREAK
6014 case YY_STATE_EOF(AL_surfxml_backbone):
6015 FAIL("EOF in attribute list of `backbone' element.");
6016         YY_BREAK
6017
6018 case 89:
6019 /* rule 89 can match eol */
6020 YY_RULE_SETUP
6021 {
6022   LEAVE;
6023   ETag_surfxml_backbone();
6024   popbuffer(); /* attribute */
6025   switch (YY_START) {
6026    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6027   }
6028  }
6029         YY_BREAK
6030 case 90:
6031 /* rule 90 can match eol */
6032 YY_RULE_SETUP
6033 FAIL("Unexpected end-tag `%s': `</backbone>' expected.",surf_parse_text);
6034         YY_BREAK
6035 case 91:
6036 YY_RULE_SETUP
6037 FAIL("Unexpected character `%c': `</backbone>' expected.",surf_parse_text[0]);
6038         YY_BREAK
6039 case YY_STATE_EOF(E_surfxml_backbone):
6040 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</backbone>' expected.");
6041         YY_BREAK
6042
6043 case 92:
6044 /* rule 92 can match eol */
6045 YY_RULE_SETUP
6046 FAIL("Starting tag <bypassASroute> is not allowed here.");
6047         YY_BREAK
6048 case 93:
6049 /* rule 93 can match eol */
6050 YY_RULE_SETUP
6051 {
6052   AX_surfxml_bypassASroute_dst = 0;
6053   surfxml_bypassASroute_dst_isset = 0;
6054   AX_surfxml_bypassASroute_gw___dst = 0;
6055   surfxml_bypassASroute_gw___dst_isset = 0;
6056   AX_surfxml_bypassASroute_gw___src = 0;
6057   surfxml_bypassASroute_gw___src_isset = 0;
6058   AX_surfxml_bypassASroute_src = 0;
6059   surfxml_bypassASroute_src_isset = 0;
6060   ENTER(AL_surfxml_bypassASroute); pushbuffer(0);
6061   }
6062         YY_BREAK
6063
6064 case 94:
6065 /* rule 94 can match eol */
6066 YY_RULE_SETUP
6067 if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_dst);
6068         YY_BREAK
6069 case 95:
6070 /* rule 95 can match eol */
6071 YY_RULE_SETUP
6072 if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_dst);
6073         YY_BREAK
6074 case 96:
6075 /* rule 96 can match eol */
6076 YY_RULE_SETUP
6077 if (surfxml_bypassASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw___dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw___dst);
6078         YY_BREAK
6079 case 97:
6080 /* rule 97 can match eol */
6081 YY_RULE_SETUP
6082 if (surfxml_bypassASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw___dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw___dst);
6083         YY_BREAK
6084 case 98:
6085 /* rule 98 can match eol */
6086 YY_RULE_SETUP
6087 if (surfxml_bypassASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw___src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw___src);
6088         YY_BREAK
6089 case 99:
6090 /* rule 99 can match eol */
6091 YY_RULE_SETUP
6092 if (surfxml_bypassASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw___src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw___src);
6093         YY_BREAK
6094 case 100:
6095 /* rule 100 can match eol */
6096 YY_RULE_SETUP
6097 if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");} surfxml_bypassASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_src);
6098         YY_BREAK
6099 case 101:
6100 /* rule 101 can match eol */
6101 YY_RULE_SETUP
6102 if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_src);
6103         YY_BREAK
6104 case 102:
6105 YY_RULE_SETUP
6106 {
6107   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
6108   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
6109   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
6110   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
6111   LEAVE; STag_surfxml_bypassASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassASroute);
6112  }
6113         YY_BREAK
6114 case 103:
6115 YY_RULE_SETUP
6116 {
6117   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
6118   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
6119   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
6120   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
6121   LEAVE; STag_surfxml_bypassASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassASroute(); popbuffer(); /* attribute */
6122   switch (YY_START) {
6123    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6124   }
6125  }
6126         YY_BREAK
6127 case 104:
6128 YY_RULE_SETUP
6129 FAIL("Unexpected character `%c' in attribute list of bypassASroute element.", surf_parse_text[0]);
6130         YY_BREAK
6131 case 105:
6132 YY_RULE_SETUP
6133 FAIL("Bad attribute `%s' in `bypassASroute' element start tag.",surf_parse_text);
6134         YY_BREAK
6135 case YY_STATE_EOF(AL_surfxml_bypassASroute):
6136 FAIL("EOF in attribute list of `bypassASroute' element.");
6137         YY_BREAK
6138
6139 case 106:
6140 /* rule 106 can match eol */
6141 YY_RULE_SETUP
6142 {
6143   LEAVE;
6144   ETag_surfxml_bypassASroute();
6145   popbuffer(); /* attribute */
6146   switch (YY_START) {
6147    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6148   }
6149  }
6150         YY_BREAK
6151 case 107:
6152 /* rule 107 can match eol */
6153 YY_RULE_SETUP
6154 FAIL("Unexpected end-tag `%s': `</bypassASroute>' expected.",surf_parse_text);
6155         YY_BREAK
6156 case 108:
6157 YY_RULE_SETUP
6158 FAIL("Unexpected character `%c': `</bypassASroute>' expected.",surf_parse_text[0]);
6159         YY_BREAK
6160 case YY_STATE_EOF(E_surfxml_bypassASroute):
6161 case YY_STATE_EOF(S_surfxml_bypassASroute):
6162 case YY_STATE_EOF(S_surfxml_bypassASroute_2):
6163 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassASroute>' expected.");
6164         YY_BREAK
6165
6166 case 109:
6167 /* rule 109 can match eol */
6168 YY_RULE_SETUP
6169 FAIL("Starting tag <bypassRoute> is not allowed here.");
6170         YY_BREAK
6171 case 110:
6172 /* rule 110 can match eol */
6173 YY_RULE_SETUP
6174 {
6175   AX_surfxml_bypassRoute_dst = 0;
6176   surfxml_bypassRoute_dst_isset = 0;
6177   AX_surfxml_bypassRoute_src = 0;
6178   surfxml_bypassRoute_src_isset = 0;
6179   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
6180   }
6181         YY_BREAK
6182
6183 case 111:
6184 /* rule 111 can match eol */
6185 YY_RULE_SETUP
6186 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");} surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
6187         YY_BREAK
6188 case 112:
6189 /* rule 112 can match eol */
6190 YY_RULE_SETUP
6191 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");}  surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
6192         YY_BREAK
6193 case 113:
6194 /* rule 113 can match eol */
6195 YY_RULE_SETUP
6196 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");} surfxml_bypassRoute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
6197         YY_BREAK
6198 case 114:
6199 /* rule 114 can match eol */
6200 YY_RULE_SETUP
6201 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");}  surfxml_bypassRoute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
6202         YY_BREAK
6203 case 115:
6204 YY_RULE_SETUP
6205 {
6206   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
6207   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
6208   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
6209  }
6210         YY_BREAK
6211 case 116:
6212 YY_RULE_SETUP
6213 {
6214   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
6215   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
6216   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
6217   switch (YY_START) {
6218    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6219   }
6220  }
6221         YY_BREAK
6222 case 117:
6223 YY_RULE_SETUP
6224 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
6225         YY_BREAK
6226 case 118:
6227 YY_RULE_SETUP
6228 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
6229         YY_BREAK
6230 case YY_STATE_EOF(AL_surfxml_bypassRoute):
6231 FAIL("EOF in attribute list of `bypassRoute' element.");
6232         YY_BREAK
6233
6234 case 119:
6235 /* rule 119 can match eol */
6236 YY_RULE_SETUP
6237 {
6238   LEAVE;
6239   ETag_surfxml_bypassRoute();
6240   popbuffer(); /* attribute */
6241   switch (YY_START) {
6242    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6243   }
6244  }
6245         YY_BREAK
6246 case 120:
6247 /* rule 120 can match eol */
6248 YY_RULE_SETUP
6249 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
6250         YY_BREAK
6251 case 121:
6252 YY_RULE_SETUP
6253 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
6254         YY_BREAK
6255 case YY_STATE_EOF(E_surfxml_bypassRoute):
6256 case YY_STATE_EOF(S_surfxml_bypassRoute):
6257 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
6258 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassRoute>' expected.");
6259         YY_BREAK
6260
6261 case 122:
6262 /* rule 122 can match eol */
6263 YY_RULE_SETUP
6264 FAIL("Starting tag <cabinet> is not allowed here.");
6265         YY_BREAK
6266 case 123:
6267 /* rule 123 can match eol */
6268 YY_RULE_SETUP
6269 {
6270   AX_surfxml_cabinet_bw = 0;
6271   surfxml_cabinet_bw_isset = 0;
6272   AX_surfxml_cabinet_id = 0;
6273   surfxml_cabinet_id_isset = 0;
6274   AX_surfxml_cabinet_lat = 0;
6275   surfxml_cabinet_lat_isset = 0;
6276   AX_surfxml_cabinet_prefix = 0;
6277   surfxml_cabinet_prefix_isset = 0;
6278   AX_surfxml_cabinet_radical = 0;
6279   surfxml_cabinet_radical_isset = 0;
6280   AX_surfxml_cabinet_speed = 0;
6281   surfxml_cabinet_speed_isset = 0;
6282   AX_surfxml_cabinet_suffix = 0;
6283   surfxml_cabinet_suffix_isset = 0;
6284   ENTER(AL_surfxml_cabinet); pushbuffer(0);
6285   }
6286         YY_BREAK
6287
6288 case 124:
6289 /* rule 124 can match eol */
6290 YY_RULE_SETUP
6291 if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");} surfxml_cabinet_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_bw);
6292         YY_BREAK
6293 case 125:
6294 /* rule 125 can match eol */
6295 YY_RULE_SETUP
6296 if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");}  surfxml_cabinet_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_bw);
6297         YY_BREAK
6298 case 126:
6299 /* rule 126 can match eol */
6300 YY_RULE_SETUP
6301 if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");} surfxml_cabinet_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_id);
6302         YY_BREAK
6303 case 127:
6304 /* rule 127 can match eol */
6305 YY_RULE_SETUP
6306 if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");}  surfxml_cabinet_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_id);
6307         YY_BREAK
6308 case 128:
6309 /* rule 128 can match eol */
6310 YY_RULE_SETUP
6311 if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");} surfxml_cabinet_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_lat);
6312         YY_BREAK
6313 case 129:
6314 /* rule 129 can match eol */
6315 YY_RULE_SETUP
6316 if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");}  surfxml_cabinet_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_lat);
6317         YY_BREAK
6318 case 130:
6319 /* rule 130 can match eol */
6320 YY_RULE_SETUP
6321 if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");} surfxml_cabinet_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_prefix);
6322         YY_BREAK
6323 case 131:
6324 /* rule 131 can match eol */
6325 YY_RULE_SETUP
6326 if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");}  surfxml_cabinet_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_prefix);
6327         YY_BREAK
6328 case 132:
6329 /* rule 132 can match eol */
6330 YY_RULE_SETUP
6331 if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");} surfxml_cabinet_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_radical);
6332         YY_BREAK
6333 case 133:
6334 /* rule 133 can match eol */
6335 YY_RULE_SETUP
6336 if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");}  surfxml_cabinet_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_radical);
6337         YY_BREAK
6338 case 134:
6339 /* rule 134 can match eol */
6340 YY_RULE_SETUP
6341 if (surfxml_cabinet_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cabinet>");} surfxml_cabinet_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_speed);
6342         YY_BREAK
6343 case 135:
6344 /* rule 135 can match eol */
6345 YY_RULE_SETUP
6346 if (surfxml_cabinet_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cabinet>");}  surfxml_cabinet_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_speed);
6347         YY_BREAK
6348 case 136:
6349 /* rule 136 can match eol */
6350 YY_RULE_SETUP
6351 if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");} surfxml_cabinet_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_suffix);
6352         YY_BREAK
6353 case 137:
6354 /* rule 137 can match eol */
6355 YY_RULE_SETUP
6356 if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");}  surfxml_cabinet_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_suffix);
6357         YY_BREAK
6358 case 138:
6359 YY_RULE_SETUP
6360 {
6361   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
6362   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
6363   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
6364   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
6365   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
6366   if (!AX_surfxml_cabinet_speed) FAIL("Required attribute `speed' not set for `cabinet' element.");
6367   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
6368   LEAVE; STag_surfxml_cabinet();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cabinet);
6369  }
6370         YY_BREAK
6371 case 139:
6372 YY_RULE_SETUP
6373 {
6374   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
6375   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
6376   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
6377   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
6378   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
6379   if (!AX_surfxml_cabinet_speed) FAIL("Required attribute `speed' not set for `cabinet' element.");
6380   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
6381   LEAVE; STag_surfxml_cabinet(); surfxml_pcdata_ix = 0; ETag_surfxml_cabinet(); popbuffer(); /* attribute */
6382   switch (YY_START) {
6383    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6384    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6385    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6386   }
6387  }
6388         YY_BREAK
6389 case 140:
6390 YY_RULE_SETUP
6391 FAIL("Unexpected character `%c' in attribute list of cabinet element.", surf_parse_text[0]);
6392         YY_BREAK
6393 case 141:
6394 YY_RULE_SETUP
6395 FAIL("Bad attribute `%s' in `cabinet' element start tag.",surf_parse_text);
6396         YY_BREAK
6397 case YY_STATE_EOF(AL_surfxml_cabinet):
6398 FAIL("EOF in attribute list of `cabinet' element.");
6399         YY_BREAK
6400
6401 case 142:
6402 /* rule 142 can match eol */
6403 YY_RULE_SETUP
6404 {
6405   LEAVE;
6406   ETag_surfxml_cabinet();
6407   popbuffer(); /* attribute */
6408   switch (YY_START) {
6409    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6410    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6411    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6412   }
6413  }
6414         YY_BREAK
6415 case 143:
6416 /* rule 143 can match eol */
6417 YY_RULE_SETUP
6418 FAIL("Unexpected end-tag `%s': `</cabinet>' expected.",surf_parse_text);
6419         YY_BREAK
6420 case 144:
6421 YY_RULE_SETUP
6422 FAIL("Unexpected character `%c': `</cabinet>' expected.",surf_parse_text[0]);
6423         YY_BREAK
6424 case YY_STATE_EOF(E_surfxml_cabinet):
6425 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cabinet>' expected.");
6426         YY_BREAK
6427
6428 case 145:
6429 /* rule 145 can match eol */
6430 YY_RULE_SETUP
6431 FAIL("Starting tag <cluster> is not allowed here.");
6432         YY_BREAK
6433 case 146:
6434 /* rule 146 can match eol */
6435 YY_RULE_SETUP
6436 {
6437   AX_surfxml_cluster_availability___file = 0;
6438   surfxml_cluster_availability___file_isset = 0;
6439   AX_surfxml_cluster_bb___bw = 0;
6440   surfxml_cluster_bb___bw_isset = 0;
6441   AX_surfxml_cluster_bb___lat = 42;
6442   surfxml_cluster_bb___lat_isset = 0;
6443   AX_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
6444   surfxml_cluster_bb___sharing___policy_isset = 0;
6445   AX_surfxml_cluster_bw = 0;
6446   surfxml_cluster_bw_isset = 0;
6447   AX_surfxml_cluster_core = 40;
6448   surfxml_cluster_core_isset = 0;
6449   AX_surfxml_cluster_id = 0;
6450   surfxml_cluster_id_isset = 0;
6451   AX_surfxml_cluster_lat = 0;
6452   surfxml_cluster_lat_isset = 0;
6453   AX_surfxml_cluster_limiter___link = 0;
6454   surfxml_cluster_limiter___link_isset = 0;
6455   AX_surfxml_cluster_loopback___bw = 0;
6456   surfxml_cluster_loopback___bw_isset = 0;
6457   AX_surfxml_cluster_loopback___lat = 0;
6458   surfxml_cluster_loopback___lat_isset = 0;
6459   AX_surfxml_cluster_prefix = 0;
6460   surfxml_cluster_prefix_isset = 0;
6461   AX_surfxml_cluster_radical = 0;
6462   surfxml_cluster_radical_isset = 0;
6463   AX_surfxml_cluster_router___id = 0;
6464   surfxml_cluster_router___id_isset = 0;
6465   AX_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
6466   surfxml_cluster_sharing___policy_isset = 0;
6467   AX_surfxml_cluster_speed = 0;
6468   surfxml_cluster_speed_isset = 0;
6469   AX_surfxml_cluster_state___file = 0;
6470   surfxml_cluster_state___file_isset = 0;
6471   AX_surfxml_cluster_suffix = 0;
6472   surfxml_cluster_suffix_isset = 0;
6473   AX_surfxml_cluster_topo___parameters = 0;
6474   surfxml_cluster_topo___parameters_isset = 0;
6475   AX_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
6476   surfxml_cluster_topology_isset = 0;
6477   ENTER(AL_surfxml_cluster); pushbuffer(0);
6478   }
6479         YY_BREAK
6480
6481 case 147:
6482 /* rule 147 can match eol */
6483 YY_RULE_SETUP
6484 if (surfxml_cluster_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");} surfxml_cluster_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_availability___file);
6485         YY_BREAK
6486 case 148:
6487 /* rule 148 can match eol */
6488 YY_RULE_SETUP
6489 if (surfxml_cluster_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_cluster>");}  surfxml_cluster_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_availability___file);
6490         YY_BREAK
6491 case 149:
6492 /* rule 149 can match eol */
6493 YY_RULE_SETUP
6494 if (surfxml_cluster_bb___bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");} surfxml_cluster_bb___bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb___bw);
6495         YY_BREAK
6496 case 150:
6497 /* rule 150 can match eol */
6498 YY_RULE_SETUP
6499 if (surfxml_cluster_bb___bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");}  surfxml_cluster_bb___bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb___bw);
6500         YY_BREAK
6501 case 151:
6502 /* rule 151 can match eol */
6503 YY_RULE_SETUP
6504 if (surfxml_cluster_bb___lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");} surfxml_cluster_bb___lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb___lat);
6505         YY_BREAK
6506 case 152:
6507 /* rule 152 can match eol */
6508 YY_RULE_SETUP
6509 if (surfxml_cluster_bb___lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");}  surfxml_cluster_bb___lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb___lat);
6510         YY_BREAK
6511 case 153:
6512 /* rule 153 can match eol */
6513 case 154:
6514 /* rule 154 can match eol */
6515 YY_RULE_SETUP
6516 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
6517         YY_BREAK
6518 case 155:
6519 /* rule 155 can match eol */
6520 case 156:
6521 /* rule 156 can match eol */
6522 YY_RULE_SETUP
6523 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_FATPIPE;
6524         YY_BREAK
6525 case 157:
6526 /* rule 157 can match eol */
6527 YY_RULE_SETUP
6528 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");} surfxml_cluster_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
6529         YY_BREAK
6530 case 158:
6531 /* rule 158 can match eol */
6532 YY_RULE_SETUP
6533 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");}  surfxml_cluster_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
6534         YY_BREAK
6535 case 159:
6536 /* rule 159 can match eol */
6537 YY_RULE_SETUP
6538 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");} surfxml_cluster_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
6539         YY_BREAK
6540 case 160:
6541 /* rule 160 can match eol */
6542 YY_RULE_SETUP
6543 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");}  surfxml_cluster_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
6544         YY_BREAK
6545 case 161:
6546 /* rule 161 can match eol */
6547 YY_RULE_SETUP
6548 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");} surfxml_cluster_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
6549         YY_BREAK
6550 case 162:
6551 /* rule 162 can match eol */
6552 YY_RULE_SETUP
6553 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");}  surfxml_cluster_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
6554         YY_BREAK
6555 case 163:
6556 /* rule 163 can match eol */
6557 YY_RULE_SETUP
6558 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");} surfxml_cluster_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
6559         YY_BREAK
6560 case 164:
6561 /* rule 164 can match eol */
6562 YY_RULE_SETUP
6563 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");}  surfxml_cluster_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
6564         YY_BREAK
6565 case 165:
6566 /* rule 165 can match eol */
6567 YY_RULE_SETUP
6568 if (surfxml_cluster_limiter___link_isset != 0) {FAIL("Multiple definition of attribute limiter_link in <surfxml_cluster>");} surfxml_cluster_limiter___link_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_limiter___link);
6569         YY_BREAK
6570 case 166:
6571 /* rule 166 can match eol */
6572 YY_RULE_SETUP
6573 if (surfxml_cluster_limiter___link_isset != 0) {FAIL("Multiple definition of attribute limiter_link in <surfxml_cluster>");}  surfxml_cluster_limiter___link_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_limiter___link);
6574         YY_BREAK
6575 case 167:
6576 /* rule 167 can match eol */
6577 YY_RULE_SETUP
6578 if (surfxml_cluster_loopback___bw_isset != 0) {FAIL("Multiple definition of attribute loopback_bw in <surfxml_cluster>");} surfxml_cluster_loopback___bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_loopback___bw);
6579         YY_BREAK
6580 case 168:
6581 /* rule 168 can match eol */
6582 YY_RULE_SETUP
6583 if (surfxml_cluster_loopback___bw_isset != 0) {FAIL("Multiple definition of attribute loopback_bw in <surfxml_cluster>");}  surfxml_cluster_loopback___bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_loopback___bw);
6584         YY_BREAK
6585 case 169:
6586 /* rule 169 can match eol */
6587 YY_RULE_SETUP
6588 if (surfxml_cluster_loopback___lat_isset != 0) {FAIL("Multiple definition of attribute loopback_lat in <surfxml_cluster>");} surfxml_cluster_loopback___lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_loopback___lat);
6589         YY_BREAK
6590 case 170:
6591 /* rule 170 can match eol */
6592 YY_RULE_SETUP
6593 if (surfxml_cluster_loopback___lat_isset != 0) {FAIL("Multiple definition of attribute loopback_lat in <surfxml_cluster>");}  surfxml_cluster_loopback___lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_loopback___lat);
6594         YY_BREAK
6595 case 171:
6596 /* rule 171 can match eol */
6597 YY_RULE_SETUP
6598 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");} surfxml_cluster_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
6599         YY_BREAK
6600 case 172:
6601 /* rule 172 can match eol */
6602 YY_RULE_SETUP
6603 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");}  surfxml_cluster_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
6604         YY_BREAK
6605 case 173:
6606 /* rule 173 can match eol */
6607 YY_RULE_SETUP
6608 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");} surfxml_cluster_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
6609         YY_BREAK
6610 case 174:
6611 /* rule 174 can match eol */
6612 YY_RULE_SETUP
6613 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");}  surfxml_cluster_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
6614         YY_BREAK
6615 case 175:
6616 /* rule 175 can match eol */
6617 YY_RULE_SETUP
6618 if (surfxml_cluster_router___id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");} surfxml_cluster_router___id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_router___id);
6619         YY_BREAK
6620 case 176:
6621 /* rule 176 can match eol */
6622 YY_RULE_SETUP
6623 if (surfxml_cluster_router___id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");}  surfxml_cluster_router___id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_router___id);
6624         YY_BREAK
6625 case 177:
6626 /* rule 177 can match eol */
6627 case 178:
6628 /* rule 178 can match eol */
6629 YY_RULE_SETUP
6630 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_SHARED;
6631         YY_BREAK
6632 case 179:
6633 /* rule 179 can match eol */
6634 case 180:
6635 /* rule 180 can match eol */
6636 YY_RULE_SETUP
6637 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
6638         YY_BREAK
6639 case 181:
6640 /* rule 181 can match eol */
6641 case 182:
6642 /* rule 182 can match eol */
6643 YY_RULE_SETUP
6644 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FATPIPE;
6645         YY_BREAK
6646 case 183:
6647 /* rule 183 can match eol */
6648 YY_RULE_SETUP
6649 if (surfxml_cluster_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cluster>");} surfxml_cluster_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_speed);
6650         YY_BREAK
6651 case 184:
6652 /* rule 184 can match eol */
6653 YY_RULE_SETUP
6654 if (surfxml_cluster_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cluster>");}  surfxml_cluster_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_speed);
6655         YY_BREAK
6656 case 185:
6657 /* rule 185 can match eol */
6658 YY_RULE_SETUP
6659 if (surfxml_cluster_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");} surfxml_cluster_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_state___file);
6660         YY_BREAK
6661 case 186:
6662 /* rule 186 can match eol */
6663 YY_RULE_SETUP
6664 if (surfxml_cluster_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_cluster>");}  surfxml_cluster_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_state___file);
6665         YY_BREAK
6666 case 187:
6667 /* rule 187 can match eol */
6668 YY_RULE_SETUP
6669 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");} surfxml_cluster_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
6670         YY_BREAK
6671 case 188:
6672 /* rule 188 can match eol */
6673 YY_RULE_SETUP
6674 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");}  surfxml_cluster_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
6675         YY_BREAK
6676 case 189:
6677 /* rule 189 can match eol */
6678 YY_RULE_SETUP
6679 if (surfxml_cluster_topo___parameters_isset != 0) {FAIL("Multiple definition of attribute topo_parameters in <surfxml_cluster>");} surfxml_cluster_topo___parameters_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_topo___parameters);
6680         YY_BREAK
6681 case 190:
6682 /* rule 190 can match eol */
6683 YY_RULE_SETUP
6684 if (surfxml_cluster_topo___parameters_isset != 0) {FAIL("Multiple definition of attribute topo_parameters in <surfxml_cluster>");}  surfxml_cluster_topo___parameters_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_topo___parameters);
6685         YY_BREAK
6686 case 191:
6687 /* rule 191 can match eol */
6688 case 192:
6689 /* rule 192 can match eol */
6690 YY_RULE_SETUP
6691 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
6692         YY_BREAK
6693 case 193:
6694 /* rule 193 can match eol */
6695 case 194:
6696 /* rule 194 can match eol */
6697 YY_RULE_SETUP
6698 A_surfxml_cluster_topology = A_surfxml_cluster_topology_TORUS;
6699         YY_BREAK
6700 case 195:
6701 /* rule 195 can match eol */
6702 case 196:
6703 /* rule 196 can match eol */
6704 YY_RULE_SETUP
6705 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FAT___TREE;
6706         YY_BREAK
6707 case 197:
6708 YY_RULE_SETUP
6709 {
6710   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6711   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6712   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6713   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6714   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6715   if (!AX_surfxml_cluster_speed) FAIL("Required attribute `speed' not set for `cluster' element.");
6716   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6717   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(S_surfxml_cluster);
6718  }
6719         YY_BREAK
6720 case 198:
6721 YY_RULE_SETUP
6722 {
6723   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6724   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6725   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6726   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6727   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6728   if (!AX_surfxml_cluster_speed) FAIL("Required attribute `speed' not set for `cluster' element.");
6729   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6730   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
6731   switch (YY_START) {
6732    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6733    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6734    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6735   }
6736  }
6737         YY_BREAK
6738 case 199:
6739 YY_RULE_SETUP
6740 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
6741         YY_BREAK
6742 case 200:
6743 YY_RULE_SETUP
6744 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
6745         YY_BREAK
6746 case YY_STATE_EOF(AL_surfxml_cluster):
6747 FAIL("EOF in attribute list of `cluster' element.");
6748         YY_BREAK
6749
6750 case 201:
6751 /* rule 201 can match eol */
6752 YY_RULE_SETUP
6753 {
6754   LEAVE;
6755   ETag_surfxml_cluster();
6756   popbuffer(); /* attribute */
6757   switch (YY_START) {
6758    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6759    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6760    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6761   }
6762  }
6763         YY_BREAK
6764 case 202:
6765 /* rule 202 can match eol */
6766 YY_RULE_SETUP
6767 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
6768         YY_BREAK
6769 case 203:
6770 YY_RULE_SETUP
6771 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
6772         YY_BREAK
6773 case YY_STATE_EOF(E_surfxml_cluster):
6774 case YY_STATE_EOF(S_surfxml_cluster):
6775 case YY_STATE_EOF(S_surfxml_cluster_2):
6776 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cluster>' expected.");
6777         YY_BREAK
6778
6779 case 204:
6780 /* rule 204 can match eol */
6781 YY_RULE_SETUP
6782 FAIL("Starting tag <config> is not allowed here.");
6783         YY_BREAK
6784 case 205:
6785 /* rule 205 can match eol */
6786 YY_RULE_SETUP
6787 {
6788   AX_surfxml_config_id = 0;
6789   surfxml_config_id_isset = 0;
6790   ENTER(AL_surfxml_config); pushbuffer(0);
6791   }
6792         YY_BREAK
6793
6794 case 206:
6795 /* rule 206 can match eol */
6796 YY_RULE_SETUP
6797 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");} surfxml_config_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
6798         YY_BREAK
6799 case 207:
6800 /* rule 207 can match eol */
6801 YY_RULE_SETUP
6802 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");}  surfxml_config_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
6803         YY_BREAK
6804 case 208:
6805 YY_RULE_SETUP
6806 {
6807   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
6808  }
6809         YY_BREAK
6810 case 209:
6811 YY_RULE_SETUP
6812 {
6813   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
6814   switch (YY_START) {
6815    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6816   }
6817  }
6818         YY_BREAK
6819 case 210:
6820 YY_RULE_SETUP
6821 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
6822         YY_BREAK
6823 case 211:
6824 YY_RULE_SETUP
6825 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
6826         YY_BREAK
6827 case YY_STATE_EOF(AL_surfxml_config):
6828 FAIL("EOF in attribute list of `config' element.");
6829         YY_BREAK
6830
6831 case 212:
6832 /* rule 212 can match eol */
6833 YY_RULE_SETUP
6834 {
6835   LEAVE;
6836   ETag_surfxml_config();
6837   popbuffer(); /* attribute */
6838   switch (YY_START) {
6839    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6840   }
6841  }
6842         YY_BREAK
6843 case 213:
6844 /* rule 213 can match eol */
6845 YY_RULE_SETUP
6846 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
6847         YY_BREAK
6848 case 214:
6849 YY_RULE_SETUP
6850 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
6851         YY_BREAK
6852 case YY_STATE_EOF(E_surfxml_config):
6853 case YY_STATE_EOF(S_surfxml_config):
6854 case YY_STATE_EOF(S_surfxml_config_2):
6855 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</config>' expected.");
6856         YY_BREAK
6857
6858 case 215:
6859 /* rule 215 can match eol */
6860 YY_RULE_SETUP
6861 FAIL("Starting tag <host> is not allowed here.");
6862         YY_BREAK
6863 case 216:
6864 /* rule 216 can match eol */
6865 YY_RULE_SETUP
6866 {
6867   AX_surfxml_host_availability___file = 0;
6868   surfxml_host_availability___file_isset = 0;
6869   AX_surfxml_host_coordinates = 0;
6870   surfxml_host_coordinates_isset = 0;
6871   AX_surfxml_host_core = 25;
6872   surfxml_host_core_isset = 0;
6873   AX_surfxml_host_id = 0;
6874   surfxml_host_id_isset = 0;
6875   AX_surfxml_host_pstate = 27;
6876   surfxml_host_pstate_isset = 0;
6877   AX_surfxml_host_speed = 0;
6878   surfxml_host_speed_isset = 0;
6879   AX_surfxml_host_state___file = 0;
6880   surfxml_host_state___file_isset = 0;
6881   ENTER(AL_surfxml_host); pushbuffer(0);
6882   }
6883         YY_BREAK
6884
6885 case 217:
6886 /* rule 217 can match eol */
6887 YY_RULE_SETUP
6888 if (surfxml_host_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");} surfxml_host_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability___file);
6889         YY_BREAK
6890 case 218:
6891 /* rule 218 can match eol */
6892 YY_RULE_SETUP
6893 if (surfxml_host_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");}  surfxml_host_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability___file);
6894         YY_BREAK
6895 case 219:
6896 /* rule 219 can match eol */
6897 YY_RULE_SETUP
6898 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");} surfxml_host_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
6899         YY_BREAK
6900 case 220:
6901 /* rule 220 can match eol */
6902 YY_RULE_SETUP
6903 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");}  surfxml_host_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
6904         YY_BREAK
6905 case 221:
6906 /* rule 221 can match eol */
6907 YY_RULE_SETUP
6908 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");} surfxml_host_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
6909         YY_BREAK
6910 case 222:
6911 /* rule 222 can match eol */
6912 YY_RULE_SETUP
6913 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");}  surfxml_host_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
6914         YY_BREAK
6915 case 223:
6916 /* rule 223 can match eol */
6917 YY_RULE_SETUP
6918 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");} surfxml_host_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
6919         YY_BREAK
6920 case 224:
6921 /* rule 224 can match eol */
6922 YY_RULE_SETUP
6923 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");}  surfxml_host_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
6924         YY_BREAK
6925 case 225:
6926 /* rule 225 can match eol */
6927 YY_RULE_SETUP
6928 if (surfxml_host_pstate_isset != 0) {FAIL("Multiple definition of attribute pstate in <surfxml_host>");} surfxml_host_pstate_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_pstate);
6929         YY_BREAK
6930 case 226:
6931 /* rule 226 can match eol */
6932 YY_RULE_SETUP
6933 if (surfxml_host_pstate_isset != 0) {FAIL("Multiple definition of attribute pstate in <surfxml_host>");}  surfxml_host_pstate_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_pstate);
6934         YY_BREAK
6935 case 227:
6936 /* rule 227 can match eol */
6937 YY_RULE_SETUP
6938 if (surfxml_host_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_host>");} surfxml_host_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_speed);
6939         YY_BREAK
6940 case 228:
6941 /* rule 228 can match eol */
6942 YY_RULE_SETUP
6943 if (surfxml_host_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_host>");}  surfxml_host_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_speed);
6944         YY_BREAK
6945 case 229:
6946 /* rule 229 can match eol */
6947 YY_RULE_SETUP
6948 if (surfxml_host_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");} surfxml_host_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state___file);
6949         YY_BREAK
6950 case 230:
6951 /* rule 230 can match eol */
6952 YY_RULE_SETUP
6953 if (surfxml_host_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");}  surfxml_host_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state___file);
6954         YY_BREAK
6955 case 231:
6956 YY_RULE_SETUP
6957 {
6958   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6959   if (!AX_surfxml_host_speed) FAIL("Required attribute `speed' not set for `host' element.");
6960   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
6961  }
6962         YY_BREAK
6963 case 232:
6964 YY_RULE_SETUP
6965 {
6966   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6967   if (!AX_surfxml_host_speed) FAIL("Required attribute `speed' not set for `host' element.");
6968   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
6969   switch (YY_START) {
6970    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6971   }
6972  }
6973         YY_BREAK
6974 case 233:
6975 YY_RULE_SETUP
6976 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
6977         YY_BREAK
6978 case 234:
6979 YY_RULE_SETUP
6980 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
6981         YY_BREAK
6982 case YY_STATE_EOF(AL_surfxml_host):
6983 FAIL("EOF in attribute list of `host' element.");
6984         YY_BREAK
6985
6986 case 235:
6987 /* rule 235 can match eol */
6988 YY_RULE_SETUP
6989 {
6990   LEAVE;
6991   ETag_surfxml_host();
6992   popbuffer(); /* attribute */
6993   switch (YY_START) {
6994    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6995   }
6996  }
6997         YY_BREAK
6998 case 236:
6999 /* rule 236 can match eol */
7000 YY_RULE_SETUP
7001 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
7002         YY_BREAK
7003 case 237:
7004 YY_RULE_SETUP
7005 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
7006         YY_BREAK
7007 case YY_STATE_EOF(E_surfxml_host):
7008 case YY_STATE_EOF(S_surfxml_host):
7009 case YY_STATE_EOF(S_surfxml_host_2):
7010 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host>' expected.");
7011         YY_BREAK
7012
7013 case 238:
7014 /* rule 238 can match eol */
7015 YY_RULE_SETUP
7016 FAIL("Starting tag <host_link> is not allowed here.");
7017         YY_BREAK
7018 case 239:
7019 /* rule 239 can match eol */
7020 YY_RULE_SETUP
7021 {
7022   AX_surfxml_host___link_down = 0;
7023   surfxml_host___link_down_isset = 0;
7024   AX_surfxml_host___link_id = 0;
7025   surfxml_host___link_id_isset = 0;
7026   AX_surfxml_host___link_up = 0;
7027   surfxml_host___link_up_isset = 0;
7028   ENTER(AL_surfxml_host___link); pushbuffer(0);
7029   }
7030         YY_BREAK
7031
7032 case 240:
7033 /* rule 240 can match eol */
7034 YY_RULE_SETUP
7035 if (surfxml_host___link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host___link>");} surfxml_host___link_down_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_down);
7036         YY_BREAK
7037 case 241:
7038 /* rule 241 can match eol */
7039 YY_RULE_SETUP
7040 if (surfxml_host___link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host___link>");}  surfxml_host___link_down_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_down);
7041         YY_BREAK
7042 case 242:
7043 /* rule 242 can match eol */
7044 YY_RULE_SETUP
7045 if (surfxml_host___link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host___link>");} surfxml_host___link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_id);
7046         YY_BREAK
7047 case 243:
7048 /* rule 243 can match eol */
7049 YY_RULE_SETUP
7050 if (surfxml_host___link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host___link>");}  surfxml_host___link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_id);
7051         YY_BREAK
7052 case 244:
7053 /* rule 244 can match eol */
7054 YY_RULE_SETUP
7055 if (surfxml_host___link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host___link>");} surfxml_host___link_up_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_up);
7056         YY_BREAK
7057 case 245:
7058 /* rule 245 can match eol */
7059 YY_RULE_SETUP
7060 if (surfxml_host___link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host___link>");}  surfxml_host___link_up_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_up);
7061         YY_BREAK
7062 case 246:
7063 YY_RULE_SETUP
7064 {
7065   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7066   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7067   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7068   LEAVE; STag_surfxml_host___link();surfxml_pcdata_ix = 0; ENTER(E_surfxml_host___link);
7069  }
7070         YY_BREAK
7071 case 247:
7072 YY_RULE_SETUP
7073 {
7074   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7075   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7076   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7077   LEAVE; STag_surfxml_host___link(); surfxml_pcdata_ix = 0; ETag_surfxml_host___link(); popbuffer(); /* attribute */
7078   switch (YY_START) {
7079    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7080   }
7081  }
7082         YY_BREAK
7083 case 248:
7084 YY_RULE_SETUP
7085 FAIL("Unexpected character `%c' in attribute list of host_link element.", surf_parse_text[0]);
7086         YY_BREAK
7087 case 249:
7088 YY_RULE_SETUP
7089 FAIL("Bad attribute `%s' in `host_link' element start tag.",surf_parse_text);
7090         YY_BREAK
7091 case YY_STATE_EOF(AL_surfxml_host___link):
7092 FAIL("EOF in attribute list of `host_link' element.");
7093         YY_BREAK
7094
7095 case 250:
7096 /* rule 250 can match eol */
7097 YY_RULE_SETUP
7098 {
7099   LEAVE;
7100   ETag_surfxml_host___link();
7101   popbuffer(); /* attribute */
7102   switch (YY_START) {
7103    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7104   }
7105  }
7106         YY_BREAK
7107 case 251:
7108 /* rule 251 can match eol */
7109 YY_RULE_SETUP
7110 FAIL("Unexpected end-tag `%s': `</host_link>' expected.",surf_parse_text);
7111         YY_BREAK
7112 case 252:
7113 YY_RULE_SETUP
7114 FAIL("Unexpected character `%c': `</host_link>' expected.",surf_parse_text[0]);
7115         YY_BREAK
7116 case YY_STATE_EOF(E_surfxml_host___link):
7117 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host_link>' expected.");
7118         YY_BREAK
7119
7120 case 253:
7121 /* rule 253 can match eol */
7122 YY_RULE_SETUP
7123 FAIL("Starting tag <include> is not allowed here.");
7124         YY_BREAK
7125 case 254:
7126 /* rule 254 can match eol */
7127 YY_RULE_SETUP
7128 {
7129   AX_surfxml_include_file = 0;
7130   surfxml_include_file_isset = 0;
7131   ENTER(AL_surfxml_include); pushbuffer(0);
7132   }
7133         YY_BREAK
7134
7135 case 255:
7136 /* rule 255 can match eol */
7137 YY_RULE_SETUP
7138 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");} surfxml_include_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
7139         YY_BREAK
7140 case 256:
7141 /* rule 256 can match eol */
7142 YY_RULE_SETUP
7143 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");}  surfxml_include_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
7144         YY_BREAK
7145 case 257:
7146 YY_RULE_SETUP
7147 {
7148   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
7149   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(S_surfxml_include);
7150  }
7151         YY_BREAK
7152 case 258:
7153 YY_RULE_SETUP
7154 {
7155   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
7156   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
7157   switch (YY_START) {
7158    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7159    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7160    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7161   }
7162  }
7163         YY_BREAK
7164 case 259:
7165 YY_RULE_SETUP
7166 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
7167         YY_BREAK
7168 case 260:
7169 YY_RULE_SETUP
7170 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
7171         YY_BREAK
7172 case YY_STATE_EOF(AL_surfxml_include):
7173 FAIL("EOF in attribute list of `include' element.");
7174         YY_BREAK
7175
7176 case 261:
7177 /* rule 261 can match eol */
7178 YY_RULE_SETUP
7179 {
7180   LEAVE;
7181   ETag_surfxml_include();
7182   popbuffer(); /* attribute */
7183   switch (YY_START) {
7184    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7185    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7186    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7187   }
7188  }
7189         YY_BREAK
7190 case 262:
7191 /* rule 262 can match eol */
7192 YY_RULE_SETUP
7193 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
7194         YY_BREAK
7195 case 263:
7196 YY_RULE_SETUP
7197 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
7198         YY_BREAK
7199 case YY_STATE_EOF(E_surfxml_include):
7200 case YY_STATE_EOF(S_surfxml_include):
7201 case YY_STATE_EOF(S_surfxml_include_2):
7202 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</include>' expected.");
7203         YY_BREAK
7204
7205 case 264:
7206 /* rule 264 can match eol */
7207 YY_RULE_SETUP
7208 FAIL("Starting tag <link> is not allowed here.");
7209         YY_BREAK
7210 case 265:
7211 /* rule 265 can match eol */
7212 YY_RULE_SETUP
7213 {
7214   AX_surfxml_link_bandwidth = 0;
7215   surfxml_link_bandwidth_isset = 0;
7216   AX_surfxml_link_bandwidth___file = 0;
7217   surfxml_link_bandwidth___file_isset = 0;
7218   AX_surfxml_link_id = 0;
7219   surfxml_link_id_isset = 0;
7220   AX_surfxml_link_latency = 0;
7221   surfxml_link_latency_isset = 0;
7222   AX_surfxml_link_latency___file = 0;
7223   surfxml_link_latency___file_isset = 0;
7224   AX_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
7225   surfxml_link_sharing___policy_isset = 0;
7226   AX_surfxml_link_state___file = 0;
7227   surfxml_link_state___file_isset = 0;
7228   ENTER(AL_surfxml_link); pushbuffer(0);
7229   }
7230         YY_BREAK
7231
7232 case 266:
7233 /* rule 266 can match eol */
7234 YY_RULE_SETUP
7235 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");} surfxml_link_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
7236         YY_BREAK
7237 case 267:
7238 /* rule 267 can match eol */
7239 YY_RULE_SETUP
7240 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");}  surfxml_link_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
7241         YY_BREAK
7242 case 268:
7243 /* rule 268 can match eol */
7244 YY_RULE_SETUP
7245 if (surfxml_link_bandwidth___file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");} surfxml_link_bandwidth___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth___file);
7246         YY_BREAK
7247 case 269:
7248 /* rule 269 can match eol */
7249 YY_RULE_SETUP
7250 if (surfxml_link_bandwidth___file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");}  surfxml_link_bandwidth___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth___file);
7251         YY_BREAK
7252 case 270:
7253 /* rule 270 can match eol */
7254 YY_RULE_SETUP
7255 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");} surfxml_link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
7256         YY_BREAK
7257 case 271:
7258 /* rule 271 can match eol */
7259 YY_RULE_SETUP
7260 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");}  surfxml_link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
7261         YY_BREAK
7262 case 272:
7263 /* rule 272 can match eol */
7264 YY_RULE_SETUP
7265 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");} surfxml_link_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
7266         YY_BREAK
7267 case 273:
7268 /* rule 273 can match eol */
7269 YY_RULE_SETUP
7270 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");}  surfxml_link_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
7271         YY_BREAK
7272 case 274:
7273 /* rule 274 can match eol */
7274 YY_RULE_SETUP
7275 if (surfxml_link_latency___file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");} surfxml_link_latency___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency___file);
7276         YY_BREAK
7277 case 275:
7278 /* rule 275 can match eol */
7279 YY_RULE_SETUP
7280 if (surfxml_link_latency___file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");}  surfxml_link_latency___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency___file);
7281         YY_BREAK
7282 case 276:
7283 /* rule 276 can match eol */
7284 case 277:
7285 /* rule 277 can match eol */
7286 YY_RULE_SETUP
7287 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
7288         YY_BREAK
7289 case 278:
7290 /* rule 278 can match eol */
7291 case 279:
7292 /* rule 279 can match eol */
7293 YY_RULE_SETUP
7294 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FATPIPE;
7295         YY_BREAK
7296 case 280:
7297 /* rule 280 can match eol */
7298 case 281:
7299 /* rule 281 can match eol */
7300 YY_RULE_SETUP
7301 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FULLDUPLEX;
7302         YY_BREAK
7303 case 282:
7304 /* rule 282 can match eol */
7305 YY_RULE_SETUP
7306 if (surfxml_link_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");} surfxml_link_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state___file);
7307         YY_BREAK
7308 case 283:
7309 /* rule 283 can match eol */
7310 YY_RULE_SETUP
7311 if (surfxml_link_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");}  surfxml_link_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state___file);
7312         YY_BREAK
7313 case 284:
7314 YY_RULE_SETUP
7315 {
7316   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
7317   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
7318   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
7319  }
7320         YY_BREAK
7321 case 285:
7322 YY_RULE_SETUP
7323 {
7324   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
7325   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
7326   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
7327   switch (YY_START) {
7328    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7329   }
7330  }
7331         YY_BREAK
7332 case 286:
7333 YY_RULE_SETUP
7334 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
7335         YY_BREAK
7336 case 287:
7337 YY_RULE_SETUP
7338 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
7339         YY_BREAK
7340 case YY_STATE_EOF(AL_surfxml_link):
7341 FAIL("EOF in attribute list of `link' element.");
7342         YY_BREAK
7343
7344 case 288:
7345 /* rule 288 can match eol */
7346 YY_RULE_SETUP
7347 {
7348   LEAVE;
7349   ETag_surfxml_link();
7350   popbuffer(); /* attribute */
7351   switch (YY_START) {
7352    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7353   }
7354  }
7355         YY_BREAK
7356 case 289:
7357 /* rule 289 can match eol */
7358 YY_RULE_SETUP
7359 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
7360         YY_BREAK
7361 case 290:
7362 YY_RULE_SETUP
7363 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
7364         YY_BREAK
7365 case YY_STATE_EOF(E_surfxml_link):
7366 case YY_STATE_EOF(S_surfxml_link):
7367 case YY_STATE_EOF(S_surfxml_link_2):
7368 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link>' expected.");
7369         YY_BREAK
7370
7371 case 291:
7372 /* rule 291 can match eol */
7373 YY_RULE_SETUP
7374 FAIL("Starting tag <link_ctn> is not allowed here.");
7375         YY_BREAK
7376 case 292:
7377 /* rule 292 can match eol */
7378 YY_RULE_SETUP
7379 {
7380   AX_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
7381   surfxml_link___ctn_direction_isset = 0;
7382   AX_surfxml_link___ctn_id = 0;
7383   surfxml_link___ctn_id_isset = 0;
7384   ENTER(AL_surfxml_link___ctn); pushbuffer(0);
7385   }
7386         YY_BREAK
7387
7388 case 293:
7389 /* rule 293 can match eol */
7390 case 294:
7391 /* rule 294 can match eol */
7392 YY_RULE_SETUP
7393 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_UP;
7394         YY_BREAK
7395 case 295:
7396 /* rule 295 can match eol */
7397 case 296:
7398 /* rule 296 can match eol */
7399 YY_RULE_SETUP
7400 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_DOWN;
7401         YY_BREAK
7402 case 297:
7403 /* rule 297 can match eol */
7404 case 298:
7405 /* rule 298 can match eol */
7406 YY_RULE_SETUP
7407 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
7408         YY_BREAK
7409 case 299:
7410 /* rule 299 can match eol */
7411 YY_RULE_SETUP
7412 if (surfxml_link___ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link___ctn>");} surfxml_link___ctn_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link___ctn_id);
7413         YY_BREAK
7414 case 300:
7415 /* rule 300 can match eol */
7416 YY_RULE_SETUP
7417 if (surfxml_link___ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link___ctn>");}  surfxml_link___ctn_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link___ctn_id);
7418         YY_BREAK
7419 case 301:
7420 YY_RULE_SETUP
7421 {
7422   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7423   LEAVE; STag_surfxml_link___ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link___ctn);
7424  }
7425         YY_BREAK
7426 case 302:
7427 YY_RULE_SETUP
7428 {
7429   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7430   LEAVE; STag_surfxml_link___ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link___ctn(); popbuffer(); /* attribute */
7431   switch (YY_START) {
7432    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7433    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
7434    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
7435    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7436   }
7437  }
7438         YY_BREAK
7439 case 303:
7440 YY_RULE_SETUP
7441 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
7442         YY_BREAK
7443 case 304:
7444 YY_RULE_SETUP
7445 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
7446         YY_BREAK
7447 case YY_STATE_EOF(AL_surfxml_link___ctn):
7448 FAIL("EOF in attribute list of `link_ctn' element.");
7449         YY_BREAK
7450
7451 case 305:
7452 /* rule 305 can match eol */
7453 YY_RULE_SETUP
7454 {
7455   LEAVE;
7456   ETag_surfxml_link___ctn();
7457   popbuffer(); /* attribute */
7458   switch (YY_START) {
7459    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7460    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
7461    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
7462    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7463   }
7464  }
7465         YY_BREAK
7466 case 306:
7467 /* rule 306 can match eol */
7468 YY_RULE_SETUP
7469 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
7470         YY_BREAK
7471 case 307:
7472 YY_RULE_SETUP
7473 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
7474         YY_BREAK
7475 case YY_STATE_EOF(E_surfxml_link___ctn):
7476 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link_ctn>' expected.");
7477         YY_BREAK
7478
7479 /* <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->
7480   * <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->  */
7481 case 308:
7482 /* rule 308 can match eol */
7483 YY_RULE_SETUP
7484 FAIL("Starting tag <model_prop> is not allowed here.");
7485         YY_BREAK
7486 case 309:
7487 /* rule 309 can match eol */
7488 YY_RULE_SETUP
7489 {
7490   AX_surfxml_model___prop_id = 0;
7491   surfxml_model___prop_id_isset = 0;
7492   AX_surfxml_model___prop_value = 0;
7493   surfxml_model___prop_value_isset = 0;
7494   ENTER(AL_surfxml_model___prop); pushbuffer(0);
7495   }
7496         YY_BREAK
7497
7498 case 310:
7499 /* rule 310 can match eol */
7500 YY_RULE_SETUP
7501 if (surfxml_model___prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_model___prop>");} surfxml_model___prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_model___prop_id);
7502         YY_BREAK
7503 case 311:
7504 /* rule 311 can match eol */
7505 YY_RULE_SETUP
7506 if (surfxml_model___prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_model___prop>");}  surfxml_model___prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_model___prop_id);
7507         YY_BREAK
7508 case 312:
7509 /* rule 312 can match eol */
7510 YY_RULE_SETUP
7511 if (surfxml_model___prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_model___prop>");} surfxml_model___prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_model___prop_value);
7512         YY_BREAK
7513 case 313:
7514 /* rule 313 can match eol */
7515 YY_RULE_SETUP
7516 if (surfxml_model___prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_model___prop>");}  surfxml_model___prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_model___prop_value);
7517         YY_BREAK
7518 case 314:
7519 YY_RULE_SETUP
7520 {
7521   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
7522   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
7523   LEAVE; STag_surfxml_model___prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_model___prop);
7524  }
7525         YY_BREAK
7526 case 315:
7527 YY_RULE_SETUP
7528 {
7529   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
7530   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
7531   LEAVE; STag_surfxml_model___prop(); surfxml_pcdata_ix = 0; ETag_surfxml_model___prop(); popbuffer(); /* attribute */
7532   switch (YY_START) {
7533    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
7534   }
7535  }
7536         YY_BREAK
7537 case 316:
7538 YY_RULE_SETUP
7539 FAIL("Unexpected character `%c' in attribute list of model_prop element.", surf_parse_text[0]);
7540         YY_BREAK
7541 case 317:
7542 YY_RULE_SETUP
7543 FAIL("Bad attribute `%s' in `model_prop' element start tag.",surf_parse_text);
7544         YY_BREAK
7545 case YY_STATE_EOF(AL_surfxml_model___prop):
7546 FAIL("EOF in attribute list of `model_prop' element.");
7547         YY_BREAK
7548
7549 case 318:
7550 /* rule 318 can match eol */
7551 YY_RULE_SETUP
7552 {
7553   LEAVE;
7554   ETag_surfxml_model___prop();
7555   popbuffer(); /* attribute */
7556   switch (YY_START) {
7557    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
7558   }
7559  }
7560         YY_BREAK
7561 case 319:
7562 /* rule 319 can match eol */
7563 YY_RULE_SETUP
7564 FAIL("Unexpected end-tag `%s': `</model_prop>' expected.",surf_parse_text);
7565         YY_BREAK
7566 case 320:
7567 YY_RULE_SETUP
7568 FAIL("Unexpected character `%c': `</model_prop>' expected.",surf_parse_text[0]);
7569         YY_BREAK
7570 case YY_STATE_EOF(E_surfxml_model___prop):
7571 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</model_prop>' expected.");
7572         YY_BREAK
7573
7574 case 321:
7575 /* rule 321 can match eol */
7576 YY_RULE_SETUP
7577 FAIL("Starting tag <mount> is not allowed here.");
7578         YY_BREAK
7579 case 322:
7580 /* rule 322 can match eol */
7581 YY_RULE_SETUP
7582 {
7583   AX_surfxml_mount_name = 0;
7584   surfxml_mount_name_isset = 0;
7585   AX_surfxml_mount_storageId = 0;
7586   surfxml_mount_storageId_isset = 0;
7587   ENTER(AL_surfxml_mount); pushbuffer(0);
7588   }
7589         YY_BREAK
7590
7591 case 323:
7592 /* rule 323 can match eol */
7593 YY_RULE_SETUP
7594 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");} surfxml_mount_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_name);
7595         YY_BREAK
7596 case 324:
7597 /* rule 324 can match eol */
7598 YY_RULE_SETUP
7599 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");}  surfxml_mount_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_name);
7600         YY_BREAK
7601 case 325:
7602 /* rule 325 can match eol */
7603 YY_RULE_SETUP
7604 if (surfxml_mount_storageId_isset != 0) {FAIL("Multiple definition of attribute storageId in <surfxml_mount>");} surfxml_mount_storageId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_storageId);
7605         YY_BREAK
7606 case 326:
7607 /* rule 326 can match eol */
7608 YY_RULE_SETUP
7609 if (surfxml_mount_storageId_isset != 0) {FAIL("Multiple definition of attribute storageId in <surfxml_mount>");}  surfxml_mount_storageId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_storageId);
7610         YY_BREAK
7611 case 327:
7612 YY_RULE_SETUP
7613 {
7614   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
7615   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
7616   LEAVE; STag_surfxml_mount();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mount);
7617  }
7618         YY_BREAK
7619 case 328:
7620 YY_RULE_SETUP
7621 {
7622   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
7623   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
7624   LEAVE; STag_surfxml_mount(); surfxml_pcdata_ix = 0; ETag_surfxml_mount(); popbuffer(); /* attribute */
7625   switch (YY_START) {
7626    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
7627   }
7628  }
7629         YY_BREAK
7630 case 329:
7631 YY_RULE_SETUP
7632 FAIL("Unexpected character `%c' in attribute list of mount element.", surf_parse_text[0]);
7633         YY_BREAK
7634 case 330:
7635 YY_RULE_SETUP
7636 FAIL("Bad attribute `%s' in `mount' element start tag.",surf_parse_text);
7637         YY_BREAK
7638 case YY_STATE_EOF(AL_surfxml_mount):
7639 FAIL("EOF in attribute list of `mount' element.");
7640         YY_BREAK
7641
7642 case 331:
7643 /* rule 331 can match eol */
7644 YY_RULE_SETUP
7645 {
7646   LEAVE;
7647   ETag_surfxml_mount();
7648   popbuffer(); /* attribute */
7649   switch (YY_START) {
7650    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
7651   }
7652  }
7653         YY_BREAK
7654 case 332:
7655 /* rule 332 can match eol */
7656 YY_RULE_SETUP
7657 FAIL("Unexpected end-tag `%s': `</mount>' expected.",surf_parse_text);
7658         YY_BREAK
7659 case 333:
7660 YY_RULE_SETUP
7661 FAIL("Unexpected character `%c': `</mount>' expected.",surf_parse_text[0]);
7662         YY_BREAK
7663 case YY_STATE_EOF(E_surfxml_mount):
7664 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mount>' expected.");
7665         YY_BREAK
7666
7667 case 334:
7668 /* rule 334 can match eol */
7669 YY_RULE_SETUP
7670 FAIL("Starting tag <peer> is not allowed here.");
7671         YY_BREAK
7672 case 335:
7673 /* rule 335 can match eol */
7674 YY_RULE_SETUP
7675 {
7676   AX_surfxml_peer_availability___file = 0;
7677   surfxml_peer_availability___file_isset = 0;
7678   AX_surfxml_peer_bw___in = 0;
7679   surfxml_peer_bw___in_isset = 0;
7680   AX_surfxml_peer_bw___out = 0;
7681   surfxml_peer_bw___out_isset = 0;
7682   AX_surfxml_peer_coordinates = 0;
7683   surfxml_peer_coordinates_isset = 0;
7684   AX_surfxml_peer_id = 0;
7685   surfxml_peer_id_isset = 0;
7686   AX_surfxml_peer_lat = 0;
7687   surfxml_peer_lat_isset = 0;
7688   AX_surfxml_peer_speed = 0;
7689   surfxml_peer_speed_isset = 0;
7690   AX_surfxml_peer_state___file = 0;
7691   surfxml_peer_state___file_isset = 0;
7692   ENTER(AL_surfxml_peer); pushbuffer(0);
7693   }
7694         YY_BREAK
7695
7696 case 336:
7697 /* rule 336 can match eol */
7698 YY_RULE_SETUP
7699 if (surfxml_peer_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");} surfxml_peer_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability___file);
7700         YY_BREAK
7701 case 337:
7702 /* rule 337 can match eol */
7703 YY_RULE_SETUP
7704 if (surfxml_peer_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");}  surfxml_peer_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability___file);
7705         YY_BREAK
7706 case 338:
7707 /* rule 338 can match eol */
7708 YY_RULE_SETUP
7709 if (surfxml_peer_bw___in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");} surfxml_peer_bw___in_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw___in);
7710         YY_BREAK
7711 case 339:
7712 /* rule 339 can match eol */
7713 YY_RULE_SETUP
7714 if (surfxml_peer_bw___in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");}  surfxml_peer_bw___in_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw___in);
7715         YY_BREAK
7716 case 340:
7717 /* rule 340 can match eol */
7718 YY_RULE_SETUP
7719 if (surfxml_peer_bw___out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");} surfxml_peer_bw___out_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw___out);
7720         YY_BREAK
7721 case 341:
7722 /* rule 341 can match eol */
7723 YY_RULE_SETUP
7724 if (surfxml_peer_bw___out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");}  surfxml_peer_bw___out_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw___out);
7725         YY_BREAK
7726 case 342:
7727 /* rule 342 can match eol */
7728 YY_RULE_SETUP
7729 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");} surfxml_peer_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
7730         YY_BREAK
7731 case 343:
7732 /* rule 343 can match eol */
7733 YY_RULE_SETUP
7734 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");}  surfxml_peer_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
7735         YY_BREAK
7736 case 344:
7737 /* rule 344 can match eol */
7738 YY_RULE_SETUP
7739 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");} surfxml_peer_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
7740         YY_BREAK
7741 case 345:
7742 /* rule 345 can match eol */
7743 YY_RULE_SETUP
7744 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");}  surfxml_peer_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
7745         YY_BREAK
7746 case 346:
7747 /* rule 346 can match eol */
7748 YY_RULE_SETUP
7749 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");} surfxml_peer_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
7750         YY_BREAK
7751 case 347:
7752 /* rule 347 can match eol */
7753 YY_RULE_SETUP
7754 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");}  surfxml_peer_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
7755         YY_BREAK
7756 case 348:
7757 /* rule 348 can match eol */
7758 YY_RULE_SETUP
7759 if (surfxml_peer_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_peer>");} surfxml_peer_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_speed);
7760         YY_BREAK
7761 case 349:
7762 /* rule 349 can match eol */
7763 YY_RULE_SETUP
7764 if (surfxml_peer_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_peer>");}  surfxml_peer_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_speed);
7765         YY_BREAK
7766 case 350:
7767 /* rule 350 can match eol */
7768 YY_RULE_SETUP
7769 if (surfxml_peer_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");} surfxml_peer_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state___file);
7770         YY_BREAK
7771 case 351:
7772 /* rule 351 can match eol */
7773 YY_RULE_SETUP
7774 if (surfxml_peer_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");}  surfxml_peer_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state___file);
7775         YY_BREAK
7776 case 352:
7777 YY_RULE_SETUP
7778 {
7779   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
7780   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
7781   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
7782   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
7783   if (!AX_surfxml_peer_speed) FAIL("Required attribute `speed' not set for `peer' element.");
7784   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
7785  }
7786         YY_BREAK
7787 case 353:
7788 YY_RULE_SETUP
7789 {
7790   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
7791   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
7792   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
7793   if (!AX_surfxml_peer_lat) FAIL("Required attribute `lat' not set for `peer' element.");
7794   if (!AX_surfxml_peer_speed) FAIL("Required attribute `speed' not set for `peer' element.");
7795   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
7796   switch (YY_START) {
7797    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7798    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7799    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7800   }
7801  }
7802         YY_BREAK
7803 case 354:
7804 YY_RULE_SETUP
7805 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
7806         YY_BREAK
7807 case 355:
7808 YY_RULE_SETUP
7809 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
7810         YY_BREAK
7811 case YY_STATE_EOF(AL_surfxml_peer):
7812 FAIL("EOF in attribute list of `peer' element.");
7813         YY_BREAK
7814
7815 case 356:
7816 /* rule 356 can match eol */
7817 YY_RULE_SETUP
7818 {
7819   LEAVE;
7820   ETag_surfxml_peer();
7821   popbuffer(); /* attribute */
7822   switch (YY_START) {
7823    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7824    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7825    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7826   }
7827  }
7828         YY_BREAK
7829 case 357:
7830 /* rule 357 can match eol */
7831 YY_RULE_SETUP
7832 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
7833         YY_BREAK
7834 case 358:
7835 YY_RULE_SETUP
7836 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
7837         YY_BREAK
7838 case YY_STATE_EOF(E_surfxml_peer):
7839 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</peer>' expected.");
7840         YY_BREAK
7841
7842 /* <!-- 
7843   *              DTD of SimGrid platform and deployment files.
7844   * More info: http://simgrid.gforge.inria.fr/simgrid/latest/doc/platform.html
7845   * To upgrade your files, use the tool simgrid_update_xml
7846   * * New in DTD version 4 (in SimGrid 3.13):
7847   *    - Rename (power->speed) the attributes describing the amount of flop
7848   *      that a <host>, <peer>, <cluster> or <cabinet> can deliver per second.
7849   *    - In <trace_connect>, attribute kind="POWER" is now kind="SPEED".
7850   *    
7851   *    - In <host> and <link>, attributes availability and state are gone.
7852   *      It was redundent with state and availability traces, and with peak values.
7853   *    - The DOCTYPE points to the right URL (this file):
7854   *      http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd
7855   *      
7856   *    - Kill <gpu>. Was not doing anything.
7857   *    - A warning is emitted for unit-less values (they are still accepted).
7858   *      - speed. Default: 'f' or 'flops'. Also defined:
7859   *         'Yf',         'Zf',         'Ef',       'Pf',        'Tf',        'Gf',        'Mf',        'kf'
7860   *         'yottaflops', 'zettaflops', 'exaflops', 'petaflops', 'teraflops', 'gigaflops', 'megaflops', 'kiloflops'
7861   *      - bandwidth. Default: 'Bps' bytes per second (or 'bps' for bits but 1 Bps = 8 bps)
7862   *        Also defined in bytes: 'TiBps', 'GiBps', 'MiBps', 'KiBps', 'TBps', 'GBps', 'MBps', 'kBps', 'Bps'
7863   *        And the same in bits:  'Tibps', 'Gibps', 'Mibps', 'Kibps', 'Tbps', 'Gbps', 'Mbps', 'kbps', 'bps'
7864   *      - latency. Default: 's' second. Also defined:
7865   *        'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond
7866   * * New in DTD version 3 (in SimGrid 3.5):
7867   *    - The AS tag were introduced. Every platform should now
7868   *      contain an englobing AS tag.
7869   *    - Routes are now symmetric by default.
7870   *    - Renamed tags (for sake of XML sanity):
7871   *      - LINK:CTN -> LINK_CTN
7872   *      - TRACE:CONNECT -> TRACE_CONNECT
7873   * * New in DTD version 2 (in SimGrid 3.4):
7874   *    - Renamed tags:
7875   *      - CPU -> HOST
7876   *      - NETWORK_LINK -> LINK
7877   *      - ROUTE_ELEMENT ->  LINK:CTN (changed again in v3)
7878   *      - PLATFORM_DESCRIPTION -> PLATFORM
7879   * * New in DTD version 1 (in SimGrid 3.3):
7880   *    - DTD is now versionned with the version attribute of platform
7881   *    - Unit change: 
7882   *      - Link bandwidth: from Mb/s to b/s
7883   *      - CPU speed: from MFlop/s to Flop/s
7884   * -->  */
7885 case 359:
7886 /* rule 359 can match eol */
7887 YY_RULE_SETUP
7888 FAIL("Starting tag <platform> is not allowed here.");
7889         YY_BREAK
7890 case 360:
7891 /* rule 360 can match eol */
7892 YY_RULE_SETUP
7893 {
7894   AX_surfxml_platform_version = 1;
7895   surfxml_platform_version_isset = 0;
7896   ENTER(AL_surfxml_platform); pushbuffer(0);
7897   }
7898         YY_BREAK
7899
7900 case 361:
7901 /* rule 361 can match eol */
7902 YY_RULE_SETUP
7903 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");} surfxml_platform_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
7904         YY_BREAK
7905 case 362:
7906 /* rule 362 can match eol */
7907 YY_RULE_SETUP
7908 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");}  surfxml_platform_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
7909         YY_BREAK
7910 case 363:
7911 YY_RULE_SETUP
7912 {
7913   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
7914  }
7915         YY_BREAK
7916 case 364:
7917 YY_RULE_SETUP
7918 {
7919   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
7920   switch (YY_START) {
7921    case ROOT_surfxml_platform: SET(EPILOG); break;
7922   }
7923  }
7924         YY_BREAK
7925 case 365:
7926 YY_RULE_SETUP
7927 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
7928         YY_BREAK
7929 case 366:
7930 YY_RULE_SETUP
7931 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
7932         YY_BREAK
7933 case YY_STATE_EOF(AL_surfxml_platform):
7934 FAIL("EOF in attribute list of `platform' element.");
7935         YY_BREAK
7936
7937 case 367:
7938 /* rule 367 can match eol */
7939 YY_RULE_SETUP
7940 {
7941   LEAVE;
7942   ETag_surfxml_platform();
7943   popbuffer(); /* attribute */
7944   switch (YY_START) {
7945    case ROOT_surfxml_platform: SET(EPILOG); break;
7946   }
7947  }
7948         YY_BREAK
7949 case 368:
7950 /* rule 368 can match eol */
7951 YY_RULE_SETUP
7952 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
7953         YY_BREAK
7954 case 369:
7955 YY_RULE_SETUP
7956 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
7957         YY_BREAK
7958 case YY_STATE_EOF(E_surfxml_platform):
7959 case YY_STATE_EOF(S_surfxml_platform):
7960 case YY_STATE_EOF(S_surfxml_platform_1):
7961 case YY_STATE_EOF(S_surfxml_platform_3):
7962 case YY_STATE_EOF(S_surfxml_platform_4):
7963 case YY_STATE_EOF(S_surfxml_platform_6):
7964 case YY_STATE_EOF(S_surfxml_platform_8):
7965 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</platform>' expected.");
7966         YY_BREAK
7967
7968 case 370:
7969 /* rule 370 can match eol */
7970 YY_RULE_SETUP
7971 FAIL("Starting tag <process> is not allowed here.");
7972         YY_BREAK
7973 case 371:
7974 /* rule 371 can match eol */
7975 YY_RULE_SETUP
7976 {
7977   AX_surfxml_process_function = 0;
7978   surfxml_process_function_isset = 0;
7979   AX_surfxml_process_host = 0;
7980   surfxml_process_host_isset = 0;
7981   AX_surfxml_process_kill___time = 50;
7982   surfxml_process_kill___time_isset = 0;
7983   AX_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
7984   surfxml_process_on___failure_isset = 0;
7985   AX_surfxml_process_start___time = 45;
7986   surfxml_process_start___time_isset = 0;
7987   ENTER(AL_surfxml_process); pushbuffer(0);
7988   }
7989         YY_BREAK
7990
7991 case 372:
7992 /* rule 372 can match eol */
7993 YY_RULE_SETUP
7994 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");} surfxml_process_function_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
7995         YY_BREAK
7996 case 373:
7997 /* rule 373 can match eol */
7998 YY_RULE_SETUP
7999 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");}  surfxml_process_function_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
8000         YY_BREAK
8001 case 374:
8002 /* rule 374 can match eol */
8003 YY_RULE_SETUP
8004 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");} surfxml_process_host_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
8005         YY_BREAK
8006 case 375:
8007 /* rule 375 can match eol */
8008 YY_RULE_SETUP
8009 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");}  surfxml_process_host_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
8010         YY_BREAK
8011 case 376:
8012 /* rule 376 can match eol */
8013 YY_RULE_SETUP
8014 if (surfxml_process_kill___time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");} surfxml_process_kill___time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill___time);
8015         YY_BREAK
8016 case 377:
8017 /* rule 377 can match eol */
8018 YY_RULE_SETUP
8019 if (surfxml_process_kill___time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");}  surfxml_process_kill___time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill___time);
8020         YY_BREAK
8021 case 378:
8022 /* rule 378 can match eol */
8023 case 379:
8024 /* rule 379 can match eol */
8025 YY_RULE_SETUP
8026 A_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
8027         YY_BREAK
8028 case 380:
8029 /* rule 380 can match eol */
8030 case 381:
8031 /* rule 381 can match eol */
8032 YY_RULE_SETUP
8033 A_surfxml_process_on___failure = A_surfxml_process_on___failure_RESTART;
8034         YY_BREAK
8035 case 382:
8036 /* rule 382 can match eol */
8037 YY_RULE_SETUP
8038 if (surfxml_process_start___time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");} surfxml_process_start___time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start___time);
8039         YY_BREAK
8040 case 383:
8041 /* rule 383 can match eol */
8042 YY_RULE_SETUP
8043 if (surfxml_process_start___time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");}  surfxml_process_start___time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start___time);
8044         YY_BREAK
8045 case 384:
8046 YY_RULE_SETUP
8047 {
8048   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
8049   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
8050   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
8051  }
8052         YY_BREAK
8053 case 385:
8054 YY_RULE_SETUP
8055 {
8056   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
8057   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
8058   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
8059   switch (YY_START) {
8060    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_4: case S_surfxml_platform_6: case S_surfxml_platform_7: case S_surfxml_platform_8: SET(S_surfxml_platform_8); break;
8061   }
8062  }
8063         YY_BREAK
8064 case 386:
8065 YY_RULE_SETUP
8066 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
8067         YY_BREAK
8068 case 387:
8069 YY_RULE_SETUP
8070 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
8071         YY_BREAK
8072 case YY_STATE_EOF(AL_surfxml_process):
8073 FAIL("EOF in attribute list of `process' element.");
8074         YY_BREAK
8075
8076 case 388:
8077 /* rule 388 can match eol */
8078 YY_RULE_SETUP
8079 {
8080   LEAVE;
8081   ETag_surfxml_process();
8082   popbuffer(); /* attribute */
8083   switch (YY_START) {
8084    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_4: case S_surfxml_platform_6: case S_surfxml_platform_7: case S_surfxml_platform_8: SET(S_surfxml_platform_8); break;
8085   }
8086  }
8087         YY_BREAK
8088 case 389:
8089 /* rule 389 can match eol */
8090 YY_RULE_SETUP
8091 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
8092         YY_BREAK
8093 case 390:
8094 YY_RULE_SETUP
8095 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
8096         YY_BREAK
8097 case YY_STATE_EOF(E_surfxml_process):
8098 case YY_STATE_EOF(S_surfxml_process):
8099 case YY_STATE_EOF(S_surfxml_process_2):
8100 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</process>' expected.");
8101         YY_BREAK
8102
8103 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
8104   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
8105 case 391:
8106 /* rule 391 can match eol */
8107 YY_RULE_SETUP
8108 FAIL("Starting tag <prop> is not allowed here.");
8109         YY_BREAK
8110 case 392:
8111 /* rule 392 can match eol */
8112 YY_RULE_SETUP
8113 {
8114   AX_surfxml_prop_id = 0;
8115   surfxml_prop_id_isset = 0;
8116   AX_surfxml_prop_value = 0;
8117   surfxml_prop_value_isset = 0;
8118   ENTER(AL_surfxml_prop); pushbuffer(0);
8119   }
8120         YY_BREAK
8121
8122 case 393:
8123 /* rule 393 can match eol */
8124 YY_RULE_SETUP
8125 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");} surfxml_prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
8126         YY_BREAK
8127 case 394:
8128 /* rule 394 can match eol */
8129 YY_RULE_SETUP
8130 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");}  surfxml_prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
8131         YY_BREAK
8132 case 395:
8133 /* rule 395 can match eol */
8134 YY_RULE_SETUP
8135 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");} surfxml_prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
8136         YY_BREAK
8137 case 396:
8138 /* rule 396 can match eol */
8139 YY_RULE_SETUP
8140 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");}  surfxml_prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
8141         YY_BREAK
8142 case 397:
8143 YY_RULE_SETUP
8144 {
8145   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
8146   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
8147   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
8148  }
8149         YY_BREAK
8150 case 398:
8151 YY_RULE_SETUP
8152 {
8153   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
8154   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
8155   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
8156   switch (YY_START) {
8157    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
8158    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
8159    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
8160    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
8161    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
8162    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
8163    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
8164    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
8165   }
8166  }
8167         YY_BREAK
8168 case 399:
8169 YY_RULE_SETUP
8170 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
8171         YY_BREAK
8172 case 400:
8173 YY_RULE_SETUP
8174 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
8175         YY_BREAK
8176 case YY_STATE_EOF(AL_surfxml_prop):
8177 FAIL("EOF in attribute list of `prop' element.");
8178         YY_BREAK
8179
8180 case 401:
8181 /* rule 401 can match eol */
8182 YY_RULE_SETUP
8183 {
8184   LEAVE;
8185   ETag_surfxml_prop();
8186   popbuffer(); /* attribute */
8187   switch (YY_START) {
8188    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
8189    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
8190    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
8191    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
8192    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
8193    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
8194    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
8195    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
8196   }
8197  }
8198         YY_BREAK
8199 case 402:
8200 /* rule 402 can match eol */
8201 YY_RULE_SETUP
8202 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
8203         YY_BREAK
8204 case 403:
8205 YY_RULE_SETUP
8206 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
8207         YY_BREAK
8208 case YY_STATE_EOF(E_surfxml_prop):
8209 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</prop>' expected.");
8210         YY_BREAK
8211
8212 case 404:
8213 /* rule 404 can match eol */
8214 YY_RULE_SETUP
8215 FAIL("Starting tag <random> is not allowed here.");
8216         YY_BREAK
8217 case 405:
8218 /* rule 405 can match eol */
8219 YY_RULE_SETUP
8220 {
8221   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
8222   surfxml_random_generator_isset = 0;
8223   AX_surfxml_random_id = 0;
8224   surfxml_random_id_isset = 0;
8225   AX_surfxml_random_max = 0;
8226   surfxml_random_max_isset = 0;
8227   AX_surfxml_random_mean = 0;
8228   surfxml_random_mean_isset = 0;
8229   AX_surfxml_random_min = 0;
8230   surfxml_random_min_isset = 0;
8231   AX_surfxml_random_radical = 0;
8232   surfxml_random_radical_isset = 0;
8233   AX_surfxml_random_seed = 5;
8234   surfxml_random_seed_isset = 0;
8235   AX_surfxml_random_std___deviation = 0;
8236   surfxml_random_std___deviation_isset = 0;
8237   ENTER(AL_surfxml_random); pushbuffer(0);
8238   }
8239         YY_BREAK
8240
8241 case 406:
8242 /* rule 406 can match eol */
8243 case 407:
8244 /* rule 407 can match eol */
8245 YY_RULE_SETUP
8246 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
8247         YY_BREAK
8248 case 408:
8249 /* rule 408 can match eol */
8250 case 409:
8251 /* rule 409 can match eol */
8252 YY_RULE_SETUP
8253 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
8254         YY_BREAK
8255 case 410:
8256 /* rule 410 can match eol */
8257 case 411:
8258 /* rule 411 can match eol */
8259 YY_RULE_SETUP
8260 A_surfxml_random_generator = A_surfxml_random_generator_RNGSTREAM;
8261         YY_BREAK
8262 case 412:
8263 /* rule 412 can match eol */
8264 case 413:
8265 /* rule 413 can match eol */
8266 YY_RULE_SETUP
8267 A_surfxml_random_generator = A_surfxml_random_generator_NONE;
8268         YY_BREAK
8269 case 414:
8270 /* rule 414 can match eol */
8271 YY_RULE_SETUP
8272 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");} surfxml_random_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
8273         YY_BREAK
8274 case 415:
8275 /* rule 415 can match eol */
8276 YY_RULE_SETUP
8277 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");}  surfxml_random_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
8278         YY_BREAK
8279 case 416:
8280 /* rule 416 can match eol */
8281 YY_RULE_SETUP
8282 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");} surfxml_random_max_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
8283         YY_BREAK
8284 case 417:
8285 /* rule 417 can match eol */
8286 YY_RULE_SETUP
8287 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");}  surfxml_random_max_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
8288         YY_BREAK
8289 case 418:
8290 /* rule 418 can match eol */
8291 YY_RULE_SETUP
8292 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");} surfxml_random_mean_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
8293         YY_BREAK
8294 case 419:
8295 /* rule 419 can match eol */
8296 YY_RULE_SETUP
8297 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");}  surfxml_random_mean_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
8298         YY_BREAK
8299 case 420:
8300 /* rule 420 can match eol */
8301 YY_RULE_SETUP
8302 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");} surfxml_random_min_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
8303         YY_BREAK
8304 case 421:
8305 /* rule 421 can match eol */
8306 YY_RULE_SETUP
8307 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");}  surfxml_random_min_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
8308         YY_BREAK
8309 case 422:
8310 /* rule 422 can match eol */
8311 YY_RULE_SETUP
8312 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");} surfxml_random_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
8313         YY_BREAK
8314 case 423:
8315 /* rule 423 can match eol */
8316 YY_RULE_SETUP
8317 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");}  surfxml_random_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
8318         YY_BREAK
8319 case 424:
8320 /* rule 424 can match eol */
8321 YY_RULE_SETUP
8322 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");} surfxml_random_seed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
8323         YY_BREAK
8324 case 425:
8325 /* rule 425 can match eol */
8326 YY_RULE_SETUP
8327 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");}  surfxml_random_seed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
8328         YY_BREAK
8329 case 426:
8330 /* rule 426 can match eol */
8331 YY_RULE_SETUP
8332 if (surfxml_random_std___deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");} surfxml_random_std___deviation_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std___deviation);
8333         YY_BREAK
8334 case 427:
8335 /* rule 427 can match eol */
8336 YY_RULE_SETUP
8337 if (surfxml_random_std___deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");}  surfxml_random_std___deviation_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std___deviation);
8338         YY_BREAK
8339 case 428:
8340 YY_RULE_SETUP
8341 {
8342   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
8343   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
8344   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
8345   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
8346   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
8347   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(E_surfxml_random);
8348  }
8349         YY_BREAK
8350 case 429:
8351 YY_RULE_SETUP
8352 {
8353   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
8354   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
8355   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
8356   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
8357   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
8358   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
8359   switch (YY_START) {
8360    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
8361   }
8362  }
8363         YY_BREAK
8364 case 430:
8365 YY_RULE_SETUP
8366 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
8367         YY_BREAK
8368 case 431:
8369 YY_RULE_SETUP
8370 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
8371         YY_BREAK
8372 case YY_STATE_EOF(AL_surfxml_random):
8373 FAIL("EOF in attribute list of `random' element.");
8374         YY_BREAK
8375
8376 case 432:
8377 /* rule 432 can match eol */
8378 YY_RULE_SETUP
8379 {
8380   LEAVE;
8381   ETag_surfxml_random();
8382   popbuffer(); /* attribute */
8383   switch (YY_START) {
8384    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
8385   }
8386  }
8387         YY_BREAK
8388 case 433:
8389 /* rule 433 can match eol */
8390 YY_RULE_SETUP
8391 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
8392         YY_BREAK
8393 case 434:
8394 YY_RULE_SETUP
8395 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
8396         YY_BREAK
8397 case YY_STATE_EOF(E_surfxml_random):
8398 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</random>' expected.");
8399         YY_BREAK
8400
8401 case 435:
8402 /* rule 435 can match eol */
8403 YY_RULE_SETUP
8404 FAIL("Starting tag <route> is not allowed here.");
8405         YY_BREAK
8406 case 436:
8407 /* rule 436 can match eol */
8408 YY_RULE_SETUP
8409 {
8410   AX_surfxml_route_dst = 0;
8411   surfxml_route_dst_isset = 0;
8412   AX_surfxml_route_src = 0;
8413   surfxml_route_src_isset = 0;
8414   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8415   surfxml_route_symmetrical_isset = 0;
8416   ENTER(AL_surfxml_route); pushbuffer(0);
8417   }
8418         YY_BREAK
8419
8420 case 437:
8421 /* rule 437 can match eol */
8422 YY_RULE_SETUP
8423 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");} surfxml_route_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
8424         YY_BREAK
8425 case 438:
8426 /* rule 438 can match eol */
8427 YY_RULE_SETUP
8428 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");}  surfxml_route_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
8429         YY_BREAK
8430 case 439:
8431 /* rule 439 can match eol */
8432 YY_RULE_SETUP
8433 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");} surfxml_route_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
8434         YY_BREAK
8435 case 440:
8436 /* rule 440 can match eol */
8437 YY_RULE_SETUP
8438 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");}  surfxml_route_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
8439         YY_BREAK
8440 case 441:
8441 /* rule 441 can match eol */
8442 case 442:
8443 /* rule 442 can match eol */
8444 YY_RULE_SETUP
8445 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8446         YY_BREAK
8447 case 443:
8448 /* rule 443 can match eol */
8449 case 444:
8450 /* rule 444 can match eol */
8451 YY_RULE_SETUP
8452 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
8453         YY_BREAK
8454 case 445:
8455 YY_RULE_SETUP
8456 {
8457   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8458   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8459   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
8460  }
8461         YY_BREAK
8462 case 446:
8463 YY_RULE_SETUP
8464 {
8465   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8466   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8467   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
8468   switch (YY_START) {
8469    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8470   }
8471  }
8472         YY_BREAK
8473 case 447:
8474 YY_RULE_SETUP
8475 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
8476         YY_BREAK
8477 case 448:
8478 YY_RULE_SETUP
8479 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
8480         YY_BREAK
8481 case YY_STATE_EOF(AL_surfxml_route):
8482 FAIL("EOF in attribute list of `route' element.");
8483         YY_BREAK
8484
8485 case 449:
8486 /* rule 449 can match eol */
8487 YY_RULE_SETUP
8488 {
8489   LEAVE;
8490   ETag_surfxml_route();
8491   popbuffer(); /* attribute */
8492   switch (YY_START) {
8493    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8494   }
8495  }
8496         YY_BREAK
8497 case 450:
8498 /* rule 450 can match eol */
8499 YY_RULE_SETUP
8500 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
8501         YY_BREAK
8502 case 451:
8503 YY_RULE_SETUP
8504 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
8505         YY_BREAK
8506 case YY_STATE_EOF(E_surfxml_route):
8507 case YY_STATE_EOF(S_surfxml_route):
8508 case YY_STATE_EOF(S_surfxml_route_2):
8509 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</route>' expected.");
8510         YY_BREAK
8511
8512 case 452:
8513 /* rule 452 can match eol */
8514 YY_RULE_SETUP
8515 FAIL("Starting tag <router> is not allowed here.");
8516         YY_BREAK
8517 case 453:
8518 /* rule 453 can match eol */
8519 YY_RULE_SETUP
8520 {
8521   AX_surfxml_router_coordinates = 0;
8522   surfxml_router_coordinates_isset = 0;
8523   AX_surfxml_router_id = 0;
8524   surfxml_router_id_isset = 0;
8525   ENTER(AL_surfxml_router); pushbuffer(0);
8526   }
8527         YY_BREAK
8528
8529 case 454:
8530 /* rule 454 can match eol */
8531 YY_RULE_SETUP
8532 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");} surfxml_router_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
8533         YY_BREAK
8534 case 455:
8535 /* rule 455 can match eol */
8536 YY_RULE_SETUP
8537 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");}  surfxml_router_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
8538         YY_BREAK
8539 case 456:
8540 /* rule 456 can match eol */
8541 YY_RULE_SETUP
8542 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");} surfxml_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
8543         YY_BREAK
8544 case 457:
8545 /* rule 457 can match eol */
8546 YY_RULE_SETUP
8547 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");}  surfxml_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
8548         YY_BREAK
8549 case 458:
8550 YY_RULE_SETUP
8551 {
8552   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8553   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
8554  }
8555         YY_BREAK
8556 case 459:
8557 YY_RULE_SETUP
8558 {
8559   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8560   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
8561   switch (YY_START) {
8562    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8563   }
8564  }
8565         YY_BREAK
8566 case 460:
8567 YY_RULE_SETUP
8568 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
8569         YY_BREAK
8570 case 461:
8571 YY_RULE_SETUP
8572 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
8573         YY_BREAK
8574 case YY_STATE_EOF(AL_surfxml_router):
8575 FAIL("EOF in attribute list of `router' element.");
8576         YY_BREAK
8577
8578 case 462:
8579 /* rule 462 can match eol */
8580 YY_RULE_SETUP
8581 {
8582   LEAVE;
8583   ETag_surfxml_router();
8584   popbuffer(); /* attribute */
8585   switch (YY_START) {
8586    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8587   }
8588  }
8589         YY_BREAK
8590 case 463:
8591 /* rule 463 can match eol */
8592 YY_RULE_SETUP
8593 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
8594         YY_BREAK
8595 case 464:
8596 YY_RULE_SETUP
8597 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
8598         YY_BREAK
8599 case YY_STATE_EOF(E_surfxml_router):
8600 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</router>' expected.");
8601         YY_BREAK
8602
8603 case 465:
8604 /* rule 465 can match eol */
8605 YY_RULE_SETUP
8606 FAIL("Starting tag <storage> is not allowed here.");
8607         YY_BREAK
8608 case 466:
8609 /* rule 466 can match eol */
8610 YY_RULE_SETUP
8611 {
8612   AX_surfxml_storage_attach = 0;
8613   surfxml_storage_attach_isset = 0;
8614   AX_surfxml_storage_content = 0;
8615   surfxml_storage_content_isset = 0;
8616   AX_surfxml_storage_content___type = 31;
8617   surfxml_storage_content___type_isset = 0;
8618   AX_surfxml_storage_id = 0;
8619   surfxml_storage_id_isset = 0;
8620   AX_surfxml_storage_typeId = 0;
8621   surfxml_storage_typeId_isset = 0;
8622   ENTER(AL_surfxml_storage); pushbuffer(0);
8623   }
8624         YY_BREAK
8625
8626 case 467:
8627 /* rule 467 can match eol */
8628 YY_RULE_SETUP
8629 if (surfxml_storage_attach_isset != 0) {FAIL("Multiple definition of attribute attach in <surfxml_storage>");} surfxml_storage_attach_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_attach);
8630         YY_BREAK
8631 case 468:
8632 /* rule 468 can match eol */
8633 YY_RULE_SETUP
8634 if (surfxml_storage_attach_isset != 0) {FAIL("Multiple definition of attribute attach in <surfxml_storage>");}  surfxml_storage_attach_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_attach);
8635         YY_BREAK
8636 case 469:
8637 /* rule 469 can match eol */
8638 YY_RULE_SETUP
8639 if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");} surfxml_storage_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content);
8640         YY_BREAK
8641 case 470:
8642 /* rule 470 can match eol */
8643 YY_RULE_SETUP
8644 if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");}  surfxml_storage_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content);
8645         YY_BREAK
8646 case 471:
8647 /* rule 471 can match eol */
8648 YY_RULE_SETUP
8649 if (surfxml_storage_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage>");} surfxml_storage_content___type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content___type);
8650         YY_BREAK
8651 case 472:
8652 /* rule 472 can match eol */
8653 YY_RULE_SETUP
8654 if (surfxml_storage_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage>");}  surfxml_storage_content___type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content___type);
8655         YY_BREAK
8656 case 473:
8657 /* rule 473 can match eol */
8658 YY_RULE_SETUP
8659 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");} surfxml_storage_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_id);
8660         YY_BREAK
8661 case 474:
8662 /* rule 474 can match eol */
8663 YY_RULE_SETUP
8664 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");}  surfxml_storage_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_id);
8665         YY_BREAK
8666 case 475:
8667 /* rule 475 can match eol */
8668 YY_RULE_SETUP
8669 if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");} surfxml_storage_typeId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_typeId);
8670         YY_BREAK
8671 case 476:
8672 /* rule 476 can match eol */
8673 YY_RULE_SETUP
8674 if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");}  surfxml_storage_typeId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_typeId);
8675         YY_BREAK
8676 case 477:
8677 YY_RULE_SETUP
8678 {
8679   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
8680   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
8681   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
8682   LEAVE; STag_surfxml_storage();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage);
8683  }
8684         YY_BREAK
8685 case 478:
8686 YY_RULE_SETUP
8687 {
8688   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
8689   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
8690   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
8691   LEAVE; STag_surfxml_storage(); surfxml_pcdata_ix = 0; ETag_surfxml_storage(); popbuffer(); /* attribute */
8692   switch (YY_START) {
8693    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8694   }
8695  }
8696         YY_BREAK
8697 case 479:
8698 YY_RULE_SETUP
8699 FAIL("Unexpected character `%c' in attribute list of storage element.", surf_parse_text[0]);
8700         YY_BREAK
8701 case 480:
8702 YY_RULE_SETUP
8703 FAIL("Bad attribute `%s' in `storage' element start tag.",surf_parse_text);
8704         YY_BREAK
8705 case YY_STATE_EOF(AL_surfxml_storage):
8706 FAIL("EOF in attribute list of `storage' element.");
8707         YY_BREAK
8708
8709 case 481:
8710 /* rule 481 can match eol */
8711 YY_RULE_SETUP
8712 {
8713   LEAVE;
8714   ETag_surfxml_storage();
8715   popbuffer(); /* attribute */
8716   switch (YY_START) {
8717    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8718   }
8719  }
8720         YY_BREAK
8721 case 482:
8722 /* rule 482 can match eol */
8723 YY_RULE_SETUP
8724 FAIL("Unexpected end-tag `%s': `</storage>' expected.",surf_parse_text);
8725         YY_BREAK
8726 case 483:
8727 YY_RULE_SETUP
8728 FAIL("Unexpected character `%c': `</storage>' expected.",surf_parse_text[0]);
8729         YY_BREAK
8730 case YY_STATE_EOF(E_surfxml_storage):
8731 case YY_STATE_EOF(S_surfxml_storage):
8732 case YY_STATE_EOF(S_surfxml_storage_2):
8733 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage>' expected.");
8734         YY_BREAK
8735
8736 case 484:
8737 /* rule 484 can match eol */
8738 YY_RULE_SETUP
8739 FAIL("Starting tag <storage_type> is not allowed here.");
8740         YY_BREAK
8741 case 485:
8742 /* rule 485 can match eol */
8743 YY_RULE_SETUP
8744 {
8745   AX_surfxml_storage___type_content = 0;
8746   surfxml_storage___type_content_isset = 0;
8747   AX_surfxml_storage___type_content___type = 16;
8748   surfxml_storage___type_content___type_isset = 0;
8749   AX_surfxml_storage___type_id = 0;
8750   surfxml_storage___type_id_isset = 0;
8751   AX_surfxml_storage___type_model = 0;
8752   surfxml_storage___type_model_isset = 0;
8753   AX_surfxml_storage___type_size = 0;
8754   surfxml_storage___type_size_isset = 0;
8755   ENTER(AL_surfxml_storage___type); pushbuffer(0);
8756   }
8757         YY_BREAK
8758
8759 case 486:
8760 /* rule 486 can match eol */
8761 YY_RULE_SETUP
8762 if (surfxml_storage___type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage___type>");} surfxml_storage___type_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_content);
8763         YY_BREAK
8764 case 487:
8765 /* rule 487 can match eol */
8766 YY_RULE_SETUP
8767 if (surfxml_storage___type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage___type>");}  surfxml_storage___type_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_content);
8768         YY_BREAK
8769 case 488:
8770 /* rule 488 can match eol */
8771 YY_RULE_SETUP
8772 if (surfxml_storage___type_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage___type>");} surfxml_storage___type_content___type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_content___type);
8773         YY_BREAK
8774 case 489:
8775 /* rule 489 can match eol */
8776 YY_RULE_SETUP
8777 if (surfxml_storage___type_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage___type>");}  surfxml_storage___type_content___type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_content___type);
8778         YY_BREAK
8779 case 490:
8780 /* rule 490 can match eol */
8781 YY_RULE_SETUP
8782 if (surfxml_storage___type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage___type>");} surfxml_storage___type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_id);
8783         YY_BREAK
8784 case 491:
8785 /* rule 491 can match eol */
8786 YY_RULE_SETUP
8787 if (surfxml_storage___type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage___type>");}  surfxml_storage___type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_id);
8788         YY_BREAK
8789 case 492:
8790 /* rule 492 can match eol */
8791 YY_RULE_SETUP
8792 if (surfxml_storage___type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage___type>");} surfxml_storage___type_model_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_model);
8793         YY_BREAK
8794 case 493:
8795 /* rule 493 can match eol */
8796 YY_RULE_SETUP
8797 if (surfxml_storage___type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage___type>");}  surfxml_storage___type_model_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_model);
8798         YY_BREAK
8799 case 494:
8800 /* rule 494 can match eol */
8801 YY_RULE_SETUP
8802 if (surfxml_storage___type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage___type>");} surfxml_storage___type_size_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_size);
8803         YY_BREAK
8804 case 495:
8805 /* rule 495 can match eol */
8806 YY_RULE_SETUP
8807 if (surfxml_storage___type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage___type>");}  surfxml_storage___type_size_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_size);
8808         YY_BREAK
8809 case 496:
8810 YY_RULE_SETUP
8811 {
8812   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
8813   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
8814   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
8815   LEAVE; STag_surfxml_storage___type();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage___type);
8816  }
8817         YY_BREAK
8818 case 497:
8819 YY_RULE_SETUP
8820 {
8821   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
8822   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
8823   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
8824   LEAVE; STag_surfxml_storage___type(); surfxml_pcdata_ix = 0; ETag_surfxml_storage___type(); popbuffer(); /* attribute */
8825   switch (YY_START) {
8826    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8827   }
8828  }
8829         YY_BREAK
8830 case 498:
8831 YY_RULE_SETUP
8832 FAIL("Unexpected character `%c' in attribute list of storage_type element.", surf_parse_text[0]);
8833         YY_BREAK
8834 case 499:
8835 YY_RULE_SETUP
8836 FAIL("Bad attribute `%s' in `storage_type' element start tag.",surf_parse_text);
8837         YY_BREAK
8838 case YY_STATE_EOF(AL_surfxml_storage___type):
8839 FAIL("EOF in attribute list of `storage_type' element.");
8840         YY_BREAK
8841
8842 case 500:
8843 /* rule 500 can match eol */
8844 YY_RULE_SETUP
8845 {
8846   LEAVE;
8847   ETag_surfxml_storage___type();
8848   popbuffer(); /* attribute */
8849   switch (YY_START) {
8850    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8851   }
8852  }
8853         YY_BREAK
8854 case 501:
8855 /* rule 501 can match eol */
8856 YY_RULE_SETUP
8857 FAIL("Unexpected end-tag `%s': `</storage_type>' expected.",surf_parse_text);
8858         YY_BREAK
8859 case 502:
8860 YY_RULE_SETUP
8861 FAIL("Unexpected character `%c': `</storage_type>' expected.",surf_parse_text[0]);
8862         YY_BREAK
8863 case YY_STATE_EOF(E_surfxml_storage___type):
8864 case YY_STATE_EOF(S_surfxml_storage___type):
8865 case YY_STATE_EOF(S_surfxml_storage___type_2):
8866 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage_type>' expected.");
8867         YY_BREAK
8868
8869 case 503:
8870 /* rule 503 can match eol */
8871 YY_RULE_SETUP
8872 FAIL("Starting tag <trace> is not allowed here.");
8873         YY_BREAK
8874 case 504:
8875 /* rule 504 can match eol */
8876 YY_RULE_SETUP
8877 {
8878   AX_surfxml_trace_file = 0;
8879   surfxml_trace_file_isset = 0;
8880   AX_surfxml_trace_id = 0;
8881   surfxml_trace_id_isset = 0;
8882   AX_surfxml_trace_periodicity = 0;
8883   surfxml_trace_periodicity_isset = 0;
8884   ENTER(AL_surfxml_trace); pushbuffer(0);
8885   }
8886         YY_BREAK
8887
8888 case 505:
8889 /* rule 505 can match eol */
8890 YY_RULE_SETUP
8891 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");} surfxml_trace_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
8892         YY_BREAK
8893 case 506:
8894 /* rule 506 can match eol */
8895 YY_RULE_SETUP
8896 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");}  surfxml_trace_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
8897         YY_BREAK
8898 case 507:
8899 /* rule 507 can match eol */
8900 YY_RULE_SETUP
8901 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");} surfxml_trace_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
8902         YY_BREAK
8903 case 508:
8904 /* rule 508 can match eol */
8905 YY_RULE_SETUP
8906 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");}  surfxml_trace_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
8907         YY_BREAK
8908 case 509:
8909 /* rule 509 can match eol */
8910 YY_RULE_SETUP
8911 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");} surfxml_trace_periodicity_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
8912         YY_BREAK
8913 case 510:
8914 /* rule 510 can match eol */
8915 YY_RULE_SETUP
8916 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");}  surfxml_trace_periodicity_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
8917         YY_BREAK
8918 case 511:
8919 YY_RULE_SETUP
8920 {
8921   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
8922   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
8923   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
8924  }
8925         YY_BREAK
8926 case 512:
8927 YY_RULE_SETUP
8928 {
8929   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
8930   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
8931   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
8932   switch (YY_START) {
8933    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8934    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8935    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
8936   }
8937  }
8938         YY_BREAK
8939 case 513:
8940 YY_RULE_SETUP
8941 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
8942         YY_BREAK
8943 case 514:
8944 YY_RULE_SETUP
8945 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
8946         YY_BREAK
8947 case YY_STATE_EOF(AL_surfxml_trace):
8948 FAIL("EOF in attribute list of `trace' element.");
8949         YY_BREAK
8950
8951 case 515:
8952 /* rule 515 can match eol */
8953 YY_RULE_SETUP
8954 {
8955   LEAVE;
8956   BUFFERDONE;
8957   ETag_surfxml_trace();
8958   surfxml_pcdata_ix = popbuffer();
8959   popbuffer(); /* attribute */
8960   switch (YY_START) {
8961    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8962    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8963    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
8964   }
8965  }
8966         YY_BREAK
8967 case 516:
8968 /* rule 516 can match eol */
8969 YY_RULE_SETUP
8970 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
8971         YY_BREAK
8972 case YY_STATE_EOF(IN_trace):
8973 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace>' expected.");
8974         YY_BREAK
8975
8976 case 517:
8977 /* rule 517 can match eol */
8978 YY_RULE_SETUP
8979 FAIL("Starting tag <trace_connect> is not allowed here.");
8980         YY_BREAK
8981 case 518:
8982 /* rule 518 can match eol */
8983 YY_RULE_SETUP
8984 {
8985   AX_surfxml_trace___connect_element = 0;
8986   surfxml_trace___connect_element_isset = 0;
8987   AX_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
8988   surfxml_trace___connect_kind_isset = 0;
8989   AX_surfxml_trace___connect_trace = 0;
8990   surfxml_trace___connect_trace_isset = 0;
8991   ENTER(AL_surfxml_trace___connect); pushbuffer(0);
8992   }
8993         YY_BREAK
8994
8995 case 519:
8996 /* rule 519 can match eol */
8997 YY_RULE_SETUP
8998 if (surfxml_trace___connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace___connect>");} surfxml_trace___connect_element_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace___connect_element);
8999         YY_BREAK
9000 case 520:
9001 /* rule 520 can match eol */
9002 YY_RULE_SETUP
9003 if (surfxml_trace___connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace___connect>");}  surfxml_trace___connect_element_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace___connect_element);
9004         YY_BREAK
9005 case 521:
9006 /* rule 521 can match eol */
9007 case 522:
9008 /* rule 522 can match eol */
9009 YY_RULE_SETUP
9010 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
9011         YY_BREAK
9012 case 523:
9013 /* rule 523 can match eol */
9014 case 524:
9015 /* rule 524 can match eol */
9016 YY_RULE_SETUP
9017 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_SPEED;
9018         YY_BREAK
9019 case 525:
9020 /* rule 525 can match eol */
9021 case 526:
9022 /* rule 526 can match eol */
9023 YY_RULE_SETUP
9024 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LINK___AVAIL;
9025         YY_BREAK
9026 case 527:
9027 /* rule 527 can match eol */
9028 case 528:
9029 /* rule 528 can match eol */
9030 YY_RULE_SETUP
9031 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_BANDWIDTH;
9032         YY_BREAK
9033 case 529:
9034 /* rule 529 can match eol */
9035 case 530:
9036 /* rule 530 can match eol */
9037 YY_RULE_SETUP
9038 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LATENCY;
9039         YY_BREAK
9040 case 531:
9041 /* rule 531 can match eol */
9042 YY_RULE_SETUP
9043 if (surfxml_trace___connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace___connect>");} surfxml_trace___connect_trace_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace___connect_trace);
9044         YY_BREAK
9045 case 532:
9046 /* rule 532 can match eol */
9047 YY_RULE_SETUP
9048 if (surfxml_trace___connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace___connect>");}  surfxml_trace___connect_trace_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace___connect_trace);
9049         YY_BREAK
9050 case 533:
9051 YY_RULE_SETUP
9052 {
9053   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
9054   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
9055   LEAVE; STag_surfxml_trace___connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace___connect);
9056  }
9057         YY_BREAK
9058 case 534:
9059 YY_RULE_SETUP
9060 {
9061   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
9062   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
9063   LEAVE; STag_surfxml_trace___connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace___connect(); popbuffer(); /* attribute */
9064   switch (YY_START) {
9065    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
9066    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
9067    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
9068   }
9069  }
9070         YY_BREAK
9071 case 535:
9072 YY_RULE_SETUP
9073 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
9074         YY_BREAK
9075 case 536:
9076 YY_RULE_SETUP
9077 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
9078         YY_BREAK
9079 case YY_STATE_EOF(AL_surfxml_trace___connect):
9080 FAIL("EOF in attribute list of `trace_connect' element.");
9081         YY_BREAK
9082
9083 case 537:
9084 /* rule 537 can match eol */
9085 YY_RULE_SETUP
9086 {
9087   LEAVE;
9088   ETag_surfxml_trace___connect();
9089   popbuffer(); /* attribute */
9090   switch (YY_START) {
9091    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
9092    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
9093    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
9094   }
9095  }
9096         YY_BREAK
9097 case 538:
9098 /* rule 538 can match eol */
9099 YY_RULE_SETUP
9100 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
9101         YY_BREAK
9102 case 539:
9103 YY_RULE_SETUP
9104 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
9105         YY_BREAK
9106 case YY_STATE_EOF(E_surfxml_trace___connect):
9107 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace_connect>' expected.");
9108         YY_BREAK
9109
9110 /* EPILOG: after the root element. */
9111
9112 case 540:
9113 YY_RULE_SETUP
9114 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
9115         YY_BREAK
9116 case YY_STATE_EOF(EPILOG):
9117 SUCCEED;
9118         YY_BREAK
9119
9120 /* CHARACTER DATA. */
9121
9122 /* Non-defined standard entities... */
9123 case 541:
9124 YY_RULE_SETUP
9125 BUFFERPUTC('&');
9126         YY_BREAK
9127 case 542:
9128 YY_RULE_SETUP
9129 BUFFERPUTC('<');
9130         YY_BREAK
9131 case 543:
9132 YY_RULE_SETUP
9133 BUFFERPUTC('>');
9134         YY_BREAK
9135 case 544:
9136 YY_RULE_SETUP
9137 BUFFERPUTC('\'');
9138         YY_BREAK
9139 case 545:
9140 YY_RULE_SETUP
9141 BUFFERPUTC('"');
9142         YY_BREAK
9143 /* Character entities. */
9144 case 546:
9145 YY_RULE_SETUP
9146 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
9147         YY_BREAK
9148 case 547:
9149 YY_RULE_SETUP
9150 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
9151         YY_BREAK
9152
9153 case 548:
9154 /* rule 548 can match eol */
9155 case 549:
9156 /* rule 549 can match eol */
9157 case 550:
9158 /* rule 550 can match eol */
9159 case 551:
9160 /* rule 551 can match eol */
9161 YY_RULE_SETUP
9162 BUFFERPUTC('\n');
9163         YY_BREAK
9164
9165 case 552:
9166 YY_RULE_SETUP
9167 ENTER(CDATA);
9168         YY_BREAK
9169 case 553:
9170 YY_RULE_SETUP
9171 FAIL("Unexpected `]""]>' in character data.");
9172         YY_BREAK
9173
9174 case 554:
9175 YY_RULE_SETUP
9176 BUFFERDONE; LEAVE;
9177         YY_BREAK
9178 case YY_STATE_EOF(VALUE1):
9179 FAIL("EOF in literal (\"'\" expected).");
9180         YY_BREAK
9181
9182 case 555:
9183 YY_RULE_SETUP
9184 BUFFERDONE; LEAVE;
9185         YY_BREAK
9186 case YY_STATE_EOF(VALUE2):
9187 FAIL("EOF in literal (`\"' expected).");
9188         YY_BREAK
9189
9190 case 556:
9191 /* rule 556 can match eol */
9192 YY_RULE_SETUP
9193 BUFFERPUTC(surf_parse_text[0]);
9194         YY_BREAK
9195 case 557:
9196 YY_RULE_SETUP
9197 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
9198         YY_BREAK
9199
9200 case 558:
9201 YY_RULE_SETUP
9202 LEAVE;
9203         YY_BREAK
9204 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
9205 case 559:
9206 YY_RULE_SETUP
9207 BUFFERPUTC(surf_parse_text[0]);
9208         YY_BREAK
9209 case YY_STATE_EOF(CDATA):
9210 FAIL("EOF in CDATA section.");
9211         YY_BREAK
9212
9213 /* Impossible rules to avoid warnings from flex(1). */
9214 /* Ideally, this should be replaced by code in flexml.pl that
9215     generates just the states not covered by other rules. */
9216
9217 case 560:
9218 /* rule 560 can match eol */
9219 YY_RULE_SETUP
9220 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
9221         YY_BREAK
9222
9223 case 561:
9224 YY_RULE_SETUP
9225 ECHO;
9226         YY_BREAK
9227 case YY_STATE_EOF(INITIAL):
9228 case YY_STATE_EOF(S_surfxml_AS_2):
9229 case YY_STATE_EOF(S_surfxml_AS_5):
9230 case YY_STATE_EOF(S_surfxml_AS_7):
9231 case YY_STATE_EOF(S_surfxml_ASroute_1):
9232 case YY_STATE_EOF(S_surfxml_bypassASroute_1):
9233 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
9234 case YY_STATE_EOF(S_surfxml_cluster_1):
9235 case YY_STATE_EOF(S_surfxml_config_1):
9236 case YY_STATE_EOF(S_surfxml_host_1):
9237 case YY_STATE_EOF(S_surfxml_include_1):
9238 case YY_STATE_EOF(S_surfxml_link_1):
9239 case YY_STATE_EOF(ROOT_surfxml_platform):
9240 case YY_STATE_EOF(S_surfxml_platform_2):
9241 case YY_STATE_EOF(S_surfxml_platform_5):
9242 case YY_STATE_EOF(S_surfxml_platform_7):
9243 case YY_STATE_EOF(S_surfxml_process_1):
9244 case YY_STATE_EOF(S_surfxml_route_1):
9245 case YY_STATE_EOF(S_surfxml_storage_1):
9246 case YY_STATE_EOF(S_surfxml_storage___type_1):
9247 case YY_STATE_EOF(IMPOSSIBLE):
9248         yyterminate();
9249
9250         case YY_END_OF_BUFFER:
9251                 {
9252                 /* Amount of text matched not including the EOB char. */
9253                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
9254
9255                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
9256                 *yy_cp = (yy_hold_char);
9257                 YY_RESTORE_YY_MORE_OFFSET
9258
9259                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
9260                         {
9261                         /* We're scanning a new file or input source.  It's
9262                          * possible that this happened because the user
9263                          * just pointed surf_parse_in at a new source and called
9264                          * surf_parse_lex().  If so, then we have to assure
9265                          * consistency between YY_CURRENT_BUFFER and our
9266                          * globals.  Here is the right place to do so, because
9267                          * this is the first action (other than possibly a
9268                          * back-up) that will match for the new input source.
9269                          */
9270                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9271                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
9272                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
9273                         }
9274
9275                 /* Note that here we test for yy_c_buf_p "<=" to the position
9276                  * of the first EOB in the buffer, since yy_c_buf_p will
9277                  * already have been incremented past the NUL character
9278                  * (since all states make transitions on EOB to the
9279                  * end-of-buffer state).  Contrast this with the test
9280                  * in input().
9281                  */
9282                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9283                         { /* This was really a NUL. */
9284                         yy_state_type yy_next_state;
9285
9286                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
9287
9288                         yy_current_state = yy_get_previous_state(  );
9289
9290                         /* Okay, we're now positioned to make the NUL
9291                          * transition.  We couldn't have
9292                          * yy_get_previous_state() go ahead and do it
9293                          * for us because it doesn't know how to deal
9294                          * with the possibility of jamming (and we don't
9295                          * want to build jamming into it because then it
9296                          * will run more slowly).
9297                          */
9298
9299                         yy_next_state = yy_try_NUL_trans( yy_current_state );
9300
9301                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9302
9303                         if ( yy_next_state )
9304                                 {
9305                                 /* Consume the NUL. */
9306                                 yy_cp = ++(yy_c_buf_p);
9307                                 yy_current_state = yy_next_state;
9308                                 goto yy_match;
9309                                 }
9310
9311                         else
9312                                 {
9313                                 yy_cp = (yy_c_buf_p);
9314                                 goto yy_find_action;
9315                                 }
9316                         }
9317
9318                 else switch ( yy_get_next_buffer(  ) )
9319                         {
9320                         case EOB_ACT_END_OF_FILE:
9321                                 {
9322                                 (yy_did_buffer_switch_on_eof) = 0;
9323
9324                                 if ( surf_parse_wrap( ) )
9325                                         {
9326                                         /* Note: because we've taken care in
9327                                          * yy_get_next_buffer() to have set up
9328                                          * surf_parse_text, we can now set up
9329                                          * yy_c_buf_p so that if some total
9330                                          * hoser (like flex itself) wants to
9331                                          * call the scanner after we return the
9332                                          * YY_NULL, it'll still work - another
9333                                          * YY_NULL will get returned.
9334                                          */
9335                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
9336
9337                                         yy_act = YY_STATE_EOF(YY_START);
9338                                         goto do_action;
9339                                         }
9340
9341                                 else
9342                                         {
9343                                         if ( ! (yy_did_buffer_switch_on_eof) )
9344                                                 YY_NEW_FILE;
9345                                         }
9346                                 break;
9347                                 }
9348
9349                         case EOB_ACT_CONTINUE_SCAN:
9350                                 (yy_c_buf_p) =
9351                                         (yytext_ptr) + yy_amount_of_matched_text;
9352
9353                                 yy_current_state = yy_get_previous_state(  );
9354
9355                                 yy_cp = (yy_c_buf_p);
9356                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9357                                 goto yy_match;
9358
9359                         case EOB_ACT_LAST_MATCH:
9360                                 (yy_c_buf_p) =
9361                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
9362
9363                                 yy_current_state = yy_get_previous_state(  );
9364
9365                                 yy_cp = (yy_c_buf_p);
9366                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9367                                 goto yy_find_action;
9368                         }
9369                 break;
9370                 }
9371
9372         default:
9373                 YY_FATAL_ERROR(
9374                         "fatal flex scanner internal error--no action found" );
9375         } /* end of action switch */
9376                 } /* end of scanning one token */
9377         } /* end of user's declarations */
9378 } /* end of surf_parse_lex */
9379
9380 /* yy_get_next_buffer - try to read in a new buffer
9381  *
9382  * Returns a code representing an action:
9383  *      EOB_ACT_LAST_MATCH -
9384  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
9385  *      EOB_ACT_END_OF_FILE - end of file
9386  */
9387 static int yy_get_next_buffer (void)
9388 {
9389         char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
9390         char *source = (yytext_ptr);
9391         int number_to_move, i;
9392         int ret_val;
9393
9394         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
9395                 YY_FATAL_ERROR(
9396                 "fatal flex scanner internal error--end of buffer missed" );
9397
9398         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
9399                 { /* Don't try to fill the buffer, so this is an EOF. */
9400                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
9401                         {
9402                         /* We matched a single character, the EOB, so
9403                          * treat this as a final EOF.
9404                          */
9405                         return EOB_ACT_END_OF_FILE;
9406                         }
9407
9408                 else
9409                         {
9410                         /* We matched some text prior to the EOB, first
9411                          * process it.
9412                          */
9413                         return EOB_ACT_LAST_MATCH;
9414                         }
9415                 }
9416
9417         /* Try to read more data. */
9418
9419         /* First move last chars to start of buffer. */
9420         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
9421
9422         for ( i = 0; i < number_to_move; ++i )
9423                 *(dest++) = *(source++);
9424
9425         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
9426                 /* don't do the read, it's not guaranteed to return an EOF,
9427                  * just force an EOF
9428                  */
9429                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
9430
9431         else
9432                 {
9433                         yy_size_t num_to_read =
9434                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
9435
9436                 while ( num_to_read <= 0 )
9437                         { /* Not enough room in the buffer - grow it. */
9438
9439                         /* just a shorter name for the current buffer */
9440                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
9441
9442                         int yy_c_buf_p_offset =
9443                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
9444
9445                         if ( b->yy_is_our_buffer )
9446                                 {
9447                                 yy_size_t new_size = b->yy_buf_size * 2;
9448
9449                                 if ( new_size <= 0 )
9450                                         b->yy_buf_size += b->yy_buf_size / 8;
9451                                 else
9452                                         b->yy_buf_size *= 2;
9453
9454                                 b->yy_ch_buf = (char *)
9455                                         /* Include room in for 2 EOB chars. */
9456                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
9457                                 }
9458                         else
9459                                 /* Can't grow it, we don't own it. */
9460                                 b->yy_ch_buf = 0;
9461
9462                         if ( ! b->yy_ch_buf )
9463                                 YY_FATAL_ERROR(
9464                                 "fatal error - scanner input buffer overflow" );
9465
9466                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
9467
9468                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
9469                                                 number_to_move - 1;
9470
9471                         }
9472
9473                 if ( num_to_read > YY_READ_BUF_SIZE )
9474                         num_to_read = YY_READ_BUF_SIZE;
9475
9476                 /* Read in more data. */
9477                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
9478                         (yy_n_chars), num_to_read );
9479
9480                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9481                 }
9482
9483         if ( (yy_n_chars) == 0 )
9484                 {
9485                 if ( number_to_move == YY_MORE_ADJ )
9486                         {
9487                         ret_val = EOB_ACT_END_OF_FILE;
9488                         surf_parse_restart(surf_parse_in  );
9489                         }
9490
9491                 else
9492                         {
9493                         ret_val = EOB_ACT_LAST_MATCH;
9494                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
9495                                 YY_BUFFER_EOF_PENDING;
9496                         }
9497                 }
9498
9499         else
9500                 ret_val = EOB_ACT_CONTINUE_SCAN;
9501
9502         if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
9503                 /* Extend the array by 50%, plus the number we really need. */
9504                 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
9505                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
9506                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
9507                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
9508         }
9509
9510         (yy_n_chars) += number_to_move;
9511         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
9512         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
9513
9514         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
9515
9516         return ret_val;
9517 }
9518
9519 /* yy_get_previous_state - get the state just before the EOB char was reached */
9520
9521     static yy_state_type yy_get_previous_state (void)
9522 {
9523         yy_state_type yy_current_state;
9524         char *yy_cp;
9525     
9526         yy_current_state = (yy_start);
9527
9528         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
9529                 {
9530                 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
9531                 if ( yy_accept[yy_current_state] )
9532                         {
9533                         (yy_last_accepting_state) = yy_current_state;
9534                         (yy_last_accepting_cpos) = yy_cp;
9535                         }
9536                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9537                         {
9538                         yy_current_state = (int) yy_def[yy_current_state];
9539                         if ( yy_current_state >= 3330 )
9540                                 yy_c = yy_meta[(unsigned int) yy_c];
9541                         }
9542                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
9543                 }
9544
9545         return yy_current_state;
9546 }
9547
9548 /* yy_try_NUL_trans - try to make a transition on the NUL character
9549  *
9550  * synopsis
9551  *      next_state = yy_try_NUL_trans( current_state );
9552  */
9553     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
9554 {
9555         int yy_is_jam;
9556         char *yy_cp = (yy_c_buf_p);
9557
9558         YY_CHAR yy_c = 1;
9559         if ( yy_accept[yy_current_state] )
9560                 {
9561                 (yy_last_accepting_state) = yy_current_state;
9562                 (yy_last_accepting_cpos) = yy_cp;
9563                 }
9564         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9565                 {
9566                 yy_current_state = (int) yy_def[yy_current_state];
9567                 if ( yy_current_state >= 3330 )
9568                         yy_c = yy_meta[(unsigned int) yy_c];
9569                 }
9570         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
9571         yy_is_jam = (yy_current_state == 3329);
9572
9573                 return yy_is_jam ? 0 : yy_current_state;
9574 }
9575
9576 #ifndef YY_NO_INPUT
9577 #ifdef __cplusplus
9578     static int yyinput (void)
9579 #else
9580     static int input  (void)
9581 #endif
9582
9583 {
9584         int c;
9585     
9586         *(yy_c_buf_p) = (yy_hold_char);
9587
9588         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
9589                 {
9590                 /* yy_c_buf_p now points to the character we want to return.
9591                  * If this occurs *before* the EOB characters, then it's a
9592                  * valid NUL; if not, then we've hit the end of the buffer.
9593                  */
9594                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9595                         /* This was really a NUL. */
9596                         *(yy_c_buf_p) = '\0';
9597
9598                 else
9599                         { /* need more input */
9600                         yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
9601                         ++(yy_c_buf_p);
9602
9603                         switch ( yy_get_next_buffer(  ) )
9604                                 {
9605                                 case EOB_ACT_LAST_MATCH:
9606                                         /* This happens because yy_g_n_b()
9607                                          * sees that we've accumulated a
9608                                          * token and flags that we need to
9609                                          * try matching the token before
9610                                          * proceeding.  But for input(),
9611                                          * there's no matching to consider.
9612                                          * So convert the EOB_ACT_LAST_MATCH
9613                                          * to EOB_ACT_END_OF_FILE.
9614                                          */
9615
9616                                         /* Reset buffer status. */
9617                                         surf_parse_restart(surf_parse_in );
9618
9619                                         /*FALLTHROUGH*/
9620
9621                                 case EOB_ACT_END_OF_FILE:
9622                                         {
9623                                         if ( surf_parse_wrap( ) )
9624                                                 return EOF;
9625
9626                                         if ( ! (yy_did_buffer_switch_on_eof) )
9627                                                 YY_NEW_FILE;
9628 #ifdef __cplusplus
9629                                         return yyinput();
9630 #else
9631                                         return input();
9632 #endif
9633                                         }
9634
9635                                 case EOB_ACT_CONTINUE_SCAN:
9636                                         (yy_c_buf_p) = (yytext_ptr) + offset;
9637                                         break;
9638                                 }
9639                         }
9640                 }
9641
9642         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
9643         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
9644         (yy_hold_char) = *++(yy_c_buf_p);
9645
9646         if ( c == '\n' )
9647                    
9648     surf_parse_lineno++;
9649 ;
9650
9651         return c;
9652 }
9653 #endif  /* ifndef YY_NO_INPUT */
9654
9655 /** Immediately switch to a different input stream.
9656  * @param input_file A readable stream.
9657  * 
9658  * @note This function does not reset the start condition to @c INITIAL .
9659  */
9660     void surf_parse_restart  (FILE * input_file )
9661 {
9662     
9663         if ( ! YY_CURRENT_BUFFER ){
9664         surf_parse_ensure_buffer_stack ();
9665                 YY_CURRENT_BUFFER_LVALUE =
9666             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
9667         }
9668
9669         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
9670         surf_parse__load_buffer_state( );
9671 }
9672
9673 /** Switch to a different input buffer.
9674  * @param new_buffer The new input buffer.
9675  * 
9676  */
9677     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
9678 {
9679     
9680         /* TODO. We should be able to replace this entire function body
9681          * with
9682          *              surf_parse_pop_buffer_state();
9683          *              surf_parse_push_buffer_state(new_buffer);
9684      */
9685         surf_parse_ensure_buffer_stack ();
9686         if ( YY_CURRENT_BUFFER == new_buffer )
9687                 return;
9688
9689         if ( YY_CURRENT_BUFFER )
9690                 {
9691                 /* Flush out information for old buffer. */
9692                 *(yy_c_buf_p) = (yy_hold_char);
9693                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
9694                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9695                 }
9696
9697         YY_CURRENT_BUFFER_LVALUE = new_buffer;
9698         surf_parse__load_buffer_state( );
9699
9700         /* We don't actually know whether we did this switch during
9701          * EOF (surf_parse_wrap()) processing, but the only time this flag
9702          * is looked at is after surf_parse_wrap() is called, so it's safe
9703          * to go ahead and always set it.
9704          */
9705         (yy_did_buffer_switch_on_eof) = 1;
9706 }
9707
9708 static void surf_parse__load_buffer_state  (void)
9709 {
9710         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9711         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
9712         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
9713         (yy_hold_char) = *(yy_c_buf_p);
9714 }
9715
9716 /** Allocate and initialize an input buffer state.
9717  * @param file A readable stream.
9718  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
9719  * 
9720  * @return the allocated buffer state.
9721  */
9722     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
9723 {
9724         YY_BUFFER_STATE b;
9725     
9726         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
9727         if ( ! b )
9728                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
9729
9730         b->yy_buf_size = size;
9731
9732         /* yy_ch_buf has to be 2 characters longer than the size given because
9733          * we need to put in 2 end-of-buffer characters.
9734          */
9735         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
9736         if ( ! b->yy_ch_buf )
9737                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
9738
9739         b->yy_is_our_buffer = 1;
9740
9741         surf_parse__init_buffer(b,file );
9742
9743         return b;
9744 }
9745
9746 /** Destroy the buffer.
9747  * @param b a buffer created with surf_parse__create_buffer()
9748  * 
9749  */
9750     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
9751 {
9752     
9753         if ( ! b )
9754                 return;
9755
9756         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
9757                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
9758
9759         if ( b->yy_is_our_buffer )
9760                 surf_parse_free((void *) b->yy_ch_buf  );
9761
9762         surf_parse_free((void *) b  );
9763 }
9764
9765 /* Initializes or reinitializes a buffer.
9766  * This function is sometimes called more than once on the same buffer,
9767  * such as during a surf_parse_restart() or at EOF.
9768  */
9769     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
9770
9771 {
9772         int oerrno = errno;
9773     
9774         surf_parse__flush_buffer(b );
9775
9776         b->yy_input_file = file;
9777         b->yy_fill_buffer = 1;
9778
9779     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
9780      * called from surf_parse_restart() or through yy_get_next_buffer.
9781      * In that case, we don't want to reset the lineno or column.
9782      */
9783     if (b != YY_CURRENT_BUFFER){
9784         b->yy_bs_lineno = 1;
9785         b->yy_bs_column = 0;
9786     }
9787
9788         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
9789     
9790         errno = oerrno;
9791 }
9792
9793 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
9794  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
9795  * 
9796  */
9797     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
9798 {
9799         if ( ! b )
9800                 return;
9801
9802         b->yy_n_chars = 0;
9803
9804         /* We always need two end-of-buffer characters.  The first causes
9805          * a transition to the end-of-buffer state.  The second causes
9806          * a jam in that state.
9807          */
9808         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
9809         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
9810
9811         b->yy_buf_pos = &b->yy_ch_buf[0];
9812
9813         b->yy_at_bol = 1;
9814         b->yy_buffer_status = YY_BUFFER_NEW;
9815
9816         if ( b == YY_CURRENT_BUFFER )
9817                 surf_parse__load_buffer_state( );
9818 }
9819
9820 /** Pushes the new state onto the stack. The new state becomes
9821  *  the current state. This function will allocate the stack
9822  *  if necessary.
9823  *  @param new_buffer The new state.
9824  *  
9825  */
9826 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
9827 {
9828         if (new_buffer == NULL)
9829                 return;
9830
9831         surf_parse_ensure_buffer_stack();
9832
9833         /* This block is copied from surf_parse__switch_to_buffer. */
9834         if ( YY_CURRENT_BUFFER )
9835                 {
9836                 /* Flush out information for old buffer. */
9837                 *(yy_c_buf_p) = (yy_hold_char);
9838                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
9839                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9840                 }
9841
9842         /* Only push if top exists. Otherwise, replace top. */
9843         if (YY_CURRENT_BUFFER)
9844                 (yy_buffer_stack_top)++;
9845         YY_CURRENT_BUFFER_LVALUE = new_buffer;
9846
9847         /* copied from surf_parse__switch_to_buffer. */
9848         surf_parse__load_buffer_state( );
9849         (yy_did_buffer_switch_on_eof) = 1;
9850 }
9851
9852 /** Removes and deletes the top of the stack, if present.
9853  *  The next element becomes the new top.
9854  *  
9855  */
9856 void surf_parse_pop_buffer_state (void)
9857 {
9858         if (!YY_CURRENT_BUFFER)
9859                 return;
9860
9861         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
9862         YY_CURRENT_BUFFER_LVALUE = NULL;
9863         if ((yy_buffer_stack_top) > 0)
9864                 --(yy_buffer_stack_top);
9865
9866         if (YY_CURRENT_BUFFER) {
9867                 surf_parse__load_buffer_state( );
9868                 (yy_did_buffer_switch_on_eof) = 1;
9869         }
9870 }
9871
9872 /* Allocates the stack if it does not exist.
9873  *  Guarantees space for at least one push.
9874  */
9875 static void surf_parse_ensure_buffer_stack (void)
9876 {
9877         yy_size_t num_to_alloc;
9878     
9879         if (!(yy_buffer_stack)) {
9880
9881                 /* First allocation is just for 2 elements, since we don't know if this
9882                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
9883                  * immediate realloc on the next call.
9884          */
9885                 num_to_alloc = 1;
9886                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
9887                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
9888                                                                 );
9889                 if ( ! (yy_buffer_stack) )
9890                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
9891                                                                   
9892                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
9893                                 
9894                 (yy_buffer_stack_max) = num_to_alloc;
9895                 (yy_buffer_stack_top) = 0;
9896                 return;
9897         }
9898
9899         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
9900
9901                 /* Increase the buffer to prepare for a possible push. */
9902                 int grow_size = 8 /* arbitrary grow size */;
9903
9904                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
9905                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
9906                                                                 ((yy_buffer_stack),
9907                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
9908                                                                 );
9909                 if ( ! (yy_buffer_stack) )
9910                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
9911
9912                 /* zero only the new slots.*/
9913                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
9914                 (yy_buffer_stack_max) = num_to_alloc;
9915         }
9916 }
9917
9918 /** Setup the input buffer state to scan directly from a user-specified character buffer.
9919  * @param base the character buffer
9920  * @param size the size in bytes of the character buffer
9921  * 
9922  * @return the newly allocated buffer state object. 
9923  */
9924 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
9925 {
9926         YY_BUFFER_STATE b;
9927     
9928         if ( size < 2 ||
9929              base[size-2] != YY_END_OF_BUFFER_CHAR ||
9930              base[size-1] != YY_END_OF_BUFFER_CHAR )
9931                 /* They forgot to leave room for the EOB's. */
9932                 return 0;
9933
9934         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
9935         if ( ! b )
9936                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
9937
9938         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
9939         b->yy_buf_pos = b->yy_ch_buf = base;
9940         b->yy_is_our_buffer = 0;
9941         b->yy_input_file = 0;
9942         b->yy_n_chars = b->yy_buf_size;
9943         b->yy_is_interactive = 0;
9944         b->yy_at_bol = 1;
9945         b->yy_fill_buffer = 0;
9946         b->yy_buffer_status = YY_BUFFER_NEW;
9947
9948         surf_parse__switch_to_buffer(b  );
9949
9950         return b;
9951 }
9952
9953 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
9954  * scan from a @e copy of @a str.
9955  * @param yystr a NUL-terminated string to scan
9956  * 
9957  * @return the newly allocated buffer state object.
9958  * @note If you want to scan bytes that may contain NUL values, then use
9959  *       surf_parse__scan_bytes() instead.
9960  */
9961 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
9962 {
9963     
9964         return surf_parse__scan_bytes(yystr,strlen(yystr) );
9965 }
9966
9967 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
9968  * scan from a @e copy of @a bytes.
9969  * @param yybytes the byte buffer to scan
9970  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
9971  * 
9972  * @return the newly allocated buffer state object.
9973  */
9974 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
9975 {
9976         YY_BUFFER_STATE b;
9977         char *buf;
9978         yy_size_t n;
9979         yy_size_t i;
9980     
9981         /* Get memory for full buffer, including space for trailing EOB's. */
9982         n = _yybytes_len + 2;
9983         buf = (char *) surf_parse_alloc(n  );
9984         if ( ! buf )
9985                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
9986
9987         for ( i = 0; i < _yybytes_len; ++i )
9988                 buf[i] = yybytes[i];
9989
9990         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
9991
9992         b = surf_parse__scan_buffer(buf,n );
9993         if ( ! b )
9994                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
9995
9996         /* It's okay to grow etc. this buffer, and we should throw it
9997          * away when we're done.
9998          */
9999         b->yy_is_our_buffer = 1;
10000
10001         return b;
10002 }
10003
10004     static void yy_push_state (int  new_state )
10005 {
10006         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
10007                 {
10008                 yy_size_t new_size;
10009
10010                 (yy_start_stack_depth) += YY_START_STACK_INCR;
10011                 new_size = (yy_start_stack_depth) * sizeof( int );
10012
10013                 if ( ! (yy_start_stack) )
10014                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
10015
10016                 else
10017                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
10018
10019                 if ( ! (yy_start_stack) )
10020                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
10021                 }
10022
10023         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
10024
10025         BEGIN(new_state);
10026 }
10027
10028     static void yy_pop_state  (void)
10029 {
10030         if ( --(yy_start_stack_ptr) < 0 )
10031                 YY_FATAL_ERROR( "start-condition stack underflow" );
10032
10033         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
10034 }
10035
10036 #ifndef YY_EXIT_FAILURE
10037 #define YY_EXIT_FAILURE 2
10038 #endif
10039
10040 static void yy_fatal_error (yyconst char* msg )
10041 {
10042         (void) fprintf( stderr, "%s\n", msg );
10043         exit( YY_EXIT_FAILURE );
10044 }
10045
10046 /* Redefine yyless() so it works in section 3 code. */
10047
10048 #undef yyless
10049 #define yyless(n) \
10050         do \
10051                 { \
10052                 /* Undo effects of setting up surf_parse_text. */ \
10053         int yyless_macro_arg = (n); \
10054         YY_LESS_LINENO(yyless_macro_arg);\
10055                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
10056                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
10057                 (yy_hold_char) = *(yy_c_buf_p); \
10058                 *(yy_c_buf_p) = '\0'; \
10059                 surf_parse_leng = yyless_macro_arg; \
10060                 } \
10061         while ( 0 )
10062
10063 /* Accessor  methods (get/set functions) to struct members. */
10064
10065 /** Get the current line number.
10066  * 
10067  */
10068 int surf_parse_get_lineno  (void)
10069 {
10070         
10071     return surf_parse_lineno;
10072 }
10073
10074 /** Get the input stream.
10075  * 
10076  */
10077 FILE *surf_parse_get_in  (void)
10078 {
10079         return surf_parse_in;
10080 }
10081
10082 /** Get the output stream.
10083  * 
10084  */
10085 FILE *surf_parse_get_out  (void)
10086 {
10087         return surf_parse_out;
10088 }
10089
10090 /** Get the length of the current token.
10091  * 
10092  */
10093 yy_size_t surf_parse_get_leng  (void)
10094 {
10095         return surf_parse_leng;
10096 }
10097
10098 /** Get the current token.
10099  * 
10100  */
10101
10102 char *surf_parse_get_text  (void)
10103 {
10104         return surf_parse_text;
10105 }
10106
10107 /** Set the current line number.
10108  * @param line_number
10109  * 
10110  */
10111 void surf_parse_set_lineno (int  line_number )
10112 {
10113     
10114     surf_parse_lineno = line_number;
10115 }
10116
10117 /** Set the input stream. This does not discard the current
10118  * input buffer.
10119  * @param in_str A readable stream.
10120  * 
10121  * @see surf_parse__switch_to_buffer
10122  */
10123 void surf_parse_set_in (FILE *  in_str )
10124 {
10125         surf_parse_in = in_str ;
10126 }
10127
10128 void surf_parse_set_out (FILE *  out_str )
10129 {
10130         surf_parse_out = out_str ;
10131 }
10132
10133 int surf_parse_get_debug  (void)
10134 {
10135         return surf_parse__flex_debug;
10136 }
10137
10138 void surf_parse_set_debug (int  bdebug )
10139 {
10140         surf_parse__flex_debug = bdebug ;
10141 }
10142
10143 static int yy_init_globals (void)
10144 {
10145         /* Initialization is the same as for the non-reentrant scanner.
10146      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
10147      */
10148
10149     /* We do not touch surf_parse_lineno unless the option is enabled. */
10150     surf_parse_lineno =  1;
10151     
10152     (yy_buffer_stack) = 0;
10153     (yy_buffer_stack_top) = 0;
10154     (yy_buffer_stack_max) = 0;
10155     (yy_c_buf_p) = (char *) 0;
10156     (yy_init) = 0;
10157     (yy_start) = 0;
10158
10159     (yy_start_stack_ptr) = 0;
10160     (yy_start_stack_depth) = 0;
10161     (yy_start_stack) =  NULL;
10162
10163 /* Defined in main.c */
10164 #ifdef YY_STDINIT
10165     surf_parse_in = stdin;
10166     surf_parse_out = stdout;
10167 #else
10168     surf_parse_in = (FILE *) 0;
10169     surf_parse_out = (FILE *) 0;
10170 #endif
10171
10172     /* For future reference: Set errno on error, since we are called by
10173      * surf_parse_lex_init()
10174      */
10175     return 0;
10176 }
10177
10178 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
10179 int surf_parse_lex_destroy  (void)
10180 {
10181     
10182     /* Pop the buffer stack, destroying each element. */
10183         while(YY_CURRENT_BUFFER){
10184                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
10185                 YY_CURRENT_BUFFER_LVALUE = NULL;
10186                 surf_parse_pop_buffer_state();
10187         }
10188
10189         /* Destroy the stack itself. */
10190         surf_parse_free((yy_buffer_stack) );
10191         (yy_buffer_stack) = NULL;
10192
10193     /* Destroy the start condition stack. */
10194         surf_parse_free((yy_start_stack)  );
10195         (yy_start_stack) = NULL;
10196
10197     /* Reset the globals. This is important in a non-reentrant scanner so the next time
10198      * surf_parse_lex() is called, initialization will occur. */
10199     yy_init_globals( );
10200
10201     return 0;
10202 }
10203
10204 /*
10205  * Internal utility routines.
10206  */
10207
10208 #ifndef yytext_ptr
10209 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
10210 {
10211         int i;
10212         for ( i = 0; i < n; ++i )
10213                 s1[i] = s2[i];
10214 }
10215 #endif
10216
10217 #ifdef YY_NEED_STRLEN
10218 static int yy_flex_strlen (yyconst char * s )
10219 {
10220         int n;
10221         for ( n = 0; s[n]; ++n )
10222                 ;
10223
10224         return n;
10225 }
10226 #endif
10227
10228 void *surf_parse_alloc (yy_size_t  size )
10229 {
10230         return (void *) malloc( size );
10231 }
10232
10233 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
10234 {
10235         /* The cast to (char *) in the following accommodates both
10236          * implementations that use char* generic pointers, and those
10237          * that use void* generic pointers.  It works with the latter
10238          * because both ANSI C and C++ allow castless assignment from
10239          * any pointer type to void*, and deal with argument conversions
10240          * as though doing an assignment.
10241          */
10242         return (void *) realloc( (char *) ptr, size );
10243 }
10244
10245 void surf_parse_free (void * ptr )
10246 {
10247         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
10248 }
10249
10250 #define YYTABLES_NAME "yytables"
10251
10252 /* Element context stack lookup. */
10253 int surfxml_element_context(int i)
10254 {
10255   return (0<i && i<yy_start_stack_depth
10256           ? yy_start_stack[yy_start_stack_ptr - i]
10257           : 0);
10258 }
10259
10260 #ifdef FLEX_DEBUG
10261 void print_yy_stack(char* fmt, ...)
10262 {
10263   int i = 0; va_list ap; va_start(ap, fmt);
10264   vfprintf(stderr, fmt, ap);
10265   if (surfxml_statenames) {
10266       for (i=1; i<yy_start_stack_ptr; i++) {
10267           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
10268       }
10269       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
10270   }
10271   va_end(ap);
10272 }
10273
10274 void print_surfxml_bufferstack()
10275 {
10276     int i;
10277     fputs("Buffer: ", stderr);
10278     for (i = 0; i < blimit; i++) {
10279        if ( surfxml_bufferstack[i] == '\377' ) break;
10280          putc(surfxml_bufferstack[i], stderr);
10281     }
10282     putc('\n', stderr);
10283 }
10284
10285 static void debug_enter(int state, const char* statename) {
10286   yy_push_state(state);
10287   if (surf_parse__flex_debug) {
10288        print_yy_stack("--ENTER(%s) : ",statename);
10289        print_surfxml_bufferstack();
10290   }
10291 }
10292
10293 static void debug_leave(void) {
10294     if (surf_parse__flex_debug) {
10295         print_yy_stack("--LEAVE : ");
10296         print_surfxml_bufferstack();
10297     }
10298   yy_pop_state();
10299 }
10300
10301 static void debug_set(int state, const char* statename) {
10302   BEGIN(state);
10303   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
10304 }
10305 #endif
10306
10307 static void cleanup(void)
10308 {
10309     if (surfxml_statenames) {
10310         free(surfxml_statenames);
10311         surfxml_statenames = NULL;
10312     }
10313     free(surfxml_bufferstack);
10314     surfxml_bufferstack = NULL;
10315
10316     free(indexstack);
10317     indexstack = NULL;
10318 }
10319
10320 static int fail(const char* fmt, ...)
10321 {
10322     int chars_left, used;
10323     va_list ap; va_start(ap, fmt);
10324 #ifdef FLEXML_yylineno
10325     used = sprintf(flexml_err_msg,
10326                    "Invalid XML (XML input line %d, state %d): ",
10327                    surf_parse_lineno, YY_START);
10328 #else
10329     used = sprintf(flexml_err_msg,
10330                    "Invalid XML (state %d): ",
10331                    YY_START);
10332 #endif
10333     chars_left = flexml_max_err_msg_size - used - 1;
10334     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
10335     va_end(ap);
10336
10337 #ifndef FLEXML_quiet_parser
10338     /* print directly to sdterr */
10339     fprintf(stderr, "%s\n", flexml_err_msg);
10340     flexml_err_msg[0] = '\0';
10341 #endif
10342
10343     cleanup();
10344
10345     return 1;
10346 }
10347