Blob Blame History Raw
#line 2 "scanner.c"

#line 4 "scanner.c"

#define  YY_INT_ALIGNED short 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 1
#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

#endif /* ! C99 */

#endif /* ! FLEXINT_H */

/* %endif */

/* %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 unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
/* %ok-for-header */

/* %if-reentrant */

/* An opaque pointer. */
#ifndef YY_TYPEDEF_YY_SCANNER_T
#define YY_TYPEDEF_YY_SCANNER_T
typedef void* yyscan_t;
#endif

/* For convenience, these vars (plus the bison vars far below)
   are macros in the reentrant scanner. */
#define yyin yyg->yyin_r
#define yyout yyg->yyout_r
#define yyextra yyg->yyextra_r
#define yyleng yyg->yyleng_r
#define yytext yyg->yytext_r
#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
#define yy_flex_debug yyg->yy_flex_debug_r

/* %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 yyg->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 ((yyg->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 nft_restart(yyin ,yyscanner )

#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 */
/* %endif */

/* %if-c-only */
/* %if-not-reentrant */
/* %endif */
/* %endif */

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
     *       access to the local variable yy_act. Since yyless() is a macro, it would break
     *       existing scanners that call yyless() from OUTSIDE nft_lex.
     *       One obvious solution it to make yy_act a global. I tried that, and saw
     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
     *       normally declared as a register variable-- so it is not worth it.
     */
    #define  YY_LESS_LINENO(n) \
            do { \
                int yyl;\
                for ( yyl = n; yyl < yyleng; ++yyl )\
                    if ( yytext[yyl] == '\n' )\
                        --yylineno;\
            }while(0)
    #define YY_LINENO_REWIND_TO(dst) \
            do {\
                const char *p;\
                for ( p = yy_cp-1; p >= (dst); --p)\
                    if ( *p == '\n' )\
                        --yylineno;\
            }while(0)
    
/* 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 = yyg->yy_hold_char; \
		YY_RESTORE_YY_MORE_OFFSET \
		yyg->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, yyg->yytext_ptr , yyscanner )

#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 nft_restart()), 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 */
/* %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 ( yyg->yy_buffer_stack \
                          ? yyg->yy_buffer_stack[yyg->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 yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]

/* %if-c-only Standard (non-C++) definition */

/* %if-not-reentrant */
/* %not-for-header */

/* %ok-for-header */

/* %endif */

void nft_restart (FILE *input_file ,yyscan_t yyscanner );
void nft__switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
YY_BUFFER_STATE nft__create_buffer (FILE *file,int size ,yyscan_t yyscanner );
void nft__delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
void nft__flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
void nft_push_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
void nft_pop_buffer_state (yyscan_t yyscanner );

static void nft_ensure_buffer_stack (yyscan_t yyscanner );
static void nft__load_buffer_state (yyscan_t yyscanner );
static void nft__init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );

#define YY_FLUSH_BUFFER nft__flush_buffer(YY_CURRENT_BUFFER ,yyscanner)

YY_BUFFER_STATE nft__scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
YY_BUFFER_STATE nft__scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
YY_BUFFER_STATE nft__scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner );

/* %endif */

void *nft_alloc (yy_size_t ,yyscan_t yyscanner );
void *nft_realloc (void *,yy_size_t ,yyscan_t yyscanner );
void nft_free (void * ,yyscan_t yyscanner );

#define yy_new_buffer nft__create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){ \
        nft_ensure_buffer_stack (yyscanner); \
		YY_CURRENT_BUFFER_LVALUE =    \
            nft__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){\
        nft_ensure_buffer_stack (yyscanner); \
		YY_CURRENT_BUFFER_LVALUE =    \
            nft__create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
	} \
	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 nft_wrap(yyscanner) (/*CONSTCOND*/1)
#define YY_SKIP_YYWRAP

#define FLEX_DEBUG

typedef unsigned char YY_CHAR;

typedef int yy_state_type;

#define yytext_ptr yytext_r

/* %% [1.5] DFA */

/* %if-c-only Standard (non-C++) definition */

static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
static int yy_get_next_buffer (yyscan_t yyscanner );
static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner );

/* %endif */

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	yyg->yytext_ptr = yy_bp; \
/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
	yyleng = (int) (yy_cp - yy_bp); \
	yyg->yy_hold_char = *yy_cp; \
	*yy_cp = '\0'; \
/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
	yyg->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 345
