
#line 3 "lex.zconf.c"

#define  YY_INT_ALIGNED short int

/* A lexical scanner generated by flex */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
#define YY_FLEX_SUBMINOR_VERSION 31
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif

/* First, we deal with  platform-specific or compiler-specific issues. */

/* begin standard C headers. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

/* end standard C headers. */

/* 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
#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;
#endif /* ! C99 */

/* 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 /* ! FLEXINT_H */

#ifdef __cplusplus

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else	/* ! __cplusplus */

#if __STDC__

#define YY_USE_CONST

#endif	/* __STDC__ */
#endif	/* ! __cplusplus */

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif

/* Returned upon end-of-file. */
#define YY_NULL 0

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

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN (yy_start) = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE zconfrestart(zconfin  )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#define YY_BUF_SIZE 16384
#endif

#ifndef YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif

extern int zconfleng;

extern FILE *zconfin, *zconfout;

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

    #define YY_LESS_LINENO(n)

/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up zconftext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		*yy_cp = (yy_hold_char); \
		YY_RESTORE_YY_MORE_OFFSET \
		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, (yytext_ptr)  )

/* The following is because we cannot portably get our hands on size_t
 * (without autoconf's help, which isn't available because we want
 * flex-generated scanners to compile on their own).
 */

#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef unsigned int yy_size_t;
#endif

#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
	{
	FILE *yy_input_file;

	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.
	 */
	yy_size_t 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 zconfrestart()), so that the user can continue scanning by
	 * just pointing zconfin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2

	};
#endif /* !YY_STRUCT_YY_BUFFER_STATE */

/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 *
 * Returns the top of the stack, or NULL.
 */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                          : NULL)

/* Same as previous macro, but useful when we know that the buffer stack is not
 * NULL or when we need an lvalue. For internal use only.
 */
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]

/* yy_hold_char holds the character lost when zconftext is formed. */
static char yy_hold_char;
static int yy_n_chars;		/* number of characters read into yy_ch_buf */
int zconfleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
static int yy_init = 1;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* Flag which is used to allow zconfwrap()'s to do buffer switches
 * instead of setting up a fresh zconfin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void zconfrestart (FILE *input_file  );
void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size  );
void zconf_delete_buffer (YY_BUFFER_STATE b  );
void zconf_flush_buffer (YY_BUFFER_STATE b  );
void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer  );
void zconfpop_buffer_state (void );

static void zconfensure_buffer_stack (void );
static void zconf_load_buffer_state (void );
static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file  );

#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )

YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size  );
YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str  );
YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len  );

void *zconfalloc (yy_size_t  );
void *zconfrealloc (void *,yy_size_t  );
void zconffree (void *  );

