#define yy_create_buffer zconf_create_buffer
#define yy_delete_buffer zconf_delete_buffer
#define yy_scan_buffer zconf_scan_buffer
#define yy_scan_string zconf_scan_string
#define yy_scan_bytes zconf_scan_bytes
#define yy_flex_debug zconf_flex_debug
#define yy_init_buffer zconf_init_buffer
#define yy_flush_buffer zconf_flush_buffer
#define yy_load_buffer_state zconf_load_buffer_state
#define yy_switch_to_buffer zconf_switch_to_buffer
#define yyin zconfin
#define yyleng zconfleng
#define yylex zconflex
#define yyout zconfout
#define yyrestart zconfrestart
#define yytext zconftext

/* A lexical scanner generated by flex */

/* Scanner skeleton version:
 * $Header: /var/cvs/busybox/scripts/config/lex.zconf.c_shipped,v 1.1 2002/12/05 08:41:07 andersen Exp $
 */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5

#include <stdio.h>
#include <errno.h>

/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#endif


#ifdef __cplusplus

#include <stdlib.h>
#ifndef _WIN32
#include <unistd.h>
#endif

/* Use prototypes in function declarations. */
#define YY_USE_PROTOS

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

#else	/* ! __cplusplus */

#if __STDC__

#define YY_USE_PROTOS
#define YY_USE_CONST

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

#ifdef __TURBOC__
 #pragma warn -rch
 #pragma warn -use
#include <io.h>
#include <stdlib.h>
#define YY_USE_CONST
#define YY_USE_PROTOS
#endif

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


#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
#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 yyrestart( yyin )

#define YY_END_OF_BUFFER_CHAR 0

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

typedef struct yy_buffer_state *YY_BUFFER_STATE;

extern int yyleng;
extern FILE *yyin, *yyout;

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

/* The funky do-while in the following #define is used to turn the definition
 * int a single C statement (which needs a semi-colon terminator).  This
 * avoids problems with code like:
 *
 * 	if ( condition_holds )
 *		yyless( 5 );
 *	else
 *		do_something_else();
 *
 * Prior to using the do-while the compiler would get upset at the
 * "else" because it interpreted the "if" statement as being all
 * done when it reached the ';' after the yyless() call.
 */

/* Return all but the first 'n' matched characters back to the input stream. */

#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
		*yy_cp = yy_hold_char; \
		YY_RESTORE_YY_MORE_OFFSET \
		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext 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).
 */
typedef unsigned int yy_size_t;


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;

	/* Whether to try to fill the input buffer when we reach the
	 * end of it.
	 */
	int yy_fill_buffer;

	int yy_buffer_status;
#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
	/* When an EOF's been seen but there's still some text to process
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
	 * shouldn't try reading from the input source any more.  We might
	 * still have a bunch of tokens to match, though, because of
	 * possible backing-up.
	 *
	 * When we actually see the EOF, we change the status to "new"
	 * (via yyrestart()), so that the user can continue scanning by
	 * just pointing yyin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2
	};

static YY_BUFFER_STATE yy_current_buffer = 0;

/* 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".
 */
#define YY_CURRENT_BUFFER yy_current_buffer


/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;

static int yy_n_chars;		/* number of characters read into yy_ch_buf */


int yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = (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 yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart YY_PROTO(( FILE *input_file ));

void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )

YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));

static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
static void yy_flex_free YY_PROTO(( void * ));

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)