#define YY_END_OF_BUFFER 346
/* 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 yyconst flex_int16_t yy_accept[1625] =
    {   0,
      333,  333,  346,  344,  341,  340,  342,   33,  344,  344,
       39,   29,   21,   22,   37,   42,   13,   36,   14,   35,
      334,  334,   15,   16,    7,   40,   11,   38,  338,  338,
       19,  344,   20,   27,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,   17,
       31,   18,  341,  342,    3,    0,  336,    0,  343,  337,
      338,    0,    0,  334,    0,    0,    0,  333,  333,  333,
      333,  331,   23,    5,    1,    9,   25,  338,    0,    0,
      339,  338,  338,  223,  338,  338,  338,  338,  338,  338,

      338,  338,  338,  338,  338,  338,  338,  338,  338,  281,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,    2,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,   10,  338,  338,
       12,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      165,  338,  338,  338,  327,  174,  338,  338,  338,  338,
      338,  338,    6,  338,  156,  338,  338,    8,  338,  338,
      257,  338,  338,  338,  338,  338,  338,    4,  338,  157,
      338,  338,  338,  338,  338,  338,   32,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  187,

      338,  338,  185,  338,  243,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      158,  338,   75,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  317,  338,  338,
      338,  338,  338,  338,  338,    0,  334,    0,  333,    0,
      331,  334,    0,    0,    0,  333,    0,  331,  331,  331,
      338,    0,    0,    0,  338,  338,   78,  314,   30,  168,
      338,  338,  338,  338,  338,  338,  166,  338,  338,  338,
      338,  338,  338,  338,  338,  229,  275,  338,  338,  144,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,

      338,  256,  304,  338,  338,  178,  338,  191,  226,  338,
      338,  338,  338,  338,  338,  306,  338,  338,  338,  338,
      338,  305,  338,  338,   84,  338,  338,  338,  252,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  260,
      338,  298,  338,  338,  338,  338,  215,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      121,  338,  338,   60,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  299,  338,  338,  214,  309,  212,  338,
      338,  338,  338,  338,  338,   34,  128,  338,  338,  263,
      338,  338,  338,  307,  328,  338,  338,  338,  167,  338,

      338,  338,  338,  338,  338,  338,  338,  189,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  244,  245,  338,  338,  338,  338,  338,  338,
      338,  338,  338,   58,  251,  338,  338,  338,  338,  338,
      225,  338,  338,  246,  338,  338,  338,  338,  338,  250,
      234,  338,  338,  338,  338,  338,  181,  338,  338,  230,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  315,   28,  338,    0,    0,  334,
        0,    0,  333,    0,  335,    0,  335,  331,    0,    0,
      331,    0,  331,  331,  338,    0,    0,    0,    0,    0,

        0,  332,  338,  338,  248,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  209,  338,  227,  338,  338,
      338,  338,  338,  240,  338,  338,  338,  338,  338,  150,
      236,  338,   70,  177,  338,  190,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  107,  338,  253,  338,
      338,  338,   73,  338,  338,  338,  338,  171,   48,  338,
      143,  338,  338,  338,  208,  213,  338,  338,  338,  338,
      338,  338,   76,  338,  338,  338,  338,  316,   72,  202,
      338,  338,  338,  204,  338,  338,  338,   85,  338,  184,
       61,  259,  338,  338,  338,  338,  258,  338,  338,  338,

      338,  338,  322,  338,  338,  113,  338,  338,  338,  338,
      193,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  135,  338,  338,  338,  338,  338,  172,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  132,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,   55,  194,  338,  241,  338,  338,  303,  338,  338,
       57,  104,  338,  338,  338,  149,  338,  338,  338,  186,
      338,  338,  338,  338,  201,  338,  338,  338,  338,  338,
      338,  163,  338,  338,  338,  338,  338,  137,  338,  338,
      164,   41,  242,  145,  338,  147,  338,  285,    0,    0,

      334,  333,    0,    0,    0,    0,  331,  331,    0,    0,
      331,  331,  331,  331,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  338,  338,  338,  338,  338,  133,  338,
      115,  338,   53,  338,  338,  338,  338,  338,  203,  338,
      162,  338,  338,  338,  338,  338,  233,  338,  338,  160,
      289,  338,  338,  338,  338,  338,  338,  228,  338,  338,
       87,  338,  338,  338,  338,  123,  338,  338,  338,  338,
      169,  338,  338,  338,  148,  338,  338,  338,  338,  338,
       93,  338,  338,  321,  301,  338,  294,  338,  338,  126,
      131,  338,  338,  338,  338,  338,  109,  338,  338,  338,

      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
      338,  338,  338,  338,  338,  338,  338,  338,  338,  170,
      127,  136,  338,  338,  338,  338,  338,  338,  287,  323,
      338,   86,  338,  205,  338,  338,   56,  338,  195,  196,
      197,  198,  161,  338,  338,  338,  338,  267,  266,  338,
      338,  324,  232,  295,  338,  338,  338,   51,  338,  338,
      338,   65,  338,  207,  206,  338,  338,  338,  134,  338,
      338,  188,  338,  338,  338,    0,    0,    0,  335,    0,
        0,    0,  331,  331,  331,    0,    0,  331,  331,    0,

      331,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,   69,  235,  338,  116,  159,  129,  278,   54,  338,
      338,  338,  338,  338,  338,   81,   44,   83,  338,   49,
      338,  338,  338,  318,  338,  338,  338,   90,  320,  130,
      338,  338,  338,  338,  338,  338,   63,  338,  292,  338,
      338,  338,  220,  338,  338,  338,   89,  338,   82,  338,
      338,  338,  179,  119,   24,  338,  338,  192,  106,  110,
      338,  338,  142,  338,  338,  338,  338,   77,  338,  338,
      338,  338,  297,  338,  338,  338,  300,  338,  338,  338,
      338,  239,  338,  338,  338,  338,  338,  338,  103,  338,

      122,  338,  338,  338,  338,  118,  153,  338,  338,  146,
       88,  338,  338,   74,   26,  338,  338,  338,  338,  141,
      338,  338,  338,   66,  296,  338,  338,   52,  338,  338,
       68,  338,  326,  338,  338,   80,  238,  338,  237,  310,
      331,    0,    0,    0,    0,  331,  331,    0,  331,  331,
        0,    0,    0,  331,  331,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  338,  338,
      279,   94,  338,  338,  112,  338,   50,  338,   97,   59,
      338,  338,  102,  338,  338,  338,  338,  211,  338,  338,
      293,  338,  338,  271,  338,  261,  262,   43,  338,  282,

      338,  338,  338,  338,  338,  319,   91,  338,  338,  218,
      280,  268,  312,  338,  273,  108,  338,  264,  265,  338,
      313,  338,  114,  338,  338,  338,  274,  338,  338,  338,
      338,  338,  338,  338,  338,   79,  338,  338,   64,  338,
      329,  338,  338,  124,  302,  338,   99,  338,  338,  338,
      231,  338,  175,  331,    0,    0,    0,    0,    0,  331,
      331,  331,  331,  331,    0,    0,  331,  331,    0,  331,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  338,  183,   95,   71,  117,   47,  338,
      101,  338,  338,  338,  338,  180,  338,  338,  338,  219,

      270,  276,   96,  338,  338,  338,  338,  338,  338,  338,
      272,  277,  338,  286,  338,  338,  338,   92,  216,  338,
      338,  182,  338,   45,  152,  224,  338,  338,  330,  247,
      210,  308,  338,  338,  338,   46,  331,    0,    0,    0,
      331,  331,    0,  331,  331,    0,  331,  331,    0,  331,
        0,  331,  331,    0,  331,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,  338,
      288,  338,  338,  217,   62,  338,  338,  176,  338,  338,
      222,  338,  338,  338,  338,  173,  338,  338,  338,  284,
      283,  338,  254,  269,  311,  120,  200,  338,  325,    0,

        0,    0,    0,    0,  331,  331,  331,  331,  331,  331,
      331,  331,  331,  331,    0,    0,  331,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,   98,  338,  291,  111,  338,  338,
      249,  151,  338,  338,  338,  138,  338,  338,  155,  338,
      338,  338,    0,    0,  331,  331,  331,    0,  331,  331,
        0,  331,  331,    0,  331,  331,    0,  331,  331,  331,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,  290,  338,
      100,  139,  140,  338,  338,  105,  338,  338,   67,    0,

        0,    0,  331,    0,  331,  331,  331,  331,  331,  331,
      331,  331,  331,  331,  331,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,  154,  338,  338,
      338,  338,    0,    0,    0,  331,  331,    0,  331,  331,
        0,  331,  331,    0,  331,  331,    0,  331,  331,    0,
      331,  331,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,  338,  221,  338,  338,    0,    0,    0,    0,  331,
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,

      331,  331,    0,  331,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,  255,  338,  199,    0,
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
      331,  331,  331,  331,  331,  331,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,  125,    0,  331,  331,  331,
      331,  331,  331,  331,  331,  331,  331,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,  331,  331,  331,  331,  331,  331,

      331,  331,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,  331,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0
    } ;

static yyconst 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,    1,    9,    1,   10,
       11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
       21,   22,   22,   23,   22,   22,   22,   24,   25,   26,
       27,   28,    1,   29,   30,   30,   30,   30,   30,   31,
       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
       32,   32,   32,   32,   32,   32,   32,   33,   32,   32,
       34,   35,   36,   37,   38,    1,   39,   40,   41,   42,

       43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
       53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
       63,   64,   65,   66,   67,    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,    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
    } ;

static yyconst YY_CHAR yy_meta[68] =
    {   0,
        1,    2,    2,    2,    1,    1,    1,    1,    1,    1,
        1,    3,    1,    2,    4,    5,    3,    6,    6,    6,
        6,    6,    6,    7,    1,    1,    1,    1,    1,    6,
        6,    3,    3,    1,    3,    8,    1,    3,    6,    6,
        6,    6,    6,    6,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
        3,    3,    3,    3,    1,    1,    2
    } ;

static yyconst flex_uint16_t yy_base[1927] =
    {   0,
        0,    0, 3686, 5224, 3681, 5224, 3677, 3629, 3649, 3594,
     5224, 5224, 5224, 5224, 5224, 5224, 5224, 5224,   56, 5224,
       76,   39, 3570, 5224,   43, 3566,   46, 5224,  127,   67,
     3568, 3585, 5224, 5224,   84,   19,  128,  148,  162,  138,
      186,  198,  218,   78,   76,  240,  238,  264,  274,  300,
       69,  312,  333,  358,  310,  383,  171,  181,   68, 5224,
     5224, 5224, 3584, 3580, 5224, 3577, 5224, 3570, 5224, 5224,
       73, 3550,  409,  426, 3529, 3513,    0,  440,  417,  466,
      472,  506, 5224, 5224, 5224, 5224, 5224,  533, 3486, 3427,
     5224,   35, 3402,   75,  129,  117,   77,  178,  120,  196,

      211,  290, 3378,  233,  276,  141,  461,  245,  270,  214,
       51, 3383,  350,  325,  326,  408,  371,  462,  367,  266,
      294,   25,  463,  328,  342,  464,  363,  466,  531, 3370,
      467,  545,  469,  509,  498,  504,  499,  507,  523,  526,
      470,  548,  555,  556,  557,  559,  570,  558,  574,  575,
      576,  583,  584,  585,  601,  610,  596,  602,  603,  605,
      615,  613,  629,  637,  639,  640,  644,  648,  649,  651,
      656,  666,  675,  664,  680,  684,  700,  686,  701,  685,
      712,  718,  720,  714,  722,  721,  726,  727,  728,  742,
      733,  748,  755,  760,  763,  766,  772,  768,  769,  775,

      793,  785,  779,  797,  822,  809,  814,  817,  825,  827,
      826,  842,  841,  852,  855,  853,  861,  860,  862,  782,
      880,  881,  882,  886,  891,  894,  896,  898,  901,  906,
      910,  916,  908,  913,  912,  922,  926,  928,  937,  947,
      952,  954,  957,  958,  959,  980,  999, 3376, 1013, 1044,
        0,    0,  620, 1042, 1051, 5224, 1058, 1096, 1066,  165,
     1123, 3369, 3362, 1150, 3341,  971, 3313,  962,  973,  974,
     1014, 1040, 1071, 1093, 1086, 1088, 1089, 1095, 1140, 1120,
     1121, 1139, 1148, 1165, 1172, 1122, 1173, 1176, 3312, 1183,
     3294, 3291, 1184, 1185, 1186, 1193, 1194, 1197, 1200, 1204,

     1205, 1202, 1213, 1218, 1219, 1226, 1230, 1231, 1232, 1233,
     1234, 1235, 1248, 1238, 1243, 1239, 1252, 1250, 1259, 1263,
     1265, 1267, 1270, 1277, 1268, 1287, 1292, 1294, 1295, 1297,
     1298, 1302, 1306, 1307, 1308, 1309, 1313, 1314, 1323, 1326,
     1327, 1338, 1344, 1311, 1347, 1354, 1341, 1358, 1360, 1363,
     1369, 1371, 1373, 1379, 1374, 1384, 1390, 1391, 1393, 1395,
     1398, 1404, 1406, 1408, 1409, 1412, 1433, 1419, 1434, 1415,
     1424, 1425, 1426, 1443, 1440, 1445, 1444, 1454, 1458, 1464,
     1469, 1470, 1473, 1479, 1480, 1482, 1483, 1485, 1486, 1488,
     1489, 1494, 1504, 1484, 1490, 1491, 1515, 1518, 1530, 1532,

     1536, 1539, 1540, 1543, 1542, 1544, 1546, 1547, 1548, 1549,
     1557, 1558, 1560, 1576, 1586, 1587, 1589, 1593, 1595, 1550,
     1598, 1600, 1561, 1601, 1602, 1606, 1608, 1613, 1615, 1619,
     1633, 1641, 1630, 1639, 1646, 1647, 1648, 1650, 1649, 1651,
     1652, 1659, 1666, 1667, 1676, 1679, 1680, 1681, 1686, 1692,
     1693, 1696, 1694, 1705, 1707, 1721, 1708, 1718, 1726, 1729,
     1732, 1733, 1737, 1738, 1739, 1742, 1743, 1747, 1750, 1751,
     1753, 1771, 1759, 1754, 1772, 1775, 1779, 1797, 1805, 1811,
     3309, 3298, 1818, 1825, 5224, 1863, 3282, 3267, 3200, 1870,
     1915,    0, 1878,  486, 1839, 3230, 3228, 3212, 1944, 1886,

      572, 5224, 1849, 1840, 1844, 1905, 1846, 1906, 1912, 1914,
     1915, 1917, 1909, 1957, 1961, 1907, 1965, 1913, 1966, 1967,
     1969, 1970, 1985, 1977, 1978, 1981, 1982, 1991, 1999, 1986,
     1987, 1998, 2007, 2011, 2013, 2017, 2019, 2023, 2024, 2025,
     2031, 2032, 2033, 2035, 2038, 2039, 2041, 2049, 2063, 2045,
     2051, 2057, 2059, 2069, 2075, 2078, 2081, 2091, 2093, 2094,
     2095, 2099, 2102, 2105, 2103, 2108, 2110, 2115, 2120, 2123,
     2127, 2134, 2124, 2135, 2136, 2137, 2139, 2140, 2141, 2145,
     2149, 2155, 2182, 2152, 2165, 2169, 2176, 2177, 2181, 2183,
     2186, 2187, 2189, 2191, 2194, 2195, 2196, 2197, 2201, 2203,

     2208, 2223, 2227, 2228, 2229, 2230, 2233, 2234, 2237, 2240,
     2243, 2245, 2259, 2247, 2261, 2262, 2264, 2269, 2273, 2275,
     2279, 2276, 2281, 2286, 2291, 2297, 2301, 2305, 2307, 2308,
     2310, 2311, 2312, 2315, 2321, 2318, 2323, 2325, 2327, 2332,
     2337, 2343, 2351, 2353, 2356, 2361, 2365, 2370, 2367, 2363,
     2371, 2373, 2397, 2378, 2385, 2389, 2402, 2410, 2415, 2417,
     2421, 2423, 2424, 2426, 2427, 2428, 2429, 2432, 2434, 2435,
     2436, 2439, 2441, 2445, 2461, 2463, 2469, 2470, 2472, 2473,
     2474, 2475, 2487, 2489, 2481, 2478, 2491, 2494, 2503, 2507,
     2508, 2509, 2518, 2520, 2523, 2525, 2527, 2528, 2548, 3223,

     2560, 1892, 2570, 2568, 2594, 3202,    0, 3175,    0, 2608,
      231,  238, 3171, 2576, 3138, 3136, 3134,  118, 2620, 2646,
        0, 2628,  649, 2587, 2540, 2581, 2598, 2640, 2600, 2601,
     2622, 2643, 2659, 2660, 2661, 2667, 2668, 2669, 2679, 2680,
     2689, 2693, 2694, 2697, 2698, 2699, 2700, 2708, 2713, 2714,
     2715, 2718, 2719, 2727, 2726, 2733, 2728, 2734, 2739, 2744,
     2746, 2747, 2752, 2759, 2760, 2761, 2764, 2768, 2773, 2776,
     2778, 2779, 2780, 2781, 2789, 2790, 2793, 2798, 2800, 2805,
     2807, 2810, 2811, 2814, 2818, 2822, 2824, 2826, 2827, 2825,
     2829, 2839, 2842, 2844, 2843, 2854, 2855, 2858, 2863, 2860,

     2864, 2869, 2870, 2884, 2871, 2888, 2872, 2897, 2890, 2898,
     2889, 2909, 2899, 2914, 2917, 2923, 2924, 2927, 2931, 2934,
     2935, 2925, 2941, 2943, 2949, 2952, 2951, 2953, 2960, 2959,
     2981, 2968, 2973, 2979, 2992, 2993, 2994, 2995, 2997, 2998,
     2999, 3003, 3005, 3006, 3007, 3009, 3010, 3008, 3011, 3019,
     3035, 3036, 3037, 3038, 3040, 3043, 3044, 3046, 3048, 3049,
     3052, 3055, 3056, 3062, 3064, 3065, 3073, 3068, 3076, 3081,
     3077, 3083, 3089, 3092, 3093, 3094, 3095, 3101, 3097, 3102,
     3103, 3107, 3111, 3119, 3122, 3148, 3156, 3179, 3131, 3182,
     3128, 3123, 3117, 3096, 3093, 3169, 3189, 3078, 3074,    0,

     3045, 3039, 3015, 2953,  139,    0, 3197,  772,  903,  705,
     3198, 3121, 3138, 3188, 3186, 3189, 3190, 3192, 3216, 3218,
     3220, 3221, 3223, 3224, 3225, 3226, 3228, 3229, 3231, 3232,
     3233, 3235, 3238, 3253, 3260, 3257, 3262, 3266, 3270, 3272,
     3273, 3274, 3281, 3275, 3282, 3286, 3288, 3291, 3292, 3299,
     3300, 3308, 3306, 3312, 3318, 3320, 3325, 3327, 3330, 3338,
     3332, 3340, 3345, 3346, 3347, 3352, 3354, 3356, 3360, 3362,
     3364, 3366, 3367, 3371, 3376, 3378, 3382, 3384, 3386, 3391,
     3393, 3398, 3400, 3402, 3403, 3406, 3408, 3415, 3417, 3418,
     3419, 3427, 3428, 3437, 3443, 3444, 3445, 3447, 3452, 3453,

     3456, 3457, 3463, 3458, 3461, 3464, 3465, 3469, 3473, 3474,
     3477, 3489, 3490, 3495, 3501, 3504, 3505, 3506, 3510, 3511,
     3516, 3515, 3517, 3519, 3522, 3530, 3523, 3531, 3532, 3535,
     3536, 3543, 3552, 3556, 3560, 3563, 3565, 3567, 3568, 3569,
     3587, 2958, 2949, 2932, 2930,    0, 2921,    0, 2904, 2894,
        0, 3595, 2892, 2870, 2868, 3602, 2867, 2841, 2839,  822,
      899,  955, 3608, 3631,  988,  989,    0, 1030, 3622, 3623,
     3624, 3625, 3626, 3627, 3628, 3636, 3652, 3653, 3654, 3655,
     3656, 3657, 3660, 3664, 3661, 3665, 3663, 3668, 3670, 3681,
     3682, 3685, 3689, 3696, 3698, 3701, 3703, 3706, 3707, 3709,

     3710, 3711, 3716, 3713, 3718, 3723, 3725, 3728, 3737, 3744,
     3749, 3750, 3752, 3753, 3754, 3757, 3758, 3759, 3761, 3762,
     3763, 3764, 3765, 3766, 3768, 3770, 3769, 3771, 3774, 3783,
     3790, 3798, 3796, 3804, 3808, 3809, 3814, 3815, 3816, 3817,
     3818, 3820, 3822, 3823, 3824, 3826, 3829, 3833, 3842, 3848,
     3851, 3857, 3855, 3887, 2826, 2824, 2797, 2782, 2736, 2728,
     2723, 2718, 2694, 2689, 3893, 3901, 2676, 2675,    0, 3909,
     2674, 2669, 2648, 1067,    0, 1068, 1086,    0, 3938, 2658,
     1177, 1375, 3944, 3858, 3859, 3860, 3862, 3864, 3867, 3943,
     3906, 3933, 3957, 3958, 3959, 3961, 3964, 3965, 3969, 3970,

     3977, 3978, 3979, 3985, 3986, 3989, 3991, 3994, 3995, 3997,
     3999, 4007, 4010, 4011, 4015, 4019, 4021, 4023, 4024, 4025,
     4026, 4031, 4039, 4041, 4043, 4045, 4051, 4052, 4057, 4063,
     4065, 4067, 4069, 4070, 4072, 4073, 5224, 2639, 2636, 2635,
        0, 2630,    0, 2629, 2599,    0, 2597, 2581,    0, 4096,
     2588, 2577, 2541, 4113, 4121, 2537, 2532, 2527, 1376, 1544,
     1610, 1688, 1689, 4135, 4150, 1773, 1836,    0, 4158, 4077,
     4076, 4094, 4115, 4087, 4171, 4172, 4173, 4113, 4174, 4175,
     4114, 4178, 4180, 4184, 4181, 4191, 4199, 4192, 4205, 4208,
     4209, 4210, 4212, 4213, 4217, 4219, 4224, 4226, 4230, 2526,

     2524, 2517, 2487, 2478, 2476, 2470, 2467, 2465, 2431, 2425,
     2418, 4248, 2387, 2370,    0, 4261,  250, 2369, 2365, 2351,
     1892,    0, 1971, 2095,    0, 2407, 2521,    0, 4267, 2368,
     2523, 2579, 4273, 4288, 4237, 4262, 4238, 4263, 4264, 4288,
     4290, 4301, 4304, 4308, 4309, 4310, 4314, 4322, 4321, 4323,
     4325, 4328, 2352, 2333, 2317,    0, 2307,    0, 2282, 2281,
        0, 2271, 2268,    0, 2265, 2243,    0, 5224, 2237, 2236,
     4348, 4356, 2232, 2223, 2204, 2773, 2966, 3125, 3127, 3266,
     3304, 3447, 4369, 3502, 3565,    0, 4377, 3910, 4347, 4350,
     4349, 4369, 4382, 4390, 4391, 4394, 4395, 4396, 4397, 2203,

     2190, 2186, 2158, 2149, 2144, 2136, 2109, 2094, 2078, 2077,
     2076, 2061, 2041, 2031, 2025,    0, 4400, 1999, 1967, 1929,
     1907, 3911,    0, 4073, 4222,    0, 4317, 4318,    0, 4388,
     4391,    0, 1896, 4404, 4409, 4428, 4437, 4401, 4426, 4427,
     4432, 4431, 1899, 1898, 1862,    0, 1861,    0, 1856, 1846,
        0, 1845, 1840,    0, 1835, 1831,    0, 1830, 1826,    0,
     1788, 1787, 4450, 4470, 1784, 1779, 1774, 4428, 4439, 4441,
     4458, 4459, 4463, 4472, 4473, 4474, 4476, 4477,    0, 4498,
     1779, 4467, 4402, 4491, 4469, 1766, 1734, 1728, 1710,    0,
     1699,    0, 1686,    0, 1685,    0, 1675,    0, 1656,    0,

     1653, 1649,    0, 4509, 1651, 1642, 1608, 1581, 4498,    0,
     4499, 4501,    0, 4509, 4512,    0, 4514, 4515,    0, 4516,
     4518,    0, 4519, 4520, 4539, 4547, 4537, 4541, 4552, 1592,
        0, 5224,    0, 1582,    0, 1542,    0, 1539,    0, 1489,
        0, 1487,    0, 1486,    0, 4559, 1485, 1440, 1439, 1413,
     4549, 1358, 4550, 1356, 4560, 1338, 4564, 1331, 4565, 1309,
     4566, 4567,    0, 4586, 1318, 4559, 1307,    0,    0,    0,
        0,    0,    0,    0, 1304,    0, 5224, 1293, 1257, 1254,
     1252, 4574, 1227, 4575, 1213, 4588, 1198, 4589, 1174, 4590,
     1168, 4591, 1167, 4598,    0, 5224, 5224, 5224, 5224, 5224,

     5224,    0, 1155, 1140, 1123, 1122, 1113, 1093, 1061, 1060,
     4599, 1059, 1054, 5224, 1021, 1019, 1017, 1015, 1008,  991,
      980,  969,  952, 5224, 4635, 4643, 4649, 4650, 4652, 4654,
      978, 4656, 4658, 4664,  975, 4666, 4668, 4670, 4676, 4678,
     4680,  974, 4682, 4684, 4686, 4693, 4699, 4701,  971, 4703,
      969, 4706, 4708, 4710, 4712, 4714,  967, 4717, 4719, 4721,
     4723, 4725, 4727, 4729,  938, 4731, 4733, 4735, 4738,  908,
     4742, 4745, 4748, 4750, 4752,  883, 4754,  880, 4756,  878,
     4758, 4760, 4762, 4764, 4766, 4769, 4772, 4775,  873, 4778,
     4780, 4782, 4784, 4786, 4788, 4790, 4792, 4794, 4796,  872,

     4798, 4800, 4802, 4805,  807, 4808,  794, 4811, 4814, 4817,
     4819, 4821,  793, 4823,  787, 4825,  786, 4827,  776, 4829,
     4831, 4833, 4835, 4837, 4840, 4843, 4846, 4849, 4852,  744,
     4855, 4857, 4859, 4861, 4863, 4865, 4867, 4869, 4871, 4873,
     4875, 4877,  740, 4880, 4882, 4884, 4886, 4889,  736, 4892,
      722, 4895,  719, 4898, 4901, 4904, 4906, 4908,  708, 4910,
      702, 4912,  698, 4914,  689, 4916,  676, 4918, 4920, 4922,
     4924, 4926, 4929, 4932, 4935, 4938, 4941, 4944, 4947,  659,
     4951, 4954, 4956, 4958, 4960, 4962, 4964, 4966, 4968, 4970,
     4972, 4974, 4976, 4978, 4980,  656, 4982, 4984, 4986, 4989,

      641, 4992,  640, 4995,  626, 4998,  600, 5001, 5004, 5007,
     5009, 5011,  593, 5013,  535, 5015,  526, 5017,  525, 5019,
      516, 5021,  494, 5023, 5025, 5027, 5029, 5031, 5034, 5037,
     5040, 5043, 5046, 5049, 5052, 5055, 5058,  474, 5064, 5065,
     5067, 5069,  465, 5071,  449, 5073,  448, 5075,  447, 5077,
      445, 5079,  417, 5081,  413, 5083, 5085, 5087, 5090,  407,
     5093,  397, 5096,  387, 5099,  382, 5102,  378, 5105, 5108,
     5114, 5115,  367,  351,  336,  330,  326,  321,  320, 5117,
      310, 5119, 5121, 5123, 5126, 5129, 5132, 5135, 5138, 5141,
     5144, 5147, 5150, 5153, 5156,  294,  265,  258,  229,  186,

      155,  154,  150,   99, 5159, 5161, 5164, 5167, 5170, 5173,
     5176, 5179, 5182, 5185,   80,   77, 5188, 5191, 5194, 5197,
     5200, 5203, 5206, 5209, 5212, 5215
    } ;

static yyconst flex_int16_t yy_def[1927] =
    {   0,
     1624,    1, 1624, 1624, 1624, 1624, 1624, 1624, 1625, 1626,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1627, 1624,
     1624,   21, 1624, 1624, 1624, 1624, 1624, 1624, 1627, 1627,
     1628, 1624, 1624, 1624,   29,   29,   29,   29,   29,   29,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627,   52,   52, 1627, 1627, 1627, 1627, 1627, 1624,
     1624, 1624, 1624, 1624, 1624, 1625, 1624, 1626, 1624, 1624,
     1627, 1624, 1624, 1624, 1629, 1630, 1631, 1630, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624,   29, 1632, 1624,
     1624,   88,   88, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627,   88, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
       88,   88,   88, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627,   88, 1627, 1627, 1627, 1627, 1627, 1627, 1627,   88,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1624, 1624, 1633, 1633, 1634,
     1635, 1631,  249, 1624, 1624, 1624, 1624, 1624,  258,  259,
       88, 1636, 1637, 1624,  261, 1627,  261, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,  261, 1627,
      261,  261, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1624, 1624, 1624,
     1638, 1624, 1624, 1624, 1624, 1639, 1640, 1641, 1624, 1624,
     1624, 1642,  491,  493, 1627, 1643, 1644, 1645, 1624,  499,

      500, 1624, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1624, 1624,

     1624, 1624, 1646, 1624, 1647, 1648, 1649, 1650, 1651, 1624,
     1652, 1652, 1653, 1652, 1624, 1654, 1655, 1656, 1624, 1624,
     1657,  720,  722, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1624, 1624, 1639, 1658, 1624,
     1659, 1660, 1661, 1662, 1663, 1624, 1624, 1624, 1664, 1665,

     1624, 1666, 1667, 1668, 1669, 1670, 1624, 1671, 1671, 1672,
     1671, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1624, 1624, 1673, 1674, 1675, 1676, 1677, 1678, 1624, 1679,
     1680, 1624, 1624, 1681, 1682, 1624, 1624, 1683, 1684, 1685,
     1686, 1687, 1624, 1624, 1624, 1688, 1689, 1624, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1624, 1690, 1691, 1624, 1692, 1693, 1694,
     1695, 1696, 1697, 1698, 1624, 1624, 1624, 1699, 1700, 1624,
     1701, 1702, 1703, 1704, 1705, 1624, 1706, 1707, 1624, 1624,
     1708, 1709, 1624, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,

     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1624, 1710, 1711, 1712,
     1713, 1714, 1715, 1624, 1716, 1717, 1624, 1718, 1719, 1624,
     1624, 1720, 1721, 1624, 1624, 1624, 1722, 1723, 1724, 1725,
     1726, 1727, 1728, 1624, 1624, 1624, 1729, 1730, 1624, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1731,

     1732, 1624, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740,
     1741, 1624, 1624, 1742, 1743, 1624, 1744, 1745, 1746, 1747,
     1748, 1749, 1624, 1750, 1751, 1624, 1752, 1753, 1624, 1624,
     1754, 1755, 1624, 1624, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627,
     1627, 1627, 1756, 1757, 1758, 1759, 1760, 1761, 1624, 1762,
     1763, 1624, 1764, 1765, 1624, 1766, 1767, 1624, 1768, 1769,
     1624, 1624, 1624, 1770, 1771, 1772, 1773, 1774, 1775, 1776,
     1777, 1778, 1624, 1624, 1779, 1780, 1624, 1781, 1627, 1627,
     1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1782,

     1783, 1624, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791,
     1792, 1793, 1794, 1624, 1795, 1796, 1624, 1624, 1797, 1798,
     1799, 1800, 1801, 1624, 1802, 1803, 1624, 1804, 1805, 1624,
     1806, 1807, 1624, 1808, 1809, 1624, 1624, 1627, 1627, 1627,
     1627, 1627, 1810, 1811, 1812, 1813, 1814, 1815, 1624, 1816,
     1817, 1624, 1818, 1819, 1624, 1820, 1821, 1624, 1822, 1823,
     1824, 1825, 1624, 1624, 1624, 1826, 1827, 1828, 1829, 1830,
     1831, 1832, 1833, 1834, 1835, 1836, 1624, 1837, 1838, 1624,
     1624, 1839, 1839, 1839, 1839, 1840, 1624, 1841, 1842, 1843,
     1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853,

     1624, 1854, 1855, 1624, 1624, 1856, 1857, 1858, 1859, 1860,
     1624, 1861, 1862, 1624, 1863, 1864, 1624, 1865, 1866, 1624,
     1867, 1868, 1869, 1870, 1624, 1624, 1871, 1871, 1871, 1872,
     1873, 1624, 1874, 1624, 1875, 1624, 1876, 1624, 1877, 1624,
     1878, 1624, 1879, 1880, 1881, 1624, 1624, 1882, 1883, 1884,
     1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894,
     1624, 1895, 1896, 1624, 1624, 1871, 1624, 1897, 1898, 1899,
     1900, 1901, 1902, 1903, 1624, 1904, 1624, 1905, 1906, 1624,
     1907, 1624, 1908, 1624, 1909, 1624, 1910, 1624, 1911, 1624,
     1912, 1913, 1914, 1624, 1915, 1624, 1624, 1624, 1624, 1624,

     1624, 1916, 1624, 1917, 1918, 1919, 1920, 1921, 1922, 1923,
     1624, 1924, 1624, 1624, 1925, 1624, 1624, 1624, 1624, 1624,
     1624, 1926, 1624,    0, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,

     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,

     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,

     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624
    } ;

static yyconst flex_uint16_t yy_nxt[5292] =
    {   0,
        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
       14,   15,   16,   17,   18,   19,   20,   21,   22,   22,
       22,   22,   22,   23,   24,   25,   26,   27,   28,   29,
       29,   30,   30,   31,   32,   33,   34,   30,   35,   36,
       37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
       47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
       57,   58,   30,   59,   60,   61,   62,   70,   83,   84,
      305, 1624,   86,   87,  100,  265,  306,  101,   70,   70,
       70,  102, 1532,  266,   70, 1614,   70,   70,   70,   70,
       72,   73,  289,   74,   74,   74,   74,   74,   74,   75,

     1624,   72,   72,   72, 1602,   76,   76,   72,   77,   72,
       72,   72,   72,  290,   76,   76,   76,   78,   76,   76,
      245,   79,  160,  157,   92,   93,   80,  199,   70,   94,
      270,   70,   81,   95,  158,   96,  159,   77,   70,   97,
       70,  906,   98,   99,   88,   88,   88,   88,   88,   88,
       75,   72,   70,  502,   72, 1601,   88,   88,  269, 1600,
     1599,   72,  906,   72,  272,   88,   88,   88,   88,   88,
       88,  103,  104,  105,  502,   72,  130,  106,  268,  281,
      107,  108,   70,  109,  131,  110,  111,  132,  112,   70,
      113, 1598,   70,  133,  114,  494,  134,   70,  135,  115,

      116,  117,  122,  118,  119,   72,  120,   70,  494,   70,
      121,  123,   72,  240,  124,   72,  125,  241,  126,  127,
       72,  128,   70,  129,  136,   70,  137,  242,  138,   70,
       72,  243,   72,  244, 1597,  271,  142,  143,  139,  144,
      145,  140,  273,  141,   70,   72,  490,  146,   72,   70,
      147,   70,   72, 1624,  492,  148,   70,  149,  150,  151,
      161,  492,  152, 1596,  153, 1254,  274,   72,  154,  155,
     1595,  156,   72,  900,   72,   70,  169,   70,  162,   72,
      170,   70,  163,  171,  172,   70,  164,   70,  278,  165,
      173,  286,  166,  174,  175,  176,  167,  168,   72, 1593,

       72,   70,  177,  287,   72,   70,  178,  179,   72,  180,
       72,   70,  288,  183,  279, 1576,  181,  184,  280,  303,
      185,   70,  182,   70,   72, 1574, 1573,  186,   72,  187,
      188, 1572,  189,  190,   72, 1571,   70,   70,  191,   70,
      192, 1570,  193,  275,   72,  304,   72,  276,  194,  195,
      200,  230,  196,   70,  201,  197, 1569,  198,  202,   72,
       72,  231,   72,  232,  297,  233,  234,  203,  204,  205,
      206,  207, 1568,  208,   70,  209,   72,  308,   70,  210,
      296,  211,   70, 1560,  212,  213,  214, 1558,  215,  216,
      217,   71, 1556,  292,   70,  218,  219,   72,  220,  293,

       71,   72, 1554,  221,  222,   72,  294,  301,  310,  295,
      223,  224, 1552,  225,  226,  227,  228,   72, 1545,   70,
      229,  235, 1543,  299,  302,  236,  246,  246,  246,  246,
      246,  246,  237,  238,  254,  254,  254,  254,  254,  254,
      239,   73,   72,  247,  247,  247,  247,  247,  247,   75,
     1541,  298, 1539, 1537, 1535,  248,  248,  253,  253,  253,
      253,  253,  253,   75,  248,  248,  248,  249,  248,  248,
     1533,   79,   70,   70,   70,   70,   80,   70,   70, 1524,
       70,   70,   81,  255,  255,  255,  255,  255,  255,  257,
      257,  257,  257,  257,  257,   72,   72,   72,   72, 1500,

       72,   72,  282,   72,   72,  307,  316,  320,  311,   70,
       70,  283,  284,  324,  300,   70,  714,  309,   70,  285,
       70, 1498,  256,  258,  258,  258,  258,  258,  258,  714,
     1496, 1494,   72,   72,   70,  259,  260,   70,   72,  322,
     1492,   72,   70,   72,  259,  259,  259,  259,  259,  260,
      261,  261,  261,  261,  261,  261,   70,   72,  321,   70,
       72,  323,  261,  261,  325,   72,   70,   70,   70,   70,
       70,  261,  261,  261,  261,  261,  261,  312,  327,   72,
      326,   70,   72,  317,  313,   70,   70,   70,  314,   72,
       72,   72,   72,   72,   70,   70,   70,  318, 1490,  328,

      329,  332,  723,  319,   72, 1476,  331,   70,   72,   72,
       72,  330,   70,   70,   70,  723,   70,   72,   72,   72,
      336,   70,  333,  334,   70,  338,   70,  340,  335,  337,
       72, 1474,  347,  339,  349,   72,   72,   72,  341,   72,
       70,  342,  343,  344,   72, 1472, 1470,   72,   70,   72,
       70,   70,  354,  351,  350,   70,  352,  345,  346,   70,
       70, 1462,   70,   72, 1435,   79,  348,   70,  353,  355,
       80,   72,  356,   72,   72,   70,   81,   70,   72,  911,
      357, 1413,   72,   72,  361,   72,   70,  359,  358,  362,
       72,   70,  911,  360, 1411,   70,   70,   70,   72,  363,

       72,  368,  364, 1409,  365,  366,  370, 1407,  369,   72,
      367,   70,   70, 1405,   72,  371,  374,  372,   72,   72,
       72,  377,  373,   70, 1382,   70,  375, 1380, 1067,   70,
      376,   70,   70,   70,   72,   72,  378,   70,   70,   70,
      502, 1378,  379,  382,   70, 1370,   72,  383,   72, 1332,
      380,  381,   72,   70,   72,   72,   72,  389,  384,   70,
       72,   72,   72,  391,  385,  390,   70,   72,  387,  386,
      394,   70,  393,  397,   70,  388,   72,   70,  392,   70,
       70, 1311,   72,   70,  396,  395,   70,  719,  398,   72,
       70, 1309, 1307,   70,   72,  721,   70,   72, 1305, 1263,

       72,  399,   72,   72,   70,  402,   72,  502,   70,   72,
      400,  410, 1261,   72,  405,  403,   72,  401,  406,   72,
       70,  411,  404,  408,  407,   70,  412,   72,   70,  421,
      409,   72,  413,   70,  414,  451,   70,   70,   70,  423,
      415,  424,  422,   72,  416, 1175,  417,  418,   72,  419,
      420,   72,   70,   70,  427,  428,   72,  502,  426,   72,
       72,   72,  425,   70,   70,  430,   70,  431,  435,  432,
      437,   70,   70,   70,  429,   72,   72, 1253, 1182,  433,
      439,  440,  434, 1164,  438, 1162,   72,   72, 1160,   72,
      436,   70,   70,   70,   72,   72,   72,   70,  441,  446,

      444,  449,   70,  442,  443,   70,  450,   70,  445,   70,
      447,  448,   70, 1062,   72,   72,   72,   70, 1624,   70,
       72,   70,  906,   70,   70,   72,  721,   70,   72,  454,
       72,  452,   72,   70,  502,   72,  455,   70,  502,   70,
       72,  453,   72, 1055,   72,  457,   72,   72,   70,  458,
       72,  461,  464,  456,  459,  465,   72,  463,   70,  460,
       72,  466,   72,   70,  468,   70,  469,  462,   70,   70,
       70,   72,  910,   70,  895,  470,  893,  467, 1178,  713,
      488,   72,   70,  252,   70,   70,   72,  502,   72,  471,
      502,   72,   72,   72,  474,  478,   72,  479,  479,  479,

      479,  479,  479,  472,  502,   72,  475,   72,   72,  473,
      477,  721, 1067,  476,   73,  502,  480,  480,  480,  480,
      480,  480,  481,  502,  502,   70,  502,  504,  482,  482,
      484,  484,  484,  484,  484,  484,  481,  482,  482,  482,
      483,  482,  482,  502,   79,  485,  485,  485,   72,   80,
      502,   70,  502, 1183,  502,   81,  502,  485,  485,  254,
      254,  254,  254,  254,  254,  502,  506,  487,  255,  255,
      255,  255,  255,  255,   72,  257,  257,  257,  257,  257,
      257, 1624,   70,  493,  493,  493,  493,  493,  493,  502,
     1175,  906,   80,  507,  502,  502,  502,   70,   81,   70,

       70,  489,  502,  502,   70,   72,   70,   81,  489, 1178,
      485,  490,  508,  491,  491,  491,  491,  491,  491,  492,
       72,  502,   72,   72,  510,  493,  493,   72,  502,   72,
      511,   70,   70,   70,  493,  493,  493,  493,  493,  493,
      495,  495,  495,  495,  495,  495,  481,  512,  502,  509,
       70,   70,  495,  495,   72,   72,   72,  502,  502,   70,
      514,  495,  495,  495,  495,  495,  495,  499,  499,  499,
      499,  499,  499,   72,   72,  502,   70,  515, 1549,  500,
      501,  516,   72,   70,   70,  502,  513,   70,  500,  500,
      500,  500,  500,  501,   70,   70,   70,   70,  517,   72,

     1067,  518,  502,  502,   70,   70,   72,   72,   70,  502,
       72,   70,  502,   70,  522,   70,   70,   72,   72,   72,
       72,  519,  520,  521,   70,  527,  526,   72,   72,   70,
       70,   72,  528,  502,   72,  529,   72,   70,   72,   72,
      531,   70,   70,   70,   70,   70,   70,   72,  502,   70,
       70,  530,   72,   72,   70,  532,  535,  533,  534,   70,
       72,   70,  502,   70,   72,   72,   72,   72,   72,   72,
       70,  536,   72,   72,   70,  538,   70,   72,   70,   70,
      537,   70,   72,  544,   72,  539,   72,  502,   70,  502,
      541,  540,  502,   72,  542,  545,  546,   72,   70,   72,

      543,   72,   72,   70,   72,   70,   70,  549,   70,   70,
      547,   72,  551,   70,  550,  548, 1549,   70,   70,   70,
       70,   72,   70,  552,   70,   70,   72, 1503,   72,   72,
     1489,   72,   72, 1525,   70,  555,   72,   70,   70,  553,
       72,   72,   72,   72,  502,   72,  556,   72,   72,   70,
      554,  557,   70,  558,  559,   70,  560,   72,   70,  563,
       72,   72,  562,  561,  564,   70,  502,  565,  573,   70,
      567,   70,   72,  502,   70,   72,  566,  568,   72,  570,
       70,   72,   70,  569,   70,   70,  572,  571,   72,  574,
       70,  502,   72,  502,   72,   70,  575,   72, 1268, 1322,

      576,   70,   70,   72,   70,   72,   70,   72,   72,   70,
      502,  502,  580,   72,  578,   70,  577,   70,   72,   70,
       70,  582,  579,   70,   72,   72,   70,   72,  581,   72,
       70,  583,   72,  586,  585,   70,   70,   70,   72,  587,
       72,  584,   72,   72,   70,   70,   72,  594,  502,   72,
      589,   70,  588,   72,   70,   70,   70,  592,   72,   72,
       72,  590, 1580, 1549,  591,   70,  593,   72,   72,   70,
      599,  596,  597,  600,   72,   70,  598,   72,   72,   72,
       70,   70,  602,  601,   70,  603,  604,  605,   72,  595,
       70,   70,   72,   70,   70,   70,   70,   70,   72,   70,

       70,   70,   70,   72,   72,   70,  606,   72, 1467, 1503,
     1460,  608, 1457,   72,   72,   70,   72,   72,   72,   72,
       72,  607,   72,   72,   72,   72,   70,  613,   72,   70,
      609,  614,  618,  611,  610,  616,  615,  612,   72,  619,
      622,   70,  617,   70,  621,  620,  624,   70,  623,   72,
       70,   70,   72,   70,   70,   70,  626,   70,   70,   70,
       70,   70, 1454,  625,   72, 1451,   72, 1175,   70,   70,
       72,   70,   70,   72,   72,  627,   72,   72,   72,  502,
       72,   72,   72,   72,   72,  633,  631,   70,  628,  632,
      630,   72,   72,  629,   72,   72,  634,   70,   70,  639,

       70,  636,  640,  635,   70, 1448,   70,  637,  648,   70,
       72,   70,   70,   70,  638, 1489,  502,   70,  641,   70,
       72,   72,  642,   72,   70,  644,   70,   72,  643,   72,
       70, 1549,   72, 1325,   72,   72,   72,  647,  645,  646,
       72,   70,   72,  649,   70,  502,  650,   72,  652,   72,
       70,  651,   70,   72,  654,  659,  653,   70,   70,   70,
       70,   70,   70,   70,   72, 1467, 1463,   72,  655,  656,
       70,  657, 1503,   72,  658,   72, 1416,   70,   70, 1460,
       72,   72,   72,   72,   72,   72,   72,   70,  660,  662,
       70,   70,   70,   72,  663,  661,  664,   70, 1457,  667,

       72,   72,  665,   70,   70,   70,  666,   70, 1454, 1451,
       72, 1178, 1328,   72,   72,   72,   70,  668,   70,   70,
       72,  669, 1448,  502,  502,  672,   72,   72,   72,   70,
       72,  670,   70, 1532,  673,  674,  671,   70,  675,   72,
       70,   72,   72,   70,   70,  677,  676,  679,   70,   70,
       70, 1489,   72,   70,   70,   72,  678, 1404,   70,  680,
       72,   70,   70,   72,   70,   70,   72,   72,  682,  681,
       70,   72,   72,   72,  684,  686,   72,   72,  683,  685,
      688,   72,   70,   70,   72,   72,   70,   72,   72, 1404,
       70,  687,  697,   72, 1436,  693, 1067, 1508,  691,  690,

      689,  694, 1467,  692,  696,   72,   72, 1375,  502,   72,
     1503, 1416,  695,   72,  699,  699,  699,  699,  699,  699,
      478,  698,  700,  700,  700,  700,  700,  700,  701,  701,
      701,  701,  701,  701,  481,  704,  704,  704,  704,  704,
      704,  481,  704,  704,  704,  704,  704,  704,  481, 1460,
       70,   70,  702, 1367, 1457,   70,   79,   70, 1364, 1268,
       70,   80,  481, 1454,  485,  485,  485,   81, 1361, 1451,
       79,  502,  481,   72,   72,   80,  485,  485,   72, 1358,
       72,   81,  725,   72, 1448, 1489,  487,  710,  710,  710,
      710,  710,  710, 1624,  727,  712,  712,  712,  712,  712,

      712, 1624,  724,  722,  722,  722,  722,  722,  722,  704,
      704,  704,  704,  704,  704, 1322,   70,   70,   70,  726,
       70, 1404, 1404,   70,   70,   70,   70,  502,   70,  485,
      490,  502,  711,  711,  711,  711,  711,  711,  492,   72,
       72,   72,  502,   72,  712,  712,   72,   72,   72,   72,
      728,   72, 1467,  712,  712,  712,  712,  712,  712,  719,
      733,  720,  720,  720,  720,  720,  720,  721,   70,  729,
      730,  731,   70,  722,  722,  732,   70,   70,   70,  502,
       70,   70,  722,  722,  722,  722,  722,  722,   70,   70,
     1375,   72,   70,   70, 1175,   72,   70,   70,   70,   72,

       72,   72,   70,   72,   72,  734,  502,  736,  481,   70,
       70,   72,   72,  738, 1371,   72,   72,  735,   70,   72,
       72,   72,   70,  737,   70,   72,  739,  740,   70,  742,
       70,  745,   72,   72,   70,   70,   70,  744,  743,  746,
      741,   72,   70,   70,   70,   72,   70,   72, 1416,   70,
       70,   72,   70,   72, 1315,  747,   70,   72,   72,   72,
       70,  749,   70,  748, 1460,   72,   72,   72,   70,   72,
       70,  753,   72,   72,   70,   72,  756,  762,  750,   72,
       70,  751,  752,   72, 1367,   72,   70,  754,  755,   70,
      759,   72,   70,   72,  761,  758,  757,   72,  760, 1457,

     1364, 1454,   70,   72,   70,   70,   70,  763,  765,   72,
       70,  764,   72,   70,   70,   72,   70, 1361, 1325,   70,
      768,   70,  766,  769,  767,   72,   70,   72,   72,   72,
      502,   70, 1451,   72,   70,   70,   72,   72,   70,   72,
      770,  771,   72,  773,   72,   70,   70,   70,   70,   72,
       70,   70,   70,  777,   72,  772,   70,   72,   72, 1358,
       70,   72,  774,   70,  775,  776,   70, 1448,   72,   72,
       72,   72, 1446,   72,   72,   72,   70,  784,  779,   72,
       70, 1404,  778,   72,  785,  780,   72,   70,   70,   72,
      782,  783,   70,   70,   70,  781,  788,   70,   70,   72,

       70,  786,   70,   72,  787,   70,   70,   70,   70, 1401,
       72,   72,   70, 1356,   70,   72,   72,   72,  790,   70,
       72,   72,  789,   72,  792,   72, 1401, 1421,   72,   72,
       72,   72,  794,  791,   70,   72,  795,   72,   70,   70,
       70,   70,   72,  803,   70,   70, 1375,  793,   70,  799,
      796,   70,  797,  798,   70, 1258,   70,   72,   70, 1416,
     1315,   72,   72,   72,   72,  800, 1367,   72,   72,  801,
       70,   72,   70,   70,   72,   70,  805,   72,  807,   72,
       70,   72,  806,  808,   70,  802,   70,   70, 1249,  804,
       70, 1364,   70,   72, 1246,   72,   72,   70,   72,  811,

      810,  809,   70,   72, 1361, 1243,  813,   72,   70,   72,
       72,  815,   70,   72,  812,   72,   70,  817,   70,   70,
       72,   70,   70,   70,  814,   72,   70,  819,  818,   70,
     1358,   72,   70,  820,   70,   72,   70,  816,   70,   72,
     1404,   72,   72,   70,   72,   72,   72,  821,   70,   72,
      825,  823,   72,  822,   70,   72, 1401,   72,  827,   72,
      830,   72,   70,  832,   70,  831,   72,   70,  826,  824,
      828,   72,   70,  829,   70, 1401,   70,   72,   70,  833,
      834,   70,   70, 1264,   70,   72,  502,   72, 1375,   70,
       72,  836, 1258, 1315,  838,   72,   70,   72,  835,   72,

       70,   72,  840,  837,   72,   72,  845,   72,   70,  846,
     1169,  848,   72,   70,  849,  850,  851,  852,  839,   72,
      841,   70,  842,   72,  844,  843,   70,  854,   70,  847,
     1178,   72,   70,  853,   70,   70,   72,   70,   70,   70,
       70, 1367,  502,   70,   72,   70,   70,   70, 1249,   72,
       70,   72,   70,  855, 1364,   72,   70,   72,   72,  857,
       72,   72,   72,   72,  856,  858,   72,  859,   72,   72,
       72,  861,   70,   72,   70,   72,  860,  866,  864,   72,
       70,   70,  862,   70,   70,   70,   70,  868, 1246,   70,
     1361,  863,   70, 1243,  865,   72,  867,   72,   70, 1358,

       70, 1356,   70,   72,   72,   70,   72,   72,   72,   72,
     1304,  872,   72,  869,   70,   72,  876,  870,   70,   70,
       70,   72,  875,   72,  871,   72,  873,  874,   72,   70,
      879,   70,  878,  877,   70,  880,   70,   72,   70,   70,
     1301,   72,   72,   72, 1328,  882, 1268, 1241,  881, 1301,
     1320,   70,   72,  883,   72, 1258,  502,   72,  502,   72,
     1059,   72,   72,  886, 1315,  887,  887,  887,  887,  887,
      887,  485,  485,  485,   72,  884,  885,  701,  701,  701,
      701,  701,  701,  485,  485,  704,  704,  704,  704,  704,
      704, 1624,   70,  889,  913,  485,  485,  485,   70,  492,

     1169,  702, 1386, 1165, 1249,   79,  901,  485,  485,   70,
       80,   70,   70,   79,  502,   72,   81,  889,   80,  901,
     1051,   72, 1246,  896,   81,  897,  897,  897,  897,  897,
      897,  914,   72,   70,   72,   72,  485,  907,  907,  907,
      907,  907,  907, 1624,  912,  909,  909,  909,  909,  909,
      909,   70, 1048, 1243,   70,  915,   72,  917, 1304, 1301,
      485,  719, 1301,  908,  908,  908,  908,  908,  908,  721,
       70,   70,   70, 1063,   72,  909,  909,   72,   70,   70,
       70,  502,  916,  502,  909,  909,  909,  909,  909,  909,
       70,   70, 1258,   72,   72,   72,  918, 1059, 1169,  900,

       70,   72,   72,   72,   70,   70,  923,  921,   70,   70,
       70,   70, 1249,   72,   72,  919,  920, 1051,  922,   70,
      924,  925,  926,   72,   70,   70,   70,   72,   72,   70,
       70,   72,   72,   72,   72,  927,  928,   70,   70,   70,
      930, 1246,   72,  929,   70,   70, 1048,   72,   72,   72,
       70, 1243,   72,   72,  932,   70,  931,   70,   70, 1241,
       72,   72,   72,   70,  933,  936,  944,   72,   72,  937,
       70,   70,   70,   72,  934,   70,  935,  941,   72,   70,
       72,   72,  942,  938,   70,  940,   72,   70,  939,   70,
       70,   70,   70,   72,   72,   72, 1423,  945,   72,  943,

       70,   70,   72,  953,   70, 1159,  947,   72,  502,   70,
       72,   70,   72,   72,   72,   72,   70,  946,   70,  948,
     1156,   70,   70,   72,   72,   70,  950,   72,  949,   70,
      952,  951,   72,   70,   72,   70,   70,   70,   70,   72,
       70,   72,  954,  955,   72,   72,  958, 1046,   72, 1156,
       70,  956,   72,   70,   70,   70,   72,  957,   72,   72,
       72,   72, 1173,   72, 1059,   70,   70,  959,  962,   70,
      960,   70,  963,   72,   70,   70,   72,   72,   72,  961,
       70,   70,   70,   70,  966,  964,  967,  968,   72,   72,
      717, 1169,   72,  900,   72,   70,  965,   72,   72,   70,

       70,   70,  973,   72,   72,   72,   72,  896,   70,   70,
       70,  970,  981,  976,  971,  974,  969, 1051,   72,  972,
       70,  975,   72,   72,   72,   70,  977,  709,   70,  979,
      978,   72,   72,   72,   70,   70,   70,  982,   70,  985,
      980,  983,   70,   72, 1048,   70,   70,  986,   72,  995,
      984,   72,   70, 1159,   70, 1156,  987,   72,   72,   72,
       70,   72,   70,   70,   70,   72,  988,  989,   72,   72,
       70,   70, 1156,  886, 1003,   72,  990,   72,  992,   70,
      996,  991,  993,   72,   70,   72,   72,   72,  502, 1322,
       70,  994,   70,   72,   72, 1005,  998,  997, 1000, 1002,

     1004,  502,   72,   70,   70,   70,   70,   72,   70,   70,
       70,  999, 1001,   72,   70,   72,   70,   70,   70,   70,
       70,   70,   70, 1007, 1006, 1008,   72,   72,   72,   72,
       70,   72,   72,   72, 1009, 1012, 1011,   72, 1059,   72,
       72,   72,   72,   72,   72,   72,   70,   70,   70,   70,
     1010,   70, 1017,   72,   70,   70, 1014,   70, 1013,   70,
       70, 1018,  717,   70, 1015, 1016,   70,   70, 1056,   72,
       72,   72,   72,   70,   72,   70,   70,   72,   72,   70,
       72, 1020,   72,   72,   70, 1021,   72,   70,   70,   72,
       72, 1023,   70, 1019,   70, 1022,   72,  900,   72,   72,

       70,  492,   72,   70,   70,   70,   70,   72,   70, 1024,
       72,   72,   70,   70,   70,   72, 1051,   72,   70,  709,
     1025, 1026,   70,   72, 1028, 1027,   72,   72,   72,   72,
       70,   72,   70,   70, 1029,   72,   72,   72, 1030, 1031,
     1048,   72, 1032, 1033, 1036,   72, 1046, 1035, 1426,   70,
     1325,  892, 1034,   72,  707,   72,   72,  904, 1037,  717,
      502,  263,  502, 1038, 1040, 1041, 1041, 1041, 1041, 1041,
     1041,  886,   72, 1042, 1042, 1042, 1042, 1042, 1042, 1039,
      485,  485,  485,  485,  485,  485, 1052, 1052, 1052, 1052,
     1052, 1052,  485,  485,  900,  485,  485,   70,  709,   70,

       70,   70,  889,   70,  896,  889, 1053, 1053, 1053, 1053,
     1053, 1053, 1063, 1624, 1064, 1064, 1064, 1064, 1064, 1064,
       72,  721,   72,   72,   72,  892,   72,   70, 1068,   70,
     1069,   70,   70,  502,   70,   70,   70,   70,  478,   70,
       70, 1068,   70,   70,   70,  485,   70,  502,  485,   70,
       72,  717,   72,  263,   72,   72,  256,   72,   72,   72,
       72, 1071,   72,   72,   70,   72,   72,   72,   70,   72,
     1076,   70,   72,   70, 1073, 1079, 1070,   70, 1072, 1078,
     1075,   70, 1074,   70,   70,   70,   70,   72, 1077, 1429,
      709,   72,   70,   70,   72, 1080,   72,   70, 1081,   70,

       72,  502,   70,   70,   72,  707,   72,   72,   72,   72,
       70,   70, 1084, 1085, 1082,   72,   72,   70, 1083,   70,
       72,  481,   72,   70, 1086,   72,   72, 1328, 1089,   70,
     1087,   70,  251,   72,   72, 1090,   70,  525,   70,  502,
       72,   70,   72,   70, 1088, 1092,   72,  524, 1091,   70,
     1094,   70,   72,  523,   72, 1093,   70,   70,   70,   72,
     1096,   72, 1097,   70,   72,   70,   72,   70,  505, 1098,
     1095,   70,   72,   70,   72,   70, 1099,   70,   70,   72,
       72,   72,   70,  503, 1100,  498,   72,   70,   72,   70,
       72, 1101,  263,   70,   72,   70,   72,   70,   72,  481,

       72,   72,   70, 1103,   70,   72, 1104, 1102, 1105,   70,
       72,   70,   72,   70,   70, 1106,   72,   70,   72,   70,
       72,  315, 1109,  291,  277,   72,   70,   72,   70,   70,
       70, 1107,   72, 1108,   72, 1112,   72,   72,   70,   70,
       72, 1110,   72,  267, 1111, 1115, 1113, 1116,   70,   72,
      264,   72,   72,   72,   70,   70,   70, 1114,   70, 1118,
     1119,   72,   72,   70,   70, 1120, 1122,   70,   70,   70,
     1432,   72,   70, 1117,   70,   70,   70,   72,   72,   72,
       70,   72,  502, 1121,   70,   70,   72,   72,   70, 1127,
       72,   72,   72, 1123, 1125,   72, 1124,   72,   72,   72,

       70,   70, 1126,   72, 1130, 1128,   70,   72,   72,  263,
     1132,   72,   70, 1135, 1129,   70,   70,   70, 1133, 1131,
     1134,   70,   70,   72,   72, 1268,   70,   70,   70,   72,
       70, 1136, 1137,   70,   70,   72,   75,  502,   72,   72,
       72,   70,   70,   70,   72,   72,   70,   70, 1140,   72,
       72,   72,  251,   72,   70, 1143,   72,   72, 1141, 1142,
     1138,   70, 1139,   70,   72,   72,   72,   70, 1144,   72,
       72,   70,   69, 1148,   70, 1145,   70,   72,   70,   70,
       70, 1149,   67,   64, 1146,   63,   72,   91, 1386, 1147,
       72,   90,   85,   82,   72, 1150,   69,   72, 1151,   72,

      502,   72,   72,   72, 1154, 1154, 1154, 1154, 1154, 1154,
     1165, 1152, 1166, 1166, 1166, 1166, 1166, 1166, 1153, 1170,
     1170, 1170, 1170, 1170, 1170, 1179, 1179, 1179, 1179, 1179,
     1179,  713,  713,   70,   70,   70,   70,   70,   70,   70,
      713,  713,  713,  713,  713,  713, 1063,   70, 1180, 1180,
     1180, 1180, 1180, 1180,   67,   65,   72,   72,   72,   72,
       72,   72,   72,   70,   70,   70,   70,   70,   70, 1187,
       72,   70,   70, 1185,   70,   70,   70, 1184, 1189,   70,
       64,   70,   63, 1186, 1188, 1624,   72,   72,   72,   72,
       72,   72,   70,   70,   72,   72,   70,   72,   72,   72,

       70, 1197,   72, 1193,   72, 1190, 1194,   70, 1196,   70,
     1195, 1191,   70, 1192,   70,   72,   72,   70,   70,   72,
       70,   70,   70,   72,   70, 1198, 1624,   70, 1624,   70,
       72, 1624,   72, 1624,   70,   72,   70,   72, 1199,   70,
       72,   72, 1200,   72,   72,   72, 1201,   72,   70, 1205,
       72, 1202,   72, 1207, 1206,   70, 1203,   72, 1208,   72,
       70,   70,   72,   70,   70,   70, 1209, 1204,   70,   70,
       70,   72,   70,   70,   70,   70,   70,   70,   72,   70,
       70,   70,   70,   72,   72,   70,   72,   72,   72, 1210,
     1624,   72,   72,   72,   70,   72,   72,   72,   72,   72,

       72,   70,   72,   72,   72,   72, 1216,   70,   72,   70,
     1211, 1212, 1217, 1214, 1213,   70, 1624,   72, 1624,   70,
       70, 1215, 1218, 1624,   72,   70,   70,   70,   70,   70,
       72,   70,   72,   70,   70,   70, 1219,   70,   72, 1220,
       70, 1223,   72,   72,   70, 1221, 1224, 1222,   72,   72,
       72,   72,   72,   70,   72, 1226,   72,   72,   72,   70,
       72, 1227,   70,   72, 1231, 1225,   70,   72,   70,   70,
       70,   70, 1228,   70, 1229,   70,   72, 1230,   70, 1624,
     1624, 1624,   72, 1233, 1624,   72, 1624, 1624, 1232,   72,
     1624,   72,   72,   72,   72, 1624,   72, 1234,   72, 1236,

     1624,   72, 1270, 1235, 1237, 1237, 1237, 1237, 1237, 1237,
     1250, 1250, 1250, 1250, 1250, 1250, 1165,   70, 1251, 1251,
     1251, 1251, 1251, 1251, 1254, 1333, 1255, 1255, 1255, 1255,
     1255, 1255,  900, 1067, 1423, 1624, 1624, 1624,  899,  899,
       72, 1624, 1624, 1624,   70,  502,  502,  899,  899,  899,
      899,  899,  899, 1264,   70, 1265, 1265, 1265, 1265, 1265,
     1265, 1269, 1269, 1269, 1269, 1269, 1269,   72,   70,   70,
       70, 1624,   70,  910,  910,   70,   70,   72, 1624, 1272,
       70,   70,  910,  910,  910,  910,  910,  910,   70,   70,
       70,   72,   72,   72, 1271,   72,   70,   70,   72,   72,

       70, 1275,   70,   72,   72,   70,   70, 1274,   70, 1273,
       70,   72,   72,   72, 1278, 1276, 1624, 1624,   70,   72,
       72,   70,   70,   72, 1277,   72,   70, 1280,   72,   72,
       70,   72,   70,   72,   70,   70,   70,   70, 1624, 1284,
     1279,   72,   70, 1282,   72,   72, 1283, 1624, 1285,   72,
       70, 1281,   70,   72,   70,   72,   70,   72,   72,   72,
       72, 1286,   70,   70, 1293,   72, 1291, 1287,   70, 1624,
     1288, 1624, 1289,   72,   70,   72,   70,   72,   70,   72,
       70,   70, 1290,   70,   70,   72,   72,   70,   70, 1624,
     1624,   72, 1294, 1624, 1292, 1624, 1322,   72,   70,   72,

     1624,   72, 1295,   72,   72,   70,   72,   72,  502, 1624,
       72,   72, 1298, 1312, 1312, 1312, 1312, 1312, 1312, 1335,
     1624,   72, 1297, 1296,   70,   70,   70, 1624,   72, 1299,
     1316, 1316, 1316, 1316, 1316, 1316, 1254, 1624, 1317, 1317,
     1317, 1317, 1317, 1317,  900, 1624, 1336,   72,   72,   72,
     1054, 1054, 1329, 1329, 1329, 1329, 1329, 1329, 1624, 1054,
     1054, 1054, 1054, 1054, 1054, 1264, 1337, 1330, 1330, 1330,
     1330, 1330, 1330, 1333, 1624, 1334, 1334, 1334, 1334, 1334,
     1334, 1067,   70,   70,   70,   70,   70, 1066, 1066,   70,
     1624,   70,   70,  502, 1624,   70, 1066, 1066, 1066, 1066,

     1066, 1066,   70,   70, 1624,   72,   72,   72,   72,   72,
       70, 1340,   72, 1339,   72,   72,   70, 1342,   72,   70,
       70,   70, 1346,   70,   70,   72,   72, 1338,   70, 1343,
       70, 1344, 1348,   72, 1345,   70, 1341,   70, 1347,   72,
     1624,   70,   72,   72,   72, 1426,   72,   72,   70,   70,
     1624,   72, 1350,   72, 1624, 1624, 1624,  502,   72, 1624,
       72, 1624, 1349, 1351,   72, 1368, 1368, 1368, 1368, 1368,
     1368,   72,   72,   70,   70,   70, 1371, 1352, 1372, 1372,
     1372, 1372, 1372, 1372, 1383, 1383, 1383, 1383, 1383, 1383,
     1387, 1387, 1387, 1387, 1387, 1387,   72,   72,   72,   70,

     1624,   70,  502, 1333, 1624, 1388, 1388, 1388, 1388, 1388,
     1388, 1067,   70, 1389, 1624,   70, 1390, 1181, 1181,   70,
       70,   70,   72,  502,   72,   70, 1181, 1181, 1181, 1181,
     1181, 1181,   70,   70,   70,   72,   70, 1391,   72,   70,
     1325, 1429,   72,   72,   72, 1392, 1624, 1624,   72, 1393,
     1624, 1394,  502,  502, 1624,   72,   72,   72,   70,   72,
       70,   70,   72, 1395, 1396, 1417, 1417, 1417, 1417, 1417,
     1417, 1371, 1624, 1418, 1418, 1418, 1418, 1418, 1418, 1397,
       70,   72, 1398,   72,   72, 1399, 1433, 1433, 1433, 1433,
     1433, 1433, 1436,   70, 1437, 1437, 1437, 1437, 1437, 1437,

     1438,   70,   70,   72,  502,   70,   70,   70,   70, 1624,
     1624, 1328,   70,   70, 1432, 1463,   72, 1464, 1464, 1464,
     1464, 1464, 1464,  502,   72,   72,  502, 1386,   72,   72,
       72,   72, 1479, 1440, 1624,   72,   72,   70,   70,  502,
     1441, 1439,   70,   70,  502, 1480, 1480, 1480, 1480, 1480,
     1480, 1510, 1436, 1442, 1481, 1481, 1481, 1481, 1481, 1481,
       72,   72, 1423,  502, 1513,   72,   72, 1504, 1504, 1504,
     1504, 1504, 1504, 1485,  502, 1624,  502, 1483,   70, 1624,
       70, 1426, 1516, 1482, 1484, 1463, 1429, 1505, 1505, 1505,
     1505, 1505, 1505,  502,  502, 1519, 1432, 1522,  502, 1386,

     1479,   72,   70,   72, 1624, 1624, 1624,  502,  502,  502,
     1529,  502,  502, 1525, 1624, 1526, 1526, 1526, 1526, 1526,
     1526, 1510, 1423, 1527, 1513,   72, 1546, 1546, 1546, 1546,
     1546, 1546, 1426,  502,  502, 1516,  502, 1429, 1519, 1432,
     1528, 1522, 1479, 1563,  502, 1624, 1624,  502,   70,  502,
      502,  502,   70,  502,  502,  502, 1564, 1564, 1564, 1564,
     1564, 1564, 1525,   70, 1565, 1565, 1565, 1565, 1565, 1565,
       70,   72, 1510, 1513, 1624,   72, 1577, 1577, 1577, 1577,
     1577, 1577, 1566, 1516,  502,  502,   72, 1519, 1522, 1479,
     1563, 1624, 1624,   72, 1624,  502, 1624, 1510, 1513,  502,

      502,  502,  502, 1594, 1594, 1594, 1594, 1594, 1594,  502,
      502, 1516, 1519, 1522, 1563, 1613, 1613, 1613, 1613, 1613,
     1613,  502, 1563,  502,  502,  502,  502, 1624, 1624, 1624,
     1624, 1624, 1624,  502,  502,   66,   66,   66,   66,   66,
       66,   66,   66,   68,   68,   68,   68,   68,   68,   68,
       68,   71,   71,   71,   71,   89,   89,  250,  250,  248,
      248,  262,  262,  482,  482,  486, 1624,  486, 1624,  486,
      486,  496,  496,  497,  497,  703,  703,  705, 1624,  705,
     1624,  705,  705,  706,  706,  708,  708,  715,  715,  716,
      716,  718, 1624,  718,  888, 1624,  888, 1624,  888,  888,

      890, 1624,  890, 1624,  890,  890,  891,  891,  894,  894,
      898,  898,  898,  899,  899,  902,  902,  903,  903,  905,
      905,  905, 1043, 1043, 1044, 1044, 1045, 1045, 1047, 1047,
     1049, 1049, 1050, 1050, 1054, 1054, 1057, 1057, 1058, 1058,
     1060, 1624, 1060, 1061, 1061, 1061, 1065, 1065, 1065, 1065,
     1066, 1066, 1066, 1155, 1155, 1157, 1157, 1158, 1158, 1161,
     1161, 1163, 1163, 1167, 1167, 1168, 1168, 1171, 1171, 1172,
     1172, 1174, 1174, 1174, 1176, 1176, 1176, 1177, 1177, 1177,
     1181, 1181, 1181, 1044, 1044, 1238, 1238, 1239, 1239, 1240,
     1240, 1242, 1242, 1244, 1244, 1245, 1245, 1247, 1247, 1248,

     1248, 1252, 1252, 1256, 1256, 1257, 1257, 1259, 1624, 1259,
     1260, 1260, 1260, 1262, 1262, 1262, 1266, 1266, 1266, 1267,
     1267, 1267, 1300, 1300, 1302, 1302, 1303, 1303, 1306, 1306,
     1308, 1308, 1310, 1310, 1313, 1313, 1314, 1314, 1318, 1318,
     1319, 1319, 1321, 1321, 1321, 1323, 1323, 1323, 1324, 1324,
     1324, 1326, 1326, 1326, 1327, 1327, 1327, 1331, 1331, 1331,
     1239, 1239, 1353, 1353, 1354, 1354, 1355, 1355, 1357, 1357,
     1359, 1359, 1360, 1360, 1362, 1362, 1363, 1363, 1365, 1365,
     1366, 1366, 1369, 1369, 1167, 1167, 1167, 1373, 1373, 1374,
     1374, 1376, 1624, 1376, 1377, 1377, 1377, 1379, 1379, 1379,

     1381, 1381, 1381, 1384, 1384, 1384, 1385, 1385, 1385, 1400,
     1400, 1402, 1402, 1403, 1403, 1406, 1406, 1408, 1408, 1410,
     1410, 1412, 1412, 1414, 1414, 1415, 1415, 1419, 1419, 1420,
     1420, 1422, 1422, 1422, 1424, 1424, 1424, 1425, 1425, 1425,
     1427, 1427, 1427, 1428, 1428, 1428, 1430, 1430, 1430, 1431,
     1431, 1431, 1434, 1434, 1434, 1266, 1266, 1266, 1266, 1354,
     1354, 1443, 1443, 1444, 1444, 1445, 1445, 1447, 1447, 1449,
     1449, 1450, 1450, 1452, 1452, 1453, 1453, 1455, 1455, 1456,
     1456, 1458, 1458, 1459, 1459, 1461, 1461, 1465, 1465, 1466,
     1466, 1468, 1624, 1468, 1469, 1469, 1469, 1471, 1471, 1471,

     1473, 1473, 1473, 1475, 1475, 1475, 1477, 1477, 1477, 1478,
     1478, 1478, 1486, 1486, 1487, 1487, 1488, 1488, 1491, 1491,
     1493, 1493, 1495, 1495, 1497, 1497, 1499, 1499, 1501, 1501,
     1502, 1502, 1506, 1506, 1507, 1507, 1509, 1509, 1509, 1511,
     1511, 1511, 1512, 1512, 1512, 1514, 1514, 1514, 1515, 1515,
     1515, 1517, 1517, 1517, 1518, 1518, 1518, 1520, 1520, 1520,
     1521, 1521, 1521, 1523, 1523, 1523,   71,   71,   71,   71,
     1444, 1444, 1530, 1530, 1531, 1531, 1534, 1534, 1536, 1536,
     1538, 1538, 1540, 1540, 1542, 1542, 1544, 1544, 1547, 1547,
     1548, 1548, 1550, 1624, 1550, 1551, 1551, 1551, 1553, 1553,

     1553, 1555, 1555, 1555, 1557, 1557, 1557, 1559, 1559, 1559,
     1561, 1561, 1561, 1562, 1562, 1562,   71,   71,   71,   71,
     1567, 1567, 1575, 1575, 1578, 1578, 1579, 1579, 1581, 1624,
     1581, 1582, 1582, 1582, 1583, 1624, 1583, 1584, 1584, 1584,
     1585, 1624, 1585, 1586, 1586, 1586, 1587, 1624, 1587, 1588,
     1588, 1588, 1589, 1624, 1589, 1590, 1590, 1590, 1591, 1624,
     1591, 1592, 1592, 1592, 1603, 1603, 1604, 1624, 1604, 1605,
     1624, 1605, 1606, 1624, 1606, 1607, 1624, 1607, 1608, 1624,
     1608, 1609, 1624, 1609, 1610, 1624, 1610, 1611, 1611, 1611,
     1612, 1624, 1612, 1615, 1624, 1615, 1616, 1624, 1616, 1617,

     1624, 1617, 1618, 1624, 1618, 1619, 1624, 1619, 1620, 1624,
     1620, 1621, 1624, 1621, 1622, 1624, 1622, 1623, 1624, 1623,
     1580, 1624, 1580,    3, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624

    } ;

static yyconst flex_int16_t yy_chk[5292] =
    {   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,   19,   25,   25,
      122,   22,   27,   27,   36,   92,  122,   36,   30,   59,
       51,   36, 1916,   92,   71, 1915,   94,   45,   97,   44,
       19,   21,  111,   21,   21,   21,   21,   21,   21,   21,

       22,   30,   59,   51, 1904,   21,   21,   71,   21,   94,
       45,   97,   44,  111,   21,   21,   21,   21,   21,   21,
       59,   21,   45,   44,   35,   35,   21,   51,   96,   35,
       97,   99,   21,   35,   44,   35,   44,   21,   29,   35,
       95,  718,   35,   35,   29,   29,   29,   29,   29,   29,
       29,   96,  106,  718,   99, 1903,   29,   29,   96, 1902,
     1901,   29,  905,   95,   99,   29,   29,   29,   29,   29,
       29,   37,   37,   37,  905,  106,   40,   37,   95,  106,
       37,   37,   57,   37,   40,   37,   38,   40,   38,   98,
       38, 1900,   58,   40,   38,  260,   40,   41,   40,   38,

       38,   38,   39,   38,   38,   57,   38,  100,  260,   42,
       38,   39,   98,   57,   39,   58,   39,   57,   39,   39,
       41,   39,  101,   39,   41,  110,   41,   57,   41,   43,
      100,   58,   42,   58, 1899,   98,   42,   42,   41,   42,
       42,   41,  100,   41,  104,  101,  711,   42,  110,   47,
       42,   46,   43,  712,  711,   42,  108,   43,   43,   43,
       46,  712,   43, 1898,   43, 1317,  101,  104,   43,   43,
     1897,   43,   47, 1317,   46,   48,   47,  120,   46,  108,
       47,  109,   46,   47,   47,   49,   46,  105,  104,   46,
       47,  108,   46,   47,   47,   47,   46,   46,   48, 1896,

      120,  102,   48,  108,  109,  121,   48,   48,   49,   48,
      105,   50,  109,   49,  105, 1881,   48,   49,  105,  120,
       49,   55,   48,   52,  102, 1879, 1878,   49,  121,   49,
       49, 1877,   49,   49,   50, 1876,  114,  115,   50,  124,
       50, 1875,   50,  102,   55,  121,   52,  102,   50,   50,
       52,   55,   50,  125,   52,   50, 1874,   50,   52,  114,
      115,   55,  124,   55,  115,   55,   55,   52,   52,   52,
       52,   53, 1873,   53,  127,   53,  125,  124,  119,   53,
      114,   53,  117, 1868,   53,   53,   53, 1866,   53,   53,
       53,   53, 1864,  113,   56,   53,   54,  127,   54,  113,

       54,  119, 1862,   54,   54,  117,  113,  119,  127,  113,
       54,   54, 1860,   54,   54,   54,   54,   56, 1855,  116,
       54,   56, 1853,  117,  119,   56,   73,   73,   73,   73,
       73,   73,   56,   56,   79,   79,   79,   79,   79,   79,
       56,   74,  116,   74,   74,   74,   74,   74,   74,   74,
     1851,  116, 1849, 1847, 1845,   74,   74,   78,   78,   78,
       78,   78,   78,   78,   74,   74,   74,   74,   74,   74,
     1843,   74,  107,  118,  123,  126,   74,  128,  131, 1838,
      133,  141,   74,   80,   80,   80,   80,   80,   80,   81,
       81,   81,   81,   81,   81,  107,  118,  123,  126, 1823,

      128,  131,  107,  133,  141,  123,  131,  133,  128,  135,
      137,  107,  107,  137,  118,  136,  494,  126,  138,  107,
      134, 1821,   80,   82,   82,   82,   82,   82,   82,  494,
     1819, 1817,  135,  137,  139,   82,   82,  140,  136,  135,
     1815,  138,  129,  134,   82,   82,   82,   82,   82,   82,
       88,   88,   88,   88,   88,   88,  132,  139,  134,  142,
      140,  136,   88,   88,  138,  129,  143,  144,  145,  148,
      146,   88,   88,   88,   88,   88,   88,  129,  140,  132,
      139,  147,  142,  132,  129,  149,  150,  151,  129,  143,
      144,  145,  148,  146,  152,  153,  154,  132, 1813,  142,

      143,  146,  501,  132,  147, 1807,  145,  157,  149,  150,
      151,  144,  155,  158,  159,  501,  160,  152,  153,  154,
      148,  156,  147,  147,  162,  150,  161,  153,  147,  149,
      157, 1805,  156,  152,  157,  155,  158,  159,  154,  160,
      163,  155,  155,  155,  156, 1803, 1801,  162,  164,  161,
      165,  166,  162,  159,  158,  167,  160,  155,  155,  168,
      169, 1796,  170,  163, 1780,  253,  156,  171,  161,  162,
      253,  164,  163,  165,  166,  174,  253,  172,  167,  723,
      163, 1767,  168,  169,  166,  170,  173,  164,  163,  167,
      171,  175,  723,  164, 1765,  176,  180,  178,  174,  167,

      172,  170,  169, 1763,  169,  169,  172, 1761,  170,  173,
      169,  177,  179, 1759,  175,  172,  173,  172,  176,  180,
      178,  174,  172,  181, 1753,  184,  173, 1751,  910,  182,
      173,  183,  186,  185,  177,  179,  175,  187,  188,  189,
      910, 1749,  176,  178,  191, 1743,  181,  178,  184, 1730,
      177,  177,  182,  190,  183,  186,  185,  184,  179,  192,
      187,  188,  189,  186,  181,  185,  193,  191,  182,  181,
      188,  194,  187,  191,  195,  183,  190,  196,  186,  198,
      199, 1719,  192,  197,  190,  189,  200,  908,  191,  193,
      203, 1717, 1715,  220,  194,  908,  202,  195, 1713, 1707,

      196,  192,  198,  199,  201,  195,  197,  908,  204,  200,
      193,  199, 1705,  203,  197,  196,  220,  194,  197,  202,
      206,  199,  196,  198,  197,  207,  200,  201,  208,  202,
      198,  204,  200,  205,  201,  220,  209,  211,  210,  205,
      201,  205,  204,  206,  201, 1060,  201,  201,  207,  201,
      201,  208,  213,  212,  207,  207,  205, 1060,  206,  209,
      211,  210,  205,  214,  216,  209,  215,  209,  210,  209,
      211,  218,  217,  219,  208,  213,  212, 1700, 1689,  209,
      212,  213,  209, 1680,  211, 1678,  214,  216, 1676,  215,
      210,  221,  222,  223,  218,  217,  219,  224,  214,  217,

      215,  219,  225,  214,  214,  226,  219,  227,  216,  228,
      218,  218,  229, 1670,  221,  222,  223,  230,  909,  233,
      224,  231, 1061,  235,  234,  225,  909,  232,  226,  225,
      227,  222,  228,  236, 1061,  229,  226,  237,  909,  238,
      230,  224,  233, 1665,  231,  227,  235,  234,  239,  228,
      232,  231,  233,  226,  229,  234,  236,  232,  240,  230,
      237,  235,  238,  241,  237,  242,  238,  231,  243,  244,
      245,  239, 1657,  268, 1651,  239, 1649,  236, 1062, 1642,
     1635,  240,  266, 1631,  269,  270,  241, 1623,  242,  240,
     1062,  243,  244,  245,  242,  246,  268,  246,  246,  246,

      246,  246,  246,  241, 1622,  266,  243,  269,  270,  241,
      245, 1065, 1066,  244,  247, 1621,  247,  247,  247,  247,
      247,  247,  247, 1065, 1066,  271, 1620,  266,  247,  247,
      249,  249,  249,  249,  249,  249,  249,  247,  247,  247,
      247,  247,  247, 1619,  247,  250,  250,  250,  271,  247,
     1618,  272, 1617, 1068, 1616,  247, 1615,  250,  250,  254,
      254,  254,  254,  254,  254, 1068,  271,  250,  255,  255,
      255,  255,  255,  255,  272,  257,  257,  257,  257,  257,
      257,  259,  273,  259,  259,  259,  259,  259,  259, 1613,
     1174, 1176,  254,  272, 1612, 1610, 1609,  275,  254,  276,

      277,  255, 1174, 1176,  274,  273,  278,  255,  257, 1177,
      250,  258,  273,  258,  258,  258,  258,  258,  258,  258,
      275, 1177,  276,  277,  275,  258,  258,  274, 1608,  278,
      276,  280,  281,  286,  258,  258,  258,  258,  258,  258,
      261,  261,  261,  261,  261,  261,  261,  278, 1607,  274,
      282,  279,  261,  261,  280,  281,  286, 1606, 1605,  283,
      280,  261,  261,  261,  261,  261,  261,  264,  264,  264,
      264,  264,  264,  282,  279, 1604,  284,  281, 1603,  264,
      264,  282,  283,  285,  287,  264,  279,  288,  264,  264,
      264,  264,  264,  264,  290,  293,  294,  295,  283,  284,

     1181,  283, 1593, 1591,  296,  297,  285,  287,  298, 1589,
      288,  299, 1181,  302,  288,  300,  301,  290,  293,  294,
      295,  284,  284,  285,  303,  294,  293,  296,  297,  304,
      305,  298,  295, 1587,  299,  296,  302,  306,  300,  301,
      298,  307,  308,  309,  310,  311,  312,  303, 1585,  314,
      316,  297,  304,  305,  315,  299,  304,  300,  301,  313,
      306,  318, 1583,  317,  307,  308,  309,  310,  311,  312,
      319,  305,  314,  316,  320,  310,  321,  315,  322,  325,
      307,  323,  313,  314,  318,  311,  317, 1581,  324, 1580,
      313,  312, 1579,  319,  313,  315,  317,  320,  326,  321,

      313,  322,  325,  327,  323,  328,  329,  320,  330,  331,
      318,  324,  323,  332,  321,  319, 1578,  333,  334,  335,
      336,  326,  344,  324,  337,  338,  327, 1575,  328,  329,
     1567,  330,  331, 1565,  339,  328,  332,  340,  341,  326,
      333,  334,  335,  336, 1560,  344,  330,  337,  338,  342,
      327,  331,  347,  332,  333,  343,  334,  339,  345,  337,
      340,  341,  336,  335,  337,  346, 1558,  338,  344,  348,
      340,  349,  342, 1556,  350,  347,  339,  340,  343,  341,
      351,  345,  352,  340,  353,  355,  343,  342,  346,  345,
      354, 1554,  348, 1552,  349,  356,  346,  350, 1182, 1259,

      348,  357,  358,  351,  359,  352,  360,  353,  355,  361,
     1182, 1259,  352,  354,  350,  362,  349,  363,  356,  364,
      365,  354,  351,  366,  357,  358,  370,  359,  353,  360,
      368,  355,  361,  358,  357,  371,  372,  373,  362,  359,
      363,  356,  364,  365,  367,  369,  366,  367, 1550,  370,
      362,  375,  360,  368,  374,  377,  376,  365,  371,  372,
      373,  363, 1549, 1548,  364,  378,  366,  367,  369,  379,
      370,  368,  369,  371,  375,  380,  369,  374,  377,  376,
      381,  382,  373,  372,  383,  374,  375,  376,  378,  367,
      384,  385,  379,  386,  387,  394,  388,  389,  380,  390,

      391,  395,  396,  381,  382,  392,  380,  383, 1547, 1544,
     1542,  382, 1540,  384,  385,  393,  386,  387,  394,  388,
      389,  381,  390,  391,  395,  396,  397,  387,  392,  398,
      383,  388,  390,  385,  384,  389,  388,  386,  393,  390,
      392,  399,  389,  400,  391,  390,  396,  401,  393,  397,
      402,  403,  398,  405,  404,  406,  398,  407,  408,  409,
      410,  420, 1538,  397,  399, 1536,  400, 1260,  411,  412,
      401,  413,  423,  402,  403,  400,  405,  404,  406, 1260,
      407,  408,  409,  410,  420,  405,  403,  414,  400,  404,
      402,  411,  412,  401,  413,  423,  406,  415,  416,  412,

      417,  409,  413,  407,  418, 1534,  419,  410,  420,  421,
      414,  422,  424,  425,  411, 1530, 1508,  426,  414,  427,
      415,  416,  414,  417,  428,  416,  429,  418,  415,  419,
      430, 1507,  421, 1261,  422,  424,  425,  419,  417,  418,
      426,  433,  427,  421,  431, 1261,  422,  428,  426,  429,
      434,  425,  432,  430,  428,  432,  427,  435,  436,  437,
      439,  438,  440,  441,  433, 1506, 1505,  431,  429,  430,
      442,  430, 1502,  434,  431,  432, 1501,  443,  444, 1499,
      435,  436,  437,  439,  438,  440,  441,  445,  433,  436,
      446,  447,  448,  442,  437,  434,  438,  449, 1497,  440,

      443,  444,  439,  450,  451,  453,  439,  452, 1495, 1493,
      445, 1262, 1263,  446,  447,  448,  454,  442,  455,  457,
      449,  443, 1491, 1262, 1263,  447,  450,  451,  453,  458,
      452,  445,  456, 1489,  448,  449,  446,  459,  452,  454,
      460,  455,  457,  461,  462,  454,  453,  455,  463,  464,
      465, 1488,  458,  466,  467,  456,  454, 1487,  468,  456,
      459,  469,  470,  460,  471,  474,  461,  462,  459,  458,
      473,  463,  464,  465,  461,  463,  466,  467,  460,  462,
      465,  468,  472,  475,  469,  470,  476,  471,  474, 1486,
      477,  464,  474,  473, 1481,  470, 1266, 1467,  468,  467,

      466,  471, 1466,  469,  473,  472,  475, 1465, 1266,  476,
     1462, 1461,  472,  477,  478,  478,  478,  478,  478,  478,
      479,  477,  479,  479,  479,  479,  479,  479,  480,  480,
      480,  480,  480,  480,  480,  483,  483,  483,  483,  483,
      483,  483,  484,  484,  484,  484,  484,  484,  484, 1459,
      495,  504,  480, 1458, 1456,  505,  480,  507, 1455, 1267,
      503,  480,  495, 1453,  486,  486,  486,  480, 1452, 1450,
      484, 1267,  503,  495,  504,  484,  486,  486,  505, 1449,
      507,  484,  504,  503, 1447, 1445,  486,  490,  490,  490,
      490,  490,  490,  493,  507,  493,  493,  493,  493,  493,

      493,  500,  503,  500,  500,  500,  500,  500,  500,  702,
      702,  702,  702,  702,  702, 1321,  506,  508,  516,  506,
      513, 1444, 1443,  509,  518,  510,  511, 1321,  512,  486,
      491, 1433,  491,  491,  491,  491,  491,  491,  491,  506,
      508,  516, 1421,  513,  491,  491,  509,  518,  510,  511,
      508,  512, 1420,  491,  491,  491,  491,  491,  491,  499,
      513,  499,  499,  499,  499,  499,  499,  499,  514,  509,
      510,  511,  515,  499,  499,  512,  517,  519,  520,  499,
      521,  522,  499,  499,  499,  499,  499,  499,  524,  525,
     1419,  514,  526,  527, 1323,  515,  523,  530,  531,  517,

      519,  520,  528,  521,  522,  514, 1323,  517,  523,  532,
      529,  524,  525,  520, 1418,  526,  527,  515,  533,  523,
      530,  531,  534,  519,  535,  528,  521,  522,  536,  525,
      537,  528,  532,  529,  538,  539,  540,  527,  526,  529,
      523,  533,  541,  542,  543,  534,  544,  535, 1415,  545,
      546,  536,  547,  537, 1414,  532,  550,  538,  539,  540,
      548,  537,  551,  535, 1413,  541,  542,  543,  552,  544,
      553,  541,  545,  546,  549,  547,  544,  549,  538,  550,
      554,  539,  540,  548, 1412,  551,  555,  542,  543,  556,
      547,  552,  557,  553,  548,  546,  545,  549,  547, 1411,

     1410, 1409,  558,  554,  559,  560,  561,  550,  552,  555,
      562,  551,  556,  563,  565,  557,  564, 1408, 1324,  566,
      556,  567,  554,  557,  555,  558,  568,  559,  560,  561,
     1324,  569, 1407,  562,  570,  573,  563,  565,  571,  564,
      560,  562,  566,  564,  567,  572,  574,  575,  576,  568,
      577,  578,  579,  568,  569,  563,  580,  570,  573, 1406,
      581,  571,  565,  584,  565,  567,  582, 1405,  572,  574,
      575,  576, 1404,  577,  578,  579,  585,  576,  570,  580,
      586, 1403,  569,  581,  577,  571,  584,  587,  588,  582,
      574,  575,  589,  583,  590,  572,  583,  591,  592,  585,

      593,  581,  594,  586,  582,  595,  596,  597,  598, 1402,
      587,  588,  599, 1401,  600,  589,  583,  590,  586,  601,
      591,  592,  585,  593,  589,  594, 1400, 1375,  595,  596,
      597,  598,  594,  587,  602,  599,  595,  600,  603,  604,
      605,  606,  601,  605,  607,  608, 1374,  593,  609,  600,
      596,  610,  598,  599,  611, 1373,  612,  602,  614, 1370,
     1369,  603,  604,  605,  606,  601, 1366,  607,  608,  602,
      613,  609,  615,  616,  610,  617,  608,  611,  610,  612,
      618,  614,  609,  612,  619,  604,  620,  622, 1365,  607,
      621, 1363,  623,  613, 1362,  615,  616,  624,  617,  615,

      614,  613,  625,  618, 1360, 1359,  617,  619,  626,  620,
      622,  619,  627,  621,  616,  623,  628,  621,  629,  630,
      624,  631,  632,  633,  618,  625,  634,  623,  622,  636,
     1357,  626,  635,  625,  637,  627,  638,  620,  639,  628,
     1355,  629,  630,  640,  631,  632,  633,  626,  641,  634,
      631,  628,  636,  627,  642,  635, 1354,  637,  633,  638,
      636,  639,  643,  638,  644,  637,  640,  645,  632,  629,
      634,  641,  646,  635,  650, 1353,  647,  642,  649,  639,
      641,  648,  651, 1330,  652,  643, 1320,  644, 1319,  654,
      645,  643, 1318, 1314,  645,  646,  655,  650,  642,  647,

      656,  649,  646,  644,  648,  651,  650,  652,  653,  651,
     1313,  653,  654,  657,  653,  653,  653,  653,  645,  655,
      647,  658,  647,  656,  649,  648,  659,  656,  660,  652,
     1326,  653,  661,  654,  662,  663,  657,  664,  665,  666,
      667, 1311, 1326,  668,  658,  669,  670,  671, 1310,  659,
      672,  660,  673,  657, 1309,  661,  674,  662,  663,  660,
      664,  665,  666,  667,  659,  663,  668,  664,  669,  670,
      671,  667,  675,  672,  676,  673,  665,  672,  671,  674,
      677,  678,  668,  679,  680,  681,  682,  674, 1308,  686,
     1307,  669,  685, 1306,  671,  675,  673,  676,  683, 1305,

      684, 1304,  687,  677,  678,  688,  679,  680,  681,  682,
     1303,  677,  686,  675,  689,  685,  681,  675,  690,  691,
      692,  683,  680,  684,  676,  687,  678,  679,  688,  693,
      685,  694,  684,  683,  695,  686,  696,  689,  697,  698,
     1302,  690,  691,  692, 1327,  689, 1331, 1301,  687, 1300,
     1258,  725,  693,  690,  694, 1257, 1327,  695, 1331,  696,
     1256,  697,  698,  699, 1253,  699,  699,  699,  699,  699,
      699,  703,  703,  703,  725,  695,  697,  701,  701,  701,
      701,  701,  701,  703,  703,  704,  704,  704,  704,  704,
      704,  714,  726,  703,  725,  705,  705,  705,  724,  714,

     1252,  701, 1332, 1251, 1248,  701,  714,  705,  705,  727,
      701,  729,  730,  704, 1332,  726,  701,  705,  704,  714,
     1247,  724, 1245,  710,  704,  710,  710,  710,  710,  710,
      710,  726,  727,  731,  729,  730,  703,  719,  719,  719,
      719,  719,  719,  722,  724,  722,  722,  722,  722,  722,
      722,  728, 1244, 1242,  732,  727,  731,  730, 1240, 1239,
      705,  720, 1238,  720,  720,  720,  720,  720,  720,  720,
      733,  734,  735, 1180,  728,  720,  720,  732,  736,  737,
      738,  720,  728, 1173,  720,  720,  720,  720,  720,  720,
      739,  740, 1172,  733,  734,  735,  732, 1171, 1168, 1167,

      741,  736,  737,  738,  742,  743,  737,  735,  744,  745,
      746,  747, 1164,  739,  740,  733,  734, 1163,  736,  748,
      738,  739,  740,  741,  749,  750,  751,  742,  743,  752,
      753,  744,  745,  746,  747,  742,  743,  755,  754,  757,
      745, 1162,  748,  744,  756,  758, 1161,  749,  750,  751,
      759, 1160,  752,  753,  748,  760,  746,  761,  762, 1159,
      755,  754,  757,  763,  749,  754,  763,  756,  758,  754,
      764,  765,  766,  759,  752,  767,  753,  759,  760,  768,
      761,  762,  760,  755,  769,  757,  763,  770,  756,  771,
      772,  773,  774,  764,  765,  766, 1376,  764,  767,  762,

      775,  776,  768,  774,  777, 1158,  767,  769, 1376,  778,
      770,  779,  771,  772,  773,  774,  780,  765,  781,  768,
     1157,  782,  783,  775,  776,  784,  770,  777,  769,  785,
      773,  772,  778,  786,  779,  787,  790,  788,  789,  780,
      791,  781,  776,  777,  782,  783,  780, 1156,  784, 1155,
      792,  778,  785,  793,  795,  794,  786,  779,  787,  790,
      788,  789, 1059,  791, 1058,  796,  797,  782,  788,  798,
      783,  800,  789,  792,  799,  801,  793,  795,  794,  786,
      802,  803,  805,  807,  793,  791,  794,  795,  796,  797,
     1057, 1055,  798, 1054,  800,  804,  792,  799,  801,  806,

      811,  809,  800,  802,  803,  805,  807, 1053,  808,  810,
      813,  797,  807,  803,  798,  801,  796, 1050,  804,  799,
      812,  802,  806,  811,  809,  814,  804, 1049,  815,  806,
      805,  808,  810,  813,  816,  817,  822,  808,  818,  811,
      806,  809,  819,  812, 1047,  820,  821,  812,  814,  821,
      810,  815,  823, 1045,  824, 1044,  813,  816,  817,  822,
      825,  818,  827,  826,  828,  819,  814,  815,  820,  821,
      830,  829, 1043, 1042,  829,  823,  816,  824,  818,  832,
      822,  817,  819,  825,  833,  827,  826,  828,  904, 1377,
      834,  820,  831,  830,  829,  831,  824,  823,  826,  828,

      829, 1377,  832,  835,  836,  837,  838,  833,  839,  840,
      841,  825,  827,  834,  842,  831,  843,  844,  845,  848,
      846,  847,  849,  833,  832,  834,  835,  836,  837,  838,
      850,  839,  840,  841,  835,  838,  837,  842,  903,  843,
      844,  845,  848,  846,  847,  849,  851,  852,  853,  854,
      836,  855,  847,  850,  856,  857,  843,  858,  841,  859,
      860,  848,  902,  861,  845,  846,  862,  863,  901,  851,
      852,  853,  854,  864,  855,  865,  866,  856,  857,  868,
      858,  855,  859,  860,  867,  856,  861,  869,  871,  862,
      863,  860,  870,  854,  872,  857,  864,  899,  865,  866,

      873,  898,  868,  874,  875,  876,  877,  867,  879,  861,
      869,  871,  878,  880,  881,  870,  895,  872,  882,  894,
      865,  866,  883,  873,  868,  867,  874,  875,  876,  877,
      884,  879,  912,  885,  869,  878,  880,  881,  870,  871,
      893,  882,  873,  876,  880,  883,  892,  878, 1378,  913,
     1379,  891,  877,  884,  889,  912,  885,  717,  881,  716,
     1378,  715, 1379,  883,  885,  886,  886,  886,  886,  886,
      886,  887,  913,  887,  887,  887,  887,  887,  887,  884,
      888,  888,  888,  890,  890,  890,  896,  896,  896,  896,
      896,  896,  888,  888,  713,  890,  890,  915,  708,  914,

      916,  917,  888,  918,  897,  890,  897,  897,  897,  897,
      897,  897,  907,  911,  907,  907,  907,  907,  907,  907,
      915,  911,  914,  916,  917,  706,  918,  919,  911,  920,
      914,  921,  922,  911,  923,  924,  925,  926,  700,  927,
      928,  911,  929,  930,  931,  888,  932,  498,  890,  933,
      919,  497,  920,  496,  921,  922,  489,  923,  924,  925,
      926,  921,  927,  928,  934,  929,  930,  931,  936,  932,
      929,  935,  933,  937,  923,  932,  920,  938,  922,  931,
      925,  939,  924,  940,  941,  942,  944,  934,  930, 1380,
      488,  936,  943,  945,  935,  933,  937,  946,  935,  947,

      938, 1380,  948,  949,  939,  487,  940,  941,  942,  944,
      950,  951,  941,  942,  936,  943,  945,  953,  937,  952,
      946,  482,  947,  954,  943,  948,  949, 1381,  946,  955,
      944,  956,  481,  950,  951,  948,  957,  292,  958, 1381,
      953,  959,  952,  961,  945,  950,  954,  291,  949,  960,
      952,  962,  955,  289,  956,  951,  963,  964,  965,  957,
      955,  958,  956,  966,  959,  967,  961,  968,  267,  958,
      954,  969,  960,  970,  962,  971,  960,  972,  973,  963,
      964,  965,  974,  265,  961,  263,  966,  975,  967,  976,
      968,  962,  262,  977,  969,  978,  970,  979,  971,  248,

      972,  973,  980,  967,  981,  974,  971,  966,  972,  982,
      975,  983,  976,  984,  985,  974,  977,  986,  978,  987,
      979,  130,  977,  112,  103,  980,  988,  981,  989,  990,
      991,  975,  982,  976,  983,  981,  984,  985,  992,  993,
      986,  979,  987,   93,  980,  985,  982,  986,  994,  988,
       90,  989,  990,  991,  995,  996,  997,  984,  998,  989,
      990,  992,  993,  999, 1000,  991,  993, 1001, 1002, 1004,
     1382,  994, 1005,  988, 1003, 1006, 1007,  995,  996,  997,
     1008,  998, 1382,  992, 1009, 1010,  999, 1000, 1011,  998,
     1001, 1002, 1004,  994,  996, 1005,  995, 1003, 1006, 1007,

     1012, 1013,  997, 1008, 1003, 1000, 1014, 1009, 1010,   89,
     1004, 1011, 1015, 1009, 1002, 1016, 1017, 1018, 1005, 1003,
     1008, 1019, 1020, 1012, 1013, 1384, 1022, 1021, 1023, 1014,
     1024, 1012, 1013, 1025, 1027, 1015,   76, 1384, 1016, 1017,
     1018, 1026, 1028, 1029, 1019, 1020, 1030, 1031, 1018, 1022,
     1021, 1023,   75, 1024, 1032, 1022, 1025, 1027, 1019, 1021,
     1016,   72, 1017, 1033, 1026, 1028, 1029, 1034, 1023, 1030,
     1031, 1035,   68, 1030, 1036, 1026, 1037, 1032, 1038, 1039,
     1040, 1032,   66,   64, 1027,   63, 1033,   32, 1385, 1029,
     1034,   31,   26,   23, 1035, 1032,   10, 1036, 1034, 1037,

     1385, 1038, 1039, 1040, 1041, 1041, 1041, 1041, 1041, 1041,
     1052, 1035, 1052, 1052, 1052, 1052, 1052, 1052, 1038, 1056,
     1056, 1056, 1056, 1056, 1056, 1063, 1063, 1063, 1063, 1063,
     1063, 1056, 1056, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
     1056, 1056, 1056, 1056, 1056, 1056, 1064, 1076, 1064, 1064,
     1064, 1064, 1064, 1064,    9,    8, 1069, 1070, 1071, 1072,
     1073, 1074, 1075, 1077, 1078, 1079, 1080, 1081, 1082, 1074,
     1076, 1083, 1085, 1070, 1087, 1084, 1086, 1069, 1076, 1088,
        7, 1089,    5, 1073, 1075,    3, 1077, 1078, 1079, 1080,
     1081, 1082, 1090, 1091, 1083, 1085, 1092, 1087, 1084, 1086,

     1093, 1087, 1088, 1082, 1089, 1078, 1084, 1094, 1086, 1095,
     1085, 1080, 1096, 1081, 1097, 1090, 1091, 1098, 1099, 1092,
     1100, 1101, 1102, 1093, 1104, 1089,    0, 1103,    0, 1105,
     1094,    0, 1095,    0, 1106, 1096, 1107, 1097, 1090, 1108,
     1098, 1099, 1092, 1100, 1101, 1102, 1093, 1104, 1109, 1102,
     1103, 1095, 1105, 1104, 1103, 1110, 1099, 1106, 1105, 1107,
     1111, 1112, 1108, 1113, 1114, 1115, 1108, 1101, 1116, 1117,
     1118, 1109, 1119, 1120, 1121, 1122, 1123, 1124, 1110, 1125,
     1127, 1126, 1128, 1111, 1112, 1129, 1113, 1114, 1115, 1109,
        0, 1116, 1117, 1118, 1130, 1119, 1120, 1121, 1122, 1123,

     1124, 1131, 1125, 1127, 1126, 1128, 1125, 1133, 1129, 1132,
     1114, 1117, 1126, 1122, 1120, 1134,    0, 1130,    0, 1135,
     1136, 1124, 1128,    0, 1131, 1137, 1138, 1139, 1140, 1141,
     1133, 1142, 1132, 1143, 1144, 1145, 1129, 1146, 1134, 1130,
     1147, 1133, 1135, 1136, 1148, 1131, 1134, 1132, 1137, 1138,
     1139, 1140, 1141, 1149, 1142, 1137, 1143, 1144, 1145, 1150,
     1146, 1138, 1151, 1147, 1143, 1135, 1153, 1148, 1152, 1184,
     1185, 1186, 1140, 1187, 1141, 1188, 1149, 1142, 1189,    0,
        0,    0, 1150, 1148,    0, 1151,    0,    0, 1146, 1153,
        0, 1152, 1184, 1185, 1186,    0, 1187, 1149, 1188, 1152,

        0, 1189, 1184, 1150, 1154, 1154, 1154, 1154, 1154, 1154,
     1165, 1165, 1165, 1165, 1165, 1165, 1166, 1191, 1166, 1166,
     1166, 1166, 1166, 1166, 1170, 1388, 1170, 1170, 1170, 1170,
     1170, 1170, 1170, 1388, 1422,    0,    0,    0, 1170, 1170,
     1191,    0,    0,    0, 1192, 1388, 1422, 1170, 1170, 1170,
     1170, 1170, 1170, 1179, 1190, 1179, 1179, 1179, 1179, 1179,
     1179, 1183, 1183, 1183, 1183, 1183, 1183, 1192, 1193, 1194,
     1195,    0, 1196, 1183, 1183, 1197, 1198, 1190,    0, 1192,
     1199, 1200, 1183, 1183, 1183, 1183, 1183, 1183, 1201, 1202,
     1203, 1193, 1194, 1195, 1190, 1196, 1204, 1205, 1197, 1198,

     1206, 1195, 1207, 1199, 1200, 1208, 1209, 1194, 1210, 1193,
     1211, 1201, 1202, 1203, 1199, 1197,    0,    0, 1212, 1204,
     1205, 1213, 1214, 1206, 1198, 1207, 1215, 1205, 1208, 1209,
     1216, 1210, 1217, 1211, 1218, 1219, 1220, 1221,    0, 1209,
     1204, 1212, 1222, 1207, 1213, 1214, 1208,    0, 1210, 1215,
     1223, 1206, 1224, 1216, 1225, 1217, 1226, 1218, 1219, 1220,
     1221, 1213, 1227, 1228, 1226, 1222, 1221, 1215, 1229,    0,
     1216,    0, 1217, 1223, 1230, 1224, 1231, 1225, 1232, 1226,
     1233, 1234, 1220, 1235, 1236, 1227, 1228, 1271, 1270,    0,
        0, 1229, 1227,    0, 1223,    0, 1424, 1230, 1274, 1231,

        0, 1232, 1228, 1233, 1234, 1272, 1235, 1236, 1424,    0,
     1271, 1270, 1234, 1250, 1250, 1250, 1250, 1250, 1250, 1270,
        0, 1274, 1233, 1232, 1278, 1281, 1273,    0, 1272, 1235,
     1254, 1254, 1254, 1254, 1254, 1254, 1255,    0, 1255, 1255,
     1255, 1255, 1255, 1255, 1255,    0, 1272, 1278, 1281, 1273,
     1255, 1255, 1264, 1264, 1264, 1264, 1264, 1264,    0, 1255,
     1255, 1255, 1255, 1255, 1255, 1265, 1273, 1265, 1265, 1265,
     1265, 1265, 1265, 1269,    0, 1269, 1269, 1269, 1269, 1269,
     1269, 1269, 1275, 1276, 1277, 1279, 1280, 1269, 1269, 1282,
        0, 1283, 1285, 1269,    0, 1284, 1269, 1269, 1269, 1269,

     1269, 1269, 1286, 1288,    0, 1275, 1276, 1277, 1279, 1280,
     1287, 1277, 1282, 1276, 1283, 1285, 1289, 1280, 1284, 1290,
     1291, 1292, 1285, 1293, 1294, 1286, 1288, 1275, 1295, 1282,
     1296, 1283, 1288, 1287, 1284, 1297, 1279, 1298, 1287, 1289,
        0, 1299, 1290, 1291, 1292, 1425, 1293, 1294, 1335, 1337,
        0, 1295, 1292, 1296,    0,    0,    0, 1425, 1297,    0,
     1298,    0, 1289, 1295, 1299, 1312, 1312, 1312, 1312, 1312,
     1312, 1335, 1337, 1336, 1338, 1339, 1316, 1298, 1316, 1316,
     1316, 1316, 1316, 1316, 1329, 1329, 1329, 1329, 1329, 1329,
     1333, 1333, 1333, 1333, 1333, 1333, 1336, 1338, 1339, 1340,

        0, 1341, 1329, 1334,    0, 1334, 1334, 1334, 1334, 1334,
     1334, 1334, 1342, 1336,    0, 1343, 1339, 1334, 1334, 1344,
     1345, 1346, 1340, 1334, 1341, 1347, 1334, 1334, 1334, 1334,
     1334, 1334, 1349, 1348, 1350, 1342, 1351, 1340, 1343, 1352,
     1427, 1428, 1344, 1345, 1346, 1343,    0,    0, 1347, 1344,
        0, 1345, 1427, 1428,    0, 1349, 1348, 1350, 1389, 1351,
     1391, 1390, 1352, 1347, 1348, 1371, 1371, 1371, 1371, 1371,
     1371, 1372,    0, 1372, 1372, 1372, 1372, 1372, 1372, 1350,
     1392, 1389, 1351, 1391, 1390, 1352, 1383, 1383, 1383, 1383,
     1383, 1383, 1387, 1393, 1387, 1387, 1387, 1387, 1387, 1387,

     1390, 1394, 1395, 1392, 1383, 1396, 1397, 1398, 1399,    0,
        0, 1430, 1438, 1483, 1431, 1417, 1393, 1417, 1417, 1417,
     1417, 1417, 1417, 1430, 1394, 1395, 1431, 1434, 1396, 1397,
     1398, 1399, 1435, 1395,    0, 1438, 1483, 1439, 1440, 1434,
     1397, 1394, 1442, 1441, 1435, 1436, 1436, 1436, 1436, 1436,
     1436, 1468, 1437, 1398, 1437, 1437, 1437, 1437, 1437, 1437,
     1439, 1440, 1469, 1468, 1470, 1442, 1441, 1463, 1463, 1463,
     1463, 1463, 1463, 1442, 1469,    0, 1470, 1440, 1482,    0,
     1485, 1471, 1472, 1439, 1441, 1464, 1473, 1464, 1464, 1464,
     1464, 1464, 1464, 1471, 1472, 1474, 1475, 1476, 1473, 1477,

     1478, 1482, 1484, 1485,    0,    0,    0, 1474, 1475, 1476,
     1485, 1477, 1478, 1480,    0, 1480, 1480, 1480, 1480, 1480,
     1480, 1509, 1511, 1482, 1512, 1484, 1504, 1504, 1504, 1504,
     1504, 1504, 1514, 1509, 1511, 1515, 1512, 1517, 1518, 1520,
     1484, 1521, 1523, 1524, 1514,    0,    0, 1515, 1527, 1517,
     1518, 1520, 1528, 1521, 1523, 1524, 1525, 1525, 1525, 1525,
     1525, 1525, 1526, 1529, 1526, 1526, 1526, 1526, 1526, 1526,
     1566, 1527, 1551, 1553,    0, 1528, 1546, 1546, 1546, 1546,
     1546, 1546, 1528, 1555, 1551, 1553, 1529, 1557, 1559, 1561,
     1562,    0,    0, 1566,    0, 1555,    0, 1582, 1584, 1557,

     1559, 1561, 1562, 1564, 1564, 1564, 1564, 1564, 1564, 1582,
     1584, 1586, 1588, 1590, 1592, 1594, 1594, 1594, 1594, 1594,
     1594, 1564, 1611, 1586, 1588, 1590, 1592,    0,    0,    0,
        0,    0,    0, 1594, 1611, 1625, 1625, 1625, 1625, 1625,
     1625, 1625, 1625, 1626, 1626, 1626, 1626, 1626, 1626, 1626,
     1626, 1627, 1627, 1627, 1627, 1628, 1628, 1629, 1629, 1630,
     1630, 1632, 1632, 1633, 1633, 1634,    0, 1634,    0, 1634,
     1634, 1636, 1636, 1637, 1637, 1638, 1638, 1639,    0, 1639,
        0, 1639, 1639, 1640, 1640, 1641, 1641, 1643, 1643, 1644,
     1644, 1645,    0, 1645, 1646,    0, 1646,    0, 1646, 1646,

     1647,    0, 1647,    0, 1647, 1647, 1648, 1648, 1650, 1650,
     1652, 1652, 1652, 1653, 1653, 1654, 1654, 1655, 1655, 1656,
     1656, 1656, 1658, 1658, 1659, 1659, 1660, 1660, 1661, 1661,
     1662, 1662, 1663, 1663, 1664, 1664, 1666, 1666, 1667, 1667,
     1668,    0, 1668, 1669, 1669, 1669, 1671, 1671, 1671, 1671,
     1672, 1672, 1672, 1673, 1673, 1674, 1674, 1675, 1675, 1677,
     1677, 1679, 1679, 1681, 1681, 1682, 1682, 1683, 1683, 1684,
     1684, 1685, 1685, 1685, 1686, 1686, 1686, 1687, 1687, 1687,
     1688, 1688, 1688, 1690, 1690, 1691, 1691, 1692, 1692, 1693,
     1693, 1694, 1694, 1695, 1695, 1696, 1696, 1697, 1697, 1698,

     1698, 1699, 1699, 1701, 1701, 1702, 1702, 1703,    0, 1703,
     1704, 1704, 1704, 1706, 1706, 1706, 1708, 1708, 1708, 1709,
     1709, 1709, 1710, 1710, 1711, 1711, 1712, 1712, 1714, 1714,
     1716, 1716, 1718, 1718, 1720, 1720, 1721, 1721, 1722, 1722,
     1723, 1723, 1724, 1724, 1724, 1725, 1725, 1725, 1726, 1726,
     1726, 1727, 1727, 1727, 1728, 1728, 1728, 1729, 1729, 1729,
     1731, 1731, 1732, 1732, 1733, 1733, 1734, 1734, 1735, 1735,
     1736, 1736, 1737, 1737, 1738, 1738, 1739, 1739, 1740, 1740,
     1741, 1741, 1742, 1742, 1744, 1744, 1744, 1745, 1745, 1746,
     1746, 1747,    0, 1747, 1748, 1748, 1748, 1750, 1750, 1750,

     1752, 1752, 1752, 1754, 1754, 1754, 1755, 1755, 1755, 1756,
     1756, 1757, 1757, 1758, 1758, 1760, 1760, 1762, 1762, 1764,
     1764, 1766, 1766, 1768, 1768, 1769, 1769, 1770, 1770, 1771,
     1771, 1772, 1772, 1772, 1773, 1773, 1773, 1774, 1774, 1774,
     1775, 1775, 1775, 1776, 1776, 1776, 1777, 1777, 1777, 1778,
     1778, 1778, 1779, 1779, 1779, 1781, 1781, 1781, 1781, 1782,
     1782, 1783, 1783, 1784, 1784, 1785, 1785, 1786, 1786, 1787,
     1787, 1788, 1788, 1789, 1789, 1790, 1790, 1791, 1791, 1792,
     1792, 1793, 1793, 1794, 1794, 1795, 1795, 1797, 1797, 1798,
     1798, 1799,    0, 1799, 1800, 1800, 1800, 1802, 1802, 1802,

     1804, 1804, 1804, 1806, 1806, 1806, 1808, 1808, 1808, 1809,
     1809, 1809, 1810, 1810, 1811, 1811, 1812, 1812, 1814, 1814,
     1816, 1816, 1818, 1818, 1820, 1820, 1822, 1822, 1824, 1824,
     1825, 1825, 1826, 1826, 1827, 1827, 1828, 1828, 1828, 1829,
     1829, 1829, 1830, 1830, 1830, 1831, 1831, 1831, 1832, 1832,
     1832, 1833, 1833, 1833, 1834, 1834, 1834, 1835, 1835, 1835,
     1836, 1836, 1836, 1837, 1837, 1837, 1839, 1839, 1839, 1839,
     1840, 1840, 1841, 1841, 1842, 1842, 1844, 1844, 1846, 1846,
     1848, 1848, 1850, 1850, 1852, 1852, 1854, 1854, 1856, 1856,
     1857, 1857, 1858,    0, 1858, 1859, 1859, 1859, 1861, 1861,

     1861, 1863, 1863, 1863, 1865, 1865, 1865, 1867, 1867, 1867,
     1869, 1869, 1869, 1870, 1870, 1870, 1871, 1871, 1871, 1871,
     1872, 1872, 1880, 1880, 1882, 1882, 1883, 1883, 1884,    0,
     1884, 1885, 1885, 1885, 1886,    0, 1886, 1887, 1887, 1887,
     1888,    0, 1888, 1889, 1889, 1889, 1890,    0, 1890, 1891,
     1891, 1891, 1892,    0, 1892, 1893, 1893, 1893, 1894,    0,
     1894, 1895, 1895, 1895, 1905, 1905, 1906,    0, 1906, 1907,
        0, 1907, 1908,    0, 1908, 1909,    0, 1909, 1910,    0,
     1910, 1911,    0, 1911, 1912,    0, 1912, 1913, 1913, 1913,
     1914,    0, 1914, 1917,    0, 1917, 1918,    0, 1918, 1919,

        0, 1919, 1920,    0, 1920, 1921,    0, 1921, 1922,    0,
     1922, 1923,    0, 1923, 1924,    0, 1924, 1925,    0, 1925,
     1926,    0, 1926, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624, 1624,
     1624

    } ;

/* Table of booleans, true if rule could match eol. */
static yyconst flex_int32_t yy_rule_can_match_eol[346] =
    {   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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 
    1, 0, 0, 0, 0, 0,     };