#define yy_new_buffer zconf_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){ \
        zconfensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){\
        zconfensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

/* Begin user sect3 */

#define zconfwrap(n) 1
#define YY_SKIP_YYWRAP

typedef unsigned char YY_CHAR;

FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;

typedef int yy_state_type;

extern int zconflineno;

int zconflineno = 1;

extern char *zconftext;
#define yytext_ptr zconftext
static yyconst flex_int16_t yy_nxt[][38] =
    {
    {
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0
    },

    {
       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
       12,   12,   12,   12,   12,   12,   12,   12
    },

    {
       11,   12,   13,   14,   12,   12,   15,   12,   12,   12,
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,

       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
       12,   12,   12,   12,   12,   12,   12,   12
    },

    {
       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
       16,   16,   16,   18,   16,   16,   18,   18,   19,   20,
       21,   22,   18,   18,   23,   24,   18,   25,   18,   26,
       27,   18,   28,   29,   30,   18,   18,   16
    },

    {
       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
       16,   16,   16,   18,   16,   16,   18,   18,   19,   20,
       21,   22,   18,   18,   23,   24,   18,   25,   18,   26,
       27,   18,   28,   29,   30,   18,   18,   16

    },

    {
       11,   31,   32,   33,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31
    },

    {
       11,   31,   32,   33,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31
    },

    {
       11,   34,   34,   35,   34,   36,   34,   34,   36,   34,
       34,   34,   34,   34,   34,   37,   34,   34,   34,   34,

       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34
    },

    {
       11,   34,   34,   35,   34,   36,   34,   34,   36,   34,
       34,   34,   34,   34,   34,   37,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
       34,   34,   34,   34,   34,   34,   34,   34
    },

    {
       11,   38,   38,   39,   40,   41,   42,   43,   41,   44,
       45,   46,   47,   47,   48,   49,   47,   47,   47,   47,
       47,   47,   47,   47,   47,   50,   47,   47,   47,   51,
       47,   47,   47,   47,   47,   47,   47,   52

    },

    {
       11,   38,   38,   39,   40,   41,   42,   43,   41,   44,
       45,   46,   47,   47,   48,   49,   47,   47,   47,   47,
       47,   47,   47,   47,   47,   50,   47,   47,   47,   51,
       47,   47,   47,   47,   47,   47,   47,   52
    },

    {
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11
    },

    {
       11,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,

      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12
    },

    {
       11,  -13,   53,   54,  -13,  -13,   55,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13
    },

    {
       11,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14

    },

    {
       11,   56,   56,   57,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56
    },

    {
       11,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16
    },

    {
       11,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,

      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17
    },

    {
       11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,   58,  -18,  -18,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -18
    },

    {
       11,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,   58,  -19,  -19,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   59,
       58,   58,   58,   58,   58,   58,   58,  -19

    },

    {
       11,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20,   58,  -20,  -20,   58,   58,   58,   58,
       58,   58,   58,   58,   60,   58,   58,   58,   58,   61,
       58,   58,   58,   58,   58,   58,   58,  -20
    },

    {
       11,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
      -21,  -21,  -21,   58,  -21,  -21,   58,   58,   58,   58,
       58,   62,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -21
    },

    {
       11,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22,   58,  -22,  -22,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   63,   58,
       58,   58,   58,   58,   58,   58,   58,  -22
    },

    {
       11,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23,   58,  -23,  -23,   58,   58,   58,   58,
       58,   64,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -23
    },

    {
       11,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,   58,  -24,  -24,   58,   58,   58,   58,
       58,   58,   65,   58,   58,   58,   58,   58,   66,   58,
       58,   58,   58,   58,   58,   58,   58,  -24

    },

    {
       11,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25,   58,  -25,  -25,   58,   67,   58,   58,
       58,   68,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -25
    },

    {
       11,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,   58,  -26,  -26,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       69,   58,   58,   58,   58,   58,   58,  -26
    },

    {
       11,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
      -27,  -27,  -27,   58,  -27,  -27,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   70,   58,   58,   58,   58,  -27
    },

    {
       11,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
      -28,  -28,  -28,   58,  -28,  -28,   58,   71,   58,   58,
       58,   72,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -28
    },

    {
       11,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
      -29,  -29,  -29,   58,  -29,  -29,   58,   58,   58,   58,
       58,   73,   58,   58,   58,   58,   58,   58,   58,   74,
       58,   58,   58,   58,   75,   58,   58,  -29

    },

    {
       11,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
      -30,  -30,  -30,   58,  -30,  -30,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   76,   58,   58,   58,   58,  -30
    },

    {
       11,   77,   77,  -31,   77,   77,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77
    },

    {
       11,  -32,   78,   79,  -32,  -32,  -32,  -32,  -32,  -32,
      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,

      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32,
      -32,  -32,  -32,  -32,  -32,  -32,  -32,  -32
    },

    {
       11,   80,  -33,  -33,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   80
    },

    {
       11,   81,   81,   82,   81,  -34,   81,   81,  -34,   81,
       81,   81,   81,   81,   81,  -34,   81,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   81,   81

    },

    {
       11,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35,
      -35,  -35,  -35,  -35,  -35,  -35,  -35,  -35
    },

    {
       11,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36
    },

    {
       11,   83,   83,   84,   83,   83,   83,   83,   83,   83,
       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,

       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
       83,   83,   83,   83,   83,   83,   83,   83
    },

    {
       11,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38
    },

    {
       11,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39,
      -39,  -39,  -39,  -39,  -39,  -39,  -39,  -39

    },

    {
       11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,   85,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40
    },

    {
       11,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41
    },

    {
       11,   86,   86,  -42,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,

       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86
    },

    {
       11,  -43,  -43,  -43,  -43,  -43,  -43,   87,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43
    },

    {
       11,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44

    },

    {
       11,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45
    },

    {
       11,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
      -46,   88,   89,   89,  -46,  -46,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -46
    },

    {
       11,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
      -47,   89,   89,   89,  -47,  -47,   89,   89,   89,   89,

       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -47
    },

    {
       11,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48
    },

    {
       11,  -49,  -49,   90,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49

    },

    {
       11,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
      -50,   89,   89,   89,  -50,  -50,   89,   89,   89,   89,
       89,   89,   91,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -50
    },

    {
       11,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
      -51,   89,   89,   89,  -51,  -51,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,   89,   92,   89,
       89,   89,   89,   89,   89,   89,   89,  -51
    },

    {
       11,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,

      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,   93
    },

    {
       11,  -53,   53,   54,  -53,  -53,   55,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53
    },

    {
       11,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54,
      -54,  -54,  -54,  -54,  -54,  -54,  -54,  -54

    },

    {
       11,   56,   56,   57,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56
    },

    {
       11,   56,   56,   57,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56
    },

    {
       11,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,

      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57
    },

    {
       11,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
      -58,  -58,  -58,   58,  -58,  -58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -58
    },

    {
       11,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,   58,  -59,  -59,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   94,
       58,   58,   58,   58,   58,   58,   58,  -59

    },

    {
       11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,   58,  -60,  -60,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   95,
       58,   58,   58,   58,   58,   58,   58,  -60
    },

    {
       11,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,   58,  -61,  -61,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   96,   97,   58,
       58,   58,   58,   58,   58,   58,   58,  -61
    },

    {
       11,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,   58,  -62,  -62,   58,   58,   58,   58,

       58,   58,   98,   58,   58,   58,   58,   58,   58,   58,
       99,   58,   58,   58,   58,   58,   58,  -62
    },

    {
       11,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
      -63,  -63,  -63,   58,  -63,  -63,   58,  100,   58,   58,
      101,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -63
    },

    {
       11,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
      -64,  -64,  -64,   58,  -64,  -64,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  102,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  103,  -64

    },

    {
       11,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,
      -65,  -65,  -65,   58,  -65,  -65,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -65
    },

    {
       11,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
      -66,  -66,  -66,   58,  -66,  -66,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  104,   58,   58,  -66
    },

    {
       11,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
      -67,  -67,  -67,   58,  -67,  -67,   58,   58,   58,   58,

       58,   58,   58,   58,   58,  105,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -67
    },

    {
       11,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,
      -68,  -68,  -68,   58,  -68,  -68,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  106,   58,
       58,   58,   58,   58,   58,   58,   58,  -68
    },

    {
       11,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
      -69,  -69,  -69,   58,  -69,  -69,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  107,   58,   58,  -69

    },

    {
       11,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
      -70,  -70,  -70,   58,  -70,  -70,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  108,
       58,   58,   58,   58,   58,   58,   58,  -70
    },

    {
       11,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
      -71,  -71,  -71,   58,  -71,  -71,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  109,   58,
       58,   58,   58,   58,   58,   58,   58,  -71
    },

    {
       11,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,
      -72,  -72,  -72,   58,  -72,  -72,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  110,   58,   58,   58,   58,   58,  -72
    },

    {
       11,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,  -73,
      -73,  -73,  -73,   58,  -73,  -73,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  111,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -73
    },

    {
       11,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,
      -74,  -74,  -74,   58,  -74,  -74,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  112,   58,  -74

    },

    {
       11,  -75,  -75,  -75,  -75,  -75,  -75,  -75,  -75,  -75,
      -75,  -75,  -75,   58,  -75,  -75,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  113,   58,   58,   58,   58,  -75
    },

    {
       11,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,  -76,
      -76,  -76,  -76,   58,  -76,  -76,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  114,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -76
    },

    {
       11,   77,   77,  -77,   77,   77,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,

       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77
    },

    {
       11,  -78,   78,   79,  -78,  -78,  -78,  -78,  -78,  -78,
      -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,
      -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78,
      -78,  -78,  -78,  -78,  -78,  -78,  -78,  -78
    },

    {
       11,   80,  -79,  -79,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   80

    },

    {
       11,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
      -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
      -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80,
      -80,  -80,  -80,  -80,  -80,  -80,  -80,  -80
    },

    {
       11,   81,   81,   82,   81,  -81,   81,   81,  -81,   81,
       81,   81,   81,   81,   81,  -81,   81,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
       81,   81,   81,   81,   81,   81,   81,   81
    },

    {
       11,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,
      -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,

      -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82,
      -82,  -82,  -82,  -82,  -82,  -82,  -82,  -82
    },

    {
       11,  -83,  -83,   84,  -83,  -83,  -83,  -83,  -83,  -83,
      -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
      -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
      -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83
    },

    {
       11,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84

    },

    {
       11,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85,
      -85,  -85,  -85,  -85,  -85,  -85,  -85,  -85
    },

    {
       11,   86,   86,  -86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86
    },

    {
       11,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
      -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,

      -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87,
      -87,  -87,  -87,  -87,  -87,  -87,  -87,  -87
    },

    {
       11,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
      -88,  115,   89,   89,  -88,  -88,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -88
    },

    {
       11,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
      -89,   89,   89,   89,  -89,  -89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -89

    },

    {
       11,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90
    },

    {
       11,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
      -91,   89,   89,   89,  -91,  -91,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -91
    },

    {
       11,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,
      -92,   89,   89,   89,  -92,  -92,   89,   89,   89,   89,

       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,  -92
    },

    {
       11,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93
    },

    {
       11,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
      -94,  -94,  -94,   58,  -94,  -94,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  116,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -94

    },

    {
       11,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
      -95,  -95,  -95,   58,  -95,  -95,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  117,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -95
    },

    {
       11,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,
      -96,  -96,  -96,   58,  -96,  -96,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  118,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -96
    },

    {
       11,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
      -97,  -97,  -97,   58,  -97,  -97,   58,   58,   58,   58,

       58,   58,  119,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -97
    },

    {
       11,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
      -98,  -98,  -98,   58,  -98,  -98,  120,  121,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -98
    },

    {
       11,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,
      -99,  -99,  -99,   58,  -99,  -99,   58,   58,   58,   58,
       58,  122,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  -99

    },

    {
       11, -100, -100, -100, -100, -100, -100, -100, -100, -100,
     -100, -100, -100,   58, -100, -100,   58,   58,  123,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -100
    },

    {
       11, -101, -101, -101, -101, -101, -101, -101, -101, -101,
     -101, -101, -101,   58, -101, -101,   58,   58,   58,  124,
       58,   58,   58,   58,   58,  125,   58,  126,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -101
    },

    {
       11, -102, -102, -102, -102, -102, -102, -102, -102, -102,
     -102, -102, -102,   58, -102, -102,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      127,   58,   58,   58,   58,   58,   58, -102
    },

    {
       11, -103, -103, -103, -103, -103, -103, -103, -103, -103,
     -103, -103, -103,   58, -103, -103,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -103
    },

    {
       11, -104, -104, -104, -104, -104, -104, -104, -104, -104,
     -104, -104, -104,   58, -104, -104,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -104

    },

    {
       11, -105, -105, -105, -105, -105, -105, -105, -105, -105,
     -105, -105, -105,   58, -105, -105,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  128,   58,
       58,   58,   58,   58,   58,   58,   58, -105
    },

    {
       11, -106, -106, -106, -106, -106, -106, -106, -106, -106,
     -106, -106, -106,   58, -106, -106,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  129,   58, -106
    },

    {
       11, -107, -107, -107, -107, -107, -107, -107, -107, -107,
     -107, -107, -107,   58, -107, -107,   58,   58,   58,   58,

       58,   58,   58,   58,   58,  130,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -107
    },

    {
       11, -108, -108, -108, -108, -108, -108, -108, -108, -108,
     -108, -108, -108,   58, -108, -108,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  131,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -108
    },

    {
       11, -109, -109, -109, -109, -109, -109, -109, -109, -109,
     -109, -109, -109,   58, -109, -109,   58,   58,   58,   58,
       58,   58,   58,  132,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -109

    },

    {
       11, -110, -110, -110, -110, -110, -110, -110, -110, -110,
     -110, -110, -110,   58, -110, -110,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  133,   58, -110
    },

    {
       11, -111, -111, -111, -111, -111, -111, -111, -111, -111,
     -111, -111, -111,   58, -111, -111,   58,   58,   58,   58,
       58,  134,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -111
    },

    {
       11, -112, -112, -112, -112, -112, -112, -112, -112, -112,
     -112, -112, -112,   58, -112, -112,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  135,   58,   58,   58,   58, -112
    },

    {
       11, -113, -113, -113, -113, -113, -113, -113, -113, -113,
     -113, -113, -113,   58, -113, -113,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  136,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -113
    },

    {
       11, -114, -114, -114, -114, -114, -114, -114, -114, -114,
     -114, -114, -114,   58, -114, -114,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  137,   58,   58,   58, -114

    },

    {
       11, -115, -115, -115, -115, -115, -115, -115, -115, -115,
     -115,   89,   89,   89, -115, -115,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
       89,   89,   89,   89,   89,   89,   89, -115
    },

    {
       11, -116, -116, -116, -116, -116, -116, -116, -116, -116,
     -116, -116, -116,   58, -116, -116,   58,   58,   58,   58,
       58,  138,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -116
    },

    {
       11, -117, -117, -117, -117, -117, -117, -117, -117, -117,
     -117, -117, -117,   58, -117, -117,   58,   58,   58,  139,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -117
    },

    {
       11, -118, -118, -118, -118, -118, -118, -118, -118, -118,
     -118, -118, -118,   58, -118, -118,   58,   58,   58,   58,
       58,  140,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -118
    },

    {
       11, -119, -119, -119, -119, -119, -119, -119, -119, -119,
     -119, -119, -119,   58, -119, -119,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  141,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -119

    },

    {
       11, -120, -120, -120, -120, -120, -120, -120, -120, -120,
     -120, -120, -120,   58, -120, -120,   58,   58,  142,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  143,   58,   58, -120
    },

    {
       11, -121, -121, -121, -121, -121, -121, -121, -121, -121,
     -121, -121, -121,   58, -121, -121,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  144,   58, -121
    },

    {
       11, -122, -122, -122, -122, -122, -122, -122, -122, -122,
     -122, -122, -122,   58, -122, -122,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,  145,   58,
       58,   58,   58,   58,   58,   58,   58, -122
    },

    {
       11, -123, -123, -123, -123, -123, -123, -123, -123, -123,
     -123, -123, -123,   58, -123, -123,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  146,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -123
    },

    {
       11, -124, -124, -124, -124, -124, -124, -124, -124, -124,
     -124, -124, -124,   58, -124, -124,   58,   58,   58,   58,
       58,   58,   58,   58,  147,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -124

    },

    {
       11, -125, -125, -125, -125, -125, -125, -125, -125, -125,
     -125, -125, -125,   58, -125, -125,   58,   58,   58,   58,
       58,   58,  148,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -125
    },

    {
       11, -126, -126, -126, -126, -126, -126, -126, -126, -126,
     -126, -126, -126,   58, -126, -126,   58,   58,   58,   58,
       58,  149,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -126
    },

    {
       11, -127, -127, -127, -127, -127, -127, -127, -127, -127,
     -127, -127, -127,   58, -127, -127,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -127
    },

    {
       11, -128, -128, -128, -128, -128, -128, -128, -128, -128,
     -128, -128, -128,   58, -128, -128,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  150,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -128
    },

    {
       11, -129, -129, -129, -129, -129, -129, -129, -129, -129,
     -129, -129, -129,   58, -129, -129,   58,   58,   58,  151,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -129

    },

    {
       11, -130, -130, -130, -130, -130, -130, -130, -130, -130,
     -130, -130, -130,   58, -130, -130,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  152,
       58,   58,   58,   58,   58,   58,   58, -130
    },

    {
       11, -131, -131, -131, -131, -131, -131, -131, -131, -131,
     -131, -131, -131,   58, -131, -131,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      153,   58,   58,   58,   58,   58,   58, -131
    },

    {
       11, -132, -132, -132, -132, -132, -132, -132, -132, -132,
     -132, -132, -132,   58, -132, -132,   58,   58,   58,   58,

       58,  154,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -132
    },

    {
       11, -133, -133, -133, -133, -133, -133, -133, -133, -133,
     -133, -133, -133,   58, -133, -133,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  155,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -133
    },

    {
       11, -134, -134, -134, -134, -134, -134, -134, -134, -134,
     -134, -134, -134,   58, -134, -134,   58,   58,   58,  156,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -134

    },

    {
       11, -135, -135, -135, -135, -135, -135, -135, -135, -135,
     -135, -135, -135,   58, -135, -135,   58,   58,   58,  157,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -135
    },

    {
       11, -136, -136, -136, -136, -136, -136, -136, -136, -136,
     -136, -136, -136,   58, -136, -136,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  158,   58,
       58,   58,   58,   58,   58,   58,   58, -136
    },

    {
       11, -137, -137, -137, -137, -137, -137, -137, -137, -137,
     -137, -137, -137,   58, -137, -137,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  159,   58,   58, -137
    },

    {
       11, -138, -138, -138, -138, -138, -138, -138, -138, -138,
     -138, -138, -138,   58, -138, -138,   58,  160,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -138
    },

    {
       11, -139, -139, -139, -139, -139, -139, -139, -139, -139,
     -139, -139, -139,   58, -139, -139,   58,   58,   58,   58,
       58,  161,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -139

    },

    {
       11, -140, -140, -140, -140, -140, -140, -140, -140, -140,
     -140, -140, -140,   58, -140, -140,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  162,   58,
       58,   58,   58,   58,   58,   58,   58, -140
    },

    {
       11, -141, -141, -141, -141, -141, -141, -141, -141, -141,
     -141, -141, -141,   58, -141, -141,   58,   58,   58,   58,
       58,   58,   58,  163,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -141
    },

    {
       11, -142, -142, -142, -142, -142, -142, -142, -142, -142,
     -142, -142, -142,   58, -142, -142,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,  164,
       58,   58,   58,   58,   58,   58,   58, -142
    },

    {
       11, -143, -143, -143, -143, -143, -143, -143, -143, -143,
     -143, -143, -143,   58, -143, -143,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  165,   58,   58,   58,   58, -143
    },

    {
       11, -144, -144, -144, -144, -144, -144, -144, -144, -144,
     -144, -144, -144,   58, -144, -144,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  166,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -144

    },

    {
       11, -145, -145, -145, -145, -145, -145, -145, -145, -145,
     -145, -145, -145,   58, -145, -145,   58,   58,   58,   58,
      167,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -145
    },

    {
       11, -146, -146, -146, -146, -146, -146, -146, -146, -146,
     -146, -146, -146,   58, -146, -146,   58,   58,   58,   58,
       58,  168,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -146
    },

    {
       11, -147, -147, -147, -147, -147, -147, -147, -147, -147,
     -147, -147, -147,   58, -147, -147,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,  169,
       58,   58,   58,   58,   58,   58,   58, -147
    },

    {
       11, -148, -148, -148, -148, -148, -148, -148, -148, -148,
     -148, -148, -148,   58, -148, -148,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -148
    },

    {
       11, -149, -149, -149, -149, -149, -149, -149, -149, -149,
     -149, -149, -149,   58, -149, -149,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  170,   58,
       58,   58,   58,   58,   58,   58,   58, -149

    },

    {
       11, -150, -150, -150, -150, -150, -150, -150, -150, -150,
     -150, -150, -150,   58, -150, -150,   58,   58,   58,   58,
       58,  171,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -150
    },

    {
       11, -151, -151, -151, -151, -151, -151, -151, -151, -151,
     -151, -151, -151,   58, -151, -151,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  172,
       58,   58,   58,   58,   58,   58,   58, -151
    },

    {
       11, -152, -152, -152, -152, -152, -152, -152, -152, -152,
     -152, -152, -152,   58, -152, -152,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,  173,   58,
       58,   58,   58,   58,   58,   58,   58, -152
    },

    {
       11, -153, -153, -153, -153, -153, -153, -153, -153, -153,
     -153, -153, -153,   58, -153, -153,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  174,   58,   58, -153
    },

    {
       11, -154, -154, -154, -154, -154, -154, -154, -154, -154,
     -154, -154, -154,   58, -154, -154,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -154

    },

    {
       11, -155, -155, -155, -155, -155, -155, -155, -155, -155,
     -155, -155, -155,   58, -155, -155,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  175,   58,   58,   58,   58, -155
    },

    {
       11, -156, -156, -156, -156, -156, -156, -156, -156, -156,
     -156, -156, -156,   58, -156, -156,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  176,   58,   58, -156
    },

    {
       11, -157, -157, -157, -157, -157, -157, -157, -157, -157,
     -157, -157, -157,   58, -157, -157,   58,   58,   58,   58,

       58,  177,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -157
    },

    {
       11, -158, -158, -158, -158, -158, -158, -158, -158, -158,
     -158, -158, -158,   58, -158, -158,   58,   58,   58,   58,
       58,   58,   58,  178,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -158
    },

    {
       11, -159, -159, -159, -159, -159, -159, -159, -159, -159,
     -159, -159, -159,   58, -159, -159,   58,  179,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -159

    },

    {
       11, -160, -160, -160, -160, -160, -160, -160, -160, -160,
     -160, -160, -160,   58, -160, -160,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  180,   58,
       58,   58,   58,   58,   58,   58,   58, -160
    },

    {
       11, -161, -161, -161, -161, -161, -161, -161, -161, -161,
     -161, -161, -161,   58, -161, -161,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -161
    },

    {
       11, -162, -162, -162, -162, -162, -162, -162, -162, -162,
     -162, -162, -162,   58, -162, -162,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  181,   58,   58, -162
    },

    {
       11, -163, -163, -163, -163, -163, -163, -163, -163, -163,
     -163, -163, -163,   58, -163, -163,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -163
    },

    {
       11, -164, -164, -164, -164, -164, -164, -164, -164, -164,
     -164, -164, -164,   58, -164, -164,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  182,
       58,   58,   58,   58,   58,   58,   58, -164

    },

    {
       11, -165, -165, -165, -165, -165, -165, -165, -165, -165,
     -165, -165, -165,   58, -165, -165,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  183,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -165
    },

    {
       11, -166, -166, -166, -166, -166, -166, -166, -166, -166,
     -166, -166, -166,   58, -166, -166,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  184,   58,   58, -166
    },

    {
       11, -167, -167, -167, -167, -167, -167, -167, -167, -167,
     -167, -167, -167,   58, -167, -167,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  185,   58,   58,   58, -167
    },

    {
       11, -168, -168, -168, -168, -168, -168, -168, -168, -168,
     -168, -168, -168,   58, -168, -168,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -168
    },

    {
       11, -169, -169, -169, -169, -169, -169, -169, -169, -169,
     -169, -169, -169,   58, -169, -169,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  186,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -169

    },

    {
       11, -170, -170, -170, -170, -170, -170, -170, -170, -170,
     -170, -170, -170,   58, -170, -170,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  187,   58, -170
    },

    {
       11, -171, -171, -171, -171, -171, -171, -171, -171, -171,
     -171, -171, -171,   58, -171, -171,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  188,   58,
       58,   58,   58,   58,   58,   58,   58, -171
    },

    {
       11, -172, -172, -172, -172, -172, -172, -172, -172, -172,
     -172, -172, -172,   58, -172, -172,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,  189,   58,
       58,   58,   58,   58,   58,   58,   58, -172
    },

    {
       11, -173, -173, -173, -173, -173, -173, -173, -173, -173,
     -173, -173, -173,   58, -173, -173,   58,  190,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -173
    },

    {
       11, -174, -174, -174, -174, -174, -174, -174, -174, -174,
     -174, -174, -174,   58, -174, -174,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -174

    },

    {
       11, -175, -175, -175, -175, -175, -175, -175, -175, -175,
     -175, -175, -175,   58, -175, -175,   58,   58,   58,   58,
       58,  191,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -175
    },

    {
       11, -176, -176, -176, -176, -176, -176, -176, -176, -176,
     -176, -176, -176,   58, -176, -176,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -176
    },

    {
       11, -177, -177, -177, -177, -177, -177, -177, -177, -177,
     -177, -177, -177,   58, -177, -177,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -177
    },

    {
       11, -178, -178, -178, -178, -178, -178, -178, -178, -178,
     -178, -178, -178,   58, -178, -178,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -178
    },

    {
       11, -179, -179, -179, -179, -179, -179, -179, -179, -179,
     -179, -179, -179,   58, -179, -179,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  192,   58,   58, -179

    },

    {
       11, -180, -180, -180, -180, -180, -180, -180, -180, -180,
     -180, -180, -180,   58, -180, -180,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -180
    },

    {
       11, -181, -181, -181, -181, -181, -181, -181, -181, -181,
     -181, -181, -181,   58, -181, -181,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -181
    },

    {
       11, -182, -182, -182, -182, -182, -182, -182, -182, -182,
     -182, -182, -182,   58, -182, -182,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,  193,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -182
    },

    {
       11, -183, -183, -183, -183, -183, -183, -183, -183, -183,
     -183, -183, -183,   58, -183, -183,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  194,   58,   58,   58, -183
    },

    {
       11, -184, -184, -184, -184, -184, -184, -184, -184, -184,
     -184, -184, -184,   58, -184, -184,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -184

    },

    {
       11, -185, -185, -185, -185, -185, -185, -185, -185, -185,
     -185, -185, -185,   58, -185, -185,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -185
    },

    {
       11, -186, -186, -186, -186, -186, -186, -186, -186, -186,
     -186, -186, -186,   58, -186, -186,   58,   58,   58,  195,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -186
    },

    {
       11, -187, -187, -187, -187, -187, -187, -187, -187, -187,
     -187, -187, -187,   58, -187, -187,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -187
    },

    {
       11, -188, -188, -188, -188, -188, -188, -188, -188, -188,
     -188, -188, -188,   58, -188, -188,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  196,   58, -188
    },

    {
       11, -189, -189, -189, -189, -189, -189, -189, -189, -189,
     -189, -189, -189,   58, -189, -189,   58,   58,   58,   58,
       58,   58,  197,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -189

    },

    {
       11, -190, -190, -190, -190, -190, -190, -190, -190, -190,
     -190, -190, -190,   58, -190, -190,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  198,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -190
    },

    {
       11, -191, -191, -191, -191, -191, -191, -191, -191, -191,
     -191, -191, -191,   58, -191, -191,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  199,   58,   58,   58, -191
    },

    {
       11, -192, -192, -192, -192, -192, -192, -192, -192, -192,
     -192, -192, -192,   58, -192, -192,   58,   58,   58,   58,

       58,  200,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -192
    },

    {
       11, -193, -193, -193, -193, -193, -193, -193, -193, -193,
     -193, -193, -193,   58, -193, -193,   58,   58,   58,   58,
       58,  201,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -193
    },

    {
       11, -194, -194, -194, -194, -194, -194, -194, -194, -194,
     -194, -194, -194,   58, -194, -194,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  202,   58,   58, -194

    },

    {
       11, -195, -195, -195, -195, -195, -195, -195, -195, -195,
     -195, -195, -195,   58, -195, -195,   58,   58,   58,   58,
       58,  203,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -195
    },

    {
       11, -196, -196, -196, -196, -196, -196, -196, -196, -196,
     -196, -196, -196,   58, -196, -196,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -196
    },

    {
       11, -197, -197, -197, -197, -197, -197, -197, -197, -197,
     -197, -197, -197,   58, -197, -197,   58,   58,   58,   58,

       58,   58,   58,   58,   58,  204,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -197
    },

    {
       11, -198, -198, -198, -198, -198, -198, -198, -198, -198,
     -198, -198, -198,   58, -198, -198,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -198
    },

    {
       11, -199, -199, -199, -199, -199, -199, -199, -199, -199,
     -199, -199, -199,   58, -199, -199,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -199

    },

    {
       11, -200, -200, -200, -200, -200, -200, -200, -200, -200,
     -200, -200, -200,   58, -200, -200,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -200
    },

    {
       11, -201, -201, -201, -201, -201, -201, -201, -201, -201,
     -201, -201, -201,   58, -201, -201,   58,  205,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -201
    },

    {
       11, -202, -202, -202, -202, -202, -202, -202, -202, -202,
     -202, -202, -202,   58, -202, -202,   58,  206,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -202
    },

    {
       11, -203, -203, -203, -203, -203, -203, -203, -203, -203,
     -203, -203, -203,   58, -203, -203,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -203
    },

    {
       11, -204, -204, -204, -204, -204, -204, -204, -204, -204,
     -204, -204, -204,   58, -204, -204,   58,   58,   58,   58,
       58,   58,   58,  207,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -204

    },

    {
       11, -205, -205, -205, -205, -205, -205, -205, -205, -205,
     -205, -205, -205,   58, -205, -205,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  208,   58,
       58,   58,   58,   58,   58,   58,   58, -205
    },

    {
       11, -206, -206, -206, -206, -206, -206, -206, -206, -206,
     -206, -206, -206,   58, -206, -206,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  209,   58,   58, -206
    },

    {
       11, -207, -207, -207, -207, -207, -207, -207, -207, -207,
     -207, -207, -207,   58, -207, -207,   58,   58,   58,   58,

       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -207
    },

    {
       11, -208, -208, -208, -208, -208, -208, -208, -208, -208,
     -208, -208, -208,   58, -208, -208,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -208
    },

    {
       11, -209, -209, -209, -209, -209, -209, -209, -209, -209,
     -209, -209, -209,   58, -209, -209,   58,   58,   58,   58,
       58,  210,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -209

    },

    {
       11, -210, -210, -210, -210, -210, -210, -210, -210, -210,
     -210, -210, -210,   58, -210, -210,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58, -210
    },

    } ;

static yy_state_type yy_get_previous_state (void );
static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
static int yy_get_next_buffer (void );
static void yy_fatal_error (yyconst char msg[]  );

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up zconftext.
 */
#define YY_DO_BEFORE_ACTION \
	(yytext_ptr) = yy_bp; \
	zconfleng = (size_t) (yy_cp - yy_bp); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;

#define YY_NUM_RULES 64
#define YY_END_OF_BUFFER 65
/* 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[211] =
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
       65,    5,    4,    3,    2,   36,   37,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       63,   60,   62,   55,   59,   58,   57,   53,   48,   42,
       47,   51,   53,   40,   41,   50,   50,   43,   53,   50,
       50,   53,    4,    3,    2,    2,    1,   35,   35,   35,
       35,   35,   35,   35,   16,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   63,   60,   62,   61,
       55,   54,   57,   56,   44,   51,   38,   50,   50,   52,
       45,   46,   39,   35,   35,   35,   35,   35,   35,   35,

       35,   35,   30,   29,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   49,   25,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   15,   35,    7,   35,
       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
       35,   35,   35,   35,   35,   35,   35,   17,   35,   35,
       35,   35,   35,   34,   35,   35,   35,   35,   35,   35,
       10,   35,   13,   35,   35,   35,   35,   33,   35,   35,
       35,   35,   35,   22,   35,   32,    9,   31,   35,   26,
       12,   35,   35,   21,   18,   35,    8,   35,   35,   35,
       35,   35,   27,   35,   35,    6,   35,   20,   19,   23,

       35,   35,   11,   35,   35,   35,   14,   28,   35,   24
    } ;

static yyconst flex_int32_t 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,    2,    4,    5,    6,    1,    1,    7,    8,    9,
       10,    1,    1,    1,   11,   12,   12,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,    1,    1,    1,
       14,    1,    1,    1,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        1,   15,    1,    1,   16,    1,   17,   18,   19,   20,

       21,   22,   23,   24,   25,   13,   13,   26,   27,   28,
       29,   30,   31,   32,   33,   34,   35,   13,   13,   36,
       13,   13,    1,   37,    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,    1
    } ;

extern int zconf_flex_debug;
int zconf_flex_debug = 0;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *zconftext;

/*
 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
 * Released under the terms of the GNU GPL v2.0.
 */

#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define LKC_DIRECT_LINK
#include "lkc.h"

#define START_STRSIZE	16

char *text;
static char *text_ptr;
static int text_size, text_asize;

struct buffer {
        struct buffer *parent;
        YY_BUFFER_STATE state;
};

struct buffer *current_buf;

static int last_ts, first_ts;

static void zconf_endhelp(void);
static struct buffer *zconf_endfile(void);

void new_string(void)
{
	text = malloc(START_STRSIZE);
	text_asize = START_STRSIZE;
	text_ptr = text;
	text_size = 0;
	*text_ptr = 0;
}

void append_string(const char *str, int size)
{
	int new_size = text_size + size + 1;
	if (new_size > text_asize) {
		text = realloc(text, new_size);
		text_asize = new_size;
		text_ptr = text + text_size;
	}
	memcpy(text_ptr, str, size);
	text_ptr += size;
	text_size += size;
	*text_ptr = 0;
}

void alloc_string(const char *str, int size)
{
	text = malloc(size + 1);
	memcpy(text, str, size);
	text[size] = 0;
}

#define INITIAL 0
#define COMMAND 1
#define HELP 2
#define STRING 3
#define PARAM 4

/* 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.
 */
#include <unistd.h>

#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif

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

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int zconfwrap (void );
#else
extern int zconfwrap (void );
#endif
#endif

    static void yyunput (int c,char *buf_ptr  );

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

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

#ifndef YY_NO_INPUT

#ifdef __cplusplus
static int yyinput (void );
#else
static int input (void );
#endif

#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */
#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO (void) fwrite( zconftext, zconfleng, 1, zconfout )
#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) \
	errno=0; \
	while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
	{ \
		if( errno != EINTR) \
		{ \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
			break; \
		} \
		errno=0; \
		clearerr(zconfin); \
	}\
\

#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
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif

/* end tables serialization structures and prototypes */

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1

extern int zconflex (void);

#define YY_DECL int zconflex (void)
#endif /* !YY_DECL */

/* Code executed at the beginning of each rule, after zconftext and zconfleng
 * 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 break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

/** The main scanner function which does all the work.
 */
YY_DECL
{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;

	int str = 0;
	int ts, i;

	if ( (yy_init) )
		{
		(yy_init) = 0;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! (yy_start) )
			(yy_start) = 1;	/* first start state */

		if ( ! zconfin )
			zconfin = stdin;

		if ( ! zconfout )
			zconfout = stdout;

		if ( ! YY_CURRENT_BUFFER ) {
			zconfensure_buffer_stack ();
			YY_CURRENT_BUFFER_LVALUE =
				zconf_create_buffer(zconfin,YY_BUF_SIZE );
		}

		zconf_load_buffer_state( );
		}

	while ( 1 )		/* loops until end-of-file is reached */
		{
		yy_cp = (yy_c_buf_p);

		/* Support of zconftext. */
		*yy_cp = (yy_hold_char);

		/* yy_bp points to the position in yy_ch_buf of the start of
		 * the current run.
		 */
		yy_bp = yy_cp;

		yy_current_state = (yy_start);
yy_match:
		while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )
			++yy_cp;

		yy_current_state = -yy_current_state;

yy_find_action:
		yy_act = yy_accept[yy_current_state];

		YY_DO_BEFORE_ACTION;

do_action:	/* This label is used only to access EOF actions. */

		switch ( yy_act )
	{ /* beginning of action switch */
case 1:
/* rule 1 can match eol */
YY_RULE_SETUP
current_file->lineno++;
	YY_BREAK
case 2:
YY_RULE_SETUP

	YY_BREAK
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
current_file->lineno++; return T_EOL;
	YY_BREAK
case 4:
YY_RULE_SETUP
{
	BEGIN(COMMAND);
}
	YY_BREAK
case 5:
YY_RULE_SETUP
{
	unput(zconftext[0]);
	BEGIN(COMMAND);
}
	YY_BREAK

case 6:
YY_RULE_SETUP
BEGIN(PARAM); return T_MAINMENU;
	YY_BREAK
case 7:
YY_RULE_SETUP
BEGIN(PARAM); return T_MENU;
	YY_BREAK
case 8:
YY_RULE_SETUP
BEGIN(PARAM); return T_ENDMENU;
	YY_BREAK
case 9:
YY_RULE_SETUP
BEGIN(PARAM); return T_SOURCE;
	YY_BREAK
case 10:
YY_RULE_SETUP
BEGIN(PARAM); return T_CHOICE;
	YY_BREAK
case 11:
YY_RULE_SETUP
BEGIN(PARAM); return T_ENDCHOICE;
	YY_BREAK
case 12:
YY_RULE_SETUP
BEGIN(PARAM); return T_COMMENT;
	YY_BREAK
case 13:
YY_RULE_SETUP
BEGIN(PARAM); return T_CONFIG;
	YY_BREAK
case 14:
YY_RULE_SETUP
BEGIN(PARAM); return T_MENUCONFIG;
	YY_BREAK
case 15:
YY_RULE_SETUP
BEGIN(PARAM); return T_HELP;
	YY_BREAK
case 16:
YY_RULE_SETUP
BEGIN(PARAM); return T_IF;
	YY_BREAK
case 17:
YY_RULE_SETUP
BEGIN(PARAM); return T_ENDIF;
	YY_BREAK
case 18:
YY_RULE_SETUP
BEGIN(PARAM); return T_DEPENDS;
	YY_BREAK
case 19:
YY_RULE_SETUP
BEGIN(PARAM); return T_REQUIRES;
	YY_BREAK
case 20:
YY_RULE_SETUP
BEGIN(PARAM); return T_OPTIONAL;
	YY_BREAK
case 21:
YY_RULE_SETUP
BEGIN(PARAM); return T_DEFAULT;
	YY_BREAK
case 22:
YY_RULE_SETUP
BEGIN(PARAM); return T_PROMPT;
	YY_BREAK
case 23:
YY_RULE_SETUP
BEGIN(PARAM); return T_TRISTATE;
	YY_BREAK
case 24:
YY_RULE_SETUP
BEGIN(PARAM); return T_DEF_TRISTATE;
	YY_BREAK
case 25:
YY_RULE_SETUP
BEGIN(PARAM); return T_BOOLEAN;
	YY_BREAK
case 26:
YY_RULE_SETUP
BEGIN(PARAM); return T_BOOLEAN;
	YY_BREAK
case 27:
YY_RULE_SETUP
BEGIN(PARAM); return T_DEF_BOOLEAN;
	YY_BREAK
case 28:
YY_RULE_SETUP
BEGIN(PARAM); return T_DEF_BOOLEAN;
	YY_BREAK
case 29:
YY_RULE_SETUP
BEGIN(PARAM); return T_INT;
	YY_BREAK
case 30:
YY_RULE_SETUP
BEGIN(PARAM); return T_HEX;
	YY_BREAK
case 31:
YY_RULE_SETUP
BEGIN(PARAM); return T_STRING;
	YY_BREAK
case 32:
YY_RULE_SETUP
BEGIN(PARAM); return T_SELECT;
	YY_BREAK
case 33:
YY_RULE_SETUP
BEGIN(PARAM); return T_SELECT;
	YY_BREAK
case 34:
YY_RULE_SETUP
BEGIN(PARAM); return T_RANGE;
	YY_BREAK
case 35:
YY_RULE_SETUP
{
		alloc_string(zconftext, zconfleng);
		zconflval.string = text;
		return T_WORD;
	}
	YY_BREAK
case 36:
YY_RULE_SETUP

	YY_BREAK
case 37:
/* rule 37 can match eol */
YY_RULE_SETUP
current_file->lineno++; BEGIN(INITIAL);
	YY_BREAK

case 38:
YY_RULE_SETUP
return T_AND;
	YY_BREAK
case 39:
YY_RULE_SETUP
return T_OR;
	YY_BREAK
case 40:
YY_RULE_SETUP
return T_OPEN_PAREN;
	YY_BREAK
case 41:
YY_RULE_SETUP
return T_CLOSE_PAREN;
	YY_BREAK
case 42:
YY_RULE_SETUP
return T_NOT;
	YY_BREAK
case 43:
YY_RULE_SETUP
return T_EQUAL;
	YY_BREAK
case 44:
YY_RULE_SETUP
return T_UNEQUAL;
	YY_BREAK
case 45:
YY_RULE_SETUP
return T_IF;
	YY_BREAK
case 46:
YY_RULE_SETUP
return T_ON;
	YY_BREAK
case 47:
YY_RULE_SETUP
{
		str = zconftext[0];
		new_string();
		BEGIN(STRING);
	}
	YY_BREAK
case 48:
/* rule 48 can match eol */
YY_RULE_SETUP
BEGIN(INITIAL); current_file->lineno++; return T_EOL;
	YY_BREAK
case 49:
YY_RULE_SETUP
/* ignore */
	YY_BREAK
case 50:
YY_RULE_SETUP
{
		alloc_string(zconftext, zconfleng);
		zconflval.string = text;
		return T_WORD;
	}
	YY_BREAK
case 51:
YY_RULE_SETUP
/* comment */
	YY_BREAK
case 52:
/* rule 52 can match eol */
YY_RULE_SETUP
current_file->lineno++;
	YY_BREAK
case 53:
YY_RULE_SETUP

	YY_BREAK
case YY_STATE_EOF(PARAM):
{
		BEGIN(INITIAL);
	}
	YY_BREAK

case 54:
/* rule 54 can match eol */
*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up zconftext again */
YY_RULE_SETUP
{
		append_string(zconftext, zconfleng);
		zconflval.string = text;
		return T_WORD_QUOTE;
	}
	YY_BREAK
case 55:
YY_RULE_SETUP
{
		append_string(zconftext, zconfleng);
	}
	YY_BREAK
case 56:
/* rule 56 can match eol */
*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up zconftext again */
YY_RULE_SETUP
{
		append_string(zconftext + 1, zconfleng - 1);
		zconflval.string = text;
		return T_WORD_QUOTE;
	}
	YY_BREAK
case 57:
YY_RULE_SETUP
{
		append_string(zconftext + 1, zconfleng - 1);
	}
	YY_BREAK
case 58:
YY_RULE_SETUP
{
		if (str == zconftext[0]) {
			BEGIN(PARAM);
			zconflval.string = text;
			return T_WORD_QUOTE;
		} else
			append_string(zconftext, 1);
	}
	YY_BREAK
case 59:
/* rule 59 can match eol */
YY_RULE_SETUP
{
		printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
		current_file->lineno++;
		BEGIN(INITIAL);
		return T_EOL;
	}
	YY_BREAK
case YY_STATE_EOF(STRING):
{
		BEGIN(INITIAL);
	}
	YY_BREAK

case 60:
YY_RULE_SETUP
{
		ts = 0;
		for (i = 0; i < zconfleng; i++) {
			if (zconftext[i] == '\t')
				ts = (ts & ~7) + 8;
			else
				ts++;
		}
		last_ts = ts;
		if (first_ts) {
			if (ts < first_ts) {
				zconf_endhelp();
				return T_HELPTEXT;
			}
			ts -= first_ts;
			while (ts > 8) {
				append_string("        ", 8);
				ts -= 8;
			}
			append_string("        ", ts);
		}
	}
	YY_BREAK
case 61:
/* rule 61 can match eol */
*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up zconftext again */
YY_RULE_SETUP
{
		current_file->lineno++;
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK
case 62:
/* rule 62 can match eol */
YY_RULE_SETUP
{
		current_file->lineno++;
		append_string("\n", 1);
	}
	YY_BREAK
case 63:
YY_RULE_SETUP
{
		append_string(zconftext, zconfleng);
		if (!first_ts)
			first_ts = last_ts;
	}
	YY_BREAK
case YY_STATE_EOF(HELP):
{
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK

case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(COMMAND):
{
	if (current_buf) {
		zconf_endfile();
		return T_EOF;
	}
	fclose(zconfin);
	yyterminate();
}
	YY_BREAK
case 64:
YY_RULE_SETUP
YY_FATAL_ERROR( "flex scanner jammed" );
	YY_BREAK

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

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = (yy_hold_char);
		YY_RESTORE_YY_MORE_OFFSET

		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed zconfin at a new source and called
			 * zconflex().  If so, then we have to assure
			 * consistency between YY_CURRENT_BUFFER and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
			}

		/* Note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the
		 * end-of-buffer state).  Contrast this with the test
		 * in input().
		 */
		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state(  );

			/* Okay, we're now positioned to make the NUL
			 * transition.  We couldn't have
			 * yy_get_previous_state() go ahead and do it
			 * for us because it doesn't know how to deal
			 * with the possibility of jamming (and we don't
			 * want to build jamming into it because then it
			 * will run more slowly).
			 */

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = (yytext_ptr) + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++(yy_c_buf_p);
				yy_current_state = yy_next_state;
				goto yy_match;
				}

			else
				{
				yy_cp = (yy_c_buf_p);
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer(  ) )
			{
			case EOB_ACT_END_OF_FILE:
				{
				(yy_did_buffer_switch_on_eof) = 0;

				if ( zconfwrap( ) )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * zconftext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! (yy_did_buffer_switch_on_eof) )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				(yy_c_buf_p) =
					(yytext_ptr) + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_match;

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

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_find_action;
			}
		break;
		}

	default:
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	} /* end of action switch */
		} /* end of scanning one token */
} /* end of zconflex */

