Imported Upstream version 1.6.9p14
[debian/sudo] / lex.yy.c
1 /*      $OpenBSD: flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ */
2
3 /* A lexical scanner generated by flex */
4
5 /* Scanner skeleton version:
6  * $Header: /home/cvs/courtesan/sudo/Attic/lex.yy.c,v 1.46.2.9 2008/02/09 14:44:47 millert Exp $
7  */
8
9 #define FLEX_SCANNER
10 #define YY_FLEX_MAJOR_VERSION 2
11 #define YY_FLEX_MINOR_VERSION 5
12
13 #include <stdio.h>
14 #include <errno.h>
15
16
17 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
18 #ifdef c_plusplus
19 #ifndef __cplusplus
20 #define __cplusplus
21 #endif
22 #endif
23
24
25 #ifdef __cplusplus
26
27 #include <stdlib.h>
28 #include <unistd.h>
29
30 /* Use prototypes in function declarations. */
31 #define YY_USE_PROTOS
32
33 /* The "const" storage-class-modifier is valid. */
34 #define YY_USE_CONST
35
36 #else   /* ! __cplusplus */
37
38 #ifdef __STDC__
39
40 #define YY_USE_PROTOS
41 #define YY_USE_CONST
42
43 #endif  /* __STDC__ */
44 #endif  /* ! __cplusplus */
45
46 #ifdef __TURBOC__
47  #pragma warn -rch
48  #pragma warn -use
49 #include <io.h>
50 #include <stdlib.h>
51 #define YY_USE_CONST
52 #define YY_USE_PROTOS
53 #endif
54
55 #ifdef YY_USE_CONST
56 #define yyconst const
57 #else
58 #define yyconst
59 #endif
60
61
62 #ifdef YY_USE_PROTOS
63 #define YY_PROTO(proto) proto
64 #else
65 #define YY_PROTO(proto) ()
66 #endif
67
68 /* Returned upon end-of-file. */
69 #define YY_NULL 0
70
71 /* Promotes a possibly negative, possibly signed char to an unsigned
72  * integer for use as an array index.  If the signed char is negative,
73  * we want to instead treat it as an 8-bit unsigned char, hence the
74  * double cast.
75  */
76 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
77
78 /* Enter a start condition.  This macro really ought to take a parameter,
79  * but we do it the disgusting crufty way forced on us by the ()-less
80  * definition of BEGIN.
81  */
82 #define BEGIN yy_start = 1 + 2 *
83
84 /* Translate the current start state into a value that can be later handed
85  * to BEGIN to return to the state.  The YYSTATE alias is for lex
86  * compatibility.
87  */
88 #define YY_START ((yy_start - 1) / 2)
89 #define YYSTATE YY_START
90
91 /* Action number for EOF rule of a given start state. */
92 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
93
94 /* Special action meaning "start processing a new file". */
95 #define YY_NEW_FILE yyrestart( yyin )
96
97 #define YY_END_OF_BUFFER_CHAR 0
98
99 /* Size of default input buffer. */
100 #define YY_BUF_SIZE 16384
101
102 typedef struct yy_buffer_state *YY_BUFFER_STATE;
103
104 extern int yyleng;
105 extern FILE *yyin, *yyout;
106
107 #define EOB_ACT_CONTINUE_SCAN 0
108 #define EOB_ACT_END_OF_FILE 1
109 #define EOB_ACT_LAST_MATCH 2
110
111 /* The funky do-while in the following #define is used to turn the definition
112  * int a single C statement (which needs a semi-colon terminator).  This
113  * avoids problems with code like:
114  *
115  *      if ( condition_holds )
116  *              yyless( 5 );
117  *      else
118  *              do_something_else();
119  *
120  * Prior to using the do-while the compiler would get upset at the
121  * "else" because it interpreted the "if" statement as being all
122  * done when it reached the ';' after the yyless() call.
123  */
124
125 /* Return all but the first 'n' matched characters back to the input stream. */
126
127 #define yyless(n) \
128         do \
129                 { \
130                 /* Undo effects of setting up yytext. */ \
131                 *yy_cp = yy_hold_char; \
132                 YY_RESTORE_YY_MORE_OFFSET \
133                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
134                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
135                 } \
136         while ( 0 )
137
138 #define unput(c) yyunput( c, yytext_ptr )
139
140 /* The following is because we cannot portably get our hands on size_t
141  * (without autoconf's help, which isn't available because we want
142  * flex-generated scanners to compile on their own).
143  */
144 typedef unsigned int yy_size_t;
145
146
147 struct yy_buffer_state
148         {
149         FILE *yy_input_file;
150
151         char *yy_ch_buf;                /* input buffer */
152         char *yy_buf_pos;               /* current position in input buffer */
153
154         /* Size of input buffer in bytes, not including room for EOB
155          * characters.
156          */
157         yy_size_t yy_buf_size;
158
159         /* Number of characters read into yy_ch_buf, not including EOB
160          * characters.
161          */
162         int yy_n_chars;
163
164         /* Whether we "own" the buffer - i.e., we know we created it,
165          * and can realloc() it to grow it, and should free() it to
166          * delete it.
167          */
168         int yy_is_our_buffer;
169
170         /* Whether this is an "interactive" input source; if so, and
171          * if we're using stdio for input, then we want to use getc()
172          * instead of fread(), to make sure we stop fetching input after
173          * each newline.
174          */
175         int yy_is_interactive;
176
177         /* Whether we're considered to be at the beginning of a line.
178          * If so, '^' rules will be active on the next match, otherwise
179          * not.
180          */
181         int yy_at_bol;
182
183         /* Whether to try to fill the input buffer when we reach the
184          * end of it.
185          */
186         int yy_fill_buffer;
187
188         int yy_buffer_status;
189 #define YY_BUFFER_NEW 0
190 #define YY_BUFFER_NORMAL 1
191         /* When an EOF's been seen but there's still some text to process
192          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
193          * shouldn't try reading from the input source any more.  We might
194          * still have a bunch of tokens to match, though, because of
195          * possible backing-up.
196          *
197          * When we actually see the EOF, we change the status to "new"
198          * (via yyrestart()), so that the user can continue scanning by
199          * just pointing yyin at a new input file.
200          */
201 #define YY_BUFFER_EOF_PENDING 2
202         };
203
204 static YY_BUFFER_STATE yy_current_buffer = 0;
205
206 /* We provide macros for accessing buffer states in case in the
207  * future we want to put the buffer states in a more general
208  * "scanner state".
209  */
210 #define YY_CURRENT_BUFFER yy_current_buffer
211
212
213 /* yy_hold_char holds the character lost when yytext is formed. */
214 static char yy_hold_char;
215
216 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
217
218
219 int yyleng;
220
221 /* Points to current character in buffer. */
222 static char *yy_c_buf_p = (char *) 0;
223 static int yy_init = 1;         /* whether we need to initialize */
224 static int yy_start = 0;        /* start state number */
225
226 /* Flag which is used to allow yywrap()'s to do buffer switches
227  * instead of setting up a fresh yyin.  A bit of a hack ...
228  */
229 static int yy_did_buffer_switch_on_eof;
230
231 void yyrestart YY_PROTO(( FILE *input_file ));
232
233 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
234 void yy_load_buffer_state YY_PROTO(( void ));
235 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
236 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
237 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
238 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
239 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
240
241 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
242 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
243 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
244
245 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
246 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
247 static void yy_flex_free YY_PROTO(( void * ));
248
249 #define yy_new_buffer yy_create_buffer
250
251 #define yy_set_interactive(is_interactive) \
252         { \
253         if ( ! yy_current_buffer ) \
254                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
255         yy_current_buffer->yy_is_interactive = is_interactive; \
256         }
257
258 #define yy_set_bol(at_bol) \
259         { \
260         if ( ! yy_current_buffer ) \
261                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
262         yy_current_buffer->yy_at_bol = at_bol; \
263         }
264
265 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
266
267 typedef unsigned char YY_CHAR;
268 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
269 typedef int yy_state_type;
270 extern char *yytext;
271 #define yytext_ptr yytext
272
273 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
274 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
275 static int yy_get_next_buffer YY_PROTO(( void ));
276 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
277
278 /* Done after the current pattern has been matched and before the
279  * corresponding action - sets up yytext.
280  */
281 #define YY_DO_BEFORE_ACTION \
282         yytext_ptr = yy_bp; \
283         yyleng = (int) (yy_cp - yy_bp); \
284         yy_hold_char = *yy_cp; \
285         *yy_cp = '\0'; \
286         yy_c_buf_p = yy_cp;
287
288 #define YY_NUM_RULES 47
289 #define YY_END_OF_BUFFER 48
290 static yyconst short int yy_accept[610] =
291     {   0,
292         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
293         0,    0,    0,    0,   48,   37,   43,   42,   41,   46,
294        37,   30,   46,   37,   38,   37,   37,   37,   37,   40,
295        39,   31,   31,   31,   31,   31,   31,   46,   37,   37,
296        31,   31,   31,   31,   31,   32,   46,   32,   34,   32,
297        32,   32,   32,   32,   31,   31,   31,   31,   31,   31,
298        46,   32,   32,    1,   15,   14,   15,   14,   14,   46,
299        46,    2,    8,    7,    8,    3,    8,    4,   46,   11,
300        11,   11,   10,   11,   37,    0,   43,   41,    0,   45,
301        25,    0,   24,    0,   36,   36,    0,   37,   37,    0,
302
303        37,   37,   37,   37,    0,   28,   31,   31,   31,   31,
304        31,   31,   37,   44,   37,   37,   37,   37,   37,   37,
305        32,    0,    0,   32,   25,    0,   24,    0,   32,    0,
306        32,   32,   32,   32,   32,   32,   31,   31,   31,   31,
307        31,   31,   32,   32,    1,   15,   15,   13,   12,   13,
308         0,    2,    8,    0,    5,    6,    8,    8,   11,   11,
309        11,   11,   11,    9,    0,   37,   37,   37,   37,   37,
310         0,    0,   28,   28,   31,   31,   31,   31,   31,   31,
311        31,   37,   37,   37,   37,   37,   37,    0,   33,   32,
312        32,   32,   32,   32,   31,   31,   31,   31,   31,   31,
313
314        31,   32,    9,   37,   37,   37,   37,   37,   37,    0,
315        29,   29,   29,    0,    0,   28,   28,   28,   28,   28,
316        28,   28,   31,   31,   31,   31,   31,   31,   31,   37,
317        37,   37,   37,   32,   32,   32,   32,   32,   32,   31,
318        31,   31,   31,   31,   31,   31,   32,   37,   37,   37,
319         0,    0,   29,   29,   29,    0,   28,   28,    0,   28,
320        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
321         0,   21,   31,   31,   31,   31,   31,   37,   37,   37,
322        32,   32,   32,   31,   31,   31,   31,   31,   32,   37,
323        37,   37,   37,   37,    0,   29,    0,   28,   28,   28,
324
325         0,    0,    0,   28,   28,   28,   28,   28,   28,   28,
326        28,   28,   28,   28,   28,   28,   31,   31,   31,   31,
327        31,   37,   37,   37,   32,   32,   32,   32,   32,   31,
328        31,   31,   31,   31,   32,   26,   26,   26,    0,    0,
329        28,   28,   28,   28,   28,   28,   28,    0,    0,    0,
330         0,    0,   28,   28,   28,   28,   28,   28,   28,   28,
331        28,   28,   28,   28,   28,   28,    0,   20,   31,   31,
332         0,   19,    0,   22,   37,   37,   37,   26,   26,   26,
333        31,   31,   32,   37,   26,   26,   26,   26,    0,   28,
334         0,   28,   28,   28,   28,   28,   28,   28,   28,   28,
335
336        28,   28,    0,    0,    0,   28,   28,   28,   28,   28,
337        28,   28,   28,   28,   28,   28,   28,   28,   31,   31,
338        35,   37,   16,   32,   26,   26,   26,   26,   31,   31,
339        32,   37,   27,   27,   27,   28,    0,    0,    0,   28,
340        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
341        28,   28,    0,    0,    0,    0,    0,   28,   28,   28,
342        28,   28,   28,   28,   28,    0,   18,    0,   23,   37,
343        16,   32,   27,   27,   27,   37,   37,   27,   27,   27,
344        27,   27,    0,    0,    0,    0,    0,   28,   28,   28,
345        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
346
347        28,   28,   28,   28,   28,   28,   28,   17,   32,   32,
348        27,   27,   27,   27,   27,   37,   37,   37,   27,   27,
349         0,    0,    0,   28,   28,   28,   28,   28,   28,   28,
350        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
351        28,   32,   32,   32,   27,   27,   37,   37,   37,   37,
352        37,    0,    0,    0,    0,    0,   28,   28,   28,   28,
353        28,   28,   28,   28,   32,   32,   32,   32,   32,   37,
354        37,   37,   28,   28,   28,   28,   28,   28,   32,   32,
355        32,   37,   37,   37,   37,   37,   28,   28,   28,   28,
356        28,   32,   32,   32,   32,   32,   26,   26,   26,   26,
357
358        26,   26,   26,   26,   26,   26,   26,   26,    0
359     } ;
360
361 static yyconst int yy_ec[256] =
362     {   0,
363         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
364         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
365         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
366         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
367         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
368        19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
369        25,   26,   10,   26,   27,   28,   29,   30,   31,   28,
370        32,   33,   32,   32,   32,   32,   32,   34,   35,   36,
371        32,   37,   38,   39,   40,   41,   42,   43,   32,   32,
372        10,   44,   10,    1,   45,    1,   46,   47,   47,   48,
373
374        49,   50,   51,   51,   52,   51,   51,   53,   54,   55,
375        56,   51,   51,   57,   58,   59,   60,   51,   51,   51,
376        51,   51,    1,    1,    1,    1,    1,    1,    1,    1,
377         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
378         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
379         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
380         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
381         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
382         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
383         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
384
385         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
386         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
387         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
388         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
389         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
390         1,    1,    1,    1,    1
391     } ;
392
393 static yyconst int yy_meta[61] =
394     {   0,
395         1,    2,    3,    4,    5,    6,    1,    4,    4,    1,
396         1,    2,    7,    8,    9,   10,   10,   10,   10,   10,
397        10,   10,   10,   11,    6,    4,   12,   12,   12,   12,
398        12,    1,    1,    1,    1,    1,    1,    1,    1,    1,
399         1,    1,    1,   13,   14,   15,   15,   15,   15,   15,
400        14,   14,   14,   14,   14,   14,   14,   14,   14,   14
401     } ;
402
403 static yyconst short int yy_base[681] =
404     {   0,
405         0,   32,   72,    0,   62,  131,  132,  139,  182,  241,
406       300,  343,  145,  150, 3100, 3055, 3096, 3790, 3093, 3093,
407      3051, 3790, 3790, 3028, 3790,  161,  374,  179,  161, 3038,
408      3790,  424, 3009,  469, 3005, 3012, 3007,  518,  190,  102,
409      2983, 2987, 2957, 2943, 2935, 2939,  201, 2929, 3790, 2919,
410       306,  531,  232,  240,  581, 2910,  626, 2882, 2881, 2867,
411       675,  248,  114, 2888,    0, 3790, 2875,    0, 3790,  314,
412        64,    0, 2825, 3790,  115, 3790,  146, 3790,  158, 2805,
413       171,  275, 3790,  278, 2804,  355, 2845, 2842, 2842, 3790,
414      2794,  684, 2778,  709,  325, 2767,  718,  355,  729, 2777,
415
416      2769,  390,  485,  256, 2749,  151,  764,    0, 2732,  292,
417      2715, 2660,  338, 3790,  124,  148,  232,  263,  287,  316,
418      2652,  794, 2692,    0, 2644,  819, 2633,  828,  530,  853,
419       549,  864, 2645,  642,  745,  493,  899,    0, 2618,  497,
420      2599, 2597,  382,  318, 2633,    0, 2630,  306, 3790, 3790,
421       333,    0, 2566,  700, 3790, 3790, 2524,  492, 2508,  384,
422       529,  339,  692, 2549,  844,  936,  880,  650,  967, 2535,
423      2509, 1002,  201, 1038, 1073, 2503, 2488, 2471, 2453, 2445,
424      2445,  371,  388, 2419,  219,  147,  373, 2459, 3790, 1110,
425       915,  753, 1141, 2433, 1176, 2405, 2372, 2387, 2327, 2291,
426
427      2283,  481, 2311,  947,  356,    0,    0,  330,  539, 2288,
428      2271,  955,  687, 2270, 2236,  508,  983, 1213, 1018,  854,
429      1249, 1056, 2222,  582, 2214, 2200, 2188, 2182, 2158,  370,
430       405,  695,  532, 1090,  372,    0,    0,  518,  563, 2167,
431       683, 2128, 2119, 2102, 2097, 2089,  679, 1121, 1159, 1194,
432      2098, 2097, 1129, 2096, 2080, 2079, 2033,  665, 1229,  717,
433      1265,  775, 1286,    0, 1304, 1323, 1339,  888, 1359, 1377,
434       714, 3790, 2027, 2007, 2007, 2007, 1962,  541,  502,  638,
435      1396, 1406, 1416, 1973, 1951, 1957, 1927, 1915,  753, 1424,
436       791, 1434, 1444, 1455, 1931, 1930, 1929, 1927, 1484,  792,
437
438      1936, 1884, 1463,  793,  824,  827, 1471,  852, 1521,    0,
439      1502, 1558, 1537,  923, 1594, 1576,  802, 1855, 1862,  958,
440      1040,   19,  771,  670, 1610,  819, 1639, 1649, 1631, 1081,
441      1839, 1846, 1112, 1251, 1019, 1661, 1669,  991, 1855, 1819,
442      1801, 1677, 1692, 1708, 1273, 1727, 1745, 1762, 1810, 1773,
443      1757, 1772,  834, 1101, 1387, 1622, 1778, 1788, 1799,    0,
444      1817, 1836, 1788, 1347, 1872, 1854, 1324, 3790, 1723, 1711,
445      1325, 3790, 1522, 3790,  984, 1122,  696, 1908, 1888, 1545,
446      1688, 1660, 1038, 1916,  845,    0,    0,  629, 1615, 1614,
447      1924,  313, 1945,  937, 1955,    0, 1966, 1977, 1993, 1716,
448
449      2012, 2030, 1621, 1620, 2049, 1141, 1185, 1934, 2040, 2057,
450      2067, 2078,    0, 2096, 2115, 2067, 1896, 2133, 1523, 1837,
451      1576,  844, 1194, 2150, 1377,    0,    0,  675, 1838, 1957,
452      1575, 2181, 2158, 2166,  907, 1579, 1570, 1569, 2191, 1505,
453      1435, 1577, 2199, 1650, 2212,    0, 2223, 2234, 2250, 2001,
454      2269, 2287, 2304, 1496, 1482, 1464, 2314, 1745, 1854, 2322,
455       978, 1030, 2333,    0, 2324, 1968, 3790, 2116, 3790, 1451,
456      3790, 2343, 2351, 2359, 1167, 2372, 1483, 2380, 2388, 2401,
457      2409, 2419, 2422, 1456, 1417, 1390, 2432, 1379, 1361, 1693,
458      2134, 2438, 2182, 2450,    0, 2461, 2472, 2488, 2258, 2507,
459
460      2525, 1369, 1315, 2543, 2287, 1259, 1032, 1214, 2553, 1484,
461      2561, 2569, 2577, 2585, 2595, 2600, 2610, 2624, 2634, 2368,
462      1225, 1172, 2644, 1143, 1093, 2235, 2473, 2652, 2526, 2662,
463         0, 2673, 2684, 2700, 2496, 2721, 1012,  947,  849, 2730,
464       832, 2738, 2748, 2758, 2768, 2692, 2776, 1659, 2786, 2796,
465      2807, 2813,  815,  808,  795, 2823,  764,  729, 2601,  723,
466       550, 2836,    0, 1058, 2844, 2146, 2854, 2864, 2875, 2883,
467      2893, 2904, 2912, 2920, 2928,  533,    0,  419, 2938, 2948,
468      2958, 2968, 2179, 2978, 2988, 2998, 3790, 3004, 3012, 2708,
469      3790, 3027, 2369, 3037, 3047, 3057, 3063, 3071, 3100, 3108,
470
471      3116, 3145,  240, 3153, 3137,  123, 3182, 3166, 3790, 3226,
472      3241, 3256, 3271, 3286, 3301, 3316, 3331, 3346, 3352, 3367,
473      3382, 3397, 3412, 3427, 3442, 1084, 3457, 3472, 3487, 3502,
474      3508, 3515, 3530, 1108, 3536, 3543, 3549, 3555, 3561, 3568,
475      3574, 3580, 3586, 3593, 3601, 3607, 3613, 3619, 1211, 1246,
476      3626, 3634, 3640, 3646, 3653, 3661, 3667, 3675, 1247, 1321,
477      3682, 3690, 1592, 1694, 3696, 3704, 3711, 3719, 3725, 3733,
478      1192, 1302, 3740, 1762, 1834, 3746, 3754, 3760, 3768, 3774
479     } ;
480
481 static yyconst short int yy_def[681] =
482     {   0,
483       609,    1,  609,    3,    1,    1,  610,  610,  611,  611,
484       612,  612,  613,  613,  609,  614,  609,  609,  609,  615,
485       616,  609,  609,  617,  609,  618,  614,   27,   27,  619,
486       609,  609,   32,   32,   34,   34,   34,  614,   27,  614,
487        32,   32,   34,   34,   34,  620,  621,  622,  609,  623,
488       624,  620,   52,   52,  609,   55,   55,   57,   57,   57,
489       620,   52,  620,  609,  625,  609,  625,  625,  609,  609,
490       609,  626,  627,  609,  627,  609,  627,  609,  628,  629,
491       629,  629,  609,  629,  614,  614,  609,  609,  615,  609,
492       616,  616,  617,  617,  618,  630,  614,  614,   27,  619,
493
494        99,   99,   99,   99,  631,  632,   32,   34,   34,   34,
495        34,   34,  614,  609,  614,  614,   99,  614,  614,  614,
496       620,  620,  633,  634,  622,  622,  623,  623,  624,  620,
497       620,   52,  132,  132,  132,  132,   55,   57,   57,   57,
498        57,   57,  620,  620,  609,  625,  625,  609,  609,  609,
499       609,  626,  627,  627,  609,  609,  627,  627,  629,  629,
500       629,  629,  629,  609,  609,  614,  166,  166,   99,  169,
501       635,  609,  636,  609,   32,   34,   34,   34,   34,   34,
502        34,  614,  614,  169,  614,  614,  614,  633,  609,  620,
503       190,  190,  132,  193,   55,   57,   57,   57,   57,   57,
504
505        57,  620,  609,  614,  614,  166,  166,  166,  614,  637,
506       638,  638,  212,  639,  638,  640,  174,  609,  218,  218,
507       609,  218,   34,   34,   34,   34,   34,   34,   34,  614,
508       614,  614,  614,  620,  620,  190,  190,  190,  620,   57,
509        57,   57,   57,   57,   57,   57,  620,  166,  166,  166,
510       609,  641,  641,  253,  641,  642,  643,  644,  609,  645,
511       221,  645,  609,  263,  645,  609,  266,  266,  609,  266,
512       609,  609,   34,   34,   34,   34,   34,  614,  614,  614,
513       190,  190,  190,   57,   57,   57,   57,   57,  620,  614,
514       614,  166,  166,  614,  646,  646,  647,  648,  609,  609,
515
516       649,  650,  609,  651,  651,  652,  269,  652,  609,  309,
517       652,  609,  312,  312,  609,  312,   34,   34,   34,   34,
518        34,  614,  614,  614,  620,  620,  190,  190,  620,   57,
519        57,   57,   57,   57,  620,  614,  336,  336,  609,  653,
520       654,  299,  609,  343,  343,  609,  343,  609,  609,  649,
521       649,  609,  609,  655,  655,  656,  315,  656,  609,  359,
522       656,  609,  362,  362,  609,  362,  609,  609,   34,   34,
523       609,  609,  609,  609,  614,  614,  614,  620,  378,  378,
524        57,   57,  620,  614,  614,  336,  336,  336,  609,  657,
525       609,  658,  346,  658,  658,  395,  658,  609,  398,  398,
526
527       609,  398,  659,  660,  609,  609,  661,  661,  662,  365,
528       662,  609,  412,  662,  609,  415,  415,  415,   34,   34,
529       614,  614,  614,  620,  620,  378,  378,  378,   57,   57,
530       620,  614,  432,  432,  432,  609,  663,  664,  609,  665,
531       665,  666,  401,  666,  666,  445,  666,  609,  448,  448,
532       609,  448,  609,  609,  659,  659,  609,  609,  667,  667,
533       668,  668,  668,  463,  668,  609,  609,  609,  609,  614,
534       609,  620,  472,  472,  472,  614,  614,  432,  432,  432,
535       432,  614,  609,  609,  663,  663,  609,  609,  669,  669,
536       670,  451,  670,  670,  494,  670,  609,  497,  497,  609,
537
538       497,  671,  672,  609,  609,  673,  673,  614,  472,  620,
539       472,  472,  472,  472,  620,  432,  432,  432,  432,  614,
540       674,  675,  609,  609,  676,  676,  677,  500,  677,  677,
541       530,  677,  609,  533,  533,  533,  609,  671,  671,  609,
542       609,  472,  472,  472,  472,  620,  614,  614,  432,  432,
543       614,  609,  609,  674,  674,  609,  609,  678,  678,  679,
544       679,  679,  562,  562,  620,  620,  472,  472,  620,  432,
545       432,  432,  609,  609,  609,  609,  680,  680,  472,  472,
546       472,  432,  614,  432,  432,  614,  609,  609,  609,  609,
547       609,  472,  620,  472,  472,  620,  614,  614,  614,  620,
548
549       620,  620,  614,  614,  614,  620,  620,  620,    0,  609,
550       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
551       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
552       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
553       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
554       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
555       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
556       609,  609,  609,  609,  609,  609,  609,  609,  609,  609
557     } ;
558
559 static yyconst short int yy_nxt[3851] =
560     {   0,
561        16,   17,   18,   19,   16,   20,   21,   22,   23,   16,
562        24,   25,   16,   16,   26,   27,   28,   29,   27,   27,
563        27,   27,   27,   30,   31,   23,   32,   32,   32,   32,
564        33,   34,   34,   35,   34,   36,   34,   37,   34,   34,
565        34,   34,   34,   38,   16,   39,   39,   39,   39,   39,
566        16,   16,   16,   16,   16,   16,   16,   40,   16,   16,
567        41,   42,   86,   64,   43,  151,  114,   23,   44,   23,
568       375,   45,   46,   17,   18,   19,   46,   47,   48,   23,
569        49,   46,   50,   25,   46,   46,   51,   52,   53,   54,
570        52,   52,   52,   52,   52,   30,   31,   23,   55,   55,
571
572        55,   55,   56,   57,   57,   58,   57,   59,   57,   60,
573        57,   57,   57,   57,   57,   61,   46,   62,   62,   62,
574        62,   62,   46,   46,   46,   46,   46,   46,   46,   63,
575        46,   46,   64,   17,   66,   67,   23,   68,   23,  155,
576        17,   66,   67,   69,   68,   86,   81,   18,   82,   83,
577        69,   81,   18,   82,   83,   69,   68,  122,  154,  158,
578       114,  115,   69,   68,   96,  172,  122,   86,   96,   96,
579       156,  182,  161,  144,  174,   70,  103,  103,  103,  103,
580       103,  104,   70,   17,   18,   19,   96,   20,   84,  154,
581        86,   86,  233,   84,  102,  102,  102,  102,  102,  102,
582
583       102,  102,  183,   85,   97,  101,  101,  101,  101,  101,
584       101,  101,  101,  124,  160,  172,  124,  124,  124,  124,
585       124,  124,  124,  124,  217,   71,   72,   72,   72,   72,
586        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
587        72,   72,   17,   18,   19,   85,   20,  134,  134,  134,
588       134,  134,  134,  134,  134,  135,  135,  135,  135,  135,
589       136,  121,   86,  133,  133,  133,  133,  133,  133,  133,
590       133,  170,  170,  170,  170,  170,  170,  231,  162,  163,
591       164,  184,  159,   86,   71,   72,   72,   72,   72,   72,
592        72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
593
594        72,   17,   18,   19,   74,   20,   86,  151,  114,   96,
595        75,   76,   77,   96,   96,  148,  114,  149,  160,  150,
596       185,  160,  177,  149,   78,  150,  391,  178,   96,  179,
597        86,   96,   96,   96,  151,  114,  393,  150,  150,  151,
598       114,  186,  162,   79,   17,   18,   19,   74,   20,  130,
599        96,   85,   85,   75,   76,   77,   85,  150,   85,   86,
600        85,  122,   85,   85,  187,  202,   85,   78,   97,  204,
601       166,  167,  168,  166,  166,  166,  166,  166,   85,   85,
602        85,   86,  160,  151,  114,  234,   79,   98,  159,   99,
603        99,   99,   99,   99,   99,   99,   99,  100,   86,   86,
604
605       101,  101,  101,  101,  101,  170,  170,  170,  170,  170,
606       170,  170,  170,   86,   86,  122,   86,   86,  278,  101,
607       101,  101,  101,  101,   85,  122,  230,  160,   85,  231,
608        85,   86,  391,   85,   85,  231,   85,   85,   85,  107,
609       107,  107,  107,  107,  107,  107,  107,  100,   86,  279,
610       107,  107,  107,  107,  107,  108,  108,  108,  108,  108,
611       108,  108,  108,  108,  108,  108,  108,   86,  108,  101,
612       101,  101,  101,  101,   85,   85,   85,   85,   85,   85,
613        85,   85,   85,   85,  108,  108,  108,  108,  108,  108,
614       108,  108,  609,  151,  114,  108,  108,  108,  108,  108,
615
616       170,  170,  170,  170,  170,  170,  170,  170,  194,  194,
617       194,  194,  194,  194,   85,   85,   85,   85,   85,  113,
618       114,   85,  172,   85,  122,   85,   85,  197,  323,   85,
619       161,  217,  198,   96,  199,  154,  247,   96,   96,  121,
620       121,   85,   85,   85,  131,   86,  132,  132,  132,  132,
621       132,  132,  132,  132,  100,   96,  528,  133,  133,  133,
622       133,  133,  100,  609,  190,  191,  192,  190,  190,  190,
623       190,  190,  160,  130,  122,   86,  133,  133,  133,  133,
624       133,  121,   86,  271,   86,  121,  100,  121,  322,  231,
625       121,  121,  122,  121,  121,  121,  137,  137,  137,  137,
626
627       137,  137,  137,  137,  100,  272,  122,  137,  137,  137,
628       137,  137,  138,  138,  138,  138,  138,  138,  138,  138,
629       138,  138,  138,  138,  122,  138,  133,  133,  133,  133,
630       133,  121,  121,  121,  121,  121,  121,  121,  121,  121,
631       121,  138,  138,  138,  138,  138,  138,  138,  138,  609,
632        85,   85,  138,  138,  138,  138,  138,  194,  194,  194,
633       194,  194,  194,  194,  194,  207,  207,  207,  207,  207,
634       208,  121,  121,  121,  121,  121,  143,  114,  121,  172,
635       121,   86,  121,  121,  271,   91,  121,   91,  217,   91,
636       324,   91,   91,  163,  114,   91,  121,  121,  121,  121,
637
638       121,  153,  255,  255,  255,  153,  272,   91,   91,   91,
639        93,  153,   93,   86,   93,  271,   93,   93,  100,   95,
640        93,   85,  122,   95,  153,   85,   85,  289,  377,   95,
641       259,  172,   93,   93,   93,  160,  391,  272,   86,   86,
642       261,   95,   95,   85,  169,  169,  169,  169,  169,  169,
643       169,  169,  528,  423,  280,  169,  169,  169,  169,  169,
644       194,  194,  194,  194,  194,  194,  194,  194,  237,  237,
645       237,  237,  237,  238,  169,  169,  169,  169,  169,  175,
646       175,  175,  175,  175,  175,  175,  175,  492,  609,  172,
647       175,  175,  175,  175,  175,  121,  122,  121,  261,  121,
648
649       335,  121,  121,  367,  290,  121,  172,  172,  552,  169,
650       169,  169,  169,  169,   86,  217,  261,  121,  121,  121,
651       125,  552,  125,  376,  125,  368,  125,  125,  552,  127,
652       125,  127,  325,  127,   86,  127,  127,  259,  172,  127,
653       259,  172,  125,  125,  125,   96,  172,  261,  172,   96,
654       307,  127,  127,  127,  129,   96,  121,  261,  129,  384,
655       121,  121,  122,  172,  129,  609,  172,   96,   96,  264,
656       264,  264,  264,  264,  265,  307,  129,  129,  121,  193,
657       193,  193,  193,  193,  193,  193,  193,   86,   86,  470,
658       193,  193,  193,  193,  193,  206,  206,  206,  206,  206,
659
660       206,  206,  206,  310,  310,  310,  310,  310,  311,  193,
661       193,  193,  193,  193,  195,  195,  195,  195,  195,  195,
662       195,  195,  482,  482,  482,  195,  195,  195,  195,  195,
663       236,  236,  236,  236,  236,  236,  236,  236,  360,  360,
664       360,  360,  360,  361,  193,  193,  193,  193,  193,  204,
665       609,  205,  205,  205,  205,  205,  205,  205,  205,  371,
666       393,  172,  248,  249,  250,  248,  248,  248,  248,  248,
667       253,  253,  254,  255,  255,  255,  255,  255,  214,   86,
668        85,  372,  209,  209,  209,  209,  209,  209,  209,  209,
669        86,  259,  172,  209,  209,  209,  209,  209,  222,  222,
670
671       222,  222,  222,  222,  222,  222,  387,  387,  387,  387,
672       387,  388,  209,  209,  209,  209,  209,  211,  212,  213,
673       213,  213,  213,  213,  213,  214,  172,   86,  215,  215,
674       215,  215,  215,  263,  263,  263,  263,  263,  263,  263,
675       263,  373,  421,  609,  172,  259,  172,  215,  215,  215,
676       215,  215,  172,  218,  219,  220,  218,  218,  218,  218,
677       218,  221,  122,  374,  222,  222,  222,  222,  222,  609,
678       383,  262,  262,  262,  262,  262,  262,  262,  262,  577,
679       577,  122,  367,  222,  222,  222,  222,  222,  223,  223,
680       223,  223,  223,  223,  223,  223,  431,  152,  152,  223,
681
682       223,  223,  223,  223,  368,  281,  282,  283,  281,  281,
683       281,  281,  281,  371,  124,  172,  492,  124,  209,  209,
684       209,  209,  209,  234,  307,  235,  235,  235,  235,  235,
685       235,  235,  235,  122,  290,  372,  291,  291,  291,  291,
686       291,  291,  291,  291,  296,  296,  296,  296,  296,  296,
687       296,  296,  214,  122,  121,  172,  239,  239,  239,  239,
688       239,  239,  239,  239,  307,   86,  443,  239,  239,  239,
689       239,  239,  290,  422,  292,  292,  292,  292,  292,  292,
690       292,  292,  515,  515,  515,  552,  239,  239,  239,  239,
691       239,  240,  240,  240,  240,  240,  240,  240,  240,  172,
692
693       537,  537,  240,  240,  240,  240,  240,  290,  357,  293,
694       293,  293,  293,  293,  294,  291,  291,  471,  349,  471,
695       349,  239,  239,  239,  239,  239,  259,  172,  260,  260,
696       260,  260,  260,  260,  260,  260,  261,   86,  552,  262,
697       262,  262,  262,  262,  301,  302,  303,  301,  301,  301,
698       301,  301,  373,  350,  454,  350,  454,   86,  262,  262,
699       262,  262,  262,  172,  266,  267,  268,  266,  266,  266,
700       266,  266,  269,  172,  374,  270,  270,  270,  270,  270,
701       270,  270,  270,  270,  270,  270,  270,  270,  396,  396,
702       396,  396,  396,  397,  270,  270,  270,  270,  270,  259,
703
704       172,  305,  305,  305,  305,  305,  305,  305,  305,  261,
705       538,  538,  304,  304,  304,  304,  304,  259,  172,  305,
706       305,  305,  305,  305,  305,  367,  371,  261,  455,  172,
707       455,  304,  304,  304,  304,  304,  259,  172,  306,  306,
708       306,  306,  306,  306,  306,  306,  307,  368,  372,  308,
709       308,  308,  308,  308,  309,  309,  309,  309,  309,  309,
710       309,  309,  413,  413,  413,  413,  413,  414,  308,  308,
711       308,  308,  308,  172,  312,  313,  314,  312,  312,  312,
712       312,  312,  315,  172,  443,  316,  316,  316,  316,  316,
713       609,  424,  308,  308,  308,  308,  308,  308,  308,  308,
714
715       259,  172,  393,  483,  316,  316,  316,  316,  316,  325,
716       307,  326,  326,  326,  326,  326,  326,  326,  326,  325,
717       122,  327,  327,  327,  327,  327,  327,  327,  327,  325,
718       483,  328,  328,  328,  328,  328,  329,  326,  326,  336,
719       337,  338,  336,  336,  336,  336,  336,  290,  391,  291,
720       291,  291,  291,  291,  291,  291,  291,  290,  393,  291,
721       291,  291,  291,  291,  291,  291,  291,   86,  290,  483,
722       291,  291,  291,  291,  291,  291,  348,  453,  351,  351,
723       351,  351,  351,  352,  349,  349,  316,  316,  316,  316,
724       316,  316,  316,  316,   86,  453,  476,  509,   86,  343,
725
726       344,  345,  343,  343,  343,  343,  343,  346,  508,  453,
727       347,  347,  347,  347,  347,  259,  172,  355,  355,  355,
728       355,  355,  355,  373,  466,  307,   86,  122,  393,  347,
729       347,  347,  347,  347,  259,  172,  355,  355,  355,  355,
730       355,  355,  355,  355,  307,  374,  467,  354,  354,  354,
731       354,  354,  359,  359,  359,  359,  359,  359,  359,  359,
732       427,  427,  427,  427,  427,  428,  354,  354,  354,  354,
733       354,  259,  172,  356,  356,  356,  356,  356,  356,  356,
734       356,  357,  483,  483,  358,  358,  358,  358,  358,  609,
735       391,  358,  358,  358,  358,  358,  358,  358,  358,  484,
736
737       443,  484,  342,  358,  358,  358,  358,  358,  172,  362,
738       363,  364,  362,  362,  362,  362,  362,  365,  122,   86,
739       366,  366,  366,  366,  366,  378,  379,  380,  378,  378,
740       378,  378,  378,  453,  453,  259,  172,  342,  257,  366,
741       366,  366,  366,  366,  325,  357,  326,  326,  326,  326,
742       326,  326,  325,  122,  326,  326,  326,  326,  326,  326,
743       326,  326,  325,  609,  326,  326,  326,  326,  326,  326,
744       326,  326,  547,  443,  122,  384,  385,  385,  385,  385,
745       385,  385,  385,  385,  386,  386,  386,  386,  386,  386,
746       386,  386,  347,  347,  347,  347,  347,  347,  347,  347,
747
748       430,  485,   86,  485,   86,  391,  391,  392,  392,  392,
749       392,  392,  392,  392,  392,  393,  443,  429,  394,  394,
750       394,  394,  394,  395,  395,  395,  395,  395,  395,  395,
751       395,  446,  446,  446,  446,  446,  447,  394,  394,  394,
752       394,  394,  398,  399,  400,  398,  398,  398,  398,  398,
753       401,  420,  419,  402,  402,  402,  402,  402,  609,  172,
754       394,  394,  394,  394,  394,  394,  394,  394,  357,  553,
755       348,  553,  402,  402,  402,  402,  402,  403,  404,  405,
756       403,  403,  403,  403,  403,  348,  348,  349,  349,  349,
757       349,  349,  349,  366,  366,  366,  366,  366,  366,  366,
758
759       366,  609,  172,  412,  412,  412,  412,  412,  412,  412,
760       412,  357,  259,  172,  408,  408,  408,  408,  408,  408,
761       408,  408,  357,  348,  342,  407,  407,  407,  407,  407,
762       259,  172,  408,  408,  408,  408,  408,  408,  468,  466,
763       357,  554,  257,  554,  407,  407,  407,  407,  407,  259,
764       172,  409,  409,  409,  409,  409,  409,  409,  409,  410,
765       469,  467,  411,  411,  411,  411,  411,  609,  172,  411,
766       411,  411,  411,  411,  411,  411,  411,  410,  214,  382,
767       381,  411,  411,  411,  411,  411,  172,  415,  416,  417,
768       415,  415,  415,  415,  415,  370,  369,  348,  418,  418,
769
770       418,  418,  418,  426,  426,  426,  426,  426,  426,  426,
771       426,  464,  464,  464,  464,  464,  465,  418,  418,  418,
772       418,  418,  424,  425,  425,  425,  425,  425,  425,  425,
773       425,  432,  433,  434,  435,  432,  432,  432,  432,  437,
774       438,  439,  437,  437,  437,  437,  437,  259,  172,  348,
775       342,  122,  257,  214,  214,  334,  333,  357,  468,   86,
776       402,  402,  402,  402,  402,  402,  402,  402,  391,  466,
777       441,  441,  441,  441,  441,  441,  441,  441,  393,  391,
778       469,  441,  441,  441,  441,  441,  441,  332,  331,  393,
779       391,  467,  442,  442,  442,  442,  442,  442,  442,  442,
780
781       443,  330,  321,  444,  444,  444,  444,  444,  445,  445,
782       445,  445,  445,  445,  445,  445,  495,  495,  495,  495,
783       495,  496,  444,  444,  444,  444,  444,  448,  449,  450,
784       448,  448,  448,  448,  448,  451,  320,  319,  452,  452,
785       452,  452,  452,  609,  318,  444,  444,  444,  444,  444,
786       444,  444,  444,  259,  172,  317,  299,  452,  452,  452,
787       452,  452,  453,  410,  456,  456,  456,  456,  456,  457,
788       454,  454,  418,  418,  418,  418,  418,  418,  418,  418,
789       609,  172,  463,  463,  463,  463,  463,  463,  463,  463,
790       410,  259,  172,  460,  460,  460,  460,  460,  460,  460,
791
792       460,  410,  257,  214,  459,  459,  459,  459,  459,  259,
793       172,  460,  460,  460,  460,  460,  460,  468,  295,  410,
794       214,  106,  288,  459,  459,  459,  459,  459,  259,  172,
795       461,  461,  461,  461,  461,  461,  461,  461,  287,  469,
796       286,  462,  462,  462,  462,  462,  609,  391,  462,  462,
797       462,  462,  462,  462,  462,  462,  285,  492,  284,  565,
798       462,  462,  462,  462,  462,  472,  473,  474,  475,  472,
799       472,  472,  472,  478,  478,  478,  478,  478,  478,  478,
800       478,  479,  479,  479,  479,  479,  480,  481,  481,  122,
801       100,  277,  582,  122,  476,  609,  477,  477,  477,  477,
802
803       477,  477,  477,  477,  483,  492,  486,  486,  486,  486,
804       486,  487,  484,  484,  452,  452,  452,  452,  452,  452,
805       452,  452,   86,  276,   86,  391,  275,  490,  490,  490,
806       490,  490,  490,  490,  490,  443,  391,  274,  490,  490,
807       490,  490,  490,  490,  273,  100,  443,  391,  391,  491,
808       491,  491,  491,  491,  491,  491,  491,  492,  492,  214,
809       493,  493,  493,  493,  493,  494,  494,  494,  494,  494,
810       494,  494,  494,  531,  531,  531,  531,  531,  532,  493,
811       493,  493,  493,  493,  497,  498,  499,  497,  497,  497,
812       497,  497,  500,  257,  214,  501,  501,  501,  501,  501,
813
814       609,  172,  493,  493,  493,  493,  493,  493,  493,  493,
815       410,  106,  203,  246,  501,  501,  501,  501,  501,  502,
816       503,  504,  502,  502,  502,  502,  502,  453,  245,  454,
817       454,  454,  454,  454,  454,  259,  172,  259,  172,  507,
818       507,  507,  507,  507,  507,  410,  259,  172,  507,  507,
819       507,  507,  507,  507,  507,  507,  509,  244,  510,  510,
820       510,  510,  510,  510,  510,  510,  511,  511,  511,  511,
821       511,  511,  511,  511,  512,  512,  512,  512,  512,  513,
822       514,  514,  592,  520,  520,  520,  122,  516,  517,  518,
823       516,  516,  516,  516,  516,  481,  481,  481,  481,  481,
824
825       481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
826       481,   86,  122,  243,  242,   86,  481,  481,  481,  481,
827       481,  481,  519,  519,  519,  519,  519,  519,  519,  519,
828       519,  519,  476,  241,  520,  520,  520,  521,  522,  523,
829       521,  521,  521,  521,  521,  483,  131,  484,  484,  484,
830       484,  484,  484,  501,  501,  501,  501,  501,  501,  501,
831       501,  189,   86,  391,  232,  526,  526,  526,  526,  526,
832       526,  526,  526,  492,  391,  229,  526,  526,  526,  526,
833       526,  526,  228,  227,  492,  391,  391,  527,  527,  527,
834       527,  527,  527,  527,  527,  528,  528,  226,  529,  529,
835
836       529,  529,  529,  530,  530,  530,  530,  530,  530,  530,
837       530,  563,  563,  563,  563,  563,  564,  529,  529,  529,
838       529,  529,  533,  534,  535,  533,  533,  533,  533,  533,
839       225,  224,  106,  536,  536,  536,  536,  536,  609,  609,
840       529,  529,  529,  529,  529,  529,  529,  529,   98,  528,
841       203,  160,  536,  536,  536,  536,  536,  172,  539,  539,
842       539,  539,  539,  540,  537,  537,  121,  154,  542,  543,
843       544,  542,  542,  542,  542,  542,  514,  514,  514,  514,
844       514,  514,  514,  514,  514,  514,  514,  514,  514,  514,
845       514,  514,  514,  514,  514,  514,  514,  514,  545,  545,
846
847       545,  545,  545,  545,  545,  545,  545,  545,  509,  154,
848       546,  546,  546,  547,  391,  548,  548,  548,  548,  548,
849       548,  548,  548,  547,  528,  549,  549,  549,  549,  549,
850       549,  549,  549,  147,  145,  201,  200,  547,  122,  550,
851       550,  550,  550,  550,  551,  548,  548,   85,  196,  519,
852       519,  519,  519,  519,  519,  519,  519,  552,  121,  555,
853       555,  555,  555,  555,  556,  553,  553,  536,  536,  536,
854       536,  536,  536,  536,  536,  391,  128,  559,  559,  559,
855       559,  559,  559,  559,  559,  528,  391,  126,  559,  559,
856       559,  559,  559,  559,  189,  122,  528,  391,  181,  560,
857
858       560,  560,  560,  560,  560,  560,  560,  546,  546,  546,
859       561,  561,  561,  561,  561,  562,  562,  562,  562,  562,
860       562,  562,  562,  587,  587,  587,  587,  587,  587,  561,
861       561,  561,  561,  561,  609,  122,  561,  561,  561,  561,
862       561,  561,  561,  561,  172,  537,  537,  537,  537,  537,
863       537,  565,  180,  566,  566,  566,  566,  566,  566,  566,
864       566,  565,  176,  567,  567,  567,  567,  567,  567,  567,
865       567,  565,  106,  568,  568,  568,  568,  568,  569,  566,
866       566,  121,   85,  545,  545,  545,  545,  545,  545,  545,
867       545,  570,  571,  572,  570,  570,  570,  570,  570,  547,
868
869       106,  548,  548,  548,  548,  548,  548,  548,  548,  547,
870       165,  548,  548,  548,  548,  548,  548,  548,  548,   86,
871       547,   94,  548,  548,  548,  548,  548,  548,  573,  574,
872       575,  573,  573,  573,  573,  573,  552,   92,  553,  553,
873       553,  553,  553,  553,   90,   88,   87,   86,  160,  391,
874        86,  578,  578,  578,  578,  578,  578,  578,  578,  579,
875       580,  581,  579,  579,  579,  579,  579,  565,  154,  566,
876       566,  566,  566,  566,  566,  566,  566,  565,  147,  566,
877       566,  566,  566,  566,  566,  566,  566,  122,  565,  145,
878       566,  566,  566,  566,  566,  566,  582,  142,  583,  583,
879
880       583,  583,  583,  583,  583,  583,  582,  141,  584,  584,
881       584,  584,  584,  584,  584,  584,  140,  582,  122,  585,
882       585,  585,  585,  585,  586,  583,  583,  587,  587,  587,
883       587,  587,  587,  587,  587,  588,  588,  588,  588,  588,
884       588,  588,  588,  589,  589,  589,  589,  589,  590,  587,
885       587,  592,  139,  593,  593,  593,  593,  593,  593,  593,
886       593,  592,  128,  594,  594,  594,  594,  594,  594,  594,
887       594,  592,  126,  595,  595,  595,  595,  595,  596,  593,
888       593,   85,  122,  597,  598,  599,  597,  597,  597,  597,
889       597,  582,  120,  583,  583,  583,  583,  583,  583,  583,
890
891       583,  582,  119,  583,  583,  583,  583,  583,  583,  583,
892       583,  582,  118,  583,  583,  583,  583,  583,  583,  587,
893       587,  587,  587,  587,  587,  587,  587,  587,  587,  587,
894       587,  587,  587,  587,  587,  117,  116,  112,  111,  110,
895       121,   86,  600,  601,  602,  600,  600,  600,  600,  600,
896       592,  109,  593,  593,  593,  593,  593,  593,  593,  593,
897       592,  106,  593,  593,  593,  593,  593,  593,  593,  593,
898       592,   94,  593,  593,  593,  593,  593,  593,  603,  603,
899       603,  603,  603,  603,  603,  603,  597,  597,  597,  597,
900       597,  597,  597,  597,   92,   90,   88,   87,   86,  609,
901
902       122,  609,  609,  609,  609,  609,   86,  609,  609,  609,
903       609,  609,  609,  609,   86,  604,  604,  604,  604,  604,
904       605,  603,  603,  606,  606,  606,  606,  606,  606,  606,
905       606,  600,  600,  600,  600,  600,  600,  600,  600,  609,
906       609,  609,  609,   86,  609,  609,  609,  609,  609,  609,
907       609,  122,  603,  603,  603,  603,  603,  603,  609,  122,
908       607,  607,  607,  607,  607,  608,  606,  606,  603,  603,
909       603,  603,  603,  603,  603,  603,  609,  609,  609,  609,
910        86,  606,  606,  606,  606,  606,  606,  609,  122,  609,
911       609,  609,  609,  609,  609,  609,   86,  606,  606,  606,
912
913       606,  606,  606,  606,  606,  609,  609,  609,  609,  122,
914       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
915       609,  609,  609,  609,  609,  122,   65,   65,   65,   65,
916        65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
917        65,   23,   23,   23,   23,   23,   23,   23,   23,   23,
918        23,   23,   23,   23,   23,   23,   73,   73,   73,   73,
919        73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
920        73,   80,   80,   80,   80,   80,   80,   80,   80,   80,
921        80,   80,   80,   80,   80,   80,   85,  609,  609,  609,
922        85,  609,   85,   85,   85,   85,  609,   85,   85,   85,
923
924        85,   89,   89,   89,   89,   89,   89,   89,   89,   89,
925        89,   89,   89,   89,   89,   89,   91,  609,  609,  609,
926        91,  609,   91,   91,   91,   91,  609,   91,   91,   91,
927        91,   93,  609,  609,  609,   93,  609,   93,   93,   93,
928        93,  609,   93,   93,   93,   93,   95,  609,  609,   95,
929        95,  609,   95,   95,   95,   95,  609,   95,   95,   95,
930        95,  105,  105,  105,  609,  609,  105,  121,  609,  609,
931       609,  121,  609,  121,  121,  121,  121,  609,  121,  121,
932       121,  121,  123,  123,  123,  123,  123,  123,  123,  123,
933       123,  123,  123,  123,  123,  123,  123,  125,  609,  609,
934
935       609,  125,  609,  125,  125,  125,  125,  609,  125,  125,
936       125,  125,  127,  609,  609,  609,  127,  609,  127,  127,
937       127,  127,  609,  127,  127,  127,  127,  129,  609,  609,
938       129,  129,  609,  129,  129,  129,  129,  609,  129,  129,
939       129,  129,  146,  609,  609,  146,  146,  146,  146,  146,
940       146,  146,  609,  146,  609,  146,  146,  153,  609,  609,
941       153,  153,  609,  153,  153,  153,  153,  153,  153,  153,
942       153,  153,  157,  157,  157,  157,  157,  157,  157,  157,
943       157,  157,  157,  157,  157,  157,  157,  159,  159,  609,
944       159,  609,  159,  159,  159,  159,  159,  159,  159,  159,
945
946       159,  159,   96,  609,  609,   96,   96,  609,   96,   96,
947        96,   96,  609,   96,   96,   96,   96,  171,  171,  171,
948       609,  609,  171,  173,  173,  173,  173,  609,  609,  173,
949       188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
950       188,  188,  188,  188,  188,  210,  210,  210,  609,  609,
951       210,  216,  216,  216,  216,  609,  609,  216,  251,  251,
952       251,  609,  609,  251,  252,  252,  252,  609,  609,  252,
953       256,  256,  256,  609,  609,  256,  258,  258,  258,  258,
954       609,  609,  258,  295,  295,  295,  609,  609,  295,  297,
955       297,  297,  609,  609,  297,  298,  298,  298,  609,  609,
956
957       298,  300,  300,  300,  300,  609,  609,  300,  304,  304,
958       304,  304,  304,  609,  609,  304,  339,  339,  339,  609,
959       609,  339,  340,  340,  340,  609,  609,  340,  341,  341,
960       341,  609,  609,  341,  353,  353,  353,  353,  609,  609,
961       353,  354,  354,  354,  354,  354,  609,  609,  354,  389,
962       389,  389,  609,  609,  389,  390,  390,  390,  609,  609,
963       390,  406,  406,  406,  406,  609,  609,  406,  407,  407,
964       407,  407,  407,  609,  609,  407,  436,  436,  436,  609,
965       609,  436,  440,  609,  440,  440,  440,  609,  609,  440,
966       458,  458,  458,  458,  609,  609,  458,  459,  459,  459,
967
968       459,  459,  609,  609,  459,  488,  488,  488,  609,  609,
969       488,  489,  609,  489,  489,  489,  609,  609,  489,  505,
970       505,  505,  505,  609,  609,  505,  506,  506,  506,  609,
971       506,  609,  609,  506,  524,  524,  524,  609,  609,  524,
972       525,  609,  525,  525,  525,  609,  609,  525,  541,  541,
973       609,  541,  609,  609,  541,  557,  557,  557,  609,  609,
974       557,  558,  609,  558,  558,  558,  609,  609,  558,  576,
975       576,  576,  609,  609,  576,  577,  609,  577,  609,  577,
976       609,  609,  577,  591,  609,  591,  609,  609,  591,   15,
977       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
978
979       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
980       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
981       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
982       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
983       609,  609,  609,  609,  609,  609,  609,  609,  609,  609
984     } ;
985
986 static yyconst short int yy_chk[3851] =
987     {   0,
988         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
989         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
990         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
991         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
992         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
993         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
994         2,    2,  322,    5,    2,   71,   71,    5,    2,    5,
995       322,    2,    3,    3,    3,    3,    3,    3,    3,    3,
996         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
997         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
998
999         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1000         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1001         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
1002         3,    3,    6,    7,    7,    7,    6,    7,    6,   75,
1003         8,    8,    8,    7,    8,   40,   13,   13,   13,   13,
1004         8,   14,   14,   14,   14,    7,    7,   63,   75,   79,
1005        79,   40,    8,    8,   26,  106,  606,  115,   26,   26,
1006        77,  115,   81,   63,  106,    7,   29,   29,   29,   29,
1007        29,   29,    8,    9,    9,    9,   26,    9,   13,   77,
1008       186,  116,  186,   14,   28,   28,   28,   28,   28,   28,
1009
1010        28,   28,  116,   39,   26,   39,   39,   39,   39,   39,
1011        39,   39,   39,   47,   81,  173,   47,   47,   47,   47,
1012        47,   47,   47,   47,  173,    9,    9,    9,    9,    9,
1013         9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
1014         9,    9,   10,   10,   10,  117,   10,   53,   53,   53,
1015        53,   53,   53,   53,   53,   54,   54,   54,   54,   54,
1016        54,   62,  185,   62,   62,   62,   62,   62,   62,   62,
1017        62,  104,  104,  104,  104,  104,  104,  185,   82,   84,
1018        84,  117,   84,  603,   10,   10,   10,   10,   10,   10,
1019        10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
1020
1021        10,   11,   11,   11,   11,   11,  118,  148,  148,   51,
1022        11,   11,   11,   51,   51,   70,   70,   70,   82,   70,
1023       118,   84,  110,   70,   11,   70,  392,  110,   95,  110,
1024       119,   51,   95,   95,  151,  151,  392,   70,   70,  113,
1025       113,  119,  162,   11,   12,   12,   12,   12,   12,   51,
1026        95,  208,  208,   12,   12,   12,   86,   70,   86,  120,
1027        86,  144,   86,   86,  120,  144,   86,   12,   95,  205,
1028        98,   98,   98,   98,   98,   98,   98,   98,   86,   86,
1029        86,  113,  162,  143,  143,  235,   12,   27,  160,   27,
1030        27,   27,   27,   27,   27,   27,   27,   27,   98,  205,
1031
1032        27,   27,   27,   27,   27,  102,  102,  102,  102,  102,
1033       102,  102,  102,  230,  182,  235,  187,   27,  230,   27,
1034        27,   27,   27,   27,   32,  143,  182,  160,   32,  187,
1035        32,  183,  578,   32,   32,  183,   32,   32,   32,   32,
1036        32,   32,   32,   32,   32,   32,   32,   32,  231,  231,
1037        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1038        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1039        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1040        32,   32,   32,   32,   34,   34,   34,   34,   34,   34,
1041        34,   34,   34,  158,  158,   34,   34,   34,   34,   34,
1042
1043       103,  103,  103,  103,  103,  103,  103,  103,  136,  136,
1044       136,  136,  136,  136,   34,   34,   34,   34,   34,   38,
1045        38,   38,  216,   38,  202,   38,   38,  140,  279,   38,
1046       161,  216,  140,  129,  140,  158,  202,  129,  129,  238,
1047       238,   38,   38,   38,   52,  279,   52,   52,   52,   52,
1048        52,   52,   52,   52,   52,  129,  576,   52,   52,   52,
1049        52,   52,  209,  561,  131,  131,  131,  131,  131,  131,
1050       131,  131,  161,  129,   52,  233,   52,   52,   52,   52,
1051        52,   55,  209,  224,  278,   55,  239,   55,  278,  233,
1052        55,   55,  131,   55,   55,   55,   55,   55,   55,   55,
1053
1054        55,   55,   55,   55,   55,  224,  239,   55,   55,   55,
1055        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
1056        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
1057        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
1058        55,   57,   57,   57,   57,   57,   57,   57,   57,   57,
1059       388,  388,   57,   57,   57,   57,   57,  134,  134,  134,
1060       134,  134,  134,  134,  134,  168,  168,  168,  168,  168,
1061       168,   57,   57,   57,   57,   57,   61,   61,   61,  258,
1062        61,  280,   61,   61,  241,   92,   61,   92,  258,   92,
1063       280,   92,   92,  163,  163,   92,  428,  428,   61,   61,
1064
1065        61,  154,  213,  213,  213,  154,  241,   92,   92,   92,
1066        94,  154,   94,  324,   94,  271,   94,   94,  232,   97,
1067        94,   97,  247,   97,  154,   97,   97,  247,  324,   97,
1068       260,  260,   94,   94,   94,  163,  560,  271,  232,  377,
1069       260,   97,   97,   97,   99,   99,   99,   99,   99,   99,
1070        99,   99,  558,  377,  232,   99,   99,   99,   99,   99,
1071       135,  135,  135,  135,  135,  135,  135,  135,  192,  192,
1072       192,  192,  192,  192,   99,   99,   99,   99,   99,  107,
1073       107,  107,  107,  107,  107,  107,  107,  557,  262,  262,
1074       107,  107,  107,  107,  107,  122,  289,  122,  262,  122,
1075
1076       289,  122,  122,  317,  291,  122,  300,  304,  555,  107,
1077       107,  107,  107,  107,  323,  300,  304,  122,  122,  122,
1078       126,  554,  126,  323,  126,  317,  126,  126,  553,  128,
1079       126,  128,  326,  128,  291,  128,  128,  305,  305,  128,
1080       306,  306,  126,  126,  126,  165,  541,  305,  353,  165,
1081       306,  128,  128,  128,  130,  165,  130,  353,  130,  385,
1082       130,  130,  326,  539,  130,  308,  308,  165,  165,  220,
1083       220,  220,  220,  220,  220,  308,  130,  130,  130,  132,
1084       132,  132,  132,  132,  132,  132,  132,  422,  385,  422,
1085       132,  132,  132,  132,  132,  167,  167,  167,  167,  167,
1086
1087       167,  167,  167,  268,  268,  268,  268,  268,  268,  132,
1088       132,  132,  132,  132,  137,  137,  137,  137,  137,  137,
1089       137,  137,  435,  435,  435,  137,  137,  137,  137,  137,
1090       191,  191,  191,  191,  191,  191,  191,  191,  314,  314,
1091       314,  314,  314,  314,  137,  137,  137,  137,  137,  166,
1092       394,  166,  166,  166,  166,  166,  166,  166,  166,  320,
1093       394,  538,  204,  204,  204,  204,  204,  204,  204,  204,
1094       212,  212,  212,  212,  212,  212,  212,  212,  212,  166,
1095       169,  320,  169,  169,  169,  169,  169,  169,  169,  169,
1096       204,  461,  461,  169,  169,  169,  169,  169,  217,  217,
1097
1098       217,  217,  217,  217,  217,  217,  338,  338,  338,  338,
1099       338,  338,  169,  169,  169,  169,  169,  172,  172,  172,
1100       172,  172,  172,  172,  172,  172,  537,  375,  172,  172,
1101       172,  172,  172,  219,  219,  219,  219,  219,  219,  219,
1102       219,  321,  375,  462,  462,  507,  507,  172,  172,  172,
1103       172,  172,  174,  174,  174,  174,  174,  174,  174,  174,
1104       174,  174,  335,  321,  174,  174,  174,  174,  174,  222,
1105       335,  222,  222,  222,  222,  222,  222,  222,  222,  564,
1106       564,  383,  330,  174,  174,  174,  174,  174,  175,  175,
1107       175,  175,  175,  175,  175,  175,  383,  626,  626,  175,
1108
1109       175,  175,  175,  175,  330,  234,  234,  234,  234,  234,
1110       234,  234,  234,  333,  634,  354,  525,  634,  175,  175,
1111       175,  175,  175,  190,  354,  190,  190,  190,  190,  190,
1112       190,  190,  190,  234,  248,  333,  248,  248,  248,  248,
1113       248,  248,  248,  248,  253,  253,  253,  253,  253,  253,
1114       253,  253,  253,  190,  193,  406,  193,  193,  193,  193,
1115       193,  193,  193,  193,  406,  376,  524,  193,  193,  193,
1116       193,  193,  249,  376,  249,  249,  249,  249,  249,  249,
1117       249,  249,  475,  475,  475,  522,  193,  193,  193,  193,
1118       193,  195,  195,  195,  195,  195,  195,  195,  195,  407,
1119
1120       671,  671,  195,  195,  195,  195,  195,  250,  407,  250,
1121       250,  250,  250,  250,  250,  250,  250,  423,  649,  423,
1122       649,  195,  195,  195,  195,  195,  218,  218,  218,  218,
1123       218,  218,  218,  218,  218,  218,  218,  423,  521,  218,
1124       218,  218,  218,  218,  259,  259,  259,  259,  259,  259,
1125       259,  259,  334,  650,  659,  650,  659,  508,  218,  218,
1126       218,  218,  218,  221,  221,  221,  221,  221,  221,  221,
1127       221,  221,  221,  506,  334,  221,  221,  221,  221,  221,
1128       261,  261,  261,  261,  261,  261,  261,  261,  345,  345,
1129       345,  345,  345,  345,  221,  221,  221,  221,  221,  263,
1130
1131       263,  263,  263,  263,  263,  263,  263,  263,  263,  263,
1132       672,  672,  263,  263,  263,  263,  263,  265,  265,  265,
1133       265,  265,  265,  265,  265,  367,  371,  265,  660,  503,
1134       660,  263,  263,  263,  263,  263,  266,  266,  266,  266,
1135       266,  266,  266,  266,  266,  266,  266,  367,  371,  266,
1136       266,  266,  266,  266,  267,  267,  267,  267,  267,  267,
1137       267,  267,  364,  364,  364,  364,  364,  364,  266,  266,
1138       266,  266,  266,  269,  269,  269,  269,  269,  269,  269,
1139       269,  269,  269,  502,  489,  269,  269,  269,  269,  269,
1140       270,  425,  270,  270,  270,  270,  270,  270,  270,  270,
1141
1142       355,  355,  488,  486,  269,  269,  269,  269,  269,  281,
1143       355,  281,  281,  281,  281,  281,  281,  281,  281,  282,
1144       425,  282,  282,  282,  282,  282,  282,  282,  282,  283,
1145       485,  283,  283,  283,  283,  283,  283,  283,  283,  290,
1146       290,  290,  290,  290,  290,  290,  290,  292,  441,  292,
1147       292,  292,  292,  292,  292,  292,  292,  293,  441,  293,
1148       293,  293,  293,  293,  293,  293,  293,  290,  294,  484,
1149       294,  294,  294,  294,  294,  294,  303,  456,  303,  303,
1150       303,  303,  303,  303,  303,  303,  307,  307,  307,  307,
1151       307,  307,  307,  307,  470,  455,  477,  510,  294,  299,
1152
1153       299,  299,  299,  299,  299,  299,  299,  299,  470,  454,
1154       299,  299,  299,  299,  299,  311,  311,  311,  311,  311,
1155       311,  311,  311,  373,  419,  311,  477,  510,  440,  299,
1156       299,  299,  299,  299,  309,  309,  309,  309,  309,  309,
1157       309,  309,  309,  309,  309,  373,  419,  309,  309,  309,
1158       309,  309,  313,  313,  313,  313,  313,  313,  313,  313,
1159       380,  380,  380,  380,  380,  380,  309,  309,  309,  309,
1160       309,  312,  312,  312,  312,  312,  312,  312,  312,  312,
1161       312,  312,  438,  437,  312,  312,  312,  312,  312,  316,
1162       442,  316,  316,  316,  316,  316,  316,  316,  316,  663,
1163
1164       442,  663,  436,  312,  312,  312,  312,  312,  315,  315,
1165       315,  315,  315,  315,  315,  315,  315,  315,  431,  421,
1166       315,  315,  315,  315,  315,  325,  325,  325,  325,  325,
1167       325,  325,  325,  404,  403,  356,  356,  390,  389,  315,
1168       315,  315,  315,  315,  329,  356,  329,  329,  329,  329,
1169       329,  329,  327,  325,  327,  327,  327,  327,  327,  327,
1170       327,  327,  328,  444,  328,  328,  328,  328,  328,  328,
1171       328,  328,  548,  444,  329,  336,  336,  336,  336,  336,
1172       336,  336,  336,  336,  337,  337,  337,  337,  337,  337,
1173       337,  337,  342,  342,  342,  342,  342,  342,  342,  342,
1174
1175       382,  664,  548,  664,  336,  343,  490,  343,  343,  343,
1176       343,  343,  343,  343,  343,  343,  490,  381,  343,  343,
1177       343,  343,  343,  344,  344,  344,  344,  344,  344,  344,
1178       344,  400,  400,  400,  400,  400,  400,  343,  343,  343,
1179       343,  343,  346,  346,  346,  346,  346,  346,  346,  346,
1180       346,  370,  369,  346,  346,  346,  346,  346,  347,  458,
1181       347,  347,  347,  347,  347,  347,  347,  347,  458,  674,
1182       351,  674,  346,  346,  346,  346,  346,  348,  348,  348,
1183       348,  348,  348,  348,  348,  352,  350,  352,  352,  352,
1184       352,  352,  352,  357,  357,  357,  357,  357,  357,  357,
1185
1186       357,  358,  358,  363,  363,  363,  363,  363,  363,  363,
1187       363,  358,  359,  359,  359,  359,  359,  359,  359,  359,
1188       359,  359,  359,  349,  341,  359,  359,  359,  359,  359,
1189       361,  361,  361,  361,  361,  361,  361,  361,  420,  429,
1190       361,  675,  340,  675,  359,  359,  359,  359,  359,  362,
1191       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1192       420,  429,  362,  362,  362,  362,  362,  366,  459,  366,
1193       366,  366,  366,  366,  366,  366,  366,  459,  339,  332,
1194       331,  362,  362,  362,  362,  362,  365,  365,  365,  365,
1195       365,  365,  365,  365,  365,  319,  318,  302,  365,  365,
1196
1197       365,  365,  365,  379,  379,  379,  379,  379,  379,  379,
1198       379,  417,  417,  417,  417,  417,  417,  365,  365,  365,
1199       365,  365,  378,  378,  378,  378,  378,  378,  378,  378,
1200       378,  384,  384,  384,  384,  384,  384,  384,  384,  391,
1201       391,  391,  391,  391,  391,  391,  391,  408,  408,  301,
1202       298,  378,  297,  296,  295,  288,  287,  408,  430,  384,
1203       393,  393,  393,  393,  393,  393,  393,  393,  395,  466,
1204       395,  395,  395,  395,  395,  395,  395,  395,  395,  397,
1205       430,  397,  397,  397,  397,  397,  397,  286,  285,  397,
1206       398,  466,  398,  398,  398,  398,  398,  398,  398,  398,
1207
1208       398,  284,  277,  398,  398,  398,  398,  398,  399,  399,
1209       399,  399,  399,  399,  399,  399,  450,  450,  450,  450,
1210       450,  450,  398,  398,  398,  398,  398,  401,  401,  401,
1211       401,  401,  401,  401,  401,  401,  276,  275,  401,  401,
1212       401,  401,  401,  402,  274,  402,  402,  402,  402,  402,
1213       402,  402,  402,  409,  409,  273,  257,  401,  401,  401,
1214       401,  401,  405,  409,  405,  405,  405,  405,  405,  405,
1215       405,  405,  410,  410,  410,  410,  410,  410,  410,  410,
1216       411,  411,  416,  416,  416,  416,  416,  416,  416,  416,
1217       411,  412,  412,  412,  412,  412,  412,  412,  412,  412,
1218
1219       412,  412,  256,  255,  412,  412,  412,  412,  412,  414,
1220       414,  414,  414,  414,  414,  414,  414,  468,  254,  414,
1221       252,  251,  246,  412,  412,  412,  412,  412,  415,  415,
1222       415,  415,  415,  415,  415,  415,  415,  415,  245,  468,
1223       244,  415,  415,  415,  415,  415,  418,  491,  418,  418,
1224       418,  418,  418,  418,  418,  418,  243,  491,  242,  566,
1225       415,  415,  415,  415,  415,  424,  424,  424,  424,  424,
1226       424,  424,  424,  433,  433,  433,  433,  433,  433,  433,
1227       433,  434,  434,  434,  434,  434,  434,  434,  434,  566,
1228       240,  229,  583,  424,  432,  493,  432,  432,  432,  432,
1229
1230       432,  432,  432,  432,  439,  493,  439,  439,  439,  439,
1231       439,  439,  439,  439,  443,  443,  443,  443,  443,  443,
1232       443,  443,  583,  228,  432,  445,  227,  445,  445,  445,
1233       445,  445,  445,  445,  445,  445,  447,  226,  447,  447,
1234       447,  447,  447,  447,  225,  223,  447,  448,  526,  448,
1235       448,  448,  448,  448,  448,  448,  448,  448,  526,  215,
1236       448,  448,  448,  448,  448,  449,  449,  449,  449,  449,
1237       449,  449,  449,  499,  499,  499,  499,  499,  499,  448,
1238       448,  448,  448,  448,  451,  451,  451,  451,  451,  451,
1239       451,  451,  451,  214,  211,  451,  451,  451,  451,  451,
1240
1241       452,  505,  452,  452,  452,  452,  452,  452,  452,  452,
1242       505,  210,  203,  201,  451,  451,  451,  451,  451,  453,
1243       453,  453,  453,  453,  453,  453,  453,  457,  200,  457,
1244       457,  457,  457,  457,  457,  460,  460,  465,  465,  465,
1245       465,  465,  465,  465,  465,  460,  463,  463,  463,  463,
1246       463,  463,  463,  463,  463,  463,  472,  199,  472,  472,
1247       472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
1248       473,  473,  473,  473,  474,  474,  474,  474,  474,  474,
1249       474,  474,  593,  520,  520,  520,  472,  476,  476,  476,
1250       476,  476,  476,  476,  476,  478,  478,  478,  478,  478,
1251
1252       478,  478,  478,  479,  479,  479,  479,  479,  479,  479,
1253       479,  520,  593,  198,  197,  476,  480,  480,  480,  480,
1254       480,  480,  480,  480,  481,  481,  481,  481,  481,  481,
1255       481,  481,  482,  196,  482,  482,  482,  483,  483,  483,
1256       483,  483,  483,  483,  483,  487,  194,  487,  487,  487,
1257       487,  487,  487,  492,  492,  492,  492,  492,  492,  492,
1258       492,  188,  482,  494,  184,  494,  494,  494,  494,  494,
1259       494,  494,  494,  494,  496,  181,  496,  496,  496,  496,
1260       496,  496,  180,  179,  496,  497,  527,  497,  497,  497,
1261       497,  497,  497,  497,  497,  497,  527,  178,  497,  497,
1262
1263       497,  497,  497,  498,  498,  498,  498,  498,  498,  498,
1264       498,  535,  535,  535,  535,  535,  535,  497,  497,  497,
1265       497,  497,  500,  500,  500,  500,  500,  500,  500,  500,
1266       177,  176,  171,  500,  500,  500,  500,  500,  501,  529,
1267       501,  501,  501,  501,  501,  501,  501,  501,  170,  529,
1268       164,  159,  500,  500,  500,  500,  500,  504,  504,  504,
1269       504,  504,  504,  504,  504,  504,  509,  157,  509,  509,
1270       509,  509,  509,  509,  509,  509,  511,  511,  511,  511,
1271       511,  511,  511,  511,  512,  512,  512,  512,  512,  512,
1272       512,  512,  513,  513,  513,  513,  513,  513,  513,  513,
1273
1274       514,  514,  514,  514,  514,  514,  514,  514,  515,  153,
1275       515,  515,  515,  516,  559,  516,  516,  516,  516,  516,
1276       516,  516,  516,  517,  559,  517,  517,  517,  517,  517,
1277       517,  517,  517,  147,  145,  142,  141,  518,  515,  518,
1278       518,  518,  518,  518,  518,  518,  518,  519,  139,  519,
1279       519,  519,  519,  519,  519,  519,  519,  523,  133,  523,
1280       523,  523,  523,  523,  523,  523,  523,  528,  528,  528,
1281       528,  528,  528,  528,  528,  530,  127,  530,  530,  530,
1282       530,  530,  530,  530,  530,  530,  532,  125,  532,  532,
1283       532,  532,  532,  532,  123,  121,  532,  533,  112,  533,
1284
1285       533,  533,  533,  533,  533,  533,  533,  546,  546,  546,
1286       533,  533,  533,  533,  533,  534,  534,  534,  534,  534,
1287       534,  534,  534,  590,  590,  590,  590,  590,  590,  533,
1288       533,  533,  533,  533,  536,  546,  536,  536,  536,  536,
1289       536,  536,  536,  536,  540,  540,  540,  540,  540,  540,
1290       540,  542,  111,  542,  542,  542,  542,  542,  542,  542,
1291       542,  543,  109,  543,  543,  543,  543,  543,  543,  543,
1292       543,  544,  105,  544,  544,  544,  544,  544,  544,  544,
1293       544,  545,  101,  545,  545,  545,  545,  545,  545,  545,
1294       545,  547,  547,  547,  547,  547,  547,  547,  547,  549,
1295
1296       100,  549,  549,  549,  549,  549,  549,  549,  549,  550,
1297        96,  550,  550,  550,  550,  550,  550,  550,  550,  547,
1298       551,   93,  551,  551,  551,  551,  551,  551,  552,  552,
1299       552,  552,  552,  552,  552,  552,  556,   91,  556,  556,
1300       556,  556,  556,  556,   89,   88,   87,   85,   80,  562,
1301       551,  562,  562,  562,  562,  562,  562,  562,  562,  565,
1302       565,  565,  565,  565,  565,  565,  565,  567,   73,  567,
1303       567,  567,  567,  567,  567,  567,  567,  568,   67,  568,
1304       568,  568,  568,  568,  568,  568,  568,  565,  569,   64,
1305       569,  569,  569,  569,  569,  569,  570,   60,  570,  570,
1306
1307       570,  570,  570,  570,  570,  570,  571,   59,  571,  571,
1308       571,  571,  571,  571,  571,  571,   58,  572,  569,  572,
1309       572,  572,  572,  572,  572,  572,  572,  573,  573,  573,
1310       573,  573,  573,  573,  573,  574,  574,  574,  574,  574,
1311       574,  574,  574,  575,  575,  575,  575,  575,  575,  575,
1312       575,  579,   56,  579,  579,  579,  579,  579,  579,  579,
1313       579,  580,   50,  580,  580,  580,  580,  580,  580,  580,
1314       580,  581,   48,  581,  581,  581,  581,  581,  581,  581,
1315       581,  582,   46,  582,  582,  582,  582,  582,  582,  582,
1316       582,  584,   45,  584,  584,  584,  584,  584,  584,  584,
1317
1318       584,  585,   44,  585,  585,  585,  585,  585,  585,  585,
1319       585,  586,   43,  586,  586,  586,  586,  586,  586,  588,
1320       588,  588,  588,  588,  588,  588,  588,  589,  589,  589,
1321       589,  589,  589,  589,  589,   42,   41,   37,   36,   35,
1322       592,  586,  592,  592,  592,  592,  592,  592,  592,  592,
1323       594,   33,  594,  594,  594,  594,  594,  594,  594,  594,
1324       595,   30,  595,  595,  595,  595,  595,  595,  595,  595,
1325       596,   24,  596,  596,  596,  596,  596,  596,  597,  597,
1326       597,  597,  597,  597,  597,  597,  598,  598,  598,  598,
1327       598,  598,  598,  598,   21,   20,   19,   17,   16,   15,
1328
1329       596,    0,    0,    0,    0,    0,  597,    0,    0,    0,
1330         0,    0,    0,    0,  598,  599,  599,  599,  599,  599,
1331       599,  599,  599,  600,  600,  600,  600,  600,  600,  600,
1332       600,  601,  601,  601,  601,  601,  601,  601,  601,    0,
1333         0,    0,    0,  599,    0,    0,    0,    0,    0,    0,
1334         0,  600,  605,  605,  605,  605,  605,  605,    0,  601,
1335       602,  602,  602,  602,  602,  602,  602,  602,  604,  604,
1336       604,  604,  604,  604,  604,  604,    0,    0,    0,    0,
1337       605,  608,  608,  608,  608,  608,  608,    0,  602,    0,
1338         0,    0,    0,    0,    0,    0,  604,  607,  607,  607,
1339
1340       607,  607,  607,  607,  607,    0,    0,    0,    0,  608,
1341         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1342         0,    0,    0,    0,    0,  607,  610,  610,  610,  610,
1343       610,  610,  610,  610,  610,  610,  610,  610,  610,  610,
1344       610,  611,  611,  611,  611,  611,  611,  611,  611,  611,
1345       611,  611,  611,  611,  611,  611,  612,  612,  612,  612,
1346       612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
1347       612,  613,  613,  613,  613,  613,  613,  613,  613,  613,
1348       613,  613,  613,  613,  613,  613,  614,    0,    0,    0,
1349       614,    0,  614,  614,  614,  614,    0,  614,  614,  614,
1350
1351       614,  615,  615,  615,  615,  615,  615,  615,  615,  615,
1352       615,  615,  615,  615,  615,  615,  616,    0,    0,    0,
1353       616,    0,  616,  616,  616,  616,    0,  616,  616,  616,
1354       616,  617,    0,    0,    0,  617,    0,  617,  617,  617,
1355       617,    0,  617,  617,  617,  617,  618,    0,    0,  618,
1356       618,    0,  618,  618,  618,  618,    0,  618,  618,  618,
1357       618,  619,  619,  619,    0,    0,  619,  620,    0,    0,
1358         0,  620,    0,  620,  620,  620,  620,    0,  620,  620,
1359       620,  620,  621,  621,  621,  621,  621,  621,  621,  621,
1360       621,  621,  621,  621,  621,  621,  621,  622,    0,    0,
1361
1362         0,  622,    0,  622,  622,  622,  622,    0,  622,  622,
1363       622,  622,  623,    0,    0,    0,  623,    0,  623,  623,
1364       623,  623,    0,  623,  623,  623,  623,  624,    0,    0,
1365       624,  624,    0,  624,  624,  624,  624,    0,  624,  624,
1366       624,  624,  625,    0,    0,  625,  625,  625,  625,  625,
1367       625,  625,    0,  625,    0,  625,  625,  627,    0,    0,
1368       627,  627,    0,  627,  627,  627,  627,  627,  627,  627,
1369       627,  627,  628,  628,  628,  628,  628,  628,  628,  628,
1370       628,  628,  628,  628,  628,  628,  628,  629,  629,    0,
1371       629,    0,  629,  629,  629,  629,  629,  629,  629,  629,
1372
1373       629,  629,  630,    0,    0,  630,  630,    0,  630,  630,
1374       630,  630,    0,  630,  630,  630,  630,  631,  631,  631,
1375         0,    0,  631,  632,  632,  632,  632,    0,    0,  632,
1376       633,  633,  633,  633,  633,  633,  633,  633,  633,  633,
1377       633,  633,  633,  633,  633,  635,  635,  635,    0,    0,
1378       635,  636,  636,  636,  636,    0,    0,  636,  637,  637,
1379       637,    0,    0,  637,  638,  638,  638,    0,    0,  638,
1380       639,  639,  639,    0,    0,  639,  640,  640,  640,  640,
1381         0,    0,  640,  641,  641,  641,    0,    0,  641,  642,
1382       642,  642,    0,    0,  642,  643,  643,  643,    0,    0,
1383
1384       643,  644,  644,  644,  644,    0,    0,  644,  645,  645,
1385       645,  645,  645,    0,    0,  645,  646,  646,  646,    0,
1386         0,  646,  647,  647,  647,    0,    0,  647,  648,  648,
1387       648,    0,    0,  648,  651,  651,  651,  651,    0,    0,
1388       651,  652,  652,  652,  652,  652,    0,    0,  652,  653,
1389       653,  653,    0,    0,  653,  654,  654,  654,    0,    0,
1390       654,  655,  655,  655,  655,    0,    0,  655,  656,  656,
1391       656,  656,  656,    0,    0,  656,  657,  657,  657,    0,
1392         0,  657,  658,    0,  658,  658,  658,    0,    0,  658,
1393       661,  661,  661,  661,    0,    0,  661,  662,  662,  662,
1394
1395       662,  662,    0,    0,  662,  665,  665,  665,    0,    0,
1396       665,  666,    0,  666,  666,  666,    0,    0,  666,  667,
1397       667,  667,  667,    0,    0,  667,  668,  668,  668,    0,
1398       668,    0,    0,  668,  669,  669,  669,    0,    0,  669,
1399       670,    0,  670,  670,  670,    0,    0,  670,  673,  673,
1400         0,  673,    0,    0,  673,  676,  676,  676,    0,    0,
1401       676,  677,    0,  677,  677,  677,    0,    0,  677,  678,
1402       678,  678,    0,    0,  678,  679,    0,  679,    0,  679,
1403         0,    0,  679,  680,    0,  680,    0,    0,  680,  609,
1404       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1405
1406       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1407       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1408       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1409       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1410       609,  609,  609,  609,  609,  609,  609,  609,  609,  609
1411     } ;
1412
1413 static yy_state_type yy_last_accepting_state;
1414 static char *yy_last_accepting_cpos;
1415
1416 /* The intent behind this definition is that it'll catch
1417  * any uses of REJECT which flex missed.
1418  */
1419 #define REJECT reject_used_but_not_detected
1420 #define yymore() yymore_used_but_not_detected
1421 #define YY_MORE_ADJ 0
1422 #define YY_RESTORE_YY_MORE_OFFSET
1423 char *yytext;
1424 #line 1 "parse.lex"
1425 #define INITIAL 0
1426 #line 2 "parse.lex"
1427 /*
1428  * Copyright (c) 1996, 1998-2004, 2007
1429  *      Todd C. Miller <Todd.Miller@courtesan.com>
1430  *
1431  * Permission to use, copy, modify, and distribute this software for any
1432  * purpose with or without fee is hereby granted, provided that the above
1433  * copyright notice and this permission notice appear in all copies.
1434  *
1435  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1436  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1437  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1438  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1439  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1440  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1441  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1442  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1443  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
1444  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1445  *
1446  * Sponsored in part by the Defense Advanced Research Projects
1447  * Agency (DARPA) and Air Force Research Laboratory, Air Force
1448  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
1449  */
1450
1451 #include <config.h>
1452
1453 #include <sys/types.h>
1454 #include <sys/param.h>
1455 #include <stdio.h>
1456 #ifdef STDC_HEADERS
1457 # include <stdlib.h>
1458 # include <stddef.h>
1459 #else
1460 # ifdef HAVE_STDLIB_H
1461 #  include <stdlib.h>
1462 # endif
1463 #endif /* STDC_HEADERS */
1464 #ifdef HAVE_STRING_H
1465 # include <string.h>
1466 #else
1467 # ifdef HAVE_STRINGS_H
1468 #  include <strings.h>
1469 # endif
1470 #endif /* HAVE_STRING_H */
1471 #ifdef HAVE_UNISTD_H
1472 # include <unistd.h>
1473 #endif /* HAVE_UNISTD_H */
1474 #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
1475 # include <malloc.h>
1476 #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
1477 #include <ctype.h>
1478 #include "sudo.h"
1479 #include "parse.h"
1480 #include <sudo.tab.h>
1481
1482 #ifndef lint
1483 __unused static const char rcsid[] = "$Sudo: lex.yy.c,v 1.46.2.9 2008/02/09 14:44:47 millert Exp $";
1484 #endif /* lint */
1485
1486 #undef yywrap           /* guard against a yywrap macro */
1487
1488 extern YYSTYPE yylval;
1489 extern int clearaliases;
1490 int sudolineno = 1;
1491 static int sawspace = 0;
1492 static int arg_len = 0;
1493 static int arg_size = 0;
1494
1495 static int ipv6_valid           __P((const char *s));
1496 static void _fill               __P((char *, int, int));
1497 static void append              __P((char *, int));
1498 static void fill_cmnd           __P((char *, int));
1499 static void fill_args           __P((char *, int, int));
1500 extern void reset_aliases       __P((void));
1501 extern void yyerror             __P((char *));
1502
1503 #define fill(a, b)              _fill(a, b, 0)
1504
1505 /* realloc() to size + COMMANDARGINC to make room for command args */
1506 #define COMMANDARGINC   64
1507
1508 #ifdef TRACELEXER
1509 #define LEXTRACE(msg)   fputs(msg, stderr)
1510 #else
1511 #define LEXTRACE(msg)
1512 #endif
1513 /* XXX - convert GOTRUNAS to exclusive state (GOTDEFS cannot be) */
1514 #define GOTRUNAS 1
1515
1516 #define GOTDEFS 2
1517
1518 #define GOTCMND 3
1519
1520 #define STARTDEFS 4
1521
1522 #define INDEFS 5
1523
1524 #define INSTR 6
1525
1526 #line 1527 "lex.yy.c"
1527
1528 /* Macros after this point can all be overridden by user definitions in
1529  * section 1.
1530  */
1531
1532 #ifndef YY_SKIP_YYWRAP
1533 #ifdef __cplusplus
1534 extern "C" int yywrap YY_PROTO(( void ));
1535 #else
1536 extern int yywrap YY_PROTO(( void ));
1537 #endif
1538 #endif
1539
1540 #ifndef YY_NO_UNPUT
1541 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1542 #endif
1543
1544 #ifndef yytext_ptr
1545 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1546 #endif
1547
1548 #ifdef YY_NEED_STRLEN
1549 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1550 #endif
1551
1552 #ifndef YY_NO_INPUT
1553 #ifdef __cplusplus
1554 static int yyinput YY_PROTO(( void ));
1555 #else
1556 static int input YY_PROTO(( void ));
1557 #endif
1558 #endif
1559
1560 #if defined(YY_STACK_USED) && YY_STACK_USED
1561 static int yy_start_stack_ptr = 0;
1562 static int yy_start_stack_depth = 0;
1563 static int *yy_start_stack = 0;
1564 #ifndef YY_NO_PUSH_STATE
1565 static void yy_push_state YY_PROTO(( int new_state ));
1566 #endif
1567 #ifndef YY_NO_POP_STATE
1568 static void yy_pop_state YY_PROTO(( void ));
1569 #endif
1570 #ifndef YY_NO_TOP_STATE
1571 static int yy_top_state YY_PROTO(( void ));
1572 #endif
1573
1574 #else
1575 #define YY_NO_PUSH_STATE 1
1576 #define YY_NO_POP_STATE 1
1577 #define YY_NO_TOP_STATE 1
1578 #endif
1579
1580 #ifdef YY_MALLOC_DECL
1581 YY_MALLOC_DECL
1582 #else
1583 #ifdef __STDC__
1584 #ifndef __cplusplus
1585 #include <stdlib.h>
1586 #endif
1587 #else
1588 /* Just try to get by without declaring the routines.  This will fail
1589  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1590  * or sizeof(void*) != sizeof(int).
1591  */
1592 #endif
1593 #endif
1594
1595 /* Amount of stuff to slurp up with each read. */
1596 #ifndef YY_READ_BUF_SIZE
1597 #define YY_READ_BUF_SIZE 8192
1598 #endif
1599
1600 /* Copy whatever the last rule matched to the standard output. */
1601
1602 #ifndef ECHO
1603 /* This used to be an fputs(), but since the string might contain NUL's,
1604  * we now use fwrite().
1605  */
1606 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1607 #endif
1608
1609 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1610  * is returned in "result".
1611  */
1612 #ifndef YY_INPUT
1613 #define YY_INPUT(buf,result,max_size) \
1614         if ( yy_current_buffer->yy_is_interactive ) \
1615                 { \
1616                 int c = '*', n; \
1617                 for ( n = 0; n < max_size && \
1618                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1619                         buf[n] = (char) c; \
1620                 if ( c == '\n' ) \
1621                         buf[n++] = (char) c; \
1622                 if ( c == EOF && ferror( yyin ) ) \
1623                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1624                 result = n; \
1625                 } \
1626         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1627                   && ferror( yyin ) ) \
1628                 YY_FATAL_ERROR( "input in flex scanner failed" );
1629 #endif
1630
1631 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1632  * we don't want an extra ';' after the "return" because that will cause
1633  * some compilers to complain about unreachable statements.
1634  */
1635 #ifndef yyterminate
1636 #define yyterminate() return YY_NULL
1637 #endif
1638
1639 /* Number of entries by which start-condition stack grows. */
1640 #ifndef YY_START_STACK_INCR
1641 #define YY_START_STACK_INCR 25
1642 #endif
1643
1644 /* Report a fatal error. */
1645 #ifndef YY_FATAL_ERROR
1646 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1647 #endif
1648
1649 /* Default declaration of generated scanner - a define so the user can
1650  * easily add parameters.
1651  */
1652 #ifndef YY_DECL
1653 #define YY_DECL int yylex YY_PROTO(( void ))
1654 #endif
1655
1656 /* Code executed at the beginning of each rule, after yytext and yyleng
1657  * have been set up.
1658  */
1659 #ifndef YY_USER_ACTION
1660 #define YY_USER_ACTION
1661 #endif
1662
1663 /* Code executed at the end of each rule. */
1664 #ifndef YY_BREAK
1665 #define YY_BREAK break;
1666 #endif
1667
1668 #define YY_RULE_SETUP \
1669         if ( yyleng > 0 ) \
1670                 yy_current_buffer->yy_at_bol = \
1671                                 (yytext[yyleng - 1] == '\n'); \
1672         YY_USER_ACTION
1673
1674 YY_DECL
1675         {
1676         register yy_state_type yy_current_state;
1677         register char *yy_cp, *yy_bp;
1678         register int yy_act;
1679
1680 #line 108 "parse.lex"
1681
1682 #line 1683 "lex.yy.c"
1683
1684         if ( yy_init )
1685                 {
1686                 yy_init = 0;
1687
1688 #ifdef YY_USER_INIT
1689                 YY_USER_INIT;
1690 #endif
1691
1692                 if ( ! yy_start )
1693                         yy_start = 1;   /* first start state */
1694
1695                 if ( ! yyin )
1696                         yyin = stdin;
1697
1698                 if ( ! yyout )
1699                         yyout = stdout;
1700
1701                 if ( ! yy_current_buffer )
1702                         yy_current_buffer =
1703                                 yy_create_buffer( yyin, YY_BUF_SIZE );
1704
1705                 yy_load_buffer_state();
1706                 }
1707
1708         while ( 1 )             /* loops until end-of-file is reached */
1709                 {
1710                 yy_cp = yy_c_buf_p;
1711
1712                 /* Support of yytext. */
1713                 *yy_cp = yy_hold_char;
1714
1715                 /* yy_bp points to the position in yy_ch_buf of the start of
1716                  * the current run.
1717                  */
1718                 yy_bp = yy_cp;
1719
1720                 yy_current_state = yy_start;
1721                 yy_current_state += YY_AT_BOL();
1722 yy_match:
1723                 do
1724                         {
1725                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1726                         if ( yy_accept[yy_current_state] )
1727                                 {
1728                                 yy_last_accepting_state = yy_current_state;
1729                                 yy_last_accepting_cpos = yy_cp;
1730                                 }
1731                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1732                                 {
1733                                 yy_current_state = (int) yy_def[yy_current_state];
1734                                 if ( yy_current_state >= 610 )
1735                                         yy_c = yy_meta[(unsigned int) yy_c];
1736                                 }
1737                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1738                         ++yy_cp;
1739                         }
1740                 while ( yy_base[yy_current_state] != 3790 );
1741
1742 yy_find_action:
1743                 yy_act = yy_accept[yy_current_state];
1744                 if ( yy_act == 0 )
1745                         { /* have to back up */
1746                         yy_cp = yy_last_accepting_cpos;
1747                         yy_current_state = yy_last_accepting_state;
1748                         yy_act = yy_accept[yy_current_state];
1749                         }
1750
1751                 YY_DO_BEFORE_ACTION;
1752
1753
1754 do_action:      /* This label is used only to access EOF actions. */
1755
1756
1757                 switch ( yy_act )
1758         { /* beginning of action switch */
1759                         case 0: /* must back up */
1760                         /* undo the effects of YY_DO_BEFORE_ACTION */
1761                         *yy_cp = yy_hold_char;
1762                         yy_cp = yy_last_accepting_cpos;
1763                         yy_current_state = yy_last_accepting_state;
1764                         goto yy_find_action;
1765
1766 case 1:
1767 YY_RULE_SETUP
1768 #line 109 "parse.lex"
1769 BEGIN STARTDEFS;
1770         YY_BREAK
1771 case 2:
1772 YY_RULE_SETUP
1773 #line 111 "parse.lex"
1774 {
1775                             BEGIN INDEFS;
1776                             LEXTRACE("DEFVAR ");
1777                             fill(yytext, yyleng);
1778                             return(DEFVAR);
1779                         }
1780         YY_BREAK
1781
1782 case 3:
1783 YY_RULE_SETUP
1784 #line 119 "parse.lex"
1785 {
1786                             BEGIN STARTDEFS;
1787                             LEXTRACE(", ");
1788                             return(',');
1789                         }                       /* return ',' */
1790         YY_BREAK
1791 case 4:
1792 YY_RULE_SETUP
1793 #line 125 "parse.lex"
1794 {
1795                             LEXTRACE("= ");
1796                             return('=');
1797                         }                       /* return '=' */
1798         YY_BREAK
1799 case 5:
1800 YY_RULE_SETUP
1801 #line 130 "parse.lex"
1802 {
1803                             LEXTRACE("+= ");
1804                             return('+');
1805                         }                       /* return '+' */
1806         YY_BREAK
1807 case 6:
1808 YY_RULE_SETUP
1809 #line 135 "parse.lex"
1810 {
1811                             LEXTRACE("-= ");
1812                             return('-');
1813                         }                       /* return '-' */
1814         YY_BREAK
1815 case 7:
1816 YY_RULE_SETUP
1817 #line 140 "parse.lex"
1818 {
1819                             LEXTRACE("BEGINSTR ");
1820                             yylval.string = NULL;
1821                             BEGIN INSTR;
1822                         }
1823         YY_BREAK
1824 case 8:
1825 YY_RULE_SETUP
1826 #line 146 "parse.lex"
1827 {
1828                             LEXTRACE("WORD(2) ");
1829                             fill(yytext, yyleng);
1830                             return(WORD);
1831                         }
1832         YY_BREAK
1833
1834
1835 case 9:
1836 YY_RULE_SETUP
1837 #line 154 "parse.lex"
1838 {
1839                             /* Line continuation char followed by newline. */
1840                             ++sudolineno;
1841                             LEXTRACE("\n");
1842                         }
1843         YY_BREAK
1844 case 10:
1845 YY_RULE_SETUP
1846 #line 160 "parse.lex"
1847 {
1848                             LEXTRACE("ENDSTR ");
1849                             BEGIN INDEFS;
1850                             return(WORD);
1851                         }
1852         YY_BREAK
1853 case 11:
1854 YY_RULE_SETUP
1855 #line 166 "parse.lex"
1856 {
1857                             LEXTRACE("STRBODY ");
1858                             /* Push back line continuation char if present */
1859                             if (yyleng > 2 && yytext[yyleng - 1] == '\\' &&
1860                                 isspace((unsigned char)yytext[yyleng - 2]))
1861                                 yyless(yyleng - 1);
1862                             append(yytext, yyleng);
1863                         }
1864         YY_BREAK
1865
1866
1867 case 12:
1868 YY_RULE_SETUP
1869 #line 177 "parse.lex"
1870 {
1871                             /* quoted fnmatch glob char, pass verbatim */
1872                             LEXTRACE("QUOTEDCHAR ");
1873                             fill_args(yytext, 2, sawspace);
1874                             sawspace = FALSE;
1875                         }
1876         YY_BREAK
1877 case 13:
1878 YY_RULE_SETUP
1879 #line 184 "parse.lex"
1880 {
1881                             /* quoted sudoers special char, strip backslash */
1882                             LEXTRACE("QUOTEDCHAR ");
1883                             fill_args(yytext + 1, 1, sawspace);
1884                             sawspace = FALSE;
1885                         }
1886         YY_BREAK
1887 case 14:
1888 YY_RULE_SETUP
1889 #line 191 "parse.lex"
1890 {
1891                             BEGIN INITIAL;
1892                             unput(*yytext);
1893                             return(COMMAND);
1894                         }                       /* end of command line args */
1895         YY_BREAK
1896 case 15:
1897 YY_RULE_SETUP
1898 #line 197 "parse.lex"
1899 {
1900                             LEXTRACE("ARG ");
1901                             fill_args(yytext, yyleng, sawspace);
1902                             sawspace = FALSE;
1903                         }                       /* a command line arg */
1904         YY_BREAK
1905
1906 case 16:
1907 YY_RULE_SETUP
1908 #line 204 "parse.lex"
1909 {
1910                             BEGIN GOTDEFS;
1911                             switch (yytext[8]) {
1912                                 case ':':
1913                                     LEXTRACE("DEFAULTS_USER ");
1914                                     return(DEFAULTS_USER);
1915                                 case '>':
1916                                     LEXTRACE("DEFAULTS_RUNAS ");
1917                                     return(DEFAULTS_RUNAS);
1918                                 case '@':
1919                                     LEXTRACE("DEFAULTS_HOST ");
1920                                     return(DEFAULTS_HOST);
1921                                 default:
1922                                     LEXTRACE("DEFAULTS ");
1923                                     return(DEFAULTS);
1924                             }
1925                         }
1926         YY_BREAK
1927 case 17:
1928 YY_RULE_SETUP
1929 #line 222 "parse.lex"
1930 {
1931                             fill(yytext, yyleng);
1932                             switch (*yytext) {
1933                                 case 'H':
1934                                     LEXTRACE("HOSTALIAS ");
1935                                     return(HOSTALIAS);
1936                                 case 'C':
1937                                     LEXTRACE("CMNDALIAS ");
1938                                     return(CMNDALIAS);
1939                                 case 'U':
1940                                     LEXTRACE("USERALIAS ");
1941                                     return(USERALIAS);
1942                                 case 'R':
1943                                     LEXTRACE("RUNASALIAS ");
1944                                     BEGIN GOTRUNAS;
1945                                     return(RUNASALIAS);
1946                             }
1947                         }
1948         YY_BREAK
1949 case 18:
1950 YY_RULE_SETUP
1951 #line 241 "parse.lex"
1952 {
1953                                 /* cmnd does not require passwd for this user */
1954                                 LEXTRACE("NOPASSWD ");
1955                                 return(NOPASSWD);
1956                         }
1957         YY_BREAK
1958 case 19:
1959 YY_RULE_SETUP
1960 #line 247 "parse.lex"
1961 {
1962                                 /* cmnd requires passwd for this user */
1963                                 LEXTRACE("PASSWD ");
1964                                 return(PASSWD);
1965                         }
1966         YY_BREAK
1967 case 20:
1968 YY_RULE_SETUP
1969 #line 253 "parse.lex"
1970 {
1971                                 LEXTRACE("NOEXEC ");
1972                                 return(NOEXEC);
1973                         }
1974         YY_BREAK
1975 case 21:
1976 YY_RULE_SETUP
1977 #line 258 "parse.lex"
1978 {
1979                                 LEXTRACE("EXEC ");
1980                                 return(EXEC);
1981                         }
1982         YY_BREAK
1983 case 22:
1984 YY_RULE_SETUP
1985 #line 263 "parse.lex"
1986 {
1987                                 LEXTRACE("SETENV ");
1988                                 return(SETENV);
1989                         }
1990         YY_BREAK
1991 case 23:
1992 YY_RULE_SETUP
1993 #line 268 "parse.lex"
1994 {
1995                                 LEXTRACE("NOSETENV ");
1996                                 return(NOSETENV);
1997                         }
1998         YY_BREAK
1999 case 24:
2000 YY_RULE_SETUP
2001 #line 273 "parse.lex"
2002 {
2003                             /* netgroup */
2004                             fill(yytext, yyleng);
2005                             LEXTRACE("NETGROUP ");
2006                             return(NETGROUP);
2007                         }
2008         YY_BREAK
2009 case 25:
2010 YY_RULE_SETUP
2011 #line 280 "parse.lex"
2012 {
2013                             /* UN*X group */
2014                             fill(yytext, yyleng);
2015                             LEXTRACE("GROUP ");
2016                             return(USERGROUP);
2017                         }
2018         YY_BREAK
2019 case 26:
2020 YY_RULE_SETUP
2021 #line 287 "parse.lex"
2022 {
2023                             fill(yytext, yyleng);
2024                             LEXTRACE("NTWKADDR ");
2025                             return(NTWKADDR);
2026                         }
2027         YY_BREAK
2028 case 27:
2029 YY_RULE_SETUP
2030 #line 293 "parse.lex"
2031 {
2032                             fill(yytext, yyleng);
2033                             LEXTRACE("NTWKADDR ");
2034                             return(NTWKADDR);
2035                         }
2036         YY_BREAK
2037 case 28:
2038 YY_RULE_SETUP
2039 #line 299 "parse.lex"
2040 {
2041                             if (!ipv6_valid(yytext)) {
2042                                 LEXTRACE("ERROR ");
2043                                 return(ERROR);
2044                             }
2045                             fill(yytext, yyleng);
2046                             LEXTRACE("NTWKADDR ");
2047                             return(NTWKADDR);
2048                         }
2049         YY_BREAK
2050 case 29:
2051 YY_RULE_SETUP
2052 #line 309 "parse.lex"
2053 {
2054                             if (!ipv6_valid(yytext)) {
2055                                 LEXTRACE("ERROR ");
2056                                 return(ERROR);
2057                             }
2058                             fill(yytext, yyleng);
2059                             LEXTRACE("NTWKADDR ");
2060                             return(NTWKADDR);
2061                         }
2062         YY_BREAK
2063 case 30:
2064 YY_RULE_SETUP
2065 #line 319 "parse.lex"
2066 {
2067                                 BEGIN GOTRUNAS;
2068                                 LEXTRACE("RUNAS ");
2069                                 return (RUNAS);
2070                         }
2071         YY_BREAK
2072 case 31:
2073 YY_RULE_SETUP
2074 #line 325 "parse.lex"
2075 {
2076                             if (strcmp(yytext, "ALL") == 0) {
2077                                 LEXTRACE("ALL ");
2078                                 return(ALL);
2079                             }
2080 #ifdef HAVE_SELINUX
2081                             /* XXX - restrict type/role to initial state */
2082                             if (strcmp(yytext, "TYPE") == 0) {
2083                                 LEXTRACE("TYPE ");
2084                                 return(TYPE);
2085                             }
2086                             if (strcmp(yytext, "ROLE") == 0) {
2087                                 LEXTRACE("ROLE ");
2088                                 return(ROLE);
2089                             }
2090 #endif /* HAVE_SELINUX */
2091                             fill(yytext, yyleng);
2092                             LEXTRACE("ALIAS ");
2093                             return(ALIAS);
2094                         }
2095         YY_BREAK
2096 case 32:
2097 YY_RULE_SETUP
2098 #line 346 "parse.lex"
2099 {
2100                             /* username/uid that user can run command as */
2101                             fill(yytext, yyleng);
2102                             LEXTRACE("WORD(3) ");
2103                             return(WORD);
2104                         }
2105         YY_BREAK
2106 case 33:
2107 YY_RULE_SETUP
2108 #line 353 "parse.lex"
2109 {
2110                             BEGIN INITIAL;
2111                             ++sudolineno;
2112                             LEXTRACE("\n");
2113                             return(COMMENT);
2114                         }
2115         YY_BREAK
2116 case 34:
2117 YY_RULE_SETUP
2118 #line 360 "parse.lex"
2119 {
2120                             BEGIN INITIAL;
2121                         }
2122         YY_BREAK
2123 case 35:
2124 YY_RULE_SETUP
2125 #line 364 "parse.lex"
2126 {
2127                             BEGIN GOTCMND;
2128                             LEXTRACE("COMMAND ");
2129                             fill_cmnd(yytext, yyleng);
2130                         }                       /* sudo -e */
2131         YY_BREAK
2132 case 36:
2133 YY_RULE_SETUP
2134 #line 370 "parse.lex"
2135 {
2136                             /* directories can't have args... */
2137                             if (yytext[yyleng - 1] == '/') {
2138                                 LEXTRACE("COMMAND ");
2139                                 fill_cmnd(yytext, yyleng);
2140                                 return(COMMAND);
2141                             } else {
2142                                 BEGIN GOTCMND;
2143                                 LEXTRACE("COMMAND ");
2144                                 fill_cmnd(yytext, yyleng);
2145                             }
2146                         }                       /* a pathname */
2147         YY_BREAK
2148 case 37:
2149 YY_RULE_SETUP
2150 #line 383 "parse.lex"
2151 {
2152                             /* a word */
2153                             fill(yytext, yyleng);
2154                             LEXTRACE("WORD(4) ");
2155                             return(WORD);
2156                         }
2157         YY_BREAK
2158 case 38:
2159 YY_RULE_SETUP
2160 #line 390 "parse.lex"
2161 {
2162                             LEXTRACE(", ");
2163                             return(',');
2164                         }                       /* return ',' */
2165         YY_BREAK
2166 case 39:
2167 YY_RULE_SETUP
2168 #line 395 "parse.lex"
2169 {
2170                             LEXTRACE("= ");
2171                             return('=');
2172                         }                       /* return '=' */
2173         YY_BREAK
2174 case 40:
2175 YY_RULE_SETUP
2176 #line 400 "parse.lex"
2177 {
2178                             LEXTRACE(": ");
2179                             return(':');
2180                         }                       /* return ':' */
2181         YY_BREAK
2182 case 41:
2183 YY_RULE_SETUP
2184 #line 405 "parse.lex"
2185 {
2186                             if (yyleng % 2 == 1)
2187                                 return('!');    /* return '!' */
2188                         }
2189         YY_BREAK
2190 case 42:
2191 YY_RULE_SETUP
2192 #line 410 "parse.lex"
2193 {
2194                             BEGIN INITIAL;
2195                             ++sudolineno;
2196                             LEXTRACE("\n");
2197                             return(COMMENT);
2198                         }                       /* return newline */
2199         YY_BREAK
2200 case 43:
2201 YY_RULE_SETUP
2202 #line 417 "parse.lex"
2203 {                       /* throw away space/tabs */
2204                             sawspace = TRUE;    /* but remember for fill_args */
2205                         }
2206         YY_BREAK
2207 case 44:
2208 YY_RULE_SETUP
2209 #line 421 "parse.lex"
2210 {
2211                             sawspace = TRUE;    /* remember for fill_args */
2212                             ++sudolineno;
2213                             LEXTRACE("\n\t");
2214                         }                       /* throw away EOL after \ */
2215         YY_BREAK
2216 case 45:
2217 YY_RULE_SETUP
2218 #line 427 "parse.lex"
2219 {
2220                             BEGIN INITIAL;
2221                             ++sudolineno;
2222                             LEXTRACE("\n");
2223                             return(COMMENT);
2224                         }                       /* return comments */
2225         YY_BREAK
2226 case 46:
2227 YY_RULE_SETUP
2228 #line 434 "parse.lex"
2229 {
2230                             LEXTRACE("ERROR ");
2231                             return(ERROR);
2232                         }       /* parse error */
2233         YY_BREAK
2234 case YY_STATE_EOF(INITIAL):
2235 case YY_STATE_EOF(GOTRUNAS):
2236 case YY_STATE_EOF(GOTDEFS):
2237 case YY_STATE_EOF(GOTCMND):
2238 case YY_STATE_EOF(STARTDEFS):
2239 case YY_STATE_EOF(INDEFS):
2240 case YY_STATE_EOF(INSTR):
2241 #line 439 "parse.lex"
2242 {
2243                             if (YY_START != INITIAL) {
2244                                 BEGIN INITIAL;
2245                                 LEXTRACE("ERROR ");
2246                                 return(ERROR);
2247                             }
2248                             yyterminate();
2249                         }
2250         YY_BREAK
2251 case 47:
2252 YY_RULE_SETUP
2253 #line 448 "parse.lex"
2254 ECHO;
2255         YY_BREAK
2256 #line 2257 "lex.yy.c"
2257
2258         case YY_END_OF_BUFFER:
2259                 {
2260                 /* Amount of text matched not including the EOB char. */
2261                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2262
2263                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2264                 *yy_cp = yy_hold_char;
2265                 YY_RESTORE_YY_MORE_OFFSET
2266
2267                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2268                         {
2269                         /* We're scanning a new file or input source.  It's
2270                          * possible that this happened because the user
2271                          * just pointed yyin at a new source and called
2272                          * yylex().  If so, then we have to assure
2273                          * consistency between yy_current_buffer and our
2274                          * globals.  Here is the right place to do so, because
2275                          * this is the first action (other than possibly a
2276                          * back-up) that will match for the new input source.
2277                          */
2278                         yy_n_chars = yy_current_buffer->yy_n_chars;
2279                         yy_current_buffer->yy_input_file = yyin;
2280                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2281                         }
2282
2283                 /* Note that here we test for yy_c_buf_p "<=" to the position
2284                  * of the first EOB in the buffer, since yy_c_buf_p will
2285                  * already have been incremented past the NUL character
2286                  * (since all states make transitions on EOB to the
2287                  * end-of-buffer state).  Contrast this with the test
2288                  * in input().
2289                  */
2290                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2291                         { /* This was really a NUL. */
2292                         yy_state_type yy_next_state;
2293
2294                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2295
2296                         yy_current_state = yy_get_previous_state();
2297
2298                         /* Okay, we're now positioned to make the NUL
2299                          * transition.  We couldn't have
2300                          * yy_get_previous_state() go ahead and do it
2301                          * for us because it doesn't know how to deal
2302                          * with the possibility of jamming (and we don't
2303                          * want to build jamming into it because then it
2304                          * will run more slowly).
2305                          */
2306
2307                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2308
2309                         yy_bp = yytext_ptr + YY_MORE_ADJ;
2310
2311                         if ( yy_next_state )
2312                                 {
2313                                 /* Consume the NUL. */
2314                                 yy_cp = ++yy_c_buf_p;
2315                                 yy_current_state = yy_next_state;
2316                                 goto yy_match;
2317                                 }
2318
2319                         else
2320                                 {
2321                                 yy_cp = yy_c_buf_p;
2322                                 goto yy_find_action;
2323                                 }
2324                         }
2325
2326                 else switch ( yy_get_next_buffer() )
2327                         {
2328                         case EOB_ACT_END_OF_FILE:
2329                                 {
2330                                 yy_did_buffer_switch_on_eof = 0;
2331
2332                                 if ( yywrap() )
2333                                         {
2334                                         /* Note: because we've taken care in
2335                                          * yy_get_next_buffer() to have set up
2336                                          * yytext, we can now set up
2337                                          * yy_c_buf_p so that if some total
2338                                          * hoser (like flex itself) wants to
2339                                          * call the scanner after we return the
2340                                          * YY_NULL, it'll still work - another
2341                                          * YY_NULL will get returned.
2342                                          */
2343                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2344
2345                                         yy_act = YY_STATE_EOF(YY_START);
2346                                         goto do_action;
2347                                         }
2348
2349                                 else
2350                                         {
2351                                         if ( ! yy_did_buffer_switch_on_eof )
2352                                                 YY_NEW_FILE;
2353                                         }
2354                                 break;
2355                                 }
2356
2357                         case EOB_ACT_CONTINUE_SCAN:
2358                                 yy_c_buf_p =
2359                                         yytext_ptr + yy_amount_of_matched_text;
2360
2361                                 yy_current_state = yy_get_previous_state();
2362
2363                                 yy_cp = yy_c_buf_p;
2364                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2365                                 goto yy_match;
2366
2367                         case EOB_ACT_LAST_MATCH:
2368                                 yy_c_buf_p =
2369                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2370
2371                                 yy_current_state = yy_get_previous_state();
2372
2373                                 yy_cp = yy_c_buf_p;
2374                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2375                                 goto yy_find_action;
2376                         }
2377                 break;
2378                 }
2379
2380         default:
2381                 YY_FATAL_ERROR(
2382                         "fatal flex scanner internal error--no action found" );
2383         } /* end of action switch */
2384                 } /* end of scanning one token */
2385         } /* end of yylex */
2386
2387
2388 /* yy_get_next_buffer - try to read in a new buffer
2389  *
2390  * Returns a code representing an action:
2391  *      EOB_ACT_LAST_MATCH -
2392  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2393  *      EOB_ACT_END_OF_FILE - end of file
2394  */
2395
2396 static int yy_get_next_buffer()
2397         {
2398         register char *dest = yy_current_buffer->yy_ch_buf;
2399         register char *source = yytext_ptr;
2400         register int number_to_move, i;
2401         int ret_val;
2402
2403         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2404                 YY_FATAL_ERROR(
2405                 "fatal flex scanner internal error--end of buffer missed" );
2406
2407         if ( yy_current_buffer->yy_fill_buffer == 0 )
2408                 { /* Don't try to fill the buffer, so this is an EOF. */
2409                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2410                         {
2411                         /* We matched a single character, the EOB, so
2412                          * treat this as a final EOF.
2413                          */
2414                         return EOB_ACT_END_OF_FILE;
2415                         }
2416
2417                 else
2418                         {
2419                         /* We matched some text prior to the EOB, first
2420                          * process it.
2421                          */
2422                         return EOB_ACT_LAST_MATCH;
2423                         }
2424                 }
2425
2426         /* Try to read more data. */
2427
2428         /* First move last chars to start of buffer. */
2429         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2430
2431         for ( i = 0; i < number_to_move; ++i )
2432                 *(dest++) = *(source++);
2433
2434         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2435                 /* don't do the read, it's not guaranteed to return an EOF,
2436                  * just force an EOF
2437                  */
2438                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2439
2440         else
2441                 {
2442                 int num_to_read =
2443                         yy_current_buffer->yy_buf_size - number_to_move - 1;
2444
2445                 while ( num_to_read <= 0 )
2446                         { /* Not enough room in the buffer - grow it. */
2447 #ifdef YY_USES_REJECT
2448                         YY_FATAL_ERROR(
2449 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2450 #else
2451
2452                         /* just a shorter name for the current buffer */
2453                         YY_BUFFER_STATE b = yy_current_buffer;
2454
2455                         int yy_c_buf_p_offset =
2456                                 (int) (yy_c_buf_p - b->yy_ch_buf);
2457
2458                         if ( b->yy_is_our_buffer )
2459                                 {
2460                                 int new_size = b->yy_buf_size * 2;
2461
2462                                 if ( new_size <= 0 )
2463                                         b->yy_buf_size += b->yy_buf_size / 8;
2464                                 else
2465                                         b->yy_buf_size *= 2;
2466
2467                                 b->yy_ch_buf = (char *)
2468                                         /* Include room in for 2 EOB chars. */
2469                                         yy_flex_realloc( (void *) b->yy_ch_buf,
2470                                                          b->yy_buf_size + 2 );
2471                                 }
2472                         else
2473                                 /* Can't grow it, we don't own it. */
2474                                 b->yy_ch_buf = 0;
2475
2476                         if ( ! b->yy_ch_buf )
2477                                 YY_FATAL_ERROR(
2478                                 "fatal error - scanner input buffer overflow" );
2479
2480                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2481
2482                         num_to_read = yy_current_buffer->yy_buf_size -
2483                                                 number_to_move - 1;
2484 #endif
2485                         }
2486
2487                 if ( num_to_read > YY_READ_BUF_SIZE )
2488                         num_to_read = YY_READ_BUF_SIZE;
2489
2490                 /* Read in more data. */
2491                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2492                         yy_n_chars, num_to_read );
2493
2494                 yy_current_buffer->yy_n_chars = yy_n_chars;
2495                 }
2496
2497         if ( yy_n_chars == 0 )
2498                 {
2499                 if ( number_to_move == YY_MORE_ADJ )
2500                         {
2501                         ret_val = EOB_ACT_END_OF_FILE;
2502                         yyrestart( yyin );
2503                         }
2504
2505                 else
2506                         {
2507                         ret_val = EOB_ACT_LAST_MATCH;
2508                         yy_current_buffer->yy_buffer_status =
2509                                 YY_BUFFER_EOF_PENDING;
2510                         }
2511                 }
2512
2513         else
2514                 ret_val = EOB_ACT_CONTINUE_SCAN;
2515
2516         yy_n_chars += number_to_move;
2517         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2518         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2519
2520         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2521
2522         return ret_val;
2523         }
2524
2525
2526 /* yy_get_previous_state - get the state just before the EOB char was reached */
2527
2528 static yy_state_type yy_get_previous_state()
2529         {
2530         register yy_state_type yy_current_state;
2531         register char *yy_cp;
2532
2533         yy_current_state = yy_start;
2534         yy_current_state += YY_AT_BOL();
2535
2536         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2537                 {
2538                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2539                 if ( yy_accept[yy_current_state] )
2540                         {
2541                         yy_last_accepting_state = yy_current_state;
2542                         yy_last_accepting_cpos = yy_cp;
2543                         }
2544                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2545                         {
2546                         yy_current_state = (int) yy_def[yy_current_state];
2547                         if ( yy_current_state >= 610 )
2548                                 yy_c = yy_meta[(unsigned int) yy_c];
2549                         }
2550                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2551                 }
2552
2553         return yy_current_state;
2554         }
2555
2556
2557 /* yy_try_NUL_trans - try to make a transition on the NUL character
2558  *
2559  * synopsis
2560  *      next_state = yy_try_NUL_trans( current_state );
2561  */
2562
2563 #ifdef YY_USE_PROTOS
2564 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2565 #else
2566 static yy_state_type yy_try_NUL_trans( yy_current_state )
2567 yy_state_type yy_current_state;
2568 #endif
2569         {
2570         register int yy_is_jam;
2571         register char *yy_cp = yy_c_buf_p;
2572
2573         register YY_CHAR yy_c = 1;
2574         if ( yy_accept[yy_current_state] )
2575                 {
2576                 yy_last_accepting_state = yy_current_state;
2577                 yy_last_accepting_cpos = yy_cp;
2578                 }
2579         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2580                 {
2581                 yy_current_state = (int) yy_def[yy_current_state];
2582                 if ( yy_current_state >= 610 )
2583                         yy_c = yy_meta[(unsigned int) yy_c];
2584                 }
2585         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2586         yy_is_jam = (yy_current_state == 609);
2587
2588         return yy_is_jam ? 0 : yy_current_state;
2589         }
2590
2591
2592 #ifndef YY_NO_UNPUT
2593 #ifdef YY_USE_PROTOS
2594 static void yyunput( int c, register char *yy_bp )
2595 #else
2596 static void yyunput( c, yy_bp )
2597 int c;
2598 register char *yy_bp;
2599 #endif
2600         {
2601         register char *yy_cp = yy_c_buf_p;
2602
2603         /* undo effects of setting up yytext */
2604         *yy_cp = yy_hold_char;
2605
2606         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2607                 { /* need to shift things up to make room */
2608                 /* +2 for EOB chars. */
2609                 register int number_to_move = yy_n_chars + 2;
2610                 register char *dest = &yy_current_buffer->yy_ch_buf[
2611                                         yy_current_buffer->yy_buf_size + 2];
2612                 register char *source =
2613                                 &yy_current_buffer->yy_ch_buf[number_to_move];
2614
2615                 while ( source > yy_current_buffer->yy_ch_buf )
2616                         *--dest = *--source;
2617
2618                 yy_cp += (int) (dest - source);
2619                 yy_bp += (int) (dest - source);
2620                 yy_current_buffer->yy_n_chars =
2621                         yy_n_chars = yy_current_buffer->yy_buf_size;
2622
2623                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2624                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2625                 }
2626
2627         *--yy_cp = (char) c;
2628
2629
2630         yytext_ptr = yy_bp;
2631         yy_hold_char = *yy_cp;
2632         yy_c_buf_p = yy_cp;
2633         }
2634 #endif  /* ifndef YY_NO_UNPUT */
2635
2636
2637 #ifdef __cplusplus
2638 static int yyinput()
2639 #else
2640 static int input()
2641 #endif
2642         {
2643         int c;
2644
2645         *yy_c_buf_p = yy_hold_char;
2646
2647         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2648                 {
2649                 /* yy_c_buf_p now points to the character we want to return.
2650                  * If this occurs *before* the EOB characters, then it's a
2651                  * valid NUL; if not, then we've hit the end of the buffer.
2652                  */
2653                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2654                         /* This was really a NUL. */
2655                         *yy_c_buf_p = '\0';
2656
2657                 else
2658                         { /* need more input */
2659                         int offset = yy_c_buf_p - yytext_ptr;
2660                         ++yy_c_buf_p;
2661
2662                         switch ( yy_get_next_buffer() )
2663                                 {
2664                                 case EOB_ACT_LAST_MATCH:
2665                                         /* This happens because yy_g_n_b()
2666                                          * sees that we've accumulated a
2667                                          * token and flags that we need to
2668                                          * try matching the token before
2669                                          * proceeding.  But for input(),
2670                                          * there's no matching to consider.
2671                                          * So convert the EOB_ACT_LAST_MATCH
2672                                          * to EOB_ACT_END_OF_FILE.
2673                                          */
2674
2675                                         /* Reset buffer status. */
2676                                         yyrestart( yyin );
2677
2678                                         /* fall through */
2679
2680                                 case EOB_ACT_END_OF_FILE:
2681                                         {
2682                                         if ( yywrap() )
2683                                                 return EOF;
2684
2685                                         if ( ! yy_did_buffer_switch_on_eof )
2686                                                 YY_NEW_FILE;
2687 #ifdef __cplusplus
2688                                         return yyinput();
2689 #else
2690                                         return input();
2691 #endif
2692                                         }
2693
2694                                 case EOB_ACT_CONTINUE_SCAN:
2695                                         yy_c_buf_p = yytext_ptr + offset;
2696                                         break;
2697                                 }
2698                         }
2699                 }
2700
2701         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
2702         *yy_c_buf_p = '\0';     /* preserve yytext */
2703         yy_hold_char = *++yy_c_buf_p;
2704
2705         yy_current_buffer->yy_at_bol = (c == '\n');
2706
2707         return c;
2708         }
2709
2710
2711 #ifdef YY_USE_PROTOS
2712 void yyrestart( FILE *input_file )
2713 #else
2714 void yyrestart( input_file )
2715 FILE *input_file;
2716 #endif
2717         {
2718         if ( ! yy_current_buffer )
2719                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2720
2721         yy_init_buffer( yy_current_buffer, input_file );
2722         yy_load_buffer_state();
2723         }
2724
2725
2726 #ifdef YY_USE_PROTOS
2727 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2728 #else
2729 void yy_switch_to_buffer( new_buffer )
2730 YY_BUFFER_STATE new_buffer;
2731 #endif
2732         {
2733         if ( yy_current_buffer == new_buffer )
2734                 return;
2735
2736         if ( yy_current_buffer )
2737                 {
2738                 /* Flush out information for old buffer. */
2739                 *yy_c_buf_p = yy_hold_char;
2740                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2741                 yy_current_buffer->yy_n_chars = yy_n_chars;
2742                 }
2743
2744         yy_current_buffer = new_buffer;
2745         yy_load_buffer_state();
2746
2747         /* We don't actually know whether we did this switch during
2748          * EOF (yywrap()) processing, but the only time this flag
2749          * is looked at is after yywrap() is called, so it's safe
2750          * to go ahead and always set it.
2751          */
2752         yy_did_buffer_switch_on_eof = 1;
2753         }
2754
2755
2756 #ifdef YY_USE_PROTOS
2757 void yy_load_buffer_state( void )
2758 #else
2759 void yy_load_buffer_state()
2760 #endif
2761         {
2762         yy_n_chars = yy_current_buffer->yy_n_chars;
2763         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2764         yyin = yy_current_buffer->yy_input_file;
2765         yy_hold_char = *yy_c_buf_p;
2766         }
2767
2768
2769 #ifdef YY_USE_PROTOS
2770 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2771 #else
2772 YY_BUFFER_STATE yy_create_buffer( file, size )
2773 FILE *file;
2774 int size;
2775 #endif
2776         {
2777         YY_BUFFER_STATE b;
2778
2779         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2780         if ( ! b )
2781                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2782
2783         b->yy_buf_size = size;
2784
2785         /* yy_ch_buf has to be 2 characters longer than the size given because
2786          * we need to put in 2 end-of-buffer characters.
2787          */
2788         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2789         if ( ! b->yy_ch_buf )
2790                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2791
2792         b->yy_is_our_buffer = 1;
2793
2794         yy_init_buffer( b, file );
2795
2796         return b;
2797         }
2798
2799
2800 #ifdef YY_USE_PROTOS
2801 void yy_delete_buffer( YY_BUFFER_STATE b )
2802 #else
2803 void yy_delete_buffer( b )
2804 YY_BUFFER_STATE b;
2805 #endif
2806         {
2807         if ( ! b )
2808                 return;
2809
2810         if ( b == yy_current_buffer )
2811                 yy_current_buffer = (YY_BUFFER_STATE) 0;
2812
2813         if ( b->yy_is_our_buffer )
2814                 yy_flex_free( (void *) b->yy_ch_buf );
2815
2816         yy_flex_free( (void *) b );
2817         }
2818
2819
2820 #ifndef YY_ALWAYS_INTERACTIVE
2821 #ifndef YY_NEVER_INTERACTIVE
2822 #include <unistd.h>
2823 #endif
2824 #endif
2825
2826 #ifdef YY_USE_PROTOS
2827 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2828 #else
2829 void yy_init_buffer( b, file )
2830 YY_BUFFER_STATE b;
2831 FILE *file;
2832 #endif
2833
2834
2835         {
2836         int oerrno = errno;
2837
2838         yy_flush_buffer( b );
2839
2840         b->yy_input_file = file;
2841         b->yy_fill_buffer = 1;
2842
2843 #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
2844         b->yy_is_interactive = 1;
2845 #else
2846 #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
2847         b->yy_is_interactive = 0;
2848 #else
2849         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2850 #endif
2851 #endif
2852         errno = oerrno;
2853         }
2854
2855
2856 #ifdef YY_USE_PROTOS
2857 void yy_flush_buffer( YY_BUFFER_STATE b )
2858 #else
2859 void yy_flush_buffer( b )
2860 YY_BUFFER_STATE b;
2861 #endif
2862
2863         {
2864         if ( ! b )
2865                 return;
2866
2867         b->yy_n_chars = 0;
2868
2869         /* We always need two end-of-buffer characters.  The first causes
2870          * a transition to the end-of-buffer state.  The second causes
2871          * a jam in that state.
2872          */
2873         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2874         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2875
2876         b->yy_buf_pos = &b->yy_ch_buf[0];
2877
2878         b->yy_at_bol = 1;
2879         b->yy_buffer_status = YY_BUFFER_NEW;
2880
2881         if ( b == yy_current_buffer )
2882                 yy_load_buffer_state();
2883         }
2884
2885
2886 #ifndef YY_NO_SCAN_BUFFER
2887 #ifdef YY_USE_PROTOS
2888 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2889 #else
2890 YY_BUFFER_STATE yy_scan_buffer( base, size )
2891 char *base;
2892 yy_size_t size;
2893 #endif
2894         {
2895         YY_BUFFER_STATE b;
2896
2897         if ( size < 2 ||
2898              base[size-2] != YY_END_OF_BUFFER_CHAR ||
2899              base[size-1] != YY_END_OF_BUFFER_CHAR )
2900                 /* They forgot to leave room for the EOB's. */
2901                 return 0;
2902
2903         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2904         if ( ! b )
2905                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2906
2907         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
2908         b->yy_buf_pos = b->yy_ch_buf = base;
2909         b->yy_is_our_buffer = 0;
2910         b->yy_input_file = 0;
2911         b->yy_n_chars = b->yy_buf_size;
2912         b->yy_is_interactive = 0;
2913         b->yy_at_bol = 1;
2914         b->yy_fill_buffer = 0;
2915         b->yy_buffer_status = YY_BUFFER_NEW;
2916
2917         yy_switch_to_buffer( b );
2918
2919         return b;
2920         }
2921 #endif
2922
2923
2924 #ifndef YY_NO_SCAN_STRING
2925 #ifdef YY_USE_PROTOS
2926 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2927 #else
2928 YY_BUFFER_STATE yy_scan_string( yy_str )
2929 yyconst char *yy_str;
2930 #endif
2931         {
2932         int len;
2933         for ( len = 0; yy_str[len]; ++len )
2934                 ;
2935
2936         return yy_scan_bytes( yy_str, len );
2937         }
2938 #endif
2939
2940
2941 #ifndef YY_NO_SCAN_BYTES
2942 #ifdef YY_USE_PROTOS
2943 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2944 #else
2945 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2946 yyconst char *bytes;
2947 int len;
2948 #endif
2949         {
2950         YY_BUFFER_STATE b;
2951         char *buf;
2952         yy_size_t n;
2953         int i;
2954
2955         /* Get memory for full buffer, including space for trailing EOB's. */
2956         n = len + 2;
2957         buf = (char *) yy_flex_alloc( n );
2958         if ( ! buf )
2959                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2960
2961         for ( i = 0; i < len; ++i )
2962                 buf[i] = bytes[i];
2963
2964         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
2965
2966         b = yy_scan_buffer( buf, n );
2967         if ( ! b )
2968                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2969
2970         /* It's okay to grow etc. this buffer, and we should throw it
2971          * away when we're done.
2972          */
2973         b->yy_is_our_buffer = 1;
2974
2975         return b;
2976         }
2977 #endif
2978
2979
2980 #ifndef YY_NO_PUSH_STATE
2981 #ifdef YY_USE_PROTOS
2982 static void yy_push_state( int new_state )
2983 #else
2984 static void yy_push_state( new_state )
2985 int new_state;
2986 #endif
2987         {
2988         if ( yy_start_stack_ptr >= yy_start_stack_depth )
2989                 {
2990                 yy_size_t new_size;
2991
2992                 yy_start_stack_depth += YY_START_STACK_INCR;
2993                 new_size = yy_start_stack_depth * sizeof( int );
2994
2995                 if ( ! yy_start_stack )
2996                         yy_start_stack = (int *) yy_flex_alloc( new_size );
2997
2998                 else
2999                         yy_start_stack = (int *) yy_flex_realloc(
3000                                         (void *) yy_start_stack, new_size );
3001
3002                 if ( ! yy_start_stack )
3003                         YY_FATAL_ERROR(
3004                         "out of memory expanding start-condition stack" );
3005                 }
3006
3007         yy_start_stack[yy_start_stack_ptr++] = YY_START;
3008
3009         BEGIN(new_state);
3010         }
3011 #endif
3012
3013
3014 #ifndef YY_NO_POP_STATE
3015 static void yy_pop_state()
3016         {
3017         if ( --yy_start_stack_ptr < 0 )
3018                 YY_FATAL_ERROR( "start-condition stack underflow" );
3019
3020         BEGIN(yy_start_stack[yy_start_stack_ptr]);
3021         }
3022 #endif
3023
3024
3025 #ifndef YY_NO_TOP_STATE
3026 static int yy_top_state()
3027         {
3028         return yy_start_stack[yy_start_stack_ptr - 1];
3029         }
3030 #endif
3031
3032 #ifndef YY_EXIT_FAILURE
3033 #define YY_EXIT_FAILURE 2
3034 #endif
3035
3036 #ifdef YY_USE_PROTOS
3037 static void yy_fatal_error( yyconst char msg[] )
3038 #else
3039 static void yy_fatal_error( msg )
3040 char msg[];
3041 #endif
3042         {
3043         (void) fprintf( stderr, "%s\n", msg );
3044         exit( YY_EXIT_FAILURE );
3045         }
3046
3047
3048
3049 /* Redefine yyless() so it works in section 3 code. */
3050
3051 #undef yyless
3052 #define yyless(n) \
3053         do \
3054                 { \
3055                 /* Undo effects of setting up yytext. */ \
3056                 yytext[yyleng] = yy_hold_char; \
3057                 yy_c_buf_p = yytext + n; \
3058                 yy_hold_char = *yy_c_buf_p; \
3059                 *yy_c_buf_p = '\0'; \
3060                 yyleng = n; \
3061                 } \
3062         while ( 0 )
3063
3064
3065 /* Internal utility routines. */
3066
3067 #ifndef yytext_ptr
3068 #ifdef YY_USE_PROTOS
3069 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3070 #else
3071 static void yy_flex_strncpy( s1, s2, n )
3072 char *s1;
3073 yyconst char *s2;
3074 int n;
3075 #endif
3076         {
3077         register int i;
3078         for ( i = 0; i < n; ++i )
3079                 s1[i] = s2[i];
3080         }
3081 #endif
3082
3083 #ifdef YY_NEED_STRLEN
3084 #ifdef YY_USE_PROTOS
3085 static int yy_flex_strlen( yyconst char *s )
3086 #else
3087 static int yy_flex_strlen( s )
3088 yyconst char *s;
3089 #endif
3090         {
3091         register int n;
3092         for ( n = 0; s[n]; ++n )
3093                 ;
3094
3095         return n;
3096         }
3097 #endif
3098
3099
3100 #ifdef YY_USE_PROTOS
3101 static void *yy_flex_alloc( yy_size_t size )
3102 #else
3103 static void *yy_flex_alloc( size )
3104 yy_size_t size;
3105 #endif
3106         {
3107         return (void *) malloc( size );
3108         }
3109
3110 #ifdef YY_USE_PROTOS
3111 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3112 #else
3113 static void *yy_flex_realloc( ptr, size )
3114 void *ptr;
3115 yy_size_t size;
3116 #endif
3117         {
3118         /* The cast to (char *) in the following accommodates both
3119          * implementations that use char* generic pointers, and those
3120          * that use void* generic pointers.  It works with the latter
3121          * because both ANSI C and C++ allow castless assignment from
3122          * any pointer type to void*, and deal with argument conversions
3123          * as though doing an assignment.
3124          */
3125         return (void *) realloc( (char *) ptr, size );
3126         }
3127
3128 #ifdef YY_USE_PROTOS
3129 static void yy_flex_free( void *ptr )
3130 #else
3131 static void yy_flex_free( ptr )
3132 void *ptr;
3133 #endif
3134         {
3135         free( ptr );
3136         }
3137
3138 #if defined(YY_MAIN) && YY_MAIN
3139 int main()
3140         {
3141         yylex();
3142         return 0;
3143         }
3144 #endif
3145 #line 448 "parse.lex"
3146
3147 static void
3148 _fill(src, len, olen)
3149     char *src;
3150     int len, olen;
3151 {
3152     int i, j;
3153     char *dst;
3154
3155     dst = olen ? realloc(yylval.string, olen + len + 1) : malloc(len + 1);
3156     if (dst == NULL) {
3157         yyerror("unable to allocate memory");
3158         return;
3159     }
3160     yylval.string = dst;
3161
3162     /* Copy the string and collapse any escaped characters. */
3163     dst += olen;
3164     for (i = 0, j = 0; i < len; i++, j++) {
3165         if (src[i] == '\\' && i != len - 1)
3166             dst[j] = src[++i];
3167         else
3168             dst[j] = src[i];
3169     }
3170     dst[j] = '\0';
3171 }
3172
3173 static void
3174 append(src, len)
3175     char *src;
3176     int len;
3177 {
3178     int olen = 0;
3179
3180     if (yylval.string != NULL)
3181         olen = strlen(yylval.string);
3182
3183     _fill(src, len, olen);
3184 }
3185
3186 static void
3187 fill_cmnd(s, len)
3188     char *s;
3189     int len;
3190 {
3191     arg_len = arg_size = 0;
3192
3193     yylval.command.cmnd = (char *) malloc(++len);
3194     if (yylval.command.cmnd == NULL) {
3195         yyerror("unable to allocate memory");
3196         return;
3197     }
3198
3199     /* copy the string and NULL-terminate it (escapes handled by fnmatch) */
3200     (void) strlcpy(yylval.command.cmnd, s, len);
3201
3202     yylval.command.args = NULL;
3203 }
3204
3205 static void
3206 fill_args(s, len, addspace)
3207     char *s;
3208     int len;
3209     int addspace;
3210 {
3211     int new_len;
3212     char *p;
3213
3214     if (yylval.command.args == NULL) {
3215         addspace = 0;
3216         new_len = len;
3217     } else
3218         new_len = arg_len + len + addspace;
3219
3220     if (new_len >= arg_size) {
3221         /* Allocate more space than we need for subsequent args */
3222         while (new_len >= (arg_size += COMMANDARGINC))
3223             ;
3224
3225         p = yylval.command.args ?
3226             (char *) realloc(yylval.command.args, arg_size) :
3227             (char *) malloc(arg_size);
3228         if (p == NULL) {
3229             efree(yylval.command.args);
3230             yyerror("unable to allocate memory");
3231             return;
3232         } else
3233             yylval.command.args = p;
3234     }
3235
3236     /* Efficiently append the arg (with a leading space if needed). */
3237     p = yylval.command.args + arg_len;
3238     if (addspace)
3239         *p++ = ' ';
3240     if (strlcpy(p, s, arg_size - (p - yylval.command.args)) != len)
3241         yyerror("fill_args: buffer overflow");  /* paranoia */
3242     arg_len = new_len;
3243 }
3244
3245 /*
3246  * Check to make sure an IPv6 address does not contain multiple instances
3247  * of the string "::".  Assumes strlen(s) >= 1.
3248  * Returns TRUE if address is valid else FALSE.
3249  */
3250 static int
3251 ipv6_valid(s)
3252     const char *s;
3253 {
3254     int nmatch = 0;
3255
3256     for (; *s != '\0'; s++) {
3257         if (s[0] == ':' && s[1] == ':') {
3258             if (++nmatch > 1)
3259                 break;
3260         }
3261         if (s[0] == '/')
3262             nmatch = 0;                 /* reset if we hit netmask */
3263     }
3264
3265     return (nmatch <= 1);
3266 }
3267
3268 int
3269 yywrap()
3270 {
3271
3272     /* Free space used by the aliases unless called by testsudoers. */
3273     if (clearaliases)
3274         reset_aliases();
3275
3276     return(TRUE);
3277 }