static yyconst flex_int16_t yy_rule_linenum[345] =
    {   0,
      199,  200,  201,  202,  203,  204,  205,  206,  207,  208,
      209,  210,  211,  212,  213,  214,  215,  216,  217,  218,
      219,  220,  221,  222,  223,  224,  225,  226,  227,  228,
      229,  230,  231,  232,  233,  234,  235,  236,  237,  238,
      239,  241,  243,  244,  245,  246,  248,  250,  251,  252,
      253,  254,  255,  256,  257,  258,  259,  260,  261,  262,
      263,  264,  265,  266,  267,  269,  270,  272,  274,  275,
      276,  277,  278,  279,  280,  282,  283,  285,  286,  287,
      288,  289,  290,  291,  292,  293,  294,  295,  296,  297,
      298,  300,  301,  302,  304,  305,  306,  307,  308,  309,

      310,  311,  313,  314,  315,  316,  318,  319,  320,  321,
      323,  325,  326,  327,  328,  329,  331,  332,  333,  334,
      336,  337,  338,  339,  340,  341,  343,  344,  345,  346,
      348,  349,  350,  351,  352,  354,  355,  357,  358,  359,
      360,  361,  362,  363,  364,  366,  367,  368,  370,  371,
      372,  373,  374,  375,  376,  378,  379,  380,  382,  384,
      385,  386,  387,  389,  390,  391,  392,  394,  395,  396,
      397,  398,  399,  401,  402,  403,  404,  405,  406,  407,
      408,  409,  410,  412,  413,  414,  415,  417,  418,  420,
      421,  422,  423,  424,  425,  426,  427,  428,  429,  430,

      431,  433,  434,  435,  436,  437,  438,  440,  441,  442,
      443,  444,  446,  447,  449,  450,  451,  452,  453,  455,
      456,  457,  459,  460,  461,  463,  465,  466,  467,  469,
      470,  471,  472,  474,  475,  476,  477,  478,  479,  481,
      483,  484,  486,  487,  488,  489,  490,  491,  492,  493,
      494,  496,  498,  499,  500,  502,  504,  506,  507,  508,
      509,  510,  511,  512,  513,  514,  515,  516,  517,  518,
      519,  520,  521,  522,  523,  524,  525,  526,  528,  529,
      531,  532,  533,  534,  535,  536,  537,  538,  539,  540,
      541,  542,  543,  544,  545,  546,  548,  549,  550,  551,

      553,  554,  555,  557,  558,  560,  562,  564,  565,  566,
      567,  569,  571,  572,  574,  575,  576,  578,  579,  581,
      583,  584,  585,  586,  587,  588,  590,  591,  593,  594,
      596,  601,  607,  612,  622,  627,  633,  638,  643,  647,
      652,  653,  654,  663
    } ;