/* 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
 */
static int yy_get_next_buffer (void)
{
	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	register char *source = (yytext_ptr);
	register int number_to_move, i;
	int ret_val;

	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
		{ /* Don't try to fill the buffer, so this is an EOF. */
		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
			{
			/* We matched a single character, the EOB, so
			 * treat this as a final EOF.
			 */
			return EOB_ACT_END_OF_FILE;
			}

		else
			{
			/* We matched some text prior to the EOB, first
			 * process it.
			 */
			return EOB_ACT_LAST_MATCH;
			}
		}

	/* Try to read more data. */

	/* First move last chars to start of buffer. */
	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;

	for ( i = 0; i < number_to_move; ++i )
		*(dest++) = *(source++);

	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
		/* don't do the read, it's not guaranteed to return an EOF,
		 * just force an EOF
		 */
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;

	else
		{
			size_t 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;

			int yy_c_buf_p_offset =
				(int) ((yy_c_buf_p) - b->yy_ch_buf);

			if ( b->yy_is_our_buffer )
				{
				int new_size = b->yy_buf_size * 2;

				if ( new_size <= 0 )
					b->yy_buf_size += b->yy_buf_size / 8;
				else
					b->yy_buf_size *= 2;

				b->yy_ch_buf = (char *)
					/* Include room in for 2 EOB chars. */
					zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = 0;

			if ( ! b->yy_ch_buf )
				YY_FATAL_ERROR(
				"fatal error - scanner input buffer overflow" );

			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
						number_to_move - 1;

			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

		/* Read in more data. */
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
			(yy_n_chars), num_to_read );

		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	if ( (yy_n_chars) == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			zconfrestart(zconfin  );
			}

		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;

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

	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];

	return ret_val;
}