#define yywrap() 1
#define YY_SKIP_YYWRAP
typedef unsigned char YY_CHAR;
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
extern char *yytext;
#define yytext_ptr yytext
static yyconst short yy_nxt[][37] =
    {
    {
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    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
    },

    {
       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
    },

    {
       11,   16,   16,   17,   16,   16,   16,   16,   16,   16,
       16,   16,   16,   18,   16,   16,   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,   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
    },

    {
       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
    },

    {
       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
    },

    {
       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
    },

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

    },

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

    {
      -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
    },

    {
       11,  -13,   51,   52,  -13,  -13,   53,  -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

    },

    {
       11,   54,   54,   55,   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,  -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
    },

    {
       11,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,   56,  -18,  -18,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -18
    },

    {
       11,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,   56,  -19,  -19,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   57,   56,
       56,   56,   56,   56,   56,   56,  -19

    },

    {
       11,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20,   56,  -20,  -20,   56,   56,   56,   56,
       56,   56,   56,   58,   56,   56,   56,   56,   59,   56,
       56,   56,   56,   56,   56,   56,  -20
    },

    {
       11,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
      -21,  -21,  -21,   56,  -21,  -21,   56,   56,   56,   56,
       60,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -21
    },

    {
       11,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22,   56,  -22,  -22,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   61,   56,   56,
       56,   56,   56,   56,   56,   56,  -22
    },

    {
       11,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23,   56,  -23,  -23,   56,   56,   56,   56,
       62,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -23
    },

    {
       11,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,   56,  -24,  -24,   56,   56,   56,   56,
       56,   63,   56,   56,   56,   56,   56,   64,   56,   56,
       56,   56,   56,   56,   56,   56,  -24

    },

    {
       11,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25,   56,  -25,  -25,   65,   56,   56,   56,
       66,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -25
    },

    {
       11,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,   56,  -26,  -26,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   67,
       56,   56,   56,   56,   56,   56,  -26
    },

    {
       11,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
      -27,  -27,  -27,   56,  -27,  -27,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   68,   56,   56,   56,   56,  -27
    },

    {
       11,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
      -28,  -28,  -28,   56,  -28,  -28,   56,   56,   56,   56,
       69,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -28
    },

    {
       11,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
      -29,  -29,  -29,   56,  -29,  -29,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   70,   56,
       56,   56,   56,   71,   56,   56,  -29

    },

    {
       11,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
      -30,  -30,  -30,   56,  -30,  -30,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   72,   56,   56,   56,   56,  -30
    },

    {
       11,   73,   73,  -31,   73,   73,   73,   73,   73,   73,
       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
       73,   73,   73,   73,   73,   73,   73
    },

    {
       11,  -32,   74,   75,  -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,   76,  -33,  -33,   76,   76,   76,   76,   76,   76,
       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
       76,   76,   76,   76,   76,   76,   76
    },

    {
       11,   77,   77,   78,   77,  -34,   77,   77,  -34,   77,
       77,   77,   77,   77,   77,  -34,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
       77,   77,   77,   77,   77,   77,   77

    },

    {
       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
    },

    {
       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
    },

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

       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
       79,   79,   79,   79,   79,   79,   79
    },

    {
       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
    },

    {
       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

    },

    {
       11,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,   81,  -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
    },

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

      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42
    },

    {
       11,  -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,  -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

    },

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

    {
       11,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
      -46,   84,   84,   84,  -46,  -46,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,  -46
    },

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

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

    {
       11,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,   84,   84,   84,  -48,  -48,   84,   84,   84,   84,
       84,   85,   84,   84,   84,   84,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,  -48
    },

    {
       11,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,   84,   84,   84,  -49,  -49,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,   84,   86,   84,   84,
       84,   84,   84,   84,   84,   84,  -49

    },

    {
       11,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
      -50,  -50,  -50,  -50,  -50,  -50,   87
    },

    {
       11,  -51,   51,   52,  -51,  -51,   53,  -51,  -51,  -51,
      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
      -51,  -51,  -51,  -51,  -51,  -51,  -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
    },

    {
       11,   54,   54,   55,   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,   54,   54,   55,   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,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
      -55,  -55,  -55,  -55,  -55,  -55,  -55
    },

    {
       11,  -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,   56,  -56
    },

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

       56,   56,   56,   56,   56,   56,   56,   56,   88,   56,
       56,   56,   56,   56,   56,   56,  -57
    },

    {
       11,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
      -58,  -58,  -58,   56,  -58,  -58,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   89,   56,
       56,   56,   56,   56,   56,   56,  -58
    },

    {
       11,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,   56,  -59,  -59,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   90,   91,   56,   56,
       56,   56,   56,   56,   56,   56,  -59

    },

    {
       11,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,   56,  -60,  -60,   56,   56,   56,   56,
       56,   92,   56,   56,   56,   56,   56,   56,   56,   93,
       56,   56,   56,   56,   56,   56,  -60
    },

    {
       11,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,   56,  -61,  -61,   56,   56,   56,   94,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -61
    },

    {
       11,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,   56,  -62,  -62,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   95,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   96,  -62
    },

    {
       11,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,  -63,
      -63,  -63,  -63,   56,  -63,  -63,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -63
    },

    {
       11,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,  -64,
      -64,  -64,  -64,   56,  -64,  -64,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   97,   56,   56,  -64

    },

    {
       11,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,  -65,
      -65,  -65,  -65,   56,  -65,  -65,   56,   56,   56,   56,
       56,   56,   56,   56,   98,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -65
    },

    {
       11,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,  -66,
      -66,  -66,  -66,   56,  -66,  -66,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   99,   56,   56,
       56,   56,   56,   56,   56,   56,  -66
    },

    {
       11,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,  -67,
      -67,  -67,  -67,   56,  -67,  -67,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,  100,   56,   56,  -67
    },

    {
       11,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,  -68,
      -68,  -68,  -68,   56,  -68,  -68,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,  101,   56,
       56,   56,   56,   56,   56,   56,  -68
    },

    {
       11,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,  -69,
      -69,  -69,  -69,   56,  -69,  -69,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
      102,   56,   56,   56,   56,   56,  -69

    },

    {
       11,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,  -70,
      -70,  -70,  -70,   56,  -70,  -70,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,  103,   56,  -70
    },

    {
       11,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,  -71,
      -71,  -71,  -71,   56,  -71,  -71,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,  104,   56,   56,   56,   56,  -71
    },

    {
       11,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,  -72,
      -72,  -72,  -72,   56,  -72,  -72,   56,   56,   56,   56,

       56,   56,   56,   56,  105,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -72
    },

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

    {
       11,  -74,   74,   75,  -74,  -74,  -74,  -74,  -74,  -74,
      -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,
      -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,  -74,
      -74,  -74,  -74,  -74,  -74,  -74,  -74

    },

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

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

    {
       11,   77,   77,   78,   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,  -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,  -79,  -79,   80,  -79,  -79,  -79,  -79,  -79,  -79,
      -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,
      -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,  -79,
      -79,  -79,  -79,  -79,  -79,  -79,  -79

    },

    {
       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
    },

    {
       11,  -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,  -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
    },

    {
       11,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,  -83,
      -83,  106,   84,   84,  -83,  -83,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,  -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

    },

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

    {
       11,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,  -86,
      -86,   84,   84,   84,  -86,  -86,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,  -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
    },

    {
       11,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
      -88,  -88,  -88,   56,  -88,  -88,   56,   56,   56,   56,
       56,   56,   56,   56,   56,  107,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -88
    },

    {
       11,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,  -89,
      -89,  -89,  -89,   56,  -89,  -89,   56,   56,   56,   56,
       56,   56,   56,   56,  108,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -89

    },

    {
       11,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,   56,  -90,  -90,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  109,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -90
    },

    {
       11,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,  -91,
      -91,  -91,  -91,   56,  -91,  -91,   56,   56,   56,   56,
       56,  110,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -91
    },

    {
       11,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,  -92,
      -92,  -92,  -92,   56,  -92,  -92,  111,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -92
    },

    {
       11,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,   56,  -93,  -93,   56,   56,   56,   56,
      112,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -93
    },

    {
       11,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,  -94,
      -94,  -94,  -94,   56,  -94,  -94,   56,   56,  113,   56,
       56,   56,   56,   56,  114,   56,  115,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -94

    },

    {
       11,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,  -95,
      -95,  -95,  -95,   56,  -95,  -95,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,  116,
       56,   56,   56,   56,   56,   56,  -95
    },

    {
       11,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,  -96,
      -96,  -96,  -96,   56,  -96,  -96,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -96
    },

    {
       11,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,  -97,
      -97,  -97,  -97,   56,  -97,  -97,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  -97
    },

    {
       11,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,  -98,
      -98,  -98,  -98,   56,  -98,  -98,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,  117,   56,   56,
       56,   56,   56,   56,   56,   56,  -98
    },

    {
       11,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,  -99,
      -99,  -99,  -99,   56,  -99,  -99,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,  118,   56,  -99

    },

    {
       11, -100, -100, -100, -100, -100, -100, -100, -100, -100,
     -100, -100, -100,   56, -100, -100,   56,   56,   56,   56,
       56,   56,   56,   56,  119,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -100
    },

    {
       11, -101, -101, -101, -101, -101, -101, -101, -101, -101,
     -101, -101, -101,   56, -101, -101,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,  120,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -101
    },

    {
       11, -102, -102, -102, -102, -102, -102, -102, -102, -102,
     -102, -102, -102,   56, -102, -102,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,  121,   56, -102
    },

    {
       11, -103, -103, -103, -103, -103, -103, -103, -103, -103,
     -103, -103, -103,   56, -103, -103,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,  122,   56,   56,   56,   56, -103
    },

    {
       11, -104, -104, -104, -104, -104, -104, -104, -104, -104,
     -104, -104, -104,   56, -104, -104,   56,   56,   56,   56,
       56,   56,   56,   56,  123,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -104

    },

    {
       11, -105, -105, -105, -105, -105, -105, -105, -105, -105,
     -105, -105, -105,   56, -105, -105,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,  124,   56,   56,   56, -105
    },

    {
       11, -106, -106, -106, -106, -106, -106, -106, -106, -106,
     -106,   84,   84,   84, -106, -106,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84, -106
    },

    {
       11, -107, -107, -107, -107, -107, -107, -107, -107, -107,
     -107, -107, -107,   56, -107, -107,   56,   56,   56,   56,

      125,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -107
    },

    {
       11, -108, -108, -108, -108, -108, -108, -108, -108, -108,
     -108, -108, -108,   56, -108, -108,   56,   56,  126,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -108
    },

    {
       11, -109, -109, -109, -109, -109, -109, -109, -109, -109,
     -109, -109, -109,   56, -109, -109,   56,   56,   56,   56,
      127,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -109

    },

    {
       11, -110, -110, -110, -110, -110, -110, -110, -110, -110,
     -110, -110, -110,   56, -110, -110,   56,   56,   56,   56,
       56,   56,   56,   56,  128,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -110
    },

    {
       11, -111, -111, -111, -111, -111, -111, -111, -111, -111,
     -111, -111, -111,   56, -111, -111,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,  129,   56, -111
    },

    {
       11, -112, -112, -112, -112, -112, -112, -112, -112, -112,
     -112, -112, -112,   56, -112, -112,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,  130,   56,   56,
       56,   56,   56,   56,   56,   56, -112
    },

    {
       11, -113, -113, -113, -113, -113, -113, -113, -113, -113,
     -113, -113, -113,   56, -113, -113,   56,   56,   56,   56,
       56,   56,   56,  131,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -113
    },

    {
       11, -114, -114, -114, -114, -114, -114, -114, -114, -114,
     -114, -114, -114,   56, -114, -114,   56,   56,   56,   56,
       56,  132,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -114

    },

    {
       11, -115, -115, -115, -115, -115, -115, -115, -115, -115,
     -115, -115, -115,   56, -115, -115,   56,   56,   56,   56,
      133,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -115
    },

    {
       11, -116, -116, -116, -116, -116, -116, -116, -116, -116,
     -116, -116, -116,   56, -116, -116,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -116
    },

    {
       11, -117, -117, -117, -117, -117, -117, -117, -117, -117,
     -117, -117, -117,   56, -117, -117,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,  134,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -117
    },

    {
       11, -118, -118, -118, -118, -118, -118, -118, -118, -118,
     -118, -118, -118,   56, -118, -118,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -118
    },

    {
       11, -119, -119, -119, -119, -119, -119, -119, -119, -119,
     -119, -119, -119,   56, -119, -119,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,  135,   56,
       56,   56,   56,   56,   56,   56, -119

    },

    {
       11, -120, -120, -120, -120, -120, -120, -120, -120, -120,
     -120, -120, -120,   56, -120, -120,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,  136,
       56,   56,   56,   56,   56,   56, -120
    },

    {
       11, -121, -121, -121, -121, -121, -121, -121, -121, -121,
     -121, -121, -121,   56, -121, -121,   56,   56,   56,   56,
       56,   56,   56,   56,  137,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -121
    },

    {
       11, -122, -122, -122, -122, -122, -122, -122, -122, -122,
     -122, -122, -122,   56, -122, -122,   56,   56,  138,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -122
    },

    {
       11, -123, -123, -123, -123, -123, -123, -123, -123, -123,
     -123, -123, -123,   56, -123, -123,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,  139,   56,   56,
       56,   56,   56,   56,   56,   56, -123
    },

    {
       11, -124, -124, -124, -124, -124, -124, -124, -124, -124,
     -124, -124, -124,   56, -124, -124,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,  140,   56,   56, -124

    },

    {
       11, -125, -125, -125, -125, -125, -125, -125, -125, -125,
     -125, -125, -125,   56, -125, -125,  141,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -125
    },

    {
       11, -126, -126, -126, -126, -126, -126, -126, -126, -126,
     -126, -126, -126,   56, -126, -126,   56,   56,   56,   56,
      142,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -126
    },

    {
       11, -127, -127, -127, -127, -127, -127, -127, -127, -127,
     -127, -127, -127,   56, -127, -127,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,  143,   56,   56,
       56,   56,   56,   56,   56,   56, -127
    },

    {
       11, -128, -128, -128, -128, -128, -128, -128, -128, -128,
     -128, -128, -128,   56, -128, -128,   56,   56,   56,   56,
       56,   56,  144,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -128
    },

    {
       11, -129, -129, -129, -129, -129, -129, -129, -129, -129,
     -129, -129, -129,   56, -129, -129,   56,   56,   56,   56,
       56,   56,   56,   56,   56,  145,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -129

    },

    {
       11, -130, -130, -130, -130, -130, -130, -130, -130, -130,
     -130, -130, -130,   56, -130, -130,   56,   56,   56,  146,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -130
    },

    {
       11, -131, -131, -131, -131, -131, -131, -131, -131, -131,
     -131, -131, -131,   56, -131, -131,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,  147,   56,
       56,   56,   56,   56,   56,   56, -131
    },

    {
       11, -132, -132, -132, -132, -132, -132, -132, -132, -132,
     -132, -132, -132,   56, -132, -132,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -132
    },

    {
       11, -133, -133, -133, -133, -133, -133, -133, -133, -133,
     -133, -133, -133,   56, -133, -133,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,  148,   56,   56,
       56,   56,   56,   56,   56,   56, -133
    },

    {
       11, -134, -134, -134, -134, -134, -134, -134, -134, -134,
     -134, -134, -134,   56, -134, -134,   56,   56,   56,   56,
      149,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -134

    },

    {
       11, -135, -135, -135, -135, -135, -135, -135, -135, -135,
     -135, -135, -135,   56, -135, -135,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,  150,   56,   56,
       56,   56,   56,   56,   56,   56, -135
    },

    {
       11, -136, -136, -136, -136, -136, -136, -136, -136, -136,
     -136, -136, -136,   56, -136, -136,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,  151,   56,   56, -136
    },

    {
       11, -137, -137, -137, -137, -137, -137, -137, -137, -137,
     -137, -137, -137,   56, -137, -137,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,  152,   56,   56,   56,   56, -137
    },

    {
       11, -138, -138, -138, -138, -138, -138, -138, -138, -138,
     -138, -138, -138,   56, -138, -138,   56,   56,   56,   56,
      153,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -138
    },

    {
       11, -139, -139, -139, -139, -139, -139, -139, -139, -139,
     -139, -139, -139,   56, -139, -139,   56,   56,   56,   56,
       56,   56,  154,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -139

    },

    {
       11, -140, -140, -140, -140, -140, -140, -140, -140, -140,
     -140, -140, -140,   56, -140, -140,  155,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -140
    },

    {
       11, -141, -141, -141, -141, -141, -141, -141, -141, -141,
     -141, -141, -141,   56, -141, -141,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,  156,   56,   56,
       56,   56,   56,   56,   56,   56, -141
    },

    {
       11, -142, -142, -142, -142, -142, -142, -142, -142, -142,
     -142, -142, -142,   56, -142, -142,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -142
    },

    {
       11, -143, -143, -143, -143, -143, -143, -143, -143, -143,
     -143, -143, -143,   56, -143, -143,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,  157,   56,   56, -143
    },

    {
       11, -144, -144, -144, -144, -144, -144, -144, -144, -144,
     -144, -144, -144,   56, -144, -144,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -144

    },

    {
       11, -145, -145, -145, -145, -145, -145, -145, -145, -145,
     -145, -145, -145,   56, -145, -145,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,  158,   56,   56, -145
    },

    {
       11, -146, -146, -146, -146, -146, -146, -146, -146, -146,
     -146, -146, -146,   56, -146, -146,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,  159,   56,   56,   56, -146
    },

    {
       11, -147, -147, -147, -147, -147, -147, -147, -147, -147,
     -147, -147, -147,   56, -147, -147,   56,   56,   56,   56,

       56,   56,   56,   56,  160,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -147
    },

    {
       11, -148, -148, -148, -148, -148, -148, -148, -148, -148,
     -148, -148, -148,   56, -148, -148,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,  161,   56, -148
    },

    {
       11, -149, -149, -149, -149, -149, -149, -149, -149, -149,
     -149, -149, -149,   56, -149, -149,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,  162,   56,   56,
       56,   56,   56,   56,   56,   56, -149

    },

    {
       11, -150, -150, -150, -150, -150, -150, -150, -150, -150,
     -150, -150, -150,   56, -150, -150,  163,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -150
    },

    {
       11, -151, -151, -151, -151, -151, -151, -151, -151, -151,
     -151, -151, -151,   56, -151, -151,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -151
    },

    {
       11, -152, -152, -152, -152, -152, -152, -152, -152, -152,
     -152, -152, -152,   56, -152, -152,   56,   56,   56,   56,

      164,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -152
    },

    {
       11, -153, -153, -153, -153, -153, -153, -153, -153, -153,
     -153, -153, -153,   56, -153, -153,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -153
    },

    {
       11, -154, -154, -154, -154, -154, -154, -154, -154, -154,
     -154, -154, -154,   56, -154, -154,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -154

    },

    {
       11, -155, -155, -155, -155, -155, -155, -155, -155, -155,
     -155, -155, -155,   56, -155, -155,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,  165,   56,   56, -155
    },

    {
       11, -156, -156, -156, -156, -156, -156, -156, -156, -156,
     -156, -156, -156,   56, -156, -156,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -156
    },

    {
       11, -157, -157, -157, -157, -157, -157, -157, -157, -157,
     -157, -157, -157,   56, -157, -157,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -157
    },

    {
       11, -158, -158, -158, -158, -158, -158, -158, -158, -158,
     -158, -158, -158,   56, -158, -158,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -158
    },

    {
       11, -159, -159, -159, -159, -159, -159, -159, -159, -159,
     -159, -159, -159,   56, -159, -159,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -159

    },

    {
       11, -160, -160, -160, -160, -160, -160, -160, -160, -160,
     -160, -160, -160,   56, -160, -160,   56,   56,  166,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -160
    },

    {
       11, -161, -161, -161, -161, -161, -161, -161, -161, -161,
     -161, -161, -161,   56, -161, -161,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -161
    },

    {
       11, -162, -162, -162, -162, -162, -162, -162, -162, -162,
     -162, -162, -162,   56, -162, -162,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,  167,   56, -162
    },

    {
       11, -163, -163, -163, -163, -163, -163, -163, -163, -163,
     -163, -163, -163,   56, -163, -163,   56,   56,   56,   56,
       56,   56,   56,   56,   56,  168,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -163
    },

    {
       11, -164, -164, -164, -164, -164, -164, -164, -164, -164,
     -164, -164, -164,   56, -164, -164,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,  169,   56,   56,   56, -164

    },

    {
       11, -165, -165, -165, -165, -165, -165, -165, -165, -165,
     -165, -165, -165,   56, -165, -165,   56,   56,   56,   56,
      170,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -165
    },

    {
       11, -166, -166, -166, -166, -166, -166, -166, -166, -166,
     -166, -166, -166,   56, -166, -166,   56,   56,   56,   56,
      171,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -166
    },

    {
       11, -167, -167, -167, -167, -167, -167, -167, -167, -167,
     -167, -167, -167,   56, -167, -167,   56,   56,   56,   56,

       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -167
    },

    {
       11, -168, -168, -168, -168, -168, -168, -168, -168, -168,
     -168, -168, -168,   56, -168, -168,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -168
    },

    {
       11, -169, -169, -169, -169, -169, -169, -169, -169, -169,
     -169, -169, -169,   56, -169, -169,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -169

    },

    {
       11, -170, -170, -170, -170, -170, -170, -170, -170, -170,
     -170, -170, -170,   56, -170, -170,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -170
    },

    {
       11, -171, -171, -171, -171, -171, -171, -171, -171, -171,
     -171, -171, -171,   56, -171, -171,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
       56,   56,   56,   56,   56,   56, -171
    },

    } ;


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

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