/* 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
#line 1 "scanner.l"
/*
 * Copyright (c) 2007-2008 Patrick McHardy <kaber@trash.net>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Development of this code funded by Astaro AG (http://www.astaro.com/)
 */
#line 12 "scanner.l"

#include <limits.h>
#include <glob.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <linux/types.h>
#include <linux/netfilter.h>

#include <nftables.h>
#include <erec.h>
#include <rule.h>
#include <parser.h>
#include "parser_bison.h"

#define YY_NO_INPUT

/*
 * Work around flex behaviour when reaching the end of buffer: normally, flex
 * regexes are greedy, when reaching the end of buffer however it tries to
 * match whatever is left in the buffer and only backs up in case it doesn't
 * match *any* pattern. Since we accept unquoted strings, this means any partial
 * token will be recognized as string.
 *
 * Make sure to only pass input to flex linewise to avoid this.
 */
#define YY_INPUT(buf,result,max_size)						\
{										\
	result = 0;								\
	errno = 0;								\
										\
	while (result < max_size) {						\
		int chr = fgetc(yyin);						\
										\
		if (chr != EOF) {						\
			buf[result++] = chr;					\
			if (chr == '\n' || chr == ' ')				\
				break;						\
			continue;						\
		}								\
										\
		if (ferror(yyin)) {						\
			if (errno != EINTR) {					\
				YY_FATAL_ERROR("input in flex scanner failed");	\
				break;						\
			}							\
			errno = 0;						\
			clearerr(yyin);						\
		}								\
		break;								\
	}									\
}