/* yy_get_previous_state - get the state just before the EOB char was reached */

    static yy_state_type yy_get_previous_state (void)
{
	register yy_state_type yy_current_state;
	register char *yy_cp;

	yy_current_state = (yy_start);

	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
		{
		yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
		}

	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 );
 */
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
{
	register int yy_is_jam;

	yy_current_state = yy_nxt[yy_current_state][1];
	yy_is_jam = (yy_current_state <= 0);

	return yy_is_jam ? 0 : yy_current_state;
}

    static void yyunput (int c, register char * yy_bp )
{
	register char *yy_cp;

    yy_cp = (yy_c_buf_p);

	/* undo effects of setting up zconftext */
	*yy_cp = (yy_hold_char);

	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
		{ /* need to shift things up to make room */
		/* +2 for EOB chars. */
		register int number_to_move = (yy_n_chars) + 2;
		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
		register char *source =
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];

		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			*--dest = *--source;

		yy_cp += (int) (dest - source);
		yy_bp += (int) (dest - source);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;

		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
			YY_FATAL_ERROR( "flex scanner push-back overflow" );
		}

	*--yy_cp = (char) c;

	(yytext_ptr) = yy_bp;
	(yy_hold_char) = *yy_cp;
	(yy_c_buf_p) = yy_cp;
}