#define YY_NUM_RULES 55
#define YY_END_OF_BUFFER 56
static yyconst short int yy_accept[172] =
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
       56,    5,    4,    3,    2,   29,   30,   28,   28,   28,
       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
       54,   51,   53,   46,   50,   49,   48,   44,   41,   35,
       40,   44,   33,   34,   43,   43,   36,   43,   43,   44,
        4,    3,    2,    2,    1,   28,   28,   28,   28,   28,
       28,   28,   15,   28,   28,   28,   28,   28,   28,   28,
       28,   28,   54,   51,   53,   52,   46,   45,   48,   47,
       37,   31,   43,   43,   38,   39,   32,   28,   28,   28,
       28,   28,   28,   28,   28,   26,   25,   28,   28,   28,

       28,   28,   28,   28,   28,   42,   23,   28,   28,   28,
       28,   28,   28,   28,   28,   14,   28,    7,   28,   28,
       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
       28,   16,   28,   28,   28,   28,   28,   28,   28,   28,
       28,   10,   28,   13,   28,   28,   28,   28,   28,   28,
       21,   28,    9,   27,   28,   24,   12,   20,   17,   28,
        8,   28,   28,   28,   28,   28,    6,   19,   18,   22,
       11
    } ;

static yyconst int 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,   13,    1,   16,   17,   18,   19,

       20,   21,   22,   23,   24,   13,   13,   25,   26,   27,
       28,   29,   30,   31,   32,   33,   34,   13,   13,   35,
       13,   13,    1,   36,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1
    } ;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "zconf.l"