static void scanner_pop_buffer(yyscan_t scanner);


static void init_pos(struct input_descriptor *indesc)
{
	indesc->lineno		= 1;
	indesc->column		= 1;
	indesc->token_offset	= 0;
	indesc->line_offset 	= 0;
}

static void update_pos(struct parser_state *state, struct location *loc,
		       int len)
{
	loc->indesc			= state->indesc;
	loc->first_line			= state->indesc->lineno;
	loc->last_line			= state->indesc->lineno;
	loc->first_column		= state->indesc->column;
	loc->last_column		= state->indesc->column + len - 1;
	state->indesc->column		+= len;
}

static void update_offset(struct parser_state *state, struct location *loc,
			  unsigned int len)
{
	state->indesc->token_offset	+= len;
	loc->token_offset		= state->indesc->token_offset;
	loc->line_offset		= state->indesc->line_offset;
}

static void reset_pos(struct parser_state *state, struct location *loc)
{
	state->indesc->line_offset	= state->indesc->token_offset;
	state->indesc->lineno		+= 1;
	state->indesc->column		= 1;
}

#define YY_USER_ACTION {					\
	update_pos(nft_get_extra(yyscanner), yylloc, yyleng);	\
	update_offset(nft_get_extra(yyscanner), yylloc, yyleng);	\
}