#ifndef YY_NO_INPUT
#ifdef __cplusplus
    static int yyinput (void)
#else
    static int input  (void)
#endif

{
	int c;

	*(yy_c_buf_p) = (yy_hold_char);

	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
		{
		/* yy_c_buf_p now points to the character we want to return.
		 * If this occurs *before* the EOB characters, then it's a
		 * valid NUL; if not, then we've hit the end of the buffer.
		 */
		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			/* This was really a NUL. */
			*(yy_c_buf_p) = '\0';

		else
			{ /* need more input */
			int offset = (yy_c_buf_p) - (yytext_ptr);
			++(yy_c_buf_p);

			switch ( yy_get_next_buffer(  ) )
				{
				case EOB_ACT_LAST_MATCH:
					/* This happens because yy_g_n_b()
					 * sees that we've accumulated a
					 * token and flags that we need to
					 * try matching the token before
					 * proceeding.  But for input(),
					 * there's no matching to consider.
					 * So convert the EOB_ACT_LAST_MATCH
					 * to EOB_ACT_END_OF_FILE.
					 */

					/* Reset buffer status. */
					zconfrestart(zconfin );

					/*FALLTHROUGH*/

				case EOB_ACT_END_OF_FILE:
					{
					if ( zconfwrap( ) )
						return EOF;

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

				case EOB_ACT_CONTINUE_SCAN:
					(yy_c_buf_p) = (yytext_ptr) + offset;
					break;
				}
			}
		}

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

	return c;
}
#endif	/* ifndef YY_NO_INPUT */

/** Immediately switch to a different input stream.
 * @param input_file A readable stream.
 *
 * @note This function does not reset the start condition to @c INITIAL .
 */
    void zconfrestart  (FILE * input_file )
{

	if ( ! YY_CURRENT_BUFFER ){
        zconfensure_buffer_stack ();
		YY_CURRENT_BUFFER_LVALUE =
            zconf_create_buffer(zconfin,YY_BUF_SIZE );
	}

	zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
	zconf_load_buffer_state( );
}

/** Switch to a different input buffer.
 * @param new_buffer The new input buffer.
 *
 */
    void zconf_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
{

	/* TODO. We should be able to replace this entire function body
	 * with
	 *		zconfpop_buffer_state();
	 *		zconfpush_buffer_state(new_buffer);
     */
	zconfensure_buffer_stack ();
	if ( YY_CURRENT_BUFFER == new_buffer )
		return;

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

	YY_CURRENT_BUFFER_LVALUE = new_buffer;
	zconf_load_buffer_state( );

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

static void zconf_load_buffer_state  (void)
{
	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
	zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
	(yy_hold_char) = *(yy_c_buf_p);
}

/** Allocate and initialize an input buffer state.
 * @param file A readable stream.
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 *
 * @return the allocated buffer state.
 */
    YY_BUFFER_STATE zconf_create_buffer  (FILE * file, int  size )
{
	YY_BUFFER_STATE b;

	b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );

	b->yy_buf_size = size;

	/* yy_ch_buf has to be 2 characters longer than the size given because
	 * we need to put in 2 end-of-buffer characters.
	 */
	b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2  );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );

	b->yy_is_our_buffer = 1;

	zconf_init_buffer(b,file );

	return b;
}