#define INITIAL 0
#define YY_NEVER_INTERACTIVE 1
#define COMMAND 1
#define HELP 2
#define STRING 3
#define PARAM 4

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

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

#define LKC_DIRECT_LINK
#include "lkc.h"
#include "zconf.tab.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;
}
#line 1719 "lex.zconf.c"

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

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

#ifndef YY_NO_UNPUT
static void yyunput YY_PROTO(( int c, char *buf_ptr ));
#endif

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

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

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

#if YY_STACK_USED
static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
#ifndef YY_NO_PUSH_STATE
static void yy_push_state YY_PROTO(( int new_state ));
#endif
#ifndef YY_NO_POP_STATE
static void yy_pop_state YY_PROTO(( void ));
#endif
#ifndef YY_NO_TOP_STATE
static int yy_top_state YY_PROTO(( void ));
#endif

#else
#define YY_NO_PUSH_STATE 1
#define YY_NO_POP_STATE 1
#define YY_NO_TOP_STATE 1
#endif

#ifdef YY_MALLOC_DECL
YY_MALLOC_DECL
#else
#if __STDC__
#ifndef __cplusplus
#include <stdlib.h>
#endif
#else
/* Just try to get by without declaring the routines.  This will fail
 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
 * or sizeof(void*) != sizeof(int).
 */