/* avoid warnings with -Wmissing-prototypes */
extern int	nft_get_column(yyscan_t);
extern void	nft_set_column(int,yyscan_t);

#line 2478 "scanner.c"

#define INITIAL 0

#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 */

/* Holds the entire state of the reentrant scanner. */
struct yyguts_t
    {

    /* User-defined. Not touched by flex. */
    YY_EXTRA_TYPE yyextra_r;

    /* The rest are the same as the globals declared in the non-reentrant scanner. */
    FILE *yyin_r, *yyout_r;
    size_t yy_buffer_stack_top; /**< index of top of stack. */
    size_t yy_buffer_stack_max; /**< capacity of stack. */
    YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
    char yy_hold_char;
    int yy_n_chars;
    int yyleng_r;
    char *yy_c_buf_p;
    int yy_init;
    int yy_start;
    int yy_did_buffer_switch_on_eof;
    int yy_start_stack_ptr;
    int yy_start_stack_depth;
    int *yy_start_stack;
    yy_state_type yy_last_accepting_state;
    char* yy_last_accepting_cpos;

    int yylineno_r;
    int yy_flex_debug_r;

    char *yytext_r;
    int yy_more_flag;
    int yy_more_len;

    YYSTYPE * yylval_r;

    YYLTYPE * yylloc_r;

    }; /* end struct yyguts_t */

/* %if-c-only */

static int yy_init_globals (yyscan_t yyscanner );

/* %endif */

/* %if-reentrant */

    /* This must go here because YYSTYPE and YYLTYPE are included
     * from bison output in section 1.*/
    #    define yylval yyg->yylval_r
    
    #    define yylloc yyg->yylloc_r
    
int nft_lex_init (yyscan_t* scanner);

int nft_lex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);

/* %endif */

/* %endif End reentrant structures and macros. */

/* Accessor methods to globals.
   These are made visible to non-reentrant scanners for convenience. */

int nft_lex_destroy (yyscan_t yyscanner );

int nft_get_debug (yyscan_t yyscanner );

void nft_set_debug (int debug_flag ,yyscan_t yyscanner );

YY_EXTRA_TYPE nft_get_extra (yyscan_t yyscanner );

void nft_set_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );

FILE *nft_get_in (yyscan_t yyscanner );

void nft_set_in  (FILE * _in_str ,yyscan_t yyscanner );

FILE *nft_get_out (yyscan_t yyscanner );

void nft_set_out  (FILE * _out_str ,yyscan_t yyscanner );

			int nft_get_leng (yyscan_t yyscanner );

char *nft_get_text (yyscan_t yyscanner );

int nft_get_lineno (yyscan_t yyscanner );

void nft_set_lineno (int _line_number ,yyscan_t yyscanner );

int nft_get_column  (yyscan_t yyscanner );

void nft_set_column (int _column_no ,yyscan_t yyscanner );

/* %if-bison-bridge */

YYSTYPE * nft_get_lval (yyscan_t yyscanner );

void nft_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );

       YYLTYPE *nft_get_lloc (yyscan_t yyscanner );
    
        void nft_set_lloc (YYLTYPE * yylloc_param ,yyscan_t yyscanner );
    
/* %endif */

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int nft_wrap (yyscan_t yyscanner );
#else
extern int nft_wrap (yyscan_t yyscanner );
#endif
#endif

/* %not-for-header */

#ifndef YY_NO_UNPUT
    
#endif
/* %ok-for-header */

/* %endif */

#ifndef yytext_ptr
static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
#endif

#ifndef YY_NO_INPUT
/* %if-c-only Standard (non-C++) definition */
/* %not-for-header */

#ifdef __cplusplus
static int yyinput (yyscan_t yyscanner );
#else
static int input (yyscan_t yyscanner );
#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 = '*'; \
		size_t 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, 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 , yyscanner)
/* %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 nft_lex \
               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);

#define YY_DECL int nft_lex \
               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
/* %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 \
	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;
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

    yylval = yylval_param;

    yylloc = yylloc_param;

	if ( !yyg->yy_init )
		{
		yyg->yy_init = 1;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! yyg->yy_start )
			yyg->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 ) {
			nft_ensure_buffer_stack (yyscanner);
			YY_CURRENT_BUFFER_LVALUE =
				nft__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
		}

		nft__load_buffer_state(yyscanner );
		}

	{
/* %% [7.0] user's declarations go here */
#line 197 "scanner.l"


#line 2836 "scanner.c"

	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
		{
/* %% [8.0] yymore()-related code goes here */
		yy_cp = yyg->yy_c_buf_p;

		/* Support of yytext. */
		*yy_cp = yyg->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 = yyg->yy_start;
yy_match:
		do
			{
			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
			if ( yy_accept[yy_current_state] )
				{
				yyg->yy_last_accepting_state = yy_current_state;
				yyg->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 >= 1625 )
					yy_c = yy_meta[(unsigned int) yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
			++yy_cp;
			}
		while ( yy_base[yy_current_state] != 5224 );

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 = yyg->yy_last_accepting_cpos;
			yy_current_state = yyg->yy_last_accepting_state;
			yy_act = yy_accept[yy_current_state];
			}

		YY_DO_BEFORE_ACTION;

/* %% [11.0] code for yylineno update goes here */

		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
			{
			int yyl;
			for ( yyl = 0; yyl < yyleng; ++yyl )
				if ( yytext[yyl] == '\n' )
					
    do{ yylineno++;
        yycolumn=0;
    }while(0)
;
			}

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 < 345 )
				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
				         (long)yy_rule_linenum[yy_act], yytext );
			else if ( yy_act == 345 )
				fprintf( stderr, "--accepting default rule (\"%s\")\n",
				         yytext );
			else if ( yy_act == 346 )
				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 = yyg->yy_hold_char;
			yy_cp = yyg->yy_last_accepting_cpos;
			yy_current_state = yyg->yy_last_accepting_state;
			goto yy_find_action;

case 1:
YY_RULE_SETUP
#line 199 "scanner.l"
{ return EQ; }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 200 "scanner.l"
{ return EQ; }
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 201 "scanner.l"
{ return NEQ; }
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 202 "scanner.l"
{ return NEQ; }
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 203 "scanner.l"
{ return LTE; }
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 204 "scanner.l"
{ return LTE; }
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 205 "scanner.l"
{ return LT; }
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 206 "scanner.l"
{ return LT; }
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 207 "scanner.l"
{ return GTE; }
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 208 "scanner.l"
{ return GTE; }
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 209 "scanner.l"
{ return GT; }
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 210 "scanner.l"
{ return GT; }
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 211 "scanner.l"
{ return COMMA; }
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 212 "scanner.l"
{ return DOT; }
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 213 "scanner.l"
{ return COLON; }
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 214 "scanner.l"
{ return SEMICOLON; }
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 215 "scanner.l"
{ return '{'; }
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 216 "scanner.l"
{ return '}'; }
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 217 "scanner.l"
{ return '['; }
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 218 "scanner.l"
{ return ']'; }
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 219 "scanner.l"
{ return '('; }
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 220 "scanner.l"
{ return ')'; }
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 221 "scanner.l"
{ return LSHIFT; }
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 222 "scanner.l"
{ return LSHIFT; }
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 223 "scanner.l"
{ return RSHIFT; }
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 224 "scanner.l"
{ return RSHIFT; }
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 225 "scanner.l"
{ return CARET; }
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 226 "scanner.l"
{ return CARET; }
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 227 "scanner.l"
{ return AMPERSAND; }
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 228 "scanner.l"
{ return AMPERSAND; }
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 229 "scanner.l"
{ return '|'; }
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 230 "scanner.l"
{ return '|'; }
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 231 "scanner.l"
{ return NOT; }
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 232 "scanner.l"
{ return NOT; }
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 233 "scanner.l"
{ return SLASH; }
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 234 "scanner.l"
{ return DASH; }
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 235 "scanner.l"
{ return ASTERISK; }
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 236 "scanner.l"
{ return AT; }
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 237 "scanner.l"
{ return '$'; }
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 238 "scanner.l"
{ return '='; }
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 239 "scanner.l"
{ return VMAP; }
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 241 "scanner.l"
{ return PLUS; }
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 243 "scanner.l"
{ return INCLUDE; }
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 244 "scanner.l"
{ return DEFINE; }
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 245 "scanner.l"
{ return REDEFINE; }
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 246 "scanner.l"
{ return UNDEFINE; }
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 248 "scanner.l"
{ return DESCRIBE; }
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 250 "scanner.l"
{ return HOOK; }
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 251 "scanner.l"
{ return DEVICE; }
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 252 "scanner.l"
{ return DEVICES; }
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 253 "scanner.l"
{ return TABLE; }
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 254 "scanner.l"
{ return TABLES; }
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 255 "scanner.l"
{ return CHAIN; }
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 256 "scanner.l"
{ return CHAINS; }
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 257 "scanner.l"
{ return RULE; }
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 258 "scanner.l"
{ return RULES; }
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 259 "scanner.l"
{ return SETS; }
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 260 "scanner.l"
{ return SET; }
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 261 "scanner.l"
{ return ELEMENT; }
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 262 "scanner.l"
{ return MAP; }
	YY_BREAK
case 61:
YY_RULE_SETUP
#line 263 "scanner.l"
{ return MAPS; }
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 264 "scanner.l"
{ return FLOWTABLE; }
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 265 "scanner.l"
{ return HANDLE; }
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 266 "scanner.l"
{ return RULESET; }
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 267 "scanner.l"
{ return TRACE; }
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 269 "scanner.l"
{ return SOCKET; }
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 270 "scanner.l"
{ return TRANSPARENT;}
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 272 "scanner.l"
{ return TPROXY; }
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 274 "scanner.l"
{ return ACCEPT; }
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 275 "scanner.l"
{ return DROP; }
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 276 "scanner.l"
{ return CONTINUE; }
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 277 "scanner.l"
{ return JUMP; }
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 278 "scanner.l"
{ return GOTO; }
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 279 "scanner.l"
{ return RETURN; }
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 280 "scanner.l"
{ return TO; }
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 282 "scanner.l"
{ return INET; }
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 283 "scanner.l"
{ return NETDEV; }
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 285 "scanner.l"
{ return ADD; }
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 286 "scanner.l"
{ return REPLACE; }
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 287 "scanner.l"
{ return UPDATE; }
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 288 "scanner.l"
{ return CREATE; }
	YY_BREAK
case 82:
YY_RULE_SETUP
#line 289 "scanner.l"
{ return INSERT; }
	YY_BREAK
case 83:
YY_RULE_SETUP
#line 290 "scanner.l"
{ return DELETE; }
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 291 "scanner.l"
{ return GET; }
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 292 "scanner.l"
{ return LIST; }
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 293 "scanner.l"
{ return RESET; }
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 294 "scanner.l"
{ return FLUSH; }
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 295 "scanner.l"
{ return RENAME; }
	YY_BREAK
case 89:
YY_RULE_SETUP
#line 296 "scanner.l"
{ return IMPORT; }
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 297 "scanner.l"
{ return EXPORT; }
	YY_BREAK
case 91:
YY_RULE_SETUP
#line 298 "scanner.l"
{ return MONITOR; }
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 300 "scanner.l"
{ return POSITION; }
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 301 "scanner.l"
{ return INDEX; }
	YY_BREAK
case 94:
YY_RULE_SETUP
#line 302 "scanner.l"
{ return COMMENT; }
	YY_BREAK
case 95:
YY_RULE_SETUP
#line 304 "scanner.l"
{ return CONSTANT; }
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 305 "scanner.l"
{ return INTERVAL; }
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 306 "scanner.l"
{ return DYNAMIC; }
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 307 "scanner.l"
{ return AUTOMERGE; }
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 308 "scanner.l"
{ return TIMEOUT; }
	YY_BREAK
case 100:
YY_RULE_SETUP
#line 309 "scanner.l"
{ return GC_INTERVAL; }
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 310 "scanner.l"
{ return ELEMENTS; }
	YY_BREAK
case 102:
YY_RULE_SETUP
#line 311 "scanner.l"
{ return EXPIRES; }
	YY_BREAK
case 103:
YY_RULE_SETUP
#line 313 "scanner.l"
{ return POLICY; }
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 314 "scanner.l"
{ return SIZE; }
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 315 "scanner.l"
{ return PERFORMANCE; }
	YY_BREAK
case 106:
YY_RULE_SETUP
#line 316 "scanner.l"
{ return MEMORY; }
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 318 "scanner.l"
{ return FLOW; }
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 319 "scanner.l"
{ return OFFLOAD; }
	YY_BREAK
case 109:
YY_RULE_SETUP
#line 320 "scanner.l"
{ return METER; }
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 321 "scanner.l"
{ return METERS; }
	YY_BREAK
case 111:
YY_RULE_SETUP
#line 323 "scanner.l"
{ return FLOWTABLES; }
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 325 "scanner.l"
{ return COUNTER; }
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 326 "scanner.l"
{ return NAME; }
	YY_BREAK
case 114:
YY_RULE_SETUP
#line 327 "scanner.l"
{ return PACKETS; }
	YY_BREAK
case 115:
YY_RULE_SETUP
#line 328 "scanner.l"
{ return BYTES; }
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 329 "scanner.l"
{ return AVGPKT; }
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 331 "scanner.l"
{ return COUNTERS; }
	YY_BREAK
case 118:
YY_RULE_SETUP
#line 332 "scanner.l"
{ return QUOTAS; }
	YY_BREAK
case 119:
YY_RULE_SETUP
#line 333 "scanner.l"
{ return LIMITS; }
	YY_BREAK
case 120:
YY_RULE_SETUP
#line 334 "scanner.l"
{ return SYNPROXYS; }
	YY_BREAK
case 121:
YY_RULE_SETUP
#line 336 "scanner.l"
{ return LOG; }
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 337 "scanner.l"
{ return PREFIX; }
	YY_BREAK
case 123:
YY_RULE_SETUP
#line 338 "scanner.l"
{ return GROUP; }
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 339 "scanner.l"
{ return SNAPLEN; }
	YY_BREAK
case 125:
YY_RULE_SETUP
#line 340 "scanner.l"
{ return QUEUE_THRESHOLD; }
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 341 "scanner.l"
{ return LEVEL; }
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 343 "scanner.l"
{ return QUEUE;}
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 344 "scanner.l"
{ return QUEUENUM;}
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 345 "scanner.l"
{ return BYPASS;}
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 346 "scanner.l"
{ return FANOUT;}
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 348 "scanner.l"
{ return LIMIT; }
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 349 "scanner.l"
{ return RATE; }
	YY_BREAK
case 133:
YY_RULE_SETUP
#line 350 "scanner.l"
{ return BURST; }
	YY_BREAK
case 134:
YY_RULE_SETUP
#line 351 "scanner.l"
{ return UNTIL; }
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 352 "scanner.l"
{ return OVER; }
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 354 "scanner.l"
{ return QUOTA; }
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 355 "scanner.l"
{ return USED; }
	YY_BREAK
case 138:
YY_RULE_SETUP
#line 357 "scanner.l"
{ return NANOSECOND; }
	YY_BREAK
case 139:
YY_RULE_SETUP
#line 358 "scanner.l"
{ return MICROSECOND; }
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 359 "scanner.l"
{ return MILLISECOND; }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 360 "scanner.l"
{ return SECOND; }
	YY_BREAK
case 142:
YY_RULE_SETUP
#line 361 "scanner.l"
{ return MINUTE; }
	YY_BREAK
case 143:
YY_RULE_SETUP
#line 362 "scanner.l"
{ return HOUR; }
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 363 "scanner.l"
{ return DAY; }
	YY_BREAK
case 145:
YY_RULE_SETUP
#line 364 "scanner.l"
{ return WEEK; }
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 366 "scanner.l"
{ return _REJECT; }
	YY_BREAK
case 147:
YY_RULE_SETUP
#line 367 "scanner.l"
{ return WITH; }
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 368 "scanner.l"
{ return ICMPX; }
	YY_BREAK
case 149:
YY_RULE_SETUP
#line 370 "scanner.l"
{ return SNAT; }
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 371 "scanner.l"
{ return DNAT; }
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 372 "scanner.l"
{ return MASQUERADE; }
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 373 "scanner.l"
{ return REDIRECT; }
	YY_BREAK
case 153:
YY_RULE_SETUP
#line 374 "scanner.l"
{ return RANDOM; }
	YY_BREAK
case 154:
YY_RULE_SETUP
#line 375 "scanner.l"
{ return FULLY_RANDOM; }
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 376 "scanner.l"
{ return PERSISTENT; }
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 378 "scanner.l"
{ return LL_HDR; }
	YY_BREAK
case 157:
YY_RULE_SETUP
#line 379 "scanner.l"
{ return NETWORK_HDR; }
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 380 "scanner.l"
{ return TRANSPORT_HDR; }
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 382 "scanner.l"
{ return BRIDGE; }
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 384 "scanner.l"
{ return ETHER; }
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 385 "scanner.l"
{ return SADDR; }
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 386 "scanner.l"
{ return DADDR; }
	YY_BREAK
case 163:
YY_RULE_SETUP
#line 387 "scanner.l"
{ return TYPE; }
	YY_BREAK
case 164:
YY_RULE_SETUP
#line 389 "scanner.l"
{ return VLAN; }
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 390 "scanner.l"
{ return ID; }
	YY_BREAK
case 166:
YY_RULE_SETUP
#line 391 "scanner.l"
{ return CFI; }
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 392 "scanner.l"
{ return PCP; }
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 394 "scanner.l"
{ return ARP; }
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 395 "scanner.l"
{ return HTYPE; }
	YY_BREAK