/** Destroy the buffer.
 * @param b a buffer created with zconf_create_buffer()
 *
 */
    void zconf_delete_buffer (YY_BUFFER_STATE  b )
{

	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 )
		zconffree((void *) b->yy_ch_buf  );

	zconffree((void *) b  );
}

/* Initializes or reinitializes a buffer.
 * This function is sometimes called more than once on the same buffer,
 * such as during a zconfrestart() or at EOF.
 */
    static void zconf_init_buffer  (YY_BUFFER_STATE  b, FILE * file )

{
	int oerrno = errno;

	zconf_flush_buffer(b );

	b->yy_input_file = file;
	b->yy_fill_buffer = 1;

    /* If b is the current buffer, then zconf_init_buffer was _probably_
     * called from zconfrestart() 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;
    }

        b->yy_is_interactive = 0;

	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.
 *
 */
    void zconf_flush_buffer (YY_BUFFER_STATE  b )
{
	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 )
		zconf_load_buffer_state( );
}

/** 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.
 *
 */
void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
{
	if (new_buffer == NULL)
		return;

	zconfensure_buffer_stack();

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

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

	/* copied from zconf_switch_to_buffer. */
	zconf_load_buffer_state( );
	(yy_did_buffer_switch_on_eof) = 1;
}

/** Removes and deletes the top of the stack, if present.
 *  The next element becomes the new top.
 *
 */