#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( yytext, yyleng, 1, yyout )
#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(yyin), (char *) buf, max_size )) < 0 ) \
	{ \
		if( errno != EINTR) \
		{ \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
			break; \
		} \
		errno=0; \
		clearerr(yyin); \
	}
#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

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL int yylex YY_PROTO(( void ))
#endif

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

YY_DECL
	{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;

#line 71 "zconf.l"

	int str = 0;
	int ts, i;

#line 1871 "lex.zconf.c"

	if ( yy_init )
		{
		yy_init = 0;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

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

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! yy_current_buffer )
			yy_current_buffer =
				yy_create_buffer( yyin, YY_BUF_SIZE );

		yy_load_buffer_state();
		}

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

		/* Support of yytext. */
		*yy_cp = yy_hold_char;

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

		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:
YY_RULE_SETUP
#line 75 "zconf.l"
current_file->lineno++;
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 76 "zconf.l"

	YY_BREAK
case 3:
YY_RULE_SETUP
#line 78 "zconf.l"
current_file->lineno++; return T_EOL;
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 80 "zconf.l"
{
	BEGIN(COMMAND);
}
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 84 "zconf.l"
{
	unput(yytext[0]);
	BEGIN(COMMAND);
}
	YY_BREAK

case 6:
YY_RULE_SETUP
#line 91 "zconf.l"
BEGIN(PARAM); return T_MAINMENU;
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 92 "zconf.l"
BEGIN(PARAM); return T_MENU;
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 93 "zconf.l"
BEGIN(PARAM); return T_ENDMENU;
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 94 "zconf.l"
BEGIN(PARAM); return T_SOURCE;
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 95 "zconf.l"
BEGIN(PARAM); return T_CHOICE;
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 96 "zconf.l"
BEGIN(PARAM); return T_ENDCHOICE;
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 97 "zconf.l"
BEGIN(PARAM); return T_COMMENT;
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 98 "zconf.l"
BEGIN(PARAM); return T_CONFIG;
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 99 "zconf.l"
BEGIN(PARAM); return T_HELP;
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 100 "zconf.l"
BEGIN(PARAM); return T_IF;
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 101 "zconf.l"
BEGIN(PARAM); return T_ENDIF;
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 102 "zconf.l"
BEGIN(PARAM); return T_DEPENDS;
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 103 "zconf.l"
BEGIN(PARAM); return T_REQUIRES;
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 104 "zconf.l"
BEGIN(PARAM); return T_OPTIONAL;
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 105 "zconf.l"
BEGIN(PARAM); return T_DEFAULT;
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 106 "zconf.l"
BEGIN(PARAM); return T_PROMPT;
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 107 "zconf.l"
BEGIN(PARAM); return T_TRISTATE;
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 108 "zconf.l"
BEGIN(PARAM); return T_BOOLEAN;
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 109 "zconf.l"
BEGIN(PARAM); return T_BOOLEAN;
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 110 "zconf.l"
BEGIN(PARAM); return T_INT;
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 111 "zconf.l"
BEGIN(PARAM); return T_HEX;
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 112 "zconf.l"
BEGIN(PARAM); return T_STRING;
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 113 "zconf.l"
{
		alloc_string(yytext, yyleng);
		zconflval.string = text;
		return T_WORD;
	}
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 118 "zconf.l"

	YY_BREAK