case 170:
YY_RULE_SETUP
#line 396 "scanner.l"
{ return PTYPE; }
	YY_BREAK
case 171:
YY_RULE_SETUP
#line 397 "scanner.l"
{ return HLEN; }
	YY_BREAK
case 172:
YY_RULE_SETUP
#line 398 "scanner.l"
{ return PLEN; }
	YY_BREAK
case 173:
YY_RULE_SETUP
#line 399 "scanner.l"
{ return OPERATION; }
	YY_BREAK
case 174:
YY_RULE_SETUP
#line 401 "scanner.l"
{ return IP; }
	YY_BREAK
case 175:
YY_RULE_SETUP
#line 402 "scanner.l"
{ return HDRVERSION; }
	YY_BREAK
case 176:
YY_RULE_SETUP
#line 403 "scanner.l"
{ return HDRLENGTH; }
	YY_BREAK
case 177:
YY_RULE_SETUP
#line 404 "scanner.l"
{ return DSCP; }
	YY_BREAK
case 178:
YY_RULE_SETUP
#line 405 "scanner.l"
{ return ECN; }
	YY_BREAK
case 179:
YY_RULE_SETUP
#line 406 "scanner.l"
{ return LENGTH; }
	YY_BREAK
case 180:
YY_RULE_SETUP
#line 407 "scanner.l"
{ return FRAG_OFF; }
	YY_BREAK
case 181:
YY_RULE_SETUP
#line 408 "scanner.l"
{ return TTL; }
	YY_BREAK
case 182:
YY_RULE_SETUP
#line 409 "scanner.l"
{ return PROTOCOL; }
	YY_BREAK
case 183:
YY_RULE_SETUP
#line 410 "scanner.l"
{ return CHECKSUM; }
	YY_BREAK
case 184:
YY_RULE_SETUP
#line 412 "scanner.l"
{ return LSRR; }
	YY_BREAK
case 185:
YY_RULE_SETUP
#line 413 "scanner.l"
{ return RR; }
	YY_BREAK
case 186:
YY_RULE_SETUP
#line 414 "scanner.l"
{ return SSRR; }
	YY_BREAK
case 187:
YY_RULE_SETUP
#line 415 "scanner.l"
{ return RA; }
	YY_BREAK
case 188:
YY_RULE_SETUP
#line 417 "scanner.l"
{ return VALUE; }
	YY_BREAK
case 189:
YY_RULE_SETUP
#line 418 "scanner.l"
{ return PTR; }
	YY_BREAK
case 190:
YY_RULE_SETUP
#line 420 "scanner.l"
{ return ECHO; }
	YY_BREAK
case 191:
YY_RULE_SETUP
#line 421 "scanner.l"
{ return EOL; }
	YY_BREAK
case 192:
YY_RULE_SETUP
#line 422 "scanner.l"
{ return MAXSEG; }
	YY_BREAK
case 193:
YY_RULE_SETUP
#line 423 "scanner.l"
{ return NOOP; }
	YY_BREAK
case 194:
YY_RULE_SETUP
#line 424 "scanner.l"
{ return SACK; }
	YY_BREAK
case 195:
YY_RULE_SETUP
#line 425 "scanner.l"
{ return SACK0; }
	YY_BREAK
case 196:
YY_RULE_SETUP
#line 426 "scanner.l"
{ return SACK1; }
	YY_BREAK
case 197:
YY_RULE_SETUP
#line 427 "scanner.l"
{ return SACK2; }
	YY_BREAK
case 198:
YY_RULE_SETUP
#line 428 "scanner.l"
{ return SACK3; }
	YY_BREAK
case 199:
YY_RULE_SETUP
#line 429 "scanner.l"
{ return SACK_PERMITTED; }
	YY_BREAK
case 200:
YY_RULE_SETUP
#line 430 "scanner.l"
{ return TIMESTAMP; }
	YY_BREAK
case 201:
YY_RULE_SETUP
#line 431 "scanner.l"
{ return TIME; }
	YY_BREAK
case 202:
YY_RULE_SETUP
#line 433 "scanner.l"
{ return KIND; }
	YY_BREAK
case 203:
YY_RULE_SETUP
#line 434 "scanner.l"
{ return COUNT; }
	YY_BREAK
case 204:
YY_RULE_SETUP
#line 435 "scanner.l"
{ return LEFT; }
	YY_BREAK
case 205:
YY_RULE_SETUP
#line 436 "scanner.l"
{ return RIGHT; }
	YY_BREAK
case 206:
YY_RULE_SETUP
#line 437 "scanner.l"
{ return TSVAL; }
	YY_BREAK
case 207:
YY_RULE_SETUP
#line 438 "scanner.l"
{ return TSECR; }
	YY_BREAK
case 208:
YY_RULE_SETUP
#line 440 "scanner.l"
{ return ICMP; }
	YY_BREAK
case 209:
YY_RULE_SETUP
#line 441 "scanner.l"
{ return CODE; }
	YY_BREAK
case 210:
YY_RULE_SETUP
#line 442 "scanner.l"
{ return SEQUENCE; }
	YY_BREAK
case 211:
YY_RULE_SETUP
#line 443 "scanner.l"
{ return GATEWAY; }
	YY_BREAK
case 212:
YY_RULE_SETUP
#line 444 "scanner.l"
{ return MTU; }
	YY_BREAK
case 213:
YY_RULE_SETUP
#line 446 "scanner.l"
{ return IGMP; }
	YY_BREAK
case 214:
YY_RULE_SETUP
#line 447 "scanner.l"
{ return MRT; }
	YY_BREAK
case 215:
YY_RULE_SETUP
#line 449 "scanner.l"
{ return IP6; }
	YY_BREAK
case 216:
YY_RULE_SETUP
#line 450 "scanner.l"
{ return PRIORITY; }
	YY_BREAK
case 217:
YY_RULE_SETUP
#line 451 "scanner.l"
{ return FLOWLABEL; }
	YY_BREAK
case 218:
YY_RULE_SETUP
#line 452 "scanner.l"
{ return NEXTHDR; }
	YY_BREAK
case 219:
YY_RULE_SETUP
#line 453 "scanner.l"
{ return HOPLIMIT; }
	YY_BREAK
case 220:
YY_RULE_SETUP
#line 455 "scanner.l"
{ return ICMP6; }
	YY_BREAK
case 221:
YY_RULE_SETUP
#line 456 "scanner.l"
{ return PPTR; }
	YY_BREAK
case 222:
YY_RULE_SETUP
#line 457 "scanner.l"
{ return MAXDELAY; }
	YY_BREAK
case 223:
YY_RULE_SETUP
#line 459 "scanner.l"
{ return AH; }
	YY_BREAK
case 224:
YY_RULE_SETUP
#line 460 "scanner.l"
{ return RESERVED; }
	YY_BREAK
case 225:
YY_RULE_SETUP
#line 461 "scanner.l"
{ return SPI; }
	YY_BREAK
case 226:
YY_RULE_SETUP
#line 463 "scanner.l"
{ return ESP; }
	YY_BREAK
case 227:
YY_RULE_SETUP
#line 465 "scanner.l"
{ return COMP; }
	YY_BREAK
case 228:
YY_RULE_SETUP
#line 466 "scanner.l"
{ return FLAGS; }
	YY_BREAK
case 229:
YY_RULE_SETUP
#line 467 "scanner.l"
{ return CPI; }
	YY_BREAK
case 230:
YY_RULE_SETUP
#line 469 "scanner.l"
{ return UDP; }
	YY_BREAK
case 231:
YY_RULE_SETUP
#line 470 "scanner.l"
{ return UDPLITE; }
	YY_BREAK
case 232:
YY_RULE_SETUP
#line 471 "scanner.l"
{ return SPORT; }
	YY_BREAK
case 233:
YY_RULE_SETUP
#line 472 "scanner.l"
{ return DPORT; }
	YY_BREAK
case 234:
YY_RULE_SETUP
#line 474 "scanner.l"
{ return TCP; }
	YY_BREAK
case 235:
YY_RULE_SETUP
#line 475 "scanner.l"
{ return ACKSEQ; }
	YY_BREAK
case 236:
YY_RULE_SETUP
#line 476 "scanner.l"
{ return DOFF; }
	YY_BREAK
case 237:
YY_RULE_SETUP
#line 477 "scanner.l"
{ return WINDOW; }
	YY_BREAK
case 238:
YY_RULE_SETUP
#line 478 "scanner.l"
{ return URGPTR; }
	YY_BREAK
case 239:
YY_RULE_SETUP
#line 479 "scanner.l"
{ return OPTION; }
	YY_BREAK
case 240:
YY_RULE_SETUP
#line 481 "scanner.l"
{ return DCCP; }
	YY_BREAK
case 241:
YY_RULE_SETUP
#line 483 "scanner.l"
{ return SCTP; }
	YY_BREAK
case 242:
YY_RULE_SETUP
#line 484 "scanner.l"
{ return VTAG; }
	YY_BREAK
case 243:
YY_RULE_SETUP
#line 486 "scanner.l"
{ return RT; }
	YY_BREAK
case 244:
YY_RULE_SETUP
#line 487 "scanner.l"
{ return RT0; }
	YY_BREAK
case 245:
YY_RULE_SETUP
#line 488 "scanner.l"
{ return RT2; }
	YY_BREAK
case 246:
YY_RULE_SETUP
#line 489 "scanner.l"
{ return RT4; }
	YY_BREAK
case 247:
YY_RULE_SETUP
#line 490 "scanner.l"
{ return SEG_LEFT; }
	YY_BREAK
case 248:
YY_RULE_SETUP
#line 491 "scanner.l"
{ return ADDR; }
	YY_BREAK
case 249:
YY_RULE_SETUP
#line 492 "scanner.l"
{ return LAST_ENT; }
	YY_BREAK
case 250:
YY_RULE_SETUP
#line 493 "scanner.l"
{ return TAG; }
	YY_BREAK
case 251:
YY_RULE_SETUP
#line 494 "scanner.l"
{ return SID; }
	YY_BREAK
case 252:
YY_RULE_SETUP
#line 496 "scanner.l"
{ return HBH; }
	YY_BREAK
case 253:
YY_RULE_SETUP
#line 498 "scanner.l"
{ return FRAG; }
	YY_BREAK
case 254:
YY_RULE_SETUP
#line 499 "scanner.l"
{ return RESERVED2; }
	YY_BREAK
case 255:
YY_RULE_SETUP
#line 500 "scanner.l"
{ return MORE_FRAGMENTS; }
	YY_BREAK
case 256:
YY_RULE_SETUP
#line 502 "scanner.l"
{ return DST; }
	YY_BREAK
case 257:
YY_RULE_SETUP
#line 504 "scanner.l"
{ return MH; }
	YY_BREAK
case 258:
YY_RULE_SETUP
#line 506 "scanner.l"
{ return META; }
	YY_BREAK
case 259:
YY_RULE_SETUP
#line 507 "scanner.l"
{ return MARK; }
	YY_BREAK
case 260:
YY_RULE_SETUP
#line 508 "scanner.l"
{ return IIF; }
	YY_BREAK
case 261:
YY_RULE_SETUP
#line 509 "scanner.l"
{ return IIFNAME; }
	YY_BREAK
case 262:
YY_RULE_SETUP
#line 510 "scanner.l"
{ return IIFTYPE; }
	YY_BREAK
case 263:
YY_RULE_SETUP
#line 511 "scanner.l"
{ return OIF; }
	YY_BREAK
case 264:
YY_RULE_SETUP
#line 512 "scanner.l"
{ return OIFNAME; }
	YY_BREAK
case 265:
YY_RULE_SETUP
#line 513 "scanner.l"
{ return OIFTYPE; }
	YY_BREAK
case 266:
YY_RULE_SETUP
#line 514 "scanner.l"
{ return SKUID; }
	YY_BREAK
case 267:
YY_RULE_SETUP
#line 515 "scanner.l"
{ return SKGID; }
	YY_BREAK
case 268:
YY_RULE_SETUP
#line 516 "scanner.l"
{ return NFTRACE; }
	YY_BREAK
case 269:
YY_RULE_SETUP
#line 517 "scanner.l"
{ return RTCLASSID; }
	YY_BREAK
case 270:
YY_RULE_SETUP
#line 518 "scanner.l"
{ return IBRIPORT; }
	YY_BREAK
case 271:
YY_RULE_SETUP
#line 519 "scanner.l"
{ return IBRIDGENAME; }
	YY_BREAK
case 272:
YY_RULE_SETUP
#line 520 "scanner.l"
{ return OBRIPORT; }
	YY_BREAK
case 273:
YY_RULE_SETUP
#line 521 "scanner.l"
{ return OBRIDGENAME; }
	YY_BREAK
case 274:
YY_RULE_SETUP
#line 522 "scanner.l"
{ return PKTTYPE; }
	YY_BREAK
case 275:
YY_RULE_SETUP
#line 523 "scanner.l"
{ return CPU; }
	YY_BREAK
case 276:
YY_RULE_SETUP
#line 524 "scanner.l"
{ return IIFGROUP; }
	YY_BREAK
case 277:
YY_RULE_SETUP
#line 525 "scanner.l"
{ return OIFGROUP; }
	YY_BREAK
case 278:
YY_RULE_SETUP
#line 526 "scanner.l"
{ return CGROUP; }
	YY_BREAK
case 279:
YY_RULE_SETUP
#line 528 "scanner.l"
{ return CLASSID; }
	YY_BREAK
case 280:
YY_RULE_SETUP
#line 529 "scanner.l"
{ return NEXTHOP; }
	YY_BREAK
case 281:
YY_RULE_SETUP
#line 531 "scanner.l"
{ return CT; }
	YY_BREAK
case 282:
YY_RULE_SETUP
#line 532 "scanner.l"
{ return L3PROTOCOL; }
	YY_BREAK
case 283:
YY_RULE_SETUP
#line 533 "scanner.l"
{ return PROTO_SRC; }
	YY_BREAK
case 284:
YY_RULE_SETUP
#line 534 "scanner.l"
{ return PROTO_DST; }
	YY_BREAK
case 285:
YY_RULE_SETUP
#line 535 "scanner.l"
{ return ZONE; }
	YY_BREAK
case 286:
YY_RULE_SETUP
#line 536 "scanner.l"
{ return ORIGINAL; }
	YY_BREAK
case 287:
YY_RULE_SETUP
#line 537 "scanner.l"
{ return REPLY; }
	YY_BREAK
case 288:
YY_RULE_SETUP
#line 538 "scanner.l"
{ return DIRECTION; }
	YY_BREAK
case 289:
YY_RULE_SETUP
#line 539 "scanner.l"
{ return EVENT; }
	YY_BREAK
case 290:
YY_RULE_SETUP
#line 540 "scanner.l"
{ return EXPECTATION; }
	YY_BREAK
case 291:
YY_RULE_SETUP
#line 541 "scanner.l"
{ return EXPIRATION; }
	YY_BREAK
case 292:
YY_RULE_SETUP
#line 542 "scanner.l"
{ return HELPER; }
	YY_BREAK
case 293:
YY_RULE_SETUP
#line 543 "scanner.l"
{ return HELPERS; }
	YY_BREAK
case 294:
YY_RULE_SETUP
#line 544 "scanner.l"
{ return LABEL; }
	YY_BREAK
case 295:
YY_RULE_SETUP
#line 545 "scanner.l"
{ return STATE; }
	YY_BREAK
case 296:
YY_RULE_SETUP
#line 546 "scanner.l"
{ return STATUS; }
	YY_BREAK
case 297:
YY_RULE_SETUP
#line 548 "scanner.l"
{ return NUMGEN; }
	YY_BREAK
case 298:
YY_RULE_SETUP
#line 549 "scanner.l"
{ return INC; }
	YY_BREAK
case 299:
YY_RULE_SETUP
#line 550 "scanner.l"
{ return MOD; }
	YY_BREAK
case 300:
YY_RULE_SETUP
#line 551 "scanner.l"
{ return OFFSET; }
	YY_BREAK
case 301:
YY_RULE_SETUP
#line 553 "scanner.l"
{ return JHASH; }
	YY_BREAK
case 302:
YY_RULE_SETUP
#line 554 "scanner.l"
{ return SYMHASH; }
	YY_BREAK
case 303:
YY_RULE_SETUP
#line 555 "scanner.l"
{ return SEED; }
	YY_BREAK
case 304:
YY_RULE_SETUP
#line 557 "scanner.l"
{ return DUP; }
	YY_BREAK
case 305:
YY_RULE_SETUP
#line 558 "scanner.l"
{ return FWD; }
	YY_BREAK
case 306:
YY_RULE_SETUP
#line 560 "scanner.l"
{ return FIB; }
	YY_BREAK
case 307:
YY_RULE_SETUP
#line 562 "scanner.l"
{ return OSF; }
	YY_BREAK
case 308:
YY_RULE_SETUP
#line 564 "scanner.l"
{ return SYNPROXY; }
	YY_BREAK
case 309:
YY_RULE_SETUP
#line 565 "scanner.l"
{ return MSS; }
	YY_BREAK
case 310:
YY_RULE_SETUP
#line 566 "scanner.l"
{ return WSCALE; }
	YY_BREAK
case 311:
YY_RULE_SETUP
#line 567 "scanner.l"
{ return SACKPERM; }
	YY_BREAK
case 312:
YY_RULE_SETUP
#line 569 "scanner.l"
{ return NOTRACK; }
	YY_BREAK
case 313:
YY_RULE_SETUP
#line 571 "scanner.l"
{ return OPTIONS; }
	YY_BREAK
case 314:
YY_RULE_SETUP
#line 572 "scanner.l"
{ return ALL; }
	YY_BREAK
case 315:
YY_RULE_SETUP
#line 574 "scanner.l"
{ return XML; }
	YY_BREAK
case 316:
YY_RULE_SETUP
#line 575 "scanner.l"
{ return JSON; }
	YY_BREAK
case 317:
YY_RULE_SETUP
#line 576 "scanner.l"
{ return VM; }
	YY_BREAK
case 318:
YY_RULE_SETUP
#line 578 "scanner.l"
{ return EXISTS; }
	YY_BREAK
case 319:
YY_RULE_SETUP
#line 579 "scanner.l"
{ return MISSING; }
	YY_BREAK
case 320:
YY_RULE_SETUP
#line 581 "scanner.l"
{ return EXTHDR; }
	YY_BREAK
case 321:
YY_RULE_SETUP
#line 583 "scanner.l"
{ return IPSEC; }
	YY_BREAK
case 322:
YY_RULE_SETUP
#line 584 "scanner.l"
{ return MODE; }
	YY_BREAK
case 323:
YY_RULE_SETUP
#line 585 "scanner.l"
{ return REQID; }
	YY_BREAK
case 324:
YY_RULE_SETUP
#line 586 "scanner.l"
{ return SPNUM; }
	YY_BREAK
case 325:
YY_RULE_SETUP
#line 587 "scanner.l"
{ return TRANSPORT; }
	YY_BREAK
case 326:
YY_RULE_SETUP
#line 588 "scanner.l"
{ return TUNNEL; }
	YY_BREAK
case 327:
YY_RULE_SETUP
#line 590 "scanner.l"
{ return IN; }
	YY_BREAK
case 328:
YY_RULE_SETUP
#line 591 "scanner.l"
{ return OUT; }
	YY_BREAK
case 329:
YY_RULE_SETUP
#line 593 "scanner.l"
{ return SECMARK; }
	YY_BREAK
case 330:
YY_RULE_SETUP
#line 594 "scanner.l"
{ return SECMARKS; }
	YY_BREAK
case 331:
YY_RULE_SETUP
#line 596 "scanner.l"
{
				yylval->string = xstrdup(yytext);
				return STRING;
			}
	YY_BREAK
case 332:
YY_RULE_SETUP
#line 601 "scanner.l"
{
				yytext[yyleng - 1] = '\0';
				yylval->string = xstrdup(yytext + 1);
				return STRING;
			}
	YY_BREAK
case 333:
YY_RULE_SETUP
#line 607 "scanner.l"
{
				yylval->string = xstrdup(yytext);
				return STRING;
			}
	YY_BREAK
case 334:
YY_RULE_SETUP
#line 612 "scanner.l"
{
				errno = 0;
				yylval->val = strtoull(yytext, NULL, 0);
				if (errno != 0) {
					yylval->string = xstrdup(yytext);
					return STRING;
				}
				return NUM;
			}
	YY_BREAK
case 335:
/* rule 335 can match eol */
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
YY_LINENO_REWIND_TO(yy_cp - 1);
yyg->yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 622 "scanner.l"
{
				yylval->string = xstrdup(yytext);
				return STRING;
			}
	YY_BREAK
case 336:
/* rule 336 can match eol */
YY_RULE_SETUP
#line 627 "scanner.l"
{
				yytext[yyleng - 1] = '\0';
				yylval->string = xstrdup(yytext + 1);
				return QUOTED_STRING;
			}
	YY_BREAK
case 337:
YY_RULE_SETUP
#line 633 "scanner.l"
{
				yylval->string = xstrdup(yytext);
				return ASTERISK_STRING;
			}
	YY_BREAK
case 338:
YY_RULE_SETUP
#line 638 "scanner.l"
{
				yylval->string = xstrdup(yytext);
				return STRING;
			}
	YY_BREAK
case 339:
/* rule 339 can match eol */
YY_RULE_SETUP
#line 643 "scanner.l"
{
				reset_pos(nft_get_extra(yyscanner), yylloc);
			}
	YY_BREAK
case 340:
/* rule 340 can match eol */
YY_RULE_SETUP
#line 647 "scanner.l"
{
				reset_pos(nft_get_extra(yyscanner), yylloc);
				return NEWLINE;
			}
	YY_BREAK
case 341:
YY_RULE_SETUP
#line 652 "scanner.l"

	YY_BREAK
case 342:
YY_RULE_SETUP
#line 653 "scanner.l"

	YY_BREAK
case 343:
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
yyg->yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 654 "scanner.l"

	YY_BREAK
case YY_STATE_EOF(INITIAL):
#line 656 "scanner.l"
{
				update_pos(nft_get_extra(yyscanner), yylloc, 1);
				scanner_pop_buffer(yyscanner);
				if (YY_CURRENT_BUFFER == NULL)
					return TOKEN_EOF;
			}
	YY_BREAK
case 344:
YY_RULE_SETUP
#line 663 "scanner.l"
{ return JUNK; }
	YY_BREAK
case 345:
YY_RULE_SETUP
#line 665 "scanner.l"
YY_FATAL_ERROR( "flex scanner jammed" );
	YY_BREAK
#line 4709 "scanner.c"

	case YY_END_OF_BUFFER:
		{
		/* Amount of text matched not including the EOB char. */
		int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = yyg->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
			 * nft_lex().  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.
			 */
			yyg->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 ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state( yyscanner );

			/* 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 , yyscanner);

			yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++yyg->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 = yyg->yy_c_buf_p;
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer( yyscanner ) )
			{
			case EOB_ACT_END_OF_FILE:
				{
				yyg->yy_did_buffer_switch_on_eof = 0;

				if ( nft_wrap(yyscanner ) )
					{
					/* 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.
					 */
					yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! yyg->yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				yyg->yy_c_buf_p =
					yyg->yytext_ptr + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state( yyscanner );

				yy_cp = yyg->yy_c_buf_p;
				yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
				goto yy_match;

			case EOB_ACT_LAST_MATCH:
				yyg->yy_c_buf_p =
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];

				yy_current_state = yy_get_previous_state( yyscanner );

				yy_cp = yyg->yy_c_buf_p;
				yy_bp = yyg->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 nft_lex */
/* %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 (yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	char *source = yyg->yytext_ptr;
	int number_to_move, i;
	int ret_val;

	if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->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 ( yyg->yy_c_buf_p - yyg->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) (yyg->yy_c_buf_p - yyg->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 = yyg->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) (yyg->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. */
					nft_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
				}
			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" );

			yyg->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]),
			yyg->yy_n_chars, num_to_read );

		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
		}

	if ( yyg->yy_n_chars == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			nft_restart(yyin  ,yyscanner);
			}

		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 ((yyg->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 = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) nft_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
	}

	yyg->yy_n_chars += number_to_move;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;

	yyg->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 (yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
	yy_state_type yy_current_state;
	char *yy_cp;
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

/* %% [15.0] code to get the start state into yy_current_state goes here */
	yy_current_state = yyg->yy_start;

	for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->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] )
			{
			yyg->yy_last_accepting_state = yy_current_state;
			yyg->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 >= 1625 )
				yy_c = yy_meta[(unsigned int) yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) 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 , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
	int yy_is_jam;
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
/* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
	char *yy_cp = yyg->yy_c_buf_p;

	YY_CHAR yy_c = 1;
	if ( yy_accept[yy_current_state] )
		{
		yyg->yy_last_accepting_state = yy_current_state;
		yyg->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 >= 1625 )
			yy_c = yy_meta[(unsigned int) yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
	yy_is_jam = (yy_current_state == 1624);

	(void)yyg;
	return yy_is_jam ? 0 : yy_current_state;
}

#ifndef YY_NO_UNPUT
/* %if-c-only */