void zconfpop_buffer_state (void)
{
	if (!YY_CURRENT_BUFFER)
		return;

	zconf_delete_buffer(YY_CURRENT_BUFFER );
	YY_CURRENT_BUFFER_LVALUE = NULL;
	if ((yy_buffer_stack_top) > 0)
		--(yy_buffer_stack_top);

	if (YY_CURRENT_BUFFER) {
		zconf_load_buffer_state( );
		(yy_did_buffer_switch_on_eof) = 1;
	}
}

/* Allocates the stack if it does not exist.
 *  Guarantees space for at least one push.
 */
static void zconfensure_buffer_stack (void)
{
	int num_to_alloc;

	if (!(yy_buffer_stack)) {

		/* First allocation is just for 2 elements, since we don't know if this
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
		 * immediate realloc on the next call.
         */
		num_to_alloc = 1;
		(yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
								(num_to_alloc * sizeof(struct yy_buffer_state*)
								);

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

		(yy_buffer_stack_max) = num_to_alloc;
		(yy_buffer_stack_top) = 0;
		return;
	}

	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){

		/* Increase the buffer to prepare for a possible push. */
		int grow_size = 8 /* arbitrary grow size */;

		num_to_alloc = (yy_buffer_stack_max) + grow_size;
		(yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
								((yy_buffer_stack),
								num_to_alloc * sizeof(struct yy_buffer_state*)
								);

		/* zero only the new slots.*/
		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
		(yy_buffer_stack_max) = num_to_alloc;
	}
}

/** Setup the input buffer state to scan directly from a user-specified character buffer.
 * @param base the character buffer
 * @param size the size in bytes of the character buffer
 *
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE zconf_scan_buffer  (char * base, yy_size_t  size )
{
	YY_BUFFER_STATE b;

	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return 0;

	b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in zconf_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 = 0;
	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;

	zconf_switch_to_buffer(b  );

	return b;
}

/** Setup the input buffer state to scan a string. The next call to zconflex() will
 * scan from a @e copy of @a str.
 * @param str a NUL-terminated string to scan
 *
 * @return the newly allocated buffer state object.
 * @note If you want to scan bytes that may contain NUL values, then use
 *       zconf_scan_bytes() instead.
 */
YY_BUFFER_STATE zconf_scan_string (yyconst char * str )
{

	return zconf_scan_bytes(str,strlen(str) );
}

/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
 * scan from a @e copy of @a bytes.
 * @param bytes the byte buffer to scan
 * @param len the number of bytes in the buffer pointed to by @a bytes.
 *
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE zconf_scan_bytes  (yyconst char * bytes, int  len )
{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n;
	int i;

	/* Get memory for full buffer, including space for trailing EOB's. */
	n = len + 2;
	buf = (char *) zconfalloc(n  );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );

	for ( i = 0; i < len; ++i )
		buf[i] = bytes[i];

	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;

	b = zconf_scan_buffer(buf,n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in zconf_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;
}

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

static void yy_fatal_error (yyconst char* msg )
{
	(void) fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
}

/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up zconftext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		zconftext[zconfleng] = (yy_hold_char); \
		(yy_c_buf_p) = zconftext + yyless_macro_arg; \
		(yy_hold_char) = *(yy_c_buf_p); \
		*(yy_c_buf_p) = '\0'; \
		zconfleng = yyless_macro_arg; \
		} \
	while ( 0 )

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