case 30:
YY_RULE_SETUP
#line 119 "zconf.l"
current_file->lineno++; BEGIN(INITIAL);
	YY_BREAK


case 31:
YY_RULE_SETUP
#line 123 "zconf.l"
return T_AND;
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 124 "zconf.l"
return T_OR;
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 125 "zconf.l"
return T_OPEN_PAREN;
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 126 "zconf.l"
return T_CLOSE_PAREN;
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 127 "zconf.l"
return T_NOT;
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 128 "zconf.l"
return T_EQUAL;
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 129 "zconf.l"
return T_UNEQUAL;
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 130 "zconf.l"
return T_IF;
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 131 "zconf.l"
return T_ON;
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 132 "zconf.l"
{
		str = yytext[0];
		new_string();
		BEGIN(STRING);
	}
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 137 "zconf.l"
BEGIN(INITIAL); current_file->lineno++; return T_EOL;
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 138 "zconf.l"
/* ignore */
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 139 "zconf.l"
{
		alloc_string(yytext, yyleng);
		zconflval.string = text;
		return T_WORD;
	}
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 144 "zconf.l"

	YY_BREAK
case YY_STATE_EOF(PARAM):
#line 145 "zconf.l"
{
		BEGIN(INITIAL);
	}
	YY_BREAK


case 45:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 151 "zconf.l"
{
		append_string(yytext, yyleng);
		zconflval.string = text;
		return T_STRING;
	}
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 156 "zconf.l"
{
		append_string(yytext, yyleng);
	}
	YY_BREAK
