/* Include config.h early to avoid _FILE_OFFSET_BITS redefinition on Solaris */
#include "config.h"
#line 2 "lexer_v3.c"
#define YY_INT_ALIGNED long int
/* A lexical scanner generated by flex */
/* %not-for-header */
/* %if-c-only */
/* %if-not-reentrant */
/* %endif */
/* %endif */
/* %ok-for-header */
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 6
#define YY_FLEX_SUBMINOR_VERSION 4
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
/* %if-c++-only */
/* %endif */
/* %if-c-only */
/* %endif */
/* %if-c-only */
/* %endif */
/* First, we deal with platform-specific or compiler-specific issues. */
/* begin standard C headers. */
/* %if-c-only */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
/* %endif */
/* %if-tables-serialization */
/* %endif */
/* end standard C headers. */
/* %if-c-or-c++ */
/* flex integer type definitions */
#ifndef FLEXINT_H
#define FLEXINT_H
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
* if you want the limit (max/min) macros for int types.
*/
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
#endif
#include <inttypes.h>
typedef int8_t flex_int8_t;
typedef uint8_t flex_uint8_t;
typedef int16_t flex_int16_t;
typedef uint16_t flex_uint16_t;
typedef int32_t flex_int32_t;
typedef uint32_t flex_uint32_t;
#else
typedef signed char flex_int8_t;
typedef short int flex_int16_t;
typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
/* Limits of integral types. */
#ifndef INT8_MIN
#define INT8_MIN (-128)
#endif
#ifndef INT16_MIN
#define INT16_MIN (-32767-1)
#endif
#ifndef INT32_MIN
#define INT32_MIN (-2147483647-1)
#endif
#ifndef INT8_MAX
#define INT8_MAX (127)
#endif
#ifndef INT16_MAX
#define INT16_MAX (32767)
#endif
#ifndef INT32_MAX
#define INT32_MAX (2147483647)
#endif
#ifndef UINT8_MAX
#define UINT8_MAX (255U)
#endif
#ifndef UINT16_MAX
#define UINT16_MAX (65535U)
#endif
#ifndef UINT32_MAX
#define UINT32_MAX (4294967295U)
#endif
#ifndef SIZE_MAX
#define SIZE_MAX (~(size_t)0)
#endif
#endif /* ! C99 */
#endif /* ! FLEXINT_H */
/* %endif */
/* begin standard C++ headers. */
/* %if-c++-only */
/* %endif */
/* TODO: this is always defined, so inline it */
#define yyconst const
#if defined(__GNUC__) && __GNUC__ >= 3
#define yynoreturn __attribute__((__noreturn__))
#else
#define yynoreturn
#endif
/* %not-for-header */
/* Returned upon end-of-file. */
#define YY_NULL 0
/* %ok-for-header */
/* %not-for-header */
/* Promotes a possibly negative, possibly signed char to an
* integer in range [0..255] for use as an array index.
*/
#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
/* %ok-for-header */
/* %if-reentrant */
/* %endif */
/* %if-not-reentrant */
/* %endif */
/* Enter a start condition. This macro really ought to take a parameter,
* but we do it the disgusting crufty way forced on us by the ()-less
* definition of BEGIN.
*/
#define BEGIN (yy_start) = 1 + 2 *
/* Translate the current start state into a value that can be later handed
* to BEGIN to return to the state. The YYSTATE alias is for lex
* compatibility.
*/
#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START
/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart( yyin )
#define YY_END_OF_BUFFER_CHAR 0
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k.
* Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
* Ditto for the __ia64__ case accordingly.
*/
#define YY_BUF_SIZE 32768
#else
#define YY_BUF_SIZE 16384
#endif /* __ia64__ */
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
*/
#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif
#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef size_t yy_size_t;
#endif
/* %if-not-reentrant */
extern int yyleng;
/* %endif */
/* %if-c-only */
/* %if-not-reentrant */
extern FILE *yyin, *yyout;
/* %endif */
/* %endif */
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
#define YY_LESS_LINENO(n)
#define YY_LINENO_REWIND_TO(ptr)
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
do \
{ \
/* Undo effects of setting up yytext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
*yy_cp = (yy_hold_char); \
YY_RESTORE_YY_MORE_OFFSET \
(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \
while ( 0 )
#define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
{
/* %if-c-only */
FILE *yy_input_file;
/* %endif */
/* %if-c++-only */
/* %endif */
char *yy_ch_buf; /* input buffer */
char *yy_buf_pos; /* current position in input buffer */
/* Size of input buffer in bytes, not including room for EOB
* characters.
*/
int yy_buf_size;
/* Number of characters read into yy_ch_buf, not including EOB
* characters.
*/
int yy_n_chars;
/* Whether we "own" the buffer - i.e., we know we created it,
* and can realloc() it to grow it, and should free() it to
* delete it.
*/
int yy_is_our_buffer;
/* Whether this is an "interactive" input source; if so, and
* if we're using stdio for input, then we want to use getc()
* instead of fread(), to make sure we stop fetching input after
* each newline.
*/
int yy_is_interactive;
/* Whether we're considered to be at the beginning of a line.
* If so, '^' rules will be active on the next match, otherwise
* not.
*/
int yy_at_bol;
int yy_bs_lineno; /**< The line count. */
int yy_bs_column; /**< The column count. */
/* Whether to try to fill the input buffer when we reach the
* end of it.
*/
int yy_fill_buffer;
int yy_buffer_status;
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
/* When an EOF's been seen but there's still some text to process
* then we mark the buffer as YY_EOF_PENDING, to indicate that we
* shouldn't try reading from the input source any more. We might
* still have a bunch of tokens to match, though, because of
* possible backing-up.
*
* When we actually see the EOF, we change the status to "new"
* (via yyrestart()), so that the user can continue scanning by
* just pointing yyin at a new input file.
*/
#define YY_BUFFER_EOF_PENDING 2
};
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
/* %if-c-only Standard (non-C++) definition */
/* %not-for-header */
/* %if-not-reentrant */
/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
/* %endif */
/* %ok-for-header */
/* %endif */
/* We provide macros for accessing buffer states in case in the
* future we want to put the buffer states in a more general
* "scanner state".
*
* Returns the top of the stack, or NULL.
*/
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
? (yy_buffer_stack)[(yy_buffer_stack_top)] \
: NULL)
/* Same as previous macro, but useful when we know that the buffer stack is not
* NULL or when we need an lvalue. For internal use only.
*/
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
/* %if-c-only Standard (non-C++) definition */
/* %if-not-reentrant */
/* %not-for-header */
/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
static int yy_n_chars; /* number of characters read into yy_ch_buf */
int yyleng;
/* Points to current character in buffer. */
static char *yy_c_buf_p = NULL;
static int yy_init = 0; /* whether we need to initialize */
static int yy_start = 0; /* start state number */
/* Flag which is used to allow yywrap()'s to do buffer switches
* instead of setting up a fresh yyin. A bit of a hack ...
*/
static int yy_did_buffer_switch_on_eof;
/* %ok-for-header */
/* %endif */
void yyrestart ( FILE *input_file );
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
void yy_delete_buffer ( YY_BUFFER_STATE b );
void yy_flush_buffer ( YY_BUFFER_STATE b );
void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
void yypop_buffer_state ( void );
static void yyensure_buffer_stack ( void );
static void yy_load_buffer_state ( void );
static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
/* %endif */
void *yyalloc ( yy_size_t );
void *yyrealloc ( void *, yy_size_t );
void yyfree ( void * );
#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
{ \
if ( ! YY_CURRENT_BUFFER ){ \
yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer( yyin, YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
}
#define yy_set_bol(at_bol) \
{ \
if ( ! YY_CURRENT_BUFFER ){\
yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
yy_create_buffer( yyin, YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
}
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
/* Begin user sect3 */
#define yywrap() (/*CONSTCOND*/1)
#define YY_SKIP_YYWRAP
#define FLEX_DEBUG
typedef flex_uint8_t YY_CHAR;
FILE *yyin = NULL, *yyout = NULL;
typedef int yy_state_type;
extern int yylineno;
int yylineno = 1;
extern char *yytext;
#ifdef yytext_ptr
#undef yytext_ptr
#endif
#define yytext_ptr yytext
/* %% [1.5] DFA */
/* %if-c-only Standard (non-C++) definition */
static yy_state_type yy_get_previous_state ( void );
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
static int yy_get_next_buffer ( void );
static void yynoreturn yy_fatal_error ( const char* msg );
/* %endif */
/* Done after the current pattern has been matched and before the
* corresponding action - sets up yytext.
*/
#define YY_DO_BEFORE_ACTION \
(yytext_ptr) = yy_bp; \
/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
yyleng = (int) (yy_cp - yy_bp); \
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
(yy_c_buf_p) = yy_cp;
/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
#define YY_NUM_RULES 43
#define YY_END_OF_BUFFER 44
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
{
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
static const flex_int32_t yy_accept[770] =
{ 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
44, 41, 41, 17, 41, 41, 41, 41, 41, 41,
37, 37, 37, 37, 37, 41, 15, 41, 41, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
42, 37, 41, 29, 37, 3, 41, 41, 32, 30,
31, 41, 41, 20, 21, 0, 40, 0, 0, 0,
0, 0, 0, 0, 37, 0, 0, 0, 37, 37,
37, 37, 0, 0, 0, 0, 0, 16, 0, 0,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 37, 0, 0, 27, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 30, 0,
31, 0, 0, 0, 21, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 37, 37, 37, 37, 37,
0, 0, 0, 0, 0, 0, 0, 0, 0, 16,
16, 5, 16, 16, 16, 16, 16, 16, 0, 16,
16, 16, 16, 16, 16, 16, 0, 0, 0, 28,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 33, 0, 40, 0, 0, 0, 0, 0,
0, 0, 37, 37, 37, 37, 37, 0, 0, 0,
0, 23, 0, 0, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
38, 26, 0, 0, 0, 0, 0, 0, 25, 24,
25, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 39, 14, 0, 0, 0, 0, 0, 0, 0,
0, 0, 37, 37, 37, 37, 37, 13, 0, 0,
0, 0, 0, 0, 0, 0, 16, 16, 16, 16,
16, 8, 16, 16, 16, 16, 16, 16, 16, 16,
16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 24, 24, 24, 0, 0, 0,
0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
0, 0, 0, 37, 37, 13, 0, 0, 0, 0,
0, 0, 0, 16, 16, 16, 8, 16, 16, 16,
16, 16, 16, 16, 16, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 24, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 35, 35, 35, 0, 0,
0, 0, 0, 37, 37, 37, 37, 0, 0, 0,
0, 0, 0, 0, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 0, 0, 16, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 35, 35, 35, 0, 4, 0, 0, 0, 0,
0, 0, 37, 0, 0, 37, 0, 37, 0, 37,
0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
16, 16, 0, 16, 0, 16, 16, 0, 16, 16,
16, 16, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 37, 37, 0, 37, 0, 0, 12,
36, 0, 0, 0, 0, 0, 0, 16, 16, 0,
16, 16, 16, 0, 0, 16, 16, 16, 16, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 37,
0, 0, 11, 11, 12, 0, 0, 0, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 18, 0, 0, 11, 11, 0, 0,
0, 0, 16, 16, 16, 16, 16, 7, 10, 16,
16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 18, 0, 11, 0, 0, 0, 16, 16, 16,
16, 7, 10, 16, 0, 0, 0, 0, 0, 0,
11, 0, 0, 0, 16, 16, 6, 16, 16, 0,
0, 0, 0, 0, 11, 0, 0, 0, 16, 16,
6, 6, 16, 0, 0, 0, 0, 11, 11, 11,
0, 0, 0, 16, 16, 0, 0, 0, 0, 4,
1, 0, 0, 16, 16, 16, 1, 0, 0, 0,
0, 16, 0, 16, 0, 11, 0, 0, 16, 16,
9, 0, 0, 0, 16, 16, 9, 0, 0, 0,
16, 0, 0, 0, 16, 0, 0, 0, 16, 0,
34, 0, 0, 16, 0, 0, 16, 0, 0, 16,
0, 0, 0, 0, 0, 22, 0, 19, 0
} ;
static const YY_CHAR yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 4, 5, 6, 7, 8, 9, 10, 11, 12,
12, 13, 12, 12, 14, 15, 16, 17, 18, 19,
20, 20, 21, 22, 23, 23, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 53,
56, 1, 57, 1, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 53, 82,
83, 53, 1, 1, 1, 59, 1, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84
} ;
static const YY_CHAR yy_meta[85] =
{ 0,
1, 2, 3, 4, 5, 6, 7, 8, 1, 9,
10, 11, 8, 12, 13, 14, 15, 15, 15, 15,
15, 15, 15, 16, 1, 17, 18, 1, 19, 20,
21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 22, 22, 23, 22, 1, 1, 10, 5, 21,
21, 21, 21, 21, 21, 22, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
22, 23, 22, 24
} ;
static const flex_int32_t yy_base[833] =
{ 0,
0, 84, 168, 1501, 252, 1484, 1464, 334, 348, 1434,
432, 1425, 503, 504, 0, 1413, 0, 516, 532, 1407,
1386, 5655, 578, 5655, 324, 505, 603, 612, 1365, 1336,
625, 627, 633, 648, 650, 676, 5655, 0, 1328, 655,
704, 706, 711, 745, 739, 774, 796, 781, 791, 814,
5655, 665, 1324, 821, 820, 5655, 889, 1321, 5655, 806,
852, 1271, 1270, 5655, 869, 594, 914, 903, 932, 941,
923, 1245, 611, 0, 954, 956, 971, 1225, 973, 978,
992, 1006, 1024, 1039, 1051, 606, 639, 1065, 1070, 1084,
1079, 1089, 1094, 1130, 1135, 1149, 1168, 1185, 1190, 1204,
1214, 1276, 1256, 1241, 1221, 1236, 648, 698, 686, 660,
668, 1287, 1238, 1313, 1357, 771, 1189, 0, 1263, 1278,
1293, 1305, 1169, 753, 1318, 1329, 725, 1339, 1394, 1423,
1432, 700, 1161, 1361, 1451, 0, 1449, 1468, 1470, 1485,
1469, 1533, 1152, 1166, 698, 1162, 833, 871, 1552, 0,
1503, 5655, 1566, 1571, 1573, 1580, 1588, 1630, 1642, 1655,
1657, 1664, 1666, 1683, 1721, 1723, 733, 737, 1151, 5655,
780, 811, 1112, 1774, 866, 1084, 823, 1715, 1581, 1749,
1768, 1174, 938, 952, 1346, 944, 1793, 969, 1108, 1097,
1061, 0, 5655, 904, 1519, 1845, 1854, 1688, 1081, 915,
1075, 1861, 1880, 1878, 1895, 1902, 1900, 1948, 1959, 1968,
938, 5655, 899, 987, 1987, 1985, 2002, 2020, 2009, 2011,
2038, 2061, 961, 2072, 2079, 2087, 2094, 2114, 2133, 2148,
5655, 5655, 949, 733, 1060, 1716, 1092, 1233, 5655, 5655,
2197, 1147, 1364, 1196, 1614, 1606, 1757, 1771, 1152, 1382,
1786, 1917, 1429, 1049, 1230, 1209, 1921, 1325, 1928, 1059,
1499, 1283, 1433, 1373, 2038, 1657, 2162, 1347, 2165, 2177,
1590, 1074, 2175, 1602, 2199, 2233, 2262, 1127, 1053, 2272,
2282, 2301, 0, 0, 2315, 2320, 2322, 644, 2344, 2371,
2380, 1033, 977, 1219, 2373, 2433, 0, 0, 2399, 2404,
2450, 0, 2414, 2455, 1358, 2460, 2469, 2489, 2484, 2518,
2524, 1115, 1550, 1518, 2221, 2238, 1452, 1684, 1787, 2259,
1725, 1496, 1772, 999, 5655, 5655, 2576, 2341, 1794, 1625,
1667, 1658, 2548, 645, 5655, 2576, 2613, 2642, 1007, 821,
981, 2651, 2731, 2664, 2681, 5655, 2665, 2682, 2696, 1589,
2147, 2113, 2811, 2750, 2761, 2785, 0, 2831, 1720, 2838,
2840, 2857, 2710, 2866, 2892, 1723, 1898, 1775, 2368, 1770,
1868, 1815, 2418, 946, 2944, 2055, 2513, 1920, 2884, 2199,
2773, 2892, 2521, 2072, 1724, 2883, 2121, 2963, 2246, 2374,
2243, 1912, 2304, 2761, 2056, 3015, 3022, 3029, 1761, 928,
912, 3048, 2926, 3128, 2934, 3046, 2955, 3059, 3068, 2842,
897, 1883, 2800, 2940, 3208, 3082, 3099, 3101, 3107, 3109,
1103, 3158, 3180, 3191, 3237, 3157, 3237, 2063, 2156, 2046,
2381, 2503, 1969, 2269, 2574, 2509, 2160, 2282, 2577, 1983,
3206, 2526, 3242, 3269, 2589, 2355, 3272, 3275, 2453, 2583,
2512, 2661, 3279, 2161, 3282, 881, 2486, 2698, 2451, 2148,
3285, 2482, 3302, 2573, 3312, 2678, 3315, 2682, 3318, 3330,
2264, 3306, 3179, 5655, 1986, 1131, 3327, 3344, 3399, 3479,
0, 0, 3349, 3366, 3559, 3639, 868, 0, 3368, 3373,
989, 3416, 3423, 3446, 2053, 3298, 2109, 3460, 3477, 3719,
3799, 0, 3500, 3498, 3879, 3533, 3959, 3532, 3574, 3610,
2511, 2742, 2759, 3366, 2882, 3387, 3395, 2701, 2757, 3426,
3457, 2850, 2866, 2928, 3537, 2796, 2894, 2945, 854, 3565,
2904, 2939, 2949, 3056, 3592, 2994, 5655, 2882, 858, 3238,
0, 3612, 3637, 0, 3620, 4039, 834, 1989, 1046, 1205,
5655, 3585, 3592, 787, 2184, 3517, 3115, 0, 3661, 4119,
772, 3223, 3284, 3687, 3058, 3040, 3702, 2615, 3322, 3434,
3102, 3454, 3067, 3482, 3612, 3161, 3613, 3489, 3683, 3656,
3601, 3652, 3700, 3662, 3403, 2231, 3733, 3738, 0, 780,
652, 737, 1260, 3778, 5655, 2275, 2663, 3762, 772, 3624,
3512, 3668, 3740, 3713, 776, 3816, 3759, 3561, 3653, 3753,
3739, 3697, 3734, 3760, 3831, 3804, 3773, 3842, 3801, 3851,
3859, 3399, 2354, 3857, 755, 1507, 5655, 3885, 773, 3805,
3914, 728, 3827, 3825, 3846, 3398, 1002, 0, 0, 3851,
1282, 3860, 3797, 3917, 3895, 3923, 3929, 3937, 3919, 746,
2363, 3935, 3941, 3963, 744, 3998, 3331, 3862, 3947, 1820,
3957, 0, 0, 3948, 4001, 3962, 3947, 3956, 700, 2517,
2703, 4050, 4005, 3807, 3974, 3977, 1517, 1928, 4013, 3970,
4072, 4079, 4067, 664, 4203, 4091, 4027, 4088, 4026, 4064,
1588, 1631, 653, 4068, 4131, 2929, 4287, 626, 631, 4028,
4098, 4118, 4154, 4111, 4115, 4092, 4141, 4153, 2928, 3526,
4162, 4183, 4196, 4150, 605, 4180, 4227, 2951, 4250, 4220,
4267, 4181, 4201, 2040, 3727, 3088, 4260, 4269, 4261, 4262,
0, 3866, 4276, 4306, 2327, 4205, 0, 4126, 4318, 4325,
4192, 525, 4327, 4346, 4289, 493, 4350, 4352, 4312, 311,
310, 4355, 4358, 4264, 4371, 4373, 4326, 4379, 4385, 2334,
4391, 4397, 4400, 4409, 4412, 5655, 4414, 5655, 5655, 4424,
4448, 4468, 4488, 4508, 4532, 4556, 4576, 4596, 4616, 4629,
4648, 4669, 4688, 4409, 4712, 4732, 879, 4750, 4773, 1163,
4796, 4813, 4832, 4852, 4876, 4900, 4924, 4948, 4972, 4990,
5010, 5030, 5050, 5070, 5090, 5110, 5130, 5150, 5174, 5194,
5198, 5218, 5238, 5257, 5276, 5296, 5316, 5340, 5360, 5380,
5400, 5421, 5424, 5445, 5464, 5488, 5512, 5535, 5558, 5582,
5606, 5630
} ;
static const flex_int32_t yy_def[833] =
{ 0,
769, 769, 769, 3, 769, 5, 3, 3, 769, 9,
769, 11, 11, 11, 11, 11, 3, 3, 769, 19,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
770, 770, 770, 770, 770, 769, 769, 771, 769, 772,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
769, 773, 769, 769, 774, 769, 775, 776, 769, 777,
778, 769, 769, 769, 779, 769, 769, 769, 769, 769,
769, 769, 769, 780, 770, 770, 781, 769, 770, 770,
770, 770, 769, 769, 769, 769, 782, 772, 772, 783,
772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
772, 772, 772, 772, 773, 773, 784, 769, 769, 769,
769, 774, 769, 774, 785, 786, 776, 787, 777, 777,
778, 778, 769, 782, 779, 779, 769, 769, 769, 769,
769, 769, 780, 788, 781, 135, 770, 770, 770, 770,
769, 769, 769, 769, 769, 782, 782, 782, 783, 149,
772, 769, 772, 772, 772, 772, 772, 772, 149, 772,
772, 772, 772, 772, 772, 772, 784, 784, 769, 769,
769, 769, 785, 785, 789, 785, 785, 785, 785, 785,
785, 785, 785, 785, 785, 785, 785, 785, 786, 769,
786, 790, 769, 791, 769, 769, 769, 769, 769, 769,
769, 792, 793, 770, 770, 770, 770, 769, 769, 769,
769, 769, 782, 782, 794, 772, 772, 772, 772, 772,
772, 772, 149, 772, 772, 772, 772, 772, 772, 772,
769, 769, 769, 769, 785, 785, 785, 785, 769, 769,
174, 785, 785, 785, 785, 785, 785, 785, 785, 785,
785, 785, 785, 785, 785, 785, 785, 785, 785, 795,
796, 785, 785, 785, 785, 785, 785, 785, 785, 769,
786, 769, 791, 791, 769, 769, 769, 769, 769, 792,
792, 793, 282, 282, 770, 770, 770, 769, 769, 769,
769, 769, 769, 782, 782, 794, 296, 296, 772, 772,
772, 797, 772, 772, 149, 772, 772, 772, 772, 772,
772, 769, 785, 785, 785, 785, 785, 785, 785, 785,
785, 785, 785, 795, 769, 769, 798, 785, 785, 785,
785, 785, 769, 786, 769, 769, 769, 769, 769, 769,
799, 800, 801, 770, 770, 769, 769, 769, 769, 769,
782, 782, 802, 772, 772, 772, 797, 772, 149, 772,
772, 772, 772, 772, 772, 785, 785, 785, 785, 785,
785, 785, 785, 798, 798, 796, 798, 798, 798, 798,
798, 798, 798, 798, 798, 798, 798, 798, 798, 785,
785, 785, 785, 769, 786, 769, 769, 769, 769, 799,
769, 803, 804, 805, 806, 770, 770, 769, 769, 769,
769, 769, 782, 782, 807, 808, 772, 772, 772, 772,
149, 772, 772, 772, 149, 149, 772, 785, 785, 785,
785, 785, 785, 798, 798, 798, 798, 798, 798, 798,
798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
798, 798, 798, 798, 798, 809, 796, 798, 798, 798,
798, 798, 798, 798, 798, 785, 785, 785, 785, 769,
786, 769, 769, 769, 769, 769, 804, 804, 810, 803,
811, 480, 806, 806, 812, 805, 811, 486, 813, 770,
814, 769, 769, 769, 769, 782, 782, 808, 808, 815,
807, 501, 816, 772, 817, 772, 817, 507, 772, 772,
507, 507, 785, 785, 785, 785, 785, 798, 798, 798,
798, 798, 798, 798, 798, 798, 798, 798, 818, 798,
798, 798, 798, 798, 785, 785, 769, 819, 769, 769,
480, 820, 821, 486, 806, 813, 546, 822, 814, 814,
769, 769, 769, 769, 769, 782, 782, 501, 808, 816,
560, 507, 507, 507, 507, 507, 772, 507, 507, 785,
785, 798, 798, 798, 798, 798, 798, 798, 798, 798,
798, 798, 798, 785, 819, 769, 821, 821, 823, 486,
822, 822, 822, 824, 769, 769, 782, 782, 501, 507,
507, 507, 507, 507, 507, 772, 507, 507, 785, 785,
798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
785, 819, 769, 825, 486, 822, 769, 824, 769, 782,
782, 501, 507, 507, 507, 507, 507, 826, 827, 507,
507, 785, 798, 798, 798, 798, 798, 798, 798, 819,
769, 825, 825, 822, 769, 782, 782, 507, 507, 507,
507, 826, 827, 507, 785, 798, 798, 798, 769, 769,
822, 769, 782, 782, 507, 507, 828, 507, 507, 798,
798, 798, 769, 769, 829, 769, 782, 782, 507, 507,
828, 828, 507, 798, 769, 769, 829, 830, 697, 822,
769, 782, 782, 507, 507, 507, 798, 769, 769, 822,
769, 782, 782, 507, 507, 507, 769, 769, 822, 782,
782, 507, 507, 507, 769, 822, 782, 782, 507, 507,
831, 769, 782, 782, 507, 507, 831, 769, 782, 782,
507, 769, 782, 782, 507, 832, 782, 782, 507, 832,
832, 782, 782, 507, 782, 782, 507, 782, 782, 507,
782, 782, 782, 782, 782, 769, 782, 769, 0, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769
} ;
static const flex_int32_t yy_nxt[5740] =
{ 0,
22, 23, 24, 23, 22, 22, 22, 25, 22, 22,
22, 22, 22, 22, 22, 22, 26, 26, 27, 28,
28, 28, 28, 22, 22, 29, 30, 22, 22, 22,
31, 32, 33, 31, 31, 34, 31, 31, 31, 31,
31, 31, 31, 35, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 36, 22, 22, 22, 31,
32, 33, 31, 31, 34, 31, 31, 31, 31, 31,
31, 31, 35, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 22, 23, 37, 23, 22, 38,
22, 25, 22, 22, 22, 22, 22, 39, 22, 22,
26, 26, 27, 28, 28, 28, 28, 22, 22, 29,
30, 22, 22, 22, 40, 41, 42, 43, 40, 44,
40, 40, 45, 40, 40, 40, 46, 47, 40, 40,
40, 48, 49, 50, 40, 40, 40, 40, 40, 36,
22, 22, 22, 40, 41, 42, 43, 40, 44, 40,
40, 45, 40, 40, 40, 46, 47, 40, 40, 40,
48, 49, 50, 40, 40, 40, 40, 40, 22, 22,
51, 22, 22, 22, 22, 25, 22, 22, 22, 22,
22, 22, 22, 22, 26, 26, 27, 28, 28, 28,
28, 22, 22, 29, 22, 22, 22, 22, 52, 52,
52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
52, 52, 52, 36, 22, 22, 22, 52, 52, 52,
52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
52, 52, 22, 22, 51, 22, 22, 22, 22, 25,
22, 53, 22, 22, 22, 22, 22, 22, 26, 26,
27, 28, 28, 28, 28, 22, 22, 54, 22, 22,
22, 22, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 36, 22, 22,
22, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
55, 55, 55, 55, 55, 55, 56, 751, 751, 57,
67, 67, 67, 67, 67, 67, 67, 39, 22, 22,
51, 22, 22, 22, 22, 25, 22, 22, 22, 22,
22, 22, 22, 58, 26, 26, 27, 28, 28, 28,
28, 22, 22, 29, 22, 59, 22, 22, 60, 60,
60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
60, 60, 60, 36, 22, 22, 22, 60, 60, 60,
60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
60, 60, 22, 22, 51, 22, 22, 22, 22, 25,
22, 22, 22, 22, 22, 22, 22, 22, 26, 26,
27, 28, 28, 28, 28, 22, 22, 29, 22, 59,
22, 22, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 36, 22, 22,
22, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 62, 63, 64, 68,
751, 69, 69, 69, 69, 69, 69, 69, 746, 39,
22, 22, 22, 22, 51, 22, 22, 22, 22, 25,
22, 22, 22, 22, 22, 22, 22, 22, 26, 26,
27, 28, 28, 28, 28, 22, 22, 29, 22, 22,
22, 22, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 36, 22, 22,
22, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
65, 65, 65, 65, 65, 65, 66, 68, 723, 70,
70, 70, 70, 71, 72, 72, 68, 127, 72, 72,
72, 72, 72, 72, 72, 76, 698, 76, 77, 76,
77, 76, 146, 76, 132, 66, 77, 76, 145, 346,
190, 78, 148, 78, 401, 591, 127, 592, 76, 78,
76, 77, 76, 77, 76, 89, 706, 696, 90, 89,
80, 79, 74, 132, 78, 106, 78, 145, 106, 106,
82, 78, 76, 76, 76, 76, 81, 170, 170, 170,
76, 76, 83, 83, 84, 85, 85, 85, 85, 80,
79, 168, 395, 683, 171, 76, 76, 76, 76, 82,
172, 169, 89, 89, 89, 81, 89, 90, 89, 90,
89, 89, 106, 106, 90, 89, 194, 194, 194, 168,
78, 132, 78, 171, 170, 170, 170, 78, 92, 172,
626, 95, 769, 93, 200, 96, 211, 672, 91, 89,
94, 669, 90, 89, 78, 89, 146, 231, 90, 89,
132, 89, 89, 89, 89, 78, 148, 92, 89, 89,
95, 78, 93, 200, 96, 211, 190, 91, 655, 94,
193, 78, 99, 97, 89, 632, 769, 90, 89, 149,
769, 89, 98, 625, 90, 89, 89, 89, 487, 638,
78, 89, 89, 89, 90, 89, 89, 78, 100, 90,
89, 99, 97, 191, 769, 102, 120, 78, 769, 120,
120, 98, 78, 233, 89, 108, 101, 90, 89, 113,
114, 89, 89, 114, 114, 212, 146, 100, 89, 89,
78, 103, 191, 551, 102, 115, 213, 234, 89, 89,
175, 109, 233, 89, 89, 101, 110, 244, 104, 111,
487, 586, 122, 120, 120, 122, 122, 240, 240, 240,
103, 89, 89, 212, 146, 399, 234, 114, 114, 126,
109, 457, 126, 126, 214, 110, 244, 104, 111, 86,
86, 241, 86, 192, 86, 86, 74, 86, 86, 192,
86, 212, 146, 399, 86, 194, 194, 194, 457, 122,
122, 408, 294, 86, 86, 86, 86, 86, 86, 129,
129, 130, 131, 131, 131, 131, 126, 126, 128, 274,
67, 67, 67, 67, 67, 67, 67, 68, 476, 72,
72, 72, 72, 72, 86, 86, 68, 278, 72, 72,
72, 72, 72, 72, 72, 68, 401, 72, 72, 72,
72, 72, 72, 72, 76, 175, 76, 77, 76, 76,
76, 175, 258, 376, 293, 75, 278, 134, 263, 175,
78, 76, 78, 76, 135, 76, 77, 76, 76, 212,
146, 77, 76, 259, 549, 305, 175, 78, 312, 78,
295, 258, 76, 293, 78, 77, 76, 263, 138, 401,
269, 76, 76, 76, 76, 149, 76, 74, 78, 77,
76, 336, 259, 137, 305, 639, 261, 312, 76, 76,
76, 76, 78, 139, 350, 76, 76, 138, 141, 269,
85, 85, 85, 85, 85, 85, 85, 289, 140, 76,
76, 769, 137, 141, 75, 142, 142, 142, 142, 143,
144, 144, 139, 76, 76, 141, 190, 144, 144, 144,
144, 144, 144, 144, 769, 89, 175, 140, 90, 89,
89, 341, 118, 89, 89, 320, 261, 175, 88, 89,
134, 78, 90, 89, 89, 196, 78, 149, 89, 89,
270, 242, 90, 89, 89, 78, 279, 90, 89, 271,
78, 175, 152, 190, 320, 78, 170, 170, 170, 175,
78, 279, 89, 89, 153, 242, 256, 89, 89, 151,
242, 243, 540, 540, 540, 279, 89, 89, 271, 175,
89, 89, 89, 90, 89, 89, 89, 89, 90, 89,
279, 89, 89, 153, 242, 256, 78, 507, 151, 89,
243, 78, 90, 89, 232, 146, 141, 88, 144, 144,
144, 144, 144, 154, 175, 78, 340, 272, 89, 175,
141, 90, 89, 272, 155, 507, 317, 89, 89, 201,
156, 313, 89, 89, 78, 89, 193, 118, 90, 89,
89, 175, 154, 159, 89, 340, 89, 89, 256, 157,
595, 78, 257, 155, 89, 317, 78, 90, 89, 156,
313, 212, 146, 175, 89, 89, 89, 90, 89, 158,
78, 106, 294, 769, 106, 106, 175, 256, 157, 314,
78, 257, 89, 89, 107, 322, 106, 89, 89, 106,
106, 89, 160, 74, 90, 89, 161, 175, 158, 68,
175, 89, 89, 626, 152, 627, 89, 78, 314, 90,
89, 89, 89, 120, 322, 321, 120, 120, 106, 106,
262, 160, 78, 124, 123, 161, 89, 166, 120, 90,
89, 120, 120, 106, 106, 149, 113, 114, 89, 89,
114, 114, 78, 122, 321, 152, 122, 122, 162, 262,
175, 163, 115, 89, 89, 122, 166, 328, 122, 122,
120, 120, 769, 114, 164, 165, 114, 114, 126, 118,
107, 126, 126, 89, 89, 120, 120, 162, 769, 126,
163, 87, 126, 126, 114, 114, 328, 260, 260, 260,
122, 122, 175, 164, 165, 195, 195, 195, 195, 195,
195, 195, 122, 122, 74, 260, 260, 260, 323, 73,
114, 114, 174, 261, 175, 126, 126, 202, 202, 202,
202, 202, 202, 202, 175, 769, 126, 126, 176, 177,
178, 261, 179, 262, 180, 181, 332, 323, 182, 183,
175, 184, 185, 359, 330, 186, 187, 188, 196, 175,
131, 131, 131, 131, 131, 131, 131, 176, 177, 178,
39, 179, 262, 180, 181, 332, 39, 182, 183, 318,
184, 185, 359, 330, 186, 187, 188, 196, 39, 197,
197, 197, 197, 198, 199, 199, 196, 39, 199, 199,
199, 199, 199, 199, 199, 75, 175, 134, 318, 76,
175, 76, 77, 76, 135, 76, 56, 203, 203, 203,
203, 203, 203, 203, 329, 78, 319, 78, 76, 175,
76, 77, 76, 77, 76, 208, 208, 209, 210, 210,
210, 210, 204, 368, 78, 76, 78, 39, 77, 76,
326, 240, 326, 329, 206, 319, 76, 76, 76, 76,
626, 78, 769, 89, 39, 205, 90, 89, 691, 207,
691, 204, 368, 175, 327, 76, 76, 76, 76, 78,
372, 769, 769, 206, 75, 195, 195, 195, 195, 195,
195, 195, 76, 76, 205, 175, 216, 141, 207, 144,
144, 144, 144, 144, 144, 144, 88, 769, 134, 372,
89, 89, 89, 769, 769, 149, 89, 367, 215, 215,
215, 215, 215, 215, 215, 216, 89, 175, 78, 90,
89, 89, 366, 89, 90, 89, 90, 89, 769, 691,
89, 691, 78, 90, 89, 190, 367, 78, 89, 78,
769, 90, 89, 769, 769, 769, 78, 219, 175, 89,
89, 366, 769, 217, 78, 260, 260, 260, 220, 249,
218, 412, 221, 89, 89, 250, 334, 769, 89, 89,
89, 89, 769, 175, 769, 88, 219, 89, 89, 769,
89, 261, 217, 90, 89, 89, 89, 220, 249, 218,
412, 221, 175, 315, 250, 334, 78, 316, 150, 150,
150, 150, 150, 150, 150, 89, 391, 89, 90, 89,
90, 89, 222, 769, 89, 769, 89, 90, 89, 90,
89, 78, 315, 78, 175, 175, 316, 89, 89, 223,
78, 225, 78, 89, 175, 391, 90, 89, 226, 393,
227, 222, 196, 224, 199, 199, 199, 199, 199, 78,
331, 175, 89, 89, 89, 89, 392, 228, 223, 769,
225, 89, 89, 89, 89, 769, 369, 226, 393, 227,
769, 89, 224, 89, 90, 89, 90, 89, 331, 769,
89, 89, 175, 175, 769, 392, 228, 78, 245, 78,
175, 376, 175, 246, 246, 369, 247, 247, 260, 260,
260, 421, 230, 428, 248, 455, 251, 251, 251, 251,
251, 229, 260, 260, 260, 371, 175, 245, 89, 89,
89, 89, 246, 246, 261, 247, 247, 260, 260, 260,
421, 230, 428, 248, 455, 175, 252, 175, 261, 175,
229, 175, 175, 253, 371, 235, 475, 236, 430, 179,
254, 255, 431, 261, 175, 237, 183, 370, 184, 238,
175, 175, 373, 264, 188, 252, 265, 266, 390, 769,
267, 268, 253, 149, 235, 475, 236, 430, 179, 254,
255, 431, 175, 677, 237, 183, 370, 184, 238, 769,
769, 373, 264, 188, 769, 265, 266, 390, 433, 267,
268, 275, 275, 276, 277, 277, 277, 277, 196, 769,
199, 199, 199, 199, 199, 199, 199, 281, 281, 281,
281, 281, 281, 281, 75, 769, 280, 433, 76, 769,
76, 77, 76, 282, 76, 175, 283, 283, 283, 283,
283, 283, 283, 769, 78, 76, 78, 769, 77, 76,
76, 285, 76, 77, 76, 77, 76, 432, 260, 260,
260, 78, 260, 260, 260, 175, 288, 495, 78, 260,
260, 260, 429, 769, 769, 76, 76, 76, 76, 175,
285, 149, 468, 286, 261, 287, 432, 376, 261, 769,
769, 302, 76, 76, 440, 261, 495, 76, 76, 76,
76, 429, 289, 75, 210, 210, 210, 210, 210, 210,
210, 468, 286, 289, 287, 290, 290, 290, 290, 291,
292, 292, 289, 440, 292, 292, 292, 292, 292, 292,
292, 88, 591, 280, 592, 89, 175, 89, 90, 89,
296, 89, 517, 297, 297, 297, 297, 297, 297, 297,
376, 78, 89, 78, 769, 90, 89, 594, 299, 89,
539, 89, 90, 89, 90, 89, 519, 769, 78, 769,
89, 517, 302, 90, 89, 78, 769, 78, 769, 260,
260, 260, 89, 89, 89, 89, 78, 299, 89, 539,
300, 90, 89, 149, 301, 519, 326, 240, 326, 89,
89, 190, 303, 731, 78, 261, 89, 89, 89, 89,
88, 89, 769, 175, 90, 89, 769, 89, 89, 300,
327, 304, 89, 301, 152, 90, 89, 78, 471, 89,
175, 303, 90, 89, 515, 89, 89, 89, 78, 376,
90, 89, 306, 555, 89, 288, 454, 90, 89, 513,
304, 212, 557, 78, 769, 212, 146, 471, 89, 89,
78, 769, 213, 515, 89, 307, 213, 90, 89, 89,
89, 306, 555, 769, 769, 454, 89, 89, 513, 769,
78, 308, 769, 89, 89, 89, 90, 89, 376, 212,
146, 89, 89, 769, 307, 459, 414, 309, 89, 78,
213, 90, 89, 260, 260, 260, 260, 260, 260, 769,
308, 89, 89, 769, 78, 376, 769, 769, 769, 532,
310, 413, 311, 175, 459, 414, 309, 376, 376, 261,
89, 89, 261, 333, 333, 333, 333, 333, 333, 333,
769, 769, 335, 514, 528, 89, 89, 458, 532, 310,
413, 311, 174, 336, 769, 277, 277, 277, 277, 277,
277, 277, 260, 260, 260, 769, 376, 596, 176, 177,
178, 769, 514, 528, 180, 181, 458, 445, 182, 260,
260, 260, 185, 446, 769, 186, 187, 336, 261, 337,
337, 337, 337, 338, 339, 339, 596, 176, 177, 178,
260, 260, 260, 180, 181, 261, 445, 182, 623, 190,
175, 185, 446, 376, 186, 187, 336, 467, 339, 339,
339, 339, 339, 339, 339, 342, 261, 465, 281, 281,
281, 281, 281, 281, 281, 342, 376, 623, 281, 281,
281, 281, 281, 281, 281, 75, 467, 280, 538, 376,
438, 76, 769, 769, 343, 76, 465, 283, 283, 283,
283, 283, 283, 283, 629, 76, 518, 78, 77, 76,
76, 175, 76, 77, 76, 77, 76, 538, 469, 438,
149, 78, 260, 260, 260, 344, 78, 149, 78, 769,
677, 769, 82, 629, 345, 518, 769, 677, 76, 76,
347, 347, 348, 349, 349, 349, 349, 469, 261, 260,
260, 260, 76, 76, 344, 212, 146, 76, 76, 76,
76, 82, 376, 345, 75, 289, 294, 292, 292, 292,
292, 292, 292, 292, 289, 261, 292, 292, 292, 292,
292, 175, 523, 651, 351, 670, 466, 352, 175, 89,
769, 769, 90, 89, 89, 516, 769, 90, 89, 260,
260, 260, 769, 769, 89, 78, 769, 90, 89, 354,
78, 523, 651, 351, 670, 466, 352, 88, 355, 280,
78, 769, 769, 89, 516, 261, 353, 89, 358, 297,
297, 297, 297, 297, 297, 297, 89, 89, 354, 78,
89, 89, 89, 90, 89, 89, 769, 355, 90, 89,
89, 89, 89, 90, 89, 769, 78, 358, 376, 89,
376, 78, 90, 89, 769, 101, 78, 326, 240, 326,
89, 89, 531, 356, 89, 78, 360, 90, 89, 89,
524, 769, 90, 89, 260, 260, 260, 89, 89, 376,
78, 327, 89, 89, 101, 78, 88, 89, 89, 769,
361, 531, 356, 362, 149, 360, 89, 89, 89, 524,
261, 90, 89, 363, 89, 533, 376, 90, 89, 376,
376, 89, 89, 452, 78, 568, 89, 89, 376, 361,
78, 394, 362, 376, 438, 452, 365, 526, 684, 453,
439, 364, 363, 533, 333, 333, 333, 333, 333, 333,
333, 769, 452, 520, 568, 89, 89, 521, 456, 456,
456, 89, 89, 438, 452, 365, 526, 684, 453, 439,
364, 375, 396, 396, 397, 398, 398, 398, 398, 769,
376, 376, 520, 376, 457, 769, 521, 377, 378, 379,
376, 380, 442, 381, 382, 443, 376, 383, 384, 525,
385, 386, 534, 522, 387, 388, 389, 336, 149, 339,
339, 339, 339, 339, 339, 339, 377, 378, 379, 769,
380, 442, 381, 382, 443, 769, 383, 384, 525, 385,
386, 534, 522, 387, 388, 389, 336, 280, 339, 339,
339, 339, 339, 607, 342, 212, 630, 281, 281, 281,
281, 281, 281, 281, 76, 769, 213, 77, 76, 408,
769, 349, 349, 349, 349, 349, 349, 349, 376, 769,
78, 76, 607, 769, 77, 76, 408, 527, 409, 409,
409, 409, 410, 411, 411, 175, 626, 78, 627, 175,
408, 406, 411, 411, 411, 411, 411, 411, 411, 769,
89, 76, 76, 425, 89, 376, 527, 535, 376, 536,
407, 685, 530, 572, 403, 75, 78, 280, 76, 76,
406, 76, 769, 769, 343, 76, 769, 283, 283, 283,
283, 283, 283, 283, 769, 149, 535, 78, 536, 407,
89, 530, 572, 90, 89, 769, 769, 89, 89, 769,
769, 89, 569, 769, 90, 89, 78, 470, 470, 470,
470, 470, 470, 470, 376, 769, 175, 78, 76, 76,
447, 447, 447, 447, 447, 89, 769, 417, 90, 89,
376, 569, 212, 146, 769, 769, 573, 89, 89, 570,
418, 78, 769, 213, 405, 88, 769, 280, 89, 89,
448, 89, 769, 376, 353, 89, 417, 297, 297, 297,
297, 297, 297, 297, 419, 573, 496, 78, 570, 418,
769, 89, 89, 89, 90, 89, 577, 769, 89, 448,
89, 90, 89, 90, 89, 769, 408, 78, 411, 411,
411, 411, 411, 419, 78, 496, 78, 89, 89, 89,
90, 89, 422, 769, 423, 577, 89, 376, 420, 426,
89, 769, 769, 78, 456, 456, 456, 190, 89, 89,
769, 574, 78, 376, 416, 89, 89, 89, 89, 769,
424, 422, 89, 423, 769, 90, 89, 420, 575, 175,
457, 376, 769, 769, 89, 89, 571, 441, 78, 376,
574, 376, 442, 89, 89, 443, 769, 449, 578, 424,
458, 376, 585, 444, 450, 451, 478, 575, 580, 478,
478, 427, 212, 146, 484, 571, 441, 489, 484, 89,
89, 442, 481, 213, 443, 376, 449, 578, 576, 458,
487, 585, 444, 450, 451, 76, 376, 580, 77, 76,
427, 376, 376, 497, 709, 434, 376, 435, 718, 380,
581, 491, 725, 478, 478, 436, 384, 576, 385, 437,
376, 484, 484, 460, 389, 579, 461, 462, 582, 769,
463, 464, 497, 709, 434, 769, 435, 718, 380, 581,
769, 725, 76, 76, 436, 384, 769, 385, 437, 769,
769, 175, 460, 389, 579, 461, 462, 582, 584, 463,
464, 398, 398, 398, 398, 398, 398, 398, 472, 472,
472, 472, 473, 474, 474, 474, 474, 474, 474, 474,
474, 474, 477, 149, 280, 769, 76, 584, 478, 77,
76, 479, 478, 769, 480, 480, 480, 480, 480, 480,
480, 149, 78, 605, 481, 492, 492, 493, 494, 494,
494, 494, 408, 376, 411, 411, 411, 411, 411, 411,
411, 626, 499, 627, 376, 503, 499, 583, 769, 769,
490, 612, 605, 76, 76, 478, 478, 604, 487, 89,
769, 89, 90, 89, 90, 89, 594, 89, 146, 89,
505, 89, 90, 89, 769, 78, 583, 491, 490, 175,
612, 477, 483, 78, 280, 78, 604, 769, 484, 499,
499, 485, 484, 769, 486, 486, 486, 486, 486, 486,
486, 610, 769, 504, 487, 769, 89, 89, 89, 89,
598, 769, 769, 506, 89, 89, 89, 89, 89, 769,
769, 508, 89, 150, 150, 150, 150, 150, 150, 150,
610, 504, 769, 769, 78, 484, 484, 769, 376, 598,
89, 506, 769, 90, 89, 474, 474, 474, 474, 474,
769, 89, 512, 614, 90, 89, 78, 456, 456, 456,
769, 483, 498, 509, 280, 89, 89, 78, 499, 769,
769, 500, 499, 510, 501, 501, 501, 501, 501, 501,
501, 512, 614, 457, 487, 769, 149, 89, 89, 540,
540, 540, 509, 456, 456, 456, 769, 89, 89, 89,
90, 89, 510, 150, 150, 150, 150, 150, 150, 150,
152, 600, 769, 78, 78, 499, 499, 769, 769, 457,
456, 456, 456, 456, 456, 456, 456, 456, 456, 511,
456, 456, 456, 456, 456, 456, 456, 456, 456, 769,
600, 498, 769, 769, 89, 89, 457, 149, 769, 457,
212, 146, 457, 456, 456, 456, 457, 769, 511, 457,
769, 213, 457, 456, 456, 456, 260, 260, 260, 260,
260, 260, 474, 474, 474, 474, 474, 474, 474, 457,
769, 601, 537, 212, 674, 149, 556, 478, 602, 457,
478, 478, 261, 769, 213, 261, 470, 470, 470, 470,
470, 470, 470, 481, 478, 769, 769, 478, 478, 484,
601, 769, 489, 484, 769, 556, 602, 260, 260, 260,
769, 608, 483, 769, 134, 487, 484, 769, 484, 484,
484, 546, 484, 76, 478, 478, 77, 76, 260, 260,
260, 769, 78, 261, 78, 769, 260, 260, 260, 548,
608, 478, 478, 477, 190, 280, 484, 484, 190, 478,
769, 149, 479, 478, 261, 480, 480, 480, 480, 480,
480, 480, 261, 484, 484, 484, 484, 456, 456, 456,
76, 76, 494, 494, 494, 494, 494, 494, 494, 552,
552, 552, 552, 553, 554, 554, 622, 661, 650, 769,
769, 483, 769, 457, 769, 769, 478, 478, 456, 456,
456, 175, 554, 554, 554, 554, 554, 554, 554, 769,
499, 769, 551, 503, 499, 622, 661, 650, 609, 551,
769, 376, 542, 477, 457, 280, 487, 499, 769, 478,
499, 499, 479, 478, 611, 480, 480, 480, 480, 480,
480, 480, 551, 78, 498, 481, 134, 609, 89, 376,
499, 90, 89, 560, 499, 613, 376, 499, 499, 212,
146, 769, 769, 611, 548, 149, 78, 540, 540, 719,
213, 627, 616, 769, 499, 499, 478, 478, 456, 456,
456, 769, 634, 89, 613, 149, 564, 89, 150, 150,
150, 150, 150, 150, 150, 89, 89, 499, 499, 78,
597, 616, 477, 483, 457, 280, 456, 456, 456, 484,
566, 634, 485, 484, 149, 486, 486, 486, 486, 486,
486, 486, 769, 498, 89, 78, 769, 90, 89, 597,
89, 89, 457, 260, 260, 260, 769, 152, 641, 566,
78, 554, 554, 554, 554, 554, 554, 554, 554, 554,
554, 554, 554, 456, 456, 456, 484, 484, 769, 261,
89, 769, 478, 90, 89, 478, 478, 641, 376, 769,
484, 89, 89, 489, 484, 618, 78, 149, 481, 457,
376, 551, 545, 483, 567, 280, 487, 588, 551, 484,
588, 588, 485, 484, 769, 486, 486, 486, 486, 486,
486, 486, 615, 769, 618, 487, 589, 89, 89, 478,
478, 499, 633, 567, 503, 499, 769, 484, 484, 376,
175, 149, 619, 376, 456, 456, 456, 487, 617, 175,
769, 615, 621, 769, 588, 588, 484, 484, 769, 769,
149, 633, 642, 150, 150, 150, 150, 150, 150, 150,
457, 619, 89, 635, 769, 90, 89, 617, 499, 499,
603, 621, 483, 498, 376, 280, 149, 376, 78, 499,
769, 642, 500, 499, 620, 501, 501, 501, 501, 501,
501, 501, 635, 588, 644, 78, 588, 588, 588, 603,
606, 588, 588, 149, 260, 260, 260, 637, 769, 89,
89, 376, 589, 620, 212, 146, 376, 769, 732, 769,
636, 769, 149, 644, 769, 213, 499, 499, 769, 606,
261, 626, 645, 627, 593, 643, 637, 376, 593, 593,
588, 588, 593, 593, 646, 588, 588, 732, 631, 636,
376, 593, 559, 498, 593, 280, 593, 640, 146, 499,
146, 645, 500, 499, 643, 501, 501, 501, 501, 501,
501, 501, 648, 646, 376, 487, 89, 631, 376, 90,
89, 376, 456, 456, 456, 593, 640, 647, 149, 639,
149, 769, 78, 456, 456, 456, 769, 666, 649, 769,
656, 648, 456, 456, 456, 688, 499, 499, 457, 149,
260, 260, 260, 769, 149, 769, 647, 653, 659, 457,
653, 653, 658, 89, 89, 149, 666, 649, 457, 656,
660, 664, 498, 88, 688, 134, 261, 175, 626, 89,
627, 593, 149, 89, 665, 593, 593, 659, 769, 593,
593, 658, 769, 769, 738, 78, 675, 769, 593, 660,
664, 593, 562, 654, 653, 653, 212, 146, 456, 456,
456, 769, 376, 665, 456, 456, 456, 213, 563, 667,
456, 456, 456, 738, 769, 675, 89, 89, 456, 456,
456, 562, 593, 769, 457, 653, 376, 769, 653, 653,
457, 653, 769, 668, 653, 653, 457, 563, 667, 657,
149, 149, 88, 88, 457, 134, 626, 769, 627, 89,
149, 769, 565, 89, 376, 215, 215, 215, 215, 215,
215, 215, 668, 376, 679, 78, 682, 149, 657, 376,
149, 678, 653, 653, 671, 676, 681, 376, 653, 653,
212, 146, 260, 260, 260, 769, 680, 212, 146, 671,
769, 213, 690, 679, 769, 682, 89, 89, 213, 694,
678, 769, 689, 671, 676, 681, 149, 769, 261, 212,
702, 626, 769, 627, 673, 680, 769, 769, 671, 149,
213, 690, 88, 483, 769, 134, 769, 693, 694, 484,
687, 689, 546, 484, 710, 590, 590, 590, 590, 590,
590, 590, 769, 673, 704, 78, 686, 686, 686, 686,
686, 686, 686, 456, 456, 456, 693, 149, 769, 687,
456, 456, 456, 695, 695, 695, 695, 695, 695, 695,
212, 146, 769, 704, 701, 376, 484, 484, 705, 457,
769, 213, 707, 769, 769, 149, 457, 686, 686, 686,
686, 686, 686, 686, 711, 711, 711, 711, 711, 711,
711, 146, 483, 498, 149, 134, 703, 705, 149, 499,
716, 707, 560, 499, 708, 599, 599, 599, 599, 599,
599, 599, 456, 456, 456, 78, 769, 695, 695, 695,
695, 695, 695, 695, 769, 703, 212, 146, 742, 716,
714, 769, 715, 149, 769, 769, 712, 213, 457, 717,
717, 717, 717, 717, 717, 717, 499, 499, 711, 711,
711, 711, 711, 711, 711, 212, 146, 742, 722, 714,
713, 715, 769, 149, 149, 712, 213, 769, 212, 146,
769, 769, 498, 400, 400, 149, 697, 400, 698, 213,
400, 400, 400, 724, 149, 400, 769, 722, 149, 713,
769, 720, 212, 146, 769, 729, 769, 400, 400, 537,
400, 700, 400, 213, 769, 730, 745, 741, 769, 721,
769, 769, 724, 717, 717, 717, 717, 717, 717, 717,
720, 540, 540, 719, 729, 769, 727, 769, 400, 400,
769, 400, 212, 146, 730, 745, 741, 769, 721, 212,
146, 212, 146, 213, 149, 149, 726, 149, 212, 146,
213, 769, 213, 769, 769, 727, 400, 400, 400, 213,
697, 400, 400, 769, 400, 400, 400, 728, 769, 400,
769, 769, 149, 733, 735, 736, 739, 757, 212, 146,
769, 400, 400, 769, 400, 700, 400, 769, 734, 213,
212, 146, 749, 769, 769, 149, 728, 212, 146, 212,
146, 213, 733, 735, 736, 739, 757, 769, 213, 149,
213, 769, 400, 400, 769, 400, 769, 734, 212, 146,
754, 749, 212, 146, 212, 146, 740, 212, 146, 213,
212, 146, 760, 213, 769, 753, 769, 743, 213, 769,
400, 756, 744, 212, 146, 212, 146, 747, 769, 754,
748, 212, 146, 769, 758, 740, 759, 212, 146, 755,
769, 760, 761, 212, 146, 769, 743, 752, 762, 212,
146, 744, 212, 146, 763, 769, 747, 769, 769, 748,
764, 766, 146, 765, 212, 146, 768, 146, 755, 769,
769, 769, 294, 167, 769, 767, 752, 294, 75, 167,
769, 167, 769, 75, 769, 75, 75, 769, 75, 769,
769, 75, 769, 769, 75, 75, 75, 75, 86, 86,
769, 86, 86, 86, 86, 86, 86, 86, 86, 86,
86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
86, 86, 88, 769, 769, 769, 769, 88, 769, 88,
88, 769, 88, 769, 769, 88, 769, 769, 88, 88,
88, 88, 105, 769, 769, 769, 769, 105, 769, 105,
105, 769, 105, 769, 769, 769, 769, 769, 105, 105,
105, 105, 112, 769, 769, 769, 112, 112, 769, 112,
112, 769, 112, 769, 112, 769, 769, 769, 112, 112,
112, 112, 116, 116, 769, 116, 116, 116, 116, 116,
116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
116, 116, 116, 116, 116, 116, 117, 769, 769, 769,
117, 117, 117, 117, 117, 117, 117, 117, 117, 769,
117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
119, 769, 769, 769, 769, 119, 769, 119, 119, 769,
119, 769, 769, 769, 769, 769, 119, 119, 119, 119,
121, 769, 769, 769, 769, 121, 769, 121, 121, 769,
121, 769, 769, 769, 769, 769, 121, 121, 121, 121,
125, 769, 769, 769, 769, 125, 769, 125, 125, 769,
125, 769, 769, 769, 769, 769, 125, 125, 125, 125,
133, 769, 769, 133, 769, 769, 769, 769, 769, 133,
133, 133, 136, 769, 136, 769, 769, 136, 769, 136,
136, 769, 136, 769, 769, 136, 769, 769, 136, 136,
136, 136, 147, 769, 769, 147, 769, 769, 147, 147,
147, 147, 147, 147, 147, 769, 147, 147, 769, 147,
147, 147, 150, 769, 150, 769, 769, 150, 769, 150,
150, 769, 150, 769, 769, 150, 769, 769, 150, 150,
150, 150, 173, 173, 173, 173, 173, 173, 173, 173,
173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
173, 173, 173, 173, 173, 173, 189, 189, 769, 189,
769, 189, 769, 189, 189, 769, 189, 189, 769, 769,
769, 769, 189, 189, 189, 189, 134, 769, 769, 769,
769, 134, 769, 769, 134, 769, 769, 769, 769, 769,
134, 134, 134, 239, 239, 239, 239, 239, 239, 239,
239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
239, 239, 239, 239, 239, 239, 239, 273, 273, 273,
769, 769, 769, 769, 769, 769, 769, 273, 273, 769,
273, 769, 273, 769, 769, 769, 273, 273, 273, 280,
769, 769, 769, 769, 280, 769, 769, 280, 769, 769,
769, 769, 769, 280, 280, 280, 284, 769, 284, 769,
769, 284, 769, 284, 284, 769, 284, 769, 769, 284,
769, 769, 284, 284, 284, 284, 298, 769, 298, 769,
769, 298, 769, 298, 298, 769, 298, 769, 769, 298,
769, 769, 298, 298, 298, 298, 324, 324, 324, 324,
324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
324, 324, 324, 324, 324, 324, 324, 324, 324, 324,
325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
325, 325, 325, 325, 325, 325, 325, 325, 325, 325,
325, 325, 325, 325, 357, 357, 769, 357, 357, 357,
357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
357, 357, 357, 357, 357, 357, 357, 357, 374, 374,
374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
374, 374, 374, 374, 374, 374, 374, 374, 374, 374,
374, 374, 400, 400, 769, 400, 400, 400, 400, 400,
400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
400, 400, 400, 400, 400, 400, 402, 769, 769, 769,
769, 402, 769, 769, 402, 769, 769, 769, 769, 769,
402, 402, 402, 402, 404, 769, 404, 769, 769, 404,
769, 404, 404, 769, 404, 769, 769, 404, 769, 769,
404, 404, 404, 404, 415, 769, 415, 769, 769, 415,
769, 415, 415, 769, 415, 769, 769, 415, 769, 769,
415, 415, 415, 415, 482, 769, 482, 769, 769, 482,
769, 482, 482, 769, 482, 769, 769, 482, 769, 769,
482, 482, 482, 482, 477, 769, 769, 769, 769, 477,
769, 477, 477, 769, 477, 769, 769, 477, 769, 769,
477, 477, 477, 477, 488, 769, 488, 769, 769, 488,
769, 488, 488, 769, 488, 769, 769, 488, 769, 769,
488, 488, 488, 488, 483, 769, 769, 769, 769, 483,
769, 483, 483, 769, 483, 769, 769, 483, 769, 769,
483, 483, 483, 483, 502, 769, 502, 769, 769, 502,
769, 502, 502, 769, 502, 769, 769, 502, 769, 769,
502, 502, 502, 502, 498, 769, 769, 769, 769, 498,
769, 498, 498, 769, 498, 769, 769, 498, 769, 769,
498, 498, 498, 498, 529, 529, 529, 529, 529, 529,
529, 529, 529, 529, 529, 529, 529, 529, 529, 529,
529, 529, 529, 529, 529, 529, 529, 529, 541, 769,
541, 769, 769, 541, 769, 541, 541, 769, 541, 769,
769, 769, 769, 769, 541, 541, 541, 541, 543, 543,
543, 543, 544, 769, 544, 769, 769, 544, 769, 544,
544, 769, 544, 769, 769, 544, 769, 769, 544, 544,
544, 544, 547, 769, 547, 769, 769, 547, 769, 547,
547, 769, 547, 769, 769, 547, 769, 769, 547, 547,
547, 547, 550, 769, 769, 769, 769, 769, 550, 769,
769, 550, 769, 769, 769, 550, 769, 550, 550, 550,
558, 769, 558, 769, 769, 558, 769, 558, 558, 769,
558, 769, 769, 558, 769, 769, 558, 558, 558, 558,
561, 769, 561, 769, 769, 561, 769, 561, 561, 769,
561, 769, 769, 561, 769, 769, 561, 561, 561, 561,
150, 769, 150, 769, 769, 150, 769, 150, 150, 769,
150, 769, 769, 150, 769, 769, 150, 150, 150, 150,
529, 529, 529, 529, 529, 529, 529, 529, 529, 529,
529, 529, 529, 529, 529, 529, 529, 529, 529, 529,
529, 529, 529, 529, 189, 189, 769, 189, 769, 189,
769, 189, 189, 769, 189, 189, 769, 769, 769, 769,
189, 189, 189, 189, 477, 769, 769, 769, 769, 477,
769, 477, 477, 769, 477, 769, 769, 477, 769, 769,
477, 477, 477, 477, 587, 769, 769, 769, 769, 587,
769, 587, 587, 769, 587, 769, 769, 769, 769, 587,
587, 587, 587, 587, 593, 769, 593, 593, 769, 769,
593, 593, 593, 593, 593, 593, 593, 769, 593, 593,
769, 593, 593, 593, 624, 624, 624, 624, 628, 769,
628, 628, 769, 769, 628, 628, 628, 628, 628, 628,
628, 769, 628, 628, 769, 628, 628, 628, 652, 769,
769, 769, 769, 652, 769, 652, 652, 769, 652, 769,
769, 769, 769, 769, 652, 652, 652, 652, 662, 662,
769, 662, 662, 662, 662, 662, 662, 662, 662, 662,
662, 662, 662, 662, 662, 662, 662, 662, 662, 662,
662, 662, 663, 663, 769, 663, 663, 663, 663, 663,
663, 663, 663, 663, 663, 663, 663, 663, 663, 663,
663, 663, 663, 663, 663, 663, 692, 769, 692, 769,
769, 769, 769, 769, 769, 769, 692, 769, 692, 692,
769, 769, 769, 769, 769, 692, 692, 692, 699, 699,
769, 699, 699, 699, 699, 699, 699, 699, 699, 699,
699, 699, 699, 699, 699, 699, 699, 699, 699, 699,
699, 699, 400, 400, 769, 400, 400, 400, 400, 400,
400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
400, 400, 400, 400, 400, 400, 737, 737, 769, 737,
737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
750, 750, 769, 750, 750, 750, 750, 750, 750, 750,
750, 750, 750, 750, 750, 750, 750, 750, 750, 750,
750, 750, 750, 750, 21, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769
} ;
static const flex_int32_t yy_chk[5740] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 8, 751, 750, 8,
25, 25, 25, 25, 25, 25, 25, 8, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 11, 11, 13, 14, 18, 26,
746, 26, 26, 26, 26, 26, 26, 26, 742, 18,
13, 14, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 23, 27, 715, 27,
27, 27, 27, 27, 27, 27, 28, 66, 28, 28,
28, 28, 28, 28, 28, 31, 699, 32, 31, 31,
32, 32, 87, 33, 73, 23, 33, 33, 86, 288,
334, 31, 87, 32, 698, 591, 66, 591, 34, 33,
35, 34, 34, 35, 35, 40, 693, 684, 40, 40,
33, 32, 288, 73, 34, 52, 35, 86, 52, 52,
35, 40, 31, 31, 32, 32, 34, 109, 109, 109,
33, 33, 36, 36, 36, 36, 36, 36, 36, 33,
32, 107, 334, 669, 110, 34, 34, 35, 35, 35,
111, 108, 40, 40, 41, 34, 42, 41, 41, 42,
42, 43, 52, 52, 43, 43, 127, 127, 127, 107,
41, 108, 42, 110, 234, 234, 234, 43, 42, 111,
592, 43, 592, 42, 132, 43, 145, 655, 41, 45,
42, 650, 45, 45, 632, 44, 124, 167, 44, 44,
108, 41, 41, 42, 42, 45, 124, 42, 43, 43,
43, 44, 42, 132, 43, 145, 116, 41, 629, 42,
124, 625, 45, 44, 46, 599, 167, 46, 46, 605,
168, 48, 44, 590, 48, 48, 45, 45, 561, 605,
46, 49, 44, 44, 49, 49, 47, 48, 46, 47,
47, 45, 44, 116, 167, 48, 60, 49, 168, 60,
60, 44, 47, 171, 50, 54, 47, 50, 50, 55,
55, 46, 46, 55, 55, 147, 147, 46, 48, 48,
50, 49, 116, 554, 48, 55, 147, 172, 49, 49,
177, 54, 171, 47, 47, 47, 54, 177, 50, 54,
547, 539, 61, 60, 60, 61, 61, 175, 175, 175,
49, 50, 50, 148, 148, 340, 172, 55, 55, 65,
54, 529, 65, 65, 148, 54, 177, 50, 54, 57,
57, 175, 57, 787, 57, 57, 487, 57, 57, 787,
57, 213, 213, 340, 57, 194, 194, 194, 456, 61,
61, 411, 213, 57, 57, 57, 57, 57, 57, 68,
68, 68, 68, 68, 68, 68, 65, 65, 67, 194,
67, 67, 67, 67, 67, 67, 67, 71, 401, 71,
71, 71, 71, 71, 57, 57, 69, 200, 69, 69,
69, 69, 69, 69, 69, 70, 400, 70, 70, 70,
70, 70, 70, 70, 75, 183, 76, 75, 75, 76,
76, 186, 183, 374, 211, 77, 200, 77, 186, 184,
75, 77, 76, 79, 77, 77, 79, 79, 80, 214,
214, 80, 80, 184, 491, 223, 188, 77, 233, 79,
214, 183, 81, 211, 80, 81, 81, 186, 80, 341,
188, 75, 75, 76, 76, 637, 82, 491, 81, 82,
82, 339, 184, 79, 223, 637, 324, 233, 77, 77,
79, 79, 82, 81, 293, 80, 80, 80, 83, 188,
83, 83, 83, 83, 83, 83, 83, 292, 82, 81,
81, 549, 79, 84, 77, 84, 84, 84, 84, 84,
84, 84, 81, 82, 82, 85, 191, 85, 85, 85,
85, 85, 85, 85, 549, 88, 254, 82, 88, 88,
89, 279, 272, 89, 89, 254, 260, 235, 90, 91,
90, 88, 91, 91, 90, 199, 89, 90, 90, 92,
190, 235, 92, 92, 93, 91, 201, 93, 93, 191,
90, 176, 92, 189, 254, 92, 312, 312, 312, 237,
93, 201, 88, 88, 93, 176, 237, 89, 89, 91,
235, 176, 476, 476, 476, 201, 91, 91, 191, 173,
94, 90, 90, 94, 94, 95, 92, 92, 95, 95,
201, 93, 93, 93, 176, 237, 94, 421, 91, 96,
176, 95, 96, 96, 169, 146, 143, 90, 143, 143,
143, 143, 143, 94, 242, 96, 278, 790, 97, 249,
144, 97, 97, 790, 95, 421, 249, 94, 94, 133,
96, 242, 95, 95, 97, 98, 123, 117, 98, 98,
99, 182, 94, 99, 99, 278, 96, 96, 182, 97,
550, 98, 182, 95, 100, 249, 99, 100, 100, 96,
242, 294, 294, 244, 101, 97, 97, 101, 101, 98,
100, 105, 294, 550, 105, 105, 256, 182, 97, 244,
101, 182, 98, 98, 113, 256, 106, 99, 99, 106,
106, 104, 100, 78, 104, 104, 101, 255, 98, 72,
238, 100, 100, 593, 104, 593, 103, 104, 244, 103,
103, 101, 101, 119, 256, 255, 119, 119, 105, 105,
238, 100, 103, 63, 62, 101, 102, 103, 120, 102,
102, 120, 120, 106, 106, 641, 112, 112, 104, 104,
112, 112, 102, 121, 255, 641, 121, 121, 102, 238,
262, 102, 112, 103, 103, 122, 103, 262, 122, 122,
119, 119, 114, 114, 102, 102, 114, 114, 125, 58,
53, 125, 125, 102, 102, 120, 120, 102, 114, 126,
102, 39, 126, 126, 112, 112, 262, 185, 185, 185,
121, 121, 258, 102, 102, 128, 128, 128, 128, 128,
128, 128, 122, 122, 30, 243, 243, 243, 258, 29,
114, 114, 115, 185, 268, 125, 125, 134, 134, 134,
134, 134, 134, 134, 115, 21, 126, 126, 115, 115,
115, 243, 115, 185, 115, 115, 268, 258, 115, 115,
264, 115, 115, 305, 264, 115, 115, 115, 129, 250,
129, 129, 129, 129, 129, 129, 129, 115, 115, 115,
20, 115, 185, 115, 115, 268, 16, 115, 115, 250,
115, 115, 305, 264, 115, 115, 115, 130, 12, 130,
130, 130, 130, 130, 130, 130, 131, 10, 131, 131,
131, 131, 131, 131, 131, 135, 253, 135, 250, 137,
263, 135, 137, 137, 135, 135, 7, 135, 135, 135,
135, 135, 135, 135, 263, 137, 253, 135, 138, 317,
139, 138, 138, 139, 139, 141, 141, 141, 141, 141,
141, 141, 137, 317, 138, 140, 139, 6, 140, 140,
261, 261, 261, 263, 139, 253, 137, 137, 135, 135,
626, 140, 626, 151, 4, 138, 151, 151, 677, 140,
677, 137, 317, 322, 261, 138, 138, 139, 139, 151,
322, 0, 0, 139, 135, 195, 195, 195, 195, 195,
195, 195, 140, 140, 138, 314, 151, 142, 140, 142,
142, 142, 142, 142, 142, 142, 149, 0, 149, 322,
151, 151, 149, 0, 0, 149, 149, 314, 149, 149,
149, 149, 149, 149, 149, 151, 153, 313, 149, 153,
153, 154, 313, 155, 154, 154, 155, 155, 0, 691,
156, 691, 153, 156, 156, 271, 314, 154, 157, 155,
0, 157, 157, 274, 274, 274, 156, 155, 179, 149,
149, 313, 0, 153, 157, 245, 245, 245, 156, 179,
154, 350, 157, 153, 153, 179, 271, 274, 154, 154,
155, 155, 692, 246, 692, 149, 155, 156, 156, 0,
158, 245, 153, 158, 158, 157, 157, 156, 179, 154,
350, 157, 330, 246, 179, 271, 158, 246, 159, 159,
159, 159, 159, 159, 159, 160, 330, 161, 160, 160,
161, 161, 158, 0, 162, 0, 163, 162, 162, 163,
163, 160, 246, 161, 266, 332, 246, 158, 158, 159,
162, 161, 163, 164, 331, 330, 164, 164, 162, 332,
163, 158, 198, 160, 198, 198, 198, 198, 198, 164,
266, 318, 160, 160, 161, 161, 331, 164, 159, 0,
161, 162, 162, 163, 163, 0, 318, 162, 332, 163,
0, 165, 160, 166, 165, 165, 166, 166, 266, 0,
164, 164, 178, 236, 0, 331, 164, 165, 178, 166,
366, 385, 321, 178, 236, 318, 178, 236, 247, 247,
247, 359, 166, 366, 178, 385, 180, 180, 180, 180,
180, 165, 248, 248, 248, 321, 180, 178, 165, 165,
166, 166, 178, 236, 247, 178, 236, 251, 251, 251,
359, 166, 366, 178, 385, 181, 180, 370, 248, 323,
165, 174, 368, 181, 321, 174, 399, 174, 368, 174,
181, 181, 370, 251, 319, 174, 174, 319, 174, 174,
187, 329, 323, 187, 174, 180, 187, 187, 329, 0,
187, 187, 181, 660, 174, 399, 174, 368, 174, 181,
181, 370, 372, 660, 174, 174, 319, 174, 174, 0,
0, 323, 187, 174, 0, 187, 187, 329, 372, 187,
187, 196, 196, 196, 196, 196, 196, 196, 197, 0,
197, 197, 197, 197, 197, 197, 197, 202, 202, 202,
202, 202, 202, 202, 203, 0, 203, 372, 204, 0,
203, 204, 204, 203, 203, 371, 203, 203, 203, 203,
203, 203, 203, 0, 204, 205, 203, 0, 205, 205,
207, 204, 206, 207, 207, 206, 206, 371, 252, 252,
252, 205, 257, 257, 257, 367, 207, 412, 206, 259,
259, 259, 367, 0, 0, 204, 204, 203, 203, 392,
204, 678, 392, 205, 252, 206, 371, 378, 257, 0,
0, 678, 205, 205, 378, 259, 412, 207, 207, 206,
206, 367, 208, 203, 208, 208, 208, 208, 208, 208,
208, 392, 205, 209, 206, 209, 209, 209, 209, 209,
209, 209, 210, 378, 210, 210, 210, 210, 210, 210,
210, 215, 548, 215, 548, 216, 433, 215, 216, 216,
215, 215, 433, 215, 215, 215, 215, 215, 215, 215,
440, 216, 217, 215, 0, 217, 217, 548, 216, 219,
475, 220, 219, 219, 220, 220, 440, 0, 217, 0,
218, 433, 219, 218, 218, 219, 0, 220, 0, 265,
265, 265, 216, 216, 215, 215, 218, 216, 221, 475,
217, 221, 221, 724, 218, 440, 376, 376, 376, 217,
217, 395, 220, 724, 221, 265, 219, 219, 220, 220,
215, 222, 0, 430, 222, 222, 0, 218, 218, 217,
376, 221, 224, 218, 222, 224, 224, 222, 395, 225,
428, 220, 225, 225, 430, 221, 221, 226, 224, 384,
226, 226, 224, 495, 227, 225, 384, 227, 227, 428,
221, 497, 497, 226, 0, 352, 352, 395, 222, 222,
227, 0, 497, 430, 228, 226, 352, 228, 228, 224,
224, 224, 495, 0, 0, 384, 225, 225, 428, 0,
228, 227, 0, 229, 226, 226, 229, 229, 387, 351,
351, 227, 227, 0, 226, 387, 352, 228, 230, 229,
351, 230, 230, 267, 267, 267, 269, 269, 269, 0,
227, 228, 228, 0, 230, 460, 273, 273, 273, 460,
229, 351, 230, 429, 387, 352, 228, 437, 454, 267,
229, 229, 269, 270, 270, 270, 270, 270, 270, 270,
273, 0, 273, 429, 454, 230, 230, 437, 460, 229,
351, 230, 241, 275, 0, 275, 275, 275, 275, 275,
275, 275, 315, 315, 315, 0, 380, 555, 241, 241,
241, 0, 429, 454, 241, 241, 437, 380, 241, 316,
316, 316, 241, 380, 0, 241, 241, 276, 315, 276,
276, 276, 276, 276, 276, 276, 555, 241, 241, 241,
320, 320, 320, 241, 241, 316, 380, 241, 586, 471,
391, 241, 380, 389, 241, 241, 277, 391, 277, 277,
277, 277, 277, 277, 277, 280, 320, 389, 280, 280,
280, 280, 280, 280, 280, 281, 434, 586, 281, 281,
281, 281, 281, 281, 281, 282, 391, 282, 471, 438,
434, 282, 0, 0, 282, 282, 389, 282, 282, 282,
282, 282, 282, 282, 596, 285, 438, 282, 285, 285,
286, 393, 287, 286, 286, 287, 287, 471, 393, 434,
735, 285, 328, 328, 328, 285, 286, 760, 287, 0,
735, 0, 287, 596, 286, 438, 0, 760, 282, 282,
289, 289, 289, 289, 289, 289, 289, 393, 328, 369,
369, 369, 285, 285, 285, 295, 295, 286, 286, 287,
287, 287, 446, 286, 282, 290, 295, 290, 290, 290,
290, 290, 290, 290, 291, 369, 291, 291, 291, 291,
291, 390, 446, 623, 295, 651, 390, 295, 431, 299,
0, 0, 299, 299, 300, 431, 0, 300, 300, 373,
373, 373, 0, 0, 303, 299, 0, 303, 303, 299,
300, 446, 623, 295, 651, 390, 295, 296, 300, 296,
303, 0, 0, 296, 431, 373, 296, 296, 303, 296,
296, 296, 296, 296, 296, 296, 299, 299, 299, 296,
301, 300, 300, 301, 301, 304, 0, 300, 304, 304,
306, 303, 303, 306, 306, 0, 301, 303, 459, 307,
449, 304, 307, 307, 0, 304, 306, 457, 457, 457,
296, 296, 459, 301, 309, 307, 306, 309, 309, 308,
449, 0, 308, 308, 432, 432, 432, 301, 301, 462,
309, 457, 304, 304, 304, 308, 296, 306, 306, 0,
307, 459, 301, 308, 511, 306, 307, 307, 310, 449,
432, 310, 310, 309, 311, 462, 436, 311, 311, 451,
377, 309, 309, 436, 310, 511, 308, 308, 383, 307,
311, 333, 308, 442, 377, 383, 311, 451, 670, 383,
377, 310, 309, 462, 333, 333, 333, 333, 333, 333,
333, 0, 436, 442, 511, 310, 310, 442, 439, 439,
439, 311, 311, 377, 383, 311, 451, 670, 383, 377,
310, 327, 336, 336, 336, 336, 336, 336, 336, 0,
464, 435, 442, 327, 439, 0, 442, 327, 327, 327,
450, 327, 435, 327, 327, 435, 445, 327, 327, 450,
327, 327, 464, 445, 327, 327, 327, 337, 568, 337,
337, 337, 337, 337, 337, 337, 327, 327, 327, 0,
327, 435, 327, 327, 435, 0, 327, 327, 450, 327,
327, 464, 445, 327, 327, 327, 338, 342, 338, 338,
338, 338, 338, 568, 342, 597, 597, 342, 342, 342,
342, 342, 342, 342, 344, 0, 597, 344, 344, 347,
0, 347, 347, 347, 347, 347, 347, 347, 452, 0,
344, 345, 568, 0, 345, 345, 348, 452, 348, 348,
348, 348, 348, 348, 348, 466, 671, 345, 671, 468,
349, 344, 349, 349, 349, 349, 349, 349, 349, 0,
363, 344, 344, 363, 363, 458, 452, 466, 518, 468,
345, 671, 458, 518, 342, 343, 363, 343, 345, 345,
344, 343, 0, 0, 343, 343, 0, 343, 343, 343,
343, 343, 343, 343, 0, 512, 466, 343, 468, 345,
354, 458, 518, 354, 354, 0, 0, 363, 363, 0,
0, 355, 512, 0, 355, 355, 354, 394, 394, 394,
394, 394, 394, 394, 519, 0, 513, 355, 343, 343,
381, 381, 381, 381, 381, 356, 0, 354, 356, 356,
381, 512, 413, 413, 0, 0, 519, 354, 354, 513,
355, 356, 0, 413, 343, 353, 0, 353, 355, 355,
381, 353, 0, 526, 353, 353, 354, 353, 353, 353,
353, 353, 353, 353, 356, 519, 413, 353, 513, 355,
0, 358, 356, 356, 358, 358, 526, 0, 360, 381,
361, 360, 360, 361, 361, 0, 410, 358, 410, 410,
410, 410, 410, 356, 360, 413, 361, 362, 353, 353,
362, 362, 360, 0, 361, 526, 364, 522, 358, 364,
364, 0, 0, 362, 386, 386, 386, 538, 358, 358,
0, 522, 364, 523, 353, 360, 360, 361, 361, 0,
362, 360, 365, 361, 0, 365, 365, 358, 523, 515,
386, 379, 0, 0, 362, 362, 515, 379, 365, 382,
522, 527, 379, 364, 364, 379, 0, 382, 527, 362,
386, 531, 538, 379, 382, 382, 403, 523, 531, 403,
403, 365, 414, 414, 405, 515, 379, 405, 405, 365,
365, 379, 403, 414, 379, 524, 382, 527, 524, 386,
405, 538, 379, 382, 382, 407, 532, 531, 407, 407,
365, 375, 528, 414, 696, 375, 533, 375, 709, 375,
532, 407, 718, 403, 403, 375, 375, 524, 375, 375,
388, 405, 405, 388, 375, 528, 388, 388, 533, 0,
388, 388, 414, 696, 375, 0, 375, 709, 375, 532,
0, 718, 407, 407, 375, 375, 0, 375, 375, 0,
0, 536, 388, 375, 528, 388, 388, 533, 536, 388,
388, 396, 396, 396, 396, 396, 396, 396, 397, 397,
397, 397, 397, 397, 397, 398, 398, 398, 398, 398,
398, 398, 402, 566, 402, 0, 406, 536, 402, 406,
406, 402, 402, 0, 402, 402, 402, 402, 402, 402,
402, 565, 406, 566, 402, 408, 408, 408, 408, 408,
408, 408, 409, 534, 409, 409, 409, 409, 409, 409,
409, 726, 416, 726, 573, 416, 416, 534, 0, 0,
406, 573, 566, 406, 406, 402, 402, 565, 416, 417,
0, 418, 417, 417, 418, 418, 726, 419, 557, 420,
419, 419, 420, 420, 0, 417, 534, 418, 406, 571,
573, 402, 404, 419, 404, 420, 565, 0, 404, 416,
416, 404, 404, 0, 404, 404, 404, 404, 404, 404,
404, 571, 0, 417, 404, 0, 417, 417, 418, 418,
557, 0, 0, 420, 419, 419, 420, 420, 422, 0,
0, 422, 422, 426, 426, 426, 426, 426, 426, 426,
571, 417, 0, 0, 422, 404, 404, 0, 576, 557,
423, 420, 0, 423, 423, 473, 473, 473, 473, 473,
0, 424, 426, 576, 424, 424, 423, 441, 441, 441,
0, 404, 415, 423, 415, 422, 422, 424, 415, 0,
0, 415, 415, 424, 415, 415, 415, 415, 415, 415,
415, 426, 576, 441, 415, 0, 562, 423, 423, 540,
540, 540, 423, 443, 443, 443, 0, 427, 424, 424,
427, 427, 424, 425, 425, 425, 425, 425, 425, 425,
427, 562, 0, 427, 540, 415, 415, 0, 0, 443,
444, 444, 444, 447, 447, 447, 448, 448, 448, 425,
453, 453, 453, 455, 455, 455, 461, 461, 461, 0,
562, 415, 0, 0, 427, 427, 444, 563, 0, 447,
496, 496, 448, 463, 463, 463, 453, 0, 425, 455,
0, 496, 461, 465, 465, 465, 467, 467, 467, 469,
469, 469, 472, 472, 472, 472, 472, 472, 472, 463,
0, 563, 470, 657, 657, 569, 496, 477, 563, 465,
477, 477, 467, 0, 657, 469, 470, 470, 470, 470,
470, 470, 470, 477, 478, 0, 0, 478, 478, 483,
563, 0, 483, 483, 0, 496, 563, 514, 514, 514,
478, 569, 489, 0, 489, 483, 484, 0, 489, 484,
484, 489, 489, 490, 477, 477, 490, 490, 516, 516,
516, 0, 484, 514, 489, 0, 517, 517, 517, 490,
569, 478, 478, 479, 622, 479, 483, 483, 585, 479,
0, 636, 479, 479, 516, 479, 479, 479, 479, 479,
479, 479, 517, 484, 484, 489, 489, 520, 520, 520,
490, 490, 492, 492, 492, 492, 492, 492, 492, 493,
493, 493, 493, 493, 493, 493, 585, 636, 622, 0,
0, 489, 0, 520, 0, 0, 479, 479, 521, 521,
521, 570, 494, 494, 494, 494, 494, 494, 494, 0,
498, 0, 492, 498, 498, 585, 636, 622, 570, 493,
0, 572, 479, 480, 521, 480, 498, 499, 0, 480,
499, 499, 480, 480, 572, 480, 480, 480, 480, 480,
480, 480, 494, 499, 503, 480, 503, 570, 504, 574,
503, 504, 504, 503, 503, 574, 578, 498, 498, 556,
556, 0, 0, 572, 504, 601, 503, 710, 710, 710,
556, 710, 578, 0, 499, 499, 480, 480, 525, 525,
525, 0, 601, 506, 574, 508, 506, 506, 508, 508,
508, 508, 508, 508, 508, 504, 504, 503, 503, 506,
556, 578, 480, 485, 525, 485, 530, 530, 530, 485,
508, 601, 485, 485, 608, 485, 485, 485, 485, 485,
485, 485, 0, 503, 509, 485, 0, 509, 509, 556,
506, 506, 530, 535, 535, 535, 0, 509, 608, 508,
509, 552, 552, 552, 552, 552, 552, 552, 553, 553,
553, 553, 553, 575, 575, 575, 485, 485, 0, 535,
510, 0, 542, 510, 510, 542, 542, 608, 581, 0,
545, 509, 509, 545, 545, 581, 510, 600, 542, 575,
577, 552, 485, 486, 510, 486, 545, 543, 553, 486,
543, 543, 486, 486, 0, 486, 486, 486, 486, 486,
486, 486, 577, 0, 581, 486, 543, 510, 510, 542,
542, 559, 600, 510, 559, 559, 0, 545, 545, 582,
609, 602, 582, 580, 579, 579, 579, 559, 580, 584,
0, 577, 584, 0, 543, 543, 486, 486, 0, 0,
564, 600, 609, 564, 564, 564, 564, 564, 564, 564,
579, 582, 567, 602, 0, 567, 567, 580, 559, 559,
564, 584, 486, 500, 612, 500, 604, 583, 567, 500,
0, 609, 500, 500, 583, 500, 500, 500, 500, 500,
500, 500, 602, 587, 612, 500, 587, 587, 588, 564,
567, 588, 588, 603, 610, 610, 610, 604, 0, 567,
567, 613, 587, 583, 598, 598, 611, 588, 725, 0,
603, 0, 607, 612, 0, 598, 500, 500, 0, 567,
610, 594, 613, 594, 594, 611, 604, 614, 594, 594,
587, 587, 594, 594, 614, 588, 588, 725, 598, 603,
617, 594, 500, 501, 594, 501, 594, 607, 630, 501,
674, 613, 501, 501, 611, 501, 501, 501, 501, 501,
501, 501, 617, 614, 643, 501, 606, 598, 619, 606,
606, 616, 615, 615, 615, 594, 607, 616, 634, 606,
633, 0, 606, 618, 618, 618, 0, 643, 619, 0,
630, 617, 620, 620, 620, 674, 501, 501, 615, 635,
621, 621, 621, 0, 640, 0, 616, 624, 634, 618,
624, 624, 633, 606, 606, 658, 643, 619, 620, 630,
635, 640, 501, 505, 674, 505, 621, 642, 628, 505,
628, 628, 505, 505, 642, 628, 628, 634, 0, 628,
628, 633, 0, 0, 732, 505, 658, 0, 628, 635,
640, 628, 505, 628, 624, 624, 631, 631, 644, 644,
644, 0, 645, 642, 646, 646, 646, 631, 505, 645,
647, 647, 647, 732, 0, 658, 505, 505, 648, 648,
648, 505, 628, 0, 644, 652, 649, 0, 652, 652,
646, 653, 0, 649, 653, 653, 647, 505, 645, 631,
659, 664, 505, 507, 648, 507, 654, 0, 654, 507,
661, 0, 507, 507, 667, 507, 507, 507, 507, 507,
507, 507, 649, 668, 664, 507, 668, 675, 631, 666,
676, 661, 652, 652, 654, 659, 667, 680, 653, 653,
656, 656, 665, 665, 665, 0, 666, 673, 673, 654,
0, 656, 676, 664, 0, 668, 507, 507, 673, 680,
661, 0, 675, 654, 659, 667, 679, 0, 665, 687,
687, 700, 0, 700, 656, 666, 0, 0, 654, 689,
687, 676, 507, 546, 0, 546, 0, 679, 680, 546,
673, 675, 546, 546, 700, 546, 546, 546, 546, 546,
546, 546, 0, 656, 689, 546, 672, 672, 672, 672,
672, 672, 672, 681, 681, 681, 679, 690, 0, 673,
682, 682, 682, 683, 683, 683, 683, 683, 683, 683,
688, 688, 0, 689, 686, 694, 546, 546, 690, 681,
0, 688, 694, 0, 0, 706, 682, 686, 686, 686,
686, 686, 686, 686, 701, 701, 701, 701, 701, 701,
701, 702, 546, 560, 704, 560, 688, 690, 705, 560,
706, 694, 560, 560, 695, 560, 560, 560, 560, 560,
560, 560, 707, 707, 707, 560, 0, 695, 695, 695,
695, 695, 695, 695, 0, 688, 703, 703, 738, 706,
704, 0, 705, 714, 0, 0, 702, 703, 707, 708,
708, 708, 708, 708, 708, 708, 560, 560, 711, 711,
711, 711, 711, 711, 711, 712, 712, 738, 714, 704,
703, 705, 0, 716, 722, 702, 712, 0, 713, 713,
0, 0, 560, 685, 685, 741, 685, 685, 685, 713,
685, 685, 685, 716, 723, 685, 0, 714, 736, 703,
0, 712, 720, 720, 0, 722, 0, 685, 685, 717,
685, 685, 685, 720, 0, 723, 741, 736, 0, 713,
0, 0, 716, 717, 717, 717, 717, 717, 717, 717,
712, 719, 719, 719, 722, 719, 720, 0, 685, 685,
0, 685, 727, 727, 723, 741, 736, 0, 713, 721,
721, 728, 728, 727, 729, 730, 719, 754, 733, 733,
721, 0, 728, 0, 0, 720, 685, 697, 697, 733,
697, 697, 697, 0, 697, 697, 697, 721, 0, 697,
0, 0, 745, 727, 729, 730, 733, 754, 734, 734,
0, 697, 697, 0, 697, 697, 697, 0, 728, 734,
739, 739, 745, 0, 0, 749, 721, 740, 740, 743,
743, 739, 727, 729, 730, 733, 754, 0, 740, 757,
743, 0, 697, 697, 0, 697, 0, 728, 744, 744,
749, 745, 747, 747, 748, 748, 734, 752, 752, 744,
753, 753, 757, 747, 0, 748, 0, 739, 752, 0,
697, 753, 740, 755, 755, 756, 756, 743, 0, 749,
744, 758, 758, 0, 755, 734, 756, 759, 759, 752,
0, 757, 758, 761, 761, 0, 739, 747, 759, 762,
762, 740, 763, 763, 761, 0, 743, 0, 0, 744,
762, 764, 764, 763, 765, 765, 767, 767, 752, 0,
0, 0, 764, 784, 0, 765, 747, 767, 770, 784,
0, 784, 0, 770, 0, 770, 770, 0, 770, 0,
0, 770, 0, 0, 770, 770, 770, 770, 771, 771,
0, 771, 771, 771, 771, 771, 771, 771, 771, 771,
771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
771, 771, 772, 0, 0, 0, 0, 772, 0, 772,
772, 0, 772, 0, 0, 772, 0, 0, 772, 772,
772, 772, 773, 0, 0, 0, 0, 773, 0, 773,
773, 0, 773, 0, 0, 0, 0, 0, 773, 773,
773, 773, 774, 0, 0, 0, 774, 774, 0, 774,
774, 0, 774, 0, 774, 0, 0, 0, 774, 774,
774, 774, 775, 775, 0, 775, 775, 775, 775, 775,
775, 775, 775, 775, 775, 775, 775, 775, 775, 775,
775, 775, 775, 775, 775, 775, 776, 0, 0, 0,
776, 776, 776, 776, 776, 776, 776, 776, 776, 0,
776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
777, 0, 0, 0, 0, 777, 0, 777, 777, 0,
777, 0, 0, 0, 0, 0, 777, 777, 777, 777,
778, 0, 0, 0, 0, 778, 0, 778, 778, 0,
778, 0, 0, 0, 0, 0, 778, 778, 778, 778,
779, 0, 0, 0, 0, 779, 0, 779, 779, 0,
779, 0, 0, 0, 0, 0, 779, 779, 779, 779,
780, 0, 0, 780, 0, 0, 0, 0, 0, 780,
780, 780, 781, 0, 781, 0, 0, 781, 0, 781,
781, 0, 781, 0, 0, 781, 0, 0, 781, 781,
781, 781, 782, 0, 0, 782, 0, 0, 782, 782,
782, 782, 782, 782, 782, 0, 782, 782, 0, 782,
782, 782, 783, 0, 783, 0, 0, 783, 0, 783,
783, 0, 783, 0, 0, 783, 0, 0, 783, 783,
783, 783, 785, 785, 785, 785, 785, 785, 785, 785,
785, 785, 785, 785, 785, 785, 785, 785, 785, 785,
785, 785, 785, 785, 785, 785, 786, 786, 0, 786,
0, 786, 0, 786, 786, 0, 786, 786, 0, 0,
0, 0, 786, 786, 786, 786, 788, 0, 0, 0,
0, 788, 0, 0, 788, 0, 0, 0, 0, 0,
788, 788, 788, 789, 789, 789, 789, 789, 789, 789,
789, 789, 789, 789, 789, 789, 789, 789, 789, 789,
789, 789, 789, 789, 789, 789, 789, 791, 791, 791,
0, 0, 0, 0, 0, 0, 0, 791, 791, 0,
791, 0, 791, 0, 0, 0, 791, 791, 791, 792,
0, 0, 0, 0, 792, 0, 0, 792, 0, 0,
0, 0, 0, 792, 792, 792, 793, 0, 793, 0,
0, 793, 0, 793, 793, 0, 793, 0, 0, 793,
0, 0, 793, 793, 793, 793, 794, 0, 794, 0,
0, 794, 0, 794, 794, 0, 794, 0, 0, 794,
0, 0, 794, 794, 794, 794, 795, 795, 795, 795,
795, 795, 795, 795, 795, 795, 795, 795, 795, 795,
795, 795, 795, 795, 795, 795, 795, 795, 795, 795,
796, 796, 796, 796, 796, 796, 796, 796, 796, 796,
796, 796, 796, 796, 796, 796, 796, 796, 796, 796,
796, 796, 796, 796, 797, 797, 0, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 797, 797,
797, 797, 797, 797, 797, 797, 797, 797, 798, 798,
798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
798, 798, 798, 798, 798, 798, 798, 798, 798, 798,
798, 798, 799, 799, 0, 799, 799, 799, 799, 799,
799, 799, 799, 799, 799, 799, 799, 799, 799, 799,
799, 799, 799, 799, 799, 799, 800, 0, 0, 0,
0, 800, 0, 0, 800, 0, 0, 0, 0, 0,
800, 800, 800, 800, 801, 0, 801, 0, 0, 801,
0, 801, 801, 0, 801, 0, 0, 801, 0, 0,
801, 801, 801, 801, 802, 0, 802, 0, 0, 802,
0, 802, 802, 0, 802, 0, 0, 802, 0, 0,
802, 802, 802, 802, 803, 0, 803, 0, 0, 803,
0, 803, 803, 0, 803, 0, 0, 803, 0, 0,
803, 803, 803, 803, 804, 0, 0, 0, 0, 804,
0, 804, 804, 0, 804, 0, 0, 804, 0, 0,
804, 804, 804, 804, 805, 0, 805, 0, 0, 805,
0, 805, 805, 0, 805, 0, 0, 805, 0, 0,
805, 805, 805, 805, 806, 0, 0, 0, 0, 806,
0, 806, 806, 0, 806, 0, 0, 806, 0, 0,
806, 806, 806, 806, 807, 0, 807, 0, 0, 807,
0, 807, 807, 0, 807, 0, 0, 807, 0, 0,
807, 807, 807, 807, 808, 0, 0, 0, 0, 808,
0, 808, 808, 0, 808, 0, 0, 808, 0, 0,
808, 808, 808, 808, 809, 809, 809, 809, 809, 809,
809, 809, 809, 809, 809, 809, 809, 809, 809, 809,
809, 809, 809, 809, 809, 809, 809, 809, 810, 0,
810, 0, 0, 810, 0, 810, 810, 0, 810, 0,
0, 0, 0, 0, 810, 810, 810, 810, 811, 811,
811, 811, 812, 0, 812, 0, 0, 812, 0, 812,
812, 0, 812, 0, 0, 812, 0, 0, 812, 812,
812, 812, 813, 0, 813, 0, 0, 813, 0, 813,
813, 0, 813, 0, 0, 813, 0, 0, 813, 813,
813, 813, 814, 0, 0, 0, 0, 0, 814, 0,
0, 814, 0, 0, 0, 814, 0, 814, 814, 814,
815, 0, 815, 0, 0, 815, 0, 815, 815, 0,
815, 0, 0, 815, 0, 0, 815, 815, 815, 815,
816, 0, 816, 0, 0, 816, 0, 816, 816, 0,
816, 0, 0, 816, 0, 0, 816, 816, 816, 816,
817, 0, 817, 0, 0, 817, 0, 817, 817, 0,
817, 0, 0, 817, 0, 0, 817, 817, 817, 817,
818, 818, 818, 818, 818, 818, 818, 818, 818, 818,
818, 818, 818, 818, 818, 818, 818, 818, 818, 818,
818, 818, 818, 818, 819, 819, 0, 819, 0, 819,
0, 819, 819, 0, 819, 819, 0, 0, 0, 0,
819, 819, 819, 819, 820, 0, 0, 0, 0, 820,
0, 820, 820, 0, 820, 0, 0, 820, 0, 0,
820, 820, 820, 820, 821, 0, 0, 0, 0, 821,
0, 821, 821, 0, 821, 0, 0, 0, 0, 821,
821, 821, 821, 821, 822, 0, 822, 822, 0, 0,
822, 822, 822, 822, 822, 822, 822, 0, 822, 822,
0, 822, 822, 822, 823, 823, 823, 823, 824, 0,
824, 824, 0, 0, 824, 824, 824, 824, 824, 824,
824, 0, 824, 824, 0, 824, 824, 824, 825, 0,
0, 0, 0, 825, 0, 825, 825, 0, 825, 0,
0, 0, 0, 0, 825, 825, 825, 825, 826, 826,
0, 826, 826, 826, 826, 826, 826, 826, 826, 826,
826, 826, 826, 826, 826, 826, 826, 826, 826, 826,
826, 826, 827, 827, 0, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 827, 827, 827, 827,
827, 827, 827, 827, 827, 827, 828, 0, 828, 0,
0, 0, 0, 0, 0, 0, 828, 0, 828, 828,
0, 0, 0, 0, 0, 828, 828, 828, 829, 829,
0, 829, 829, 829, 829, 829, 829, 829, 829, 829,
829, 829, 829, 829, 829, 829, 829, 829, 829, 829,
829, 829, 830, 830, 0, 830, 830, 830, 830, 830,
830, 830, 830, 830, 830, 830, 830, 830, 830, 830,
830, 830, 830, 830, 830, 830, 831, 831, 0, 831,
831, 831, 831, 831, 831, 831, 831, 831, 831, 831,
831, 831, 831, 831, 831, 831, 831, 831, 831, 831,
832, 832, 0, 832, 832, 832, 832, 832, 832, 832,
832, 832, 832, 832, 832, 832, 832, 832, 832, 832,
832, 832, 832, 832, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
769, 769, 769, 769, 769, 769, 769, 769, 769
} ;
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
extern int yy_flex_debug;
int yy_flex_debug = 1;
static const flex_int32_t yy_rule_linenum[43] =
{ 0,
224, 230, 231, 233, 238, 239, 241, 249, 250, 251,
253, 254, 256, 257, 266, 279, 280, 282, 284, 287,
288, 289, 292, 302, 309, 311, 312, 313, 314, 316,
317, 319, 320, 321, 323, 324, 326, 328, 329, 331,
333, 334
} ;
/* The intent behind this definition is that it'll catch
* any uses of REJECT which flex missed.
*/
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "../../src/lexer_v3.l"
#line 2 "../../src/lexer_v3.l"
/*
* NAME
* lexer_v3.l -- bogofilter's lexical analyzer for message headers
*
* 01/01/2003 - split out of lexer.l
*
*/
/*
* Our lexical analysis is different from Paul Graham's rules:
*
* We throw away headers that are readily identifiable as dates.
* We throw away all digit strings that don't look like IP address parts.
* We thow away lines beginning with <tab>id<space> -- mailer UDs.
*
* These are optimizations to keep the token lists from bloating.
* The big win is recognizing machine-generated unique IDs that
* we'll never see again and shouldn't
*
* We don't treat dot between two alphanumerics as a separator,
* because we want to keep domain names and IP addresses together as
* recognizable units.
*
* Having done the above, there isn't much need to recognize URLs.
* If a URL is a spam indicator, very likely any other URL from the
* same site is as well, so the hostname part should be an adequate
* statistical trigger.
*
* LEXED_TOKENS, which are found in "msg-count" files need a special pattern
* because they can be:
* 1 - normal bogofilter tokens
* 2 - url:xxx and subj: tokens
* 3 - mime boundaries
*/
/* 12 May 2003
* Added Paul Graham's latest ideas on parsing.
* (From http://www.paulgraham.com/better.html)
*
* 1. Case is preserved.
*
* 2. Exclamation points are constituent characters.
*
* 3. Periods and commas are constituents if they occur between two
* digits. This lets me get ip addresses and prices intact.
*
* 4. A price range like $20-25 yields two tokens, $20 and $25.
*
* 5. Tokens that occur within the To, From, Subject, and Return-Path
* lines, or within urls, get marked accordingly.
* For example. "foo" in the Subject line becomes "subj:foo".
*/
/* DR 08/29/2003:
**
** With flex-2.5.31 and '%option never-interactive noreject', file
** msg.dr.0118.base64 (in tests/bogofilter/inputs/split.d) parses
** incorrectly because line 24 isn't base64 decoded.
*/
#define YY_NO_INPUT
#include "common.h"
#include <ctype.h>
#include <stdlib.h>
#include "buff.h"
#include "charset.h"
#include "lexer.h"
#include "mime.h" /* for mime_*() */
#include "msgcounts.h"
#include "textblock.h"
#include "token.h"
#include "xmalloc.h"
#define YY_DECL token_t yylex(void)
YY_DECL; /* declare function */
#define YY_INPUT(buf,result,max_size) result = yyinput((byte *)buf, result, max_size)
#define YY_EXIT_FAILURE EX_ERROR
#undef stderr
#define stderr dbgout /* for debug & -D options */
static int lineno;
#define FLEX_VER(MAJ, MIN, SUB) ( MAJ * 1000 + MIN * 100 + SUB)
#ifndef YY_FLEX_SUBMINOR_VERSION
#define FLEX_VERSION_BF FLEX_VER(YY_FLEX_MAJOR_VERSION, YY_FLEX_MINOR_VERSION, 0)
#else
#define FLEX_VERSION_BF FLEX_VER(YY_FLEX_MAJOR_VERSION, YY_FLEX_MINOR_VERSION, YY_FLEX_SUBMINOR_VERSION)
#endif
#if FLEX_VERSION_BF < 2531
int yylineno;
#endif
/* Function Prototypes/Forward Declarations */
static word_t *yy_text(void);
static void html_char(void);
static void html_reorder(void);
static void url_char(void);
static void skip_to(char chr);
static void yy_unput(const byte *txt, uint len);
char yy_get_state(void);
void yy_set_state_initial(void);
static void header(void);
/* Function Definitions */
static word_t *yy_text(void)
{
static word_t yyt;
yyt.u.text = (byte *)yytext;
yyt.leng = yyleng;
return &yyt;
}
#line 2190 "lexer_v3.c"
/***********************************************************************
WARNING: The scanner must be interactive so as not to look ahead past
\n = EOH and other header/body delimiters, else it will fail when MIME
decoding, because part of the body has already been read ahead.
***********************************************************************/
/* RFC2047.2
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
charset = token ; see section 3
encoding = token ; see section 4
token = 1*<Any CHAR except SPACE, CTLs, and especials>
especials = "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "
<"> / "/" / "[" / "]" / "?" / "." / "="
encoded-text = 1*<Any printable ASCII character other than "?"
or SPACE>
; (but see "Use of encoded-words in message
; headers", section 5)
*/
/* 09/01/03
Using "[^?]" in the pattern and validating the charset in 'C'
reduces executable size by approx 290k.
new: ENCODED_WORD =\?{CHARSET}\?[bq]\?[^?]*\?=
old: ENCODED_WORD =\?{CHARSET}\?(b\?{BASE64}\|q\?{QP})\?=
BASE64 [0-9a-zA-Z/+=]+
QP [!->@-~]+
*/
/*
HTML_WI_COMMENTS "<"[^>]*">"
HTML_WO_COMMENTS "<"[^!][^>]*">"\|"<>"
*/
/*
* Generally, there are some html tags that cause an "eyebreak" and some
* that do not. For example, the "P" tag or the "BR" tag cause a break,
* and can be interpreted in place, while, the B (bold) tag does not.
* No close tags seem to cause a break.
* Comments do not. This is an attempt to make an exhaustive list of
* tags that cause an "eyebreak". When the exit tag also causes a break,
* we include the /?. I believe this to be a complete list of tags that
* can cause a formatting break.
*/
#line 2232 "lexer_v3.c"
#define INITIAL 0
#define TEXT 1
#define HTML 2
#define BOGO_LEX 3
#define HTOKEN 4
#define HDISCARD 5
#define SCOMMENT 6
#define LCOMMENT 7
#define PGP_HEAD 8
#define PGP_BODY 9
#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
* down here because we want the user's section 1 to have been scanned first.
* The user has a chance to override it with an option.
*/
/* %if-c-only */
#include <unistd.h>
/* %endif */
/* %if-c++-only */
/* %endif */
#endif
#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif
/* %if-c-only Reentrant structure and macros (non-C++). */
/* %if-reentrant */
/* %if-c-only */
static int yy_init_globals ( void );
/* %endif */
/* %if-reentrant */
/* %endif */
/* %endif End reentrant structures and macros. */
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
int yylex_destroy ( void );
int yyget_debug ( void );
void yyset_debug ( int debug_flag );
YY_EXTRA_TYPE yyget_extra ( void );
void yyset_extra ( YY_EXTRA_TYPE user_defined );
FILE *yyget_in ( void );
void yyset_in ( FILE * _in_str );
FILE *yyget_out ( void );
void yyset_out ( FILE * _out_str );
int yyget_leng ( void );
char *yyget_text ( void );
int yyget_lineno ( void );
void yyset_lineno ( int _line_number );
/* %if-bison-bridge */
/* %endif */
/* Macros after this point can all be overridden by user definitions in
* section 1.
*/
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap ( void );
#else
extern int yywrap ( void );
#endif
#endif
/* %not-for-header */
#ifndef YY_NO_UNPUT
static void yyunput ( int c, char *buf_ptr );
#endif
/* %ok-for-header */
/* %endif */
#ifndef yytext_ptr
static void yy_flex_strncpy ( char *, const char *, int );
#endif
#ifdef YY_NEED_STRLEN
static int yy_flex_strlen ( const char * );
#endif
#ifndef YY_NO_INPUT
/* %if-c-only Standard (non-C++) definition */
/* %not-for-header */
#ifdef __cplusplus
static int yyinput ( void );
#else
static int input ( void );
#endif
/* %ok-for-header */
/* %endif */
#endif
/* %if-c-only */
/* %endif */
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
#define YY_READ_BUF_SIZE 16384
#else
#define YY_READ_BUF_SIZE 8192
#endif /* __ia64__ */
#endif
/* Copy whatever the last rule matched to the standard output. */
#ifndef ECHO
/* %if-c-only Standard (non-C++) definition */
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite().
*/
#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
#endif
/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
* is returned in "result".
*/
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
int n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
if ( c == '\n' ) \
buf[n++] = (char) c; \
if ( c == EOF && ferror( yyin ) ) \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
result = n; \
} \
else \
{ \
errno=0; \
while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
{ \
if( errno != EINTR) \
{ \
YY_FATAL_ERROR( "input in flex scanner failed" ); \
break; \
} \
errno=0; \
clearerr(yyin); \
} \
}\
\
/* %if-c++-only C++ definition \ */\
/* %endif */
#endif
/* No semi-colon after return; correct usage is to write "yyterminate();" -
* we don't want an extra ';' after the "return" because that will cause
* some compilers to complain about unreachable statements.
*/
#ifndef yyterminate
#define yyterminate() return YY_NULL
#endif
/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif
/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
/* %if-c-only */
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
/* %endif */
/* %if-c++-only */
/* %endif */
#endif
/* %if-tables-serialization structures and prototypes */
/* %not-for-header */
/* %ok-for-header */
/* %not-for-header */
/* %tables-yydmap generated elements */
/* %endif */
/* end tables serialization structures and prototypes */
/* %ok-for-header */
/* Default declaration of generated scanner - a define so the user can
* easily add parameters.
*/
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1
/* %if-c-only Standard (non-C++) definition */
extern int yylex (void);
#define YY_DECL int yylex (void)
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
#endif /* !YY_DECL */
/* Code executed at the beginning of each rule, after yytext and yyleng
* have been set up.
*/
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif
/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK /*LINTED*/break;
#endif
/* %% [6.0] YY_RULE_SETUP definition goes here */
#define YY_RULE_SETUP \
if ( yyleng > 0 ) \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
(yytext[yyleng - 1] == '\n'); \
YY_USER_ACTION
/* %not-for-header */
/** The main scanner function which does all the work.
*/
YY_DECL
{
yy_state_type yy_current_state;
char *yy_cp, *yy_bp;
int yy_act;
if ( !(yy_init) )
{
(yy_init) = 1;
#ifdef YY_USER_INIT
YY_USER_INIT;
#endif
if ( ! (yy_start) )
(yy_start) = 1; /* first start state */
if ( ! yyin )
/* %if-c-only */
yyin = stdin;
/* %endif */
/* %if-c++-only */
/* %endif */
if ( ! yyout )
/* %if-c-only */
yyout = stdout;
/* %endif */
/* %if-c++-only */
/* %endif */
if ( ! YY_CURRENT_BUFFER ) {
yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer( yyin, YY_BUF_SIZE );
}
yy_load_buffer_state( );
}
{
/* %% [7.0] user's declarations go here */
#line 222 "../../src/lexer_v3.l"
#line 2527 "lexer_v3.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
/* %% [8.0] yymore()-related code goes here */
yy_cp = (yy_c_buf_p);
/* Support of yytext. */
*yy_cp = (yy_hold_char);
/* yy_bp points to the position in yy_ch_buf of the start of
* the current run.
*/
yy_bp = yy_cp;
/* %% [9.0] code to set up and find next match goes here */
yy_current_state = (yy_start);
yy_current_state += YY_AT_BOL();
yy_match:
do
{
YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
(yy_last_accepting_cpos) = yy_cp;
}
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 770 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
while ( yy_base[yy_current_state] != 5655 );
yy_find_action:
/* %% [10.0] code to find the action number goes here */
yy_act = yy_accept[yy_current_state];
if ( yy_act == 0 )
{ /* have to back up */
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
yy_act = yy_accept[yy_current_state];
}
YY_DO_BEFORE_ACTION;
/* %% [11.0] code for yylineno update goes here */
do_action: /* This label is used only to access EOF actions. */
/* %% [12.0] debug code goes here */
if ( yy_flex_debug )
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
else if ( yy_act < 43 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
(long)yy_rule_linenum[yy_act], yytext );
else if ( yy_act == 43 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
yytext );
else if ( yy_act == 44 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
}
switch ( yy_act )
{ /* beginning of action switch */
/* %% [13.0] actions go here */
case 0: /* must back up */
/* undo the effects of YY_DO_BEFORE_ACTION */
*yy_cp = (yy_hold_char);
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
goto yy_find_action;
case 1:
YY_RULE_SETUP
#line 224 "../../src/lexer_v3.l"
{ if (lineno == 0) {
BEGIN BOGO_LEX;
set_msg_counts_from_str(strchr(yytext, ' ') + 1);
}
return MSG_COUNT_LINE;
}
YY_BREAK
case 2:
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 230 "../../src/lexer_v3.l"
{ return BOGO_LEX_LINE; }
YY_BREAK
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
#line 231 "../../src/lexer_v3.l"
{ lineno += 1; }
YY_BREAK
case 4:
/* rule 4 can match eol */
YY_RULE_SETUP
#line 233 "../../src/lexer_v3.l"
{ word_t *raw = yy_text();
word_t *txt = text_decode(raw);
yy_unput(txt->u.text, txt->leng);
}
YY_BREAK
case 5:
YY_RULE_SETUP
#line 238 "../../src/lexer_v3.l"
{ set_tag(yytext); }
YY_BREAK
case 6:
YY_RULE_SETUP
#line 239 "../../src/lexer_v3.l"
{ mime_content(yy_text()); skip_to(':'); header(); return TOKEN; }
YY_BREAK
case 7:
YY_RULE_SETUP
#line 241 "../../src/lexer_v3.l"
{ /* save token for logging */
unsigned long off = 11;
while(isspace((unsigned char)yytext[off]) && off < INT_MAX && off < (unsigned long)yyleng)
off++;
set_msg_id((unsigned char *)(yytext+off), yyleng-off);
header();
return HEADKEY;
}
YY_BREAK
case 8:
#line 250 "../../src/lexer_v3.l"
case 9:
#line 251 "../../src/lexer_v3.l"
case 10:
YY_RULE_SETUP
#line 251 "../../src/lexer_v3.l"
{ header(); return HEADKEY; }
YY_BREAK
case 11:
YY_RULE_SETUP
#line 253 "../../src/lexer_v3.l"
{ mime_boundary_set(yy_text()); }
YY_BREAK
case 12:
YY_RULE_SETUP
#line 254 "../../src/lexer_v3.l"
{ got_charset(yytext); skip_to('='); header(); return TOKEN; }
YY_BREAK
case 13:
YY_RULE_SETUP
#line 256 "../../src/lexer_v3.l"
/* ignore */
YY_BREAK
case 14:
/* rule 14 can match eol */
YY_RULE_SETUP
#line 257 "../../src/lexer_v3.l"
{ return QUEUE_ID; }
YY_BREAK
/**********************************************************************
WARNING: Do NOT add header (<INITIAL>) rules that require characters
beyond a LF character (\n) - doing so will make the parser read ahead
parts of the body in the wrong MIME decoding mode and goof up
seriously.
**********************************************************************/
case 15:
/* rule 15 can match eol */
YY_RULE_SETUP
#line 266 "../../src/lexer_v3.l"
{ enum mimetype type = get_content_type();
have_body = true;
msg_header = false;
clr_tag();
switch (type) {
case MIME_TEXT_HTML: BEGIN HTML; break;
case MIME_MESSAGE: yy_set_state_initial(); break;
default: BEGIN TEXT;
}
if (DEBUG_LEXER(1))
fprintf(dbgout, "*** end of header\n");
return EOH;
}
YY_BREAK
case 16:
YY_RULE_SETUP
#line 279 "../../src/lexer_v3.l"
{ header(); return TOKEN; }
YY_BREAK
case 17:
/* rule 17 can match eol */
YY_RULE_SETUP
#line 280 "../../src/lexer_v3.l"
{ lineno += 1; }
YY_BREAK
case 18:
YY_RULE_SETUP
#line 282 "../../src/lexer_v3.l"
{ skip_to('='); return VERP; }
YY_BREAK
case 19:
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 284 "../../src/lexer_v3.l"
{ BEGIN PGP_HEAD;
yy_unput((byte *)yytext, yyleng);
}
YY_BREAK
case 20:
/* rule 20 can match eol */
YY_RULE_SETUP
#line 287 "../../src/lexer_v3.l"
{ BEGIN PGP_BODY; }
YY_BREAK
case 21:
YY_RULE_SETUP
#line 288 "../../src/lexer_v3.l"
{ /* ignore */ }
YY_BREAK
case 22:
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 289 "../../src/lexer_v3.l"
{ BEGIN TEXT;
yy_unput((byte *)yytext, yyleng);
}
YY_BREAK
case 23:
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 292 "../../src/lexer_v3.l"
{ if (got_mime_boundary(yy_text())) {
yy_set_state_initial();
return BOUNDARY;
} else {
yyless(2);
}
}
YY_BREAK
/* This has to match just as much or more than the below rules, so as to be the
controlling rule. */
case 24:
/* rule 24 can match eol */
YY_RULE_SETUP
#line 302 "../../src/lexer_v3.l"
{
char *chr = (char *)memchr(yytext, '<', yyleng); /* find start of html tag */
size_t len = chr - yytext;
yyless(len);
return TOKEN;
}
YY_BREAK
case 25:
/* rule 25 can match eol */
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
YY_LINENO_REWIND_TO(yy_cp - 1);
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 309 "../../src/lexer_v3.l"
{ html_reorder(); }
YY_BREAK
case 26:
YY_RULE_SETUP
#line 311 "../../src/lexer_v3.l"
{ BEGIN SCOMMENT; }
YY_BREAK
case 27:
YY_RULE_SETUP
#line 312 "../../src/lexer_v3.l"
{ BEGIN LCOMMENT; }
YY_BREAK
case 28:
/* rule 28 can match eol */
YY_RULE_SETUP
#line 313 "../../src/lexer_v3.l"
{ BEGIN HTOKEN; }
YY_BREAK
case 29:
YY_RULE_SETUP
#line 314 "../../src/lexer_v3.l"
{ BEGIN HDISCARD; } /* unknown tag */
YY_BREAK
case 30:
YY_RULE_SETUP
#line 316 "../../src/lexer_v3.l"
{ return TOKEN; }
YY_BREAK
case 31:
YY_RULE_SETUP
#line 317 "../../src/lexer_v3.l"
{ /* discard innards of html tokens and comments */ }
YY_BREAK
case 32:
YY_RULE_SETUP
#line 319 "../../src/lexer_v3.l"
{ BEGIN HTML; } /* end of tag, loose comment; return to normal html processing */
YY_BREAK
case 33:
YY_RULE_SETUP
#line 320 "../../src/lexer_v3.l"
{ BEGIN HTML; } /* end of strict comment; return to normal html processing */
YY_BREAK
case 34:
YY_RULE_SETUP
#line 321 "../../src/lexer_v3.l"
{ BEGIN HTML; }
YY_BREAK
case 35:
YY_RULE_SETUP
#line 323 "../../src/lexer_v3.l"
{ return IPADDR;}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 324 "../../src/lexer_v3.l"
{ return MESSAGE_ADDR;}
YY_BREAK
case 37:
YY_RULE_SETUP
#line 326 "../../src/lexer_v3.l"
{ return TOKEN;}
YY_BREAK
case 38:
YY_RULE_SETUP
#line 328 "../../src/lexer_v3.l"
{ html_char(); } /* process escaped chars, eg 'e' is 'a' */
YY_BREAK
case 39:
YY_RULE_SETUP
#line 329 "../../src/lexer_v3.l"
{ url_char(); } /* process escaped chars, eg '%61' is 'a' */
YY_BREAK
case 40:
YY_RULE_SETUP
#line 331 "../../src/lexer_v3.l"
{ return MONEY;} /* Dollars and cents */
YY_BREAK
case 41:
YY_RULE_SETUP
#line 333 "../../src/lexer_v3.l"
/* ignore character */
YY_BREAK
case 42:
/* rule 42 can match eol */
YY_RULE_SETUP
#line 334 "../../src/lexer_v3.l"
{ lineno += 1; clr_tag(); }
YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(TEXT):
case YY_STATE_EOF(HTML):
case YY_STATE_EOF(BOGO_LEX):
case YY_STATE_EOF(HTOKEN):
case YY_STATE_EOF(HDISCARD):
case YY_STATE_EOF(SCOMMENT):
case YY_STATE_EOF(LCOMMENT):
case YY_STATE_EOF(PGP_HEAD):
case YY_STATE_EOF(PGP_BODY):
#line 335 "../../src/lexer_v3.l"
{ return NONE; }
YY_BREAK
case 43:
YY_RULE_SETUP
#line 336 "../../src/lexer_v3.l"
ECHO;
YY_BREAK
#line 2906 "lexer_v3.c"
case YY_END_OF_BUFFER:
{
/* Amount of text matched not including the EOB char. */
int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
/* Undo the effects of YY_DO_BEFORE_ACTION. */
*yy_cp = (yy_hold_char);
YY_RESTORE_YY_MORE_OFFSET
if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
{
/* We're scanning a new file or input source. It's
* possible that this happened because the user
* just pointed yyin at a new source and called
* yylex(). If so, then we have to assure
* consistency between YY_CURRENT_BUFFER and our
* globals. Here is the right place to do so, because
* this is the first action (other than possibly a
* back-up) that will match for the new input source.
*/
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
/* %if-c-only */
YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
/* %endif */
/* %if-c++-only */
/* %endif */
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
/* Note that here we test for yy_c_buf_p "<=" to the position
* of the first EOB in the buffer, since yy_c_buf_p will
* already have been incremented past the NUL character
* (since all states make transitions on EOB to the
* end-of-buffer state). Contrast this with the test
* in input().
*/
if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
{ /* This was really a NUL. */
yy_state_type yy_next_state;
(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
yy_current_state = yy_get_previous_state( );
/* Okay, we're now positioned to make the NUL
* transition. We couldn't have
* yy_get_previous_state() go ahead and do it
* for us because it doesn't know how to deal
* with the possibility of jamming (and we don't
* want to build jamming into it because then it
* will run more slowly).
*/
yy_next_state = yy_try_NUL_trans( yy_current_state );
yy_bp = (yytext_ptr) + YY_MORE_ADJ;
if ( yy_next_state )
{
/* Consume the NUL. */
yy_cp = ++(yy_c_buf_p);
yy_current_state = yy_next_state;
goto yy_match;
}
else
{
/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
yy_cp = (yy_c_buf_p);
goto yy_find_action;
}
}
else switch ( yy_get_next_buffer( ) )
{
case EOB_ACT_END_OF_FILE:
{
(yy_did_buffer_switch_on_eof) = 0;
if ( yywrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
* yytext, we can now set up
* yy_c_buf_p so that if some total
* hoser (like flex itself) wants to
* call the scanner after we return the
* YY_NULL, it'll still work - another
* YY_NULL will get returned.
*/
(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
yy_act = YY_STATE_EOF(YY_START);
goto do_action;
}
else
{
if ( ! (yy_did_buffer_switch_on_eof) )
YY_NEW_FILE;
}
break;
}
case EOB_ACT_CONTINUE_SCAN:
(yy_c_buf_p) =
(yytext_ptr) + yy_amount_of_matched_text;
yy_current_state = yy_get_previous_state( );
yy_cp = (yy_c_buf_p);
yy_bp = (yytext_ptr) + YY_MORE_ADJ;
goto yy_match;
case EOB_ACT_LAST_MATCH:
(yy_c_buf_p) =
&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
yy_current_state = yy_get_previous_state( );
yy_cp = (yy_c_buf_p);
yy_bp = (yytext_ptr) + YY_MORE_ADJ;
goto yy_find_action;
}
break;
}
default:
YY_FATAL_ERROR(
"fatal flex scanner internal error--no action found" );
} /* end of action switch */
} /* end of scanning one token */
} /* end of user's declarations */
} /* end of yylex */
/* %ok-for-header */
/* %if-c++-only */
/* %not-for-header */
/* %ok-for-header */
/* %endif */
/* yy_get_next_buffer - try to read in a new buffer
*
* Returns a code representing an action:
* EOB_ACT_LAST_MATCH -
* EOB_ACT_CONTINUE_SCAN - continue scanning from current position
* EOB_ACT_END_OF_FILE - end of file
*/
/* %if-c-only */
static int yy_get_next_buffer (void)
/* %endif */
/* %if-c++-only */
/* %endif */
{
char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
char *source = (yytext_ptr);
int number_to_move, i;
int ret_val;
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
YY_FATAL_ERROR(
"fatal flex scanner internal error--end of buffer missed" );
if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
{ /* Don't try to fill the buffer, so this is an EOF. */
if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
{
/* We matched a single character, the EOB, so
* treat this as a final EOF.
*/
return EOB_ACT_END_OF_FILE;
}
else
{
/* We matched some text prior to the EOB, first
* process it.
*/
return EOB_ACT_LAST_MATCH;
}
}
/* Try to read more data. */
/* First move last chars to start of buffer. */
number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
/* don't do the read, it's not guaranteed to return an EOF,
* just force an EOF
*/
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
else
{
int num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
/* just a shorter name for the current buffer */
YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
int yy_c_buf_p_offset =
(int) ((yy_c_buf_p) - b->yy_ch_buf);
if ( b->yy_is_our_buffer )
{
int new_size = b->yy_buf_size * 2;
if ( new_size <= 0 )
b->yy_buf_size += b->yy_buf_size / 8;
else
b->yy_buf_size *= 2;
b->yy_ch_buf = (char *)
/* Include room in for 2 EOB chars. */
yyrealloc( (void *) b->yy_ch_buf,
(yy_size_t) (b->yy_buf_size + 2) );
}
else
/* Can't grow it, we don't own it. */
b->yy_ch_buf = NULL;
if ( ! b->yy_ch_buf )
YY_FATAL_ERROR(
"fatal error - scanner input buffer overflow" );
(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
number_to_move - 1;
}
if ( num_to_read > YY_READ_BUF_SIZE )
num_to_read = YY_READ_BUF_SIZE;
/* Read in more data. */
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
(yy_n_chars), num_to_read );
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
if ( (yy_n_chars) == 0 )
{
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
yyrestart( yyin );
}
else
{
ret_val = EOB_ACT_LAST_MATCH;
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
YY_BUFFER_EOF_PENDING;
}
}
else
ret_val = EOB_ACT_CONTINUE_SCAN;
if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
/* Extend the array by 50%, plus the number we really need. */
int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
/* "- 2" to take care of EOB's */
YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
}
(yy_n_chars) += number_to_move;
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
return ret_val;
}
/* yy_get_previous_state - get the state just before the EOB char was reached */
/* %if-c-only */
/* %not-for-header */
static yy_state_type yy_get_previous_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
{
yy_state_type yy_current_state;
char *yy_cp;
/* %% [15.0] code to get the start state into yy_current_state goes here */
yy_current_state = (yy_start);
yy_current_state += YY_AT_BOL();
for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
{
/* %% [16.0] code to find the next state goes here */
YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
(yy_last_accepting_cpos) = yy_cp;
}
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 770 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
}
return yy_current_state;
}
/* yy_try_NUL_trans - try to make a transition on the NUL character
*
* synopsis
* next_state = yy_try_NUL_trans( current_state );
*/
/* %if-c-only */
static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
/* %endif */
/* %if-c++-only */
/* %endif */
{
int yy_is_jam;
/* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
char *yy_cp = (yy_c_buf_p);
YY_CHAR yy_c = 1;
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
(yy_last_accepting_cpos) = yy_cp;
}
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
if ( yy_current_state >= 770 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
yy_is_jam = (yy_current_state == 769);
return yy_is_jam ? 0 : yy_current_state;
}
#ifndef YY_NO_UNPUT
/* %if-c-only */
static void yyunput (int c, char * yy_bp )
/* %endif */
/* %if-c++-only */
/* %endif */
{
char *yy_cp;
yy_cp = (yy_c_buf_p);
/* undo effects of setting up yytext */
*yy_cp = (yy_hold_char);
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
int number_to_move = (yy_n_chars) + 2;
char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
char *source =
&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
*--dest = *--source;
yy_cp += (int) (dest - source);
yy_bp += (int) (dest - source);
YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
(yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
YY_FATAL_ERROR( "flex scanner push-back overflow" );
}
*--yy_cp = (char) c;
/* %% [18.0] update yylineno here */
(yytext_ptr) = yy_bp;
(yy_hold_char) = *yy_cp;
(yy_c_buf_p) = yy_cp;
}
/* %if-c-only */
/* %endif */
#endif
/* %if-c-only */
#ifndef YY_NO_INPUT
#ifdef __cplusplus
static int yyinput (void)
#else
static int input (void)
#endif
/* %endif */
/* %if-c++-only */
/* %endif */
{
int c;
*(yy_c_buf_p) = (yy_hold_char);
if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
{
/* yy_c_buf_p now points to the character we want to return.
* If this occurs *before* the EOB characters, then it's a
* valid NUL; if not, then we've hit the end of the buffer.
*/
if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
/* This was really a NUL. */
*(yy_c_buf_p) = '\0';
else
{ /* need more input */
int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
++(yy_c_buf_p);
switch ( yy_get_next_buffer( ) )
{
case EOB_ACT_LAST_MATCH:
/* This happens because yy_g_n_b()
* sees that we've accumulated a
* token and flags that we need to
* try matching the token before
* proceeding. But for input(),
* there's no matching to consider.
* So convert the EOB_ACT_LAST_MATCH
* to EOB_ACT_END_OF_FILE.
*/
/* Reset buffer status. */
yyrestart( yyin );
/*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
if ( yywrap( ) )
return 0;
if ( ! (yy_did_buffer_switch_on_eof) )
YY_NEW_FILE;
#ifdef __cplusplus
return yyinput();
#else
return input();
#endif
}
case EOB_ACT_CONTINUE_SCAN:
(yy_c_buf_p) = (yytext_ptr) + offset;
break;
}
}
}
c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
*(yy_c_buf_p) = '\0'; /* preserve yytext */
(yy_hold_char) = *++(yy_c_buf_p);
/* %% [19.0] update BOL and yylineno */
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
return c;
}
/* %if-c-only */
#endif /* ifndef YY_NO_INPUT */
/* %endif */
/** Immediately switch to a different input stream.
* @param input_file A readable stream.
*
* @note This function does not reset the start condition to @c INITIAL .
*/
/* %if-c-only */
void yyrestart (FILE * input_file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! YY_CURRENT_BUFFER ){
yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
yy_create_buffer( yyin, YY_BUF_SIZE );
}
yy_init_buffer( YY_CURRENT_BUFFER, input_file );
yy_load_buffer_state( );
}
/* %if-c++-only */
/* %endif */
/** Switch to a different input buffer.
* @param new_buffer The new input buffer.
*
*/
/* %if-c-only */
void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
{
/* TODO. We should be able to replace this entire function body
* with
* yypop_buffer_state();
* yypush_buffer_state(new_buffer);
*/
yyensure_buffer_stack ();
if ( YY_CURRENT_BUFFER == new_buffer )
return;
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
*(yy_c_buf_p) = (yy_hold_char);
YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
YY_CURRENT_BUFFER_LVALUE = new_buffer;
yy_load_buffer_state( );
/* We don't actually know whether we did this switch during
* EOF (yywrap()) processing, but the only time this flag
* is looked at is after yywrap() is called, so it's safe
* to go ahead and always set it.
*/
(yy_did_buffer_switch_on_eof) = 1;
}
/* %if-c-only */
static void yy_load_buffer_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
{
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
/* %if-c-only */
yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
/* %endif */
/* %if-c++-only */
/* %endif */
(yy_hold_char) = *(yy_c_buf_p);
}
/** Allocate and initialize an input buffer state.
* @param file A readable stream.
* @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
*
* @return the allocated buffer state.
*/
/* %if-c-only */
YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
/* %endif */
/* %if-c++-only */
/* %endif */
{
YY_BUFFER_STATE b;
b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_buf_size = size;
/* yy_ch_buf has to be 2 characters longer than the size given because
* we need to put in 2 end-of-buffer characters.
*/
b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
if ( ! b->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_is_our_buffer = 1;
yy_init_buffer( b, file );
return b;
}
/* %if-c++-only */
/* %endif */
/** Destroy the buffer.
* @param b a buffer created with yy_create_buffer()
*
*/
/* %if-c-only */
void yy_delete_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! b )
return;
if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
yyfree( (void *) b->yy_ch_buf );
yyfree( (void *) b );
}
/* Initializes or reinitializes a buffer.
* This function is sometimes called more than once on the same buffer,
* such as during a yyrestart() or at EOF.
*/
/* %if-c-only */
static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
/* %endif */
/* %if-c++-only */
/* %endif */
{
int oerrno = errno;
yy_flush_buffer( b );
/* %if-c-only */
b->yy_input_file = file;
/* %endif */
/* %if-c++-only */
/* %endif */
b->yy_fill_buffer = 1;
/* If b is the current buffer, then yy_init_buffer was _probably_
* called from yyrestart() or through yy_get_next_buffer.
* In that case, we don't want to reset the lineno or column.
*/
if (b != YY_CURRENT_BUFFER){
b->yy_bs_lineno = 1;
b->yy_bs_column = 0;
}
/* %if-c-only */
b->yy_is_interactive = 1;
/* %endif */
/* %if-c++-only */
/* %endif */
errno = oerrno;
}
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
* @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
*
*/
/* %if-c-only */
void yy_flush_buffer (YY_BUFFER_STATE b )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if ( ! b )
return;
b->yy_n_chars = 0;
/* We always need two end-of-buffer characters. The first causes
* a transition to the end-of-buffer state. The second causes
* a jam in that state.
*/
b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
b->yy_buf_pos = &b->yy_ch_buf[0];
b->yy_at_bol = 1;
b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER )
yy_load_buffer_state( );
}
/* %if-c-or-c++ */
/** Pushes the new state onto the stack. The new state becomes
* the current state. This function will allocate the stack
* if necessary.
* @param new_buffer The new state.
*
*/
/* %if-c-only */
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
/* %endif */
/* %if-c++-only */
/* %endif */
{
if (new_buffer == NULL)
return;
yyensure_buffer_stack();
/* This block is copied from yy_switch_to_buffer. */
if ( YY_CURRENT_BUFFER )
{
/* Flush out information for old buffer. */
*(yy_c_buf_p) = (yy_hold_char);
YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
/* Only push if top exists. Otherwise, replace top. */
if (YY_CURRENT_BUFFER)
(yy_buffer_stack_top)++;
YY_CURRENT_BUFFER_LVALUE = new_buffer;
/* copied from yy_switch_to_buffer. */
yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/* %endif */
/* %if-c-or-c++ */
/** Removes and deletes the top of the stack, if present.
* The next element becomes the new top.
*
*/
/* %if-c-only */
void yypop_buffer_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
{
if (!YY_CURRENT_BUFFER)
return;
yy_delete_buffer(YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
if ((yy_buffer_stack_top) > 0)
--(yy_buffer_stack_top);
if (YY_CURRENT_BUFFER) {
yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
}
/* %endif */
/* %if-c-or-c++ */
/* Allocates the stack if it does not exist.
* Guarantees space for at least one push.
*/
/* %if-c-only */
static void yyensure_buffer_stack (void)
/* %endif */
/* %if-c++-only */
/* %endif */
{
yy_size_t num_to_alloc;
if (!(yy_buffer_stack)) {
/* First allocation is just for 2 elements, since we don't know if this
* scanner will even need a stack. We use 2 instead of 1 to avoid an
* immediate realloc on the next call.
*/
num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
(num_to_alloc * sizeof(struct yy_buffer_state*)
);
if ( ! (yy_buffer_stack) )
YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
(yy_buffer_stack_max) = num_to_alloc;
(yy_buffer_stack_top) = 0;
return;
}
if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
/* Increase the buffer to prepare for a possible push. */
yy_size_t grow_size = 8 /* arbitrary grow size */;
num_to_alloc = (yy_buffer_stack_max) + grow_size;
(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
((yy_buffer_stack),
num_to_alloc * sizeof(struct yy_buffer_state*)
);
if ( ! (yy_buffer_stack) )
YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
/* zero only the new slots.*/
memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
(yy_buffer_stack_max) = num_to_alloc;
}
}
/* %endif */
/* %if-c-only */
/** Setup the input buffer state to scan directly from a user-specified character buffer.
* @param base the character buffer
* @param size the size in bytes of the character buffer
*
* @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
{
YY_BUFFER_STATE b;
if ( size < 2 ||
base[size-2] != YY_END_OF_BUFFER_CHAR ||
base[size-1] != YY_END_OF_BUFFER_CHAR )
/* They forgot to leave room for the EOB's. */
return NULL;
b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
b->yy_buf_pos = b->yy_ch_buf = base;
b->yy_is_our_buffer = 0;
b->yy_input_file = NULL;
b->yy_n_chars = b->yy_buf_size;
b->yy_is_interactive = 0;
b->yy_at_bol = 1;
b->yy_fill_buffer = 0;
b->yy_buffer_status = YY_BUFFER_NEW;
yy_switch_to_buffer( b );
return b;
}
/* %endif */
/* %if-c-only */
/** Setup the input buffer state to scan a string. The next call to yylex() will
* scan from a @e copy of @a str.
* @param yystr a NUL-terminated string to scan
*
* @return the newly allocated buffer state object.
* @note If you want to scan bytes that may contain NUL values, then use
* yy_scan_bytes() instead.
*/
YY_BUFFER_STATE yy_scan_string (const char * yystr )
{
return yy_scan_bytes( yystr, (int) strlen(yystr) );
}
/* %endif */
/* %if-c-only */
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
* scan from a @e copy of @a bytes.
* @param yybytes the byte buffer to scan
* @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
*
* @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
{
YY_BUFFER_STATE b;
char *buf;
yy_size_t n;
int i;
/* Get memory for full buffer, including space for trailing EOB's. */
n = (yy_size_t) (_yybytes_len + 2);
buf = (char *) yyalloc( n );
if ( ! buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
for ( i = 0; i < _yybytes_len; ++i )
buf[i] = yybytes[i];
buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
b = yy_scan_buffer( buf, n );
if ( ! b )
YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
/* It's okay to grow etc. this buffer, and we should throw it
* away when we're done.
*/
b->yy_is_our_buffer = 1;
return b;
}
/* %endif */
#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif
/* %if-c-only */
static void yynoreturn yy_fatal_error (const char* msg )
{
fprintf( stderr, "%s\n", msg );
exit( YY_EXIT_FAILURE );
}
/* %endif */
/* %if-c++-only */
/* %endif */
/* Redefine yyless() so it works in section 3 code. */
#undef yyless
#define yyless(n) \
do \
{ \
/* Undo effects of setting up yytext. */ \
int yyless_macro_arg = (n); \
YY_LESS_LINENO(yyless_macro_arg);\
yytext[yyleng] = (yy_hold_char); \
(yy_c_buf_p) = yytext + yyless_macro_arg; \
(yy_hold_char) = *(yy_c_buf_p); \
*(yy_c_buf_p) = '\0'; \
yyleng = yyless_macro_arg; \
} \
while ( 0 )
/* Accessor methods (get/set functions) to struct members. */
/* %if-c-only */
/* %if-reentrant */
/* %endif */
/** Get the current line number.
*
*/
int yyget_lineno (void)
{
return yylineno;
}
/** Get the input stream.
*
*/
FILE *yyget_in (void)
{
return yyin;
}
/** Get the output stream.
*
*/
FILE *yyget_out (void)
{
return yyout;
}
/** Get the length of the current token.
*
*/
int yyget_leng (void)
{
return yyleng;
}
/** Get the current token.
*
*/
char *yyget_text (void)
{
return yytext;
}
/* %if-reentrant */
/* %endif */
/** Set the current line number.
* @param _line_number line number
*
*/
void yyset_lineno (int _line_number )
{
yylineno = _line_number;
}
/** Set the input stream. This does not discard the current
* input buffer.
* @param _in_str A readable stream.
*
* @see yy_switch_to_buffer
*/
void yyset_in (FILE * _in_str )
{
yyin = _in_str ;
}
void yyset_out (FILE * _out_str )
{
yyout = _out_str ;
}
int yyget_debug (void)
{
return yy_flex_debug;
}
void yyset_debug (int _bdebug )
{
yy_flex_debug = _bdebug ;
}
/* %endif */
/* %if-reentrant */
/* %if-bison-bridge */
/* %endif */
/* %endif if-c-only */
/* %if-c-only */
static int yy_init_globals (void)
{
/* Initialization is the same as for the non-reentrant scanner.
* This function is called from yylex_destroy(), so don't allocate here.
*/
(yy_buffer_stack) = NULL;
(yy_buffer_stack_top) = 0;
(yy_buffer_stack_max) = 0;
(yy_c_buf_p) = NULL;
(yy_init) = 0;
(yy_start) = 0;
/* Defined in main.c */
#ifdef YY_STDINIT
yyin = stdin;
yyout = stdout;
#else
yyin = NULL;
yyout = NULL;
#endif
/* For future reference: Set errno on error, since we are called by
* yylex_init()
*/
return 0;
}
/* %endif */
/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy (void)
{
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
yy_delete_buffer( YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
yypop_buffer_state();
}
/* Destroy the stack itself. */
yyfree((yy_buffer_stack) );
(yy_buffer_stack) = NULL;
/* Reset the globals. This is important in a non-reentrant scanner so the next time
* yylex() is called, initialization will occur. */
yy_init_globals( );
/* %if-reentrant */
/* %endif */
return 0;
}
/* %endif */
/*
* Internal utility routines.
*/
#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, const char * s2, int n )
{
int i;
for ( i = 0; i < n; ++i )
s1[i] = s2[i];
}
#endif
#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (const char * s )
{
int n;
for ( n = 0; s[n]; ++n )
;
return n;
}
#endif
void *yyalloc (yy_size_t size )
{
return malloc(size);
}
void *yyrealloc (void * ptr, yy_size_t size )
{
/* The cast to (char *) in the following accommodates both
* implementations that use char* generic pointers, and those
* that use void* generic pointers. It works with the latter
* because both ANSI C and C++ allow castless assignment from
* any pointer type to void*, and deal with argument conversions
* as though doing an assignment.
*/
return realloc(ptr, size);
}
void yyfree (void * ptr )
{
free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
}
/* %if-tables-serialization definitions */
/* %define-yytables The name for this specific scanner's tables. */
#define YYTABLES_NAME "yytables"
/* %endif */
/* %ok-for-header */
#line 336 "../../src/lexer_v3.l"
static void header(void)
{
set_tag("Header");
}
void lexer_v3_init(FILE *fp)
{
lineno = 0;
have_body = false;
yy_set_state_initial();
yyrestart(fp);
}
static void skip_to(char chr)
{
size_t len = strchr(yytext, chr) - yytext;
yyless(len);
}
static void html_reorder(void)
{
char *chr = (char *)memchr(yytext, '<', yyleng); /* find start of html tag */
size_t len = chr - yytext;
char *yycopy = (char *)xmalloc(yyleng + 1); /* +1 for NUL byte below */
memcpy(yycopy, yytext+len, yyleng-len); /* copy tag to start of buffer */
memcpy(yycopy+yyleng-len, yytext, len); /* copy leading text to end of buffer */
yycopy[yyleng] = '\0'; /* for debugging */
yy_unput((byte *)yycopy, yyleng);
xfree(yycopy);
}
static int xtoi(char *in, size_t len)
{
int val = 0;
while (isxdigit((byte) *in) && (len-- > 0)) {
char c = *in++;
val <<= 4;
val += isdigit((byte)c)
? (c - '0')
: (tolower((byte)c) - 'a' + 10);
}
return val;
}
static void html_char(void)
{
char *txt = strstr(yytext, "&#"); /* find decodable char */
size_t len = txt - yytext;
int val;
char *yycopy = NULL;
if (len != 0) {
yycopy = (char *)xmalloc(yyleng + 1); /* +1 for NUL byte below */
memcpy(yycopy, yytext, yyleng); /* copy tag to start of buffer */
yycopy[yyleng] = '\0'; /* for debugging */
}
txt += 2;
val = isdigit((byte) *txt) ? atoi(txt) : xtoi(txt+1, 4);
/* xtoi() limits conversion to 4 characters */
/* atoi() limits value to 0x7fffffff, i.e. 2147483647 */
/* no problem on linux */
if ((val > 0) && (val < 256) &&
isprint(val)) { /* use it if printable */
yyunput(val, yytext);
yyleng = len; /* adjust len to pre-char count */
}
else {
if (yycopy)
yycopy[yyleng-1] = ' '; /* prevents parsing loop */
}
if (yycopy != NULL) {
yy_unput((byte *)yycopy, yyleng);
xfree(yycopy);
}
}
static void url_char(void)
{
char *src, *dst;
src = dst = yytext;
while (src < yytext + yyleng) {
char c = *src++;
if (c == '%') {
c = xtoi(src, 2);
src += 2;
}
*dst++ = c;
}
while (dst > yytext) {
yyunput(*--dst, yytext);
}
}
static void yy_unput(const byte *txt, uint len)
{
while (len-- > 0)
yyunput(txt[len], yytext);
}
char yy_get_state()
{
switch (YYSTATE) {
case INITIAL: return 'i';
case TEXT: return 't';
case HTML:
case HTOKEN: return 'h';
case SCOMMENT: return 's';
case LCOMMENT: return 'l';
default: return 'o';
}
}
void yy_set_state_initial(void)
{
BEGIN INITIAL;
msg_header = true;
header();
if (DEBUG_LEXER(1))
fprintf(dbgout, "BEGIN INITIAL\n");
#ifdef FLEX_DEBUG
yy_flex_debug = BOGOTEST('L');
#endif
}
long lexer_v3_get_token(byte **output)
{
*output = (byte *)yytext;
return yyleng;
}
/*
* The following sets edit modes for GNU EMACS
* Local Variables:
* mode:c
* indent-tabs-mode:t
* End:
*/