/** Get the current line number.
 *
 */
int zconfget_lineno  (void)
{

    return zconflineno;
}

/** Get the input stream.
 *
 */
FILE *zconfget_in  (void)
{
        return zconfin;
}

/** Get the output stream.
 *
 */
FILE *zconfget_out  (void)
{
        return zconfout;
}

/** Get the length of the current token.
 *
 */
int zconfget_leng  (void)
{
        return zconfleng;
}

/** Get the current token.
 *
 */

char *zconfget_text  (void)
{
        return zconftext;
}

/** Set the current line number.
 * @param line_number
 *
 */
void zconfset_lineno (int  line_number )
{

    zconflineno = line_number;
}

/** Set the input stream. This does not discard the current
 * input buffer.
 * @param in_str A readable stream.
 *
 * @see zconf_switch_to_buffer
 */
void zconfset_in (FILE *  in_str )
{
        zconfin = in_str ;
}

void zconfset_out (FILE *  out_str )
{
        zconfout = out_str ;
}

int zconfget_debug  (void)
{
        return zconf_flex_debug;
}

void zconfset_debug (int  bdebug )
{
        zconf_flex_debug = bdebug ;
}

/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
int zconflex_destroy  (void)
{

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

	/* Destroy the stack itself. */
	zconffree((yy_buffer_stack) );
	(yy_buffer_stack) = NULL;

    return 0;
}

/*
 * Internal utility routines.
 */

#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
{
	register 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 )
{
	register int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
}
#endif

void *zconfalloc (yy_size_t  size )
{
	return (void *) malloc( size );
}

void *zconfrealloc  (void * ptr, yy_size_t  size )
{
	/* The cast to (char *) in the following accommodates both
	 * implementations that use char* generic pointers, and those
	 * that use void* generic pointers.  It works with the latter
	 * because both ANSI C and C++ allow castless assignment from
	 * any pointer type to void*, and deal with argument conversions
	 * as though doing an assignment.
	 */
	return (void *) realloc( (char *) ptr, size );
}

void zconffree (void * ptr )
{
	free( (char *) ptr );	/* see zconfrealloc() for (char *) cast */
}

#define YYTABLES_NAME "yytables"

#undef YY_NEW_FILE
#undef YY_FLUSH_BUFFER
#undef yy_set_bol
#undef yy_new_buffer
#undef yy_set_interactive
#undef yytext_ptr
#undef YY_DO_BEFORE_ACTION

#ifdef YY_DECL_IS_OURS
#undef YY_DECL_IS_OURS
#undef YY_DECL
#endif

void zconf_starthelp(void)
{
	new_string();
	last_ts = first_ts = 0;
	BEGIN(HELP);
}

static void zconf_endhelp(void)
{
	zconflval.string = text;
	BEGIN(INITIAL);
}

/*
 * Try to open specified file with following names:
 * ./name
 * $(srctree)/name
 * The latter is used when srctree is separate from objtree
 * when compiling the kernel.
 * Return NULL if file is not found.
 */
FILE *zconf_fopen(const char *name)
{
	char *env, fullname[PATH_MAX+1];
	FILE *f;

	f = fopen(name, "r");
	if (!f && name[0] != '/') {
		env = getenv(SRCTREE);
		if (env) {
			sprintf(fullname, "%s/%s", env, name);
			f = fopen(fullname, "r");
		}
	}
	return f;
}

void zconf_initscan(const char *name)
{
	zconfin = zconf_fopen(name);
	if (!zconfin) {
		printf("can't find file %s\n", name);
		exit(1);
	}

	current_buf = malloc(sizeof(*current_buf));
	memset(current_buf, 0, sizeof(*current_buf));

	current_file = file_lookup(name);
	current_file->lineno = 1;
	current_file->flags = FILE_BUSY;
}

void zconf_nextfile(const char *name)
{
	struct file *file = file_lookup(name);
	struct buffer *buf = malloc(sizeof(*buf));
	memset(buf, 0, sizeof(*buf));

	current_buf->state = YY_CURRENT_BUFFER;
	zconfin = zconf_fopen(name);
	if (!zconfin) {
		printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
		exit(1);
	}
	zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
	buf->parent = current_buf;
	current_buf = buf;

	if (file->flags & FILE_BUSY) {
		printf("recursive scan (%s)?\n", name);
		exit(1);
	}
	if (file->flags & FILE_SCANNED) {
		printf("file %s already scanned?\n", name);
		exit(1);
	}
	file->flags |= FILE_BUSY;
	file->lineno = 1;
	file->parent = current_file;
	current_file = file;
}

static struct buffer *zconf_endfile(void)
{
	struct buffer *parent;

	current_file->flags |= FILE_SCANNED;
	current_file->flags &= ~FILE_BUSY;
	current_file = current_file->parent;

	parent = current_buf->parent;
	if (parent) {
		fclose(zconfin);
		zconf_delete_buffer(YY_CURRENT_BUFFER);
		zconf_switch_to_buffer(parent->state);
	}
	free(current_buf);
	current_buf = parent;

	return parent;
}

int zconf_lineno(void)
{
	if (current_buf)
		return current_file->lineno - 1;
	else
		return 0;
}

char *zconf_curname(void)
{
	if (current_buf)
		return current_file->name;
	else
		return "<none>";
}