/* %endif */
#endif

/* %if-c-only */
#ifndef YY_NO_INPUT
#ifdef __cplusplus
    static int yyinput (yyscan_t yyscanner)
#else
    static int input  (yyscan_t yyscanner)
#endif

/* %endif */
/* %if-c++-only */
/* %endif */
{
	int c;
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

	*yyg->yy_c_buf_p = yyg->yy_hold_char;

	if ( *yyg->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 ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
			/* This was really a NUL. */
			*yyg->yy_c_buf_p = '\0';

		else
			{ /* need more input */
			int offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
			++yyg->yy_c_buf_p;

			switch ( yy_get_next_buffer( yyscanner ) )
				{
				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. */
					nft_restart(yyin ,yyscanner);

					/*FALLTHROUGH*/

				case EOB_ACT_END_OF_FILE:
					{
					if ( nft_wrap(yyscanner ) )
						return 0;

					if ( ! yyg->yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
#ifdef __cplusplus
					return yyinput(yyscanner);
#else
					return input(yyscanner);
#endif
					}

				case EOB_ACT_CONTINUE_SCAN:
					yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
					break;
				}
			}
		}

	c = *(unsigned char *) yyg->yy_c_buf_p;	/* cast for 8-bit char's */
	*yyg->yy_c_buf_p = '\0';	/* preserve yytext */
	yyg->yy_hold_char = *++yyg->yy_c_buf_p;

/* %% [19.0] update BOL and yylineno */
	if ( c == '\n' )
		
    do{ yylineno++;
        yycolumn=0;
    }while(0)
;

	return c;
}
/* %if-c-only */
#endif	/* ifndef YY_NO_INPUT */
/* %endif */

/** Immediately switch to a different input stream.
 * @param input_file A readable stream.
 * @param yyscanner The scanner object.
 * @note This function does not reset the start condition to @c INITIAL .
 */
/* %if-c-only */
    void nft_restart  (FILE * input_file , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

	if ( ! YY_CURRENT_BUFFER ){
        nft_ensure_buffer_stack (yyscanner);
		YY_CURRENT_BUFFER_LVALUE =
            nft__create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
	}

	nft__init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
	nft__load_buffer_state(yyscanner );
}

/* %if-c++-only */
/* %endif */

/** Switch to a different input buffer.
 * @param new_buffer The new input buffer.
 * @param yyscanner The scanner object.
 */
/* %if-c-only */
    void nft__switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

	/* TODO. We should be able to replace this entire function body
	 * with
	 *		nft_pop_buffer_state();
	 *		nft_push_buffer_state(new_buffer);
     */
	nft_ensure_buffer_stack (yyscanner);
	if ( YY_CURRENT_BUFFER == new_buffer )
		return;

	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*yyg->yy_c_buf_p = yyg->yy_hold_char;
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
		}

	YY_CURRENT_BUFFER_LVALUE = new_buffer;
	nft__load_buffer_state(yyscanner );

	/* We don't actually know whether we did this switch during
	 * EOF (nft_wrap()) processing, but the only time this flag
	 * is looked at is after nft_wrap() is called, so it's safe
	 * to go ahead and always set it.
	 */
	yyg->yy_did_buffer_switch_on_eof = 1;
}

/* %if-c-only */
static void nft__load_buffer_state  (yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
	yyg->yytext_ptr = yyg->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 */
	yyg->yy_hold_char = *yyg->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.
 * @param yyscanner The scanner object.
 * @return the allocated buffer state.
 */
/* %if-c-only */
    YY_BUFFER_STATE nft__create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
	YY_BUFFER_STATE b;
    
	b = (YY_BUFFER_STATE) nft_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in nft__create_buffer()" );

	b->yy_buf_size = (yy_size_t)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 *) nft_alloc(b->yy_buf_size + 2 ,yyscanner );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in nft__create_buffer()" );

	b->yy_is_our_buffer = 1;

	nft__init_buffer(b,file ,yyscanner);

	return b;
}

/* %if-c++-only */
/* %endif */

/** Destroy the buffer.
 * @param b a buffer created with nft__create_buffer()
 * @param yyscanner The scanner object.
 */
/* %if-c-only */
    void nft__delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

	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 )
		nft_free((void *) b->yy_ch_buf ,yyscanner );

	nft_free((void *) b ,yyscanner );
}

/* Initializes or reinitializes a buffer.
 * This function is sometimes called more than once on the same buffer,
 * such as during a nft_restart() or at EOF.
 */
/* %if-c-only */
    static void nft__init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */

{
	int oerrno = errno;
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

	nft__flush_buffer(b ,yyscanner);

/* %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 nft__init_buffer was _probably_
     * called from nft_restart() 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 = file ? (isatty( fileno(file) ) > 0) : 0;
    
/* %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.
 * @param yyscanner The scanner object.
 */
/* %if-c-only */
    void nft__flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	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 )
		nft__load_buffer_state(yyscanner );
}

/* %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.
 *  @param yyscanner The scanner object.
 */
/* %if-c-only */
void nft_push_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	if (new_buffer == NULL)
		return;

	nft_ensure_buffer_stack(yyscanner);

	/* This block is copied from nft__switch_to_buffer. */
	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*yyg->yy_c_buf_p = yyg->yy_hold_char;
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
		}

	/* Only push if top exists. Otherwise, replace top. */
	if (YY_CURRENT_BUFFER)
		yyg->yy_buffer_stack_top++;
	YY_CURRENT_BUFFER_LVALUE = new_buffer;

	/* copied from nft__switch_to_buffer. */
	nft__load_buffer_state(yyscanner );
	yyg->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.
 *  @param yyscanner The scanner object.
 */
/* %if-c-only */
void nft_pop_buffer_state (yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	if (!YY_CURRENT_BUFFER)
		return;

	nft__delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
	YY_CURRENT_BUFFER_LVALUE = NULL;
	if (yyg->yy_buffer_stack_top > 0)
		--yyg->yy_buffer_stack_top;

	if (YY_CURRENT_BUFFER) {
		nft__load_buffer_state(yyscanner );
		yyg->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 nft_ensure_buffer_stack (yyscan_t yyscanner)
/* %endif */
/* %if-c++-only */
/* %endif */
{
	int num_to_alloc;
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

	if (!yyg->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... */
		yyg->yy_buffer_stack = (struct yy_buffer_state**)nft_alloc
								(num_to_alloc * sizeof(struct yy_buffer_state*)
								, yyscanner);
		if ( ! yyg->yy_buffer_stack )
			YY_FATAL_ERROR( "out of dynamic memory in nft_ensure_buffer_stack()" );

		memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));

		yyg->yy_buffer_stack_max = num_to_alloc;
		yyg->yy_buffer_stack_top = 0;
		return;
	}

	if (yyg->yy_buffer_stack_top >= (yyg->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 = yyg->yy_buffer_stack_max + grow_size;
		yyg->yy_buffer_stack = (struct yy_buffer_state**)nft_realloc
								(yyg->yy_buffer_stack,
								num_to_alloc * sizeof(struct yy_buffer_state*)
								, yyscanner);
		if ( ! yyg->yy_buffer_stack )
			YY_FATAL_ERROR( "out of dynamic memory in nft_ensure_buffer_stack()" );

		/* zero only the new slots.*/
		memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
		yyg->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
 * @param yyscanner The scanner object.
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE nft__scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
{
	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) nft_alloc(sizeof( struct yy_buffer_state ) ,yyscanner );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in nft__scan_buffer()" );

	b->yy_buf_size = 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;

	nft__switch_to_buffer(b ,yyscanner );

	return b;
}
/* %endif */

/* %if-c-only */
/** Setup the input buffer state to scan a string. The next call to nft_lex() will
 * scan from a @e copy of @a str.
 * @param yystr a NUL-terminated string to scan
 * @param yyscanner The scanner object.
 * @return the newly allocated buffer state object.
 * @note If you want to scan bytes that may contain NUL values, then use
 *       nft__scan_bytes() instead.
 */
YY_BUFFER_STATE nft__scan_string (yyconst char * yystr , yyscan_t yyscanner)
{
    
	return nft__scan_bytes(yystr,(int) strlen(yystr) ,yyscanner);
}
/* %endif */

/* %if-c-only */
/** Setup the input buffer state to scan the given bytes. The next call to nft_lex() 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.
 * @param yyscanner The scanner object.
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE nft__scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
{
	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 *) nft_alloc(n ,yyscanner );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in nft__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 = nft__scan_buffer(buf,n ,yyscanner);
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in nft__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 (yyconst char* msg , yyscan_t yyscanner)
{
	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	(void)yyg;
	(void) 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] = yyg->yy_hold_char; \
		yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
		yyg->yy_hold_char = *yyg->yy_c_buf_p; \
		*yyg->yy_c_buf_p = '\0'; \
		yyleng = yyless_macro_arg; \
		} \
	while ( 0 )

/* Accessor  methods (get/set functions) to struct members. */

/* %if-c-only */
/* %if-reentrant */

/** Get the user-defined data for this scanner.
 * @param yyscanner The scanner object.
 */
YY_EXTRA_TYPE nft_get_extra  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yyextra;
}

/* %endif */

/** Get the current line number.
 * @param yyscanner The scanner object.
 */
int nft_get_lineno  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

        if (! YY_CURRENT_BUFFER)
            return 0;
    
    return yylineno;
}

/** Get the current column number.
 * @param yyscanner The scanner object.
 */
int nft_get_column  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

        if (! YY_CURRENT_BUFFER)
            return 0;
    
    return yycolumn;
}

/** Get the input stream.
 * @param yyscanner The scanner object.
 */
FILE *nft_get_in  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yyin;
}

/** Get the output stream.
 * @param yyscanner The scanner object.
 */
FILE *nft_get_out  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yyout;
}

/** Get the length of the current token.
 * @param yyscanner The scanner object.
 */
int nft_get_leng  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yyleng;
}

/** Get the current token.
 * @param yyscanner The scanner object.
 */

char *nft_get_text  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yytext;
}

/* %if-reentrant */

/** Set the user-defined data. This data is never touched by the scanner.
 * @param user_defined The data to be associated with this scanner.
 * @param yyscanner The scanner object.
 */
void nft_set_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    yyextra = user_defined ;
}

/* %endif */

/** Set the current line number.
 * @param _line_number line number
 * @param yyscanner The scanner object.
 */
void nft_set_lineno (int  _line_number , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

        /* lineno is only valid if an input buffer exists. */
        if (! YY_CURRENT_BUFFER )
           YY_FATAL_ERROR( "nft_set_lineno called with no buffer" );
    
    yylineno = _line_number;
}

/** Set the current column.
 * @param _column_no column number
 * @param yyscanner The scanner object.
 */
void nft_set_column (int  _column_no , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

        /* column is only valid if an input buffer exists. */
        if (! YY_CURRENT_BUFFER )
           YY_FATAL_ERROR( "nft_set_column called with no buffer" );
    
    yycolumn = _column_no;
}

/** Set the input stream. This does not discard the current
 * input buffer.
 * @param _in_str A readable stream.
 * @param yyscanner The scanner object.
 * @see nft__switch_to_buffer
 */
void nft_set_in (FILE *  _in_str , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    yyin = _in_str ;
}

void nft_set_out (FILE *  _out_str , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    yyout = _out_str ;
}

int nft_get_debug  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yy_flex_debug;
}

void nft_set_debug (int  _bdebug , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    yy_flex_debug = _bdebug ;
}

/* %endif */

/* %if-reentrant */
/* Accessor methods for yylval and yylloc */

/* %if-bison-bridge */

YYSTYPE * nft_get_lval  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yylval;
}

void nft_set_lval (YYSTYPE *  yylval_param , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    yylval = yylval_param;
}

YYLTYPE *nft_get_lloc  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    return yylloc;
}
    
void nft_set_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    yylloc = yylloc_param;
}
    
/* %endif */

/* User-visible API */

/* nft_lex_init is special because it creates the scanner itself, so it is
 * the ONLY reentrant function that doesn't take the scanner as the last argument.
 * That's why we explicitly handle the declaration, instead of using our macros.
 */

int nft_lex_init(yyscan_t* ptr_yy_globals)

{
    if (ptr_yy_globals == NULL){
        errno = EINVAL;
        return 1;
    }

    *ptr_yy_globals = (yyscan_t) nft_alloc ( sizeof( struct yyguts_t ), NULL );

    if (*ptr_yy_globals == NULL){
        errno = ENOMEM;
        return 1;
    }

    /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));

    return yy_init_globals ( *ptr_yy_globals );
}

/* nft_lex_init_extra has the same functionality as nft_lex_init, but follows the
 * convention of taking the scanner as the last argument. Note however, that
 * this is a *pointer* to a scanner, as it will be allocated by this call (and
 * is the reason, too, why this function also must handle its own declaration).
 * The user defined value in the first argument will be available to nft_alloc in
 * the yyextra field.
 */

int nft_lex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )

{
    struct yyguts_t dummy_yyguts;

    nft_set_extra (yy_user_defined, &dummy_yyguts);

    if (ptr_yy_globals == NULL){
        errno = EINVAL;
        return 1;
    }

    *ptr_yy_globals = (yyscan_t) nft_alloc ( sizeof( struct yyguts_t ), &dummy_yyguts );

    if (*ptr_yy_globals == NULL){
        errno = ENOMEM;
        return 1;
    }

    /* By setting to 0xAA, we expose bugs in
    yy_init_globals. Leave at 0x00 for releases. */
    memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));

    nft_set_extra (yy_user_defined, *ptr_yy_globals);

    return yy_init_globals ( *ptr_yy_globals );
}

/* %endif if-c-only */

/* %if-c-only */
static int yy_init_globals (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
    /* Initialization is the same as for the non-reentrant scanner.
     * This function is called from nft_lex_destroy(), so don't allocate here.
     */

    yyg->yy_buffer_stack = NULL;
    yyg->yy_buffer_stack_top = 0;
    yyg->yy_buffer_stack_max = 0;
    yyg->yy_c_buf_p = NULL;
    yyg->yy_init = 0;
    yyg->yy_start = 0;

    yyg->yy_start_stack_ptr = 0;
    yyg->yy_start_stack_depth = 0;
    yyg->yy_start_stack =  NULL;

/* 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
     * nft_lex_init()
     */
    return 0;
}
/* %endif */

/* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
/* nft_lex_destroy is for both reentrant and non-reentrant scanners. */
int nft_lex_destroy  (yyscan_t yyscanner)
{
    struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;

    /* Pop the buffer stack, destroying each element. */
	while(YY_CURRENT_BUFFER){
		nft__delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
		YY_CURRENT_BUFFER_LVALUE = NULL;
		nft_pop_buffer_state(yyscanner);
	}

	/* Destroy the stack itself. */
	nft_free(yyg->yy_buffer_stack ,yyscanner);
	yyg->yy_buffer_stack = NULL;

    /* Destroy the start condition stack. */
        nft_free(yyg->yy_start_stack ,yyscanner );
        yyg->yy_start_stack = NULL;

    /* Reset the globals. This is important in a non-reentrant scanner so the next time
     * nft_lex() is called, initialization will occur. */
    yy_init_globals( yyscanner);

/* %if-reentrant */
    /* Destroy the main struct (reentrant only). */
    nft_free ( yyscanner , yyscanner );
    yyscanner = NULL;
/* %endif */
    return 0;
}
/* %endif */

/*
 * Internal utility routines.
 */

#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
{
	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	(void)yyg;

	int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
}
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
{
	int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
}
#endif

void *nft_alloc (yy_size_t  size , yyscan_t yyscanner)
{
	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	(void)yyg;
	return malloc(size);
}

void *nft_realloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
{
	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	(void)yyg;

	/* 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 nft_free (void * ptr , yyscan_t yyscanner)
{
	struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
	(void)yyg;
	free( (char *) ptr );	/* see nft_realloc() 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 665 "scanner.l"



static void scanner_pop_buffer(yyscan_t scanner)
{
	struct parser_state *state = nft_get_extra(scanner);

	nft_pop_buffer_state(scanner);
	state->indesc = state->indescs[--state->indesc_idx];
}

static void scanner_push_file(struct nft_ctx *nft, void *scanner,
			      const char *filename, const struct location *loc)
{
	struct parser_state *state = nft_get_extra(scanner);
	struct input_descriptor *indesc;
	YY_BUFFER_STATE b;

	b = nft__create_buffer(nft->f[state->indesc_idx],YY_BUF_SIZE,scanner);
	nft_push_buffer_state(b,scanner);

	indesc = xzalloc(sizeof(struct input_descriptor));

	if (loc != NULL)
		indesc->location = *loc;
	indesc->type	= INDESC_FILE;
	indesc->name	= xstrdup(filename);
	init_pos(indesc);

	state->indescs[state->indesc_idx] = indesc;
	state->indesc = state->indescs[state->indesc_idx++];
	list_add_tail(&indesc->list, &state->indesc_list);
}

static int include_file(struct nft_ctx *nft, void *scanner,
			const char *filename, const struct location *loc)
{
	struct parser_state *state = nft_get_extra(scanner);
	struct error_record *erec;
	FILE *f;

	if (state->indesc_idx == MAX_INCLUDE_DEPTH) {
		erec = error(loc, "Include nested too deeply, max %u levels",
			     MAX_INCLUDE_DEPTH);
		goto err;
	}

	f = fopen(filename, "r");
	if (f == NULL) {
		erec = error(loc, "Could not open file \"%s\": %s\n",
			     filename, strerror(errno));
		goto err;
	}
	nft->f[state->indesc_idx] = f;
	scanner_push_file(nft, scanner, filename, loc);
	return 0;
err:
	erec_queue(erec, state->msgs);
	return -1;
}

static int include_glob(struct nft_ctx *nft, void *scanner, const char *pattern,
			const struct location *loc)
{
	struct parser_state *state = nft_get_extra(scanner);
	struct error_record *erec = NULL;
	bool wildcard = false;
	glob_t glob_data;
	unsigned int i;
	int flags = 0;
	int ret;
	char *p;

	/* This function can return four meaningful values:
	 *
	 *  -1 means that there was an error.
	 *   0 means that a single non-wildcard match was done.
	 *   1 means that there are no wildcards in the pattern and the
	 *     search can continue.
	 *   2 means that there are wildcards in the pattern and the search
	 *     can continue.
	 *
	 * The diffrence is needed, because there is a semantic difference
	 * between patterns with wildcards and no wildcards. Not finding a
	 * non-wildcard file is an error but not finding any matches for a
	 * wildcard pattern is not.
	 */

	/* There shouldn't be a need to use escape characters in include paths.
	 */
	flags |= GLOB_NOESCAPE;

	/* Mark directories so we can filter them out (also links). */
	flags |= GLOB_MARK;

	/* If there is no match, glob() doesn't set GLOB_MAGCHAR even if there
	 * are wildcard characters in the pattern. We need to look for (luckily
	 * well-known and not likely to change) magic characters ourselves. In a
	 * perfect world, we could use glob() itself to figure out if there are
	 * wildcards in the pattern.
	 */
	p = (char *)pattern;
	while (*p) {
		if (*p == '*' || *p == '?' || *p == '[') {
			wildcard = true;
			break;
		}
		p++;
	}

	ret = glob(pattern, flags, NULL, &glob_data);
	if (ret == 0) {
		char *path;
		int len;

		/* reverse alphabetical order due to stack */
		for (i = glob_data.gl_pathc; i > 0; i--) {

			path = glob_data.gl_pathv[i-1];

			/* ignore directories */
			len = strlen(path);
			if (len == 0 || path[len - 1] == '/')
				continue;

			ret = include_file(nft, scanner, path, loc);
			if (ret != 0)
				goto err;
		}

		globfree(&glob_data);

		/* If no wildcards and we found the file, stop the search (with
		 * 0). In case of wildcards we need to still continue the
		 * search, because other matches might be in other include
		 * directories. We handled the case with a non-wildcard pattern
		 * and no matches already before.
		 */
		 return wildcard ? 2 : 0;
	} else if (ret == GLOB_NOMATCH) {
		globfree(&glob_data);

		/* We need to tell the caller whether wildcards were used in
		 * case of no match, because the semantics for handling the
		 * cases are different.
		 */
		return wildcard ? 2 : 1;
	}

	erec = error(loc, "Failed to glob the pattern %s", pattern);

	/* intentional fall through */
err:
	if (erec)
		erec_queue(erec, state->msgs);
	globfree(&glob_data);
	return -1;
}

int scanner_read_file(struct nft_ctx *nft, const char *filename,
		      const struct location *loc)
{
	return include_file(nft, nft->scanner, filename, loc);
}

static bool search_in_include_path(const char *filename)
{
	return (strncmp(filename, "./", strlen("./")) != 0 &&
		strncmp(filename, "../", strlen("../")) != 0 &&
		filename[0] != '/');
}

int scanner_include_file(struct nft_ctx *nft, void *scanner,
			 const char *filename, const struct location *loc)
{
	struct parser_state *state = nft_get_extra(scanner);
	struct error_record *erec;
	char buf[PATH_MAX];
	unsigned int i;
	int ret = -1;

	if (search_in_include_path(filename)) {
		for (i = 0; i < nft->num_include_paths; i++) {
			ret = snprintf(buf, sizeof(buf), "%s/%s",
				       nft->include_paths[i], filename);
			if (ret < 0 || ret >= PATH_MAX) {
				erec = error(loc, "Too long file path \"%s/%s\"\n",
					     nft->include_paths[i], filename);
				erec_queue(erec, state->msgs);
				return -1;
			}

			ret = include_glob(nft, scanner, buf, loc);

			/* error was already handled */
			if (ret == -1)
				return -1;
			/* no wildcards and file was processed: break early. */
			if (ret == 0)
				return 0;

			/* else 1 (no wildcards) or 2 (wildcards): keep
			 * searching.
			 */
		}
	} else {
		/* an absolute path (starts with '/') */
		ret = include_glob(nft, scanner, filename, loc);
	}

	/* handle the case where no file was found */
	if (ret == -1)
		return -1;
	else if (ret == 0 || ret == 2)
		return 0;

	/* 1 means an error, because there are no more include directories to
	 * search, and the pattern does not have wildcard characters.
	 */
	erec = error(loc, "File not found: %s", filename);
	erec_queue(erec, state->msgs);
	return -1;
}

void scanner_push_buffer(void *scanner, const struct input_descriptor *indesc,
			 const char *buffer)
{
	struct parser_state *state = nft_get_extra(scanner);
	YY_BUFFER_STATE b;

	state->indesc = xzalloc(sizeof(struct input_descriptor));
	state->indescs[state->indesc_idx] = state->indesc;
	state->indesc_idx++;

	memcpy(state->indesc, indesc, sizeof(*state->indesc));
	state->indesc->data = buffer;
	state->indesc->name = NULL;
	list_add_tail(&state->indesc->list, &state->indesc_list);

	b = nft__scan_string(buffer,scanner);
	assert(b != NULL);
	init_pos(state->indesc);
}

void *scanner_init(struct parser_state *state)
{
	yyscan_t scanner;

	nft_lex_init_extra(state,&scanner);
	nft_set_out(NULL,scanner);

	return scanner;
}

static void input_descriptor_destroy(const struct input_descriptor *indesc)
{
	if (indesc->name)
		xfree(indesc->name);
	xfree(indesc);
}

static void input_descriptor_list_destroy(struct parser_state *state)
{
	struct input_descriptor *indesc, *next;

	list_for_each_entry_safe(indesc, next, &state->indesc_list, list) {
		list_del(&indesc->list);
		input_descriptor_destroy(indesc);
	}
}

void scanner_destroy(struct nft_ctx *nft)
{
	struct parser_state *state = nft_get_extra(nft->scanner);

	do {
		nft_pop_buffer_state(nft->scanner);

		if (nft->f[state->indesc_idx]) {
			fclose(nft->f[state->indesc_idx]);
			nft->f[state->indesc_idx] = NULL;
		}
	} while (state->indesc_idx--);

	input_descriptor_list_destroy(state);
	nft_lex_destroy(nft->scanner);
}