case 47:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 159 "zconf.l"
{
		append_string(yytext+1, yyleng);
		zconflval.string = text;
		return T_STRING;
	}
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 164 "zconf.l"
{
		append_string(yytext+1, yyleng - 1);
	}
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 167 "zconf.l"
{
		if (str == yytext[0]) {
			BEGIN(PARAM);
			zconflval.string = text;
			return T_STRING;
		} else
			append_string(yytext, 1);
	}
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 175 "zconf.l"
{
		printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
		BEGIN(INITIAL);
		return T_EOL;
	}
	YY_BREAK
case YY_STATE_EOF(STRING):
#line 180 "zconf.l"
{
		BEGIN(INITIAL);
	}
	YY_BREAK


case 51:
YY_RULE_SETUP
#line 186 "zconf.l"
{
		ts = 0;
		for (i = 0; i < yyleng; i++) {
			if (yytext[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 52:
*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
yy_c_buf_p = yy_cp = yy_bp + 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 209 "zconf.l"
{
		current_file->lineno++;
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 214 "zconf.l"
{
		current_file->lineno++;
		append_string("\n", 1);
	}
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 218 "zconf.l"
{
		append_string(yytext, yyleng);
		if (!first_ts)
			first_ts = last_ts;
	}
	YY_BREAK
case YY_STATE_EOF(HELP):
#line 223 "zconf.l"
{
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK

case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(COMMAND):
#line 229 "zconf.l"
{
	if (current_buf) {
		zconf_endfile();
		return T_EOF;
	}
	fclose(yyin);
	yyterminate();
}
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 238 "zconf.l"
YY_FATAL_ERROR( "flex scanner jammed" );
	YY_BREAK
#line 2323 "lex.zconf.c"

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

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

		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed yyin at a new source and called
			 * yylex().  If so, then we have to assure
			 * consistency between yy_current_buffer and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			yy_n_chars = yy_current_buffer->yy_n_chars;
			yy_current_buffer->yy_input_file = yyin;
			yy_current_buffer->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->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 ( yywrap() )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

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

			case EOB_ACT_CONTINUE_SCAN:
				yy_c_buf_p =
					yytext_ptr + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state();

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

			case EOB_ACT_LAST_MATCH:
				yy_c_buf_p =
				&yy_current_buffer->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 yylex */


/* 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()
	{
	register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0;

	else
		{
		int num_to_read =
			yy_current_buffer->yy_buf_size - number_to_move - 1;

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */
#ifdef YY_USES_REJECT
			YY_FATAL_ERROR(
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
#else

			/* 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. */
					yy_flex_realloc( (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->yy_buf_size -
						number_to_move - 1;
#endif
			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

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

		yy_current_buffer->yy_n_chars = yy_n_chars;
		}

	if ( yy_n_chars == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			yyrestart( yyin );
			}

		else
			{
			ret_val = EOB_ACT_LAST_MATCH;
			yy_current_buffer->yy_buffer_status =
				YY_BUFFER_EOF_PENDING;
			}
		}

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

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

	yytext_ptr = &yy_current_buffer->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()
	{
	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 );
 */

#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
yy_state_type yy_current_state;
#endif
	{
	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;
	}


#ifndef YY_NO_UNPUT
#ifdef YY_USE_PROTOS
static void yyunput( int c, register char *yy_bp )
#else
static void yyunput( c, yy_bp )
int c;
register char *yy_bp;
#endif
	{
	register char *yy_cp = yy_c_buf_p;

	/* undo effects of setting up yytext */
	*yy_cp = yy_hold_char;

	if ( yy_cp < yy_current_buffer->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->yy_ch_buf[
					yy_current_buffer->yy_buf_size + 2];
		register char *source =
				&yy_current_buffer->yy_ch_buf[number_to_move];

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

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

		if ( yy_cp < yy_current_buffer->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;
	}
#endif	/* ifndef YY_NO_UNPUT */


#ifdef __cplusplus
static int yyinput()
#else
static int input()
#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->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. */
					yyrestart( yyin );

					/* fall through */

				case EOB_ACT_END_OF_FILE:
					{
					if ( yywrap() )
						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 yytext */
	yy_hold_char = *++yy_c_buf_p;


	return c;
	}


#ifdef YY_USE_PROTOS
void yyrestart( FILE *input_file )
#else
void yyrestart( input_file )
FILE *input_file;
#endif
	{
	if ( ! yy_current_buffer )
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );

	yy_init_buffer( yy_current_buffer, input_file );
	yy_load_buffer_state();
	}


#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif
	{
	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->yy_buf_pos = yy_c_buf_p;
		yy_current_buffer->yy_n_chars = yy_n_chars;
		}

	yy_current_buffer = new_buffer;
	yy_load_buffer_state();

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


#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
#else
void yy_load_buffer_state()
#endif
	{
	yy_n_chars = yy_current_buffer->yy_n_chars;
	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
	yyin = yy_current_buffer->yy_input_file;
	yy_hold_char = *yy_c_buf_p;
	}


#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif
	{
	YY_BUFFER_STATE b;

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

	b->yy_buf_size = size;

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

	b->yy_is_our_buffer = 1;

	yy_init_buffer( b, file );

	return b;
	}


#ifdef YY_USE_PROTOS
void yy_delete_buffer( YY_BUFFER_STATE b )
#else
void yy_delete_buffer( b )
YY_BUFFER_STATE b;
#endif
	{
	if ( ! b )
		return;

	if ( b == yy_current_buffer )
		yy_current_buffer = (YY_BUFFER_STATE) 0;

	if ( b->yy_is_our_buffer )
		yy_flex_free( (void *) b->yy_ch_buf );

	yy_flex_free( (void *) b );
	}


#ifndef _WIN32
#include <unistd.h>
#else
#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
extern int isatty YY_PROTO(( int ));
#endif
#endif
#endif

#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif


	{
	yy_flush_buffer( b );

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

#if YY_ALWAYS_INTERACTIVE
	b->yy_is_interactive = 1;
#else
#if YY_NEVER_INTERACTIVE
	b->yy_is_interactive = 0;
#else
	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
#endif
#endif
	}


#ifdef YY_USE_PROTOS
void yy_flush_buffer( YY_BUFFER_STATE b )
#else
void yy_flush_buffer( b )
YY_BUFFER_STATE b;
#endif

	{
	if ( ! b )
		return;

	b->yy_n_chars = 0;

	/* We always need two end-of-buffer characters.  The first causes
	 * a transition to the end-of-buffer state.  The second causes
	 * a jam in that state.
	 */
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

	b->yy_buf_pos = &b->yy_ch_buf[0];

	b->yy_at_bol = 1;
	b->yy_buffer_status = YY_BUFFER_NEW;

	if ( b == yy_current_buffer )
		yy_load_buffer_state();
	}


#ifndef YY_NO_SCAN_BUFFER
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
#else
YY_BUFFER_STATE yy_scan_buffer( base, size )
char *base;
yy_size_t size;
#endif
	{
	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) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_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;

	yy_switch_to_buffer( b );

	return b;
	}
#endif


#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
#else
YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *yy_str;
#endif
	{
	int len;
	for ( len = 0; yy_str[len]; ++len )
		;

	return yy_scan_bytes( yy_str, len );
	}
#endif


#ifndef YY_NO_SCAN_BYTES
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
#else
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
yyconst char *bytes;
int len;
#endif
	{
	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 *) yy_flex_alloc( n );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

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

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

	b = yy_scan_buffer( buf, n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

	/* It's okay to grow etc. this buffer, and we should throw it
	 * away when we're done.
	 */
	b->yy_is_our_buffer = 1;

	return b;
	}
#endif


#ifndef YY_NO_PUSH_STATE
#ifdef YY_USE_PROTOS
static void yy_push_state( int new_state )
#else
static void yy_push_state( new_state )
int new_state;
#endif
	{
	if ( yy_start_stack_ptr >= yy_start_stack_depth )
		{
		yy_size_t new_size;

		yy_start_stack_depth += YY_START_STACK_INCR;
		new_size = yy_start_stack_depth * sizeof( int );

		if ( ! yy_start_stack )
			yy_start_stack = (int *) yy_flex_alloc( new_size );

		else
			yy_start_stack = (int *) yy_flex_realloc(
					(void *) yy_start_stack, new_size );

		if ( ! yy_start_stack )
			YY_FATAL_ERROR(
			"out of memory expanding start-condition stack" );
		}

	yy_start_stack[yy_start_stack_ptr++] = YY_START;

	BEGIN(new_state);
	}
#endif


#ifndef YY_NO_POP_STATE
static void yy_pop_state()
	{
	if ( --yy_start_stack_ptr < 0 )
		YY_FATAL_ERROR( "start-condition stack underflow" );

	BEGIN(yy_start_stack[yy_start_stack_ptr]);
	}
#endif


#ifndef YY_NO_TOP_STATE
static int yy_top_state()
	{
	return yy_start_stack[yy_start_stack_ptr - 1];
	}
#endif

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

#ifdef YY_USE_PROTOS
static void yy_fatal_error( yyconst char msg[] )
#else
static void yy_fatal_error( msg )
char msg[];
#endif
	{
	(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 yytext. */ \
		yytext[yyleng] = yy_hold_char; \
		yy_c_buf_p = yytext + n; \
		yy_hold_char = *yy_c_buf_p; \
		*yy_c_buf_p = '\0'; \
		yyleng = n; \
		} \
	while ( 0 )


/* Internal utility routines. */

#ifndef yytext_ptr
#ifdef YY_USE_PROTOS
static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
#else
static void yy_flex_strncpy( s1, s2, n )
char *s1;
yyconst char *s2;
int n;
#endif
	{
	register int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
	}
#endif

#ifdef YY_NEED_STRLEN
#ifdef YY_USE_PROTOS
static int yy_flex_strlen( yyconst char *s )
#else
static int yy_flex_strlen( s )
yyconst char *s;
#endif
	{
	register int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
	}
#endif


#ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size )
#else
static void *yy_flex_alloc( size )
yy_size_t size;
#endif
	{
	return (void *) malloc( size );
	}

#ifdef YY_USE_PROTOS
static void *yy_flex_realloc( void *ptr, yy_size_t size )
#else
static void *yy_flex_realloc( ptr, size )
void *ptr;
yy_size_t size;
#endif
	{
	/* 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 );
	}

#ifdef YY_USE_PROTOS
static void yy_flex_free( void *ptr )
#else
static void yy_flex_free( ptr )
void *ptr;
#endif
	{
	free( ptr );
	}

#if YY_MAIN
int main()
	{
	yylex();
	return 0;
	}
#endif
#line 238 "zconf.l"

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

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

void zconf_initscan(const char *name)
{
	yyin = fopen(name, "r");
	if (!yyin) {
		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;
	yyin = fopen(name, "r");
	if (!yyin) {
		printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
		exit(1);
	}
	yy_switch_to_buffer(yy_create_buffer(yyin, 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(yyin);
		yy_delete_buffer(YY_CURRENT_BUFFER);
		yy_switch_to_buffer(parent->state);
	}
	free(current_buf);
	current_buf = parent;

	return parent;
}

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

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