Index: Makefile.in
===================================================================
--- Makefile.in	(.../1.0.2)	(revision 297)
+++ Makefile.in	(.../1.0.4)	(revision 297)
@@ -41,8 +41,11 @@
 
 @SET_MAKE@
 
-all:	build
+all:	newvers build
 
+newvers: newvers.sh
+	@./newvers.sh include/patchlevel.h
+
 build: include/setup.h depend
 	@for i in $(BUILD_DIRS); do \
 		echo "build ==> $$i";\
Index: include/patchlevel.h
===================================================================
--- include/patchlevel.h	(.../1.0.2)	(revision 297)
+++ include/patchlevel.h	(.../1.0.4)	(revision 297)
@@ -1,28 +0,0 @@
-/*
- *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
- *  patchlevel.h: A header defining the patchlevel.
- *
- *  Copyright (C) 2002 by the past and present ircd coders, and others.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
- *  USA
- *
- *  $Id$
- *  $Hybrid: patchlevel.h 858 2007-02-28 04:15:47Z lusky $
- */
-
-#ifndef PATCHLEVEL
-#define PATCHLEVEL   "esphyb-1.0.2"
-#endif
Index: include/s_conf.h
===================================================================
--- include/s_conf.h	(.../1.0.2)	(revision 297)
+++ include/s_conf.h	(.../1.0.4)	(revision 297)
@@ -358,6 +358,9 @@
   int kline_with_reason;
   int warn_no_nline;
   int invisible_on_connect;
+#ifdef HAVE_LIBCRYPTO
+  int mode_z;
+#endif
   int stats_e_disabled;
   int stats_o_oper_only;
   int stats_k_oper_only;
Index: include/channel_mode.h
===================================================================
--- include/channel_mode.h	(.../1.0.2)	(revision 297)
+++ include/channel_mode.h	(.../1.0.4)	(revision 297)
@@ -63,6 +63,10 @@
 #define MODE_ASCIIONLY  0x0400      /* only ASCII characters */
 #define MODE_OPERONLY   0x0800      /* only opers may join/msg */
 
+#ifdef HAVE_LIBCRYPTO
+#  define MODE_SECUREONLY 0x1000      /* only secure/SSL +Z users may join */
+#endif
+
 /* cache flags for silence on ban */
 #define CHFL_BAN_CHECKED  0x0080
 #define CHFL_BAN_SILENCED 0x0100
Index: include/client.h
===================================================================
--- include/client.h	(.../1.0.2)	(revision 297)
+++ include/client.h	(.../1.0.4)	(revision 297)
@@ -399,6 +399,7 @@
 #define UMODE_REGONLY      0x00100000 /* only identified users can speak to me */
 #define UMODE_SNOOP        0x00200000 /* user can see through invisibility */
 #define UMODE_CAPTURED     0x00400000 /* user is silenced */
+#define UMODE_SECURE       0x00800000 /* user is on a SSL connection */
 
 /* user information flags, only settable by remote mode or local oper */
 #define UMODE_SVCSADMIN    0x20000000 /* Services administrator */
@@ -409,7 +410,7 @@
 
 #define SEND_UMODES  (UMODE_INVISIBLE | UMODE_OPER | UMODE_WALLOP | UMODE_ADMIN \
                       | UMODE_REGNICK | UMODE_REGONLY | UMODE_SNOOP | UMODE_CAPTURED \
-                      | UMODE_SVCSADMIN)
+                      | UMODE_SECURE | UMODE_SVCSADMIN)
 
 
 /* oper priv flags */
@@ -495,6 +496,7 @@
 #define IsRegNick(x)    ((x)->umodes & UMODE_REGNICK)
 #define IsSetRegisteredOnly(x)  ((x)->umodes & UMODE_REGONLY)
 #define IsCaptured(x)   ((x)->umodes & UMODE_CAPTURED)
+#define IsSecure(x)     ((x)->umodes & UMODE_SECURE)
 
 #define SetSendQExceeded(x)	((x)->flags |= FLAGS_SENDQEX)
 #define IsSendQExceeded(x)	((x)->flags &  FLAGS_SENDQEX)
Index: include/numeric.h
===================================================================
--- include/numeric.h	(.../1.0.2)	(revision 297)
+++ include/numeric.h	(.../1.0.4)	(revision 297)
@@ -409,7 +409,7 @@
 /*	ERR_HTMDISABLED      486	   unreal */
 /*      ERR_CHANTOORECENT    487           IRCnet extension (?) */
 /*      ERR_TSLESSCHAN       488           IRCnet extension (?) */
-/*	ERR_VOICENEEDED      489           Undernet extension */
+#define ERR_NEEDSECURITY     489        /* Unreal extension; need SSL to join channel */
 #define ERR_NOOPERHOST       491
 /*      ERR_NOSERVICEHOST    492 	   IRCnet extension */
 
@@ -508,6 +508,8 @@
 #define RPL_LOCALCAPTURECOUNT 733
 #define RPL_LOCALUNCAPTURECOUNT 734
 
+#define ERR_ALLMEMBERSMUSTBESECURE 974 /* from unreal */
+
 #define ERR_LAST_ERR_MSG     999
 
 #endif /* INCLUDED_numeric_h */
Index: include/irc_string.h
===================================================================
--- include/irc_string.h	(.../1.0.2)	(revision 297)
+++ include/irc_string.h	(.../1.0.4)	(revision 297)
@@ -120,6 +120,12 @@
 #endif
 
 /*
+ * control character detection
+*/
+extern int has_control_characters(const char *);
+extern int has_colors(const char *);
+
+/*
  * character macros
  */
 extern const unsigned char ToLowerTab[];
Index: include/ircd_defs.h
===================================================================
--- include/ircd_defs.h	(.../1.0.2)	(revision 297)
+++ include/ircd_defs.h	(.../1.0.4)	(revision 297)
@@ -38,7 +38,7 @@
 
 /* Right out of the RFC */
 #define IRCD_BUFSIZE    512     /* WARNING: *DONT* CHANGE THIS!!!!         */
-#define HOSTLEN         63      /* Length of hostname.  Updated to         */
+#define HOSTLEN         255     /* Length of hostname.  Updated to         */
                                 /* comply with RFC1123                     */
 #define PORTNAMELEN 6  /* ":31337" */
 
Index: src/channel.c
===================================================================
--- src/channel.c	(.../1.0.2)	(revision 297)
+++ src/channel.c	(.../1.0.4)	(revision 297)
@@ -692,6 +692,11 @@
      !IsOper(source_p) && !IsService(source_p))
     return ERR_NEEDREGGEDNICK;
 
+#ifdef HAVE_LIBCRYPTO
+  if (ConfigFileEntry.mode_z && (chptr->mode.mode & MODE_SECUREONLY) && !IsSecure(source_p))
+    return ERR_NEEDSECURITY;
+#endif
+
   return 0;
 }
 
Index: src/y.tab.c
===================================================================
--- src/y.tab.c	(.../1.0.2)	(revision 297)
+++ src/y.tab.c	(.../1.0.4)	(revision 297)
@@ -1,452 +1,259 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+#include <stdlib.h>
+#include <string.h>
+#ifndef lint
+#ifdef __unused
+__unused
+#endif
+static char const 
+yyrcsid[] = "$FreeBSD: src/usr.bin/yacc/skeleton.c,v 1.37.22.1 2008/07/21 01:13:33 kevlo Exp $";
+#endif
+#define YYBYACC 1
+#define YYMAJOR 1
+#define YYMINOR 9
+#define YYLEX yylex()
+#define YYEMPTY -1
+#define yyclearin (yychar=(YYEMPTY))
+#define yyerrok (yyerrflag=0)
+#define YYRECOVERING() (yyerrflag!=0)
+#if defined(__cplusplus) || __STDC__
+static int yygrowstack(void);
+#else
+static int yygrowstack();
+#endif
+#define YYPREFIX "yy"
+#line 27 "ircd_parser.y"
 
-/* Skeleton implementation for Bison's Yacc-like parsers in C
+#define YY_NO_UNPUT
+#include <sys/types.h>
 
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+#include "stdinc.h"
+#include "ircd.h"
+#include "tools.h"
+#include "list.h"
+#include "s_conf.h"
+#include "event.h"
+#include "s_log.h"
+#include "client.h"	/* for UMODE_ALL only */
+#include "pcre.h"
+#include "irc_string.h"
+#include "irc_getaddrinfo.h"
+#include "sprintf_irc.h"
+#include "memory.h"
+#include "modules.h"
+#include "s_serv.h" /* for CAP_LL / IsCapable */
+#include "hostmask.h"
+#include "send.h"
+#include "listener.h"
+#include "resv.h"
+#include "numeric.h"
+#include "s_user.h"
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
+#ifdef HAVE_LIBCRYPTO
+#include <openssl/rsa.h>
+#include <openssl/bio.h>
+#include <openssl/pem.h>
+#endif
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+static char *class_name = NULL;
+static struct ConfItem *yy_conf = NULL;
+static struct AccessItem *yy_aconf = NULL;
+static struct MatchItem *yy_match_item = NULL;
+static struct ClassItem *yy_class = NULL;
+static char *yy_class_name = NULL;
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+static dlink_list col_conf_list  = { NULL, NULL, 0 };
+static dlink_list hub_conf_list  = { NULL, NULL, 0 };
+static dlink_list leaf_conf_list = { NULL, NULL, 0 };
+static unsigned int listener_flags = 0;
+static unsigned int regex_ban = 0;
+static char userbuf[IRCD_BUFSIZE];
+static char hostbuf[IRCD_BUFSIZE];
+static char reasonbuf[REASONLEN + 1];
+static char gecos_name[REALLEN * 4];
 
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
+extern dlink_list gdeny_items; /* XXX */
 
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
+static char *resv_reason = NULL;
+static char *listener_address = NULL;
+static int not_atom = 0;
 
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
+struct CollectItem
+{
+  dlink_node node;
+  char *name;
+  char *user;
+  char *host;
+  char *passwd;
+  int  port;
+  int  flags;
+#ifdef HAVE_LIBCRYPTO
+  char *rsa_public_key_file;
+  RSA *rsa_public_key;
+#endif
+};
 
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
+static void
+free_collect_item(struct CollectItem *item)
+{
+  MyFree(item->name);
+  MyFree(item->user);
+  MyFree(item->host);
+  MyFree(item->passwd);
+#ifdef HAVE_LIBCRYPTO
+  MyFree(item->rsa_public_key_file);
+#endif
+  MyFree(item);
+}
 
-/* Identify Bison output.  */
-#define YYBISON 1
+static void
+unhook_hub_leaf_confs(void)
+{
+  dlink_node *ptr;
+  dlink_node *next_ptr;
+  struct CollectItem *yy_hconf;
+  struct CollectItem *yy_lconf;
 
-/* Bison version.  */
-#define YYBISON_VERSION "2.3"
+  DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
+  {
+    yy_hconf = ptr->data;
+    dlinkDelete(&yy_hconf->node, &hub_conf_list);
+    free_collect_item(yy_hconf);
+  }
 
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
+  DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
+  {
+    yy_lconf = ptr->data;
+    dlinkDelete(&yy_lconf->node, &leaf_conf_list);
+    free_collect_item(yy_lconf);
+  }
+}
 
-/* Pure parsers.  */
-#define YYPURE 0
-
-/* Using locations.  */
-#define YYLSP_NEEDED 0
-
-
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     ACCEPT_PASSWORD = 258,
-     ACTION = 259,
-     ADMIN = 260,
-     AFTYPE = 261,
-     T_ALLOW = 262,
-     ANTI_NICK_FLOOD = 263,
-     ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
-     AUTOCONN = 265,
-     T_BLOCK = 266,
-     BURST_AWAY = 267,
-     BURST_TOPICWHO = 268,
-     BYTES = 269,
-     KBYTES = 270,
-     MBYTES = 271,
-     GBYTES = 272,
-     TBYTES = 273,
-     CALLER_ID_WAIT = 274,
-     CAN_FLOOD = 275,
-     CAN_IDLE = 276,
-     CHANNEL = 277,
-     CIDR_BITLEN_IPV4 = 278,
-     CIDR_BITLEN_IPV6 = 279,
-     CIPHER_PREFERENCE = 280,
-     CLASS = 281,
-     COMPRESSED = 282,
-     COMPRESSION_LEVEL = 283,
-     CONNECT = 284,
-     CONNECTFREQ = 285,
-     CRYPTLINK = 286,
-     DEFAULT_CIPHER_PREFERENCE = 287,
-     DEFAULT_FLOODCOUNT = 288,
-     DEFAULT_SPLIT_SERVER_COUNT = 289,
-     DEFAULT_SPLIT_USER_COUNT = 290,
-     DENY = 291,
-     DESCRIPTION = 292,
-     DIE = 293,
-     DISABLE_AUTH = 294,
-     DISABLE_FAKE_CHANNELS = 295,
-     DISABLE_HIDDEN = 296,
-     DISABLE_LOCAL_CHANNELS = 297,
-     DISABLE_REMOTE_COMMANDS = 298,
-     DOT_IN_IP6_ADDR = 299,
-     DOTS_IN_IDENT = 300,
-     DURATION = 301,
-     EGDPOOL_PATH = 302,
-     EMAIL = 303,
-     ENABLE = 304,
-     ENCRYPTED = 305,
-     EXCEED_LIMIT = 306,
-     EXEMPT = 307,
-     FAILED_OPER_NOTICE = 308,
-     FAKENAME = 309,
-     IRCD_FLAGS = 310,
-     FLATTEN_LINKS = 311,
-     FFAILED_OPERLOG = 312,
-     FKILLLOG = 313,
-     FKLINELOG = 314,
-     FGLINELOG = 315,
-     FIOERRLOG = 316,
-     FOPERLOG = 317,
-     FOPERSPYLOG = 318,
-     FUSERLOG = 319,
-     GECOS = 320,
-     GENERAL = 321,
-     GLINE = 322,
-     GLINES = 323,
-     GLINE_EXEMPT = 324,
-     GLINE_LOG = 325,
-     GLINE_TIME = 326,
-     GLINE_MIN_CIDR = 327,
-     GLINE_MIN_CIDR6 = 328,
-     GLOBAL_KILL = 329,
-     IRCD_AUTH = 330,
-     NEED_IDENT = 331,
-     HAVENT_READ_CONF = 332,
-     HELP_CHANNEL = 333,
-     HIDDEN = 334,
-     HIDDEN_ADMIN = 335,
-     HIDDEN_NAME = 336,
-     HIDDEN_OPER = 337,
-     HIDE_SERVER_IPS = 338,
-     HIDE_SERVERS = 339,
-     HIDE_SPOOF_IPS = 340,
-     HOST = 341,
-     HUB = 342,
-     HUB_MASK = 343,
-     IDLETIME = 344,
-     IGNORE_BOGUS_TS = 345,
-     INVISIBLE_ON_CONNECT = 346,
-     IP = 347,
-     KILL = 348,
-     KILL_CHASE_TIME_LIMIT = 349,
-     KLINE = 350,
-     KLINE_EXEMPT = 351,
-     KLINE_REASON = 352,
-     KLINE_WITH_REASON = 353,
-     KNOCK_DELAY = 354,
-     KNOCK_DELAY_CHANNEL = 355,
-     LAZYLINK = 356,
-     LEAF_MASK = 357,
-     LINKS_DELAY = 358,
-     LISTEN = 359,
-     T_LOG = 360,
-     LOGGING = 361,
-     LOG_LEVEL = 362,
-     MAX_ACCEPT = 363,
-     MAX_BANS = 364,
-     MAX_CHANS_PER_USER = 365,
-     MAX_GLOBAL = 366,
-     MAX_IDENT = 367,
-     MAX_LOCAL = 368,
-     MAX_NICK_CHANGES = 369,
-     MAX_NICK_TIME = 370,
-     MAX_NUMBER = 371,
-     MAX_TARGETS = 372,
-     MESSAGE_LOCALE = 373,
-     MIN_NONWILDCARD = 374,
-     MIN_NONWILDCARD_SIMPLE = 375,
-     MODULE = 376,
-     MODULES = 377,
-     NAME = 378,
-     NEED_PASSWORD = 379,
-     NETWORK_DESC = 380,
-     NETWORK_NAME = 381,
-     NICK = 382,
-     NICK_CHANGES = 383,
-     NO_CREATE_ON_SPLIT = 384,
-     NO_JOIN_ON_SPLIT = 385,
-     NO_OPER_FLOOD = 386,
-     NO_TILDE = 387,
-     NOT = 388,
-     NUMBER = 389,
-     NUMBER_PER_IDENT = 390,
-     NUMBER_PER_CIDR = 391,
-     NUMBER_PER_IP = 392,
-     NUMBER_PER_IP_GLOBAL = 393,
-     OPERATOR = 394,
-     OPERS_BYPASS_CALLERID = 395,
-     OPER_LOG = 396,
-     OPER_ONLY_UMODES = 397,
-     OPER_PASS_RESV = 398,
-     OPER_SPY_T = 399,
-     OPER_UMODES = 400,
-     JOIN_FLOOD_COUNT = 401,
-     JOIN_FLOOD_TIME = 402,
-     PACE_WAIT = 403,
-     PACE_WAIT_SIMPLE = 404,
-     PASSWORD = 405,
-     PATH = 406,
-     PING_COOKIE = 407,
-     PING_TIME = 408,
-     PING_WARNING = 409,
-     PORT = 410,
-     QSTRING = 411,
-     QUIET_ON_BAN = 412,
-     REASON = 413,
-     REDIRPORT = 414,
-     REDIRSERV = 415,
-     REGEX_T = 416,
-     REHASH = 417,
-     TREJECT_HOLD_TIME = 418,
-     REMOTE = 419,
-     REMOTEBAN = 420,
-     RESTRICT_CHANNELS = 421,
-     RESTRICTED = 422,
-     RSA_PRIVATE_KEY_FILE = 423,
-     RSA_PUBLIC_KEY_FILE = 424,
-     SSL_CERTIFICATE_FILE = 425,
-     RESV = 426,
-     RESV_EXEMPT = 427,
-     SECONDS = 428,
-     MINUTES = 429,
-     HOURS = 430,
-     DAYS = 431,
-     WEEKS = 432,
-     SENDQ = 433,
-     SEND_PASSWORD = 434,
-     SERVERHIDE = 435,
-     SERVERINFO = 436,
-     SERVLINK_PATH = 437,
-     SERVICES_NAME = 438,
-     IRCD_SID = 439,
-     TKLINE_EXPIRE_NOTICES = 440,
-     T_SHARED = 441,
-     T_CLUSTER = 442,
-     T_SNOOP = 443,
-     TYPE = 444,
-     SHORT_MOTD = 445,
-     SILENT = 446,
-     SPOOF = 447,
-     SPOOF_NOTICE = 448,
-     STATS_E_DISABLED = 449,
-     STATS_I_OPER_ONLY = 450,
-     STATS_K_OPER_ONLY = 451,
-     STATS_O_OPER_ONLY = 452,
-     STATS_P_OPER_ONLY = 453,
-     TBOOL = 454,
-     TMASKED = 455,
-     T_REJECT = 456,
-     TS_MAX_DELTA = 457,
-     TS_WARN_DELTA = 458,
-     TWODOTS = 459,
-     T_ALL = 460,
-     T_BOTS = 461,
-     T_SOFTCALLERID = 462,
-     T_CALLERID = 463,
-     T_CCONN = 464,
-     T_CCONN_FULL = 465,
-     T_CLIENT_FLOOD = 466,
-     T_DEAF = 467,
-     T_DEBUG = 468,
-     T_DRONE = 469,
-     T_EXTERNAL = 470,
-     T_FULL = 471,
-     T_INVISIBLE = 472,
-     T_IPV4 = 473,
-     T_IPV6 = 474,
-     T_LOCOPS = 475,
-     T_LOGPATH = 476,
-     T_L_CRIT = 477,
-     T_L_DEBUG = 478,
-     T_L_ERROR = 479,
-     T_L_INFO = 480,
-     T_L_NOTICE = 481,
-     T_L_TRACE = 482,
-     T_L_WARN = 483,
-     T_MAX_CLIENTS = 484,
-     T_NCHANGE = 485,
-     T_OPERWALL = 486,
-     T_REJ = 487,
-     T_SERVNOTICE = 488,
-     T_SKILL = 489,
-     T_SPY = 490,
-     T_SSL = 491,
-     T_UMODES = 492,
-     T_UNAUTH = 493,
-     T_UNRESV = 494,
-     T_UNXLINE = 495,
-     T_WALLOP = 496,
-     THROTTLE_TIME = 497,
-     TOPICBURST = 498,
-     TRUE_NO_OPER_FLOOD = 499,
-     TKLINE = 500,
-     TXLINE = 501,
-     TRESV = 502,
-     UNKLINE = 503,
-     USER = 504,
-     T_USERMODE = 505,
-     USE_EGD = 506,
-     USE_EXCEPT = 507,
-     USE_INVEX = 508,
-     USE_KNOCK = 509,
-     USE_LOGGING = 510,
-     USE_WHOIS_ACTUALLY = 511,
-     VHOST = 512,
-     VHOST6 = 513,
-     XLINE = 514,
-     WARN = 515,
-     WARN_NO_NLINE = 516,
-     WEBIRC = 517
-   };
-#endif
-/* Tokens.  */
-#define ACCEPT_PASSWORD 258
-#define ACTION 259
-#define ADMIN 260
-#define AFTYPE 261
-#define T_ALLOW 262
-#define ANTI_NICK_FLOOD 263
-#define ANTI_SPAM_EXIT_MESSAGE_TIME 264
-#define AUTOCONN 265
-#define T_BLOCK 266
-#define BURST_AWAY 267
-#define BURST_TOPICWHO 268
-#define BYTES 269
-#define KBYTES 270
-#define MBYTES 271
-#define GBYTES 272
-#define TBYTES 273
-#define CALLER_ID_WAIT 274
-#define CAN_FLOOD 275
-#define CAN_IDLE 276
-#define CHANNEL 277
-#define CIDR_BITLEN_IPV4 278
-#define CIDR_BITLEN_IPV6 279
-#define CIPHER_PREFERENCE 280
-#define CLASS 281
-#define COMPRESSED 282
-#define COMPRESSION_LEVEL 283
-#define CONNECT 284
-#define CONNECTFREQ 285
-#define CRYPTLINK 286
-#define DEFAULT_CIPHER_PREFERENCE 287
-#define DEFAULT_FLOODCOUNT 288
-#define DEFAULT_SPLIT_SERVER_COUNT 289
-#define DEFAULT_SPLIT_USER_COUNT 290
-#define DENY 291
-#define DESCRIPTION 292
-#define DIE 293
-#define DISABLE_AUTH 294
-#define DISABLE_FAKE_CHANNELS 295
-#define DISABLE_HIDDEN 296
-#define DISABLE_LOCAL_CHANNELS 297
-#define DISABLE_REMOTE_COMMANDS 298
-#define DOT_IN_IP6_ADDR 299
-#define DOTS_IN_IDENT 300
-#define DURATION 301
-#define EGDPOOL_PATH 302
-#define EMAIL 303
-#define ENABLE 304
-#define ENCRYPTED 305
-#define EXCEED_LIMIT 306
-#define EXEMPT 307
-#define FAILED_OPER_NOTICE 308
-#define FAKENAME 309
-#define IRCD_FLAGS 310
-#define FLATTEN_LINKS 311
-#define FFAILED_OPERLOG 312
-#define FKILLLOG 313
-#define FKLINELOG 314
-#define FGLINELOG 315
-#define FIOERRLOG 316
-#define FOPERLOG 317
-#define FOPERSPYLOG 318
-#define FUSERLOG 319
-#define GECOS 320
-#define GENERAL 321
-#define GLINE 322
-#define GLINES 323
-#define GLINE_EXEMPT 324
-#define GLINE_LOG 325
-#define GLINE_TIME 326
-#define GLINE_MIN_CIDR 327
-#define GLINE_MIN_CIDR6 328
-#define GLOBAL_KILL 329
-#define IRCD_AUTH 330
-#define NEED_IDENT 331
-#define HAVENT_READ_CONF 332
-#define HELP_CHANNEL 333
-#define HIDDEN 334
-#define HIDDEN_ADMIN 335
-#define HIDDEN_NAME 336
-#define HIDDEN_OPER 337
-#define HIDE_SERVER_IPS 338
-#define HIDE_SERVERS 339
-#define HIDE_SPOOF_IPS 340
-#define HOST 341
-#define HUB 342
-#define HUB_MASK 343
-#define IDLETIME 344
-#define IGNORE_BOGUS_TS 345
-#define INVISIBLE_ON_CONNECT 346
-#define IP 347
-#define KILL 348
-#define KILL_CHASE_TIME_LIMIT 349
-#define KLINE 350
-#define KLINE_EXEMPT 351
-#define KLINE_REASON 352
-#define KLINE_WITH_REASON 353
-#define KNOCK_DELAY 354
-#define KNOCK_DELAY_CHANNEL 355
-#define LAZYLINK 356
-#define LEAF_MASK 357
-#define LINKS_DELAY 358
-#define LISTEN 359
-#define T_LOG 360
-#define LOGGING 361
-#define LOG_LEVEL 362
-#define MAX_ACCEPT 363
-#define MAX_BANS 364
-#define MAX_CHANS_PER_USER 365
-#define MAX_GLOBAL 366
-#define MAX_IDENT 367
-#define MAX_LOCAL 368
-#define MAX_NICK_CHANGES 369
-#define MAX_NICK_TIME 370
-#define MAX_NUMBER 371
-#define MAX_TARGETS 372
-#define MESSAGE_LOCALE 373
-#define MIN_NONWILDCARD 374
-#define MIN_NONWILDCARD_SIMPLE 375
+#line 135 "ircd_parser.y"
+typedef union {
+  int number;
+  char *string;
+} YYSTYPE;
+#line 137 "y.tab.c"
+#define YYERRCODE 256
+#define ACCEPT_PASSWORD 257
+#define ACTION 258
+#define ADMIN 259
+#define AFTYPE 260
+#define T_ALLOW 261
+#define ANTI_NICK_FLOOD 262
+#define ANTI_SPAM_EXIT_MESSAGE_TIME 263
+#define AUTOCONN 264
+#define T_BLOCK 265
+#define BURST_AWAY 266
+#define BURST_TOPICWHO 267
+#define BYTES 268
+#define KBYTES 269
+#define MBYTES 270
+#define GBYTES 271
+#define TBYTES 272
+#define CALLER_ID_WAIT 273
+#define CAN_FLOOD 274
+#define CAN_IDLE 275
+#define CHANNEL 276
+#define CIDR_BITLEN_IPV4 277
+#define CIDR_BITLEN_IPV6 278
+#define CIPHER_PREFERENCE 279
+#define CLASS 280
+#define COMPRESSED 281
+#define COMPRESSION_LEVEL 282
+#define CONNECT 283
+#define CONNECTFREQ 284
+#define CRYPTLINK 285
+#define DEFAULT_CIPHER_PREFERENCE 286
+#define DEFAULT_FLOODCOUNT 287
+#define DEFAULT_SPLIT_SERVER_COUNT 288
+#define DEFAULT_SPLIT_USER_COUNT 289
+#define DENY 290
+#define DESCRIPTION 291
+#define DIE 292
+#define DISABLE_AUTH 293
+#define DISABLE_FAKE_CHANNELS 294
+#define DISABLE_HIDDEN 295
+#define DISABLE_LOCAL_CHANNELS 296
+#define DISABLE_REMOTE_COMMANDS 297
+#define DOT_IN_IP6_ADDR 298
+#define DOTS_IN_IDENT 299
+#define DURATION 300
+#define EGDPOOL_PATH 301
+#define EMAIL 302
+#define ENABLE 303
+#define ENCRYPTED 304
+#define EXCEED_LIMIT 305
+#define EXEMPT 306
+#define FAILED_OPER_NOTICE 307
+#define FAKENAME 308
+#define IRCD_FLAGS 309
+#define FLATTEN_LINKS 310
+#define FFAILED_OPERLOG 311
+#define FKILLLOG 312
+#define FKLINELOG 313
+#define FGLINELOG 314
+#define FIOERRLOG 315
+#define FOPERLOG 316
+#define FOPERSPYLOG 317
+#define FUSERLOG 318
+#define GECOS 319
+#define GENERAL 320
+#define GLINE 321
+#define GLINES 322
+#define GLINE_EXEMPT 323
+#define GLINE_LOG 324
+#define GLINE_TIME 325
+#define GLINE_MIN_CIDR 326
+#define GLINE_MIN_CIDR6 327
+#define GLOBAL_KILL 328
+#define IRCD_AUTH 329
+#define NEED_IDENT 330
+#define HAVENT_READ_CONF 331
+#define HELP_CHANNEL 332
+#define HIDDEN 333
+#define HIDDEN_ADMIN 334
+#define HIDDEN_NAME 335
+#define HIDDEN_OPER 336
+#define HIDE_SERVER_IPS 337
+#define HIDE_SERVERS 338
+#define HIDE_SPOOF_IPS 339
+#define HOST 340
+#define HUB 341
+#define HUB_MASK 342
+#define IDLETIME 343
+#define IGNORE_BOGUS_TS 344
+#define INVISIBLE_ON_CONNECT 345
+#define IP 346
+#define KILL 347
+#define KILL_CHASE_TIME_LIMIT 348
+#define KLINE 349
+#define KLINE_EXEMPT 350
+#define KLINE_REASON 351
+#define KLINE_WITH_REASON 352
+#define KNOCK_DELAY 353
+#define KNOCK_DELAY_CHANNEL 354
+#define LAZYLINK 355
+#define LEAF_MASK 356
+#define LINKS_DELAY 357
+#define LISTEN 358
+#define T_LOG 359
+#define LOGGING 360
+#define LOG_LEVEL 361
+#define MAX_ACCEPT 362
+#define MAX_BANS 363
+#define MAX_CHANS_PER_USER 364
+#define MAX_GLOBAL 365
+#define MAX_IDENT 366
+#define MAX_LOCAL 367
+#define MAX_NICK_CHANGES 368
+#define MAX_NICK_TIME 369
+#define MAX_NUMBER 370
+#define MAX_TARGETS 371
+#define MESSAGE_LOCALE 372
+#define MIN_NONWILDCARD 373
+#define MIN_NONWILDCARD_SIMPLE 374
+#define MODE_Z 375
 #define MODULE 376
 #define MODULES 377
 #define NAME 378
@@ -589,2961 +396,2110 @@
 #define WARN 515
 #define WARN_NO_NLINE 516
 #define WEBIRC 517
-
-
-
-
-/* Copy the first part of user declarations.  */
-#line 25 "ircd_parser.y"
-
-
-#define YY_NO_UNPUT
-#include <sys/types.h>
-
-#include "stdinc.h"
-#include "ircd.h"
-#include "tools.h"
-#include "list.h"
-#include "s_conf.h"
-#include "event.h"
-#include "s_log.h"
-#include "client.h"	/* for UMODE_ALL only */
-#include "pcre.h"
-#include "irc_string.h"
-#include "irc_getaddrinfo.h"
-#include "sprintf_irc.h"
-#include "memory.h"
-#include "modules.h"
-#include "s_serv.h" /* for CAP_LL / IsCapable */
-#include "hostmask.h"
-#include "send.h"
-#include "listener.h"
-#include "resv.h"
-#include "numeric.h"
-#include "s_user.h"
-
-#ifdef HAVE_LIBCRYPTO
-#include <openssl/rsa.h>
-#include <openssl/bio.h>
-#include <openssl/pem.h>
-#endif
-
-static char *class_name = NULL;
-static struct ConfItem *yy_conf = NULL;
-static struct AccessItem *yy_aconf = NULL;
-static struct MatchItem *yy_match_item = NULL;
-static struct ClassItem *yy_class = NULL;
-static char *yy_class_name = NULL;
-
-static dlink_list col_conf_list  = { NULL, NULL, 0 };
-static dlink_list hub_conf_list  = { NULL, NULL, 0 };
-static dlink_list leaf_conf_list = { NULL, NULL, 0 };
-static unsigned int listener_flags = 0;
-static unsigned int regex_ban = 0;
-static char userbuf[IRCD_BUFSIZE];
-static char hostbuf[IRCD_BUFSIZE];
-static char reasonbuf[REASONLEN + 1];
-static char gecos_name[REALLEN * 4];
-
-extern dlink_list gdeny_items; /* XXX */
-
-static char *resv_reason = NULL;
-static char *listener_address = NULL;
-static int not_atom = 0;
-
-struct CollectItem
-{
-  dlink_node node;
-  char *name;
-  char *user;
-  char *host;
-  char *passwd;
-  int  port;
-  int  flags;
-#ifdef HAVE_LIBCRYPTO
-  char *rsa_public_key_file;
-  RSA *rsa_public_key;
-#endif
+const short yylhs[] = {                                        -1,
+    0,    0,    5,    5,    5,    5,    5,    5,    5,    5,
+    5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+    5,    5,    5,    5,    5,    2,    2,    1,    1,    1,
+    1,    1,    1,    4,    4,    3,    3,    3,    3,   25,
+   27,   27,   28,   28,   28,   29,   30,   13,   31,   31,
+   32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+   32,   32,   32,   32,   45,   42,   33,   44,   36,   37,
+   38,   39,   40,   34,   43,   41,   35,    6,   46,   46,
+   47,   47,   47,   47,   48,   50,   49,    7,   51,   51,
+   52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+   52,   52,   52,   53,   54,   57,   64,   58,   62,   59,
+   60,   63,   61,   55,   55,   55,   55,   55,   55,   55,
+   56,   66,    8,   65,   65,   67,   67,   69,   69,   69,
+   69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
+   69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
+   69,   70,   68,   71,   72,   90,   91,   76,   93,   75,
+   94,   94,   95,   95,   95,   95,   95,   95,   95,   95,
+   95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+   95,   95,   77,   78,   84,   79,   80,   81,   82,   83,
+   85,   86,   87,   73,   74,   88,   89,   96,   92,   97,
+   97,  100,   98,  101,   98,   99,   99,   99,   99,   99,
+   99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
+   99,   99,  102,   26,  103,  103,  104,  104,  104,  105,
+  106,  108,   10,  107,  107,  109,  109,  111,  111,  111,
+  111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
+  111,  112,  110,  115,  116,  118,  119,  120,  121,  122,
+  123,  124,  113,  114,  117,  125,   11,  128,  127,  129,
+  129,  130,  130,  126,  126,  131,  131,  131,  131,  131,
+  136,  132,  135,  135,  137,  137,  133,  134,  138,   12,
+  139,  139,  140,  140,  140,  140,  140,  140,  140,  140,
+  140,  140,  140,  140,  140,  140,  140,  140,  140,  141,
+  142,  151,  143,  156,  157,  144,  158,  158,  161,  159,
+  162,  159,  160,  160,  160,  160,  160,  160,  160,  160,
+  160,  160,  145,  146,  147,  154,  148,  149,  150,  152,
+  153,  155,  163,   15,  164,  164,  165,  165,  165,  165,
+  166,  167,  168,  169,   16,  170,  170,  171,  171,  171,
+  171,  172,  173,  175,  174,  176,  176,  177,  177,  177,
+  177,  177,  177,  177,  177,  177,  177,  177,  177,  178,
+   17,  179,  179,  180,  180,  180,  181,  183,  182,  184,
+  184,  185,  185,  185,  185,  185,  185,  185,  185,  185,
+  185,  185,  187,   18,  186,  186,  188,  188,  190,  190,
+  190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+  190,  190,  190,  190,  190,  190,  190,  190,  191,  189,
+  192,  193,  194,  195,  197,  196,  196,  198,  210,  199,
+  211,  211,  214,  212,  215,  212,  213,  213,  213,  213,
+  213,  213,  207,  204,  206,  205,  203,  209,  200,  201,
+  202,  208,  216,   19,  219,  218,  220,  220,  221,  217,
+  217,  222,  222,  222,  222,  223,  224,  225,   20,  226,
+  226,  227,  227,  227,  228,  229,   21,  230,  230,  231,
+  231,  232,  233,   24,  236,  235,  237,  237,  238,  234,
+  234,  239,  239,  239,  239,  240,  241,   22,  242,  242,
+  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+  243,  243,  243,  243,  243,  243,  243,  243,  243,  243,
+  243,  243,  243,  243,  243,  243,  243,  295,  296,  293,
+  297,  298,  294,  254,  244,  245,  284,  246,  247,  248,
+  249,  250,  251,  252,  253,  289,  255,  256,  257,  258,
+  259,  299,  261,  266,  262,  262,  264,  264,  263,  278,
+  279,  265,  267,  268,  269,  270,  272,  271,  260,  274,
+  283,  285,  286,  275,  276,  291,  292,  288,  300,  277,
+  301,  301,  302,  302,  302,  302,  302,  302,  302,  302,
+  302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
+  302,  303,  273,  304,  304,  305,  305,  305,  305,  305,
+  305,  305,  305,  305,  305,  305,  305,  305,  305,  305,
+  305,  305,  305,  305,  305,  281,  282,  280,  287,  290,
+  306,   23,  307,  307,  308,  308,  308,  308,  308,  308,
+  308,  309,  310,  315,  311,  316,  316,  317,  317,  312,
+  313,  318,  314,  319,  319,  320,  320,    9,  321,  321,
+  322,  322,  322,  322,  322,  322,  322,  322,  322,  322,
+  322,  322,  322,  322,  322,  322,  322,  322,  322,  340,
+  335,  323,  324,  325,  326,  328,  329,  330,  331,  327,
+  332,  333,  334,  336,  337,  338,  339,   14,  341,  341,
+  342,  342,  342,  342,  342,  342,  342,  342,  343,  344,
+  348,  345,  347,  346,  349,
 };
-
-static void
-free_collect_item(struct CollectItem *item)
-{
-  MyFree(item->name);
-  MyFree(item->user);
-  MyFree(item->host);
-  MyFree(item->passwd);
-#ifdef HAVE_LIBCRYPTO
-  MyFree(item->rsa_public_key_file);
-#endif
-  MyFree(item);
-}
-
-static void
-unhook_hub_leaf_confs(void)
-{
-  dlink_node *ptr;
-  dlink_node *next_ptr;
-  struct CollectItem *yy_hconf;
-  struct CollectItem *yy_lconf;
-
-  DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
-  {
-    yy_hconf = ptr->data;
-    dlinkDelete(&yy_hconf->node, &hub_conf_list);
-    free_collect_item(yy_hconf);
-  }
-
-  DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
-  {
-    yy_lconf = ptr->data;
-    dlinkDelete(&yy_lconf->node, &leaf_conf_list);
-    free_collect_item(yy_lconf);
-  }
-}
-
-
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-#line 134 "ircd_parser.y"
-{
-  int number;
-  char *string;
-}
-/* Line 193 of yacc.c.  */
-#line 734 "y.tab.c"
-	YYSTYPE;
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-
-
-
-/* Copy the second part of user declarations.  */
-
-
-/* Line 216 of yacc.c.  */
-#line 747 "y.tab.c"
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
-#else
-typedef short int yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(msgid) msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
-    int i;
-#endif
-{
-  return i;
-}
-#endif
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#     ifndef _STDLIB_H
-#      define _STDLIB_H 1
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined _STDLIB_H \
-       && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef _STDLIB_H
-#    define _STDLIB_H 1
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(To, From, Count) \
-      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-#  else
-#   define YYCOPY(To, From, Count)		\
-      do					\
-	{					\
-	  YYSIZE_T yyi;				\
-	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];		\
-	}					\
-      while (YYID (0))
-#  endif
-# endif
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack)					\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack, Stack, yysize);				\
-	Stack = &yyptr->Stack;						\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
-
-#endif
-
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  2
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1437
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  268
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  350
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  754
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  1518
-
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   517
-
-#define YYTRANSLATE(YYX)						\
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const yytype_uint16 yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,   267,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,   263,
-       2,   266,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   265,     2,   264,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
-     185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
-     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
-     255,   256,   257,   258,   259,   260,   261,   262
+const short yylen[] = {                                         2,
+    0,    2,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    2,    2,    0,    1,    2,    3,    3,
+    3,    3,    3,    0,    1,    2,    3,    3,    3,    5,
+    2,    1,    1,    1,    2,    4,    4,    5,    2,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    2,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    5,    2,    1,
+    1,    1,    1,    2,    4,    4,    4,    5,    2,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    2,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    0,    7,    0,    1,    2,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    2,    4,    1,    4,    4,    4,    4,    4,    0,    5,
+    3,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    0,    5,    3,
+    1,    0,    3,    0,    2,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    0,    6,    2,    1,    1,    1,    2,    4,
+    4,    0,    7,    0,    1,    2,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    2,    4,    1,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    0,    6,    0,    5,    3,
+    1,    1,    1,    2,    1,    1,    1,    1,    1,    2,
+    0,    5,    3,    1,    1,    3,    4,    4,    0,    6,
+    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    2,    4,
+    4,    4,    4,    4,    0,    5,    3,    1,    0,    3,
+    0,    2,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    0,    6,    2,    1,    1,    1,    1,    2,
+    4,    4,    4,    0,    6,    2,    1,    1,    1,    1,
+    2,    4,    4,    0,    5,    3,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    0,
+    6,    2,    1,    1,    1,    2,    4,    0,    5,    3,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    0,    7,    0,    1,    2,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    2,    4,    1,
+    4,    4,    4,    4,    4,    4,    4,    4,    0,    5,
+    3,    1,    0,    3,    0,    2,    1,    1,    1,    1,
+    1,    1,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    0,    6,    0,    5,    3,    1,    1,    2,
+    1,    1,    1,    1,    1,    4,    4,    0,    6,    2,
+    1,    1,    1,    1,    4,    4,    5,    2,    1,    1,
+    1,    4,    0,    6,    0,    5,    3,    1,    1,    2,
+    1,    1,    1,    1,    1,    4,    4,    5,    2,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    0,    5,
+    3,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    0,    5,    3,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    4,    4,    4,    4,    4,
+    0,    6,    2,    1,    1,    1,    1,    1,    1,    1,
+    1,    4,    4,    0,    5,    3,    1,    1,    1,    4,
+    4,    0,    5,    3,    1,    1,    1,    5,    2,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    1,    4,
+    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+    4,    4,    4,    4,    4,    4,    4,    5,    2,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,    4,    4,
+    4,    4,    4,    4,    4,
 };
-
-#if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
-      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
-      39,    41,    43,    45,    47,    49,    52,    55,    56,    58,
-      61,    65,    69,    73,    77,    81,    82,    84,    87,    91,
-      95,    99,   105,   108,   110,   112,   114,   117,   122,   127,
-     133,   136,   138,   140,   142,   144,   146,   148,   150,   152,
-     154,   156,   158,   160,   162,   164,   167,   172,   177,   182,
-     187,   192,   197,   202,   207,   212,   217,   222,   227,   232,
-     238,   241,   243,   245,   247,   249,   252,   257,   262,   267,
-     273,   276,   278,   280,   282,   284,   286,   288,   290,   292,
-     294,   296,   298,   300,   302,   305,   310,   315,   320,   325,
-     330,   335,   340,   345,   350,   355,   360,   365,   370,   375,
-     380,   385,   390,   395,   396,   404,   405,   407,   410,   412,
-     414,   416,   418,   420,   422,   424,   426,   428,   430,   432,
-     434,   436,   438,   440,   442,   444,   446,   448,   450,   452,
-     454,   456,   458,   461,   466,   468,   473,   478,   483,   488,
-     493,   494,   500,   504,   506,   508,   510,   512,   514,   516,
-     518,   520,   522,   524,   526,   528,   530,   532,   534,   536,
-     538,   540,   542,   544,   546,   551,   556,   561,   566,   571,
-     576,   581,   586,   591,   596,   601,   606,   611,   616,   621,
-     622,   628,   632,   634,   635,   639,   640,   643,   645,   647,
-     649,   651,   653,   655,   657,   659,   661,   663,   665,   667,
-     669,   671,   673,   675,   677,   678,   685,   688,   690,   692,
-     694,   697,   702,   707,   708,   716,   717,   719,   722,   724,
-     726,   728,   730,   732,   734,   736,   738,   740,   742,   744,
-     746,   748,   750,   753,   758,   760,   765,   770,   775,   780,
-     785,   790,   795,   800,   805,   810,   815,   820,   821,   828,
-     829,   835,   839,   841,   843,   845,   848,   850,   852,   854,
-     856,   858,   861,   862,   868,   872,   874,   876,   880,   885,
-     890,   891,   898,   901,   903,   905,   907,   909,   911,   913,
-     915,   917,   919,   921,   923,   925,   927,   929,   931,   933,
-     935,   938,   943,   948,   953,   958,   963,   964,   970,   974,
-     976,   977,   981,   982,   985,   987,   989,   991,   993,   995,
-     997,   999,  1001,  1003,  1005,  1010,  1015,  1020,  1025,  1030,
-    1035,  1040,  1045,  1050,  1055,  1056,  1063,  1066,  1068,  1070,
-    1072,  1074,  1077,  1082,  1087,  1092,  1093,  1100,  1103,  1105,
-    1107,  1109,  1111,  1114,  1119,  1124,  1125,  1131,  1135,  1137,
-    1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,  1157,
-    1159,  1161,  1162,  1169,  1172,  1174,  1176,  1178,  1181,  1186,
-    1187,  1193,  1197,  1199,  1201,  1203,  1205,  1207,  1209,  1211,
-    1213,  1215,  1217,  1219,  1221,  1222,  1230,  1231,  1233,  1236,
-    1238,  1240,  1242,  1244,  1246,  1248,  1250,  1252,  1254,  1256,
-    1258,  1260,  1262,  1264,  1266,  1268,  1270,  1272,  1274,  1276,
-    1279,  1284,  1286,  1291,  1296,  1301,  1306,  1311,  1316,  1321,
-    1326,  1327,  1333,  1337,  1339,  1340,  1344,  1345,  1348,  1350,
-    1352,  1354,  1356,  1358,  1360,  1365,  1370,  1375,  1380,  1385,
-    1390,  1395,  1400,  1405,  1410,  1411,  1418,  1419,  1425,  1429,
-    1431,  1433,  1436,  1438,  1440,  1442,  1444,  1446,  1451,  1456,
-    1457,  1464,  1467,  1469,  1471,  1473,  1475,  1480,  1485,  1491,
-    1494,  1496,  1498,  1500,  1505,  1506,  1513,  1514,  1520,  1524,
-    1526,  1528,  1531,  1533,  1535,  1537,  1539,  1541,  1546,  1551,
-    1557,  1560,  1562,  1564,  1566,  1568,  1570,  1572,  1574,  1576,
-    1578,  1580,  1582,  1584,  1586,  1588,  1590,  1592,  1594,  1596,
-    1598,  1600,  1602,  1604,  1606,  1608,  1610,  1612,  1614,  1616,
-    1618,  1620,  1622,  1624,  1626,  1628,  1630,  1632,  1634,  1636,
-    1638,  1640,  1642,  1644,  1646,  1648,  1650,  1652,  1654,  1656,
-    1658,  1660,  1662,  1664,  1666,  1668,  1670,  1672,  1674,  1679,
-    1684,  1689,  1694,  1699,  1704,  1709,  1714,  1719,  1724,  1729,
-    1734,  1739,  1744,  1749,  1754,  1759,  1764,  1769,  1774,  1779,
-    1784,  1789,  1794,  1799,  1804,  1809,  1814,  1819,  1824,  1829,
-    1834,  1839,  1844,  1849,  1854,  1859,  1864,  1869,  1874,  1879,
-    1884,  1889,  1894,  1899,  1904,  1909,  1914,  1919,  1924,  1925,
-    1931,  1935,  1937,  1939,  1941,  1943,  1945,  1947,  1949,  1951,
-    1953,  1955,  1957,  1959,  1961,  1963,  1965,  1967,  1969,  1971,
-    1973,  1975,  1976,  1982,  1986,  1988,  1990,  1992,  1994,  1996,
-    1998,  2000,  2002,  2004,  2006,  2008,  2010,  2012,  2014,  2016,
-    2018,  2020,  2022,  2024,  2026,  2028,  2033,  2038,  2043,  2048,
-    2053,  2054,  2061,  2064,  2066,  2068,  2070,  2072,  2074,  2076,
-    2078,  2080,  2085,  2090,  2091,  2097,  2101,  2103,  2105,  2107,
-    2112,  2117,  2118,  2124,  2128,  2130,  2132,  2134,  2140,  2143,
-    2145,  2147,  2149,  2151,  2153,  2155,  2157,  2159,  2161,  2163,
-    2165,  2167,  2169,  2171,  2173,  2175,  2177,  2179,  2181,  2183,
-    2188,  2193,  2198,  2203,  2208,  2213,  2218,  2223,  2228,  2233,
-    2238,  2243,  2248,  2253,  2258,  2263,  2268,  2273,  2279,  2282,
-    2284,  2286,  2288,  2290,  2292,  2294,  2296,  2298,  2300,  2305,
-    2310,  2315,  2320,  2325,  2330
+const short yydefred[] = {                                      1,
+    0,    0,    0,    0,  232,  403,  478,    0,  493,    0,
+  671,  289,  463,  266,    0,    0,  122,  343,    0,    0,
+  354,  380,  223,    2,    3,    4,    5,    6,    7,    8,
+    9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
+   19,   20,   21,   22,   23,   24,   25,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   80,   81,   82,   83,  719,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  700,  701,  702,
+  703,  704,  705,  706,  707,  708,  709,  710,  711,  712,
+  713,  714,  715,  716,  717,  718,  253,    0,  235,  430,
+    0,  406,    0,  491,    0,    0,  489,  490,    0,  567,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  642,    0,  619,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  510,  511,  512,
+  513,  514,  515,  516,  517,  518,  519,  520,  521,  522,
+  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
+  533,  534,  535,  536,  537,  538,  539,  540,  541,  542,
+  543,  544,  545,  546,  547,  548,  549,  550,  551,  552,
+  553,  554,  555,  556,  557,  558,  559,  560,  561,  562,
+  563,  564,  565,  566,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,   90,   91,   92,   93,   94,   95,   96,   97,
+   98,   99,  100,  101,  102,    0,    0,    0,    0,   42,
+   43,   44,  153,    0,  125,    0,  748,    0,    0,    0,
+    0,    0,    0,    0,    0,  740,  741,  742,  743,  744,
+  745,  746,  747,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,   50,   51,
+   52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
+   62,   63,    0,    0,    0,   84,    0,    0,    0,    0,
+   79,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+  699,    0,    0,  484,    0,    0,    0,  481,  482,  483,
+    0,    0,  488,  505,    0,    0,  495,    0,  504,  501,
+  502,  503,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  509,
+  681,  692,    0,    0,  684,    0,    0,    0,  674,  675,
+  676,  677,  678,  679,  680,    0,    0,    0,    0,    0,
+  315,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  292,  293,  294,  295,  296,  297,  298,
+  299,  300,  301,  302,  303,  304,  305,  306,  307,  308,
+  475,    0,  465,    0,    0,  474,  471,  472,  473,    0,
+  268,    0,    0,    0,    0,  277,  275,  276,  278,  279,
+  103,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,   89,   45,    0,    0,    0,   41,
+    0,    0,    0,    0,    0,    0,  346,  347,  348,  349,
+    0,    0,    0,    0,    0,    0,    0,    0,  739,   64,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,   49,    0,    0,  364,    0,    0,
+  357,  358,  359,  360,    0,    0,  388,    0,  383,  384,
+  385,    0,    0,    0,    0,  226,  227,  228,    0,    0,
+    0,   78,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  698,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  237,  238,  239,
+  240,  241,  242,  243,  244,  245,  246,  247,  248,  249,
+  250,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  439,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  408,  409,  410,  411,  412,  413,  414,  415,
+  416,  417,  418,  419,  420,  421,  422,  423,  424,  425,
+  426,  427,    0,    0,    0,  480,    0,  487,    0,    0,
+    0,    0,  500,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  508,    0,    0,    0,    0,    0,    0,    0,
+  673,  309,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  291,
+    0,    0,    0,    0,  470,  280,    0,    0,    0,    0,
+    0,  274,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+   88,    0,    0,   40,    0,    0,    0,    0,    0,  198,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  159,    0,    0,    0,    0,  127,
+  128,  129,  130,  131,  132,  133,  134,  135,  136,  137,
+  138,  139,  140,  141,  142,  143,  144,  145,  146,  147,
+  148,  149,  150,  350,    0,    0,    0,    0,  345,    0,
+    0,    0,    0,    0,    0,    0,  738,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+   48,  361,    0,    0,    0,    0,  356,  386,    0,    0,
+    0,  382,  229,    0,    0,    0,  225,   87,   86,   85,
+  735,  732,  731,  720,  722,    0,    0,    0,    0,    0,
+   27,   28,  726,  727,  730,  728,  733,  734,  736,  737,
+  729,  721,  723,  724,  725,  251,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+  236,  428,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  407,    0,    0,  479,  492,    0,    0,    0,
+  494,  579,  583,  570,  600,  613,  612,  668,  617,  577,
+  670,  609,  615,  578,  568,  569,  586,  575,  608,  576,
+  589,  574,  588,  587,  582,  581,  580,  610,  607,  666,
+  667,  590,  604,  601,  665,  646,  662,  663,  647,  648,
+  649,  650,  657,  651,  660,  664,  653,  658,  654,  659,
+  652,  656,  655,  661,    0,  645,  606,  623,  639,  640,
+  624,  625,  626,  627,  634,  628,  637,  641,  630,  635,
+  631,  636,  629,  633,  632,  638,    0,  622,  599,  602,
+  616,  572,  611,  573,  603,  592,  597,  598,  595,  596,
+  593,  594,  585,  584,    0,    0,    0,   35,   36,  669,
+  618,  605,  614,  571,  591,    0,    0,    0,    0,    0,
+    0,  672,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  290,    0,
+    0,    0,  464,    0,    0,    0,    0,    0,  284,  267,
+  107,  113,  111,  110,  112,  108,  109,  106,  114,  120,
+  115,  119,  117,  118,  116,  105,  104,  121,   46,   47,
+  151,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  126,    0,    0,    0,  344,
+  754,  749,  753,  751,  755,  750,  752,   69,   73,   77,
+   67,   71,   70,   66,   65,   72,   68,   76,   74,   75,
+    0,    0,    0,  355,    0,    0,  381,    0,    0,  224,
+   29,   30,   31,   32,   33,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  233,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  404,
+  485,  486,  506,  507,  499,    0,  498,  643,    0,  620,
+    0,   37,   38,   39,  697,  696,    0,  695,  683,  682,
+  689,  688,    0,  687,  691,  690,  336,  313,  314,  335,
+  319,    0,  318,    0,  338,  334,  333,  342,  337,  311,
+  341,  340,  339,  312,  310,  477,  469,    0,  468,  476,
+  273,  272,    0,  271,  288,  287,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  123,  352,  353,  351,  362,  368,  374,  379,
+  377,  376,  373,  369,  372,  375,  370,  378,  371,    0,
+  367,  363,  387,  392,  398,  402,  401,  400,  397,  393,
+  396,  399,  394,  395,    0,  391,  230,  231,  263,  264,
+  257,  259,  261,  260,  258,  252,  265,  256,  254,  255,
+  262,  434,  436,  437,  457,  462,  461,  456,  455,  454,
+  438,  443,    0,  442,    0,  431,  459,  460,  429,  435,
+  453,  433,  458,  432,  496,    0,  644,  621,  693,    0,
+  685,    0,    0,  316,    0,  327,  328,  324,  330,  326,
+  325,  332,  329,  331,  323,  322,  466,    0,  269,    0,
+  286,  283,  282,  193,  158,  191,  156,  202,    0,  201,
+    0,  189,  183,  194,  195,  186,  152,  190,  155,  192,
+  184,  185,  157,  197,  196,  182,  163,  179,  180,  164,
+  165,  166,  167,  174,  168,  177,  181,  170,  175,  171,
+  176,  169,  173,  172,  178,    0,  162,  188,  154,  187,
+  365,    0,  389,    0,    0,  440,    0,  450,  451,  448,
+  449,  447,  452,  446,  497,  694,  686,  320,  317,  467,
+  270,    0,  199,    0,  214,  212,  221,  211,  206,  215,
+  219,  208,  216,  218,  213,  207,  220,  222,  217,  209,
+  210,  205,  160,    0,  366,  390,  444,  441,  203,  200,
+  161,
 };
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     269,     0,    -1,    -1,   269,   270,    -1,   296,    -1,   302,
-      -1,   317,    -1,   587,    -1,   361,    -1,   380,    -1,   394,
-      -1,   280,    -1,   608,    -1,   420,    -1,   427,    -1,   437,
-      -1,   446,    -1,   477,    -1,   487,    -1,   493,    -1,   507,
-      -1,   571,    -1,   497,    -1,   275,    -1,   355,    -1,     1,
-     263,    -1,     1,   264,    -1,    -1,   272,    -1,   134,   271,
-      -1,   134,   173,   271,    -1,   134,   174,   271,    -1,   134,
-     175,   271,    -1,   134,   176,   271,    -1,   134,   177,   271,
-      -1,    -1,   274,    -1,   134,   273,    -1,   134,    14,   273,
-      -1,   134,    15,   273,    -1,   134,    16,   273,    -1,   122,
-     265,   276,   264,   263,    -1,   276,   277,    -1,   277,    -1,
-     278,    -1,   279,    -1,     1,   263,    -1,   121,   266,   156,
-     263,    -1,   151,   266,   156,   263,    -1,   181,   265,   281,
-     264,   263,    -1,   281,   282,    -1,   282,    -1,   285,    -1,
-     292,    -1,   295,    -1,   287,    -1,   288,    -1,   289,    -1,
-     290,    -1,   291,    -1,   294,    -1,   284,    -1,   293,    -1,
-     286,    -1,   283,    -1,     1,   263,    -1,   170,   266,   156,
-     263,    -1,   168,   266,   156,   263,    -1,   123,   266,   156,
-     263,    -1,   184,   266,   156,   263,    -1,    37,   266,   156,
-     263,    -1,   126,   266,   156,   263,    -1,   125,   266,   156,
-     263,    -1,   183,   266,   156,   263,    -1,    78,   266,   156,
-     263,    -1,   257,   266,   156,   263,    -1,   258,   266,   156,
-     263,    -1,   229,   266,   134,   263,    -1,    87,   266,   199,
-     263,    -1,     5,   265,   297,   264,   263,    -1,   297,   298,
-      -1,   298,    -1,   299,    -1,   301,    -1,   300,    -1,     1,
-     263,    -1,   123,   266,   156,   263,    -1,    48,   266,   156,
-     263,    -1,    37,   266,   156,   263,    -1,   106,   265,   303,
-     264,   263,    -1,   303,   304,    -1,   304,    -1,   305,    -1,
-     306,    -1,   315,    -1,   316,    -1,   307,    -1,   309,    -1,
-     311,    -1,   312,    -1,   314,    -1,   310,    -1,   313,    -1,
-     308,    -1,     1,   263,    -1,   221,   266,   156,   263,    -1,
-     141,   266,   156,   263,    -1,    64,   266,   156,   263,    -1,
-      57,   266,   156,   263,    -1,    62,   266,   156,   263,    -1,
-      63,   266,   156,   263,    -1,    60,   266,   156,   263,    -1,
-      59,   266,   156,   263,    -1,    61,   266,   156,   263,    -1,
-      58,   266,   156,   263,    -1,   107,   266,   222,   263,    -1,
-     107,   266,   224,   263,    -1,   107,   266,   228,   263,    -1,
-     107,   266,   226,   263,    -1,   107,   266,   227,   263,    -1,
-     107,   266,   225,   263,    -1,   107,   266,   223,   263,    -1,
-     255,   266,   199,   263,    -1,    -1,   139,   318,   319,   265,
-     320,   264,   263,    -1,    -1,   323,    -1,   320,   321,    -1,
-     321,    -1,   322,    -1,   324,    -1,   325,    -1,   344,    -1,
-     345,    -1,   329,    -1,   328,    -1,   333,    -1,   334,    -1,
-     336,    -1,   337,    -1,   338,    -1,   339,    -1,   340,    -1,
-     335,    -1,   341,    -1,   342,    -1,   343,    -1,   346,    -1,
-     347,    -1,   326,    -1,   327,    -1,   348,    -1,     1,   263,
-      -1,   123,   266,   156,   263,    -1,   156,    -1,   249,   266,
-     156,   263,    -1,   150,   266,   156,   263,    -1,    50,   266,
-     199,   263,    -1,   169,   266,   156,   263,    -1,    26,   266,
-     156,   263,    -1,    -1,   237,   330,   266,   331,   263,    -1,
-     331,   267,   332,    -1,   332,    -1,   206,    -1,   209,    -1,
-     210,    -1,   212,    -1,   213,    -1,   216,    -1,   234,    -1,
-     230,    -1,   232,    -1,   238,    -1,   235,    -1,   215,    -1,
-     231,    -1,   233,    -1,   217,    -1,   241,    -1,   207,    -1,
-     208,    -1,   220,    -1,   188,    -1,    74,   266,   199,   263,
-      -1,   164,   266,   199,   263,    -1,   165,   266,   199,   263,
-      -1,    95,   266,   199,   263,    -1,   259,   266,   199,   263,
-      -1,   248,   266,   199,   263,    -1,    67,   266,   199,   263,
-      -1,   128,   266,   199,   263,    -1,    38,   266,   199,   263,
-      -1,   162,   266,   199,   263,    -1,     5,   266,   199,   263,
-      -1,    80,   266,   199,   263,    -1,    82,   266,   199,   263,
-      -1,   231,   266,   199,   263,    -1,   188,   266,   199,   263,
-      -1,    -1,    55,   349,   266,   350,   263,    -1,   350,   267,
-     351,    -1,   351,    -1,    -1,   133,   352,   354,    -1,    -1,
-     353,   354,    -1,    74,    -1,   164,    -1,    95,    -1,   248,
-      -1,   259,    -1,    67,    -1,    38,    -1,   162,    -1,     5,
-      -1,    80,    -1,   128,    -1,   231,    -1,   144,    -1,    82,
-      -1,   165,    -1,    50,    -1,   188,    -1,    -1,   262,   356,
-     265,   357,   264,   263,    -1,   357,   358,    -1,   358,    -1,
-     359,    -1,   360,    -1,     1,   263,    -1,    86,   266,   156,
-     263,    -1,   150,   266,   156,   263,    -1,    -1,    26,   362,
-     363,   265,   364,   264,   263,    -1,    -1,   367,    -1,   364,
-     365,    -1,   365,    -1,   366,    -1,   377,    -1,   378,    -1,
-     368,    -1,   369,    -1,   379,    -1,   370,    -1,   371,    -1,
-     372,    -1,   373,    -1,   374,    -1,   375,    -1,   376,    -1,
-       1,   263,    -1,   123,   266,   156,   263,    -1,   156,    -1,
-     153,   266,   272,   263,    -1,   154,   266,   272,   263,    -1,
-     137,   266,   134,   263,    -1,    30,   266,   272,   263,    -1,
-     116,   266,   134,   263,    -1,   111,   266,   134,   263,    -1,
-     113,   266,   134,   263,    -1,   112,   266,   134,   263,    -1,
-     178,   266,   274,   263,    -1,    23,   266,   134,   263,    -1,
-      24,   266,   134,   263,    -1,   136,   266,   134,   263,    -1,
-      -1,   104,   381,   265,   386,   264,   263,    -1,    -1,    55,
-     383,   266,   384,   263,    -1,   384,   267,   385,    -1,   385,
-      -1,   236,    -1,    79,    -1,   386,   387,    -1,   387,    -1,
-     388,    -1,   382,    -1,   392,    -1,   393,    -1,     1,   263,
-      -1,    -1,   155,   266,   390,   389,   263,    -1,   390,   267,
-     391,    -1,   391,    -1,   134,    -1,   134,   204,   134,    -1,
-      92,   266,   156,   263,    -1,    86,   266,   156,   263,    -1,
-      -1,    75,   395,   265,   396,   264,   263,    -1,   396,   397,
-      -1,   397,    -1,   398,    -1,   399,    -1,   401,    -1,   403,
-      -1,   410,    -1,   411,    -1,   412,    -1,   414,    -1,   415,
-      -1,   416,    -1,   400,    -1,   417,    -1,   418,    -1,   413,
-      -1,   419,    -1,   402,    -1,     1,   263,    -1,   249,   266,
-     156,   263,    -1,   150,   266,   156,   263,    -1,   193,   266,
-     199,   263,    -1,    26,   266,   156,   263,    -1,    50,   266,
-     199,   263,    -1,    -1,    55,   404,   266,   405,   263,    -1,
-     405,   267,   406,    -1,   406,    -1,    -1,   133,   407,   409,
-      -1,    -1,   408,   409,    -1,   193,    -1,    51,    -1,    96,
-      -1,    76,    -1,    20,    -1,    21,    -1,   132,    -1,    69,
-      -1,   172,    -1,   124,    -1,    96,   266,   199,   263,    -1,
-      76,   266,   199,   263,    -1,    51,   266,   199,   263,    -1,
-      20,   266,   199,   263,    -1,   132,   266,   199,   263,    -1,
-      69,   266,   199,   263,    -1,   192,   266,   156,   263,    -1,
-     160,   266,   156,   263,    -1,   159,   266,   134,   263,    -1,
-     124,   266,   199,   263,    -1,    -1,   171,   421,   265,   422,
-     264,   263,    -1,   422,   423,    -1,   423,    -1,   424,    -1,
-     425,    -1,   426,    -1,     1,   263,    -1,   158,   266,   156,
-     263,    -1,    22,   266,   156,   263,    -1,   127,   266,   156,
-     263,    -1,    -1,   186,   428,   265,   429,   264,   263,    -1,
-     429,   430,    -1,   430,    -1,   431,    -1,   432,    -1,   433,
-      -1,     1,   263,    -1,   123,   266,   156,   263,    -1,   249,
-     266,   156,   263,    -1,    -1,   189,   434,   266,   435,   263,
-      -1,   435,   267,   436,    -1,   436,    -1,    95,    -1,   245,
-      -1,   248,    -1,   259,    -1,   246,    -1,   240,    -1,   171,
-      -1,   247,    -1,   239,    -1,   220,    -1,   250,    -1,   205,
-      -1,    -1,   187,   438,   265,   439,   264,   263,    -1,   439,
-     440,    -1,   440,    -1,   441,    -1,   442,    -1,     1,   263,
-      -1,   123,   266,   156,   263,    -1,    -1,   189,   443,   266,
-     444,   263,    -1,   444,   267,   445,    -1,   445,    -1,    95,
-      -1,   245,    -1,   248,    -1,   259,    -1,   246,    -1,   240,
-      -1,   171,    -1,   247,    -1,   239,    -1,   220,    -1,   205,
-      -1,    -1,    29,   447,   448,   265,   449,   264,   263,    -1,
-      -1,   452,    -1,   449,   450,    -1,   450,    -1,   451,    -1,
-     453,    -1,   454,    -1,   455,    -1,   456,    -1,   458,    -1,
-     457,    -1,   459,    -1,   460,    -1,   473,    -1,   474,    -1,
-     475,    -1,   471,    -1,   468,    -1,   470,    -1,   469,    -1,
-     467,    -1,   476,    -1,   472,    -1,     1,   263,    -1,   123,
-     266,   156,   263,    -1,   156,    -1,    86,   266,   156,   263,
-      -1,   257,   266,   156,   263,    -1,   179,   266,   156,   263,
-      -1,     3,   266,   156,   263,    -1,   155,   266,   134,   263,
-      -1,     6,   266,   218,   263,    -1,     6,   266,   219,   263,
-      -1,    54,   266,   156,   263,    -1,    -1,    55,   461,   266,
-     462,   263,    -1,   462,   267,   463,    -1,   463,    -1,    -1,
-     133,   464,   466,    -1,    -1,   465,   466,    -1,   101,    -1,
-      27,    -1,    31,    -1,    10,    -1,    12,    -1,   243,    -1,
-     169,   266,   156,   263,    -1,    50,   266,   199,   263,    -1,
-      31,   266,   199,   263,    -1,    27,   266,   199,   263,    -1,
-      10,   266,   199,   263,    -1,   243,   266,   199,   263,    -1,
-      88,   266,   156,   263,    -1,   102,   266,   156,   263,    -1,
-      26,   266,   156,   263,    -1,    25,   266,   156,   263,    -1,
-      -1,    93,   478,   265,   483,   264,   263,    -1,    -1,   189,
-     480,   266,   481,   263,    -1,   481,   267,   482,    -1,   482,
-      -1,   161,    -1,   483,   484,    -1,   484,    -1,   485,    -1,
-     486,    -1,   479,    -1,     1,    -1,   249,   266,   156,   263,
-      -1,   158,   266,   156,   263,    -1,    -1,    36,   488,   265,
-     489,   264,   263,    -1,   489,   490,    -1,   490,    -1,   491,
-      -1,   492,    -1,     1,    -1,    92,   266,   156,   263,    -1,
-     158,   266,   156,   263,    -1,    52,   265,   494,   264,   263,
-      -1,   494,   495,    -1,   495,    -1,   496,    -1,     1,    -1,
-      92,   266,   156,   263,    -1,    -1,    65,   498,   265,   503,
-     264,   263,    -1,    -1,   189,   500,   266,   501,   263,    -1,
-     501,   267,   502,    -1,   502,    -1,   161,    -1,   503,   504,
-      -1,   504,    -1,   505,    -1,   506,    -1,   499,    -1,     1,
-      -1,   123,   266,   156,   263,    -1,   158,   266,   156,   263,
-      -1,    66,   265,   508,   264,   263,    -1,   508,   509,    -1,
-     509,    -1,   517,    -1,   518,    -1,   520,    -1,   521,    -1,
-     522,    -1,   523,    -1,   524,    -1,   525,    -1,   526,    -1,
-     527,    -1,   516,    -1,   529,    -1,   530,    -1,   531,    -1,
-     532,    -1,   548,    -1,   534,    -1,   536,    -1,   538,    -1,
-     537,    -1,   541,    -1,   535,    -1,   542,    -1,   543,    -1,
-     544,    -1,   545,    -1,   547,    -1,   546,    -1,   562,    -1,
-     549,    -1,   553,    -1,   554,    -1,   558,    -1,   539,    -1,
-     540,    -1,   568,    -1,   566,    -1,   567,    -1,   550,    -1,
-     519,    -1,   551,    -1,   552,    -1,   569,    -1,   557,    -1,
-     528,    -1,   570,    -1,   555,    -1,   556,    -1,   512,    -1,
-     515,    -1,   510,    -1,   511,    -1,   513,    -1,   514,    -1,
-     533,    -1,     1,    -1,    72,   266,   134,   263,    -1,    73,
-     266,   134,   263,    -1,    12,   266,   199,   263,    -1,   256,
-     266,   199,   263,    -1,   163,   266,   272,   263,    -1,   185,
-     266,   199,   263,    -1,    94,   266,   134,   263,    -1,    85,
-     266,   199,   263,    -1,    90,   266,   199,   263,    -1,    43,
-     266,   199,   263,    -1,    53,   266,   199,   263,    -1,     8,
-     266,   199,   263,    -1,   115,   266,   272,   263,    -1,   114,
-     266,   134,   263,    -1,   108,   266,   134,   263,    -1,     9,
-     266,   272,   263,    -1,   203,   266,   272,   263,    -1,   202,
-     266,   272,   263,    -1,    77,   266,   134,   263,    -1,    98,
-     266,   199,   263,    -1,    97,   266,   156,   263,    -1,    91,
-     266,   199,   263,    -1,   261,   266,   199,   263,    -1,   194,
-     266,   199,   263,    -1,   197,   266,   199,   263,    -1,   198,
-     266,   199,   263,    -1,   196,   266,   199,   263,    -1,   196,
-     266,   200,   263,    -1,   195,   266,   199,   263,    -1,   195,
-     266,   200,   263,    -1,   148,   266,   272,   263,    -1,    19,
-     266,   272,   263,    -1,   140,   266,   199,   263,    -1,   149,
-     266,   272,   263,    -1,   190,   266,   199,   263,    -1,   131,
-     266,   199,   263,    -1,   244,   266,   199,   263,    -1,   143,
-     266,   199,   263,    -1,   118,   266,   156,   263,    -1,    89,
-     266,   272,   263,    -1,    45,   266,   134,   263,    -1,   117,
-     266,   134,   263,    -1,   182,   266,   156,   263,    -1,    32,
-     266,   156,   263,    -1,    28,   266,   134,   263,    -1,   251,
-     266,   199,   263,    -1,    47,   266,   156,   263,    -1,   152,
-     266,   199,   263,    -1,    39,   266,   199,   263,    -1,   242,
-     266,   272,   263,    -1,    -1,   145,   559,   266,   560,   263,
-      -1,   560,   267,   561,    -1,   561,    -1,   206,    -1,   209,
-      -1,   210,    -1,   212,    -1,   213,    -1,   216,    -1,   234,
-      -1,   230,    -1,   232,    -1,   238,    -1,   235,    -1,   215,
-      -1,   231,    -1,   233,    -1,   217,    -1,   241,    -1,   207,
-      -1,   208,    -1,   220,    -1,    -1,   142,   563,   266,   564,
-     263,    -1,   564,   267,   565,    -1,   565,    -1,   206,    -1,
-     209,    -1,   210,    -1,   212,    -1,   213,    -1,   216,    -1,
-     234,    -1,   230,    -1,   232,    -1,   238,    -1,   235,    -1,
-     215,    -1,   231,    -1,   233,    -1,   217,    -1,   241,    -1,
-     207,    -1,   208,    -1,   220,    -1,   188,    -1,   119,   266,
-     134,   263,    -1,   120,   266,   134,   263,    -1,    33,   266,
-     134,   263,    -1,   211,   266,   274,   263,    -1,    44,   266,
-     199,   263,    -1,    -1,    68,   572,   265,   573,   264,   263,
-      -1,   573,   574,    -1,   574,    -1,   575,    -1,   576,    -1,
-     577,    -1,   581,    -1,   582,    -1,   583,    -1,     1,    -1,
-      49,   266,   199,   263,    -1,    46,   266,   272,   263,    -1,
-      -1,   106,   578,   266,   579,   263,    -1,   579,   267,   580,
-      -1,   580,    -1,   201,    -1,    11,    -1,   249,   266,   156,
-     263,    -1,   123,   266,   156,   263,    -1,    -1,     4,   584,
-     266,   585,   263,    -1,   585,   267,   586,    -1,   586,    -1,
-     201,    -1,    11,    -1,    22,   265,   588,   264,   263,    -1,
-     588,   589,    -1,   589,    -1,   592,    -1,   593,    -1,   594,
-      -1,   595,    -1,   600,    -1,   596,    -1,   597,    -1,   598,
-      -1,   599,    -1,   601,    -1,   602,    -1,   603,    -1,   591,
-      -1,   604,    -1,   605,    -1,   606,    -1,   607,    -1,   590,
-      -1,     1,    -1,    40,   266,   199,   263,    -1,   166,   266,
-     199,   263,    -1,    42,   266,   199,   263,    -1,   252,   266,
-     199,   263,    -1,   253,   266,   199,   263,    -1,   254,   266,
-     199,   263,    -1,    99,   266,   272,   263,    -1,   100,   266,
-     272,   263,    -1,   110,   266,   134,   263,    -1,   157,   266,
-     199,   263,    -1,   109,   266,   134,   263,    -1,    35,   266,
-     134,   263,    -1,    34,   266,   134,   263,    -1,   129,   266,
-     199,   263,    -1,   130,   266,   199,   263,    -1,    13,   266,
-     199,   263,    -1,   146,   266,   134,   263,    -1,   147,   266,
-     272,   263,    -1,   180,   265,   609,   264,   263,    -1,   609,
-     610,    -1,   610,    -1,   611,    -1,   612,    -1,   614,    -1,
-     616,    -1,   615,    -1,   613,    -1,   617,    -1,     1,    -1,
-      56,   266,   199,   263,    -1,    84,   266,   199,   263,    -1,
-      81,   266,   156,   263,    -1,   103,   266,   272,   263,    -1,
-      79,   266,   199,   263,    -1,    41,   266,   199,   263,    -1,
-      83,   266,   199,   263,    -1
+const short yydgoto[] = {                                       1,
+  921,  922, 1078, 1079,   24,   25,   26,   27,   28,   29,
+   30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
+   40,   41,   42,   43,   44,   45,  279,  280,  281,  282,
+  318,  319,  320,  321,  322,  323,  324,  325,  326,  327,
+  328,  329,  330,  331,  332,   73,   74,   75,   76,   77,
+  262,  263,  264,  265,  266,  267,  268,  269,  270,  271,
+  272,  273,  274,  275,  284,   62,  839,  285,  840,  841,
+  842,  843,  844,  845,  846,  847,  848,  849,  850,  851,
+  852,  853,  854,  855,  856,  857,  858,  859,  860,  861,
+  862,  863, 1161, 1466, 1467, 1146, 1429, 1430, 1512, 1492,
+ 1431,   68,  585,  586,  587,  588,  118,   50,  627,  119,
+  628,  629,  630,  631,  632,  633,  634,  635,  636,  637,
+  638,  639,  640,  641,   59,  505,  506,  787, 1293, 1294,
+  507,  508,  509,  510, 1118, 1299, 1119,   57,  473,  474,
+  475,  476,  477,  478,  479,  480,  481,  482,  483,  484,
+  485,  486,  487,  488,  489,  490,  767, 1272, 1273, 1416,
+ 1403, 1274,   63,  536,  537,  538,  539,  540,   66,  570,
+  571,  572,  573,  574,  894, 1340, 1341,   67,  578,  579,
+  580,  581,  900, 1355, 1356,  121,   51,  662,  122,  663,
+  664,  665,  666,  667,  668,  669,  670,  671,  672,  673,
+  674,  675,  676,  677,  678,  679,  680,  681,  682,  962,
+ 1383, 1384, 1484, 1475, 1385,   58,  495,  496,  782, 1288,
+ 1289,  497,  498,  499,   52,  367,  368,  369,  370,  126,
+  127,  128,   54,  378,  379,  691, 1246, 1247,  380,  381,
+  382,  187,  188,  189,  190,  191,  192,  193,  194,  195,
+  196,  197,  198,  199,  200,  201,  202,  203,  204,  205,
+  206,  207,  208,  209,  210,  211,  212,  213,  214,  215,
+  216,  217,  218,  219,  220,  221,  222,  223,  224,  225,
+  226,  227,  228,  229,  230,  231,  232,  233,  234,  235,
+  236,  237,  238,  239,  240,  241,  242,  243,  244,  418,
+ 1057, 1058,  416, 1035, 1036,   56,  448,  449,  450,  451,
+  452,  453,  454,  455,  757, 1263, 1264,  754, 1257, 1258,
+   97,   98,   99,  100,  101,  102,  103,  104,  105,  106,
+  107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
+  295,  296,  297,  298,  299,  300,  301,  302,  303,
 };
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   400,   400,   401,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
-     420,   421,   422,   423,   424,   425,   426,   430,   430,   431,
-     435,   439,   443,   447,   451,   457,   457,   458,   459,   460,
-     461,   468,   471,   471,   472,   472,   472,   474,   491,   502,
-     505,   506,   507,   507,   508,   508,   509,   509,   510,   510,
-     511,   512,   512,   513,   513,   514,   516,   550,   610,   624,
-     639,   648,   662,   671,   680,   689,   717,   747,   770,   820,
-     822,   822,   823,   823,   824,   824,   826,   835,   844,   857,
-     859,   860,   862,   862,   863,   864,   864,   865,   865,   866,
-     866,   867,   867,   868,   869,   871,   875,   879,   886,   893,
-     900,   907,   914,   921,   928,   935,   939,   943,   947,   951,
-     955,   959,   965,   975,   974,  1068,  1068,  1069,  1069,  1070,
-    1070,  1070,  1070,  1071,  1071,  1072,  1072,  1072,  1073,  1073,
-    1073,  1074,  1074,  1074,  1075,  1075,  1075,  1075,  1075,  1076,
-    1076,  1077,  1077,  1079,  1091,  1103,  1137,  1149,  1160,  1202,
-    1212,  1211,  1217,  1217,  1218,  1222,  1226,  1230,  1234,  1238,
-    1242,  1246,  1250,  1254,  1258,  1262,  1266,  1270,  1274,  1278,
-    1282,  1286,  1290,  1294,  1300,  1311,  1322,  1333,  1344,  1355,
-    1366,  1377,  1388,  1399,  1410,  1421,  1432,  1443,  1454,  1466,
-    1465,  1469,  1469,  1470,  1470,  1471,  1471,  1473,  1480,  1487,
-    1494,  1501,  1508,  1515,  1522,  1529,  1536,  1543,  1550,  1557,
-    1564,  1571,  1578,  1585,  1598,  1597,  1613,  1613,  1614,  1614,
-    1614,  1616,  1625,  1641,  1640,  1690,  1690,  1692,  1692,  1693,
-    1694,  1694,  1695,  1696,  1697,  1698,  1699,  1700,  1701,  1702,
-    1703,  1704,  1705,  1707,  1716,  1725,  1731,  1737,  1743,  1749,
-    1755,  1761,  1767,  1773,  1779,  1785,  1791,  1801,  1800,  1817,
-    1816,  1821,  1821,  1822,  1826,  1832,  1832,  1833,  1833,  1833,
-    1833,  1833,  1835,  1835,  1837,  1837,  1839,  1853,  1873,  1882,
-    1895,  1894,  1963,  1963,  1964,  1964,  1964,  1964,  1965,  1965,
-    1966,  1966,  1966,  1967,  1967,  1968,  1968,  1968,  1969,  1969,
-    1969,  1971,  2008,  2021,  2032,  2041,  2053,  2052,  2056,  2056,
-    2057,  2057,  2058,  2058,  2060,  2068,  2075,  2082,  2089,  2096,
-    2103,  2110,  2117,  2124,  2133,  2144,  2155,  2166,  2177,  2188,
-    2200,  2219,  2229,  2238,  2254,  2253,  2269,  2269,  2270,  2270,
-    2270,  2270,  2272,  2281,  2296,  2310,  2309,  2325,  2325,  2326,
-    2326,  2326,  2326,  2328,  2337,  2360,  2359,  2365,  2365,  2366,
-    2370,  2374,  2378,  2382,  2386,  2390,  2394,  2398,  2402,  2406,
-    2410,  2420,  2419,  2436,  2436,  2437,  2437,  2437,  2439,  2446,
-    2445,  2451,  2451,  2452,  2456,  2460,  2464,  2468,  2472,  2476,
-    2480,  2484,  2488,  2492,  2502,  2501,  2647,  2647,  2648,  2648,
-    2649,  2649,  2649,  2650,  2650,  2651,  2651,  2652,  2652,  2652,
-    2653,  2653,  2653,  2654,  2654,  2654,  2655,  2655,  2656,  2656,
-    2658,  2670,  2682,  2691,  2717,  2735,  2753,  2759,  2763,  2771,
-    2781,  2780,  2784,  2784,  2785,  2785,  2786,  2786,  2788,  2795,
-    2806,  2813,  2820,  2827,  2837,  2878,  2889,  2900,  2915,  2926,
-    2937,  2950,  2963,  2972,  3008,  3007,  3072,  3071,  3075,  3075,
-    3076,  3082,  3082,  3083,  3083,  3083,  3083,  3085,  3104,  3114,
-    3113,  3135,  3135,  3136,  3136,  3136,  3138,  3147,  3159,  3161,
-    3161,  3162,  3162,  3164,  3186,  3185,  3228,  3227,  3231,  3231,
-    3232,  3238,  3238,  3239,  3239,  3239,  3239,  3241,  3247,  3256,
-    3259,  3259,  3260,  3260,  3261,  3261,  3262,  3262,  3263,  3263,
-    3264,  3264,  3265,  3265,  3266,  3266,  3267,  3267,  3268,  3268,
-    3269,  3269,  3270,  3270,  3271,  3271,  3272,  3272,  3273,  3273,
-    3274,  3274,  3275,  3275,  3276,  3276,  3277,  3277,  3278,  3278,
-    3279,  3279,  3280,  3281,  3281,  3282,  3282,  3283,  3283,  3284,
-    3284,  3285,  3285,  3286,  3286,  3287,  3287,  3288,  3292,  3297,
-    3302,  3307,  3312,  3317,  3322,  3327,  3332,  3337,  3342,  3347,
-    3352,  3357,  3362,  3367,  3372,  3377,  3383,  3394,  3399,  3408,
-    3413,  3418,  3423,  3428,  3433,  3436,  3441,  3444,  3449,  3454,
-    3459,  3464,  3469,  3474,  3479,  3484,  3489,  3500,  3505,  3510,
-    3515,  3524,  3556,  3574,  3579,  3588,  3593,  3598,  3604,  3603,
-    3608,  3608,  3609,  3612,  3615,  3618,  3621,  3624,  3627,  3630,
-    3633,  3636,  3639,  3642,  3645,  3648,  3651,  3654,  3657,  3660,
-    3663,  3669,  3668,  3673,  3673,  3674,  3677,  3680,  3683,  3686,
-    3689,  3692,  3695,  3698,  3701,  3704,  3707,  3710,  3713,  3716,
-    3719,  3722,  3725,  3728,  3731,  3736,  3741,  3746,  3751,  3756,
-    3765,  3764,  3788,  3788,  3789,  3790,  3791,  3792,  3793,  3794,
-    3795,  3797,  3803,  3810,  3809,  3814,  3814,  3815,  3819,  3825,
-    3859,  3869,  3868,  3918,  3918,  3919,  3923,  3932,  3935,  3935,
-    3936,  3936,  3937,  3937,  3938,  3938,  3939,  3939,  3940,  3940,
-    3941,  3942,  3942,  3943,  3943,  3944,  3944,  3945,  3945,  3947,
-    3952,  3957,  3962,  3967,  3972,  3977,  3982,  3987,  3992,  3997,
-    4002,  4007,  4012,  4017,  4022,  4027,  4032,  4040,  4043,  4043,
-    4044,  4044,  4045,  4046,  4047,  4047,  4048,  4049,  4051,  4057,
-    4063,  4072,  4086,  4092,  4098
+const short yysindex[] = {                                      0,
+  298,  -24,  -87,  -85,    0,    0,    0,  -83,    0,  -65,
+    0,    0,    0,    0,  -61,  -53,    0,    0,  -37,  -33,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0, -236,  749, -317,
+ -314,    5, -234,    6,  416,    7,   27,   30,   34, -193,
+ -237, -280,   36,  116,  199,   40,   47,   58,   74,  106,
+  132,  133, -111,    0,    0,    0,    0,    0,  138,  141,
+  150,  154,  159,  163,  170,  173,  177,  205,  210,  218,
+  225,  226,  227,  229,  230,  234,  143,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,   89,    0,    0,
+  137,    0, -229,    0,  236, -113,    0,    0, -230,    0,
+  237,  240,  244,  253,  255,  259,  261,  271,  272,  276,
+  277,  278,  280,  281,  285,  295,  296,  303,  304,  305,
+  306,  308,  309,  310,  312,  313,  315,  317,  320,  321,
+  322,  326,  327,    0,  330,    0,  334,  340,  346,  351,
+  352,  353,  357,  358,  359,  361,  362,  363,  364,  366,
+  368,  369,  380,  381,  382,  385, -122,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0, -142,  571, -247, -214,  213,  386,
+  387,  389,  391,  396,  398,  399,  400,  402,  403,  404,
+  405,   37,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  300,  409,  414, -107,    0,
+    0,    0,    0,  356,    0, -226,    0,  434,  437,  439,
+  440,  441,  442,  443,  333,    0,    0,    0,    0,    0,
+    0,    0,    0,  450,  454,  455,  456,  458,  459,  460,
+  461,  463,  464,  465,  468,  469,  472,  -78,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0, -196, -205, -213,    0,  123,  125,  126,  479,
+    0,   85,  152,  167,   98,  104,  174,  174,  176,  178,
+  105,  112,  179,  174,  117,  118,  119,  121,  122,  523,
+    0,  329,  631,    0,  522,  525, -109,    0,    0,    0,
+  180,  531,    0,    0,  532,  533,    0, -104,    0,    0,
+    0,    0,  130,  174,  144,  174,  206,  188,  214,  148,
+  155,  156,  216,  197,  158,  222,  232,  242,  160,  174,
+  161,  162,  243,  208,  169,  246,  247,  174,  250,  215,
+  251,  252,  171,  190,  192,  572,  193,  581,  174,  174,
+  195,  174,  249,  200,  201,  203, -406, -374,  207,  209,
+  174,  174,  264,  174,  219,  220,  223,  231,  600,    0,
+    0,    0,  601,  603,    0,  604,  606,  -68,    0,    0,
+    0,    0,    0,    0,    0,  610,  615,  619,  620,  626,
+    0,  627,  630,  632,  636,  639,  640,  643,  644,  645,
+  647,  649,  182,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  655,    0,  657, -101,    0,    0,    0,    0,  625,
+    0,  658,  671,  674,  -84,    0,    0,    0,    0,    0,
+    0,  311,  325,  337,  338,  339,  341,  342,  343,  248,
+  345,  347,  287,  685,    0,    0,  354,  355,  692,    0,
+  550,  698,  702,  708,  709, -102,    0,    0,    0,    0,
+  318,  319,  323,  360,  328,  332,  174,  716,    0,    0,
+  370,  372,  344,  384,  388,  392,  393,  394,  397,  401,
+  390,  406,  407,  721,    0,  733,  713,    0,  732, -119,
+    0,    0,    0,    0,  737,  736,    0, -120,    0,    0,
+    0,  741,  746,  761, -121,    0,    0,    0,  765,  766,
+  767,    0,  769,  770,  772,  773,  774, -324,  776,  777,
+  778,  779,  780,  781,  782,  784,  785,  787,  788,  789,
+  790,    0,  793,  794,  796,  799,  801,  802,  803,  809,
+  816,  818,  820,  822,  824,  828,  102,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  831,  832,  835,  836,  839,  841,  842,  843,  845,
+  846,    0,  847,  848,  853,  857,  862,  863,  864,  865,
+  868,  136,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  481,  519,  872,    0,  877,    0,  526,  527,
+  881,  884,    0,  885,  886,  887,  889,  892,  893,  895,
+  897,  898,  900,  901,  902,  904,  905,  907,  909,  916,
+  918,  919,  920,  921,  922,  924,  925,  929,  931,  932,
+  933,  935,  939,  940,  941,  942,  715,  943,  798,  944,
+  945,  947,  948,  949,  952,  954,  955,  956,  958,  961,
+  962,  963,  964,  965,  966, -191,  967,  968,  969,  970,
+  972,  975,    0,  974,  174,  585,  979,  635,  637,  988,
+    0,    0,  596,  641,  597,  605,  996,  607,  608,  609,
+  612,  614,  656,  421,  659,  660,  618,  662,  999,    0,
+  663, 1008,  665, 1018,    0,    0, 1021,  668,  673,  696,
+ 1027,    0, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+ 1036, 1037, 1038, 1041, 1042, 1046, 1047, 1048, 1049, 1050,
+    0, 1051, 1052,    0, 1055, 1054, 1058, 1059, 1060,    0,
+ 1061, 1067, 1069, 1070, 1071, 1074, 1075, 1077, 1078, 1079,
+ 1080, 1081, 1083, 1084,    0, 1085, 1087, 1088,  -15,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  742,  743,  744, 1093,    0, 1097,
+ 1098, 1100, 1101, 1103, 1104, 1106,    0, 1107, 1108, 1109,
+ 1110, 1112, 1113, 1114, 1115, 1122, 1125, 1129, 1130, 1132,
+    0,    0,  786, 1131,  795, 1134,    0,    0,  806, 1135,
+ 1136,    0,    0,  813,  814, 1139,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  174,  174,  174,  174,  174,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  810,  821,  174,  838,
+  840,  844,  854,  817,  856,  859,  174,  174,  264, 1148,
+    0,    0,  819, -381,  755,  823,  860,  792,  797,  800,
+  861, 1159,  866,  867,  869,  870,  875,  871,  878,  825,
+  879, 1172,    0, 1173, 1176,    0,    0, 1183, 1190,  834,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    8,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,   10,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  264,  264,  264,    0,    0,    0,
+    0,    0,    0,    0,    0, -250, 1193, 1194, -248, 1196,
+ 1208,    0, 1215, 1216, 1217, 1233,  908, 1234, 1236, 1238,
+ 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,    0, 1247,
+  891, 1249,    0, -302, 1250, 1251,  852, 1268,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  873,  903,  874,  876, 1252,  880,  882,  883,  888,
+  890,  906,  894,  910,  896,  899,  911,  912,  913,  914,
+ 1254,  915,  927,  917, 1257,    0, 1259, 1260, 1261,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+ 1263,   48, 1265,    0, 1266,  623,    0, 1267, 1270,    0,
+    0,    0,    0,    0,    0, 1272, 1273, 1274, 1276, 1280,
+ 1281, 1282, 1284, 1286, 1287, 1288, 1290, 1292,    0, 1293,
+ 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,  976,
+ 1304, 1307, 1311, 1313, 1314, 1315, 1316, 1317, 1318,    0,
+    0,    0,    0,    0,    0,   12,    0,    0,  715,    0,
+  798,    0,    0,    0,    0,    0,   15,    0,    0,    0,
+    0,    0,   24,    0,    0,    0,    0,    0,    0,    0,
+    0,   32,    0, -241,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,   44,    0,    0,
+    0,    0,   52,    0,    0,    0,  989,  696, 1320, 1321,
+ 1322, 1323, 1324,  997, 1325, 1327, 1328, 1329, 1330, 1331,
+ 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339,  751, 1340,
+ 1341, 1342,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,   54,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,   56,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  151,    0, -256,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  834,    0,    0,    0, -250,
+    0, -248, -241,    0,  908,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  891,    0, -302,
+    0,    0,    0,    0,    0,    0,    0,    0,  157,    0,
+  613,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  184,    0,    0,    0,    0,
+    0,   48,    0,  623, -256,    0,  976,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  613,    0,  997,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  751,    0,    0,    0,    0,    0,    0,
+    0,
 };
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
-  "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
-  "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
-  "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
-  "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
-  "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
-  "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
-  "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
-  "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
-  "DISABLE_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
-  "DOT_IN_IP6_ADDR", "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL",
-  "ENABLE", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
-  "FAKENAME", "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
-  "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
-  "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
-  "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
-  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF",
-  "HELP_CHANNEL", "HIDDEN", "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER",
-  "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB",
-  "HUB_MASK", "IDLETIME", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP",
-  "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
-  "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LAZYLINK",
-  "LEAF_MASK", "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL",
-  "MAX_ACCEPT", "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL",
-  "MAX_IDENT", "MAX_LOCAL", "MAX_NICK_CHANGES", "MAX_NICK_TIME",
-  "MAX_NUMBER", "MAX_TARGETS", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
-  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
-  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
-  "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
-  "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
-  "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
-  "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
-  "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
-  "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
-  "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
-  "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
-  "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
-  "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "RESV", "RESV_EXEMPT",
-  "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD",
-  "SERVERHIDE", "SERVERINFO", "SERVLINK_PATH", "SERVICES_NAME", "IRCD_SID",
-  "TKLINE_EXPIRE_NOTICES", "T_SHARED", "T_CLUSTER", "T_SNOOP", "TYPE",
-  "SHORT_MOTD", "SILENT", "SPOOF", "SPOOF_NOTICE", "STATS_E_DISABLED",
-  "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY",
-  "STATS_P_OPER_ONLY", "TBOOL", "TMASKED", "T_REJECT", "TS_MAX_DELTA",
-  "TS_WARN_DELTA", "TWODOTS", "T_ALL", "T_BOTS", "T_SOFTCALLERID",
-  "T_CALLERID", "T_CCONN", "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF",
-  "T_DEBUG", "T_DRONE", "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4",
-  "T_IPV6", "T_LOCOPS", "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR",
-  "T_L_INFO", "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS",
-  "T_NCHANGE", "T_OPERWALL", "T_REJ", "T_SERVNOTICE", "T_SKILL", "T_SPY",
-  "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
-  "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
-  "TRESV", "UNKLINE", "USER", "T_USERMODE", "USE_EGD", "USE_EXCEPT",
-  "USE_INVEX", "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST",
-  "VHOST6", "XLINE", "WARN", "WARN_NO_NLINE", "WEBIRC", "';'", "'}'",
-  "'{'", "'='", "','", "$accept", "conf", "conf_item", "timespec_",
-  "timespec", "sizespec_", "sizespec", "modules_entry", "modules_items",
-  "modules_item", "modules_module", "modules_path", "serverinfo_entry",
-  "serverinfo_items", "serverinfo_item", "serverinfo_ssl_certificate_file",
-  "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
-  "serverinfo_description", "serverinfo_network_name",
-  "serverinfo_network_desc", "serverinfo_services_name",
-  "serverinfo_help_channel", "serverinfo_vhost", "serverinfo_vhost6",
-  "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
-  "admin_item", "admin_name", "admin_email", "admin_description",
-  "logging_entry", "logging_items", "logging_item", "logging_path",
-  "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
-  "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
-  "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
-  "logging_log_level", "logging_use_logging", "oper_entry", "@1",
-  "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
-  "oper_user", "oper_password", "oper_encrypted",
-  "oper_rsa_public_key_file", "oper_class", "oper_umodes", "@2",
-  "oper_umodes_items", "oper_umodes_item", "oper_global_kill",
-  "oper_remote", "oper_remoteban", "oper_kline", "oper_xline",
-  "oper_unkline", "oper_gline", "oper_nick_changes", "oper_die",
-  "oper_rehash", "oper_admin", "oper_hidden_admin", "oper_hidden_oper",
-  "oper_operwall", "oper_snoop", "oper_flags", "@3", "oper_flags_items",
-  "oper_flags_item", "@4", "@5", "oper_flags_item_atom", "webirc_entry",
-  "@6", "webirc_items", "webirc_item", "webirc_host", "webirc_passwd",
-  "class_entry", "@7", "class_name_b", "class_items", "class_item",
-  "class_name", "class_name_t", "class_ping_time", "class_ping_warning",
-  "class_number_per_ip", "class_connectfreq", "class_max_number",
-  "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
-  "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
-  "class_number_per_cidr", "listen_entry", "@8", "listen_flags", "@9",
-  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
-  "listen_port", "@10", "port_items", "port_item", "listen_address",
-  "listen_host", "auth_entry", "@11", "auth_items", "auth_item",
-  "auth_user", "auth_passwd", "auth_spoof_notice", "auth_class",
-  "auth_encrypted", "auth_flags", "@12", "auth_flags_items",
-  "auth_flags_item", "@13", "@14", "auth_flags_item_atom",
-  "auth_kline_exempt", "auth_need_ident", "auth_exceed_limit",
-  "auth_can_flood", "auth_no_tilde", "auth_gline_exempt", "auth_spoof",
-  "auth_redir_serv", "auth_redir_port", "auth_need_password", "resv_entry",
-  "@15", "resv_items", "resv_item", "resv_creason", "resv_channel",
-  "resv_nick", "shared_entry", "@16", "shared_items", "shared_item",
-  "shared_name", "shared_user", "shared_type", "@17", "shared_types",
-  "shared_type_item", "cluster_entry", "@18", "cluster_items",
-  "cluster_item", "cluster_name", "cluster_type", "@19", "cluster_types",
-  "cluster_type_item", "connect_entry", "@20", "connect_name_b",
-  "connect_items", "connect_item", "connect_name", "connect_name_t",
-  "connect_host", "connect_vhost", "connect_send_password",
-  "connect_accept_password", "connect_port", "connect_aftype",
-  "connect_fakename", "connect_flags", "@21", "connect_flags_items",
-  "connect_flags_item", "@22", "@23", "connect_flags_item_atom",
-  "connect_rsa_public_key_file", "connect_encrypted", "connect_cryptlink",
-  "connect_compressed", "connect_auto", "connect_topicburst",
-  "connect_hub_mask", "connect_leaf_mask", "connect_class",
-  "connect_cipher_preference", "kill_entry", "@24", "kill_type", "@25",
-  "kill_type_items", "kill_type_item", "kill_items", "kill_item",
-  "kill_user", "kill_reason", "deny_entry", "@26", "deny_items",
-  "deny_item", "deny_ip", "deny_reason", "exempt_entry", "exempt_items",
-  "exempt_item", "exempt_ip", "gecos_entry", "@27", "gecos_flags", "@28",
-  "gecos_flags_items", "gecos_flags_item", "gecos_items", "gecos_item",
-  "gecos_name", "gecos_reason", "general_entry", "general_items",
-  "general_item", "general_gline_min_cidr", "general_gline_min_cidr6",
-  "general_burst_away", "general_use_whois_actually",
-  "general_reject_hold_time", "general_tkline_expire_notices",
-  "general_kill_chase_time_limit", "general_hide_spoof_ips",
-  "general_ignore_bogus_ts", "general_disable_remote_commands",
-  "general_failed_oper_notice", "general_anti_nick_flood",
-  "general_max_nick_time", "general_max_nick_changes",
-  "general_max_accept", "general_anti_spam_exit_message_time",
-  "general_ts_warn_delta", "general_ts_max_delta",
-  "general_havent_read_conf", "general_kline_with_reason",
-  "general_kline_reason", "general_invisible_on_connect",
-  "general_warn_no_nline", "general_stats_e_disabled",
-  "general_stats_o_oper_only", "general_stats_P_oper_only",
-  "general_stats_k_oper_only", "general_stats_i_oper_only",
-  "general_pace_wait", "general_caller_id_wait",
-  "general_opers_bypass_callerid", "general_pace_wait_simple",
-  "general_short_motd", "general_no_oper_flood",
-  "general_true_no_oper_flood", "general_oper_pass_resv",
-  "general_message_locale", "general_idletime", "general_dots_in_ident",
-  "general_max_targets", "general_servlink_path",
-  "general_default_cipher_preference", "general_compression_level",
-  "general_use_egd", "general_egdpool_path", "general_ping_cookie",
-  "general_disable_auth", "general_throttle_time", "general_oper_umodes",
-  "@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes", "@30",
-  "umode_items", "umode_item", "general_min_nonwildcard",
-  "general_min_nonwildcard_simple", "general_default_floodcount",
-  "general_client_flood", "general_dot_in_ip6_addr", "gline_entry", "@31",
-  "gline_items", "gline_item", "gline_enable", "gline_duration",
-  "gline_logging", "@32", "gline_logging_types", "gline_logging_type_item",
-  "gline_user", "gline_server", "gline_action", "@33", "gdeny_types",
-  "gdeny_type_item", "channel_entry", "channel_items", "channel_item",
-  "channel_disable_fake_channels", "channel_restrict_channels",
-  "channel_disable_local_channels", "channel_use_except",
-  "channel_use_invex", "channel_use_knock", "channel_knock_delay",
-  "channel_knock_delay_channel", "channel_max_chans_per_user",
-  "channel_quiet_on_ban", "channel_max_bans",
-  "channel_default_split_user_count", "channel_default_split_server_count",
-  "channel_no_create_on_split", "channel_no_join_on_split",
-  "channel_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
-  "serverhide_entry", "serverhide_items", "serverhide_item",
-  "serverhide_flatten_links", "serverhide_hide_servers",
-  "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
-  "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
+const short yyrindex[] = {                                      0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0, 1279,
+ 1283,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0, 1285,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0, 1344,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0, 1345,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0, 1344, 1344, 1344, 1344, 1344,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0, 1345, 1345, 1345,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  471,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,  211, 1346,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0, -253,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  661,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,  471,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0, -253,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  661,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,
 };
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
-static const yytype_uint16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
-     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
-     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
-     455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
-     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
-     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
-     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
-     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
-     515,   516,   517,    59,   125,   123,    61,    44
+const short yygindex[] = {                                      0,
+ -347, -435, -431,-1031,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0, 1128,    0,    0,
+    0, 1091,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0, 1343,    0,    0,    0,
+    0, 1149,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  573,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0, -100,    0,    0,  -81,  -82,    0,
+    0,    0,    0,  830,    0,    0,    0,    0,    0,    0,
+  791,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,   -3,
+  923,    0,    0,    0,    0,    0,  124,    0,    0,  946,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,   16,   17,
+    0,    0,    0,    0,  926,    0,    0,    0,    0,    0,
+  855,    0,    0,    0,    0,    0,  -49,    0,    0,  849,
+    0,    0,    0,    0,  -50,    0,    0,    0,    0,  764,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  -48,  -45,    0,    0,    0,    0,    0,    0,    0,
+   13,  937,    0,    0,    0,    0, 1066,    0,    0,    0,
+ 1308,    0,    0,    0,    0,    0,    0,   39, 1062,    0,
+    0,    0, 1255,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  185,    0,    0,  189,    0,    0,  991,    0,    0,
+    0,    0,    0,    0,    0,    0,   35,    0,    0,   41,
+    0, 1347,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0, 1150,    0,    0,    0,    0,    0,    0,    0,
 };
-# endif
-
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   268,   269,   269,   270,   270,   270,   270,   270,   270,
-     270,   270,   270,   270,   270,   270,   270,   270,   270,   270,
-     270,   270,   270,   270,   270,   270,   270,   271,   271,   272,
-     272,   272,   272,   272,   272,   273,   273,   274,   274,   274,
-     274,   275,   276,   276,   277,   277,   277,   278,   279,   280,
-     281,   281,   282,   282,   282,   282,   282,   282,   282,   282,
-     282,   282,   282,   282,   282,   282,   283,   284,   285,   286,
-     287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
-     297,   297,   298,   298,   298,   298,   299,   300,   301,   302,
-     303,   303,   304,   304,   304,   304,   304,   304,   304,   304,
-     304,   304,   304,   304,   304,   305,   306,   307,   308,   309,
-     310,   311,   312,   313,   314,   315,   315,   315,   315,   315,
-     315,   315,   316,   318,   317,   319,   319,   320,   320,   321,
-     321,   321,   321,   321,   321,   321,   321,   321,   321,   321,
-     321,   321,   321,   321,   321,   321,   321,   321,   321,   321,
-     321,   321,   321,   322,   323,   324,   325,   326,   327,   328,
-     330,   329,   331,   331,   332,   332,   332,   332,   332,   332,
-     332,   332,   332,   332,   332,   332,   332,   332,   332,   332,
-     332,   332,   332,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,   342,   343,   344,   345,   346,   347,   349,
-     348,   350,   350,   352,   351,   353,   351,   354,   354,   354,
-     354,   354,   354,   354,   354,   354,   354,   354,   354,   354,
-     354,   354,   354,   354,   356,   355,   357,   357,   358,   358,
-     358,   359,   360,   362,   361,   363,   363,   364,   364,   365,
-     365,   365,   365,   365,   365,   365,   365,   365,   365,   365,
-     365,   365,   365,   366,   367,   368,   369,   370,   371,   372,
-     373,   374,   375,   376,   377,   378,   379,   381,   380,   383,
-     382,   384,   384,   385,   385,   386,   386,   387,   387,   387,
-     387,   387,   389,   388,   390,   390,   391,   391,   392,   393,
-     395,   394,   396,   396,   397,   397,   397,   397,   397,   397,
-     397,   397,   397,   397,   397,   397,   397,   397,   397,   397,
-     397,   398,   399,   400,   401,   402,   404,   403,   405,   405,
-     407,   406,   408,   406,   409,   409,   409,   409,   409,   409,
-     409,   409,   409,   409,   410,   411,   412,   413,   414,   415,
-     416,   417,   418,   419,   421,   420,   422,   422,   423,   423,
-     423,   423,   424,   425,   426,   428,   427,   429,   429,   430,
-     430,   430,   430,   431,   432,   434,   433,   435,   435,   436,
-     436,   436,   436,   436,   436,   436,   436,   436,   436,   436,
-     436,   438,   437,   439,   439,   440,   440,   440,   441,   443,
-     442,   444,   444,   445,   445,   445,   445,   445,   445,   445,
-     445,   445,   445,   445,   447,   446,   448,   448,   449,   449,
-     450,   450,   450,   450,   450,   450,   450,   450,   450,   450,
-     450,   450,   450,   450,   450,   450,   450,   450,   450,   450,
-     451,   452,   453,   454,   455,   456,   457,   458,   458,   459,
-     461,   460,   462,   462,   464,   463,   465,   463,   466,   466,
-     466,   466,   466,   466,   467,   468,   469,   470,   471,   472,
-     473,   474,   475,   476,   478,   477,   480,   479,   481,   481,
-     482,   483,   483,   484,   484,   484,   484,   485,   486,   488,
-     487,   489,   489,   490,   490,   490,   491,   492,   493,   494,
-     494,   495,   495,   496,   498,   497,   500,   499,   501,   501,
-     502,   503,   503,   504,   504,   504,   504,   505,   506,   507,
-     508,   508,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
-     509,   509,   509,   509,   509,   509,   509,   509,   510,   511,
-     512,   513,   514,   515,   516,   517,   518,   519,   520,   521,
-     522,   523,   524,   525,   526,   527,   528,   529,   530,   531,
-     532,   533,   534,   535,   536,   536,   537,   537,   538,   539,
-     540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
-     550,   551,   552,   553,   554,   555,   556,   557,   559,   558,
-     560,   560,   561,   561,   561,   561,   561,   561,   561,   561,
-     561,   561,   561,   561,   561,   561,   561,   561,   561,   561,
-     561,   563,   562,   564,   564,   565,   565,   565,   565,   565,
-     565,   565,   565,   565,   565,   565,   565,   565,   565,   565,
-     565,   565,   565,   565,   565,   566,   567,   568,   569,   570,
-     572,   571,   573,   573,   574,   574,   574,   574,   574,   574,
-     574,   575,   576,   578,   577,   579,   579,   580,   580,   581,
-     582,   584,   583,   585,   585,   586,   586,   587,   588,   588,
-     589,   589,   589,   589,   589,   589,   589,   589,   589,   589,
-     589,   589,   589,   589,   589,   589,   589,   589,   589,   590,
-     591,   592,   593,   594,   595,   596,   597,   598,   599,   600,
-     601,   602,   603,   604,   605,   606,   607,   608,   609,   609,
-     610,   610,   610,   610,   610,   610,   610,   610,   611,   612,
-     613,   614,   615,   616,   617
+#define YYTABLESIZE 1462
+const short yytable[] = {                                     599,
+  600,  747,  439,  906,  901,  896,  606, 1478,  491, 1479,
+  445,  372,  445,  340, 1255,  685, 1261,  529,  276,   69,
+  692,  124,  868,  784, 1480,  374,  364,  445, 1481,  532,
+ 1291,  445, 1406, 1407,   46,   48,  695,   49,  697,   53,
+  791,  500,  582, 1252, 1253, 1254,  564,  738,  739,  533,
+  575, 1249,  711, 1251,   70, 1396,  760,   55, 1400,  566,
+  719,   60,  249, 1408,  598,   71, 1248, 1402, 1250,   61,
+ 1395,  730,  731, 1399,  733, 1405, 1075, 1076, 1077,  740,
+  741, 1409, 1401,  744,  745,   64,  748, 1418, 1410,   65,
+ 1404, 1221, 1222,  117,  501, 1420,  120, 1472, 1482, 1474,
+   47,  445, 1417,  916,  917,  918,  919,  920, 1411, 1165,
+ 1419,  125, 1471,  441, 1473,  442,  365,  250,  251,  252,
+  253,  254,  255,  256,  257,  502,  583,  123,  129,  245,
+  283,  503,  336,  130,  582,  575,  566, 1412,  277,  131,
+  132,   72,  124,  133,   69, 1413,  364,  375,  276,  246,
+  134,  374,  247,  532,  491,  534,  248,  443,  286,  135,
+  444,  524,  333,  136,  137,  492,  337,  258,  278,  334,
+  138,  500,  576,  533,  139,  140,  141,  304,  142,   70,
+  335,  567,  376,  366,  143, 1414,  535,  441, 1292,  442,
+   71,  584,  338,  339, 1477,  504,  493,  746,  342,  876,
+ 1494,  343,  259,  144,  145, 1256, 1415, 1262,  146, 1476,
+  344,  362,  305,  377,  345, 1493,  147,  445,  583,  346,
+  148,  149,  150,  347,  501,  151,  950, 1514,  152,  153,
+  348,  443,  125,  349,  444,  446,  365,  350,  577,  154,
+  815, 1483, 1513,  816,  445,  155,  156,  568,  157,  158,
+  159,  160,  161,  306,  285,  502,  494,  576,  567,  363,
+  972,  503,  307,  162,  817,  351,   72,  360,  277,  285,
+  352,  511,  163,  375,  164,  165,  818,  166,  353,  534,
+  167,  168,  260,  584,  169,  354,  355,  356,  819,  357,
+  358,  445,  249,  820,  359,  170,  371,  383,  278,  308,
+  384,  309,  310,  366,  385,  821,  779,  569,  376,  446,
+  535,  492,  822,  386,  171,  387,  261,  172,  823,  388,
+  824,  389,  173,  577,  568,  504,  174,  175,  176,  177,
+  178,  390,  391,  825,  179,  180,  392,  393,  394,  377,
+  395,  396,  493,  181,  311,  397,  312,  250,  251,  252,
+  253,  254,  255,  256,  257,  398,  399,  613,  526,  313,
+  314,  447,  826,  400,  401,  402,  403,  827,  404,  405,
+  406,  287,  407,  408,  182,  409,  183,  410,  614,  615,
+  411,  412,  413,  184,  569,  616,  414,  415,  185,  828,
+  417,  642,  643,  186,  419,  644, 1328,  258,   78,  645,
+  420,  829,  494,  830,  831,  315,  421, 1087,  832,   79,
+  288,  422,  423,  424,  646,  647,  648,  425,  426,  427,
+  649,  428,  429,  430,  431,  289,  432,  833,  433,  434,
+   80,   81,  259,  316,  317,  447,   82,  456,   83,  650,
+  435,  436,  437,  651,  652,  438,  512,  513,  290,  514,
+  291,  515,  292,  293,  304,  457,  516,  548,  517,  518,
+  519,  458,  520,  521,  522,  523,  617,  618,  619,  527,
+  834,  620,  294, 1329,  528,  653,  835,  654,  531,  621,
+ 1201, 1202, 1203, 1204, 1205,  459,  460,  836,  837,  305,
+  461,  655,  622,  623,  541,   84,   85,  542,  838,  543,
+  544,  545,  546,  547,  462,   86,   87, 1330,  550,  624,
+  625,  463,  260,  656,  551,  552,  553, 1218,  554,  555,
+  556,  557, 1331,  558,  559,  560,   88,   89,  561,  562,
+  306,  464,  563,  589,  626,  590,  591,  592,  593,  307,
+  594, 1332, 1333,   90,   91,  657,  261, 1334, 1335, 1336,
+ 1337,  596, 1338,    2,   92,  595,    3,  597,  603,  658,
+  465, 1339,  598,   93,  601,  604,  602,  605,  466,  659,
+  607,  608,  609,    4,  610,  611,  308,    5,  309,  310,
+    6,  612,  683,  694,  613,  684,  467,    7,  287,  688,
+  687, 1208,  689,  690,  698,  468,  469,  696,  699, 1216,
+ 1217,  701,  700,    8,  704,  614,  615,  705,  702,  703,
+  707,  706,  616,  710,  712,  713,    9,   10,  715,   11,
+  708,  311,  716,  312,  724,  721,   12,  288,  470,  471,
+  709,  714,  727,  660,  717,  718,  313,  314,  720,  722,
+  723,  729,  289,  725,   13,  726,  728,  661,  732,   94,
+   95,   96,  746,  735,  736,   14,  737,   15,  753,  734,
+  742,  755,  743,  756,  758,  290,  759,  291,  762,  292,
+  293,  130,  749,  750,   16,  763,  751,  131,  132,  764,
+  765,  133,  315,  786,  752,  472,  766,  768,  134,  294,
+  769,   17,  770,  617,  618,  619,  771,  135,  620,  772,
+  773,  136,  137,  774,  775,  776,  621,  777,  138,  778,
+  316,  317,  139,  140,  141,  781,  142,  783,  788,  622,
+  623,  793,  143,   18,  801,  802,  803,  804,  805,  806,
+  807,  789,   19,   20,  790,  794,  624,  625,   21,   22,
+  810,  144,  145,  811,  321,  321,  146,  795,  796,  797,
+  814,  798,  799,  800,  147,  808,  864,  809,  148,  149,
+  150,  626,  865,  151,  812,  813,  152,  153,  866,  867,
+  873,  870,  871,  893,  877,  321,  872,  154,  888,  891,
+  878,  874,  879,  155,  156,  875,  157,  158,  159,  160,
+  161,  892,  895,  321,  881,  898,  899,  880,  882,  903,
+  321,  162,  883,  884,  885,  815,  904,  886,  816, 1104,
+  163,  887,  164,  165,   23,  166,  889,  890,  167,  168,
+  321,  905,  169,  908,  909,  910,  456,  911,  912,  817,
+  913,  914,  915,  170,  923,  924,  925,  926,  927,  928,
+  929,  818,  930,  931,  457,  932,  933,  934,  935,  321,
+  458,  936,  171,  819,  937,  172,  938,  321,  820,  939,
+  173,  940,  941,  942,  174,  175,  176,  177,  178,  943,
+  821, 1495,  179,  180,  459,  460,  944,  822,  945,  461,
+  946,  181,  947,  823,  948,  824,  642,  643,  949,  952,
+  644,  974,  953,  462,  645,  954,  955,  321,  825,  956,
+  463,  957,  958,  959, 1496,  960,  961,  963,  964,  646,
+  647,  648,  182,  965,  183,  649, 1497,  966,  321,  204,
+  464,  184,  967,  968,  969,  970,  185,  826,  971,  975,
+  976,  186,  827, 1498,  650,  977,  978,  979,  651,  652,
+ 1499,  980,  981,  982,  983,  984, 1500,  985, 1501,  465,
+  986,  987,  204,  988,  828,  989,  990,  466,  991,  992,
+  993, 1502,  994,  995,  204,  996,  829,  997,  830,  831,
+  653, 1344,  654,  832,  998,  467,  999, 1000, 1001, 1002,
+ 1003,  204, 1004, 1005,  468,  469,  655, 1006,  204, 1007,
+ 1008, 1009,  833, 1010,  204, 1503,  204, 1011, 1012, 1013,
+ 1014, 1037, 1059, 1060,   78, 1061, 1062, 1063,  656,  204,
+ 1064, 1504, 1065, 1066, 1067,   79, 1068,  470,  471, 1069,
+ 1070, 1071, 1072, 1073, 1074, 1080, 1081, 1082, 1083, 1505,
+ 1084, 1506, 1507, 1085, 1086,  834,   80,   81, 1088, 1089,
+  657,  835,   82,  204,   83, 1090, 1092, 1091, 1345, 1093,
+ 1095, 1094,  836,  837,  658, 1508, 1097, 1109, 1096,  204,
+ 1098, 1099, 1100,  838,  659, 1101, 1103, 1102, 1111, 1105,
+ 1106, 1107, 1108, 1110,  472, 1112, 1113,  204, 1115,  204,
+  204, 1114, 1346, 1116, 1117, 1120, 1121, 1122, 1123, 1124,
+ 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1347, 1509, 1132,
+ 1133,   84,   85,  204, 1134, 1135, 1136, 1137, 1138, 1139,
+ 1140,   86,   87, 1141, 1142, 1510, 1348, 1349, 1143, 1144,
+ 1145, 1147, 1350, 1351, 1352, 1353, 1511, 1148,  660, 1149,
+ 1150, 1151,   88,   89, 1152, 1153, 1354, 1154, 1155, 1156,
+ 1157, 1158,  661, 1159, 1160, 1162,  204, 1163, 1164,   90,
+   91, 1170, 1167, 1168, 1169, 1171, 1172, 1015, 1173, 1174,
+   92, 1175, 1176,  204, 1177, 1178, 1179, 1180, 1181,   93,
+ 1182, 1183, 1184, 1185,  204, 1016, 1017, 1018, 1019, 1020,
+ 1186, 1021, 1022, 1187, 1023, 1024, 1025, 1188, 1189, 1026,
+ 1190, 1192, 1194, 1446, 1197, 1196, 1191, 1200, 1206, 1027,
+ 1028, 1029, 1030, 1031, 1032, 1193, 1219, 1033, 1223, 1207,
+ 1034, 1447, 1448, 1449, 1450, 1451, 1195, 1452, 1453, 1230,
+ 1454, 1455, 1456, 1198, 1199, 1457, 1209, 1213, 1210, 1220,
+ 1240, 1241, 1211, 1224, 1242, 1458, 1459, 1460, 1461, 1462,
+ 1463, 1243, 1212, 1464, 1214, 1226, 1465, 1215, 1244, 1245,
+ 1227, 1259, 1260, 1228, 1265,   94,   95,   96, 1038, 1039,
+ 1040, 1041, 1042, 1235, 1043, 1044, 1266, 1045, 1046, 1047,
+ 1225, 1229, 1048, 1267, 1268, 1269, 1231, 1232, 1238, 1233,
+ 1234, 1236, 1049, 1050, 1051, 1052, 1053, 1054, 1237, 1239,
+ 1055, 1270, 1275, 1056, 1276, 1271, 1277, 1278, 1279, 1280,
+ 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1290, 1295, 1296,
+ 1297, 1298, 1304, 1301, 1319, 1323, 1310, 1324, 1325, 1326,
+ 1312, 1327, 1316, 1342, 1343, 1357, 1300, 1302, 1358, 1303,
+ 1359, 1360, 1361, 1305, 1362, 1306, 1307, 1321, 1363, 1364,
+ 1365, 1308, 1366, 1309, 1367, 1368, 1369, 1311, 1370, 1313,
+ 1371, 1372, 1314, 1373, 1374, 1375, 1376, 1377, 1378, 1379,
+ 1380, 1381, 1386, 1382, 1315, 1387, 1317, 1318, 1320, 1388,
+ 1322, 1389, 1390, 1391, 1392, 1393, 1394, 1421, 1423, 1424,
+ 1425, 1426, 1427, 1432, 1428, 1433, 1434, 1435, 1436, 1437,
+ 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1468, 1469,
+ 1470,  234,   26,   34,  281,  405,  530,  124,  565, 1519,
+  525, 1166, 1520, 1521,  907,  341, 1491,  951,  780, 1488,
+ 1489, 1422, 1515, 1516,  897,  973,  902,  792, 1518, 1517,
+ 1490,  785,  686,  373, 1485, 1398, 1487, 1397,  761,  693,
+ 1486,  440,    0,  361,  549,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  869,
 };
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     2,     0,     1,     2,
-       3,     3,     3,     3,     3,     0,     1,     2,     3,     3,
-       3,     5,     2,     1,     1,     1,     2,     4,     4,     5,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     5,
-       2,     1,     1,     1,     1,     2,     4,     4,     4,     5,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     0,     7,     0,     1,     2,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     4,     1,     4,     4,     4,     4,     4,
-       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     0,
-       5,     3,     1,     0,     3,     0,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     6,     2,     1,     1,     1,
-       2,     4,     4,     0,     7,     0,     1,     2,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     4,     1,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     0,     6,     0,
-       5,     3,     1,     1,     1,     2,     1,     1,     1,     1,
-       1,     2,     0,     5,     3,     1,     1,     3,     4,     4,
-       0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     4,     4,     4,     4,     4,     0,     5,     3,     1,
-       0,     3,     0,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     0,     6,     2,     1,     1,     1,
-       1,     2,     4,     4,     4,     0,     6,     2,     1,     1,
-       1,     1,     2,     4,     4,     0,     5,     3,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     6,     2,     1,     1,     1,     2,     4,     0,
-       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     7,     0,     1,     2,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       4,     1,     4,     4,     4,     4,     4,     4,     4,     4,
-       0,     5,     3,     1,     0,     3,     0,     2,     1,     1,
-       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     0,     6,     0,     5,     3,     1,
-       1,     2,     1,     1,     1,     1,     1,     4,     4,     0,
-       6,     2,     1,     1,     1,     1,     4,     4,     5,     2,
-       1,     1,     1,     4,     0,     6,     0,     5,     3,     1,
-       1,     2,     1,     1,     1,     1,     1,     4,     4,     5,
-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     0,     5,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     4,     4,     4,     4,     4,
-       0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
-       1,     4,     4,     0,     5,     3,     1,     1,     1,     4,
-       4,     0,     5,     3,     1,     1,     1,     5,     2,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     5,     2,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
-       4,     4,     4,     4,     4
+const short yycheck[] = {                                     347,
+  348,  433,  125,  125,  125,  125,  354,  264,  256,  266,
+  264,  125,  266,  125,  265,  125,  265,  125,  256,  256,
+  125,  256,  125,  125,  281,  256,  256,  281,  285,  256,
+  333,  285,  274,  275,   59,  123,  384,  123,  386,  123,
+  125,  256,  256, 1075, 1076, 1077,  125,  454,  455,  276,
+  256,   44,  400,   44,  291,   44,  125,  123,   44,  256,
+  408,  123,  256,  305,  389,  302,   59,   44,   59,  123,
+   59,  419,  420,   59,  422,   44,  268,  269,  270,  454,
+  455,  323,   59,  431,  432,  123,  434,   44,  330,  123,
+   59,  473,  474,  411,  309,   44,  411,   44,  355,   44,
+  125,  355,   59,  428,  429,  430,  431,  432,  350,  125,
+   59,  346,   59,  256,   59,  258,  346,  311,  312,  313,
+  314,  315,  316,  317,  318,  340,  340,  123,  123,  123,
+  411,  346,   59,  256,  256,  256,  256,  379,  376,  262,
+  263,  378,  256,  266,  256,  387,  256,  378,  256,  123,
+  273,  256,  123,  256,  256,  382,  123,  300,  123,  282,
+  303,  125,  123,  286,  287,  413,   61,  361,  406,  123,
+  293,  256,  378,  276,  297,  298,  299,  256,  301,  291,
+  123,  378,  413,  413,  307,  427,  413,  256,  491,  258,
+  302,  405,   61,   61,   44,  410,  444,  389,   61,  547,
+   44,   61,  396,  326,  327,  456,  448,  456,  331,   59,
+   61,  123,  291,  444,   61,   59,  339,  360,  340,   61,
+  343,  344,  345,   61,  309,  348,  125,   44,  351,  352,
+   61,  300,  346,   61,  303,  378,  346,   61,  444,  362,
+  256,  498,   59,  259,  498,  368,  369,  444,  371,  372,
+  373,  374,  375,  332,   44,  340,  504,  378,  378,  123,
+  125,  346,  341,  386,  280,   61,  378,  125,  376,   59,
+   61,   59,  395,  378,  397,  398,  292,  400,   61,  382,
+  403,  404,  476,  405,  407,   61,   61,   61,  304,   61,
+   61,  360,  256,  309,   61,  418,   61,   61,  406,  378,
+   61,  380,  381,  413,   61,  321,  125,  504,  413,  378,
+  413,  413,  328,   61,  437,   61,  510,  440,  334,   61,
+  336,   61,  445,  444,  444,  410,  449,  450,  451,  452,
+  453,   61,   61,  349,  457,  458,   61,   61,   61,  444,
+   61,   61,  444,  466,  423,   61,  425,  311,  312,  313,
+  314,  315,  316,  317,  318,   61,   61,  256,   59,  438,
+  439,  504,  378,   61,   61,   61,   61,  383,   61,   61,
+   61,  256,   61,   61,  497,   61,  499,   61,  277,  278,
+   61,   61,   61,  506,  504,  284,   61,   61,  511,  405,
+   61,  256,  257,  516,   61,  260,  349,  361,  256,  264,
+   61,  417,  504,  419,  420,  484,   61,  755,  424,  267,
+  295,   61,   61,   61,  279,  280,  281,   61,   61,   61,
+  285,   61,   61,   61,   61,  310,   61,  443,   61,   61,
+  288,  289,  396,  512,  513,  504,  294,  256,  296,  304,
+   61,   61,   61,  308,  309,   61,   61,   61,  333,   61,
+  335,   61,  337,  338,  256,  274,   61,  125,   61,   61,
+   61,  280,   61,   61,   61,   61,  365,  366,  367,   61,
+  486,  370,  357,  426,   61,  340,  492,  342,  123,  378,
+  916,  917,  918,  919,  920,  304,  305,  503,  504,  291,
+  309,  356,  391,  392,   61,  353,  354,   61,  514,   61,
+   61,   61,   61,   61,  323,  363,  364,  460,   59,  408,
+  409,  330,  476,  378,   61,   61,   61,  949,   61,   61,
+   61,   61,  475,   61,   61,   61,  384,  385,   61,   61,
+  332,  350,   61,  411,  433,  411,  411,   59,  454,  341,
+  389,  494,  495,  401,  402,  410,  510,  500,  501,  502,
+  503,  454,  505,  256,  412,  389,  259,  454,  454,  424,
+  379,  514,  389,  421,  389,  454,  389,  389,  387,  434,
+  454,  454,  454,  276,  454,  454,  378,  280,  380,  381,
+  283,   59,   61,  454,  256,   61,  405,  290,  256,   59,
+  411,  939,   61,   61,  389,  414,  415,  454,  411,  947,
+  948,  454,  389,  306,  389,  277,  278,  411,  454,  454,
+  389,  454,  284,  454,  454,  454,  319,  320,  411,  322,
+  389,  423,  454,  425,  454,  411,  329,  295,  447,  448,
+  389,  389,   61,  498,  389,  389,  438,  439,  389,  389,
+  389,   61,  310,  454,  347,  454,  454,  512,  454,  507,
+  508,  509,  389,  454,  454,  358,  454,  360,   59,  411,
+  454,   61,  454,   61,   61,  333,   61,  335,   59,  337,
+  338,  256,  454,  454,  377,   61,  454,  262,  263,   61,
+   61,  266,  484,   59,  454,  504,   61,   61,  273,  357,
+   61,  394,   61,  365,  366,  367,   61,  282,  370,   61,
+   61,  286,  287,   61,   61,   61,  378,   61,  293,   61,
+  512,  513,  297,  298,  299,   61,  301,   61,   61,  391,
+  392,  411,  307,  426,  477,  478,  479,  480,  481,  482,
+  483,   61,  435,  436,   61,  411,  408,  409,  441,  442,
+  454,  326,  327,   59,  274,  275,  331,  411,  411,  411,
+   59,  411,  411,  411,  339,  411,   59,  411,  343,  344,
+  345,  433,   61,  348,  411,  411,  351,  352,   61,   61,
+  411,  454,  454,   61,   59,  305,  454,  362,  389,   59,
+  411,  454,  411,  368,  369,  454,  371,  372,  373,  374,
+  375,   59,   61,  323,  411,   59,   61,  454,  411,   59,
+  330,  386,  411,  411,  411,  256,   61,  411,  259,  389,
+  395,  411,  397,  398,  517,  400,  411,  411,  403,  404,
+  350,   61,  407,   59,   59,   59,  256,   59,   59,  280,
+   59,   59,   59,  418,   59,   59,   59,   59,   59,   59,
+   59,  292,   59,   59,  274,   59,   59,   59,   59,  379,
+  280,   59,  437,  304,   61,  440,   61,  387,  309,   61,
+  445,   61,   61,   61,  449,  450,  451,  452,  453,   61,
+  321,  259,  457,  458,  304,  305,   61,  328,   61,  309,
+   61,  466,   61,  334,   61,  336,  256,  257,   61,   59,
+  260,  411,   61,  323,  264,   61,   61,  427,  349,   61,
+  330,   61,   61,   61,  292,   61,   61,   61,   61,  279,
+  280,  281,  497,   61,  499,  285,  304,   61,  448,  259,
+  350,  506,   61,   61,   61,   61,  511,  378,   61,  411,
+   59,  516,  383,  321,  304,   59,  411,  411,  308,  309,
+  328,   61,   59,   59,   59,   59,  334,   59,  336,  379,
+   59,   59,  292,   59,  405,   59,   59,  387,   59,   59,
+   59,  349,   59,   59,  304,   59,  417,   59,  419,  420,
+  340,  349,  342,  424,   59,  405,   59,   59,   59,   59,
+   59,  321,   59,   59,  414,  415,  356,   59,  328,   59,
+   59,   59,  443,   59,  334,  383,  336,   59,   59,   59,
+   59,   59,   59,   59,  256,   59,   59,   59,  378,  349,
+   59,  399,   59,   59,   59,  267,   59,  447,  448,   59,
+   59,   59,   59,   59,   59,   59,   59,   59,   59,  417,
+   59,  419,  420,   59,   61,  486,  288,  289,  454,   61,
+  410,  492,  294,  383,  296,  411,   59,  411,  426,  454,
+  454,  411,  503,  504,  424,  443,   61,   59,  454,  399,
+  454,  454,  454,  514,  434,  454,  411,  454,   61,  411,
+  411,  454,  411,  411,  504,  411,   59,  417,  411,  419,
+  420,   61,  460,  411,  389,   59,   59,   59,   59,   59,
+   59,   59,   59,   59,   59,   59,   59,  475,  486,   59,
+   59,  353,  354,  443,   59,   59,   59,   59,   59,   59,
+   59,  363,  364,   59,   61,  503,  494,  495,   61,   61,
+   61,   61,  500,  501,  502,  503,  514,   61,  498,   61,
+   61,   61,  384,  385,   61,   61,  514,   61,   61,   61,
+   61,   61,  512,   61,   61,   61,  486,   61,   61,  401,
+  402,   59,  411,  411,  411,   59,   59,  443,   59,   59,
+  412,   59,   59,  503,   59,   59,   59,   59,   59,  421,
+   59,   59,   59,   59,  514,  461,  462,  463,  464,  465,
+   59,  467,  468,   59,  470,  471,  472,   59,   59,  475,
+   59,   61,   59,  443,   59,   61,  411,   59,  389,  485,
+  486,  487,  488,  489,  490,  411,   59,  493,  454,  389,
+  496,  461,  462,  463,  464,  465,  411,  467,  468,   61,
+  470,  471,  472,  411,  411,  475,  389,  411,  389,  411,
+   59,   59,  389,  411,   59,  485,  486,  487,  488,  489,
+  490,   59,  389,  493,  389,  454,  496,  389,   59,  416,
+  454,   59,   59,  454,   59,  507,  508,  509,  461,  462,
+  463,  464,  465,  389,  467,  468,   59,  470,  471,  472,
+  411,  411,  475,   59,   59,   59,  411,  411,  454,  411,
+  411,  411,  485,  486,  487,  488,  489,  490,  411,  411,
+  493,   59,   59,  496,   59,  388,   59,   59,   59,   59,
+   59,   59,   59,   59,   59,   59,  416,   59,   59,   59,
+  459,   44,   61,  411,   61,   59,  411,   59,   59,   59,
+  411,   59,  411,   59,   59,   59,  454,  454,   59,  454,
+   59,   59,   59,  454,   59,  454,  454,  411,   59,   59,
+   59,  454,   59,  454,   59,   59,   59,  454,   59,  454,
+   59,   59,  454,   59,   59,   59,   59,   59,   59,   59,
+   59,   59,   59,  388,  454,   59,  454,  454,  454,   59,
+  454,   59,   59,   59,   59,   59,   59,  389,   59,   59,
+   59,   59,   59,   59,  388,   59,   59,   59,   59,   59,
+   59,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+   59,  123,   59,   59,   59,  123,  279,  123,  318, 1492,
+  262,  839, 1494, 1514,  585,   73, 1420,  627,  473, 1403,
+ 1405, 1298, 1472, 1474,  570,  662,  578,  505, 1477, 1475,
+ 1418,  495,  367,  126, 1396, 1251, 1402, 1249,  448,  378,
+ 1400,  187,   -1,   97,  295,   -1,   -1,   -1,   -1,   -1,
+   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+   -1,  536,
 };
-
-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
-   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint16 yydefact[] =
-{
-       2,     0,     1,     0,     0,     0,   233,   404,   479,     0,
-     494,     0,   670,   290,   464,   267,     0,     0,   123,   344,
-       0,     0,   355,   381,   224,     3,    23,    11,     4,     5,
-       6,    24,     8,     9,    10,    13,    14,    15,    16,    17,
-      18,    19,    22,    20,    21,     7,    12,    25,    26,     0,
-       0,   235,   406,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   125,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    81,    82,    84,    83,   718,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   699,
-     717,   712,   700,   701,   702,   703,   705,   706,   707,   708,
-     704,   709,   710,   711,   713,   714,   715,   716,   254,     0,
-     236,   431,     0,   407,     0,   492,     0,     0,   490,   491,
-       0,   567,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   641,     0,   618,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   511,   562,
-     563,   560,   564,   565,   561,   522,   512,   513,   551,   514,
-     515,   516,   517,   518,   519,   520,   521,   556,   523,   524,
-     525,   526,   566,   528,   533,   529,   531,   530,   545,   546,
-     532,   534,   535,   536,   537,   539,   538,   527,   541,   550,
-     552,   553,   542,   543,   558,   559,   555,   544,   540,   548,
-     549,   547,   554,   557,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    91,    92,    93,    96,   103,    97,   101,    98,
-      99,   102,   100,    94,    95,     0,     0,     0,     0,    43,
-      44,    45,   154,     0,   126,     0,   747,     0,     0,     0,
-       0,     0,     0,     0,     0,   739,   740,   741,   745,   742,
-     744,   743,   746,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    51,    64,
-      61,    52,    63,    55,    56,    57,    58,    59,    53,    62,
-      60,    54,     0,     0,     0,    85,     0,     0,     0,     0,
-      80,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     698,     0,     0,   485,     0,     0,     0,   482,   483,   484,
-       0,     0,   489,   506,     0,     0,   496,   505,     0,   502,
-     503,   504,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   510,   680,
-     691,     0,     0,   683,     0,     0,     0,   673,   674,   675,
-     676,   677,   678,   679,     0,     0,     0,     0,     0,   316,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   293,   294,   295,   304,   296,   309,   297,   298,
-     299,   300,   307,   301,   302,   303,   305,   306,   308,   476,
-       0,   466,     0,   475,     0,   472,   473,   474,     0,   269,
-       0,     0,     0,   278,     0,   276,   277,   279,   280,   104,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    90,    46,     0,     0,     0,    42,     0,
-       0,     0,     0,     0,     0,   347,   348,   349,   350,     0,
-       0,     0,     0,     0,     0,     0,     0,   738,    65,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    50,     0,     0,   365,     0,     0,   358,
-     359,   360,   361,     0,     0,   389,     0,   384,   385,   386,
-       0,     0,     0,     0,   227,   228,   229,     0,     0,     0,
-      79,     0,     0,     0,     0,     0,    27,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     697,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   238,   239,   242,   243,
-     245,   246,   247,   248,   249,   250,   251,   240,   241,   244,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     440,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   409,   410,   411,   412,   413,   414,   416,   415,   417,
-     418,   426,   423,   425,   424,   422,   428,   419,   420,   421,
-     427,     0,     0,     0,   481,     0,   488,     0,     0,     0,
-       0,   501,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    35,     0,     0,     0,     0,     0,     0,
-     509,     0,     0,     0,     0,     0,     0,     0,   672,   310,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   292,     0,     0,
-       0,     0,   471,   281,     0,     0,     0,     0,     0,   275,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    89,     0,
-       0,    41,     0,     0,     0,     0,     0,   199,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   160,     0,     0,     0,     0,   128,   129,   130,
-     131,   149,   150,   135,   134,   136,   137,   143,   138,   139,
-     140,   141,   142,   144,   145,   146,   132,   133,   147,   148,
-     151,   351,     0,     0,     0,     0,   346,     0,     0,     0,
-       0,     0,     0,     0,   737,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    49,   362,
-       0,     0,     0,     0,   357,   387,     0,     0,     0,   383,
-     230,     0,     0,     0,   226,    88,    87,    86,   734,   731,
-     730,   719,   721,    27,    27,    27,    27,    27,    29,    28,
-     725,   726,   729,   727,   732,   733,   735,   736,   728,   720,
-     722,   723,   724,   252,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   237,   429,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     408,     0,     0,   480,   493,     0,     0,     0,   495,   579,
-     583,   570,   599,   612,   611,   667,   616,   577,   669,   608,
-     614,   578,   568,   569,   586,   575,   607,   576,   589,   574,
-     588,   587,   582,   581,   580,   609,   606,   665,   666,   603,
-     600,   664,   645,   661,   662,   646,   647,   648,   649,   656,
-     650,   659,   663,   652,   657,   653,   658,   651,   655,   654,
-     660,     0,   644,   605,   622,   638,   639,   623,   624,   625,
-     626,   633,   627,   636,   640,   629,   634,   630,   635,   628,
-     632,   631,   637,     0,   621,   598,   601,   615,   572,   610,
-     573,   602,   591,   596,   597,   594,   595,   592,   593,   585,
-     584,    35,    35,    35,    37,    36,   668,   617,   604,   613,
-     571,   590,     0,     0,     0,     0,     0,     0,   671,     0,
-       0,     0,     0,   322,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   291,     0,     0,     0,   465,
-       0,     0,     0,   286,   282,   285,   268,   108,   114,   112,
-     111,   113,   109,   110,   107,   115,   121,   116,   120,   118,
-     119,   117,   106,   105,   122,    47,    48,   152,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   127,     0,     0,     0,   345,   753,   748,   752,
-     750,   754,   749,   751,    70,    74,    78,    68,    72,    71,
-      67,    66,    73,    69,    77,    75,    76,     0,     0,     0,
-     356,     0,     0,   382,     0,     0,   225,    30,    31,    32,
-      33,    34,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   234,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   446,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   405,   486,   487,   507,
-     508,   500,     0,   499,   642,     0,   619,     0,    38,    39,
-      40,   696,   695,     0,   694,   682,   681,   688,   687,     0,
-     686,   690,   689,   337,   314,   315,   336,   320,     0,   319,
-       0,   339,   335,   334,   343,   338,   312,   342,   341,   340,
-     313,   311,   478,   470,     0,   469,   477,   274,   273,     0,
-     272,   289,   288,     0,     0,     0,     0,     0,     0,     0,
-     205,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   124,
-     353,   354,   352,   363,   369,   375,   380,   378,   377,   374,
-     370,   373,   376,   371,   379,   372,     0,   368,   364,   388,
-     393,   399,   403,   402,   401,   398,   394,   397,   400,   395,
-     396,     0,   392,   231,   232,   264,   265,   258,   260,   262,
-     261,   259,   253,   266,   257,   255,   256,   263,   435,   437,
-     438,   458,   463,   462,   457,   456,   455,   439,   444,     0,
-     443,     0,   432,   460,   461,   430,   436,   454,   434,   459,
-     433,   497,     0,   643,   620,   692,     0,   684,     0,     0,
-     317,   322,   328,   329,   325,   331,   327,   326,   333,   330,
-     332,   324,   323,   467,     0,   270,     0,   287,   284,   283,
-     194,   159,   192,   157,   203,     0,   202,     0,   190,   184,
-     195,   196,   187,   153,   191,   156,   193,   185,   186,   158,
-     198,   197,   183,   164,   180,   181,   165,   166,   167,   168,
-     175,   169,   178,   182,   171,   176,   172,   177,   170,   174,
-     173,   179,     0,   163,   189,   155,   188,   366,     0,   390,
-       0,     0,   441,   446,   451,   452,   449,   450,   448,   453,
-     447,   498,   693,   685,   321,   318,   468,   271,     0,   200,
-     205,   215,   213,   222,   212,   207,   216,   220,   209,   217,
-     219,   214,   208,   221,   223,   218,   210,   211,   206,   161,
-       0,   367,   391,   445,   442,   204,   201,   162
+#define YYFINAL 1
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 517
+#if YYDEBUG
+const char * const yyname[] = {
+"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,"'='",0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+"ACCEPT_PASSWORD","ACTION","ADMIN","AFTYPE","T_ALLOW","ANTI_NICK_FLOOD",
+"ANTI_SPAM_EXIT_MESSAGE_TIME","AUTOCONN","T_BLOCK","BURST_AWAY",
+"BURST_TOPICWHO","BYTES","KBYTES","MBYTES","GBYTES","TBYTES","CALLER_ID_WAIT",
+"CAN_FLOOD","CAN_IDLE","CHANNEL","CIDR_BITLEN_IPV4","CIDR_BITLEN_IPV6",
+"CIPHER_PREFERENCE","CLASS","COMPRESSED","COMPRESSION_LEVEL","CONNECT",
+"CONNECTFREQ","CRYPTLINK","DEFAULT_CIPHER_PREFERENCE","DEFAULT_FLOODCOUNT",
+"DEFAULT_SPLIT_SERVER_COUNT","DEFAULT_SPLIT_USER_COUNT","DENY","DESCRIPTION",
+"DIE","DISABLE_AUTH","DISABLE_FAKE_CHANNELS","DISABLE_HIDDEN",
+"DISABLE_LOCAL_CHANNELS","DISABLE_REMOTE_COMMANDS","DOT_IN_IP6_ADDR",
+"DOTS_IN_IDENT","DURATION","EGDPOOL_PATH","EMAIL","ENABLE","ENCRYPTED",
+"EXCEED_LIMIT","EXEMPT","FAILED_OPER_NOTICE","FAKENAME","IRCD_FLAGS",
+"FLATTEN_LINKS","FFAILED_OPERLOG","FKILLLOG","FKLINELOG","FGLINELOG",
+"FIOERRLOG","FOPERLOG","FOPERSPYLOG","FUSERLOG","GECOS","GENERAL","GLINE",
+"GLINES","GLINE_EXEMPT","GLINE_LOG","GLINE_TIME","GLINE_MIN_CIDR",
+"GLINE_MIN_CIDR6","GLOBAL_KILL","IRCD_AUTH","NEED_IDENT","HAVENT_READ_CONF",
+"HELP_CHANNEL","HIDDEN","HIDDEN_ADMIN","HIDDEN_NAME","HIDDEN_OPER",
+"HIDE_SERVER_IPS","HIDE_SERVERS","HIDE_SPOOF_IPS","HOST","HUB","HUB_MASK",
+"IDLETIME","IGNORE_BOGUS_TS","INVISIBLE_ON_CONNECT","IP","KILL",
+"KILL_CHASE_TIME_LIMIT","KLINE","KLINE_EXEMPT","KLINE_REASON",
+"KLINE_WITH_REASON","KNOCK_DELAY","KNOCK_DELAY_CHANNEL","LAZYLINK","LEAF_MASK",
+"LINKS_DELAY","LISTEN","T_LOG","LOGGING","LOG_LEVEL","MAX_ACCEPT","MAX_BANS",
+"MAX_CHANS_PER_USER","MAX_GLOBAL","MAX_IDENT","MAX_LOCAL","MAX_NICK_CHANGES",
+"MAX_NICK_TIME","MAX_NUMBER","MAX_TARGETS","MESSAGE_LOCALE","MIN_NONWILDCARD",
+"MIN_NONWILDCARD_SIMPLE","MODE_Z","MODULE","MODULES","NAME","NEED_PASSWORD",
+"NETWORK_DESC","NETWORK_NAME","NICK","NICK_CHANGES","NO_CREATE_ON_SPLIT",
+"NO_JOIN_ON_SPLIT","NO_OPER_FLOOD","NO_TILDE","NOT","NUMBER","NUMBER_PER_IDENT",
+"NUMBER_PER_CIDR","NUMBER_PER_IP","NUMBER_PER_IP_GLOBAL","OPERATOR",
+"OPERS_BYPASS_CALLERID","OPER_LOG","OPER_ONLY_UMODES","OPER_PASS_RESV",
+"OPER_SPY_T","OPER_UMODES","JOIN_FLOOD_COUNT","JOIN_FLOOD_TIME","PACE_WAIT",
+"PACE_WAIT_SIMPLE","PASSWORD","PATH","PING_COOKIE","PING_TIME","PING_WARNING",
+"PORT","QSTRING","QUIET_ON_BAN","REASON","REDIRPORT","REDIRSERV","REGEX_T",
+"REHASH","TREJECT_HOLD_TIME","REMOTE","REMOTEBAN","RESTRICT_CHANNELS",
+"RESTRICTED","RSA_PRIVATE_KEY_FILE","RSA_PUBLIC_KEY_FILE",
+"SSL_CERTIFICATE_FILE","RESV","RESV_EXEMPT","SECONDS","MINUTES","HOURS","DAYS",
+"WEEKS","SENDQ","SEND_PASSWORD","SERVERHIDE","SERVERINFO","SERVLINK_PATH",
+"SERVICES_NAME","IRCD_SID","TKLINE_EXPIRE_NOTICES","T_SHARED","T_CLUSTER",
+"T_SNOOP","TYPE","SHORT_MOTD","SILENT","SPOOF","SPOOF_NOTICE",
+"STATS_E_DISABLED","STATS_I_OPER_ONLY","STATS_K_OPER_ONLY","STATS_O_OPER_ONLY",
+"STATS_P_OPER_ONLY","TBOOL","TMASKED","T_REJECT","TS_MAX_DELTA","TS_WARN_DELTA",
+"TWODOTS","T_ALL","T_BOTS","T_SOFTCALLERID","T_CALLERID","T_CCONN",
+"T_CCONN_FULL","T_CLIENT_FLOOD","T_DEAF","T_DEBUG","T_DRONE","T_EXTERNAL",
+"T_FULL","T_INVISIBLE","T_IPV4","T_IPV6","T_LOCOPS","T_LOGPATH","T_L_CRIT",
+"T_L_DEBUG","T_L_ERROR","T_L_INFO","T_L_NOTICE","T_L_TRACE","T_L_WARN",
+"T_MAX_CLIENTS","T_NCHANGE","T_OPERWALL","T_REJ","T_SERVNOTICE","T_SKILL",
+"T_SPY","T_SSL","T_UMODES","T_UNAUTH","T_UNRESV","T_UNXLINE","T_WALLOP",
+"THROTTLE_TIME","TOPICBURST","TRUE_NO_OPER_FLOOD","TKLINE","TXLINE","TRESV",
+"UNKLINE","USER","T_USERMODE","USE_EGD","USE_EXCEPT","USE_INVEX","USE_KNOCK",
+"USE_LOGGING","USE_WHOIS_ACTUALLY","VHOST","VHOST6","XLINE","WARN",
+"WARN_NO_NLINE","WEBIRC",
 };
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,     1,    25,   918,   919,  1074,  1075,    26,   278,   279,
-     280,   281,    27,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,    28,    74,
-      75,    76,    77,    78,    29,   261,   262,   263,   264,   265,
-     266,   267,   268,   269,   270,   271,   272,   273,   274,    30,
-      63,   283,   836,   837,   838,   284,   839,   840,   841,   842,
-     843,   844,  1157,  1462,  1463,   845,   846,   847,   848,   849,
-     850,   851,   852,   853,   854,   855,   856,   857,   858,   859,
-     860,  1142,  1425,  1426,  1488,  1427,  1508,    31,    69,   583,
-     584,   585,   586,    32,    51,   119,   625,   626,   627,   120,
-     628,   629,   630,   631,   632,   633,   634,   635,   636,   637,
-     638,   639,    33,    60,   503,   784,  1289,  1290,   504,   505,
-     506,  1295,  1114,  1115,   507,   508,    34,    58,   471,   472,
-     473,   474,   475,   476,   477,   478,   764,  1268,  1269,  1399,
-    1270,  1412,   479,   480,   481,   482,   483,   484,   485,   486,
-     487,   488,    35,    64,   534,   535,   536,   537,   538,    36,
-      67,   568,   569,   570,   571,   572,   891,  1336,  1337,    37,
-      68,   576,   577,   578,   579,   897,  1351,  1352,    38,    52,
-     122,   660,   661,   662,   123,   663,   664,   665,   666,   667,
-     668,   669,   670,   959,  1379,  1380,  1471,  1381,  1480,   671,
-     672,   673,   674,   675,   676,   677,   678,   679,   680,    39,
-      59,   493,   779,  1284,  1285,   494,   495,   496,   497,    40,
-      53,   366,   367,   368,   369,    41,   127,   128,   129,    42,
-      55,   377,   689,  1242,  1243,   378,   379,   380,   381,    43,
-     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
-     227,   228,   229,   230,   231,   232,   233,   234,   235,   236,
-     237,   416,  1053,  1054,   238,   414,  1031,  1032,   239,   240,
-     241,   242,   243,    44,    57,   446,   447,   448,   449,   450,
-     754,  1259,  1260,   451,   452,   453,   751,  1253,  1254,    45,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-      46,   294,   295,   296,   297,   298,   299,   300,   301,   302
+const char * const yyrule[] = {
+"$accept : conf",
+"conf :",
+"conf : conf conf_item",
+"conf_item : admin_entry",
+"conf_item : logging_entry",
+"conf_item : oper_entry",
+"conf_item : channel_entry",
+"conf_item : class_entry",
+"conf_item : listen_entry",
+"conf_item : auth_entry",
+"conf_item : serverinfo_entry",
+"conf_item : serverhide_entry",
+"conf_item : resv_entry",
+"conf_item : shared_entry",
+"conf_item : cluster_entry",
+"conf_item : connect_entry",
+"conf_item : kill_entry",
+"conf_item : deny_entry",
+"conf_item : exempt_entry",
+"conf_item : general_entry",
+"conf_item : gline_entry",
+"conf_item : gecos_entry",
+"conf_item : modules_entry",
+"conf_item : webirc_entry",
+"conf_item : error ';'",
+"conf_item : error '}'",
+"timespec_ :",
+"timespec_ : timespec",
+"timespec : NUMBER timespec_",
+"timespec : NUMBER SECONDS timespec_",
+"timespec : NUMBER MINUTES timespec_",
+"timespec : NUMBER HOURS timespec_",
+"timespec : NUMBER DAYS timespec_",
+"timespec : NUMBER WEEKS timespec_",
+"sizespec_ :",
+"sizespec_ : sizespec",
+"sizespec : NUMBER sizespec_",
+"sizespec : NUMBER BYTES sizespec_",
+"sizespec : NUMBER KBYTES sizespec_",
+"sizespec : NUMBER MBYTES sizespec_",
+"modules_entry : MODULES '{' modules_items '}' ';'",
+"modules_items : modules_items modules_item",
+"modules_items : modules_item",
+"modules_item : modules_module",
+"modules_item : modules_path",
+"modules_item : error ';'",
+"modules_module : MODULE '=' QSTRING ';'",
+"modules_path : PATH '=' QSTRING ';'",
+"serverinfo_entry : SERVERINFO '{' serverinfo_items '}' ';'",
+"serverinfo_items : serverinfo_items serverinfo_item",
+"serverinfo_items : serverinfo_item",
+"serverinfo_item : serverinfo_name",
+"serverinfo_item : serverinfo_vhost",
+"serverinfo_item : serverinfo_hub",
+"serverinfo_item : serverinfo_description",
+"serverinfo_item : serverinfo_network_name",
+"serverinfo_item : serverinfo_network_desc",
+"serverinfo_item : serverinfo_services_name",
+"serverinfo_item : serverinfo_help_channel",
+"serverinfo_item : serverinfo_max_clients",
+"serverinfo_item : serverinfo_rsa_private_key_file",
+"serverinfo_item : serverinfo_vhost6",
+"serverinfo_item : serverinfo_sid",
+"serverinfo_item : serverinfo_ssl_certificate_file",
+"serverinfo_item : error ';'",
+"serverinfo_ssl_certificate_file : SSL_CERTIFICATE_FILE '=' QSTRING ';'",
+"serverinfo_rsa_private_key_file : RSA_PRIVATE_KEY_FILE '=' QSTRING ';'",
+"serverinfo_name : NAME '=' QSTRING ';'",
+"serverinfo_sid : IRCD_SID '=' QSTRING ';'",
+"serverinfo_description : DESCRIPTION '=' QSTRING ';'",
+"serverinfo_network_name : NETWORK_NAME '=' QSTRING ';'",
+"serverinfo_network_desc : NETWORK_DESC '=' QSTRING ';'",
+"serverinfo_services_name : SERVICES_NAME '=' QSTRING ';'",
+"serverinfo_help_channel : HELP_CHANNEL '=' QSTRING ';'",
+"serverinfo_vhost : VHOST '=' QSTRING ';'",
+"serverinfo_vhost6 : VHOST6 '=' QSTRING ';'",
+"serverinfo_max_clients : T_MAX_CLIENTS '=' NUMBER ';'",
+"serverinfo_hub : HUB '=' TBOOL ';'",
+"admin_entry : ADMIN '{' admin_items '}' ';'",
+"admin_items : admin_items admin_item",
+"admin_items : admin_item",
+"admin_item : admin_name",
+"admin_item : admin_description",
+"admin_item : admin_email",
+"admin_item : error ';'",
+"admin_name : NAME '=' QSTRING ';'",
+"admin_email : EMAIL '=' QSTRING ';'",
+"admin_description : DESCRIPTION '=' QSTRING ';'",
+"logging_entry : LOGGING '{' logging_items '}' ';'",
+"logging_items : logging_items logging_item",
+"logging_items : logging_item",
+"logging_item : logging_path",
+"logging_item : logging_oper_log",
+"logging_item : logging_log_level",
+"logging_item : logging_use_logging",
+"logging_item : logging_fuserlog",
+"logging_item : logging_foperlog",
+"logging_item : logging_fglinelog",
+"logging_item : logging_fklinelog",
+"logging_item : logging_killlog",
+"logging_item : logging_foperspylog",
+"logging_item : logging_ioerrlog",
+"logging_item : logging_ffailed_operlog",
+"logging_item : error ';'",
+"logging_path : T_LOGPATH '=' QSTRING ';'",
+"logging_oper_log : OPER_LOG '=' QSTRING ';'",
+"logging_fuserlog : FUSERLOG '=' QSTRING ';'",
+"logging_ffailed_operlog : FFAILED_OPERLOG '=' QSTRING ';'",
+"logging_foperlog : FOPERLOG '=' QSTRING ';'",
+"logging_foperspylog : FOPERSPYLOG '=' QSTRING ';'",
+"logging_fglinelog : FGLINELOG '=' QSTRING ';'",
+"logging_fklinelog : FKLINELOG '=' QSTRING ';'",
+"logging_ioerrlog : FIOERRLOG '=' QSTRING ';'",
+"logging_killlog : FKILLLOG '=' QSTRING ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_CRIT ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_ERROR ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_WARN ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_NOTICE ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_TRACE ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_INFO ';'",
+"logging_log_level : LOG_LEVEL '=' T_L_DEBUG ';'",
+"logging_use_logging : USE_LOGGING '=' TBOOL ';'",
+"$$1 :",
+"oper_entry : OPERATOR $$1 oper_name_b '{' oper_items '}' ';'",
+"oper_name_b :",
+"oper_name_b : oper_name_t",
+"oper_items : oper_items oper_item",
+"oper_items : oper_item",
+"oper_item : oper_name",
+"oper_item : oper_user",
+"oper_item : oper_password",
+"oper_item : oper_hidden_admin",
+"oper_item : oper_hidden_oper",
+"oper_item : oper_umodes",
+"oper_item : oper_class",
+"oper_item : oper_global_kill",
+"oper_item : oper_remote",
+"oper_item : oper_kline",
+"oper_item : oper_xline",
+"oper_item : oper_unkline",
+"oper_item : oper_gline",
+"oper_item : oper_nick_changes",
+"oper_item : oper_remoteban",
+"oper_item : oper_die",
+"oper_item : oper_rehash",
+"oper_item : oper_admin",
+"oper_item : oper_operwall",
+"oper_item : oper_snoop",
+"oper_item : oper_encrypted",
+"oper_item : oper_rsa_public_key_file",
+"oper_item : oper_flags",
+"oper_item : error ';'",
+"oper_name : NAME '=' QSTRING ';'",
+"oper_name_t : QSTRING",
+"oper_user : USER '=' QSTRING ';'",
+"oper_password : PASSWORD '=' QSTRING ';'",
+"oper_encrypted : ENCRYPTED '=' TBOOL ';'",
+"oper_rsa_public_key_file : RSA_PUBLIC_KEY_FILE '=' QSTRING ';'",
+"oper_class : CLASS '=' QSTRING ';'",
+"$$2 :",
+"oper_umodes : T_UMODES $$2 '=' oper_umodes_items ';'",
+"oper_umodes_items : oper_umodes_items ',' oper_umodes_item",
+"oper_umodes_items : oper_umodes_item",
+"oper_umodes_item : T_BOTS",
+"oper_umodes_item : T_CCONN",
+"oper_umodes_item : T_CCONN_FULL",
+"oper_umodes_item : T_DEAF",
+"oper_umodes_item : T_DEBUG",
+"oper_umodes_item : T_FULL",
+"oper_umodes_item : T_SKILL",
+"oper_umodes_item : T_NCHANGE",
+"oper_umodes_item : T_REJ",
+"oper_umodes_item : T_UNAUTH",
+"oper_umodes_item : T_SPY",
+"oper_umodes_item : T_EXTERNAL",
+"oper_umodes_item : T_OPERWALL",
+"oper_umodes_item : T_SERVNOTICE",
+"oper_umodes_item : T_INVISIBLE",
+"oper_umodes_item : T_WALLOP",
+"oper_umodes_item : T_SOFTCALLERID",
+"oper_umodes_item : T_CALLERID",
+"oper_umodes_item : T_LOCOPS",
+"oper_umodes_item : T_SNOOP",
+"oper_global_kill : GLOBAL_KILL '=' TBOOL ';'",
+"oper_remote : REMOTE '=' TBOOL ';'",
+"oper_remoteban : REMOTEBAN '=' TBOOL ';'",
+"oper_kline : KLINE '=' TBOOL ';'",
+"oper_xline : XLINE '=' TBOOL ';'",
+"oper_unkline : UNKLINE '=' TBOOL ';'",
+"oper_gline : GLINE '=' TBOOL ';'",
+"oper_nick_changes : NICK_CHANGES '=' TBOOL ';'",
+"oper_die : DIE '=' TBOOL ';'",
+"oper_rehash : REHASH '=' TBOOL ';'",
+"oper_admin : ADMIN '=' TBOOL ';'",
+"oper_hidden_admin : HIDDEN_ADMIN '=' TBOOL ';'",
+"oper_hidden_oper : HIDDEN_OPER '=' TBOOL ';'",
+"oper_operwall : T_OPERWALL '=' TBOOL ';'",
+"oper_snoop : T_SNOOP '=' TBOOL ';'",
+"$$3 :",
+"oper_flags : IRCD_FLAGS $$3 '=' oper_flags_items ';'",
+"oper_flags_items : oper_flags_items ',' oper_flags_item",
+"oper_flags_items : oper_flags_item",
+"$$4 :",
+"oper_flags_item : NOT $$4 oper_flags_item_atom",
+"$$5 :",
+"oper_flags_item : $$5 oper_flags_item_atom",
+"oper_flags_item_atom : GLOBAL_KILL",
+"oper_flags_item_atom : REMOTE",
+"oper_flags_item_atom : KLINE",
+"oper_flags_item_atom : UNKLINE",
+"oper_flags_item_atom : XLINE",
+"oper_flags_item_atom : GLINE",
+"oper_flags_item_atom : DIE",
+"oper_flags_item_atom : REHASH",
+"oper_flags_item_atom : ADMIN",
+"oper_flags_item_atom : HIDDEN_ADMIN",
+"oper_flags_item_atom : NICK_CHANGES",
+"oper_flags_item_atom : T_OPERWALL",
+"oper_flags_item_atom : OPER_SPY_T",
+"oper_flags_item_atom : HIDDEN_OPER",
+"oper_flags_item_atom : REMOTEBAN",
+"oper_flags_item_atom : ENCRYPTED",
+"oper_flags_item_atom : T_SNOOP",
+"$$6 :",
+"webirc_entry : WEBIRC $$6 '{' webirc_items '}' ';'",
+"webirc_items : webirc_items webirc_item",
+"webirc_items : webirc_item",
+"webirc_item : webirc_host",
+"webirc_item : webirc_passwd",
+"webirc_item : error ';'",
+"webirc_host : HOST '=' QSTRING ';'",
+"webirc_passwd : PASSWORD '=' QSTRING ';'",
+"$$7 :",
+"class_entry : CLASS $$7 class_name_b '{' class_items '}' ';'",
+"class_name_b :",
+"class_name_b : class_name_t",
+"class_items : class_items class_item",
+"class_items : class_item",
+"class_item : class_name",
+"class_item : class_cidr_bitlen_ipv4",
+"class_item : class_cidr_bitlen_ipv6",
+"class_item : class_ping_time",
+"class_item : class_ping_warning",
+"class_item : class_number_per_cidr",
+"class_item : class_number_per_ip",
+"class_item : class_connectfreq",
+"class_item : class_max_number",
+"class_item : class_max_global",
+"class_item : class_max_local",
+"class_item : class_max_ident",
+"class_item : class_sendq",
+"class_item : error ';'",
+"class_name : NAME '=' QSTRING ';'",
+"class_name_t : QSTRING",
+"class_ping_time : PING_TIME '=' timespec ';'",
+"class_ping_warning : PING_WARNING '=' timespec ';'",
+"class_number_per_ip : NUMBER_PER_IP '=' NUMBER ';'",
+"class_connectfreq : CONNECTFREQ '=' timespec ';'",
+"class_max_number : MAX_NUMBER '=' NUMBER ';'",
+"class_max_global : MAX_GLOBAL '=' NUMBER ';'",
+"class_max_local : MAX_LOCAL '=' NUMBER ';'",
+"class_max_ident : MAX_IDENT '=' NUMBER ';'",
+"class_sendq : SENDQ '=' sizespec ';'",
+"class_cidr_bitlen_ipv4 : CIDR_BITLEN_IPV4 '=' NUMBER ';'",
+"class_cidr_bitlen_ipv6 : CIDR_BITLEN_IPV6 '=' NUMBER ';'",
+"class_number_per_cidr : NUMBER_PER_CIDR '=' NUMBER ';'",
+"$$8 :",
+"listen_entry : LISTEN $$8 '{' listen_items '}' ';'",
+"$$9 :",
+"listen_flags : IRCD_FLAGS $$9 '=' listen_flags_items ';'",
+"listen_flags_items : listen_flags_items ',' listen_flags_item",
+"listen_flags_items : listen_flags_item",
+"listen_flags_item : T_SSL",
+"listen_flags_item : HIDDEN",
+"listen_items : listen_items listen_item",
+"listen_items : listen_item",
+"listen_item : listen_port",
+"listen_item : listen_flags",
+"listen_item : listen_address",
+"listen_item : listen_host",
+"listen_item : error ';'",
+"$$10 :",
+"listen_port : PORT '=' port_items $$10 ';'",
+"port_items : port_items ',' port_item",
+"port_items : port_item",
+"port_item : NUMBER",
+"port_item : NUMBER TWODOTS NUMBER",
+"listen_address : IP '=' QSTRING ';'",
+"listen_host : HOST '=' QSTRING ';'",
+"$$11 :",
+"auth_entry : IRCD_AUTH $$11 '{' auth_items '}' ';'",
+"auth_items : auth_items auth_item",
+"auth_items : auth_item",
+"auth_item : auth_user",
+"auth_item : auth_passwd",
+"auth_item : auth_class",
+"auth_item : auth_flags",
+"auth_item : auth_kline_exempt",
+"auth_item : auth_need_ident",
+"auth_item : auth_exceed_limit",
+"auth_item : auth_no_tilde",
+"auth_item : auth_gline_exempt",
+"auth_item : auth_spoof",
+"auth_item : auth_spoof_notice",
+"auth_item : auth_redir_serv",
+"auth_item : auth_redir_port",
+"auth_item : auth_can_flood",
+"auth_item : auth_need_password",
+"auth_item : auth_encrypted",
+"auth_item : error ';'",
+"auth_user : USER '=' QSTRING ';'",
+"auth_passwd : PASSWORD '=' QSTRING ';'",
+"auth_spoof_notice : SPOOF_NOTICE '=' TBOOL ';'",
+"auth_class : CLASS '=' QSTRING ';'",
+"auth_encrypted : ENCRYPTED '=' TBOOL ';'",
+"$$12 :",
+"auth_flags : IRCD_FLAGS $$12 '=' auth_flags_items ';'",
+"auth_flags_items : auth_flags_items ',' auth_flags_item",
+"auth_flags_items : auth_flags_item",
+"$$13 :",
+"auth_flags_item : NOT $$13 auth_flags_item_atom",
+"$$14 :",
+"auth_flags_item : $$14 auth_flags_item_atom",
+"auth_flags_item_atom : SPOOF_NOTICE",
+"auth_flags_item_atom : EXCEED_LIMIT",
+"auth_flags_item_atom : KLINE_EXEMPT",
+"auth_flags_item_atom : NEED_IDENT",
+"auth_flags_item_atom : CAN_FLOOD",
+"auth_flags_item_atom : CAN_IDLE",
+"auth_flags_item_atom : NO_TILDE",
+"auth_flags_item_atom : GLINE_EXEMPT",
+"auth_flags_item_atom : RESV_EXEMPT",
+"auth_flags_item_atom : NEED_PASSWORD",
+"auth_kline_exempt : KLINE_EXEMPT '=' TBOOL ';'",
+"auth_need_ident : NEED_IDENT '=' TBOOL ';'",
+"auth_exceed_limit : EXCEED_LIMIT '=' TBOOL ';'",
+"auth_can_flood : CAN_FLOOD '=' TBOOL ';'",
+"auth_no_tilde : NO_TILDE '=' TBOOL ';'",
+"auth_gline_exempt : GLINE_EXEMPT '=' TBOOL ';'",
+"auth_spoof : SPOOF '=' QSTRING ';'",
+"auth_redir_serv : REDIRSERV '=' QSTRING ';'",
+"auth_redir_port : REDIRPORT '=' NUMBER ';'",
+"auth_need_password : NEED_PASSWORD '=' TBOOL ';'",
+"$$15 :",
+"resv_entry : RESV $$15 '{' resv_items '}' ';'",
+"resv_items : resv_items resv_item",
+"resv_items : resv_item",
+"resv_item : resv_creason",
+"resv_item : resv_channel",
+"resv_item : resv_nick",
+"resv_item : error ';'",
+"resv_creason : REASON '=' QSTRING ';'",
+"resv_channel : CHANNEL '=' QSTRING ';'",
+"resv_nick : NICK '=' QSTRING ';'",
+"$$16 :",
+"shared_entry : T_SHARED $$16 '{' shared_items '}' ';'",
+"shared_items : shared_items shared_item",
+"shared_items : shared_item",
+"shared_item : shared_name",
+"shared_item : shared_user",
+"shared_item : shared_type",
+"shared_item : error ';'",
+"shared_name : NAME '=' QSTRING ';'",
+"shared_user : USER '=' QSTRING ';'",
+"$$17 :",
+"shared_type : TYPE $$17 '=' shared_types ';'",
+"shared_types : shared_types ',' shared_type_item",
+"shared_types : shared_type_item",
+"shared_type_item : KLINE",
+"shared_type_item : TKLINE",
+"shared_type_item : UNKLINE",
+"shared_type_item : XLINE",
+"shared_type_item : TXLINE",
+"shared_type_item : T_UNXLINE",
+"shared_type_item : RESV",
+"shared_type_item : TRESV",
+"shared_type_item : T_UNRESV",
+"shared_type_item : T_LOCOPS",
+"shared_type_item : T_USERMODE",
+"shared_type_item : T_ALL",
+"$$18 :",
+"cluster_entry : T_CLUSTER $$18 '{' cluster_items '}' ';'",
+"cluster_items : cluster_items cluster_item",
+"cluster_items : cluster_item",
+"cluster_item : cluster_name",
+"cluster_item : cluster_type",
+"cluster_item : error ';'",
+"cluster_name : NAME '=' QSTRING ';'",
+"$$19 :",
+"cluster_type : TYPE $$19 '=' cluster_types ';'",
+"cluster_types : cluster_types ',' cluster_type_item",
+"cluster_types : cluster_type_item",
+"cluster_type_item : KLINE",
+"cluster_type_item : TKLINE",
+"cluster_type_item : UNKLINE",
+"cluster_type_item : XLINE",
+"cluster_type_item : TXLINE",
+"cluster_type_item : T_UNXLINE",
+"cluster_type_item : RESV",
+"cluster_type_item : TRESV",
+"cluster_type_item : T_UNRESV",
+"cluster_type_item : T_LOCOPS",
+"cluster_type_item : T_ALL",
+"$$20 :",
+"connect_entry : CONNECT $$20 connect_name_b '{' connect_items '}' ';'",
+"connect_name_b :",
+"connect_name_b : connect_name_t",
+"connect_items : connect_items connect_item",
+"connect_items : connect_item",
+"connect_item : connect_name",
+"connect_item : connect_host",
+"connect_item : connect_vhost",
+"connect_item : connect_send_password",
+"connect_item : connect_accept_password",
+"connect_item : connect_aftype",
+"connect_item : connect_port",
+"connect_item : connect_fakename",
+"connect_item : connect_flags",
+"connect_item : connect_hub_mask",
+"connect_item : connect_leaf_mask",
+"connect_item : connect_class",
+"connect_item : connect_auto",
+"connect_item : connect_encrypted",
+"connect_item : connect_compressed",
+"connect_item : connect_cryptlink",
+"connect_item : connect_rsa_public_key_file",
+"connect_item : connect_cipher_preference",
+"connect_item : connect_topicburst",
+"connect_item : error ';'",
+"connect_name : NAME '=' QSTRING ';'",
+"connect_name_t : QSTRING",
+"connect_host : HOST '=' QSTRING ';'",
+"connect_vhost : VHOST '=' QSTRING ';'",
+"connect_send_password : SEND_PASSWORD '=' QSTRING ';'",
+"connect_accept_password : ACCEPT_PASSWORD '=' QSTRING ';'",
+"connect_port : PORT '=' NUMBER ';'",
+"connect_aftype : AFTYPE '=' T_IPV4 ';'",
+"connect_aftype : AFTYPE '=' T_IPV6 ';'",
+"connect_fakename : FAKENAME '=' QSTRING ';'",
+"$$21 :",
+"connect_flags : IRCD_FLAGS $$21 '=' connect_flags_items ';'",
+"connect_flags_items : connect_flags_items ',' connect_flags_item",
+"connect_flags_items : connect_flags_item",
+"$$22 :",
+"connect_flags_item : NOT $$22 connect_flags_item_atom",
+"$$23 :",
+"connect_flags_item : $$23 connect_flags_item_atom",
+"connect_flags_item_atom : LAZYLINK",
+"connect_flags_item_atom : COMPRESSED",
+"connect_flags_item_atom : CRYPTLINK",
+"connect_flags_item_atom : AUTOCONN",
+"connect_flags_item_atom : BURST_AWAY",
+"connect_flags_item_atom : TOPICBURST",
+"connect_rsa_public_key_file : RSA_PUBLIC_KEY_FILE '=' QSTRING ';'",
+"connect_encrypted : ENCRYPTED '=' TBOOL ';'",
+"connect_cryptlink : CRYPTLINK '=' TBOOL ';'",
+"connect_compressed : COMPRESSED '=' TBOOL ';'",
+"connect_auto : AUTOCONN '=' TBOOL ';'",
+"connect_topicburst : TOPICBURST '=' TBOOL ';'",
+"connect_hub_mask : HUB_MASK '=' QSTRING ';'",
+"connect_leaf_mask : LEAF_MASK '=' QSTRING ';'",
+"connect_class : CLASS '=' QSTRING ';'",
+"connect_cipher_preference : CIPHER_PREFERENCE '=' QSTRING ';'",
+"$$24 :",
+"kill_entry : KILL $$24 '{' kill_items '}' ';'",
+"$$25 :",
+"kill_type : TYPE $$25 '=' kill_type_items ';'",
+"kill_type_items : kill_type_items ',' kill_type_item",
+"kill_type_items : kill_type_item",
+"kill_type_item : REGEX_T",
+"kill_items : kill_items kill_item",
+"kill_items : kill_item",
+"kill_item : kill_user",
+"kill_item : kill_reason",
+"kill_item : kill_type",
+"kill_item : error",
+"kill_user : USER '=' QSTRING ';'",
+"kill_reason : REASON '=' QSTRING ';'",
+"$$26 :",
+"deny_entry : DENY $$26 '{' deny_items '}' ';'",
+"deny_items : deny_items deny_item",
+"deny_items : deny_item",
+"deny_item : deny_ip",
+"deny_item : deny_reason",
+"deny_item : error",
+"deny_ip : IP '=' QSTRING ';'",
+"deny_reason : REASON '=' QSTRING ';'",
+"exempt_entry : EXEMPT '{' exempt_items '}' ';'",
+"exempt_items : exempt_items exempt_item",
+"exempt_items : exempt_item",
+"exempt_item : exempt_ip",
+"exempt_item : error",
+"exempt_ip : IP '=' QSTRING ';'",
+"$$27 :",
+"gecos_entry : GECOS $$27 '{' gecos_items '}' ';'",
+"$$28 :",
+"gecos_flags : TYPE $$28 '=' gecos_flags_items ';'",
+"gecos_flags_items : gecos_flags_items ',' gecos_flags_item",
+"gecos_flags_items : gecos_flags_item",
+"gecos_flags_item : REGEX_T",
+"gecos_items : gecos_items gecos_item",
+"gecos_items : gecos_item",
+"gecos_item : gecos_name",
+"gecos_item : gecos_reason",
+"gecos_item : gecos_flags",
+"gecos_item : error",
+"gecos_name : NAME '=' QSTRING ';'",
+"gecos_reason : REASON '=' QSTRING ';'",
+"general_entry : GENERAL '{' general_items '}' ';'",
+"general_items : general_items general_item",
+"general_items : general_item",
+"general_item : general_hide_spoof_ips",
+"general_item : general_ignore_bogus_ts",
+"general_item : general_failed_oper_notice",
+"general_item : general_anti_nick_flood",
+"general_item : general_max_nick_time",
+"general_item : general_max_nick_changes",
+"general_item : general_max_accept",
+"general_item : general_anti_spam_exit_message_time",
+"general_item : general_ts_warn_delta",
+"general_item : general_ts_max_delta",
+"general_item : general_kill_chase_time_limit",
+"general_item : general_kline_with_reason",
+"general_item : general_kline_reason",
+"general_item : general_invisible_on_connect",
+"general_item : general_mode_z",
+"general_item : general_warn_no_nline",
+"general_item : general_dots_in_ident",
+"general_item : general_stats_o_oper_only",
+"general_item : general_stats_k_oper_only",
+"general_item : general_pace_wait",
+"general_item : general_stats_i_oper_only",
+"general_item : general_pace_wait_simple",
+"general_item : general_stats_P_oper_only",
+"general_item : general_short_motd",
+"general_item : general_no_oper_flood",
+"general_item : general_true_no_oper_flood",
+"general_item : general_oper_pass_resv",
+"general_item : general_idletime",
+"general_item : general_message_locale",
+"general_item : general_oper_only_umodes",
+"general_item : general_max_targets",
+"general_item : general_use_egd",
+"general_item : general_egdpool_path",
+"general_item : general_oper_umodes",
+"general_item : general_caller_id_wait",
+"general_item : general_opers_bypass_callerid",
+"general_item : general_default_floodcount",
+"general_item : general_min_nonwildcard",
+"general_item : general_min_nonwildcard_simple",
+"general_item : general_servlink_path",
+"general_item : general_disable_remote_commands",
+"general_item : general_default_cipher_preference",
+"general_item : general_compression_level",
+"general_item : general_client_flood",
+"general_item : general_throttle_time",
+"general_item : general_havent_read_conf",
+"general_item : general_dot_in_ip6_addr",
+"general_item : general_ping_cookie",
+"general_item : general_disable_auth",
+"general_item : general_burst_away",
+"general_item : general_tkline_expire_notices",
+"general_item : general_gline_min_cidr",
+"general_item : general_gline_min_cidr6",
+"general_item : general_use_whois_actually",
+"general_item : general_reject_hold_time",
+"general_item : general_stats_e_disabled",
+"general_item : error",
+"general_gline_min_cidr : GLINE_MIN_CIDR '=' NUMBER ';'",
+"general_gline_min_cidr6 : GLINE_MIN_CIDR6 '=' NUMBER ';'",
+"general_burst_away : BURST_AWAY '=' TBOOL ';'",
+"general_use_whois_actually : USE_WHOIS_ACTUALLY '=' TBOOL ';'",
+"general_reject_hold_time : TREJECT_HOLD_TIME '=' timespec ';'",
+"general_tkline_expire_notices : TKLINE_EXPIRE_NOTICES '=' TBOOL ';'",
+"general_kill_chase_time_limit : KILL_CHASE_TIME_LIMIT '=' NUMBER ';'",
+"general_hide_spoof_ips : HIDE_SPOOF_IPS '=' TBOOL ';'",
+"general_ignore_bogus_ts : IGNORE_BOGUS_TS '=' TBOOL ';'",
+"general_disable_remote_commands : DISABLE_REMOTE_COMMANDS '=' TBOOL ';'",
+"general_failed_oper_notice : FAILED_OPER_NOTICE '=' TBOOL ';'",
+"general_anti_nick_flood : ANTI_NICK_FLOOD '=' TBOOL ';'",
+"general_max_nick_time : MAX_NICK_TIME '=' timespec ';'",
+"general_max_nick_changes : MAX_NICK_CHANGES '=' NUMBER ';'",
+"general_max_accept : MAX_ACCEPT '=' NUMBER ';'",
+"general_anti_spam_exit_message_time : ANTI_SPAM_EXIT_MESSAGE_TIME '=' timespec ';'",
+"general_ts_warn_delta : TS_WARN_DELTA '=' timespec ';'",
+"general_ts_max_delta : TS_MAX_DELTA '=' timespec ';'",
+"general_havent_read_conf : HAVENT_READ_CONF '=' NUMBER ';'",
+"general_kline_with_reason : KLINE_WITH_REASON '=' TBOOL ';'",
+"general_kline_reason : KLINE_REASON '=' QSTRING ';'",
+"general_invisible_on_connect : INVISIBLE_ON_CONNECT '=' TBOOL ';'",
+"general_mode_z : MODE_Z '=' TBOOL ';'",
+"general_warn_no_nline : WARN_NO_NLINE '=' TBOOL ';'",
+"general_stats_e_disabled : STATS_E_DISABLED '=' TBOOL ';'",
+"general_stats_o_oper_only : STATS_O_OPER_ONLY '=' TBOOL ';'",
+"general_stats_P_oper_only : STATS_P_OPER_ONLY '=' TBOOL ';'",
+"general_stats_k_oper_only : STATS_K_OPER_ONLY '=' TBOOL ';'",
+"general_stats_k_oper_only : STATS_K_OPER_ONLY '=' TMASKED ';'",
+"general_stats_i_oper_only : STATS_I_OPER_ONLY '=' TBOOL ';'",
+"general_stats_i_oper_only : STATS_I_OPER_ONLY '=' TMASKED ';'",
+"general_pace_wait : PACE_WAIT '=' timespec ';'",
+"general_caller_id_wait : CALLER_ID_WAIT '=' timespec ';'",
+"general_opers_bypass_callerid : OPERS_BYPASS_CALLERID '=' TBOOL ';'",
+"general_pace_wait_simple : PACE_WAIT_SIMPLE '=' timespec ';'",
+"general_short_motd : SHORT_MOTD '=' TBOOL ';'",
+"general_no_oper_flood : NO_OPER_FLOOD '=' TBOOL ';'",
+"general_true_no_oper_flood : TRUE_NO_OPER_FLOOD '=' TBOOL ';'",
+"general_oper_pass_resv : OPER_PASS_RESV '=' TBOOL ';'",
+"general_message_locale : MESSAGE_LOCALE '=' QSTRING ';'",
+"general_idletime : IDLETIME '=' timespec ';'",
+"general_dots_in_ident : DOTS_IN_IDENT '=' NUMBER ';'",
+"general_max_targets : MAX_TARGETS '=' NUMBER ';'",
+"general_servlink_path : SERVLINK_PATH '=' QSTRING ';'",
+"general_default_cipher_preference : DEFAULT_CIPHER_PREFERENCE '=' QSTRING ';'",
+"general_compression_level : COMPRESSION_LEVEL '=' NUMBER ';'",
+"general_use_egd : USE_EGD '=' TBOOL ';'",
+"general_egdpool_path : EGDPOOL_PATH '=' QSTRING ';'",
+"general_ping_cookie : PING_COOKIE '=' TBOOL ';'",
+"general_disable_auth : DISABLE_AUTH '=' TBOOL ';'",
+"general_throttle_time : THROTTLE_TIME '=' timespec ';'",
+"$$29 :",
+"general_oper_umodes : OPER_UMODES $$29 '=' umode_oitems ';'",
+"umode_oitems : umode_oitems ',' umode_oitem",
+"umode_oitems : umode_oitem",
+"umode_oitem : T_BOTS",
+"umode_oitem : T_CCONN",
+"umode_oitem : T_CCONN_FULL",
+"umode_oitem : T_DEAF",
+"umode_oitem : T_DEBUG",
+"umode_oitem : T_FULL",
+"umode_oitem : T_SKILL",
+"umode_oitem : T_NCHANGE",
+"umode_oitem : T_REJ",
+"umode_oitem : T_UNAUTH",
+"umode_oitem : T_SPY",
+"umode_oitem : T_EXTERNAL",
+"umode_oitem : T_OPERWALL",
+"umode_oitem : T_SERVNOTICE",
+"umode_oitem : T_INVISIBLE",
+"umode_oitem : T_WALLOP",
+"umode_oitem : T_SOFTCALLERID",
+"umode_oitem : T_CALLERID",
+"umode_oitem : T_LOCOPS",
+"$$30 :",
+"general_oper_only_umodes : OPER_ONLY_UMODES $$30 '=' umode_items ';'",
+"umode_items : umode_items ',' umode_item",
+"umode_items : umode_item",
+"umode_item : T_BOTS",
+"umode_item : T_CCONN",
+"umode_item : T_CCONN_FULL",
+"umode_item : T_DEAF",
+"umode_item : T_DEBUG",
+"umode_item : T_FULL",
+"umode_item : T_SKILL",
+"umode_item : T_NCHANGE",
+"umode_item : T_REJ",
+"umode_item : T_UNAUTH",
+"umode_item : T_SPY",
+"umode_item : T_EXTERNAL",
+"umode_item : T_OPERWALL",
+"umode_item : T_SERVNOTICE",
+"umode_item : T_INVISIBLE",
+"umode_item : T_WALLOP",
+"umode_item : T_SOFTCALLERID",
+"umode_item : T_CALLERID",
+"umode_item : T_LOCOPS",
+"umode_item : T_SNOOP",
+"general_min_nonwildcard : MIN_NONWILDCARD '=' NUMBER ';'",
+"general_min_nonwildcard_simple : MIN_NONWILDCARD_SIMPLE '=' NUMBER ';'",
+"general_default_floodcount : DEFAULT_FLOODCOUNT '=' NUMBER ';'",
+"general_client_flood : T_CLIENT_FLOOD '=' sizespec ';'",
+"general_dot_in_ip6_addr : DOT_IN_IP6_ADDR '=' TBOOL ';'",
+"$$31 :",
+"gline_entry : GLINES $$31 '{' gline_items '}' ';'",
+"gline_items : gline_items gline_item",
+"gline_items : gline_item",
+"gline_item : gline_enable",
+"gline_item : gline_duration",
+"gline_item : gline_logging",
+"gline_item : gline_user",
+"gline_item : gline_server",
+"gline_item : gline_action",
+"gline_item : error",
+"gline_enable : ENABLE '=' TBOOL ';'",
+"gline_duration : DURATION '=' timespec ';'",
+"$$32 :",
+"gline_logging : LOGGING $$32 '=' gline_logging_types ';'",
+"gline_logging_types : gline_logging_types ',' gline_logging_type_item",
+"gline_logging_types : gline_logging_type_item",
+"gline_logging_type_item : T_REJECT",
+"gline_logging_type_item : T_BLOCK",
+"gline_user : USER '=' QSTRING ';'",
+"gline_server : NAME '=' QSTRING ';'",
+"$$33 :",
+"gline_action : ACTION $$33 '=' gdeny_types ';'",
+"gdeny_types : gdeny_types ',' gdeny_type_item",
+"gdeny_types : gdeny_type_item",
+"gdeny_type_item : T_REJECT",
+"gdeny_type_item : T_BLOCK",
+"channel_entry : CHANNEL '{' channel_items '}' ';'",
+"channel_items : channel_items channel_item",
+"channel_items : channel_item",
+"channel_item : channel_disable_local_channels",
+"channel_item : channel_use_except",
+"channel_item : channel_use_invex",
+"channel_item : channel_use_knock",
+"channel_item : channel_max_bans",
+"channel_item : channel_knock_delay",
+"channel_item : channel_knock_delay_channel",
+"channel_item : channel_max_chans_per_user",
+"channel_item : channel_quiet_on_ban",
+"channel_item : channel_default_split_user_count",
+"channel_item : channel_default_split_server_count",
+"channel_item : channel_no_create_on_split",
+"channel_item : channel_restrict_channels",
+"channel_item : channel_no_join_on_split",
+"channel_item : channel_burst_topicwho",
+"channel_item : channel_jflood_count",
+"channel_item : channel_jflood_time",
+"channel_item : channel_disable_fake_channels",
+"channel_item : error",
+"channel_disable_fake_channels : DISABLE_FAKE_CHANNELS '=' TBOOL ';'",
+"channel_restrict_channels : RESTRICT_CHANNELS '=' TBOOL ';'",
+"channel_disable_local_channels : DISABLE_LOCAL_CHANNELS '=' TBOOL ';'",
+"channel_use_except : USE_EXCEPT '=' TBOOL ';'",
+"channel_use_invex : USE_INVEX '=' TBOOL ';'",
+"channel_use_knock : USE_KNOCK '=' TBOOL ';'",
+"channel_knock_delay : KNOCK_DELAY '=' timespec ';'",
+"channel_knock_delay_channel : KNOCK_DELAY_CHANNEL '=' timespec ';'",
+"channel_max_chans_per_user : MAX_CHANS_PER_USER '=' NUMBER ';'",
+"channel_quiet_on_ban : QUIET_ON_BAN '=' TBOOL ';'",
+"channel_max_bans : MAX_BANS '=' NUMBER ';'",
+"channel_default_split_user_count : DEFAULT_SPLIT_USER_COUNT '=' NUMBER ';'",
+"channel_default_split_server_count : DEFAULT_SPLIT_SERVER_COUNT '=' NUMBER ';'",
+"channel_no_create_on_split : NO_CREATE_ON_SPLIT '=' TBOOL ';'",
+"channel_no_join_on_split : NO_JOIN_ON_SPLIT '=' TBOOL ';'",
+"channel_burst_topicwho : BURST_TOPICWHO '=' TBOOL ';'",
+"channel_jflood_count : JOIN_FLOOD_COUNT '=' NUMBER ';'",
+"channel_jflood_time : JOIN_FLOOD_TIME '=' timespec ';'",
+"serverhide_entry : SERVERHIDE '{' serverhide_items '}' ';'",
+"serverhide_items : serverhide_items serverhide_item",
+"serverhide_items : serverhide_item",
+"serverhide_item : serverhide_flatten_links",
+"serverhide_item : serverhide_hide_servers",
+"serverhide_item : serverhide_links_delay",
+"serverhide_item : serverhide_disable_hidden",
+"serverhide_item : serverhide_hidden",
+"serverhide_item : serverhide_hidden_name",
+"serverhide_item : serverhide_hide_server_ips",
+"serverhide_item : error",
+"serverhide_flatten_links : FLATTEN_LINKS '=' TBOOL ';'",
+"serverhide_hide_servers : HIDE_SERVERS '=' TBOOL ';'",
+"serverhide_hidden_name : HIDDEN_NAME '=' QSTRING ';'",
+"serverhide_links_delay : LINKS_DELAY '=' timespec ';'",
+"serverhide_hidden : HIDDEN '=' TBOOL ';'",
+"serverhide_disable_hidden : DISABLE_HIDDEN '=' TBOOL ';'",
+"serverhide_hide_server_ips : HIDE_SERVER_IPS '=' TBOOL ';'",
 };
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -958
-static const yytype_int16 yypact[] =
-{
-    -958,   464,  -958,  -243,  -250,  -236,  -958,  -958,  -958,  -223,
-    -958,  -221,  -958,  -958,  -958,  -958,  -208,  -201,  -958,  -958,
-    -198,  -192,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,     8,
-     842,   -74,   -63,  -167,     9,  -158,   614,  -140,  -126,  -121,
-    -113,   514,    35,   -15,  -111,   613,   680,  -106,  -103,   -81,
-     -62,   -44,   -43,   -35,     4,  -958,  -958,  -958,  -958,  -958,
-     -33,   -30,   -25,   -13,    -2,    14,    21,    25,    34,    40,
-      41,    42,    44,    50,    52,    55,    65,    78,   195,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,   -61,
-    -958,  -958,    36,  -958,   245,  -958,    79,    45,  -958,  -958,
-     249,  -958,    80,    83,    85,    92,    98,   102,   105,   109,
-     110,   111,   118,   127,   128,   129,   132,   133,   138,   139,
-     153,   154,   155,   156,   157,   161,   173,   175,   176,   177,
-     178,   180,   185,   187,  -958,   190,  -958,   191,   194,   196,
-     204,   208,   209,   210,   213,   216,   217,   218,   219,   222,
-     228,   229,   231,   232,   233,   235,   236,    15,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,   179,   910,    94,   262,    51,   237,
-     238,   240,   241,   244,   246,   247,   254,   256,   257,   258,
-     261,   373,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,    72,   265,   268,    68,  -958,
-    -958,  -958,  -958,    38,  -958,   239,  -958,   269,   270,   271,
-     272,   274,   275,   277,   186,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,    99,   278,   281,   282,   283,   284,   289,
-     292,   293,   294,   295,   296,   297,   298,   197,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,     5,   174,    24,  -958,   203,   307,   333,   189,
-    -958,   329,   371,   432,   368,   370,   445,   445,   446,   447,
-     383,   384,   450,   445,   386,   388,   389,   390,   392,   330,
-    -958,   495,   841,  -958,   326,   331,    48,  -958,  -958,  -958,
-     439,   337,  -958,  -958,   335,   336,  -958,  -958,    13,  -958,
-    -958,  -958,   397,   445,   405,   445,   471,   453,   476,   413,
-     414,   417,   483,   468,   421,   491,   493,   500,   430,   445,
-     437,   440,   504,   484,   442,   509,   518,   445,   522,   506,
-     526,   529,   465,   466,   400,   469,   406,   445,   445,   472,
-     445,   519,   477,   478,   479,  -124,  -109,   480,   481,   445,
-     445,   548,   445,   485,   486,   489,   490,   420,  -958,  -958,
-    -958,   424,   427,  -958,   434,   435,    62,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,   451,   436,   443,   444,   449,  -958,
-     452,   454,   455,   457,   459,   461,   473,   475,   482,   487,
-     494,   223,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-     499,  -958,   502,  -958,    32,  -958,  -958,  -958,   467,  -958,
-     505,   507,   510,  -958,    96,  -958,  -958,  -958,  -958,  -958,
-     542,   557,   581,   582,   586,   588,   590,   591,   164,   594,
-     596,   562,   515,  -958,  -958,   616,   623,   521,  -958,   669,
-     523,   524,   525,   527,    18,  -958,  -958,  -958,  -958,   571,
-     589,   599,   629,   601,   602,   445,   532,  -958,  -958,   631,
-     633,   603,   651,   657,   658,   659,   662,   664,   665,   688,
-     667,   668,   563,  -958,   564,   566,  -958,   569,    49,  -958,
-    -958,  -958,  -958,   565,   570,  -958,    69,  -958,  -958,  -958,
-     567,   573,   574,    64,  -958,  -958,  -958,   578,   583,   597,
-    -958,   598,   606,   608,   610,   611,   -96,   617,   618,   620,
-     622,   624,   625,   626,   630,   634,   635,   636,   638,   639,
-    -958,   640,   587,   593,   628,   642,   644,   646,   647,   649,
-     650,   653,   655,   660,   666,   355,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-     641,   673,   674,   678,   679,   681,   682,   683,   684,   687,
-    -958,   689,   690,   691,   692,   693,   696,   697,   700,   701,
-      93,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,   698,   706,   661,  -958,   670,  -958,   723,   730,   703,
-     671,  -958,   707,   710,   711,   712,   713,   714,   715,   717,
-     718,   719,   720,   722,   724,   727,   728,   729,   732,   734,
-     735,   737,   738,   740,   744,   746,   748,   754,   761,   762,
-     764,   766,   767,   768,   806,   769,   934,   770,   772,   780,
-     782,   783,   785,   786,   787,   788,   789,   790,   791,   792,
-     793,   794,   795,   324,   796,   798,   799,   800,   801,   802,
-    -958,   807,   445,   726,   808,   736,   749,   803,  -958,  -958,
-     747,   775,   755,   868,   809,   869,   873,   877,   878,   879,
-     837,   695,   923,   924,   882,   926,   820,  -958,   929,   821,
-     933,   827,  -958,  -958,   825,   936,   937,   963,   838,  -958,
-     846,   849,   853,   854,   856,   857,   858,   859,   860,   861,
-     862,   863,   864,   871,   872,   874,   875,   885,  -958,   889,
-     890,  -958,   892,   834,   891,   894,   895,  -958,   896,   897,
-     904,   905,   907,   908,   911,   912,   913,   914,   915,   916,
-     917,   918,  -958,   919,   920,   921,   165,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,   989,  1000,  1002,   925,  -958,   927,   928,   930,
-     931,   932,   935,   938,  -958,   939,   940,   941,   942,   943,
-     944,   945,   946,   947,   948,   949,   950,   951,  -958,  -958,
-    1020,   952,  1033,   953,  -958,  -958,  1036,   954,   956,  -958,
-    -958,  1040,  1041,   958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,   445,   445,   445,   445,   445,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  1065,  1066,   445,  1081,  1083,  1088,
-    1089,  1068,  1091,  1092,   445,   445,   548,   964,  -958,  -958,
-    1072,    37,  1030,  1074,  1075,  1034,  1035,  1037,  1076,   969,
-    1082,  1084,  1085,  1086,  1103,  1087,  1090,  1045,  1093,   976,
-    -958,   982,   984,  -958,  -958,   985,   987,   279,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -255,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -245,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,   548,   548,   548,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,    -8,   988,   990,     6,   991,   992,  -958,   993,
-     994,   995,   996,   704,   997,   998,   999,  1001,  1003,  1004,
-    1005,  1006,  1007,  1008,  1009,  -958,  1010,  1102,  1011,  -958,
-     -75,  1012,  1013,   645,   585,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  1053,  1109,
-    1078,  1079,  1014,  1080,  1094,  1095,  1096,  1097,  1125,  1098,
-    1126,  1099,  1100,  1101,  1127,  1104,  1105,  1018,  1106,  1129,
-    1107,  1023,  -958,  1024,  1025,  1026,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  1027,   306,  1028,
-    -958,  1029,   535,  -958,  1038,  1039,  -958,  -958,  -958,  -958,
-    -958,  -958,  1044,  1046,  1047,  1048,  1049,  1050,  1051,  1052,
-    1054,  1055,  1056,  1057,  1058,  -958,  1059,  1060,  1061,  1062,
-    1063,  1064,  1067,  1069,  1070,  1071,  1175,  1073,  1077,  1108,
-    1110,  1111,  1112,  1113,  1114,  1115,  -958,  -958,  -958,  -958,
-    -958,  -958,  -237,  -958,  -958,   806,  -958,   934,  -958,  -958,
-    -958,  -958,  -958,  -232,  -958,  -958,  -958,  -958,  -958,  -212,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -178,  -958,
-     349,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -146,  -958,  -958,  -958,  -958,  -141,
-    -958,  -958,  -958,  1182,   963,  1116,  1117,  1118,  1119,  1120,
-    1195,  1121,  1122,  1123,  1124,  1128,  1130,  1131,  1132,  1133,
-    1134,  1135,  1136,  1137,  1138,   898,  1139,  1140,  1141,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -125,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -114,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,   -98,
-    -958,     1,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,   279,  -958,  -958,  -958,    -8,  -958,     6,   349,
-    -958,   704,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  1102,  -958,   -75,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,   -90,  -958,   840,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,    23,  -958,  -958,  -958,  -958,  -958,   306,  -958,
-     535,     1,  -958,  1175,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,   840,  -958,
-    1195,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-     898,  -958,  -958,  -958,  -958,  -958,  -958,  -958
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -958,  -958,  -958,  -505,  -346,  -957,  -429,  -958,  -958,  1142,
-    -958,  -958,  -958,  -958,  1021,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    1255,  -958,  -958,  -958,  -958,  -958,  1144,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,    87,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -179,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -155,  -958,  -958,  -151,  -958,  -958,  -958,
-     756,  -958,  -958,  -958,  -958,  -958,  -958,   716,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,   -73,  -958,   843,
-    -958,  -958,  -958,    54,  -958,  -958,  -958,  -958,  -958,   880,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,   -59,  -958,
-    -958,   -55,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,   811,  -958,  -958,  -958,  -958,
-    -958,  -958,   778,  -958,  -958,  -958,  -958,  -958,  -119,  -958,
-    -958,  -958,   774,  -958,  -958,  -958,  -958,  -118,  -958,  -958,
-    -958,  -958,   694,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -120,  -958,  -958,  -116,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,   -58,  -958,   865,  -958,  -958,  -958,
-    -958,  -958,  1022,  -958,  -958,  -958,  -958,  1230,  -958,  -958,
-    -958,  -958,  -958,  -958,   -34,  -958,   983,  -958,  -958,  -958,
-    -958,  1173,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,   115,  -958,  -958,  -958,   119,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,   922,  -958,  -958,  -958,
-    -958,  -958,   -32,  -958,  -958,  -958,  -958,  -958,   -31,  -958,
-    -958,  1265,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,  -958,
-    -958,  -958,  1143,  -958,  -958,  -958,  -958,  -958,  -958,  -958
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If zero, do what YYDEFACT says.
-   If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -1
-static const yytype_uint16 yytable[] =
-{
-     597,   598,   744,  1251,  1287,    70,   564,   604,  1244,    70,
-     125,  1474,  1245,  1475,   373,    49,   131,  1257,  1246,   530,
-      47,    48,  1247,   132,   133,   580,  1391,   134,  1476,    50,
-    1392,  1395,  1477,   489,   135,  1396,   275,   693,   596,   695,
-     531,    71,    54,   136,    56,    71,   125,   137,   138,   363,
-     564,  1397,    72,   709,   139,  1398,    72,    61,   140,   141,
-     142,   717,   143,   439,    62,   580,   440,    65,   144,   275,
-     573,   727,   728,    66,   730,   735,   736,   913,   914,   915,
-     916,   917,   118,   741,   742,  1400,   745,   145,   146,  1401,
-     737,   738,   147,   121,   640,   489,   641,   498,   124,   642,
-     148,   126,  1478,   643,   149,   150,   151,   130,   441,   152,
-     581,   442,   153,   154,  1248,  1249,  1250,  1413,   644,   645,
-     646,  1414,  1415,   155,   647,   244,  1416,    73,   565,   156,
-     157,    73,   158,   159,   160,   161,   374,   126,  1467,   245,
-     364,   282,  1468,   648,   246,   532,   162,   649,   650,  1469,
-     581,   499,   247,  1470,   285,   163,   276,   164,   165,   332,
-     166,  1288,   333,   167,   168,  1472,   812,   169,   443,  1473,
-     813,   375,   565,  1489,   582,   573,   533,  1490,   170,   651,
-     439,   652,   500,   440,   334,   444,   277,   286,   501,   276,
-     490,   814,   574,  1252,   566,   653,    79,   171,   303,   873,
-     172,   335,   376,   815,   361,   173,   365,  1258,    80,   174,
-     175,   176,   177,   178,   582,   816,   654,   179,   180,   277,
-     817,   491,   336,   337,   454,   441,   181,   287,   442,    81,
-      82,   338,   818,   341,   304,    83,   342,    84,   566,   819,
-     530,   343,   288,   455,  1479,   820,   363,   821,   655,   456,
-     373,   502,   490,   344,   567,  1217,  1218,   182,   575,   183,
-     822,   531,   656,   498,   345,   289,   184,   290,   339,   291,
-     292,   185,   657,   457,   458,   305,   186,   690,   459,   437,
-     346,   492,   865,   491,   306,   443,  1509,   347,   823,   293,
-    1510,   348,   460,   824,    85,    86,   781,   574,   567,   461,
-     349,   362,   444,   529,    87,    88,   350,   351,   352,   371,
-     353,   445,   683,   893,   509,   825,   354,   499,   355,   462,
-     307,   356,   308,   309,    89,    90,   757,   826,   903,   827,
-     828,   357,   527,   898,   829,   524,   658,   364,  1071,  1072,
-    1073,    91,    92,   492,   358,   370,   382,   463,   500,   383,
-     659,   384,    93,   830,   501,   464,   611,   969,   385,   587,
-     788,    94,   548,   575,   386,   310,   532,   311,   387,  1402,
-    1403,   388,   374,   465,   248,   389,   390,   391,   612,   613,
-     312,   313,   466,   467,   392,   614,   798,   799,   800,   801,
-     802,   803,   804,   393,   394,   395,   831,   533,   396,   397,
-    1404,  1324,   832,   365,   398,   399,  1083,   375,  1197,  1198,
-    1199,  1200,  1201,   833,   834,   468,   469,   502,  1405,   400,
-     401,   402,   403,   404,   835,  1406,   314,   405,   445,  1161,
-     249,   250,   251,   252,   253,   254,   255,   256,   376,   406,
-    1241,   407,   408,   409,   410,  1407,   411,    95,    96,    97,
-     546,   412,   590,   413,   315,   316,   415,   417,   743,   359,
-     418,   562,   419,   588,     2,     3,   615,   616,   617,     4,
-     420,   618,   470,  1408,   421,   422,   423,  1325,   619,   424,
-     257,  1409,   425,   426,   427,   428,     5,   776,   429,   589,
-       6,   620,   621,     7,   430,   431,   611,   432,   433,   434,
-       8,   435,   436,   510,   511,   592,   512,   513,   622,   623,
-     514,  1326,   515,   516,   258,   248,     9,  1214,   612,   613,
-     517,  1410,   518,   519,   520,   614,  1327,   521,   591,    10,
-      11,   525,    12,   624,   526,   539,   540,   541,   542,    13,
-     543,   544,  1411,   545,   549,  1328,  1329,   550,   551,   552,
-     553,  1330,  1331,  1332,  1333,   554,  1334,    14,   555,   556,
-     557,   558,   559,   560,   561,  1335,   593,   594,    15,   595,
-      16,   249,   250,   251,   252,   253,   254,   255,   256,   596,
-     599,   600,   601,   602,   603,   605,    17,   606,   607,   608,
-    1204,   609,   681,   610,   259,   685,   692,   682,  1212,  1213,
-     686,   687,   688,    18,   694,   696,   615,   616,   617,   697,
-     698,   618,   699,   700,   286,   131,   701,   702,   619,   947,
-     704,   257,   132,   133,   703,   705,   134,   706,   260,   708,
-    1340,   620,   621,   135,   707,    19,   710,   522,   712,   711,
-     713,   714,   136,   715,    20,    21,   137,   138,   622,   623,
-      22,    23,   716,   139,   287,   258,   718,   140,   141,   142,
-     720,   143,   719,   721,   722,   723,   724,   144,   725,   288,
-     812,   729,   726,   624,   813,   731,   732,   733,   734,   739,
-     740,   303,   743,   750,   746,   747,   145,   146,   748,   749,
-     752,   147,   289,   753,   290,   814,   291,   292,   790,   148,
-     755,   756,   760,   149,   150,   151,  1341,   815,   152,   761,
-     762,   153,   154,   791,   759,   763,   293,   304,   765,   816,
-     766,   767,   155,   768,   817,   769,    24,   770,   156,   157,
-     783,   158,   159,   160,   161,   259,   818,   792,   793,   771,
-    1342,   772,   794,   819,   795,   162,   796,   797,   773,   820,
-     805,   821,   806,   774,   163,  1343,   164,   165,   305,   166,
-     775,   807,   167,   168,   822,   778,   169,   306,   780,   260,
-     867,   785,   809,   786,  1344,  1345,   787,   170,   808,   810,
-    1346,  1347,  1348,  1349,   811,   870,   861,   875,   868,   876,
-     862,   863,   823,   864,  1350,   874,   171,   824,   869,   172,
-     871,   872,   877,   307,   173,   308,   309,   878,   174,   175,
-     176,   177,   178,   879,   880,   881,   179,   180,   882,   825,
-     883,   884,   885,   886,   887,   181,   888,   889,   895,  1100,
-     900,   826,   890,   827,   828,   892,   896,  1267,   829,   901,
-     902,   905,   640,    79,   641,  1491,   906,   642,   310,  1293,
-     311,   643,  1294,   934,   971,    80,   182,   830,   183,   935,
-     907,   908,   972,   312,   313,   184,   644,   645,   646,   909,
-     185,   910,   647,   911,   912,   186,    81,    82,  1492,   975,
-     920,   921,    83,   922,    84,   923,   976,   924,   925,   926,
-    1493,   648,  1086,   927,   936,   649,   650,   928,   929,   930,
-     831,   931,   932,   933,   949,  1087,   832,  1494,   937,   314,
-     938,   454,   939,   940,  1495,   941,   942,   833,   834,   943,
-    1496,   944,  1497,  1162,   973,  1084,   945,   651,   835,   652,
-     455,  1090,   946,   974,   978,  1498,   456,   315,   316,   950,
-     951,    85,    86,   653,   952,   953,  1089,   954,   955,   956,
-     957,    87,    88,   958,  1091,   960,   961,   962,   963,   964,
-     457,   458,   965,   966,   654,   459,   967,   968,  1499,   977,
-     979,    89,    90,   980,   981,   982,   983,   984,   985,   460,
-     986,   987,   988,   989,  1500,   990,   461,   991,    91,    92,
-     992,   993,   994,  1099,  1011,   995,   655,   996,   997,    93,
-     998,   999,  1501,  1000,  1502,  1503,   462,  1001,    94,  1002,
-     656,  1003,  1012,  1013,  1014,  1015,  1016,  1004,  1017,  1018,
-     657,  1019,  1020,  1021,  1005,  1006,  1022,  1007,  1504,  1008,
-    1009,  1010,  1033,  1055,   463,  1056,  1023,  1024,  1025,  1026,
-    1027,  1028,   464,  1057,  1029,  1058,  1059,  1030,  1060,  1061,
-    1062,  1063,  1064,  1065,  1066,  1067,  1068,  1069,  1070,  1076,
-     465,  1077,  1078,  1079,  1080,  1081,  1088,  1092,  1094,   466,
-     467,  1505,  1095,  1082,  1085,  1093,  1096,  1097,  1098,  1101,
-    1102,  1103,  1104,  1105,   658,  1106,  1442,  1107,  1506,  1108,
-    1109,  1110,  1111,  1112,    95,    96,    97,  1113,   659,  1507,
-    1138,  1116,   468,   469,  1443,  1444,  1445,  1446,  1447,  1117,
-    1448,  1449,  1118,  1450,  1451,  1452,  1119,  1120,  1453,  1121,
-    1122,  1123,  1124,  1125,  1126,  1127,  1128,  1129,  1454,  1455,
-    1456,  1457,  1458,  1459,  1130,  1131,  1460,  1132,  1133,  1461,
-    1034,  1035,  1036,  1037,  1038,  1163,  1039,  1040,  1134,  1041,
-    1042,  1043,  1135,  1136,  1044,  1137,  1164,  1139,  1165,   470,
-    1140,  1141,  1143,  1144,  1045,  1046,  1047,  1048,  1049,  1050,
-    1145,  1146,  1051,  1147,  1148,  1052,  1187,  1149,  1150,  1151,
-    1152,  1153,  1154,  1155,  1156,  1158,  1159,  1160,  1166,  1189,
-    1167,  1168,  1191,  1169,  1170,  1171,  1194,  1195,  1172,  1202,
-    1203,  1173,  1174,  1175,  1176,  1177,  1178,  1179,  1180,  1181,
-    1182,  1183,  1184,  1185,  1186,  1205,  1190,  1206,  1188,  1193,
-    1192,  1196,  1207,  1208,  1209,  1210,  1211,  1215,  1216,  1219,
-    1220,  1221,  1225,  1222,  1223,  1226,  1224,  1231,  1227,  1236,
-    1228,  1229,  1230,  1232,  1234,  1237,  1233,  1238,  1239,  1235,
-    1240,  1255,  1296,  1256,  1261,  1262,  1263,  1264,  1265,  1266,
-    1271,  1272,  1273,  1283,  1274,  1297,  1275,  1276,  1277,  1278,
-    1279,  1280,  1281,  1282,  1286,  1291,  1292,  1298,  1299,  1301,
-    1300,  1306,  1308,  1312,  1315,  1317,  1319,  1320,  1321,  1322,
-    1323,  1338,  1339,  1302,  1303,  1304,  1305,  1307,  1309,  1310,
-    1311,  1353,  1354,  1313,  1314,  1316,  1318,  1355,  1378,  1356,
-    1357,  1358,  1359,  1360,  1361,  1362,  1417,  1363,  1364,  1365,
-    1366,  1367,  1368,  1369,  1370,  1371,  1372,  1373,  1424,   340,
-    1374,  1517,  1375,  1376,  1377,  1516,  1382,  1515,   563,   904,
-    1383,   948,  1485,  1487,  1484,   866,   894,   789,  1418,  1511,
-     899,   777,  1512,  1514,   970,  1513,  1486,   372,  1481,   782,
-     438,   691,  1394,   360,  1393,  1482,  1483,     0,   758,     0,
-       0,  1384,     0,  1385,  1386,  1387,  1388,  1389,  1390,  1419,
-    1420,  1421,  1422,  1423,  1428,  1429,  1430,  1431,   684,     0,
-       0,  1432,     0,  1433,  1434,  1435,  1436,  1437,  1438,  1439,
-    1440,  1441,  1464,  1465,  1466,   523,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     528,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   547
-};
-
-static const yytype_int16 yycheck[] =
-{
-     346,   347,   431,    11,    79,     1,     1,   353,   263,     1,
-       1,    10,   267,    12,     1,   265,     1,    11,   263,     1,
-     263,   264,   267,     8,     9,     1,   263,    12,    27,   265,
-     267,   263,    31,     1,    19,   267,     1,   383,   134,   385,
-      22,    37,   265,    28,   265,    37,     1,    32,    33,     1,
-       1,   263,    48,   399,    39,   267,    48,   265,    43,    44,
-      45,   407,    47,     1,   265,     1,     4,   265,    53,     1,
-       1,   417,   418,   265,   420,   199,   200,   173,   174,   175,
-     176,   177,   156,   429,   430,   263,   432,    72,    73,   267,
-     199,   200,    77,   156,     1,     1,     3,     1,   265,     6,
-      85,    92,   101,    10,    89,    90,    91,   265,    46,    94,
-      86,    49,    97,    98,  1071,  1072,  1073,   263,    25,    26,
-      27,   267,   263,   108,    31,   265,   267,   123,   123,   114,
-     115,   123,   117,   118,   119,   120,   123,    92,   263,   265,
-      92,   156,   267,    50,   265,   127,   131,    54,    55,   263,
-      86,    55,   265,   267,   265,   140,   121,   142,   143,   265,
-     145,   236,   265,   148,   149,   263,     1,   152,   106,   267,
-       5,   158,   123,   263,   150,     1,   158,   267,   163,    86,
-       1,    88,    86,     4,   265,   123,   151,     1,    92,   121,
-     158,    26,   123,   201,   189,   102,     1,   182,     1,   545,
-     185,   263,   189,    38,   265,   190,   158,   201,    13,   194,
-     195,   196,   197,   198,   150,    50,   123,   202,   203,   151,
-      55,   189,   266,   266,     1,    46,   211,    41,    49,    34,
-      35,   266,    67,   266,    37,    40,   266,    42,   189,    74,
-       1,   266,    56,    20,   243,    80,     1,    82,   155,    26,
-       1,   155,   158,   266,   249,   218,   219,   242,   189,   244,
-      95,    22,   169,     1,   266,    79,   251,    81,   264,    83,
-      84,   256,   179,    50,    51,    78,   261,   264,    55,   264,
-     266,   249,   264,   189,    87,   106,   263,   266,   123,   103,
-     267,   266,    69,   128,    99,   100,   264,   123,   249,    76,
-     266,   265,   123,   265,   109,   110,   266,   266,   266,   264,
-     266,   249,   264,   264,   263,   150,   266,    55,   266,    96,
-     123,   266,   125,   126,   129,   130,   264,   162,   264,   164,
-     165,   266,   264,   264,   169,   263,   243,    92,    14,    15,
-      16,   146,   147,   249,   266,   266,   266,   124,    86,   266,
-     257,   266,   157,   188,    92,   132,     1,   264,   266,   156,
-     264,   166,   263,   189,   266,   168,   127,   170,   266,    20,
-      21,   266,   123,   150,     1,   266,   266,   266,    23,    24,
-     183,   184,   159,   160,   266,    30,   222,   223,   224,   225,
-     226,   227,   228,   266,   266,   266,   231,   158,   266,   266,
-      51,    95,   237,   158,   266,   266,   752,   158,   913,   914,
-     915,   916,   917,   248,   249,   192,   193,   155,    69,   266,
-     266,   266,   266,   266,   259,    76,   229,   266,   249,   264,
-      57,    58,    59,    60,    61,    62,    63,    64,   189,   266,
-     161,   266,   266,   266,   266,    96,   266,   252,   253,   254,
-     264,   266,   263,   266,   257,   258,   266,   266,   134,   264,
-     266,   264,   266,   156,     0,     1,   111,   112,   113,     5,
-     266,   116,   249,   124,   266,   266,   266,   171,   123,   266,
-     107,   132,   266,   266,   266,   266,    22,   264,   266,   156,
-      26,   136,   137,    29,   266,   266,     1,   266,   266,   266,
-      36,   266,   266,   266,   266,   134,   266,   266,   153,   154,
-     266,   205,   266,   266,   141,     1,    52,   946,    23,    24,
-     266,   172,   266,   266,   266,    30,   220,   266,   199,    65,
-      66,   266,    68,   178,   266,   266,   266,   266,   266,    75,
-     266,   266,   193,   266,   266,   239,   240,   266,   266,   266,
-     266,   245,   246,   247,   248,   266,   250,    93,   266,   266,
-     266,   266,   266,   266,   266,   259,   134,   199,   104,   199,
-     106,    57,    58,    59,    60,    61,    62,    63,    64,   134,
-     134,   134,   199,   199,   134,   199,   122,   199,   199,   199,
-     936,   199,   266,   263,   221,   156,   199,   266,   944,   945,
-     263,   266,   266,   139,   199,   134,   111,   112,   113,   156,
-     134,   116,   199,   199,     1,     1,   199,   134,   123,   264,
-     199,   107,     8,     9,   156,   134,    12,   134,   255,   199,
-      95,   136,   137,    19,   134,   171,   199,   264,   134,   199,
-     156,   199,    28,   134,   180,   181,    32,    33,   153,   154,
-     186,   187,   134,    39,    41,   141,   134,    43,    44,    45,
-     134,    47,   156,   134,   199,   199,   266,    53,   199,    56,
-       1,   199,   266,   178,     5,   156,   199,   199,   199,   199,
-     199,     1,   134,   263,   199,   199,    72,    73,   199,   199,
-     266,    77,    79,   266,    81,    26,    83,    84,   156,    85,
-     266,   266,   266,    89,    90,    91,   171,    38,    94,   266,
-     266,    97,    98,   156,   263,   266,   103,    37,   266,    50,
-     266,   266,   108,   266,    55,   266,   262,   266,   114,   115,
-     263,   117,   118,   119,   120,   221,    67,   156,   156,   266,
-     205,   266,   156,    74,   156,   131,   156,   156,   266,    80,
-     156,    82,   156,   266,   140,   220,   142,   143,    78,   145,
-     266,   199,   148,   149,    95,   266,   152,    87,   266,   255,
-     199,   266,   156,   266,   239,   240,   266,   163,   263,   156,
-     245,   246,   247,   248,   263,   156,   263,   156,   199,   156,
-     266,   266,   123,   266,   259,   263,   182,   128,   199,   185,
-     199,   199,   199,   123,   190,   125,   126,   156,   194,   195,
-     196,   197,   198,   156,   156,   156,   202,   203,   156,   150,
-     156,   156,   134,   156,   156,   211,   263,   263,   263,   134,
-     263,   162,   266,   164,   165,   266,   266,   133,   169,   266,
-     266,   263,     1,     1,     3,     5,   263,     6,   168,   204,
-     170,    10,   267,   266,   156,    13,   242,   188,   244,   266,
-     263,   263,   156,   183,   184,   251,    25,    26,    27,   263,
-     256,   263,    31,   263,   263,   261,    34,    35,    38,   156,
-     263,   263,    40,   263,    42,   263,   156,   263,   263,   263,
-      50,    50,   156,   263,   266,    54,    55,   263,   263,   263,
-     231,   263,   263,   263,   263,   156,   237,    67,   266,   229,
-     266,     1,   266,   266,    74,   266,   266,   248,   249,   266,
-      80,   266,    82,   836,   263,   199,   266,    86,   259,    88,
-      20,   156,   266,   263,   263,    95,    26,   257,   258,   266,
-     266,    99,   100,   102,   266,   266,   199,   266,   266,   266,
-     266,   109,   110,   266,   199,   266,   266,   266,   266,   266,
-      50,    51,   266,   266,   123,    55,   266,   266,   128,   266,
-     263,   129,   130,   263,   263,   263,   263,   263,   263,    69,
-     263,   263,   263,   263,   144,   263,    76,   263,   146,   147,
-     263,   263,   263,   156,   188,   263,   155,   263,   263,   157,
-     263,   263,   162,   263,   164,   165,    96,   263,   166,   263,
-     169,   263,   206,   207,   208,   209,   210,   263,   212,   213,
-     179,   215,   216,   217,   263,   263,   220,   263,   188,   263,
-     263,   263,   263,   263,   124,   263,   230,   231,   232,   233,
-     234,   235,   132,   263,   238,   263,   263,   241,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     150,   263,   263,   263,   263,   263,   263,   199,   199,   159,
-     160,   231,   199,   266,   266,   266,   199,   199,   199,   156,
-     156,   199,   156,   263,   243,   156,   188,   266,   248,   156,
-     263,   266,   156,   156,   252,   253,   254,   134,   257,   259,
-     266,   263,   192,   193,   206,   207,   208,   209,   210,   263,
-     212,   213,   263,   215,   216,   217,   263,   263,   220,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   230,   231,
-     232,   233,   234,   235,   263,   263,   238,   263,   263,   241,
-     206,   207,   208,   209,   210,   156,   212,   213,   263,   215,
-     216,   217,   263,   263,   220,   263,   156,   266,   156,   249,
-     266,   266,   266,   266,   230,   231,   232,   233,   234,   235,
-     266,   266,   238,   266,   266,   241,   156,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   263,   156,
-     263,   263,   156,   263,   263,   263,   156,   156,   263,   134,
-     134,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   134,   263,   134,   266,   263,
-     266,   263,   134,   134,   156,   134,   134,   263,   156,   199,
-     156,   156,   156,   199,   199,   266,   199,   134,   156,   263,
-     156,   156,   156,   156,   199,   263,   156,   263,   263,   156,
-     263,   263,   199,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   161,   263,   156,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   199,   199,   199,
-     266,   156,   156,   156,   266,   156,   263,   263,   263,   263,
-     263,   263,   263,   199,   199,   199,   199,   199,   199,   199,
-     199,   263,   263,   199,   199,   199,   199,   263,   133,   263,
-     263,   263,   263,   263,   263,   263,   134,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   133,    74,
-     263,  1510,   263,   263,   263,  1490,   263,  1488,   317,   583,
-     263,   625,  1401,  1416,  1399,   534,   568,   504,  1294,  1468,
-     576,   471,  1470,  1473,   660,  1471,  1414,   127,  1392,   494,
-     187,   378,  1247,    98,  1245,  1396,  1398,    -1,   446,    -1,
-      -1,   263,    -1,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   366,    -1,
-      -1,   263,    -1,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   261,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   294
-};
-
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
-{
-       0,   269,     0,     1,     5,    22,    26,    29,    36,    52,
-      65,    66,    68,    75,    93,   104,   106,   122,   139,   171,
-     180,   181,   186,   187,   262,   270,   275,   280,   296,   302,
-     317,   355,   361,   380,   394,   420,   427,   437,   446,   477,
-     487,   493,   497,   507,   571,   587,   608,   263,   264,   265,
-     265,   362,   447,   488,   265,   498,   265,   572,   395,   478,
-     381,   265,   265,   318,   421,   265,   265,   428,   438,   356,
-       1,    37,    48,   123,   297,   298,   299,   300,   301,     1,
-      13,    34,    35,    40,    42,    99,   100,   109,   110,   129,
-     130,   146,   147,   157,   166,   252,   253,   254,   588,   589,
-     590,   591,   592,   593,   594,   595,   596,   597,   598,   599,
-     600,   601,   602,   603,   604,   605,   606,   607,   156,   363,
-     367,   156,   448,   452,   265,     1,    92,   494,   495,   496,
-     265,     1,     8,     9,    12,    19,    28,    32,    33,    39,
-      43,    44,    45,    47,    53,    72,    73,    77,    85,    89,
-      90,    91,    94,    97,    98,   108,   114,   115,   117,   118,
-     119,   120,   131,   140,   142,   143,   145,   148,   149,   152,
-     163,   182,   185,   190,   194,   195,   196,   197,   198,   202,
-     203,   211,   242,   244,   251,   256,   261,   508,   509,   510,
-     511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
-     521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
-     531,   532,   533,   534,   535,   536,   537,   538,   539,   540,
-     541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
-     551,   552,   553,   554,   555,   556,   557,   558,   562,   566,
-     567,   568,   569,   570,   265,   265,   265,   265,     1,    57,
-      58,    59,    60,    61,    62,    63,    64,   107,   141,   221,
-     255,   303,   304,   305,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   316,     1,   121,   151,   276,   277,
-     278,   279,   156,   319,   323,   265,     1,    41,    56,    79,
-      81,    83,    84,   103,   609,   610,   611,   612,   613,   614,
-     615,   616,   617,     1,    37,    78,    87,   123,   125,   126,
-     168,   170,   183,   184,   229,   257,   258,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   265,   265,   265,   263,   266,   266,   266,   264,
-     298,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   264,
-     589,   265,   265,     1,    92,   158,   489,   490,   491,   492,
-     266,   264,   495,     1,   123,   158,   189,   499,   503,   504,
-     505,   506,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   563,   266,   559,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   264,   509,     1,
-       4,    46,    49,   106,   123,   249,   573,   574,   575,   576,
-     577,   581,   582,   583,     1,    20,    26,    50,    51,    55,
-      69,    76,    96,   124,   132,   150,   159,   160,   192,   193,
-     249,   396,   397,   398,   399,   400,   401,   402,   403,   410,
-     411,   412,   413,   414,   415,   416,   417,   418,   419,     1,
-     158,   189,   249,   479,   483,   484,   485,   486,     1,    55,
-      86,    92,   155,   382,   386,   387,   388,   392,   393,   263,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   264,   304,   263,   266,   266,   264,   277,   265,
-       1,    22,   127,   158,   422,   423,   424,   425,   426,   266,
-     266,   266,   266,   266,   266,   266,   264,   610,   263,   266,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   264,   282,     1,   123,   189,   249,   429,   430,
-     431,   432,   433,     1,   123,   189,   439,   440,   441,   442,
-       1,    86,   150,   357,   358,   359,   360,   156,   156,   156,
-     263,   199,   134,   134,   199,   199,   134,   272,   272,   134,
-     134,   199,   199,   134,   272,   199,   199,   199,   199,   199,
-     263,     1,    23,    24,    30,   111,   112,   113,   116,   123,
-     136,   137,   153,   154,   178,   364,   365,   366,   368,   369,
-     370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
-       1,     3,     6,    10,    25,    26,    27,    31,    50,    54,
-      55,    86,    88,   102,   123,   155,   169,   179,   243,   257,
-     449,   450,   451,   453,   454,   455,   456,   457,   458,   459,
-     460,   467,   468,   469,   470,   471,   472,   473,   474,   475,
-     476,   266,   266,   264,   490,   156,   263,   266,   266,   500,
-     264,   504,   199,   272,   199,   272,   134,   156,   134,   199,
-     199,   199,   134,   156,   199,   134,   134,   134,   199,   272,
-     199,   199,   134,   156,   199,   134,   134,   272,   134,   156,
-     134,   134,   199,   199,   266,   199,   266,   272,   272,   199,
-     272,   156,   199,   199,   199,   199,   200,   199,   200,   199,
-     199,   272,   272,   134,   274,   272,   199,   199,   199,   199,
-     263,   584,   266,   266,   578,   266,   266,   264,   574,   263,
-     266,   266,   266,   266,   404,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   264,   397,   266,   480,
-     266,   264,   484,   263,   383,   266,   266,   266,   264,   387,
-     156,   156,   156,   156,   156,   156,   156,   156,   222,   223,
-     224,   225,   226,   227,   228,   156,   156,   199,   263,   156,
-     156,   263,     1,     5,    26,    38,    50,    55,    67,    74,
-      80,    82,    95,   123,   128,   150,   162,   164,   165,   169,
-     188,   231,   237,   248,   249,   259,   320,   321,   322,   324,
-     325,   326,   327,   328,   329,   333,   334,   335,   336,   337,
-     338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
-     348,   263,   266,   266,   266,   264,   423,   199,   199,   199,
-     156,   199,   199,   272,   263,   156,   156,   199,   156,   156,
-     156,   156,   156,   156,   156,   134,   156,   156,   263,   263,
-     266,   434,   266,   264,   430,   263,   266,   443,   264,   440,
-     263,   266,   266,   264,   358,   263,   263,   263,   263,   263,
-     263,   263,   263,   173,   174,   175,   176,   177,   271,   272,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   264,   365,   263,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   461,
-     266,   266,   266,   266,   266,   266,   266,   266,   266,   264,
-     450,   156,   156,   263,   263,   156,   156,   266,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   188,   206,   207,   208,   209,   210,   212,   213,   215,
-     216,   217,   220,   230,   231,   232,   233,   234,   235,   238,
-     241,   564,   565,   263,   206,   207,   208,   209,   210,   212,
-     213,   215,   216,   217,   220,   230,   231,   232,   233,   234,
-     235,   238,   241,   560,   561,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,    14,    15,    16,   273,   274,   263,   263,   263,   263,
-     263,   263,   266,   272,   199,   266,   156,   156,   263,   199,
-     156,   199,   199,   266,   199,   199,   199,   199,   199,   156,
-     134,   156,   156,   199,   156,   263,   156,   266,   156,   263,
-     266,   156,   156,   134,   390,   391,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   266,   266,
-     266,   266,   349,   266,   266,   266,   266,   266,   266,   266,
-     266,   266,   266,   266,   266,   266,   266,   330,   266,   266,
-     266,   264,   321,   156,   156,   156,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   156,   266,   156,
-     263,   156,   266,   263,   156,   156,   263,   271,   271,   271,
-     271,   271,   134,   134,   272,   134,   134,   134,   134,   156,
-     134,   134,   272,   272,   274,   263,   156,   218,   219,   199,
-     156,   156,   199,   199,   199,   156,   266,   156,   156,   156,
-     156,   134,   156,   156,   199,   156,   263,   263,   263,   263,
-     263,   161,   501,   502,   263,   267,   263,   267,   273,   273,
-     273,    11,   201,   585,   586,   263,   263,    11,   201,   579,
-     580,   263,   263,   263,   263,   263,   263,   133,   405,   406,
-     408,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   161,   481,   482,   263,    79,   236,   384,
-     385,   263,   263,   204,   267,   389,   199,   156,   199,   199,
-     266,   199,   199,   199,   199,   199,   156,   199,   156,   199,
-     199,   199,   156,   199,   199,   266,   199,   156,   199,   263,
-     263,   263,   263,   263,    95,   171,   205,   220,   239,   240,
-     245,   246,   247,   248,   250,   259,   435,   436,   263,   263,
-      95,   171,   205,   220,   239,   240,   245,   246,   247,   248,
-     259,   444,   445,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   133,   462,
-     463,   465,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   267,   565,   561,   263,   267,   263,   267,   407,
-     263,   267,    20,    21,    51,    69,    76,    96,   124,   132,
-     172,   193,   409,   263,   267,   263,   267,   134,   391,   263,
-     263,   263,   263,   263,   133,   350,   351,   353,   263,   263,
-     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
-     263,   263,   188,   206,   207,   208,   209,   210,   212,   213,
-     215,   216,   217,   220,   230,   231,   232,   233,   234,   235,
-     238,   241,   331,   332,   263,   263,   263,   263,   267,   263,
-     267,   464,   263,   267,    10,    12,    27,    31,   101,   243,
-     466,   502,   586,   580,   409,   406,   482,   385,   352,   263,
-     267,     5,    38,    50,    67,    74,    80,    82,    95,   128,
-     144,   162,   164,   165,   188,   231,   248,   259,   354,   263,
-     267,   436,   445,   466,   463,   354,   351,   332
-};
-
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
-
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
-
-#define YYFAIL		goto yyerrlab
-
-#define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
-
-
-#define YYTERROR	1
-#define YYERRCODE	256
-
-
-/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
-   If N is 0, then set CURRENT to the empty location which ends
-   the previous symbol: RHS[0] (always defined).  */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)				\
-    do									\
-      if (YYID (N))                                                    \
-	{								\
-	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
-	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
-	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
-	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
-	}								\
-      else								\
-	{								\
-	  (Current).first_line   = (Current).last_line   =		\
-	    YYRHSLOC (Rhs, 0).last_line;				\
-	  (Current).first_column = (Current).last_column =		\
-	    YYRHSLOC (Rhs, 0).last_column;				\
-	}								\
-    while (YYID (0))
 #endif
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)			\
-     fprintf (File, "%d.%d-%d.%d",			\
-	      (Loc).first_line, (Loc).first_column,	\
-	      (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
+#if YYDEBUG
+#include <stdio.h>
 #endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
+#ifdef YYSTACKSIZE
+#undef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
 #else
-# define YYLEX yylex ()
-#endif
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
 #else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
+#define YYSTACKSIZE 10000
+#define YYMAXDEPTH 10000
 #endif
-{
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
-# endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
 #endif
+#define YYINITSTACKSIZE 200
+int yydebug;
+int yynerrs;
+int yyerrflag;
+int yychar;
+short *yyssp;
+YYSTYPE *yyvsp;
+YYSTYPE yyval;
+YYSTYPE yylval;
+short *yyss;
+short *yysslim;
+YYSTYPE *yyvs;
+int yystacksize;
+/* allocate initial stack or double stack size, up to YYMAXDEPTH */
+static int yygrowstack()
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+    int newsize, i;
+    short *newss;
+    YYSTYPE *newvs;
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+    if ((newsize = yystacksize) == 0)
+        newsize = YYINITSTACKSIZE;
+    else if (newsize >= YYMAXDEPTH)
+        return -1;
+    else if ((newsize *= 2) > YYMAXDEPTH)
+        newsize = YYMAXDEPTH;
+    i = yyssp - yyss;
+    newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
+      (short *)malloc(newsize * sizeof *newss);
+    if (newss == NULL)
+        return -1;
+    yyss = newss;
+    yyssp = newss + i;
+    newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
+      (YYSTYPE *)malloc(newsize * sizeof *newvs);
+    if (newvs == NULL)
+        return -1;
+    yyvs = newvs;
+    yyvsp = newvs + i;
+    yystacksize = newsize;
+    yysslim = yyss + newsize - 1;
+    return 0;
 }
 
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
+#define YYABORT goto yyabort
+#define YYREJECT goto yyabort
+#define YYACCEPT goto yyaccept
+#define YYERROR goto yyerrlab
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
-#else
-static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+#ifndef YYPARSE_PARAM
+#if defined(__cplusplus) || __STDC__
+#define YYPARSE_PARAM_ARG void
+#define YYPARSE_PARAM_DECL
+#else	/* ! ANSI-C/C++ */
+#define YYPARSE_PARAM_ARG
+#define YYPARSE_PARAM_DECL
+#endif	/* ANSI-C/C++ */
+#else	/* YYPARSE_PARAM */
+#ifndef YYPARSE_PARAM_TYPE
+#define YYPARSE_PARAM_TYPE void *
 #endif
-{
-  YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
-  YYFPRINTF (stderr, "\n");
-}
+#if defined(__cplusplus) || __STDC__
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM_TYPE YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL
+#else	/* ! ANSI-C/C++ */
+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
+#define YYPARSE_PARAM_DECL YYPARSE_PARAM_TYPE YYPARSE_PARAM;
+#endif	/* ANSI-C/C++ */
+#endif	/* ! YYPARSE_PARAM */
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+int
+yyparse (YYPARSE_PARAM_ARG)
+    YYPARSE_PARAM_DECL
 {
-  int yynrhs = yyr2[yyrule];
-  int yyi;
-  unsigned long int yylno = yyrline[yyrule];
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
+    int yym, yyn, yystate;
+#if YYDEBUG
+    const char *yys;
+
+    if ((yys = getenv("YYDEBUG")))
     {
-      fprintf (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
-      fprintf (stderr, "\n");
+        yyn = *yys;
+        if (yyn >= '0' && yyn <= '9')
+            yydebug = yyn - '0';
     }
-}
-
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
-# define YYINITDEPTH 200
 #endif
 
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
+    yynerrs = 0;
+    yyerrflag = 0;
+    yychar = (-1);
 
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
+    if (yyss == NULL && yygrowstack()) goto yyoverflow;
+    yyssp = yyss;
+    yyvsp = yyvs;
+    *yyssp = yystate = 0;
 
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static YYSIZE_T
-yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
+yyloop:
+    if ((yyn = yydefred[yystate])) goto yyreduce;
+    if (yychar < 0)
     {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
-
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
-
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
-    do_not_strip_quotes: ;
+        if ((yychar = yylex()) < 0) yychar = 0;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys = 0;
+            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+            if (!yys) yys = "illegal-symbol";
+            printf("%sdebug: state %d, reading %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
     }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into YYRESULT an error message about the unexpected token
-   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
-   including the terminating null byte.  If YYRESULT is null, do not
-   copy anything; just return the number of bytes that would be
-   copied.  As a special case, return 0 if an ordinary "syntax error"
-   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
-   size calculation.  */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
-{
-  int yyn = yypact[yystate];
-
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
+    if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
     {
-      int yytype = YYTRANSLATE (yychar);
-      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
-      YYSIZE_T yysize = yysize0;
-      YYSIZE_T yysize1;
-      int yysize_overflow = 0;
-      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-      int yyx;
-
-# if 0
-      /* This is so xgettext sees the translatable formats that are
-	 constructed on the fly.  */
-      YY_("syntax error, unexpected %s");
-      YY_("syntax error, unexpected %s, expecting %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
-      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = "syntax error, unexpected %s";
-      static char const yyexpecting[] = ", expecting %s";
-      static char const yyor[] = " or %s";
-      char yyformat[sizeof yyunexpected
-		    + sizeof yyexpecting - 1
-		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
-		       * (sizeof yyor - 1))];
-      char const *yyprefix = yyexpecting;
-
-      /* Start YYX at -YYN if negative to avoid negative indexes in
-	 YYCHECK.  */
-      int yyxbegin = yyn < 0 ? -yyn : 0;
-
-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
-
-      yyarg[0] = yytname[yytype];
-      yyfmt = yystpcpy (yyformat, yyunexpected);
-
-      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	  {
-	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-	      {
-		yycount = 1;
-		yysize = yysize0;
-		yyformat[sizeof yyunexpected - 1] = '\0';
-		break;
-	      }
-	    yyarg[yycount++] = yytname[yyx];
-	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
-	    yysize_overflow |= (yysize1 < yysize);
-	    yysize = yysize1;
-	    yyfmt = yystpcpy (yyfmt, yyprefix);
-	    yyprefix = yyor;
-	  }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 < yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
-
-      if (yyresult)
-	{
-	  /* Avoid sprintf, as that infringes on the user's name space.
-	     Don't have undefined behavior even if the translation
-	     produced a string with the wrong number of "%s"s.  */
-	  char *yyp = yyresult;
-	  int yyi = 0;
-	  while ((*yyp = *yyf) != '\0')
-	    {
-	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
-		{
-		  yyp += yytnamerr (yyp, yyarg[yyi++]);
-		  yyf += 2;
-		}
-	      else
-		{
-		  yyp++;
-		  yyf++;
-		}
-	    }
-	}
-      return yysize;
-    }
-}
-#endif /* YYERROR_VERBOSE */
-
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: state %d, shifting to state %d\n",
+                    YYPREFIX, yystate, yytable[yyn]);
 #endif
-{
-  YYUSE (yyvaluep);
-
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  switch (yytype)
+        if (yyssp >= yysslim && yygrowstack())
+        {
+            goto yyoverflow;
+        }
+        *++yyssp = yystate = yytable[yyn];
+        *++yyvsp = yylval;
+        yychar = (-1);
+        if (yyerrflag > 0)  --yyerrflag;
+        goto yyloop;
+    }
+    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
     {
-
-      default:
-	break;
+        yyn = yytable[yyn];
+        goto yyreduce;
     }
-}
-
-
-/* Prevent warnings from -Wmissing-prototypes.  */
-
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
+    if (yyerrflag) goto yyinrecovery;
+#if defined(lint) || defined(__GNUC__)
+    goto yynewerror;
 #endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
+yynewerror:
+    yyerror("syntax error");
+#if defined(lint) || defined(__GNUC__)
+    goto yyerrlab;
 #endif
-#endif /* ! YYPARSE_PARAM */
-
-
-
-/* The look-ahead symbol.  */
-int yychar;
-
-/* The semantic value of the look-ahead symbol.  */
-YYSTYPE yylval;
-
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
+yyerrlab:
+    ++yynerrs;
+yyinrecovery:
+    if (yyerrflag < 3)
+    {
+        yyerrflag = 3;
+        for (;;)
+        {
+            if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
+                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: state %d, error recovery shifting\
+ to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
 #endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void)
-#else
-int
-yyparse ()
-
+                if (yyssp >= yysslim && yygrowstack())
+                {
+                    goto yyoverflow;
+                }
+                *++yyssp = yystate = yytable[yyn];
+                *++yyvsp = yylval;
+                goto yyloop;
+            }
+            else
+            {
+#if YYDEBUG
+                if (yydebug)
+                    printf("%sdebug: error recovery discarding state %d\n",
+                            YYPREFIX, *yyssp);
 #endif
-#endif
-{
-  
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
-
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
-
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
-
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
-
-
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  YYSIZE_T yystacksize = YYINITDEPTH;
-
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY;		/* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-
-  yyssp = yyss;
-  yyvsp = yyvs;
-
-  goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
- yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
- yysetstate:
-  *yyssp = yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
-    {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
-      {
-	/* Give user a chance to reallocate the stack.  Use copies of
-	   these so that the &'s don't force the real ones into
-	   memory.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
-
-
-	/* Each stack pointer address is followed by the size of the
-	   data in use in that stack, in bytes.  This used to be a
-	   conditional around just the two extra args, but that might
-	   be undefined if yyoverflow is a macro.  */
-	yyoverflow (YY_("memory exhausted"),
-		    &yyss1, yysize * sizeof (*yyssp),
-		    &yyvs1, yysize * sizeof (*yyvsp),
-
-		    &yystacksize);
-
-	yyss = yyss1;
-	yyvs = yyvs1;
-      }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
-
-      {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss);
-	YYSTACK_RELOCATE (yyvs);
-
-#  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
-      }
-# endif
-#endif /* no yyoverflow */
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+                if (yyssp <= yyss) goto yyabort;
+                --yyssp;
+                --yyvsp;
+            }
+        }
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
-  goto yybackup;
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-
-  /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to look-ahead token.  */
-  yyn = yypact[yystate];
-  if (yyn == YYPACT_NINF)
-    goto yydefault;
-
-  /* Not known => get a look-ahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
-  if (yychar == YYEMPTY)
+    else
     {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+        if (yychar == 0) goto yyabort;
+#if YYDEBUG
+        if (yydebug)
+        {
+            yys = 0;
+            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+            if (!yys) yys = "illegal-symbol";
+            printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
+                    YYPREFIX, yystate, yychar, yys);
+        }
+#endif
+        yychar = (-1);
+        goto yyloop;
     }
-
-  if (yychar <= YYEOF)
-    {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
-    {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-    }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
-    {
-      if (yyn == 0 || yyn == YYTABLE_NINF)
-	goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the look-ahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  yystate = yyn;
-  *++yyvsp = yylval;
-
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction.  |
-`-----------------------------*/
 yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: state %d, reducing by rule %d (%s)\n",
+                YYPREFIX, yystate, yyn, yyrule[yyn]);
+#endif
+    yym = yylen[yyn];
+    if (yym)
+        yyval = yyvsp[1-yym];
+    else
+        memset(&yyval, 0, sizeof yyval);
+    switch (yyn)
     {
-        case 27:
-#line 430 "ircd_parser.y"
-    { (yyval.number) = 0; ;}
-    break;
-
-  case 29:
+case 26:
 #line 432 "ircd_parser.y"
-    {
-			(yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
-		;}
-    break;
-
-  case 30:
-#line 436 "ircd_parser.y"
-    {
-			(yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
-		;}
-    break;
-
-  case 31:
-#line 440 "ircd_parser.y"
-    {
-			(yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
-		;}
-    break;
-
-  case 32:
-#line 444 "ircd_parser.y"
-    {
-			(yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
-		;}
-    break;
-
-  case 33:
-#line 448 "ircd_parser.y"
-    {
-			(yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
-		;}
-    break;
-
-  case 34:
-#line 452 "ircd_parser.y"
-    {
-			(yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
-		;}
-    break;
-
-  case 35:
-#line 457 "ircd_parser.y"
-    { (yyval.number) = 0; ;}
-    break;
-
-  case 37:
-#line 458 "ircd_parser.y"
-    { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); ;}
-    break;
-
-  case 38:
+{ yyval.number = 0; }
+break;
+case 28:
+#line 434 "ircd_parser.y"
+{
+			yyval.number = yyvsp[-1].number + yyvsp[0].number;
+		}
+break;
+case 29:
+#line 438 "ircd_parser.y"
+{
+			yyval.number = yyvsp[-2].number + yyvsp[0].number;
+		}
+break;
+case 30:
+#line 442 "ircd_parser.y"
+{
+			yyval.number = yyvsp[-2].number * 60 + yyvsp[0].number;
+		}
+break;
+case 31:
+#line 446 "ircd_parser.y"
+{
+			yyval.number = yyvsp[-2].number * 60 * 60 + yyvsp[0].number;
+		}
+break;
+case 32:
+#line 450 "ircd_parser.y"
+{
+			yyval.number = yyvsp[-2].number * 60 * 60 * 24 + yyvsp[0].number;
+		}
+break;
+case 33:
+#line 454 "ircd_parser.y"
+{
+			yyval.number = yyvsp[-2].number * 60 * 60 * 24 * 7 + yyvsp[0].number;
+		}
+break;
+case 34:
 #line 459 "ircd_parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); ;}
-    break;
-
-  case 39:
+{ yyval.number = 0; }
+break;
+case 36:
 #line 460 "ircd_parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); ;}
-    break;
-
-  case 40:
+{ yyval.number = yyvsp[-1].number + yyvsp[0].number; }
+break;
+case 37:
 #line 461 "ircd_parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); ;}
-    break;
-
-  case 47:
-#line 475 "ircd_parser.y"
-    {
+{ yyval.number = yyvsp[-2].number + yyvsp[0].number; }
+break;
+case 38:
+#line 462 "ircd_parser.y"
+{ yyval.number = yyvsp[-2].number * 1024 + yyvsp[0].number; }
+break;
+case 39:
+#line 463 "ircd_parser.y"
+{ yyval.number = yyvsp[-2].number * 1024 * 1024 + yyvsp[0].number; }
+break;
+case 46:
+#line 477 "ircd_parser.y"
+{
 #ifndef STATIC_MODULES /* NOOP in the static case */
   if (ypass == 2)
   {
@@ -3557,22 +2513,20 @@
     add_conf_module(yylval.string);
   }
 #endif
-;}
-    break;
-
-  case 48:
-#line 492 "ircd_parser.y"
-    {
+}
+break;
+case 47:
+#line 494 "ircd_parser.y"
+{
 #ifndef STATIC_MODULES
   if (ypass == 2)
     mod_add_path(yylval.string);
 #endif
-;}
-    break;
-
-  case 66:
-#line 517 "ircd_parser.y"
-    {
+}
+break;
+case 65:
+#line 519 "ircd_parser.y"
+{
 #ifdef HAVE_LIBCRYPTO
   if (ypass == 2 && ServerInfo.ctx) 
   {
@@ -3603,12 +2557,11 @@
     }
   }
 #endif
-;}
-    break;
-
-  case 67:
-#line 551 "ircd_parser.y"
-    {
+}
+break;
+case 66:
+#line 553 "ircd_parser.y"
+{
 #ifdef HAVE_LIBCRYPTO
   if (ypass == 1)
   {
@@ -3665,12 +2618,11 @@
     }
   }
 #endif
-;}
-    break;
-
-  case 68:
-#line 611 "ircd_parser.y"
-    {
+}
+break;
+case 67:
+#line 613 "ircd_parser.y"
+{
   /* this isn't rehashable */
   if (ypass == 2)
   {
@@ -3681,12 +2633,11 @@
         DupString(ServerInfo.name, yylval.string);
     }
   }
-;}
-    break;
-
-  case 69:
-#line 625 "ircd_parser.y"
-    {
+}
+break;
+case 68:
+#line 627 "ircd_parser.y"
+{
   /* this isn't rehashable */
   if (ypass == 2 && !ServerInfo.sid)
   {
@@ -3698,23 +2649,21 @@
       exit(0);
     }
   }
-;}
-    break;
-
-  case 70:
-#line 640 "ircd_parser.y"
-    {
+}
+break;
+case 69:
+#line 642 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ServerInfo.description);
     DupString(ServerInfo.description,yylval.string);
   }
-;}
-    break;
-
-  case 71:
-#line 649 "ircd_parser.y"
-    {
+}
+break;
+case 70:
+#line 651 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     char *p;
@@ -3725,45 +2674,41 @@
     MyFree(ServerInfo.network_name);
     DupString(ServerInfo.network_name, yylval.string);
   }
-;}
-    break;
-
-  case 72:
-#line 663 "ircd_parser.y"
-    {
+}
+break;
+case 71:
+#line 665 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ServerInfo.network_desc);
     DupString(ServerInfo.network_desc, yylval.string);
   }
-;}
-    break;
-
-  case 73:
-#line 672 "ircd_parser.y"
-    {
+}
+break;
+case 72:
+#line 674 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ServerInfo.services_name);
     DupString(ServerInfo.services_name, yylval.string);
   }
-;}
-    break;
-
-  case 74:
-#line 681 "ircd_parser.y"
-    {
+}
+break;
+case 73:
+#line 683 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ServerInfo.help_channel);
     DupString(ServerInfo.help_channel, yylval.string);
   }
-;}
-    break;
-
-  case 75:
-#line 690 "ircd_parser.y"
-    {
+}
+break;
+case 74:
+#line 692 "ircd_parser.y"
+{
   if (ypass == 2 && *yylval.string != '*')
   {
     struct addrinfo hints, *res;
@@ -3788,12 +2733,11 @@
       ServerInfo.specific_ipv4_vhost = 1;
     }
   }
-;}
-    break;
-
-  case 76:
-#line 718 "ircd_parser.y"
-    {
+}
+break;
+case 75:
+#line 720 "ircd_parser.y"
+{
 #ifdef IPV6
   if (ypass == 2 && *yylval.string != '*')
   {
@@ -3820,37 +2764,35 @@
     }
   }
 #endif
-;}
-    break;
-
-  case 77:
-#line 748 "ircd_parser.y"
-    {
+}
+break;
+case 76:
+#line 750 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     recalc_fdlimit(NULL);
 
-    if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
+    if (yyvsp[-1].number < MAXCLIENTS_MIN)
     {
       char buf[IRCD_BUFSIZE];
       ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
       yyerror(buf);
     }
-    else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
+    else if (yyvsp[-1].number > MAXCLIENTS_MAX)
     {
       char buf[IRCD_BUFSIZE];
       ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
       yyerror(buf);
     }
     else
-      ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
+      ServerInfo.max_clients = yyvsp[-1].number;
   }
-;}
-    break;
-
-  case 78:
-#line 771 "ircd_parser.y"
-    {
+}
+break;
+case 77:
+#line 773 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -3894,193 +2836,171 @@
       }
     }
   }
-;}
-    break;
-
-  case 86:
-#line 827 "ircd_parser.y"
-    {
+}
+break;
+case 85:
+#line 829 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(AdminInfo.name);
     DupString(AdminInfo.name, yylval.string);
   }
-;}
-    break;
-
-  case 87:
-#line 836 "ircd_parser.y"
-    {
+}
+break;
+case 86:
+#line 838 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(AdminInfo.email);
     DupString(AdminInfo.email, yylval.string);
   }
-;}
-    break;
-
-  case 88:
-#line 845 "ircd_parser.y"
-    {
+}
+break;
+case 87:
+#line 847 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(AdminInfo.description);
     DupString(AdminInfo.description, yylval.string);
   }
-;}
-    break;
-
-  case 105:
-#line 872 "ircd_parser.y"
-    {
-                        ;}
-    break;
-
-  case 106:
-#line 876 "ircd_parser.y"
-    {
-                        ;}
-    break;
-
-  case 107:
-#line 880 "ircd_parser.y"
-    {
+}
+break;
+case 104:
+#line 874 "ircd_parser.y"
+{
+                        }
+break;
+case 105:
+#line 878 "ircd_parser.y"
+{
+                        }
+break;
+case 106:
+#line 882 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.userlog, yylval.string,
             sizeof(ConfigLoggingEntry.userlog));
-;}
-    break;
-
-  case 108:
-#line 887 "ircd_parser.y"
-    {
+}
+break;
+case 107:
+#line 889 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
             sizeof(ConfigLoggingEntry.failed_operlog));
-;}
-    break;
-
-  case 109:
-#line 894 "ircd_parser.y"
-    {
+}
+break;
+case 108:
+#line 896 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.operlog, yylval.string,
             sizeof(ConfigLoggingEntry.operlog));
-;}
-    break;
-
-  case 110:
-#line 901 "ircd_parser.y"
-    {
+}
+break;
+case 109:
+#line 903 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
             sizeof(ConfigLoggingEntry.operspylog));
-;}
-    break;
-
-  case 111:
-#line 908 "ircd_parser.y"
-    {
+}
+break;
+case 110:
+#line 910 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
             sizeof(ConfigLoggingEntry.glinelog));
-;}
-    break;
-
-  case 112:
-#line 915 "ircd_parser.y"
-    {
+}
+break;
+case 111:
+#line 917 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
             sizeof(ConfigLoggingEntry.klinelog));
-;}
-    break;
-
-  case 113:
-#line 922 "ircd_parser.y"
-    {
+}
+break;
+case 112:
+#line 924 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
             sizeof(ConfigLoggingEntry.ioerrlog));
-;}
-    break;
-
-  case 114:
-#line 929 "ircd_parser.y"
-    {
+}
+break;
+case 113:
+#line 931 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(ConfigLoggingEntry.killlog, yylval.string,
             sizeof(ConfigLoggingEntry.killlog));
-;}
-    break;
-
-  case 115:
-#line 936 "ircd_parser.y"
-    { 
+}
+break;
+case 114:
+#line 938 "ircd_parser.y"
+{ 
   if (ypass == 2)
     set_log_level(L_CRIT);
-;}
-    break;
-
-  case 116:
-#line 940 "ircd_parser.y"
-    {
+}
+break;
+case 115:
+#line 942 "ircd_parser.y"
+{
   if (ypass == 2)
     set_log_level(L_ERROR);
-;}
-    break;
-
-  case 117:
-#line 944 "ircd_parser.y"
-    {
+}
+break;
+case 116:
+#line 946 "ircd_parser.y"
+{
   if (ypass == 2)
     set_log_level(L_WARN);
-;}
-    break;
-
-  case 118:
-#line 948 "ircd_parser.y"
-    {
+}
+break;
+case 117:
+#line 950 "ircd_parser.y"
+{
   if (ypass == 2)
     set_log_level(L_NOTICE);
-;}
-    break;
-
-  case 119:
-#line 952 "ircd_parser.y"
-    {
+}
+break;
+case 118:
+#line 954 "ircd_parser.y"
+{
   if (ypass == 2)
     set_log_level(L_TRACE);
-;}
-    break;
-
-  case 120:
-#line 956 "ircd_parser.y"
-    {
+}
+break;
+case 119:
+#line 958 "ircd_parser.y"
+{
   if (ypass == 2)
     set_log_level(L_INFO);
-;}
-    break;
-
-  case 121:
-#line 960 "ircd_parser.y"
-    {
+}
+break;
+case 120:
+#line 962 "ircd_parser.y"
+{
   if (ypass == 2)
     set_log_level(L_DEBUG);
-;}
-    break;
-
-  case 122:
-#line 966 "ircd_parser.y"
-    {
+}
+break;
+case 121:
+#line 968 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigLoggingEntry.use_logging = yylval.number;
-;}
-    break;
-
-  case 123:
-#line 975 "ircd_parser.y"
-    {
+}
+break;
+case 122:
+#line 977 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(OPER_TYPE);
@@ -4092,12 +3012,11 @@
     MyFree(class_name);
     class_name = NULL;
   }
-;}
-    break;
-
-  case 124:
-#line 988 "ircd_parser.y"
-    {
+}
+break;
+case 123:
+#line 990 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_tmp;
@@ -4175,12 +3094,11 @@
     MyFree(class_name);
     class_name = NULL;
   }
-;}
-    break;
-
-  case 153:
-#line 1080 "ircd_parser.y"
-    {
+}
+break;
+case 152:
+#line 1082 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (strlen(yylval.string) > OPERNICKLEN)
@@ -4189,12 +3107,11 @@
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 154:
-#line 1092 "ircd_parser.y"
-    {
+}
+break;
+case 153:
+#line 1094 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (strlen(yylval.string) > OPERNICKLEN)
@@ -4203,12 +3120,11 @@
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 155:
-#line 1104 "ircd_parser.y"
-    {
+}
+break;
+case 154:
+#line 1106 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct split_nuh_item nuh;
@@ -4239,12 +3155,11 @@
       dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
     }
   }
-;}
-    break;
-
-  case 156:
-#line 1138 "ircd_parser.y"
-    {
+}
+break;
+case 155:
+#line 1140 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yy_aconf->passwd != NULL)
@@ -4253,12 +3168,11 @@
     MyFree(yy_aconf->passwd);
     DupString(yy_aconf->passwd, yylval.string);
   }
-;}
-    break;
-
-  case 157:
-#line 1150 "ircd_parser.y"
-    {
+}
+break;
+case 156:
+#line 1152 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4266,12 +3180,11 @@
     else
       ClearConfEncrypted(yy_aconf);
   }
-;}
-    break;
-
-  case 158:
-#line 1161 "ircd_parser.y"
-    {
+}
+break;
+case 157:
+#line 1163 "ircd_parser.y"
+{
 #ifdef HAVE_LIBCRYPTO
   if (ypass == 2)
   {
@@ -4310,191 +3223,168 @@
     BIO_free(file);
   }
 #endif /* HAVE_LIBCRYPTO */
-;}
-    break;
-
-  case 159:
-#line 1203 "ircd_parser.y"
-    {
+}
+break;
+case 158:
+#line 1205 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(class_name);
     DupString(class_name, yylval.string);
   }
-;}
-    break;
-
-  case 160:
-#line 1212 "ircd_parser.y"
-    {
+}
+break;
+case 159:
+#line 1214 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes = 0;
-;}
-    break;
-
-  case 164:
-#line 1219 "ircd_parser.y"
-    {
+}
+break;
+case 163:
+#line 1221 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_BOTS;
-;}
-    break;
-
-  case 165:
-#line 1223 "ircd_parser.y"
-    {
+}
+break;
+case 164:
+#line 1225 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_CCONN;
-;}
-    break;
-
-  case 166:
-#line 1227 "ircd_parser.y"
-    {
+}
+break;
+case 165:
+#line 1229 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_CCONN_FULL;
-;}
-    break;
-
-  case 167:
-#line 1231 "ircd_parser.y"
-    {
+}
+break;
+case 166:
+#line 1233 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_DEAF;
-;}
-    break;
-
-  case 168:
-#line 1235 "ircd_parser.y"
-    {
+}
+break;
+case 167:
+#line 1237 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_DEBUG;
-;}
-    break;
-
-  case 169:
-#line 1239 "ircd_parser.y"
-    {
+}
+break;
+case 168:
+#line 1241 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_FULL;
-;}
-    break;
-
-  case 170:
-#line 1243 "ircd_parser.y"
-    {
+}
+break;
+case 169:
+#line 1245 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_SKILL;
-;}
-    break;
-
-  case 171:
-#line 1247 "ircd_parser.y"
-    {
+}
+break;
+case 170:
+#line 1249 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_NCHANGE;
-;}
-    break;
-
-  case 172:
-#line 1251 "ircd_parser.y"
-    {
+}
+break;
+case 171:
+#line 1253 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_REJ;
-;}
-    break;
-
-  case 173:
-#line 1255 "ircd_parser.y"
-    {
+}
+break;
+case 172:
+#line 1257 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_UNAUTH;
-;}
-    break;
-
-  case 174:
-#line 1259 "ircd_parser.y"
-    {
+}
+break;
+case 173:
+#line 1261 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_SPY;
-;}
-    break;
-
-  case 175:
-#line 1263 "ircd_parser.y"
-    {
+}
+break;
+case 174:
+#line 1265 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_EXTERNAL;
-;}
-    break;
-
-  case 176:
-#line 1267 "ircd_parser.y"
-    {
+}
+break;
+case 175:
+#line 1269 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_OPERWALL;
-;}
-    break;
-
-  case 177:
-#line 1271 "ircd_parser.y"
-    {
+}
+break;
+case 176:
+#line 1273 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_SERVNOTICE;
-;}
-    break;
-
-  case 178:
-#line 1275 "ircd_parser.y"
-    {
+}
+break;
+case 177:
+#line 1277 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_INVISIBLE;
-;}
-    break;
-
-  case 179:
-#line 1279 "ircd_parser.y"
-    {
+}
+break;
+case 178:
+#line 1281 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_WALLOP;
-;}
-    break;
-
-  case 180:
-#line 1283 "ircd_parser.y"
-    {
+}
+break;
+case 179:
+#line 1285 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_SOFTCALLERID;
-;}
-    break;
-
-  case 181:
-#line 1287 "ircd_parser.y"
-    {
+}
+break;
+case 180:
+#line 1289 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_CALLERID;
-;}
-    break;
-
-  case 182:
-#line 1291 "ircd_parser.y"
-    {
+}
+break;
+case 181:
+#line 1293 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_LOCOPS;
-;}
-    break;
-
-  case 183:
-#line 1295 "ircd_parser.y"
-    {
+}
+break;
+case 182:
+#line 1297 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->modes |= UMODE_SNOOP;
-;}
-    break;
-
-  case 184:
-#line 1301 "ircd_parser.y"
-    {
+}
+break;
+case 183:
+#line 1303 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4502,12 +3392,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
   }
-;}
-    break;
-
-  case 185:
-#line 1312 "ircd_parser.y"
-    {
+}
+break;
+case 184:
+#line 1314 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4515,12 +3404,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_REMOTE; 
   }
-;}
-    break;
-
-  case 186:
-#line 1323 "ircd_parser.y"
-    {
+}
+break;
+case 185:
+#line 1325 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4528,12 +3416,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
   }
-;}
-    break;
-
-  case 187:
-#line 1334 "ircd_parser.y"
-    {
+}
+break;
+case 186:
+#line 1336 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4541,12 +3428,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_K;
   }
-;}
-    break;
-
-  case 188:
-#line 1345 "ircd_parser.y"
-    {
+}
+break;
+case 187:
+#line 1347 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4554,12 +3440,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_X;
   }
-;}
-    break;
-
-  case 189:
-#line 1356 "ircd_parser.y"
-    {
+}
+break;
+case 188:
+#line 1358 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4567,12 +3452,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_UNKLINE; 
   }
-;}
-    break;
-
-  case 190:
-#line 1367 "ircd_parser.y"
-    {
+}
+break;
+case 189:
+#line 1369 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4580,12 +3464,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_GLINE;
   }
-;}
-    break;
-
-  case 191:
-#line 1378 "ircd_parser.y"
-    {
+}
+break;
+case 190:
+#line 1380 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4593,12 +3476,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_N;
   }
-;}
-    break;
-
-  case 192:
-#line 1389 "ircd_parser.y"
-    {
+}
+break;
+case 191:
+#line 1391 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4606,12 +3488,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_DIE;
   }
-;}
-    break;
-
-  case 193:
-#line 1400 "ircd_parser.y"
-    {
+}
+break;
+case 192:
+#line 1402 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4619,12 +3500,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_REHASH;
   }
-;}
-    break;
-
-  case 194:
-#line 1411 "ircd_parser.y"
-    {
+}
+break;
+case 193:
+#line 1413 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4632,12 +3512,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_ADMIN;
   }
-;}
-    break;
-
-  case 195:
-#line 1422 "ircd_parser.y"
-    {
+}
+break;
+case 194:
+#line 1424 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4645,12 +3524,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
   }
-;}
-    break;
-
-  case 196:
-#line 1433 "ircd_parser.y"
-    {
+}
+break;
+case 195:
+#line 1435 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4658,12 +3536,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
   }
-;}
-    break;
-
-  case 197:
-#line 1444 "ircd_parser.y"
-    {
+}
+break;
+case 196:
+#line 1446 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4671,12 +3548,11 @@
     else
       yy_aconf->port &= ~OPER_FLAG_OPERWALL;
   }
-;}
-    break;
-
-  case 198:
-#line 1455 "ircd_parser.y"
-    {
+}
+break;
+case 197:
+#line 1457 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -4684,248 +3560,224 @@
     else
       yy_aconf->port &= ~OPER_FLAG_SNOOP;
   }
-;}
-    break;
-
-  case 199:
-#line 1466 "ircd_parser.y"
-    {
-;}
-    break;
-
-  case 203:
-#line 1470 "ircd_parser.y"
-    { not_atom = 1; ;}
-    break;
-
-  case 205:
-#line 1471 "ircd_parser.y"
-    { not_atom = 0; ;}
-    break;
-
-  case 207:
-#line 1474 "ircd_parser.y"
-    {
+}
+break;
+case 198:
+#line 1468 "ircd_parser.y"
+{
+}
+break;
+case 202:
+#line 1472 "ircd_parser.y"
+{ not_atom = 1; }
+break;
+case 204:
+#line 1473 "ircd_parser.y"
+{ not_atom = 0; }
+break;
+case 206:
+#line 1476 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
     else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
   }
-;}
-    break;
-
-  case 208:
-#line 1481 "ircd_parser.y"
-    {
+}
+break;
+case 207:
+#line 1483 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
     else yy_aconf->port |= OPER_FLAG_REMOTE;
   }
-;}
-    break;
-
-  case 209:
-#line 1488 "ircd_parser.y"
-    {
+}
+break;
+case 208:
+#line 1490 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
     else yy_aconf->port |= OPER_FLAG_K;
   }
-;}
-    break;
-
-  case 210:
-#line 1495 "ircd_parser.y"
-    {
+}
+break;
+case 209:
+#line 1497 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
     else yy_aconf->port |= OPER_FLAG_UNKLINE;
   } 
-;}
-    break;
-
-  case 211:
-#line 1502 "ircd_parser.y"
-    {
+}
+break;
+case 210:
+#line 1504 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
     else yy_aconf->port |= OPER_FLAG_X;
   }
-;}
-    break;
-
-  case 212:
-#line 1509 "ircd_parser.y"
-    {
+}
+break;
+case 211:
+#line 1511 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
     else yy_aconf->port |= OPER_FLAG_GLINE;
   }
-;}
-    break;
-
-  case 213:
-#line 1516 "ircd_parser.y"
-    {
+}
+break;
+case 212:
+#line 1518 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
     else yy_aconf->port |= OPER_FLAG_DIE;
   }
-;}
-    break;
-
-  case 214:
-#line 1523 "ircd_parser.y"
-    {
+}
+break;
+case 213:
+#line 1525 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
     else yy_aconf->port |= OPER_FLAG_REHASH;
   }
-;}
-    break;
-
-  case 215:
-#line 1530 "ircd_parser.y"
-    {
+}
+break;
+case 214:
+#line 1532 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
     else yy_aconf->port |= OPER_FLAG_ADMIN;
   }
-;}
-    break;
-
-  case 216:
-#line 1537 "ircd_parser.y"
-    {
+}
+break;
+case 215:
+#line 1539 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
     else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
   }
-;}
-    break;
-
-  case 217:
-#line 1544 "ircd_parser.y"
-    {
+}
+break;
+case 216:
+#line 1546 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
     else yy_aconf->port |= OPER_FLAG_N;
   }
-;}
-    break;
-
-  case 218:
-#line 1551 "ircd_parser.y"
-    {
+}
+break;
+case 217:
+#line 1553 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
     else yy_aconf->port |= OPER_FLAG_OPERWALL;
   }
-;}
-    break;
-
-  case 219:
-#line 1558 "ircd_parser.y"
-    {
+}
+break;
+case 218:
+#line 1560 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
     else yy_aconf->port |= OPER_FLAG_OPER_SPY;
   }
-;}
-    break;
-
-  case 220:
-#line 1565 "ircd_parser.y"
-    {
+}
+break;
+case 219:
+#line 1567 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
     else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
   }
-;}
-    break;
-
-  case 221:
-#line 1572 "ircd_parser.y"
-    {
+}
+break;
+case 220:
+#line 1574 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
     else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
   }
-;}
-    break;
-
-  case 222:
-#line 1579 "ircd_parser.y"
-    {
+}
+break;
+case 221:
+#line 1581 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) ClearConfEncrypted(yy_aconf);
     else SetConfEncrypted(yy_aconf);
   }
-;}
-    break;
-
-  case 223:
-#line 1586 "ircd_parser.y"
-    {
+}
+break;
+case 222:
+#line 1588 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->port &= ~OPER_FLAG_SNOOP;
     else yy_aconf->port |= OPER_FLAG_SNOOP;
   }
-;}
-    break;
-
-  case 224:
-#line 1598 "ircd_parser.y"
-    {
+}
+break;
+case 223:
+#line 1600 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(WEBIRC_TYPE);
     yy_aconf = map_to_conf(yy_conf);
   }
-;}
-    break;
-
-  case 225:
-#line 1605 "ircd_parser.y"
-    {
+}
+break;
+case 224:
+#line 1607 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = NULL;
     yy_aconf = NULL;
   }
-;}
-    break;
-
-  case 231:
-#line 1617 "ircd_parser.y"
-    {
+}
+break;
+case 230:
+#line 1619 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_aconf->host);
     DupString(yy_aconf->host, yylval.string);
   }
-;}
-    break;
-
-  case 232:
-#line 1626 "ircd_parser.y"
-    {
+}
+break;
+case 231:
+#line 1628 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yy_aconf->passwd != NULL)
@@ -4934,23 +3786,21 @@
     MyFree(yy_aconf->passwd);
     DupString(yy_aconf->passwd, yylval.string);
   }
-;}
-    break;
-
-  case 233:
-#line 1641 "ircd_parser.y"
-    {
+}
+break;
+case 232:
+#line 1643 "ircd_parser.y"
+{
   if (ypass == 1)
   {
     yy_conf = make_conf_item(CLASS_TYPE);
     yy_class = map_to_conf(yy_conf);
   }
-;}
-    break;
-
-  case 234:
-#line 1648 "ircd_parser.y"
-    {
+}
+break;
+case 233:
+#line 1650 "ircd_parser.y"
+{
   if (ypass == 1)
   {
     struct ConfItem *cconf = NULL;
@@ -4990,180 +3840,159 @@
 
     yy_class_name = NULL;
   }
-;}
-    break;
-
-  case 253:
-#line 1708 "ircd_parser.y"
-    {
+}
+break;
+case 252:
+#line 1710 "ircd_parser.y"
+{
   if (ypass == 1)
   {
     MyFree(yy_class_name);
     DupString(yy_class_name, yylval.string);
   }
-;}
-    break;
-
-  case 254:
-#line 1717 "ircd_parser.y"
-    {
+}
+break;
+case 253:
+#line 1719 "ircd_parser.y"
+{
   if (ypass == 1)
   {
     MyFree(yy_class_name);
     DupString(yy_class_name, yylval.string);
   }
-;}
-    break;
-
-  case 255:
-#line 1726 "ircd_parser.y"
-    {
+}
+break;
+case 254:
+#line 1728 "ircd_parser.y"
+{
   if (ypass == 1)
-    PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 256:
-#line 1732 "ircd_parser.y"
-    {
+    PingFreq(yy_class) = yyvsp[-1].number;
+}
+break;
+case 255:
+#line 1734 "ircd_parser.y"
+{
   if (ypass == 1)
-    PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 257:
-#line 1738 "ircd_parser.y"
-    {
+    PingWarning(yy_class) = yyvsp[-1].number;
+}
+break;
+case 256:
+#line 1740 "ircd_parser.y"
+{
   if (ypass == 1)
-    MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 258:
-#line 1744 "ircd_parser.y"
-    {
+    MaxPerIp(yy_class) = yyvsp[-1].number;
+}
+break;
+case 257:
+#line 1746 "ircd_parser.y"
+{
   if (ypass == 1)
-    ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 259:
-#line 1750 "ircd_parser.y"
-    {
+    ConFreq(yy_class) = yyvsp[-1].number;
+}
+break;
+case 258:
+#line 1752 "ircd_parser.y"
+{
   if (ypass == 1)
-    MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 260:
-#line 1756 "ircd_parser.y"
-    {
+    MaxTotal(yy_class) = yyvsp[-1].number;
+}
+break;
+case 259:
+#line 1758 "ircd_parser.y"
+{
   if (ypass == 1)
-    MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 261:
-#line 1762 "ircd_parser.y"
-    {
+    MaxGlobal(yy_class) = yyvsp[-1].number;
+}
+break;
+case 260:
+#line 1764 "ircd_parser.y"
+{
   if (ypass == 1)
-    MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 262:
-#line 1768 "ircd_parser.y"
-    {
+    MaxLocal(yy_class) = yyvsp[-1].number;
+}
+break;
+case 261:
+#line 1770 "ircd_parser.y"
+{
   if (ypass == 1)
-    MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 263:
-#line 1774 "ircd_parser.y"
-    {
+    MaxIdent(yy_class) = yyvsp[-1].number;
+}
+break;
+case 262:
+#line 1776 "ircd_parser.y"
+{
   if (ypass == 1)
-    MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 264:
-#line 1780 "ircd_parser.y"
-    {
+    MaxSendq(yy_class) = yyvsp[-1].number;
+}
+break;
+case 263:
+#line 1782 "ircd_parser.y"
+{
   if (ypass == 1)
-    CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 265:
-#line 1786 "ircd_parser.y"
-    {
+    CidrBitlenIPV4(yy_class) = yyvsp[-1].number;
+}
+break;
+case 264:
+#line 1788 "ircd_parser.y"
+{
   if (ypass == 1)
-    CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 266:
-#line 1792 "ircd_parser.y"
-    {
+    CidrBitlenIPV6(yy_class) = yyvsp[-1].number;
+}
+break;
+case 265:
+#line 1794 "ircd_parser.y"
+{
   if (ypass == 1)
-    NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 267:
-#line 1801 "ircd_parser.y"
-    {
+    NumberPerCidr(yy_class) = yyvsp[-1].number;
+}
+break;
+case 266:
+#line 1803 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     listener_address = NULL;
     listener_flags = 0;
   }
-;}
-    break;
-
-  case 268:
-#line 1808 "ircd_parser.y"
-    {
+}
+break;
+case 267:
+#line 1810 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(listener_address);
     listener_address = NULL;
   }
-;}
-    break;
-
-  case 269:
-#line 1817 "ircd_parser.y"
-    {
+}
+break;
+case 268:
+#line 1819 "ircd_parser.y"
+{
   listener_flags = 0;
-;}
-    break;
-
-  case 273:
-#line 1823 "ircd_parser.y"
-    {
+}
+break;
+case 272:
+#line 1825 "ircd_parser.y"
+{
   if (ypass == 2)
     listener_flags |= LISTENER_SSL;
-;}
-    break;
-
-  case 274:
-#line 1827 "ircd_parser.y"
-    {
+}
+break;
+case 273:
+#line 1829 "ircd_parser.y"
+{
   if (ypass == 2)
     listener_flags |= LISTENER_HIDDEN;
-;}
-    break;
-
-  case 282:
-#line 1835 "ircd_parser.y"
-    { listener_flags = 0; ;}
-    break;
-
-  case 286:
-#line 1840 "ircd_parser.y"
-    {
+}
+break;
+case 281:
+#line 1837 "ircd_parser.y"
+{ listener_flags = 0; }
+break;
+case 285:
+#line 1842 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if ((listener_flags & LISTENER_SSL))
@@ -5174,14 +4003,13 @@
         yyerror("SSL not available - port closed");
 	break;
       }
-    add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
+    add_listener(yyvsp[0].number, listener_address, listener_flags);
   }
-;}
-    break;
-
-  case 287:
-#line 1854 "ircd_parser.y"
-    {
+}
+break;
+case 286:
+#line 1856 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     int i;
@@ -5195,37 +4023,34 @@
 	break;
       }
 
-    for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
+    for (i = yyvsp[-2].number; i <= yyvsp[0].number; ++i)
       add_listener(i, listener_address, listener_flags);
   }
-;}
-    break;
-
-  case 288:
-#line 1874 "ircd_parser.y"
-    {
+}
+break;
+case 287:
+#line 1876 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(listener_address);
     DupString(listener_address, yylval.string);
   }
-;}
-    break;
-
-  case 289:
-#line 1883 "ircd_parser.y"
-    {
+}
+break;
+case 288:
+#line 1885 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(listener_address);
     DupString(listener_address, yylval.string);
   }
-;}
-    break;
-
-  case 290:
-#line 1895 "ircd_parser.y"
-    {
+}
+break;
+case 289:
+#line 1897 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(CLIENT_TYPE);
@@ -5236,12 +4061,11 @@
     MyFree(class_name);
     class_name = NULL;
   }
-;}
-    break;
-
-  case 291:
-#line 1907 "ircd_parser.y"
-    {
+}
+break;
+case 290:
+#line 1909 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_tmp = NULL;
@@ -5295,12 +4119,11 @@
     yy_conf = NULL;
     yy_aconf = NULL;
   }
-;}
-    break;
-
-  case 311:
-#line 1972 "ircd_parser.y"
-    {
+}
+break;
+case 310:
+#line 1974 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_tmp = NULL;
@@ -5332,12 +4155,11 @@
       dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
     }
   }
-;}
-    break;
-
-  case 312:
-#line 2009 "ircd_parser.y"
-    {
+}
+break;
+case 311:
+#line 2011 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     /* be paranoid */
@@ -5347,12 +4169,11 @@
     MyFree(yy_aconf->passwd);
     DupString(yy_aconf->passwd, yylval.string);
   }
-;}
-    break;
-
-  case 313:
-#line 2022 "ircd_parser.y"
-    {
+}
+break;
+case 312:
+#line 2024 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5360,23 +4181,21 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
   }
-;}
-    break;
-
-  case 314:
-#line 2033 "ircd_parser.y"
-    {
+}
+break;
+case 313:
+#line 2035 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(class_name);
     DupString(class_name, yylval.string);
   }
-;}
-    break;
-
-  case 315:
-#line 2042 "ircd_parser.y"
-    {
+}
+break;
+case 314:
+#line 2044 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5384,139 +4203,125 @@
     else
       ClearConfEncrypted(yy_aconf);
   }
-;}
-    break;
-
-  case 316:
-#line 2053 "ircd_parser.y"
-    {
-;}
-    break;
-
-  case 320:
-#line 2057 "ircd_parser.y"
-    { not_atom = 1; ;}
-    break;
-
-  case 322:
-#line 2058 "ircd_parser.y"
-    { not_atom = 0; ;}
-    break;
-
-  case 324:
-#line 2061 "ircd_parser.y"
-    {
+}
+break;
+case 315:
+#line 2055 "ircd_parser.y"
+{
+}
+break;
+case 319:
+#line 2059 "ircd_parser.y"
+{ not_atom = 1; }
+break;
+case 321:
+#line 2060 "ircd_parser.y"
+{ not_atom = 0; }
+break;
+case 323:
+#line 2063 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
     else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
   }
 
-;}
-    break;
-
-  case 325:
-#line 2069 "ircd_parser.y"
-    {
+}
+break;
+case 324:
+#line 2071 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
     else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
   }
-;}
-    break;
-
-  case 326:
-#line 2076 "ircd_parser.y"
-    {
+}
+break;
+case 325:
+#line 2078 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
     else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
   } 
-;}
-    break;
-
-  case 327:
-#line 2083 "ircd_parser.y"
-    {
+}
+break;
+case 326:
+#line 2085 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
     else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
   }
-;}
-    break;
-
-  case 328:
-#line 2090 "ircd_parser.y"
-    {
+}
+break;
+case 327:
+#line 2092 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
     else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
   }
-;}
-    break;
-
-  case 329:
-#line 2097 "ircd_parser.y"
-    {
+}
+break;
+case 328:
+#line 2099 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
     else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
   }
-;}
-    break;
-
-  case 330:
-#line 2104 "ircd_parser.y"
-    {
+}
+break;
+case 329:
+#line 2106 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
     else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
   } 
-;}
-    break;
-
-  case 331:
-#line 2111 "ircd_parser.y"
-    {
+}
+break;
+case 330:
+#line 2113 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
     else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
   } 
-;}
-    break;
-
-  case 332:
-#line 2118 "ircd_parser.y"
-    {
+}
+break;
+case 331:
+#line 2120 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
     else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
   }
-;}
-    break;
-
-  case 333:
-#line 2125 "ircd_parser.y"
-    {
+}
+break;
+case 332:
+#line 2127 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
     else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
   }
-;}
-    break;
-
-  case 334:
-#line 2134 "ircd_parser.y"
-    {
+}
+break;
+case 333:
+#line 2136 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5524,12 +4329,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
   }
-;}
-    break;
-
-  case 335:
-#line 2145 "ircd_parser.y"
-    {
+}
+break;
+case 334:
+#line 2147 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5537,12 +4341,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
   }
-;}
-    break;
-
-  case 336:
-#line 2156 "ircd_parser.y"
-    {
+}
+break;
+case 335:
+#line 2158 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5550,12 +4353,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
   }
-;}
-    break;
-
-  case 337:
-#line 2167 "ircd_parser.y"
-    {
+}
+break;
+case 336:
+#line 2169 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5563,12 +4365,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
   }
-;}
-    break;
-
-  case 338:
-#line 2178 "ircd_parser.y"
-    {
+}
+break;
+case 337:
+#line 2180 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5576,12 +4377,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
   }
-;}
-    break;
-
-  case 339:
-#line 2189 "ircd_parser.y"
-    {
+}
+break;
+case 338:
+#line 2191 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5589,12 +4389,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
   }
-;}
-    break;
-
-  case 340:
-#line 2201 "ircd_parser.y"
-    {
+}
+break;
+case 339:
+#line 2203 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_conf->name);
@@ -5610,35 +4409,32 @@
       yy_conf->name = NULL;
     }
   }
-;}
-    break;
-
-  case 341:
-#line 2220 "ircd_parser.y"
-    {
+}
+break;
+case 340:
+#line 2222 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_aconf->flags |= CONF_FLAGS_REDIR;
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 342:
-#line 2230 "ircd_parser.y"
-    {
+}
+break;
+case 341:
+#line 2232 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_aconf->flags |= CONF_FLAGS_REDIR;
-    yy_aconf->port = (yyvsp[(3) - (4)].number);
+    yy_aconf->port = yyvsp[-1].number;
   }
-;}
-    break;
-
-  case 343:
-#line 2239 "ircd_parser.y"
-    {
+}
+break;
+case 342:
+#line 2241 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -5646,45 +4442,41 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
   }
-;}
-    break;
-
-  case 344:
-#line 2254 "ircd_parser.y"
-    {
+}
+break;
+case 343:
+#line 2256 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(resv_reason);
     resv_reason = NULL;
   }
-;}
-    break;
-
-  case 345:
-#line 2261 "ircd_parser.y"
-    {
+}
+break;
+case 344:
+#line 2263 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(resv_reason);
     resv_reason = NULL;
   }
-;}
-    break;
-
-  case 352:
-#line 2273 "ircd_parser.y"
-    {
+}
+break;
+case 351:
+#line 2275 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(resv_reason);
     DupString(resv_reason, yylval.string);
   }
-;}
-    break;
-
-  case 353:
-#line 2282 "ircd_parser.y"
-    {
+}
+break;
+case 352:
+#line 2284 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (IsChanPrefix(*yylval.string))
@@ -5696,57 +4488,52 @@
   }
   /* ignore it for now.. but we really should make a warning if
    * its an erroneous name --fl_ */
-;}
-    break;
-
-  case 354:
-#line 2297 "ircd_parser.y"
-    {
+}
+break;
+case 353:
+#line 2299 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     char def_reason[] = "No reason";
 
     create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
   }
-;}
-    break;
-
-  case 355:
-#line 2310 "ircd_parser.y"
-    {
+}
+break;
+case 354:
+#line 2312 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(ULINE_TYPE);
     yy_match_item = map_to_conf(yy_conf);
     yy_match_item->action = SHARED_ALL;
   }
-;}
-    break;
-
-  case 356:
-#line 2318 "ircd_parser.y"
-    {
+}
+break;
+case 355:
+#line 2320 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = NULL;
   }
-;}
-    break;
-
-  case 363:
-#line 2329 "ircd_parser.y"
-    {
+}
+break;
+case 362:
+#line 2331 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 364:
-#line 2338 "ircd_parser.y"
-    {
+}
+break;
+case 363:
+#line 2340 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct split_nuh_item nuh;
@@ -5765,243 +4552,214 @@
     DupString(yy_match_item->user, userbuf);
     DupString(yy_match_item->host, hostbuf);
   }
-;}
-    break;
-
-  case 365:
-#line 2360 "ircd_parser.y"
-    {
+}
+break;
+case 364:
+#line 2362 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action = 0;
-;}
-    break;
-
-  case 369:
-#line 2367 "ircd_parser.y"
-    {
+}
+break;
+case 368:
+#line 2369 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_KLINE;
-;}
-    break;
-
-  case 370:
-#line 2371 "ircd_parser.y"
-    {
+}
+break;
+case 369:
+#line 2373 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_TKLINE;
-;}
-    break;
-
-  case 371:
-#line 2375 "ircd_parser.y"
-    {
+}
+break;
+case 370:
+#line 2377 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_UNKLINE;
-;}
-    break;
-
-  case 372:
-#line 2379 "ircd_parser.y"
-    {
+}
+break;
+case 371:
+#line 2381 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_XLINE;
-;}
-    break;
-
-  case 373:
-#line 2383 "ircd_parser.y"
-    {
+}
+break;
+case 372:
+#line 2385 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_TXLINE;
-;}
-    break;
-
-  case 374:
-#line 2387 "ircd_parser.y"
-    {
+}
+break;
+case 373:
+#line 2389 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_UNXLINE;
-;}
-    break;
-
-  case 375:
-#line 2391 "ircd_parser.y"
-    {
+}
+break;
+case 374:
+#line 2393 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_RESV;
-;}
-    break;
-
-  case 376:
-#line 2395 "ircd_parser.y"
-    {
+}
+break;
+case 375:
+#line 2397 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_TRESV;
-;}
-    break;
-
-  case 377:
-#line 2399 "ircd_parser.y"
-    {
+}
+break;
+case 376:
+#line 2401 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_UNRESV;
-;}
-    break;
-
-  case 378:
-#line 2403 "ircd_parser.y"
-    {
+}
+break;
+case 377:
+#line 2405 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_LOCOPS;
-;}
-    break;
-
-  case 379:
-#line 2407 "ircd_parser.y"
-    {
+}
+break;
+case 378:
+#line 2409 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action |= SHARED_USERMODE;
-;}
-    break;
-
-  case 380:
-#line 2411 "ircd_parser.y"
-    {
+}
+break;
+case 379:
+#line 2413 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_match_item->action = SHARED_ALL;
-;}
-    break;
-
-  case 381:
-#line 2420 "ircd_parser.y"
-    {
+}
+break;
+case 380:
+#line 2422 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(CLUSTER_TYPE);
     yy_conf->flags = SHARED_ALL;
   }
-;}
-    break;
-
-  case 382:
-#line 2427 "ircd_parser.y"
-    {
+}
+break;
+case 381:
+#line 2429 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yy_conf->name == NULL)
       DupString(yy_conf->name, "*");
     yy_conf = NULL;
   }
-;}
-    break;
-
-  case 388:
-#line 2440 "ircd_parser.y"
-    {
+}
+break;
+case 387:
+#line 2442 "ircd_parser.y"
+{
   if (ypass == 2)
     DupString(yy_conf->name, yylval.string);
-;}
-    break;
-
-  case 389:
-#line 2446 "ircd_parser.y"
-    {
+}
+break;
+case 388:
+#line 2448 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags = 0;
-;}
-    break;
-
-  case 393:
-#line 2453 "ircd_parser.y"
-    {
+}
+break;
+case 392:
+#line 2455 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_KLINE;
-;}
-    break;
-
-  case 394:
-#line 2457 "ircd_parser.y"
-    {
+}
+break;
+case 393:
+#line 2459 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_TKLINE;
-;}
-    break;
-
-  case 395:
-#line 2461 "ircd_parser.y"
-    {
+}
+break;
+case 394:
+#line 2463 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_UNKLINE;
-;}
-    break;
-
-  case 396:
-#line 2465 "ircd_parser.y"
-    {
+}
+break;
+case 395:
+#line 2467 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_XLINE;
-;}
-    break;
-
-  case 397:
-#line 2469 "ircd_parser.y"
-    {
+}
+break;
+case 396:
+#line 2471 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_TXLINE;
-;}
-    break;
-
-  case 398:
-#line 2473 "ircd_parser.y"
-    {
+}
+break;
+case 397:
+#line 2475 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_UNXLINE;
-;}
-    break;
-
-  case 399:
-#line 2477 "ircd_parser.y"
-    {
+}
+break;
+case 398:
+#line 2479 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_RESV;
-;}
-    break;
-
-  case 400:
-#line 2481 "ircd_parser.y"
-    {
+}
+break;
+case 399:
+#line 2483 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_TRESV;
-;}
-    break;
-
-  case 401:
-#line 2485 "ircd_parser.y"
-    {
+}
+break;
+case 400:
+#line 2487 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_UNRESV;
-;}
-    break;
-
-  case 402:
-#line 2489 "ircd_parser.y"
-    {
+}
+break;
+case 401:
+#line 2491 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags |= SHARED_LOCOPS;
-;}
-    break;
-
-  case 403:
-#line 2493 "ircd_parser.y"
-    {
+}
+break;
+case 402:
+#line 2495 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_conf->flags = SHARED_ALL;
-;}
-    break;
-
-  case 404:
-#line 2502 "ircd_parser.y"
-    {
+}
+break;
+case 403:
+#line 2504 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(SERVER_TYPE);
@@ -6018,12 +4776,11 @@
     MyFree(class_name);
     class_name = NULL;
   }
-;}
-    break;
-
-  case 405:
-#line 2520 "ircd_parser.y"
-    {
+}
+break;
+case 404:
+#line 2522 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_hconf=NULL;
@@ -6148,12 +4905,11 @@
       yy_conf = NULL;
       yy_aconf = NULL;
   }
-;}
-    break;
-
-  case 430:
-#line 2659 "ircd_parser.y"
-    {
+}
+break;
+case 429:
+#line 2661 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yy_conf->name != NULL)
@@ -6162,12 +4918,11 @@
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 431:
-#line 2671 "ircd_parser.y"
-    {
+}
+break;
+case 430:
+#line 2673 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yy_conf->name != NULL)
@@ -6176,23 +4931,21 @@
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 432:
-#line 2683 "ircd_parser.y"
-    {
+}
+break;
+case 431:
+#line 2685 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_aconf->host);
     DupString(yy_aconf->host, yylval.string);
   }
-;}
-    break;
-
-  case 433:
-#line 2692 "ircd_parser.y"
-    {
+}
+break;
+case 432:
+#line 2694 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct addrinfo hints, *res;
@@ -6215,17 +4968,16 @@
       irc_freeaddrinfo(res);
     }
   }
-;}
-    break;
-
-  case 434:
-#line 2718 "ircd_parser.y"
-    {
+}
+break;
+case 433:
+#line 2720 "ircd_parser.y"
+{
   if (ypass == 2)
   {
-    if ((yyvsp[(3) - (4)].string)[0] == ':')
+    if (yyvsp[-1].string[0] == ':')
       yyerror("Server passwords cannot begin with a colon");
-    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
+    else if (strchr(yyvsp[-1].string, ' ') != NULL)
       yyerror("Server passwords cannot contain spaces");
     else {
       if (yy_aconf->spasswd != NULL)
@@ -6235,17 +4987,16 @@
       DupString(yy_aconf->spasswd, yylval.string);
     }
   }
-;}
-    break;
-
-  case 435:
-#line 2736 "ircd_parser.y"
-    {
+}
+break;
+case 434:
+#line 2738 "ircd_parser.y"
+{
   if (ypass == 2)
   {
-    if ((yyvsp[(3) - (4)].string)[0] == ':')
+    if (yyvsp[-1].string[0] == ':')
       yyerror("Server passwords cannot begin with a colon");
-    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
+    else if (strchr(yyvsp[-1].string, ' ') != NULL)
       yyerror("Server passwords cannot contain spaces");
     else {
       if (yy_aconf->passwd != NULL)
@@ -6255,76 +5006,67 @@
       DupString(yy_aconf->passwd, yylval.string);
     }
   }
-;}
-    break;
-
-  case 436:
-#line 2754 "ircd_parser.y"
-    {
+}
+break;
+case 435:
+#line 2756 "ircd_parser.y"
+{
   if (ypass == 2)
-    yy_aconf->port = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 437:
-#line 2760 "ircd_parser.y"
-    {
+    yy_aconf->port = yyvsp[-1].number;
+}
+break;
+case 436:
+#line 2762 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->aftype = AF_INET;
-;}
-    break;
-
-  case 438:
-#line 2764 "ircd_parser.y"
-    {
+}
+break;
+case 437:
+#line 2766 "ircd_parser.y"
+{
 #ifdef IPV6
   if (ypass == 2)
     yy_aconf->aftype = AF_INET6;
 #endif
-;}
-    break;
-
-  case 439:
-#line 2772 "ircd_parser.y"
-    {
+}
+break;
+case 438:
+#line 2774 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_aconf->fakename);
     DupString(yy_aconf->fakename, yylval.string);
   }
-;}
-    break;
-
-  case 440:
-#line 2781 "ircd_parser.y"
-    {
-;}
-    break;
-
-  case 444:
-#line 2785 "ircd_parser.y"
-    { not_atom = 1; ;}
-    break;
-
-  case 446:
-#line 2786 "ircd_parser.y"
-    { not_atom = 0; ;}
-    break;
-
-  case 448:
-#line 2789 "ircd_parser.y"
-    {
+}
+break;
+case 439:
+#line 2783 "ircd_parser.y"
+{
+}
+break;
+case 443:
+#line 2787 "ircd_parser.y"
+{ not_atom = 1; }
+break;
+case 445:
+#line 2788 "ircd_parser.y"
+{ not_atom = 0; }
+break;
+case 447:
+#line 2791 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom)ClearConfLazyLink(yy_aconf);
     else SetConfLazyLink(yy_aconf);
   }
-;}
-    break;
-
-  case 449:
-#line 2796 "ircd_parser.y"
-    {
+}
+break;
+case 448:
+#line 2798 "ircd_parser.y"
+{
   if (ypass == 2)
 #ifndef HAVE_LIBZ
     yyerror("Ignoring flags = compressed; -- no zlib support");
@@ -6334,56 +5076,51 @@
    else SetConfCompressed(yy_aconf);
  }
 #endif
-;}
-    break;
-
-  case 450:
-#line 2807 "ircd_parser.y"
-    {
+}
+break;
+case 449:
+#line 2809 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom)ClearConfCryptLink(yy_aconf);
     else SetConfCryptLink(yy_aconf);
   }
-;}
-    break;
-
-  case 451:
-#line 2814 "ircd_parser.y"
-    {
+}
+break;
+case 450:
+#line 2816 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom)ClearConfAllowAutoConn(yy_aconf);
     else SetConfAllowAutoConn(yy_aconf);
   }
-;}
-    break;
-
-  case 452:
-#line 2821 "ircd_parser.y"
-    {
+}
+break;
+case 451:
+#line 2823 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom)ClearConfAwayBurst(yy_aconf);
     else SetConfAwayBurst(yy_aconf);
   }
-;}
-    break;
-
-  case 453:
-#line 2828 "ircd_parser.y"
-    {
+}
+break;
+case 452:
+#line 2830 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (not_atom)ClearConfTopicBurst(yy_aconf);
     else SetConfTopicBurst(yy_aconf);
   }
-;}
-    break;
-
-  case 454:
-#line 2838 "ircd_parser.y"
-    {
+}
+break;
+case 453:
+#line 2840 "ircd_parser.y"
+{
 #ifdef HAVE_LIBCRYPTO
   if (ypass == 2)
   {
@@ -6421,12 +5158,11 @@
     BIO_free(file);
   }
 #endif /* HAVE_LIBCRYPTO */
-;}
-    break;
-
-  case 455:
-#line 2879 "ircd_parser.y"
-    {
+}
+break;
+case 454:
+#line 2881 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -6434,12 +5170,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
   }
-;}
-    break;
-
-  case 456:
-#line 2890 "ircd_parser.y"
-    {
+}
+break;
+case 455:
+#line 2892 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -6447,12 +5182,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
   }
-;}
-    break;
-
-  case 457:
-#line 2901 "ircd_parser.y"
-    {
+}
+break;
+case 456:
+#line 2903 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -6464,12 +5198,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
   }
-;}
-    break;
-
-  case 458:
-#line 2916 "ircd_parser.y"
-    {
+}
+break;
+case 457:
+#line 2918 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -6477,12 +5210,11 @@
     else
       yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
   }
-;}
-    break;
-
-  case 459:
-#line 2927 "ircd_parser.y"
-    {
+}
+break;
+case 458:
+#line 2929 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.number)
@@ -6490,12 +5222,11 @@
     else
       ClearConfTopicBurst(yy_aconf);
   }
-;}
-    break;
-
-  case 460:
-#line 2938 "ircd_parser.y"
-    {
+}
+break;
+case 459:
+#line 2940 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_tmp;
@@ -6505,12 +5236,11 @@
     DupString(yy_tmp->user, "*");
     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
   }
-;}
-    break;
-
-  case 461:
-#line 2951 "ircd_parser.y"
-    {
+}
+break;
+case 460:
+#line 2953 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_tmp;
@@ -6520,23 +5250,21 @@
     DupString(yy_tmp->user, "*");
     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
   }
-;}
-    break;
-
-  case 462:
-#line 2964 "ircd_parser.y"
-    {
+}
+break;
+case 461:
+#line 2966 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(class_name);
     DupString(class_name, yylval.string);
   }
-;}
-    break;
-
-  case 463:
-#line 2973 "ircd_parser.y"
-    {
+}
+break;
+case 462:
+#line 2975 "ircd_parser.y"
+{
 #ifdef HAVE_LIBCRYPTO
   if (ypass == 2)
   {
@@ -6565,23 +5293,21 @@
   if (ypass == 2)
     yyerror("Ignoring cipher_preference -- no OpenSSL support");
 #endif
-;}
-    break;
-
-  case 464:
-#line 3008 "ircd_parser.y"
-    {
+}
+break;
+case 463:
+#line 3010 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
     regex_ban = 0;
   }
-;}
-    break;
-
-  case 465:
-#line 3015 "ircd_parser.y"
-    {
+}
+break;
+case 464:
+#line 3017 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (userbuf[0] && hostbuf[0])
@@ -6635,26 +5361,23 @@
     yy_conf = NULL;
     yy_aconf = NULL;
   }
-;}
-    break;
-
-  case 466:
-#line 3072 "ircd_parser.y"
-    {
-;}
-    break;
-
-  case 470:
-#line 3077 "ircd_parser.y"
-    {
+}
+break;
+case 465:
+#line 3074 "ircd_parser.y"
+{
+}
+break;
+case 469:
+#line 3079 "ircd_parser.y"
+{
   if (ypass == 2)
     regex_ban = 1;
-;}
-    break;
-
-  case 477:
-#line 3086 "ircd_parser.y"
-    {
+}
+break;
+case 476:
+#line 3088 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct split_nuh_item nuh;
@@ -6670,20 +5393,18 @@
 
     split_nuh(&nuh);
   }
-;}
-    break;
-
-  case 478:
-#line 3105 "ircd_parser.y"
-    {
+}
+break;
+case 477:
+#line 3107 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
-;}
-    break;
-
-  case 479:
-#line 3114 "ircd_parser.y"
-    {
+}
+break;
+case 478:
+#line 3116 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(DLINE_TYPE);
@@ -6691,12 +5412,11 @@
     /* default reason */
     DupString(yy_aconf->reason, "No reason");
   }
-;}
-    break;
-
-  case 480:
-#line 3123 "ircd_parser.y"
-    {
+}
+break;
+case 479:
+#line 3125 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yy_aconf->host && parse_netmask(yy_aconf->host, NULL, NULL) != HM_HOST)
@@ -6706,34 +5426,31 @@
     yy_conf = NULL;
     yy_aconf = NULL;
   }
-;}
-    break;
-
-  case 486:
-#line 3139 "ircd_parser.y"
-    {
+}
+break;
+case 485:
+#line 3141 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_aconf->host);
     DupString(yy_aconf->host, yylval.string);
   }
-;}
-    break;
-
-  case 487:
-#line 3148 "ircd_parser.y"
-    {
+}
+break;
+case 486:
+#line 3150 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(yy_aconf->reason);
     DupString(yy_aconf->reason, yylval.string);
   }
-;}
-    break;
-
-  case 493:
-#line 3165 "ircd_parser.y"
-    {
+}
+break;
+case 492:
+#line 3167 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
@@ -6748,23 +5465,21 @@
       yy_aconf = NULL;
     }
   }
-;}
-    break;
-
-  case 494:
-#line 3186 "ircd_parser.y"
-    {
+}
+break;
+case 493:
+#line 3188 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     regex_ban = 0;
     reasonbuf[0] = gecos_name[0] = '\0';
   }
-;}
-    break;
-
-  case 495:
-#line 3193 "ircd_parser.y"
-    {
+}
+break;
+case 494:
+#line 3195 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (gecos_name[0])
@@ -6796,319 +5511,284 @@
         DupString(yy_match_item->reason, "No reason");
     }
   }
-;}
-    break;
-
-  case 496:
-#line 3228 "ircd_parser.y"
-    {
-;}
-    break;
-
-  case 500:
-#line 3233 "ircd_parser.y"
-    {
+}
+break;
+case 495:
+#line 3230 "ircd_parser.y"
+{
+}
+break;
+case 499:
+#line 3235 "ircd_parser.y"
+{
   if (ypass == 2)
     regex_ban = 1;
-;}
-    break;
-
-  case 507:
-#line 3242 "ircd_parser.y"
-    {
+}
+break;
+case 506:
+#line 3244 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
-;}
-    break;
-
-  case 508:
-#line 3248 "ircd_parser.y"
-    {
+}
+break;
+case 507:
+#line 3250 "ircd_parser.y"
+{
   if (ypass == 2)
     strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
-;}
-    break;
-
-  case 568:
-#line 3293 "ircd_parser.y"
-    {
-  ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 569:
-#line 3298 "ircd_parser.y"
-    {
-  ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 570:
-#line 3303 "ircd_parser.y"
-    {
+}
+break;
+case 568:
+#line 3295 "ircd_parser.y"
+{
+  ConfigFileEntry.gline_min_cidr = yyvsp[-1].number;
+}
+break;
+case 569:
+#line 3300 "ircd_parser.y"
+{
+  ConfigFileEntry.gline_min_cidr6 = yyvsp[-1].number;
+}
+break;
+case 570:
+#line 3305 "ircd_parser.y"
+{
   ConfigFileEntry.burst_away = yylval.number;
-;}
-    break;
-
-  case 571:
-#line 3308 "ircd_parser.y"
-    {
+}
+break;
+case 571:
+#line 3310 "ircd_parser.y"
+{
   ConfigFileEntry.use_whois_actually = yylval.number;
-;}
-    break;
-
-  case 572:
-#line 3313 "ircd_parser.y"
-    {
+}
+break;
+case 572:
+#line 3315 "ircd_parser.y"
+{
   GlobalSetOptions.rejecttime = yylval.number;
-;}
-    break;
-
-  case 573:
-#line 3318 "ircd_parser.y"
-    {
+}
+break;
+case 573:
+#line 3320 "ircd_parser.y"
+{
   ConfigFileEntry.tkline_expire_notices = yylval.number;
-;}
-    break;
-
-  case 574:
-#line 3323 "ircd_parser.y"
-    {
-  ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 575:
-#line 3328 "ircd_parser.y"
-    {
+}
+break;
+case 574:
+#line 3325 "ircd_parser.y"
+{
+  ConfigFileEntry.kill_chase_time_limit = yyvsp[-1].number;
+}
+break;
+case 575:
+#line 3330 "ircd_parser.y"
+{
   ConfigFileEntry.hide_spoof_ips = yylval.number;
-;}
-    break;
-
-  case 576:
-#line 3333 "ircd_parser.y"
-    {
+}
+break;
+case 576:
+#line 3335 "ircd_parser.y"
+{
   ConfigFileEntry.ignore_bogus_ts = yylval.number;
-;}
-    break;
-
-  case 577:
-#line 3338 "ircd_parser.y"
-    {
+}
+break;
+case 577:
+#line 3340 "ircd_parser.y"
+{
   ConfigFileEntry.disable_remote = yylval.number;
-;}
-    break;
-
-  case 578:
-#line 3343 "ircd_parser.y"
-    {
+}
+break;
+case 578:
+#line 3345 "ircd_parser.y"
+{
   ConfigFileEntry.failed_oper_notice = yylval.number;
-;}
-    break;
-
-  case 579:
-#line 3348 "ircd_parser.y"
-    {
+}
+break;
+case 579:
+#line 3350 "ircd_parser.y"
+{
   ConfigFileEntry.anti_nick_flood = yylval.number;
-;}
-    break;
-
-  case 580:
-#line 3353 "ircd_parser.y"
-    {
-  ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number); 
-;}
-    break;
-
-  case 581:
-#line 3358 "ircd_parser.y"
-    {
-  ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 582:
-#line 3363 "ircd_parser.y"
-    {
-  ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 583:
-#line 3368 "ircd_parser.y"
-    {
-  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 584:
-#line 3373 "ircd_parser.y"
-    {
-  ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 585:
-#line 3378 "ircd_parser.y"
-    {
+}
+break;
+case 580:
+#line 3355 "ircd_parser.y"
+{
+  ConfigFileEntry.max_nick_time = yyvsp[-1].number; 
+}
+break;
+case 581:
+#line 3360 "ircd_parser.y"
+{
+  ConfigFileEntry.max_nick_changes = yyvsp[-1].number;
+}
+break;
+case 582:
+#line 3365 "ircd_parser.y"
+{
+  ConfigFileEntry.max_accept = yyvsp[-1].number;
+}
+break;
+case 583:
+#line 3370 "ircd_parser.y"
+{
+  ConfigFileEntry.anti_spam_exit_message_time = yyvsp[-1].number;
+}
+break;
+case 584:
+#line 3375 "ircd_parser.y"
+{
+  ConfigFileEntry.ts_warn_delta = yyvsp[-1].number;
+}
+break;
+case 585:
+#line 3380 "ircd_parser.y"
+{
   if (ypass == 2)
-    ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 586:
-#line 3384 "ircd_parser.y"
-    {
-  if (((yyvsp[(3) - (4)].number) > 0) && ypass == 1)
+    ConfigFileEntry.ts_max_delta = yyvsp[-1].number;
+}
+break;
+case 586:
+#line 3386 "ircd_parser.y"
+{
+  if ((yyvsp[-1].number > 0) && ypass == 1)
   {
     ilog(L_CRIT, "You haven't read your config file properly.");
     ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
     ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
     exit(0);
   }
-;}
-    break;
-
-  case 587:
-#line 3395 "ircd_parser.y"
-    {
+}
+break;
+case 587:
+#line 3397 "ircd_parser.y"
+{
   ConfigFileEntry.kline_with_reason = yylval.number;
-;}
-    break;
-
-  case 588:
-#line 3400 "ircd_parser.y"
-    {
+}
+break;
+case 588:
+#line 3402 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ConfigFileEntry.kline_reason);
     DupString(ConfigFileEntry.kline_reason, yylval.string);
   }
-;}
-    break;
-
-  case 589:
-#line 3409 "ircd_parser.y"
-    {
+}
+break;
+case 589:
+#line 3411 "ircd_parser.y"
+{
   ConfigFileEntry.invisible_on_connect = yylval.number;
-;}
-    break;
-
-  case 590:
-#line 3414 "ircd_parser.y"
-    {
+}
+break;
+case 590:
+#line 3416 "ircd_parser.y"
+{
+#ifdef HAVE_LIBCRYPTO
+  ConfigFileEntry.mode_z = yylval.number;
+#endif
+}
+break;
+case 591:
+#line 3423 "ircd_parser.y"
+{
   ConfigFileEntry.warn_no_nline = yylval.number;
-;}
-    break;
-
-  case 591:
-#line 3419 "ircd_parser.y"
-    {
+}
+break;
+case 592:
+#line 3428 "ircd_parser.y"
+{
   ConfigFileEntry.stats_e_disabled = yylval.number;
-;}
-    break;
-
-  case 592:
-#line 3424 "ircd_parser.y"
-    {
+}
+break;
+case 593:
+#line 3433 "ircd_parser.y"
+{
   ConfigFileEntry.stats_o_oper_only = yylval.number;
-;}
-    break;
-
-  case 593:
-#line 3429 "ircd_parser.y"
-    {
+}
+break;
+case 594:
+#line 3438 "ircd_parser.y"
+{
   ConfigFileEntry.stats_P_oper_only = yylval.number;
-;}
-    break;
-
-  case 594:
-#line 3434 "ircd_parser.y"
-    {
+}
+break;
+case 595:
+#line 3443 "ircd_parser.y"
+{
   ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
-;}
-    break;
-
-  case 595:
-#line 3437 "ircd_parser.y"
-    {
+}
+break;
+case 596:
+#line 3446 "ircd_parser.y"
+{
   ConfigFileEntry.stats_k_oper_only = 1;
-;}
-    break;
-
-  case 596:
-#line 3442 "ircd_parser.y"
-    {
+}
+break;
+case 597:
+#line 3451 "ircd_parser.y"
+{
   ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
-;}
-    break;
-
-  case 597:
-#line 3445 "ircd_parser.y"
-    {
+}
+break;
+case 598:
+#line 3454 "ircd_parser.y"
+{
   ConfigFileEntry.stats_i_oper_only = 1;
-;}
-    break;
-
-  case 598:
-#line 3450 "ircd_parser.y"
-    {
-  ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 599:
-#line 3455 "ircd_parser.y"
-    {
-  ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 600:
-#line 3460 "ircd_parser.y"
-    {
+}
+break;
+case 599:
+#line 3459 "ircd_parser.y"
+{
+  ConfigFileEntry.pace_wait = yyvsp[-1].number;
+}
+break;
+case 600:
+#line 3464 "ircd_parser.y"
+{
+  ConfigFileEntry.caller_id_wait = yyvsp[-1].number;
+}
+break;
+case 601:
+#line 3469 "ircd_parser.y"
+{
   ConfigFileEntry.opers_bypass_callerid = yylval.number;
-;}
-    break;
-
-  case 601:
-#line 3465 "ircd_parser.y"
-    {
-  ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 602:
-#line 3470 "ircd_parser.y"
-    {
+}
+break;
+case 602:
+#line 3474 "ircd_parser.y"
+{
+  ConfigFileEntry.pace_wait_simple = yyvsp[-1].number;
+}
+break;
+case 603:
+#line 3479 "ircd_parser.y"
+{
   ConfigFileEntry.short_motd = yylval.number;
-;}
-    break;
-
-  case 603:
-#line 3475 "ircd_parser.y"
-    {
+}
+break;
+case 604:
+#line 3484 "ircd_parser.y"
+{
   ConfigFileEntry.no_oper_flood = yylval.number;
-;}
-    break;
-
-  case 604:
-#line 3480 "ircd_parser.y"
-    {
+}
+break;
+case 605:
+#line 3489 "ircd_parser.y"
+{
   ConfigFileEntry.true_no_oper_flood = yylval.number;
-;}
-    break;
-
-  case 605:
-#line 3485 "ircd_parser.y"
-    {
+}
+break;
+case 606:
+#line 3494 "ircd_parser.y"
+{
   ConfigFileEntry.oper_pass_resv = yylval.number;
-;}
-    break;
-
-  case 606:
-#line 3490 "ircd_parser.y"
-    {
+}
+break;
+case 607:
+#line 3499 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     if (strlen(yylval.string) > LOCALE_LENGTH-2)
@@ -7116,44 +5796,39 @@
 
     set_locale(yylval.string);
   }
-;}
-    break;
-
-  case 607:
-#line 3501 "ircd_parser.y"
-    {
-  ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 608:
-#line 3506 "ircd_parser.y"
-    {
-  ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 609:
-#line 3511 "ircd_parser.y"
-    {
-  ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 610:
-#line 3516 "ircd_parser.y"
-    {
+}
+break;
+case 608:
+#line 3510 "ircd_parser.y"
+{
+  ConfigFileEntry.idletime = yyvsp[-1].number;
+}
+break;
+case 609:
+#line 3515 "ircd_parser.y"
+{
+  ConfigFileEntry.dots_in_ident = yyvsp[-1].number;
+}
+break;
+case 610:
+#line 3520 "ircd_parser.y"
+{
+  ConfigFileEntry.max_targets = yyvsp[-1].number;
+}
+break;
+case 611:
+#line 3525 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ConfigFileEntry.servlink_path);
     DupString(ConfigFileEntry.servlink_path, yylval.string);
   }
-;}
-    break;
-
-  case 611:
-#line 3525 "ircd_parser.y"
-    {
+}
+break;
+case 612:
+#line 3534 "ircd_parser.y"
+{
 #ifdef HAVE_LIBCRYPTO
   if (ypass == 2)
   {
@@ -7182,15 +5857,14 @@
   if (ypass == 2)
     yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
 #endif
-;}
-    break;
-
-  case 612:
-#line 3557 "ircd_parser.y"
-    {
+}
+break;
+case 613:
+#line 3566 "ircd_parser.y"
+{
   if (ypass == 2)
   {
-    ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
+    ConfigFileEntry.compression_level = yyvsp[-1].number;
 #ifndef HAVE_LIBZ
     yyerror("Ignoring compression_level -- no zlib support");
 #else
@@ -7202,384 +5876,331 @@
     }
 #endif
   }
-;}
-    break;
-
-  case 613:
-#line 3575 "ircd_parser.y"
-    {
+}
+break;
+case 614:
+#line 3584 "ircd_parser.y"
+{
   ConfigFileEntry.use_egd = yylval.number;
-;}
-    break;
-
-  case 614:
-#line 3580 "ircd_parser.y"
-    {
+}
+break;
+case 615:
+#line 3589 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ConfigFileEntry.egdpool_path);
     DupString(ConfigFileEntry.egdpool_path, yylval.string);
   }
-;}
-    break;
-
-  case 615:
-#line 3589 "ircd_parser.y"
-    {
+}
+break;
+case 616:
+#line 3598 "ircd_parser.y"
+{
   ConfigFileEntry.ping_cookie = yylval.number;
-;}
-    break;
-
-  case 616:
-#line 3594 "ircd_parser.y"
-    {
+}
+break;
+case 617:
+#line 3603 "ircd_parser.y"
+{
   ConfigFileEntry.disable_auth = yylval.number;
-;}
-    break;
-
-  case 617:
-#line 3599 "ircd_parser.y"
-    {
+}
+break;
+case 618:
+#line 3608 "ircd_parser.y"
+{
   ConfigFileEntry.throttle_time = yylval.number;
-;}
-    break;
-
-  case 618:
-#line 3604 "ircd_parser.y"
-    {
+}
+break;
+case 619:
+#line 3613 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes = 0;
-;}
-    break;
-
-  case 622:
-#line 3610 "ircd_parser.y"
-    {
+}
+break;
+case 623:
+#line 3619 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_BOTS;
-;}
-    break;
-
-  case 623:
-#line 3613 "ircd_parser.y"
-    {
+}
+break;
+case 624:
+#line 3622 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_CCONN;
-;}
-    break;
-
-  case 624:
-#line 3616 "ircd_parser.y"
-    {
+}
+break;
+case 625:
+#line 3625 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
-;}
-    break;
-
-  case 625:
-#line 3619 "ircd_parser.y"
-    {
+}
+break;
+case 626:
+#line 3628 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_DEAF;
-;}
-    break;
-
-  case 626:
-#line 3622 "ircd_parser.y"
-    {
+}
+break;
+case 627:
+#line 3631 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
-;}
-    break;
-
-  case 627:
-#line 3625 "ircd_parser.y"
-    {
+}
+break;
+case 628:
+#line 3634 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_FULL;
-;}
-    break;
-
-  case 628:
-#line 3628 "ircd_parser.y"
-    {
+}
+break;
+case 629:
+#line 3637 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_SKILL;
-;}
-    break;
-
-  case 629:
-#line 3631 "ircd_parser.y"
-    {
+}
+break;
+case 630:
+#line 3640 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
-;}
-    break;
-
-  case 630:
-#line 3634 "ircd_parser.y"
-    {
+}
+break;
+case 631:
+#line 3643 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_REJ;
-;}
-    break;
-
-  case 631:
-#line 3637 "ircd_parser.y"
-    {
+}
+break;
+case 632:
+#line 3646 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
-;}
-    break;
-
-  case 632:
-#line 3640 "ircd_parser.y"
-    {
+}
+break;
+case 633:
+#line 3649 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_SPY;
-;}
-    break;
-
-  case 633:
-#line 3643 "ircd_parser.y"
-    {
+}
+break;
+case 634:
+#line 3652 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
-;}
-    break;
-
-  case 634:
-#line 3646 "ircd_parser.y"
-    {
+}
+break;
+case 635:
+#line 3655 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
-;}
-    break;
-
-  case 635:
-#line 3649 "ircd_parser.y"
-    {
+}
+break;
+case 636:
+#line 3658 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
-;}
-    break;
-
-  case 636:
-#line 3652 "ircd_parser.y"
-    {
+}
+break;
+case 637:
+#line 3661 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
-;}
-    break;
-
-  case 637:
-#line 3655 "ircd_parser.y"
-    {
+}
+break;
+case 638:
+#line 3664 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
-;}
-    break;
-
-  case 638:
-#line 3658 "ircd_parser.y"
-    {
+}
+break;
+case 639:
+#line 3667 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
-;}
-    break;
-
-  case 639:
-#line 3661 "ircd_parser.y"
-    {
+}
+break;
+case 640:
+#line 3670 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
-;}
-    break;
-
-  case 640:
-#line 3664 "ircd_parser.y"
-    {
+}
+break;
+case 641:
+#line 3673 "ircd_parser.y"
+{
   ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
-;}
-    break;
-
-  case 641:
-#line 3669 "ircd_parser.y"
-    {
+}
+break;
+case 642:
+#line 3678 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes = 0;
-;}
-    break;
-
-  case 645:
-#line 3675 "ircd_parser.y"
-    {
+}
+break;
+case 646:
+#line 3684 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
-;}
-    break;
-
-  case 646:
-#line 3678 "ircd_parser.y"
-    {
+}
+break;
+case 647:
+#line 3687 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
-;}
-    break;
-
-  case 647:
-#line 3681 "ircd_parser.y"
-    {
+}
+break;
+case 648:
+#line 3690 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
-;}
-    break;
-
-  case 648:
-#line 3684 "ircd_parser.y"
-    {
+}
+break;
+case 649:
+#line 3693 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
-;}
-    break;
-
-  case 649:
-#line 3687 "ircd_parser.y"
-    {
+}
+break;
+case 650:
+#line 3696 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
-;}
-    break;
-
-  case 650:
-#line 3690 "ircd_parser.y"
-    { 
+}
+break;
+case 651:
+#line 3699 "ircd_parser.y"
+{ 
   ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
-;}
-    break;
-
-  case 651:
-#line 3693 "ircd_parser.y"
-    {
+}
+break;
+case 652:
+#line 3702 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
-;}
-    break;
-
-  case 652:
-#line 3696 "ircd_parser.y"
-    {
+}
+break;
+case 653:
+#line 3705 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
-;}
-    break;
-
-  case 653:
-#line 3699 "ircd_parser.y"
-    {
+}
+break;
+case 654:
+#line 3708 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
-;}
-    break;
-
-  case 654:
-#line 3702 "ircd_parser.y"
-    {
+}
+break;
+case 655:
+#line 3711 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
-;}
-    break;
-
-  case 655:
-#line 3705 "ircd_parser.y"
-    {
+}
+break;
+case 656:
+#line 3714 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
-;}
-    break;
-
-  case 656:
-#line 3708 "ircd_parser.y"
-    {
+}
+break;
+case 657:
+#line 3717 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
-;}
-    break;
-
-  case 657:
-#line 3711 "ircd_parser.y"
-    {
+}
+break;
+case 658:
+#line 3720 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
-;}
-    break;
-
-  case 658:
-#line 3714 "ircd_parser.y"
-    {
+}
+break;
+case 659:
+#line 3723 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
-;}
-    break;
-
-  case 659:
-#line 3717 "ircd_parser.y"
-    {
+}
+break;
+case 660:
+#line 3726 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
-;}
-    break;
-
-  case 660:
-#line 3720 "ircd_parser.y"
-    {
+}
+break;
+case 661:
+#line 3729 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
-;}
-    break;
-
-  case 661:
-#line 3723 "ircd_parser.y"
-    {
+}
+break;
+case 662:
+#line 3732 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
-;}
-    break;
-
-  case 662:
-#line 3726 "ircd_parser.y"
-    {
+}
+break;
+case 663:
+#line 3735 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
-;}
-    break;
-
-  case 663:
-#line 3729 "ircd_parser.y"
-    {
+}
+break;
+case 664:
+#line 3738 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
-;}
-    break;
-
-  case 664:
-#line 3732 "ircd_parser.y"
-    {
+}
+break;
+case 665:
+#line 3741 "ircd_parser.y"
+{
   ConfigFileEntry.oper_only_umodes |= UMODE_SNOOP;
-;}
-    break;
-
-  case 665:
-#line 3737 "ircd_parser.y"
-    {
-  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 666:
-#line 3742 "ircd_parser.y"
-    {
-  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 667:
-#line 3747 "ircd_parser.y"
-    {
-  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 668:
-#line 3752 "ircd_parser.y"
-    {
-  ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 669:
-#line 3757 "ircd_parser.y"
-    {
+}
+break;
+case 666:
+#line 3746 "ircd_parser.y"
+{
+  ConfigFileEntry.min_nonwildcard = yyvsp[-1].number;
+}
+break;
+case 667:
+#line 3751 "ircd_parser.y"
+{
+  ConfigFileEntry.min_nonwildcard_simple = yyvsp[-1].number;
+}
+break;
+case 668:
+#line 3756 "ircd_parser.y"
+{
+  ConfigFileEntry.default_floodcount = yyvsp[-1].number;
+}
+break;
+case 669:
+#line 3761 "ircd_parser.y"
+{
+  ConfigFileEntry.client_flood = yyvsp[-1].number;
+}
+break;
+case 670:
+#line 3766 "ircd_parser.y"
+{
   ConfigFileEntry.dot_in_ip6_addr = yylval.number;
-;}
-    break;
-
-  case 670:
-#line 3765 "ircd_parser.y"
-    {
+}
+break;
+case 671:
+#line 3774 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     yy_conf = make_conf_item(GDENY_TYPE);
     yy_aconf = map_to_conf(yy_conf);
   }
-;}
-    break;
-
-  case 671:
-#line 3772 "ircd_parser.y"
-    {
+}
+break;
+case 672:
+#line 3781 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     /*
@@ -7593,52 +6214,46 @@
       yy_aconf = NULL;
     }
   }
-;}
-    break;
-
-  case 681:
-#line 3798 "ircd_parser.y"
-    {
+}
+break;
+case 682:
+#line 3807 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigFileEntry.glines = yylval.number;
-;}
-    break;
-
-  case 682:
-#line 3804 "ircd_parser.y"
-    {
+}
+break;
+case 683:
+#line 3813 "ircd_parser.y"
+{
   if (ypass == 2)
-    ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 683:
-#line 3810 "ircd_parser.y"
-    {
+    ConfigFileEntry.gline_time = yyvsp[-1].number;
+}
+break;
+case 684:
+#line 3819 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigFileEntry.gline_logging = 0;
-;}
-    break;
-
-  case 687:
-#line 3816 "ircd_parser.y"
-    {
+}
+break;
+case 688:
+#line 3825 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigFileEntry.gline_logging |= GDENY_REJECT;
-;}
-    break;
-
-  case 688:
-#line 3820 "ircd_parser.y"
-    {
+}
+break;
+case 689:
+#line 3829 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigFileEntry.gline_logging |= GDENY_BLOCK;
-;}
-    break;
-
-  case 689:
-#line 3826 "ircd_parser.y"
-    {
+}
+break;
+case 690:
+#line 3835 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct split_nuh_item nuh;
@@ -7669,31 +6284,28 @@
       dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
     }
   }
-;}
-    break;
-
-  case 690:
-#line 3860 "ircd_parser.y"
-    {
+}
+break;
+case 691:
+#line 3869 "ircd_parser.y"
+{
   if (ypass == 2)  
   {
     MyFree(yy_conf->name);
     DupString(yy_conf->name, yylval.string);
   }
-;}
-    break;
-
-  case 691:
-#line 3869 "ircd_parser.y"
-    {
+}
+break;
+case 692:
+#line 3878 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->flags = 0;
-;}
-    break;
-
-  case 692:
-#line 3873 "ircd_parser.y"
-    {
+}
+break;
+case 693:
+#line 3882 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     struct CollectItem *yy_tmp = NULL;
@@ -7736,432 +6348,244 @@
     yy_conf = make_conf_item(GDENY_TYPE);
     yy_aconf = map_to_conf(yy_conf);
   }
-;}
-    break;
-
-  case 695:
-#line 3920 "ircd_parser.y"
-    {
+}
+break;
+case 696:
+#line 3929 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->flags |= GDENY_REJECT;
-;}
-    break;
-
-  case 696:
-#line 3924 "ircd_parser.y"
-    {
+}
+break;
+case 697:
+#line 3933 "ircd_parser.y"
+{
   if (ypass == 2)
     yy_aconf->flags |= GDENY_BLOCK;
-;}
-    break;
-
-  case 719:
-#line 3948 "ircd_parser.y"
-    {
+}
+break;
+case 720:
+#line 3957 "ircd_parser.y"
+{
   ConfigChannel.disable_fake_channels = yylval.number;
-;}
-    break;
-
-  case 720:
-#line 3953 "ircd_parser.y"
-    {
+}
+break;
+case 721:
+#line 3962 "ircd_parser.y"
+{
   ConfigChannel.restrict_channels = yylval.number;
-;}
-    break;
-
-  case 721:
-#line 3958 "ircd_parser.y"
-    {
+}
+break;
+case 722:
+#line 3967 "ircd_parser.y"
+{
   ConfigChannel.disable_local_channels = yylval.number;
-;}
-    break;
-
-  case 722:
-#line 3963 "ircd_parser.y"
-    {
+}
+break;
+case 723:
+#line 3972 "ircd_parser.y"
+{
   ConfigChannel.use_except = yylval.number;
-;}
-    break;
-
-  case 723:
-#line 3968 "ircd_parser.y"
-    {
+}
+break;
+case 724:
+#line 3977 "ircd_parser.y"
+{
   ConfigChannel.use_invex = yylval.number;
-;}
-    break;
-
-  case 724:
-#line 3973 "ircd_parser.y"
-    {
+}
+break;
+case 725:
+#line 3982 "ircd_parser.y"
+{
   ConfigChannel.use_knock = yylval.number;
-;}
-    break;
-
-  case 725:
-#line 3978 "ircd_parser.y"
-    {
-  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 726:
-#line 3983 "ircd_parser.y"
-    {
-  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 727:
-#line 3988 "ircd_parser.y"
-    {
-  ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 728:
-#line 3993 "ircd_parser.y"
-    {
+}
+break;
+case 726:
+#line 3987 "ircd_parser.y"
+{
+  ConfigChannel.knock_delay = yyvsp[-1].number;
+}
+break;
+case 727:
+#line 3992 "ircd_parser.y"
+{
+  ConfigChannel.knock_delay_channel = yyvsp[-1].number;
+}
+break;
+case 728:
+#line 3997 "ircd_parser.y"
+{
+  ConfigChannel.max_chans_per_user = yyvsp[-1].number;
+}
+break;
+case 729:
+#line 4002 "ircd_parser.y"
+{
   ConfigChannel.quiet_on_ban = yylval.number;
-;}
-    break;
-
-  case 729:
-#line 3998 "ircd_parser.y"
-    {
-  ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 730:
-#line 4003 "ircd_parser.y"
-    {
-  ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 731:
-#line 4008 "ircd_parser.y"
-    {
-  ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
-;}
-    break;
-
-  case 732:
-#line 4013 "ircd_parser.y"
-    {
+}
+break;
+case 730:
+#line 4007 "ircd_parser.y"
+{
+  ConfigChannel.max_bans = yyvsp[-1].number;
+}
+break;
+case 731:
+#line 4012 "ircd_parser.y"
+{
+  ConfigChannel.default_split_user_count = yyvsp[-1].number;
+}
+break;
+case 732:
+#line 4017 "ircd_parser.y"
+{
+  ConfigChannel.default_split_server_count = yyvsp[-1].number;
+}
+break;
+case 733:
+#line 4022 "ircd_parser.y"
+{
   ConfigChannel.no_create_on_split = yylval.number;
-;}
-    break;
-
-  case 733:
-#line 4018 "ircd_parser.y"
-    {
+}
+break;
+case 734:
+#line 4027 "ircd_parser.y"
+{
   ConfigChannel.no_join_on_split = yylval.number;
-;}
-    break;
-
-  case 734:
-#line 4023 "ircd_parser.y"
-    {
+}
+break;
+case 735:
+#line 4032 "ircd_parser.y"
+{
   ConfigChannel.burst_topicwho = yylval.number;
-;}
-    break;
-
-  case 735:
-#line 4028 "ircd_parser.y"
-    {
+}
+break;
+case 736:
+#line 4037 "ircd_parser.y"
+{
   GlobalSetOptions.joinfloodcount = yylval.number;
-;}
-    break;
-
-  case 736:
-#line 4033 "ircd_parser.y"
-    {
+}
+break;
+case 737:
+#line 4042 "ircd_parser.y"
+{
   GlobalSetOptions.joinfloodtime = yylval.number;
-;}
-    break;
-
-  case 748:
-#line 4052 "ircd_parser.y"
-    {
+}
+break;
+case 749:
+#line 4061 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigServerHide.flatten_links = yylval.number;
-;}
-    break;
-
-  case 749:
-#line 4058 "ircd_parser.y"
-    {
+}
+break;
+case 750:
+#line 4067 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigServerHide.hide_servers = yylval.number;
-;}
-    break;
-
-  case 750:
-#line 4064 "ircd_parser.y"
-    {
+}
+break;
+case 751:
+#line 4073 "ircd_parser.y"
+{
   if (ypass == 2)
   {
     MyFree(ConfigServerHide.hidden_name);
     DupString(ConfigServerHide.hidden_name, yylval.string);
   }
-;}
-    break;
-
-  case 751:
-#line 4073 "ircd_parser.y"
-    {
+}
+break;
+case 752:
+#line 4082 "ircd_parser.y"
+{
   if (ypass == 2)
   {
-    if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
+    if ((yyvsp[-1].number > 0) && ConfigServerHide.links_disabled == 1)
     {
-      eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
+      eventAddIsh("write_links_file", write_links_file, NULL, yyvsp[-1].number);
       ConfigServerHide.links_disabled = 0;
     }
 
-    ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
+    ConfigServerHide.links_delay = yyvsp[-1].number;
   }
-;}
-    break;
-
-  case 752:
-#line 4087 "ircd_parser.y"
-    {
+}
+break;
+case 753:
+#line 4096 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigServerHide.hidden = yylval.number;
-;}
-    break;
-
-  case 753:
-#line 4093 "ircd_parser.y"
-    {
+}
+break;
+case 754:
+#line 4102 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigServerHide.disable_hidden = yylval.number;
-;}
-    break;
-
-  case 754:
-#line 4099 "ircd_parser.y"
-    {
+}
+break;
+case 755:
+#line 4108 "ircd_parser.y"
+{
   if (ypass == 2)
     ConfigServerHide.hide_server_ips = yylval.number;
-;}
-    break;
-
-
-/* Line 1267 of yacc.c.  */
-#line 7954 "y.tab.c"
-      default: break;
+}
+break;
+#line 6536 "y.tab.c"
     }
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-
-  *++yyvsp = yyval;
-
-
-  /* Now `shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
-
-  goto yynewstate;
-
-
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
-yyerrlab:
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
+    yyssp -= yym;
+    yystate = *yyssp;
+    yyvsp -= yym;
+    yym = yylhs[yyn];
+    if (yystate == 0 && yym == 0)
     {
-      ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (YY_("syntax error"));
-#else
-      {
-	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
-	  {
-	    YYSIZE_T yyalloc = 2 * yysize;
-	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
-	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
-	    if (yymsg != yymsgbuf)
-	      YYSTACK_FREE (yymsg);
-	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
-	    if (yymsg)
-	      yymsg_alloc = yyalloc;
-	    else
-	      {
-		yymsg = yymsgbuf;
-		yymsg_alloc = sizeof yymsgbuf;
-	      }
-	  }
-
-	if (0 < yysize && yysize <= yymsg_alloc)
-	  {
-	    (void) yysyntax_error (yymsg, yystate, yychar);
-	    yyerror (yymsg);
-	  }
-	else
-	  {
-	    yyerror (YY_("syntax error"));
-	    if (yysize != 0)
-	      goto yyexhaustedlab;
-	  }
-      }
+#if YYDEBUG
+        if (yydebug)
+            printf("%sdebug: after reduction, shifting from state 0 to\
+ state %d\n", YYPREFIX, YYFINAL);
 #endif
+        yystate = YYFINAL;
+        *++yyssp = YYFINAL;
+        *++yyvsp = yyval;
+        if (yychar < 0)
+        {
+            if ((yychar = yylex()) < 0) yychar = 0;
+#if YYDEBUG
+            if (yydebug)
+            {
+                yys = 0;
+                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
+                if (!yys) yys = "illegal-symbol";
+                printf("%sdebug: state %d, reading %d (%s)\n",
+                        YYPREFIX, YYFINAL, yychar, yys);
+            }
+#endif
+        }
+        if (yychar == 0) goto yyaccept;
+        goto yyloop;
     }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse look-ahead token after an
-	 error, discard it.  */
-
-      if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
-      else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
-    }
-
-  /* Else will try to reuse look-ahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
-
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (yyn != YYPACT_NINF)
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-	YYABORT;
-
-
-      yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
-    }
-
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
-  *++yyvsp = yylval;
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-#ifndef yyoverflow
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
+    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
+            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
+        yystate = yytable[yyn];
+    else
+        yystate = yydgoto[yym];
+#if YYDEBUG
+    if (yydebug)
+        printf("%sdebug: after reduction, shifting from state %d \
+to state %d\n", YYPREFIX, *yyssp, yystate);
 #endif
-
-yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
-     yydestruct ("Cleanup: discarding lookahead",
-		 yytoken, &yylval);
-  /* Do not reclaim the symbols of the rule which action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
+    if (yyssp >= yysslim && yygrowstack())
     {
-      yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
-      YYPOPSTACK (1);
+        goto yyoverflow;
     }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+    *++yyssp = yystate;
+    *++yyvsp = yyval;
+    goto yyloop;
+yyoverflow:
+    yyerror("yacc stack overflow");
+yyabort:
+    return (1);
+yyaccept:
+    return (0);
 }
-
-
-
Index: src/y.tab.h
===================================================================
--- src/y.tab.h	(.../1.0.2)	(revision 297)
+++ src/y.tab.h	(.../1.0.4)	(revision 297)
@@ -1,425 +1,126 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
-
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
-
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
-
-/* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     ACCEPT_PASSWORD = 258,
-     ACTION = 259,
-     ADMIN = 260,
-     AFTYPE = 261,
-     T_ALLOW = 262,
-     ANTI_NICK_FLOOD = 263,
-     ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
-     AUTOCONN = 265,
-     T_BLOCK = 266,
-     BURST_AWAY = 267,
-     BURST_TOPICWHO = 268,
-     BYTES = 269,
-     KBYTES = 270,
-     MBYTES = 271,
-     GBYTES = 272,
-     TBYTES = 273,
-     CALLER_ID_WAIT = 274,
-     CAN_FLOOD = 275,
-     CAN_IDLE = 276,
-     CHANNEL = 277,
-     CIDR_BITLEN_IPV4 = 278,
-     CIDR_BITLEN_IPV6 = 279,
-     CIPHER_PREFERENCE = 280,
-     CLASS = 281,
-     COMPRESSED = 282,
-     COMPRESSION_LEVEL = 283,
-     CONNECT = 284,
-     CONNECTFREQ = 285,
-     CRYPTLINK = 286,
-     DEFAULT_CIPHER_PREFERENCE = 287,
-     DEFAULT_FLOODCOUNT = 288,
-     DEFAULT_SPLIT_SERVER_COUNT = 289,
-     DEFAULT_SPLIT_USER_COUNT = 290,
-     DENY = 291,
-     DESCRIPTION = 292,
-     DIE = 293,
-     DISABLE_AUTH = 294,
-     DISABLE_FAKE_CHANNELS = 295,
-     DISABLE_HIDDEN = 296,
-     DISABLE_LOCAL_CHANNELS = 297,
-     DISABLE_REMOTE_COMMANDS = 298,
-     DOT_IN_IP6_ADDR = 299,
-     DOTS_IN_IDENT = 300,
-     DURATION = 301,
-     EGDPOOL_PATH = 302,
-     EMAIL = 303,
-     ENABLE = 304,
-     ENCRYPTED = 305,
-     EXCEED_LIMIT = 306,
-     EXEMPT = 307,
-     FAILED_OPER_NOTICE = 308,
-     FAKENAME = 309,
-     IRCD_FLAGS = 310,
-     FLATTEN_LINKS = 311,
-     FFAILED_OPERLOG = 312,
-     FKILLLOG = 313,
-     FKLINELOG = 314,
-     FGLINELOG = 315,
-     FIOERRLOG = 316,
-     FOPERLOG = 317,
-     FOPERSPYLOG = 318,
-     FUSERLOG = 319,
-     GECOS = 320,
-     GENERAL = 321,
-     GLINE = 322,
-     GLINES = 323,
-     GLINE_EXEMPT = 324,
-     GLINE_LOG = 325,
-     GLINE_TIME = 326,
-     GLINE_MIN_CIDR = 327,
-     GLINE_MIN_CIDR6 = 328,
-     GLOBAL_KILL = 329,
-     IRCD_AUTH = 330,
-     NEED_IDENT = 331,
-     HAVENT_READ_CONF = 332,
-     HELP_CHANNEL = 333,
-     HIDDEN = 334,
-     HIDDEN_ADMIN = 335,
-     HIDDEN_NAME = 336,
-     HIDDEN_OPER = 337,
-     HIDE_SERVER_IPS = 338,
-     HIDE_SERVERS = 339,
-     HIDE_SPOOF_IPS = 340,
-     HOST = 341,
-     HUB = 342,
-     HUB_MASK = 343,
-     IDLETIME = 344,
-     IGNORE_BOGUS_TS = 345,
-     INVISIBLE_ON_CONNECT = 346,
-     IP = 347,
-     KILL = 348,
-     KILL_CHASE_TIME_LIMIT = 349,
-     KLINE = 350,
-     KLINE_EXEMPT = 351,
-     KLINE_REASON = 352,
-     KLINE_WITH_REASON = 353,
-     KNOCK_DELAY = 354,
-     KNOCK_DELAY_CHANNEL = 355,
-     LAZYLINK = 356,
-     LEAF_MASK = 357,
-     LINKS_DELAY = 358,
-     LISTEN = 359,
-     T_LOG = 360,
-     LOGGING = 361,
-     LOG_LEVEL = 362,
-     MAX_ACCEPT = 363,
-     MAX_BANS = 364,
-     MAX_CHANS_PER_USER = 365,
-     MAX_GLOBAL = 366,
-     MAX_IDENT = 367,
-     MAX_LOCAL = 368,
-     MAX_NICK_CHANGES = 369,
-     MAX_NICK_TIME = 370,
-     MAX_NUMBER = 371,
-     MAX_TARGETS = 372,
-     MESSAGE_LOCALE = 373,
-     MIN_NONWILDCARD = 374,
-     MIN_NONWILDCARD_SIMPLE = 375,
-     MODULE = 376,
-     MODULES = 377,
-     NAME = 378,
-     NEED_PASSWORD = 379,
-     NETWORK_DESC = 380,
-     NETWORK_NAME = 381,
-     NICK = 382,
-     NICK_CHANGES = 383,
-     NO_CREATE_ON_SPLIT = 384,
-     NO_JOIN_ON_SPLIT = 385,
-     NO_OPER_FLOOD = 386,
-     NO_TILDE = 387,
-     NOT = 388,
-     NUMBER = 389,
-     NUMBER_PER_IDENT = 390,
-     NUMBER_PER_CIDR = 391,
-     NUMBER_PER_IP = 392,
-     NUMBER_PER_IP_GLOBAL = 393,
-     OPERATOR = 394,
-     OPERS_BYPASS_CALLERID = 395,
-     OPER_LOG = 396,
-     OPER_ONLY_UMODES = 397,
-     OPER_PASS_RESV = 398,
-     OPER_SPY_T = 399,
-     OPER_UMODES = 400,
-     JOIN_FLOOD_COUNT = 401,
-     JOIN_FLOOD_TIME = 402,
-     PACE_WAIT = 403,
-     PACE_WAIT_SIMPLE = 404,
-     PASSWORD = 405,
-     PATH = 406,
-     PING_COOKIE = 407,
-     PING_TIME = 408,
-     PING_WARNING = 409,
-     PORT = 410,
-     QSTRING = 411,
-     QUIET_ON_BAN = 412,
-     REASON = 413,
-     REDIRPORT = 414,
-     REDIRSERV = 415,
-     REGEX_T = 416,
-     REHASH = 417,
-     TREJECT_HOLD_TIME = 418,
-     REMOTE = 419,
-     REMOTEBAN = 420,
-     RESTRICT_CHANNELS = 421,
-     RESTRICTED = 422,
-     RSA_PRIVATE_KEY_FILE = 423,
-     RSA_PUBLIC_KEY_FILE = 424,
-     SSL_CERTIFICATE_FILE = 425,
-     RESV = 426,
-     RESV_EXEMPT = 427,
-     SECONDS = 428,
-     MINUTES = 429,
-     HOURS = 430,
-     DAYS = 431,
-     WEEKS = 432,
-     SENDQ = 433,
-     SEND_PASSWORD = 434,
-     SERVERHIDE = 435,
-     SERVERINFO = 436,
-     SERVLINK_PATH = 437,
-     SERVICES_NAME = 438,
-     IRCD_SID = 439,
-     TKLINE_EXPIRE_NOTICES = 440,
-     T_SHARED = 441,
-     T_CLUSTER = 442,
-     T_SNOOP = 443,
-     TYPE = 444,
-     SHORT_MOTD = 445,
-     SILENT = 446,
-     SPOOF = 447,
-     SPOOF_NOTICE = 448,
-     STATS_E_DISABLED = 449,
-     STATS_I_OPER_ONLY = 450,
-     STATS_K_OPER_ONLY = 451,
-     STATS_O_OPER_ONLY = 452,
-     STATS_P_OPER_ONLY = 453,
-     TBOOL = 454,
-     TMASKED = 455,
-     T_REJECT = 456,
-     TS_MAX_DELTA = 457,
-     TS_WARN_DELTA = 458,
-     TWODOTS = 459,
-     T_ALL = 460,
-     T_BOTS = 461,
-     T_SOFTCALLERID = 462,
-     T_CALLERID = 463,
-     T_CCONN = 464,
-     T_CCONN_FULL = 465,
-     T_CLIENT_FLOOD = 466,
-     T_DEAF = 467,
-     T_DEBUG = 468,
-     T_DRONE = 469,
-     T_EXTERNAL = 470,
-     T_FULL = 471,
-     T_INVISIBLE = 472,
-     T_IPV4 = 473,
-     T_IPV6 = 474,
-     T_LOCOPS = 475,
-     T_LOGPATH = 476,
-     T_L_CRIT = 477,
-     T_L_DEBUG = 478,
-     T_L_ERROR = 479,
-     T_L_INFO = 480,
-     T_L_NOTICE = 481,
-     T_L_TRACE = 482,
-     T_L_WARN = 483,
-     T_MAX_CLIENTS = 484,
-     T_NCHANGE = 485,
-     T_OPERWALL = 486,
-     T_REJ = 487,
-     T_SERVNOTICE = 488,
-     T_SKILL = 489,
-     T_SPY = 490,
-     T_SSL = 491,
-     T_UMODES = 492,
-     T_UNAUTH = 493,
-     T_UNRESV = 494,
-     T_UNXLINE = 495,
-     T_WALLOP = 496,
-     THROTTLE_TIME = 497,
-     TOPICBURST = 498,
-     TRUE_NO_OPER_FLOOD = 499,
-     TKLINE = 500,
-     TXLINE = 501,
-     TRESV = 502,
-     UNKLINE = 503,
-     USER = 504,
-     T_USERMODE = 505,
-     USE_EGD = 506,
-     USE_EXCEPT = 507,
-     USE_INVEX = 508,
-     USE_KNOCK = 509,
-     USE_LOGGING = 510,
-     USE_WHOIS_ACTUALLY = 511,
-     VHOST = 512,
-     VHOST6 = 513,
-     XLINE = 514,
-     WARN = 515,
-     WARN_NO_NLINE = 516,
-     WEBIRC = 517
-   };
+#ifndef YYERRCODE
+#define YYERRCODE 256
 #endif
-/* Tokens.  */
-#define ACCEPT_PASSWORD 258
-#define ACTION 259
-#define ADMIN 260
-#define AFTYPE 261
-#define T_ALLOW 262
-#define ANTI_NICK_FLOOD 263
-#define ANTI_SPAM_EXIT_MESSAGE_TIME 264
-#define AUTOCONN 265
-#define T_BLOCK 266
-#define BURST_AWAY 267
-#define BURST_TOPICWHO 268
-#define BYTES 269
-#define KBYTES 270
-#define MBYTES 271
-#define GBYTES 272
-#define TBYTES 273
-#define CALLER_ID_WAIT 274
-#define CAN_FLOOD 275
-#define CAN_IDLE 276
-#define CHANNEL 277
-#define CIDR_BITLEN_IPV4 278
-#define CIDR_BITLEN_IPV6 279
-#define CIPHER_PREFERENCE 280
-#define CLASS 281
-#define COMPRESSED 282
-#define COMPRESSION_LEVEL 283
-#define CONNECT 284
-#define CONNECTFREQ 285
-#define CRYPTLINK 286
-#define DEFAULT_CIPHER_PREFERENCE 287
-#define DEFAULT_FLOODCOUNT 288
-#define DEFAULT_SPLIT_SERVER_COUNT 289
-#define DEFAULT_SPLIT_USER_COUNT 290
-#define DENY 291
-#define DESCRIPTION 292
-#define DIE 293
-#define DISABLE_AUTH 294
-#define DISABLE_FAKE_CHANNELS 295
-#define DISABLE_HIDDEN 296
-#define DISABLE_LOCAL_CHANNELS 297
-#define DISABLE_REMOTE_COMMANDS 298
-#define DOT_IN_IP6_ADDR 299
-#define DOTS_IN_IDENT 300
-#define DURATION 301
-#define EGDPOOL_PATH 302
-#define EMAIL 303
-#define ENABLE 304
-#define ENCRYPTED 305
-#define EXCEED_LIMIT 306
-#define EXEMPT 307
-#define FAILED_OPER_NOTICE 308
-#define FAKENAME 309
-#define IRCD_FLAGS 310
-#define FLATTEN_LINKS 311
-#define FFAILED_OPERLOG 312
-#define FKILLLOG 313
-#define FKLINELOG 314
-#define FGLINELOG 315
-#define FIOERRLOG 316
-#define FOPERLOG 317
-#define FOPERSPYLOG 318
-#define FUSERLOG 319
-#define GECOS 320
-#define GENERAL 321
-#define GLINE 322
-#define GLINES 323
-#define GLINE_EXEMPT 324
-#define GLINE_LOG 325
-#define GLINE_TIME 326
-#define GLINE_MIN_CIDR 327
-#define GLINE_MIN_CIDR6 328
-#define GLOBAL_KILL 329
-#define IRCD_AUTH 330
-#define NEED_IDENT 331
-#define HAVENT_READ_CONF 332
-#define HELP_CHANNEL 333
-#define HIDDEN 334
-#define HIDDEN_ADMIN 335
-#define HIDDEN_NAME 336
-#define HIDDEN_OPER 337
-#define HIDE_SERVER_IPS 338
-#define HIDE_SERVERS 339
-#define HIDE_SPOOF_IPS 340
-#define HOST 341
-#define HUB 342
-#define HUB_MASK 343
-#define IDLETIME 344
-#define IGNORE_BOGUS_TS 345
-#define INVISIBLE_ON_CONNECT 346
-#define IP 347
-#define KILL 348
-#define KILL_CHASE_TIME_LIMIT 349
-#define KLINE 350
-#define KLINE_EXEMPT 351
-#define KLINE_REASON 352
-#define KLINE_WITH_REASON 353
-#define KNOCK_DELAY 354
-#define KNOCK_DELAY_CHANNEL 355
-#define LAZYLINK 356
-#define LEAF_MASK 357
-#define LINKS_DELAY 358
-#define LISTEN 359
-#define T_LOG 360
-#define LOGGING 361
-#define LOG_LEVEL 362
-#define MAX_ACCEPT 363
-#define MAX_BANS 364
-#define MAX_CHANS_PER_USER 365
-#define MAX_GLOBAL 366
-#define MAX_IDENT 367
-#define MAX_LOCAL 368
-#define MAX_NICK_CHANGES 369
-#define MAX_NICK_TIME 370
-#define MAX_NUMBER 371
-#define MAX_TARGETS 372
-#define MESSAGE_LOCALE 373
-#define MIN_NONWILDCARD 374
-#define MIN_NONWILDCARD_SIMPLE 375
+
+#define ACCEPT_PASSWORD 257
+#define ACTION 258
+#define ADMIN 259
+#define AFTYPE 260
+#define T_ALLOW 261
+#define ANTI_NICK_FLOOD 262
+#define ANTI_SPAM_EXIT_MESSAGE_TIME 263
+#define AUTOCONN 264
+#define T_BLOCK 265
+#define BURST_AWAY 266
+#define BURST_TOPICWHO 267
+#define BYTES 268
+#define KBYTES 269
+#define MBYTES 270
+#define GBYTES 271
+#define TBYTES 272
+#define CALLER_ID_WAIT 273
+#define CAN_FLOOD 274
+#define CAN_IDLE 275
+#define CHANNEL 276
+#define CIDR_BITLEN_IPV4 277
+#define CIDR_BITLEN_IPV6 278
+#define CIPHER_PREFERENCE 279
+#define CLASS 280
+#define COMPRESSED 281
+#define COMPRESSION_LEVEL 282
+#define CONNECT 283
+#define CONNECTFREQ 284
+#define CRYPTLINK 285
+#define DEFAULT_CIPHER_PREFERENCE 286
+#define DEFAULT_FLOODCOUNT 287
+#define DEFAULT_SPLIT_SERVER_COUNT 288
+#define DEFAULT_SPLIT_USER_COUNT 289
+#define DENY 290
+#define DESCRIPTION 291
+#define DIE 292
+#define DISABLE_AUTH 293
+#define DISABLE_FAKE_CHANNELS 294
+#define DISABLE_HIDDEN 295
+#define DISABLE_LOCAL_CHANNELS 296
+#define DISABLE_REMOTE_COMMANDS 297
+#define DOT_IN_IP6_ADDR 298
+#define DOTS_IN_IDENT 299
+#define DURATION 300
+#define EGDPOOL_PATH 301
+#define EMAIL 302
+#define ENABLE 303
+#define ENCRYPTED 304
+#define EXCEED_LIMIT 305
+#define EXEMPT 306
+#define FAILED_OPER_NOTICE 307
+#define FAKENAME 308
+#define IRCD_FLAGS 309
+#define FLATTEN_LINKS 310
+#define FFAILED_OPERLOG 311
+#define FKILLLOG 312
+#define FKLINELOG 313
+#define FGLINELOG 314
+#define FIOERRLOG 315
+#define FOPERLOG 316
+#define FOPERSPYLOG 317
+#define FUSERLOG 318
+#define GECOS 319
+#define GENERAL 320
+#define GLINE 321
+#define GLINES 322
+#define GLINE_EXEMPT 323
+#define GLINE_LOG 324
+#define GLINE_TIME 325
+#define GLINE_MIN_CIDR 326
+#define GLINE_MIN_CIDR6 327
+#define GLOBAL_KILL 328
+#define IRCD_AUTH 329
+#define NEED_IDENT 330
+#define HAVENT_READ_CONF 331
+#define HELP_CHANNEL 332
+#define HIDDEN 333
+#define HIDDEN_ADMIN 334
+#define HIDDEN_NAME 335
+#define HIDDEN_OPER 336
+#define HIDE_SERVER_IPS 337
+#define HIDE_SERVERS 338
+#define HIDE_SPOOF_IPS 339
+#define HOST 340
+#define HUB 341
+#define HUB_MASK 342
+#define IDLETIME 343
+#define IGNORE_BOGUS_TS 344
+#define INVISIBLE_ON_CONNECT 345
+#define IP 346
+#define KILL 347
+#define KILL_CHASE_TIME_LIMIT 348
+#define KLINE 349
+#define KLINE_EXEMPT 350
+#define KLINE_REASON 351
+#define KLINE_WITH_REASON 352
+#define KNOCK_DELAY 353
+#define KNOCK_DELAY_CHANNEL 354
+#define LAZYLINK 355
+#define LEAF_MASK 356
+#define LINKS_DELAY 357
+#define LISTEN 358
+#define T_LOG 359
+#define LOGGING 360
+#define LOG_LEVEL 361
+#define MAX_ACCEPT 362
+#define MAX_BANS 363
+#define MAX_CHANS_PER_USER 364
+#define MAX_GLOBAL 365
+#define MAX_IDENT 366
+#define MAX_LOCAL 367
+#define MAX_NICK_CHANGES 368
+#define MAX_NICK_TIME 369
+#define MAX_NUMBER 370
+#define MAX_TARGETS 371
+#define MESSAGE_LOCALE 372
+#define MIN_NONWILDCARD 373
+#define MIN_NONWILDCARD_SIMPLE 374
+#define MODE_Z 375
 #define MODULE 376
 #define MODULES 377
 #define NAME 378
@@ -562,24 +263,8 @@
 #define WARN 515
 #define WARN_NO_NLINE 516
 #define WEBIRC 517
-
-
-
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
-#line 134 "ircd_parser.y"
-{
+typedef union {
   int number;
   char *string;
-}
-/* Line 1529 of yacc.c.  */
-#line 578 "y.tab.h"
-	YYSTYPE;
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
-#endif
-
+} YYSTYPE;
 extern YYSTYPE yylval;
-
Index: src/lex.yy.c
===================================================================
--- src/lex.yy.c	(.../1.0.2)	(revision 297)
+++ src/lex.yy.c	(.../1.0.4)	(revision 297)
@@ -293,29 +293,29 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 294
-#define YY_END_OF_BUFFER 295
-static yyconst short int yy_accept[1894] =
+#define YY_NUM_RULES 295
+#define YY_END_OF_BUFFER 296
+static yyconst short int yy_accept[1897] =
     {   0,
-        4,    4,  295,  293,    4,    3,  293,    5,  293,  293,
-        6,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,  293,  293,  293,  293,
-      293,  293,  293,  293,  293,  293,    8,    4,    3,    0,
-        7,    5,  292,    0,    2,    5,    6,    0,    0,    0,
+        4,    4,  296,  294,    4,    3,  294,    5,  294,  294,
+        6,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,    8,    4,    3,    0,
+        7,    5,  293,    0,    2,    5,    6,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  286,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   99,    0,  276,    0,    0,
+        0,    0,    0,  287,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   99,    0,  277,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  281,    0,    0,
-        0,    0,    0,    0,    0,  137,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  282,    0,    0,
+        0,    0,    0,    0,    0,  138,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  291,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  292,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,   14,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  263,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  264,    0,    0,    0,    0,    0,
        43,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
@@ -325,186 +325,186 @@
         0,    0,    0,    0,    0,    0,    0,  119,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  247,    0,    0,    0,    0,    0,
-        0,    0,    0,  180,    0,    0,    0,    0,    0,  249,
-      170,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  248,    0,    0,    0,    0,    0,
+        0,    0,    0,  181,    0,    0,    0,    0,    0,  250,
+      171,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,  207,    0,    0,    0,    0,    0,
-        0,    0,   16,    0,    0,  239,    0,  271,    0,    0,
+        0,    0,    0,    0,  208,    0,    0,    0,    0,    0,
+        0,    0,   16,    0,    0,  240,    0,  272,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      262,  242,    0,    0,   41,    0,    0,    0,    0,    0,
+      263,  243,    0,    0,   41,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  244,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  245,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   93,  265,    0,    0,    0,    0,  100,  101,    0,
+        0,   93,  266,    0,    0,    0,    0,  100,  101,    0,
         0,  104,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  131,    0,
-        0,    0,  135,    0,    0,    0,    0,    0,  144,    0,
-        0,  233,    0,  153,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  166,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  132,
+        0,    0,    0,  136,    0,    0,    0,    0,    0,  145,
+        0,    0,  234,    0,  154,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  167,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  186,    0,    0,
-        0,    0,    0,    0,  197,    0,    0,  204,    0,  261,
-        0,    0,    0,    0,   11,    0,   15,    0,    0,   18,
-        0,  270,    0,    0,    0,  240,    0,    0,    0,   29,
-        0,    0,    0,    0,    0,  243,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  187,    0,
+        0,    0,    0,    0,    0,  198,    0,    0,  205,    0,
+      262,    0,    0,    0,    0,   11,    0,   15,    0,    0,
+       18,    0,  271,    0,    0,    0,  241,    0,    0,    0,
+       29,    0,    0,    0,    0,    0,  244,    0,    0,    0,
 
-        0,  257,    0,    0,   53,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   59,    0,    0,
-        0,    0,  285,   74,    0,    0,   76,    0,    0,    0,
-        0,    0,    0,  264,    0,    0,    0,    0,    0,  275,
-        0,    0,  106,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  258,    0,    0,   53,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   59,    0,
+        0,    0,    0,  286,   74,    0,    0,   76,    0,    0,
+        0,    0,    0,    0,  265,    0,    0,    0,    0,    0,
+      276,    0,    0,  106,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  280,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  281,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  159,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  160,    0,    0,    0,
 
-        0,    0,    0,  173,    0,    0,    0,    0,    0,    0,
-        0,  245,  182,    0,  183,    0,    0,  290,    0,    0,
-        0,    0,  201,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  202,    0,
-        0,    0,  260,  206,    0,    0,   10,    0,   13,    0,
+        0,    0,    0,    0,    0,  174,    0,    0,    0,    0,
+        0,    0,    0,  246,  183,    0,  184,    0,    0,  291,
+        0,    0,    0,    0,  202,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      203,    0,    0,    0,  261,  207,    0,    0,   10,    0,
+       13,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   54,    0,    0,   57,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  284,    0,
-        0,    0,   77,    0,    0,    0,    0,   86,    0,    0,
+        0,    0,    0,    0,   54,    0,    0,   57,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      285,    0,    0,    0,   77,    0,    0,    0,    0,   86,
 
-        0,    0,    0,    0,  274,    0,    0,    0,    0,  108,
-        0,    0,  111,    0,    0,  114,    0,    0,    0,  117,
-      258,    0,    0,    0,  122,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  279,    0,    0,    0,  267,
-      232,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  148,
-        0,    0,    0,    0,    0,    0,  156,    0,    0,  160,
-      161,  163,    0,    0,    0,    0,  269,    0,    0,    0,
-        0,    0,  178,    0,  181,    0,    0,    0,    0,  289,
-        0,    0,  199,    0,    0,    0,    0,  200,  188,  248,
+        0,    0,    0,    0,    0,    0,  275,    0,    0,    0,
+        0,  108,    0,    0,  111,    0,    0,  114,    0,    0,
+        0,  117,  259,    0,    0,    0,  122,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  280,    0,    0,
+        0,  268,  131,  233,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  149,    0,    0,    0,    0,    0,    0,  157,
+        0,    0,  161,  162,  164,    0,    0,    0,    0,  270,
+        0,    0,    0,    0,    0,  179,    0,  182,    0,    0,
+        0,    0,  290,    0,    0,  200,    0,    0,    0,    0,
 
-        0,  236,    0,    0,    0,    0,    0,    0,    0,    0,
-      203,  254,    0,  205,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   25,    0,    0,
-        0,   31,    0,   34,    0,    0,    0,    0,    0,    0,
+      201,  189,  249,    0,  237,    0,    0,    0,    0,    0,
+        0,    0,    0,  204,  255,    0,  206,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       25,    0,    0,    0,   31,    0,   34,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       75,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  109,  110,    0,  113,    0,    0,    0,    0,
-      120,  121,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   75,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  109,  110,    0,  113,    0,
+        0,    0,    0,  120,  121,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,  266,  231,  246,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  267,  232,
+      247,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  268,
+        0,    0,  269,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  190,  236,  191,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  189,  235,  190,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   17,    0,    0,
-        0,  255,    0,   22,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   51,    0,    0,    0,
+       17,    0,    0,    0,  256,    0,   22,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   51,
 
-      250,    0,   58,    0,    0,    0,   63,    0,    0,    0,
-        0,    0,    0,    0,    0,   71,   73,  283,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
-       96,    0,    0,    0,    0,  273,    0,    0,    0,    0,
-      112,  115,    0,    0,    0,    0,  230,    0,    0,    0,
-        0,    0,    0,    0,    0,  278,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  141,    0,  145,    0,    0,
-        0,  147,    0,  251,    0,  149,    0,    0,    0,    0,
+        0,    0,    0,  251,    0,   58,    0,    0,    0,   63,
+        0,    0,    0,    0,    0,    0,    0,    0,   71,   73,
+      284,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   95,   96,    0,    0,    0,    0,  274,    0,
+        0,    0,    0,  112,  115,    0,    0,    0,    0,  231,
+        0,    0,    0,    0,    0,    0,    0,    0,  279,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  142,    0,
+      146,    0,    0,    0,  148,    0,  252,    0,  150,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,  288,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  198,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   21,    0,
-        0,    0,    0,    0,    0,    0,   36,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   55,
-        0,    0,    0,   61,   64,   67,    0,    0,    0,    0,
-        0,    0,    0,  282,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  253,    0,    0,  272,
-        0,    0,    0,    0,  116,    0,  118,    0,    0,    0,
-        0,  124,  125,    0,    0,    0,  277,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  289,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  199,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   21,    0,    0,    0,    0,    0,    0,    0,   36,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   55,    0,    0,    0,   61,   64,   67,    0,
+        0,    0,    0,    0,    0,    0,  283,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  254,
+        0,    0,  273,    0,    0,    0,    0,  116,    0,  118,
+        0,    0,    0,    0,  124,  125,    0,    0,    0,  278,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  226,    0,  151,    0,    0,    0,  157,  158,
-        0,  164,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  227,    0,  152,    0,    0,
+        0,  158,  159,    0,  165,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  287,    0,    0,    0,    0,    0,    0,    0,  192,
-      193,    0,    0,    0,    0,    1,    0,    1,    0,    0,
-        0,    0,   19,    0,    0,  241,    0,    0,    0,   32,
+        0,    0,    0,    0,  288,    0,    0,    0,    0,    0,
+        0,    0,  193,  194,    0,    0,    0,    0,    1,    0,
+        1,    0,    0,    0,    0,   19,    0,    0,  242,    0,
+        0,    0,   32,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   82,    0,    0,
 
+       82,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  210,    0,    0,
+      126,    0,    0,  127,    0,    0,    0,   83,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  209,    0,    0,  126,    0,    0,
-      127,    0,    0,    0,   83,    0,    0,    0,    0,    0,
+        0,    0,    0,  155,    0,    0,    0,    0,    0,    0,
+        0,  175,  176,    0,    0,  253,  180,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  260,    0,    0,
+        0,  192,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   35,    0,    0,    0,   42,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      154,    0,    0,    0,    0,    0,    0,    0,  174,  175,
-        0,    0,  252,  179,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  259,    0,    0,    0,  191,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   35,    0,    0,    0,   42,    0,    0,    0,
+       81,    0,    0,    0,   88,   89,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  229,  218,    0,  123,    0,
+        0,  235,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  239,    0,    0,  151,    0,    0,
+        0,    0,  168,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  195,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   30,    0,    0,    0,    0,   44,    0,    0,
+        0,    0,    0,    0,   52,   56,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,   81,    0,    0,
-        0,   88,   89,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  228,  217,    0,  123,    0,    0,  234,    0,
+        0,    0,    0,    0,    0,   78,    0,    0,   85,   87,
+        0,   91,    0,    0,    0,    0,    0,    0,  107,  219,
+        0,    0,    0,    0,    0,    0,    0,    0,  134,  135,
+      137,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      153,  156,    0,    0,    0,    0,    0,    0,    0,  257,
+      185,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      216,    0,    0,    0,    0,   12,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  238,    0,    0,  150,    0,    0,    0,    0,  167,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  194,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   30,
-        0,    0,    0,    0,   44,    0,    0,    0,    0,    0,
-        0,   52,   56,    0,    0,    0,    0,    0,    0,    0,
+        0,   50,    0,    0,   60,    0,    0,   66,    0,   70,
+       72,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,   78,    0,    0,   85,   87,    0,   91,    0,
-        0,    0,    0,    0,    0,  107,  218,    0,    0,    0,
-        0,    0,    0,    0,    0,  133,  134,  136,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  152,  155,    0,
-        0,    0,    0,    0,    0,    0,  256,  184,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  215,    0,    0,
-        0,    0,   12,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   50,    0,
-        0,   60,    0,    0,   66,    0,   70,   72,    0,    0,
+        0,    0,    0,    0,  213,    0,    0,  133,    0,    0,
+      141,    0,  144,    0,    0,    0,    0,    0,    0,    0,
+        0,  173,  178,  177,    0,    0,    0,    0,    0,    0,
+      197,    0,    0,  217,    0,  221,    0,    0,    0,   20,
+       23,    0,    0,    0,    0,    0,    0,    0,   46,    0,
+        0,    0,    0,    0,   62,   65,   68,   79,    0,    0,
+       92,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      128,    0,    0,    0,    0,    0,  147,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    9,  214,    0,    0,    0,    0,    0,    0,
 
-        0,  212,    0,    0,  132,    0,    0,  140,    0,  143,
-        0,    0,    0,    0,    0,    0,    0,    0,  172,  177,
-      176,    0,    0,    0,    0,    0,    0,  196,    0,    0,
-      216,    0,  220,    0,    0,    0,   20,   23,    0,    0,
-        0,    0,    0,    0,    0,   46,    0,    0,    0,    0,
-        0,   62,   65,   68,   79,    0,    0,   92,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  128,    0,    0,
-        0,    0,    0,  146,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
-      213,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,   49,    0,   69,   80,    0,   90,   97,    0,
-        0,  103,    0,    0,    0,    0,    0,  129,    0,    0,
-      142,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   26,   27,
+        0,    0,    0,    0,    0,   49,    0,   69,   80,    0,
+       90,   97,    0,    0,  103,    0,    0,    0,    0,    0,
+      129,    0,    0,  143,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       84,    0,  102,    0,    0,    0,    0,  210,    0,    0,
-      139,  237,    0,  227,  162,    0,    0,    0,    0,  221,
-        0,    0,    0,    0,    0,    0,    0,    0,   28,   33,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      219,    0,    0,    0,    0,    0,  165,    0,    0,    0,
+        0,   26,   27,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   84,    0,  102,    0,    0,    0,    0,
+      211,    0,    0,  140,  238,    0,  228,  163,    0,    0,
+        0,    0,  222,    0,    0,    0,    0,    0,    0,    0,
+        0,   28,   33,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  220,    0,    0,    0,    0,    0,  166,
 
-      224,  223,  222,  225,    0,    0,    0,    0,    0,   38,
-        0,    0,    0,    0,    0,  208,    0,    0,    0,  211,
-        0,  138,    0,    0,    0,    0,    0,  187,  195,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  229,    0,
-        0,    0,  169,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   98,    0,    0,    0,  168,  171,    0,    0,
-        0,    0,    0,   45,    0,    0,  105,    0,   24,  185,
-        0,    0,    0,    0,   47,    0,  130,    0,    0,    0,
-        0,   48,    0,    0,    0,   40,    0,   37,    0,    0,
-       39,  214,    0
+        0,    0,    0,  225,  224,  223,  226,    0,    0,    0,
+        0,    0,   38,    0,    0,    0,    0,    0,  209,    0,
+        0,    0,  212,    0,  139,    0,    0,    0,    0,    0,
+      188,  196,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  230,    0,    0,    0,  170,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   98,    0,    0,    0,  169,
+      172,    0,    0,    0,    0,    0,   45,    0,    0,  105,
+        0,   24,  186,    0,    0,    0,    0,   47,    0,  130,
+        0,    0,    0,    0,   48,    0,    0,    0,   40,    0,
+       37,    0,    0,   39,  215,    0
 
     } ;
 
@@ -549,433 +549,435 @@
         1
     } ;
 
-static yyconst short int yy_base[1899] =
+static yyconst short int yy_base[1902] =
     {   0,
-        0,    0, 1914, 1915, 1911,    0,   39,    0,   37,   39,
+        0,    0, 1917, 1918, 1914,    0,   39,    0,   37,   39,
        39,   35,   30,   56,   57,   30,   78,   58,   93,   93,
-     1883,   74,  110,  111,  126, 1881,  121, 1875,   72,  143,
-      162,   82, 1887,   47, 1882, 1888, 1915, 1904,    0,   91,
-     1915,    0, 1915, 1877, 1915,    0,  108,  103, 1877, 1869,
-     1876, 1867, 1866, 1870, 1864, 1865, 1862,  120, 1866, 1879,
-       57,  144,  104, 1854, 1853,  136,  141, 1857, 1861, 1857,
-     1870, 1872,  165,  169,  160, 1871, 1859, 1855,   41, 1868,
-     1867, 1851,  109, 1841,  130, 1858,  134, 1842, 1851, 1858,
-      157, 1859, 1848, 1845, 1836, 1835, 1847, 1830, 1842, 1844,
+     1886,   74,  110,  111,  126, 1884,  121, 1878,   72,  143,
+      162,   82, 1890,   47, 1885, 1891, 1918, 1907,    0,   91,
+     1918,    0, 1918, 1880, 1918,    0,  108,  103, 1880, 1872,
+     1879, 1870, 1869, 1873, 1867, 1868, 1865,  120, 1869, 1882,
+       57,  144,  104, 1857, 1856,  136,  141, 1860, 1864, 1860,
+     1873, 1875,  165,  169,  160, 1874, 1862, 1858,   41, 1871,
+     1870, 1854,  109, 1844,  130, 1861,  134, 1845, 1854, 1861,
+      157, 1862, 1851, 1848, 1839, 1838, 1850, 1833, 1845, 1847,
 
-     1837,  187, 1825, 1849,  142,  172,  164, 1824,  175, 1834,
-     1843, 1833, 1837,  119, 1841, 1843, 1829, 1836,  192, 1826,
-     1821,   31,  212, 1837,  190,  183,  193, 1828, 1821, 1829,
-      184, 1822, 1832, 1807, 1813, 1812, 1817, 1812,  197, 1827,
-     1814, 1809, 1809,  216, 1818, 1807,  188,  219, 1812, 1801,
-     1816, 1813, 1808, 1807, 1790, 1799, 1804,  215, 1809, 1792,
-     1791, 1804, 1796, 1807, 1792, 1791, 1786, 1795, 1783, 1796,
-     1781, 1783, 1784, 1781, 1777, 1789, 1773, 1792, 1767, 1788,
-     1915, 1789,  214, 1775, 1787, 1771, 1777, 1783, 1766, 1778,
-     1769, 1776, 1768, 1774, 1769, 1768, 1771, 1763, 1765,   62,
+     1840,  187, 1828, 1852,  142,  172,  164, 1827,  175, 1837,
+     1846, 1836, 1840,  119, 1844, 1846, 1832, 1839,  192, 1829,
+     1824,   31,  212, 1840,  190,  183,  193, 1831, 1824, 1832,
+      184, 1825, 1835, 1810, 1816, 1815, 1820, 1815,  197, 1830,
+     1817, 1812, 1812,  216, 1821, 1810,  188,  219, 1815, 1804,
+     1819, 1816, 1811, 1810, 1793, 1802, 1807,  215, 1812, 1795,
+     1794, 1807, 1799, 1810, 1795, 1794, 1789, 1798, 1786, 1799,
+     1784, 1786, 1787, 1784, 1780, 1792, 1776, 1795, 1770, 1791,
+     1918, 1792,  214, 1778, 1790, 1774, 1780, 1786, 1769, 1781,
+     1772, 1779, 1771, 1777, 1772, 1771, 1774, 1766, 1768,   62,
 
-     1760, 1767, 1759, 1765, 1749, 1753, 1762, 1765, 1751, 1762,
-     1758, 1746,  224, 1741, 1742, 1759, 1753, 1742, 1747,  239,
-     1741, 1734,  226, 1739, 1749, 1733, 1745, 1731, 1734, 1732,
-     1728, 1744, 1719, 1737, 1731, 1721, 1725,  232, 1728, 1738,
-     1717, 1735, 1716,  226, 1713, 1728, 1731, 1727, 1707, 1718,
-      234, 1726, 1709, 1721, 1706, 1716, 1716, 1702, 1703, 1715,
-     1700, 1709, 1712, 1715, 1710, 1699,  223, 1713, 1697, 1707,
-     1688, 1691, 1690, 1915, 1702, 1694, 1690, 1684, 1688, 1915,
-     1702, 1681, 1680, 1698, 1683, 1688, 1687, 1676, 1689,  229,
-     1684, 1687, 1687, 1669, 1677, 1683, 1675,  185, 1667, 1673,
+     1763, 1770, 1762, 1768, 1752, 1756, 1765, 1768, 1754, 1765,
+     1761, 1749,  224, 1744, 1745, 1762, 1756, 1745, 1750,  239,
+     1744, 1737,  226, 1742, 1752, 1736, 1748, 1734, 1737, 1735,
+     1731, 1747, 1722, 1740, 1734, 1724, 1728,  232, 1731, 1741,
+     1720, 1738, 1719,  226,  232, 1732, 1735, 1731, 1711, 1722,
+      239, 1730, 1713, 1725, 1710, 1720, 1720, 1706, 1707, 1719,
+     1704, 1713, 1716, 1719, 1714, 1703,  223, 1717, 1701, 1711,
+     1692, 1695, 1694, 1918, 1706, 1698, 1694, 1688, 1692, 1918,
+     1706, 1685, 1684, 1702, 1687, 1692, 1691, 1680, 1693,  233,
+     1688, 1691, 1691, 1673, 1681, 1687, 1679,  185, 1671, 1677,
 
-     1670, 1674, 1671, 1667, 1915, 1668, 1663, 1663, 1663, 1660,
-     1652, 1674, 1915, 1670, 1661, 1915, 1651, 1651, 1664,  244,
-     1654, 1653, 1666, 1660, 1645, 1649, 1642, 1643, 1655, 1639,
-     1915, 1915, 1651, 1636, 1915, 1638, 1653, 1645, 1653, 1647,
-     1631, 1635, 1637, 1636, 1622, 1641, 1629, 1626, 1638, 1628,
-     1629, 1626, 1621, 1626, 1623, 1617, 1615, 1629, 1615, 1915,
-     1614, 1626, 1611, 1611, 1626, 1622, 1625,  246, 1625, 1619,
-     1623, 1915, 1603, 1608, 1600, 1601, 1599, 1915, 1915, 1617,
-     1611, 1615, 1612, 1608, 1601, 1602, 1608, 1591, 1602, 1587,
-     1605, 1587, 1592, 1603, 1583, 1596, 1584, 1587, 1589, 1596,
+     1674, 1678, 1675, 1671, 1918, 1672, 1667, 1667, 1667, 1664,
+     1656, 1678, 1918, 1674, 1665, 1918, 1655, 1655, 1668,  246,
+     1658, 1657, 1670, 1664, 1649, 1653, 1646, 1647, 1659, 1643,
+     1918, 1918, 1655, 1640, 1918, 1642, 1657, 1649, 1657, 1651,
+     1635, 1639, 1641, 1640, 1626, 1645, 1633, 1630, 1642, 1632,
+     1633, 1630, 1625, 1630, 1627, 1621, 1619, 1633, 1619, 1918,
+     1618, 1630, 1615, 1615, 1630, 1626, 1629,  244, 1629, 1623,
+     1627, 1918, 1607, 1612, 1604, 1605, 1603, 1918, 1918, 1621,
+     1615, 1619, 1616, 1612, 1605, 1606, 1612, 1595, 1606, 1591,
+     1609, 1591, 1596, 1607, 1587, 1600, 1588, 1591, 1593, 1600,
 
-     1591,  260, 1590, 1592, 1592, 1578, 1571, 1578, 1915, 1575,
-     1588, 1572, 1586, 1567, 1569, 1567, 1573, 1576,  256, 1580,
-     1556, 1915, 1578, 1915, 1576, 1556, 1560, 1556, 1549, 1553,
-     1568, 1550, 1551, 1568, 1551, 1552,  251,  272, 1560, 1544,
-     1549, 1550, 1545, 1557, 1553, 1555, 1538, 1551, 1553, 1534,
-     1539, 1549, 1529, 1550, 1548, 1547, 1533, 1915, 1541, 1525,
-     1535, 1524, 1533,  278, 1528, 1520, 1524, 1538, 1519, 1517,
-     1530, 1513, 1513, 1518, 1522, 1525, 1915,  245, 1514, 1915,
-     1528, 1915, 1509, 1514, 1521, 1524, 1518, 1520, 1503, 1915,
-     1500, 1514, 1513, 1514, 1504, 1915, 1503, 1505, 1501, 1498,
+     1595,  259, 1594, 1596, 1596, 1582, 1575, 1594, 1581, 1918,
+     1578, 1591, 1575, 1589, 1570, 1572, 1570, 1576, 1579,  263,
+     1583, 1559, 1918, 1581, 1918, 1579, 1559, 1563, 1559, 1552,
+     1556, 1571, 1553, 1554, 1571, 1554, 1555,  250,  260, 1563,
+     1547, 1552, 1553, 1548, 1560, 1556, 1558, 1541, 1554, 1556,
+     1537, 1542, 1552, 1532, 1553, 1551, 1550, 1536, 1918, 1544,
+     1528, 1538, 1527, 1536,  272, 1531, 1523, 1527, 1541, 1522,
+     1520, 1533, 1516, 1516, 1521, 1525, 1528, 1918,  256, 1517,
+     1918, 1531, 1918, 1512, 1517, 1524, 1527, 1521, 1523, 1506,
+     1918, 1503, 1517, 1516, 1517, 1507, 1918, 1506, 1508, 1504,
 
-     1502, 1915, 1501, 1494, 1915, 1503, 1491, 1502, 1485, 1490,
-     1499, 1501, 1496, 1495, 1481, 1486, 1492, 1915, 1491, 1495,
-     1482, 1481, 1473, 1915, 1490, 1465,  266, 1477, 1479, 1467,
-     1483, 1471, 1465, 1915, 1482, 1473, 1476, 1471, 1473, 1459,
-     1474, 1451, 1475, 1474, 1453, 1451, 1456, 1455, 1460, 1465,
-     1453, 1457, 1452, 1464, 1449, 1443, 1456, 1446, 1439, 1454,
-     1454, 1455,  270, 1443, 1450, 1438,  249, 1451, 1432, 1425,
-     1442, 1433, 1442, 1441, 1438,  279, 1426, 1440, 1437, 1432,
-     1435, 1427, 1420,  281, 1417, 1436, 1434, 1411,  261,  288,
-     1419, 1432, 1417,  284, 1915, 1422, 1409, 1423, 1418, 1421,
+     1501, 1505, 1918, 1504, 1497, 1918, 1506, 1494, 1505, 1488,
+     1493, 1502, 1504, 1499, 1498, 1484, 1489, 1495, 1918, 1494,
+     1498, 1485, 1484, 1476, 1918, 1493, 1468,  257, 1480, 1482,
+     1470, 1486, 1474, 1468, 1918, 1485, 1476, 1479, 1474, 1476,
+     1462, 1477, 1454, 1478, 1477, 1456, 1454, 1459, 1458, 1463,
+     1468, 1456, 1460, 1455, 1467, 1452, 1446, 1459, 1449, 1442,
+     1457, 1457, 1458,  277, 1446, 1453, 1441,  269, 1454, 1435,
+     1428, 1445, 1436, 1445, 1423, 1443, 1440,  271, 1428, 1442,
+     1439, 1434, 1437, 1429, 1422,  276, 1419, 1438, 1436, 1413,
+      289,  291, 1421, 1434, 1419,  280, 1918, 1424, 1411, 1425,
 
-      286, 1421, 1408, 1915, 1405, 1419, 1412, 1405, 1415, 1418,
-     1397, 1915, 1915, 1415, 1415, 1409, 1413, 1393, 1386, 1390,
-     1404, 1406, 1915, 1393, 1382, 1387, 1399, 1384, 1394,  126,
-      193,  241,  285,  257,  259,  279,  290,  284,  308,  290,
-      296,  309, 1915, 1915,  309,  314, 1915,  296, 1915,  307,
-      301,  304,  318,  320,  306,  310,  317,  312,  316,  326,
-      327,  310,  311,  311,  323,  313,  318,  330,  336,  323,
-      324,  328, 1915,  321,  342, 1915,  342,  344,  332,  342,
-      335,  336,  334,  338,  337,  345,  338,  340, 1915,  345,
-      338,  354, 1915,  361,  358,  363,  356,  365,  363,  350,
+     1420, 1423,  280, 1423, 1410, 1918, 1407, 1421, 1414, 1407,
+     1417, 1420, 1399, 1918, 1918, 1417, 1417, 1411, 1415, 1395,
+     1388, 1392, 1406, 1408, 1918, 1395, 1384, 1389, 1401, 1386,
+      132,  201,  229,  286,  295,  289,  291,  291,  299,  293,
+      312,  294,  298,  310, 1918, 1918,  311,  316, 1918,  298,
+     1918,  309,  304,  307,  321,  323,  309,  313,  320,  315,
+      319,  329,  330,  313,  314,  314,  326,  316,  321,  333,
+      339,  326,  327,  331, 1918,  324,  345, 1918,  345,  347,
+      335,  345,  338,  339,  337,  341,  340,  348,  341,  343,
+     1918,  348,  341,  357, 1918,  364,  361,  366,  359,  368,
 
-      357,  371,  370,  361, 1915,  366,  355,  371,  373, 1915,
-      371,  362, 1915,  378,  377, 1915,  369,  383,  381, 1915,
-     1915,  364,  380,  380, 1915,  387,  377,  391,  384,  380,
-      391,  394,  395,  386,  382, 1915,  381,  397,  389,  385,
-      386,  401,  403,  407,  398,  402,  410,  398,  395,  410,
-      415,  401,  403,  417,  406,  405,  419,  410,  422, 1915,
-      406,  410,  417,  426,  408,  414, 1915,  415,  426, 1915,
-      432,  431,  431,  411,  427,  435,  419,  438,  432,  437,
-      429,  424, 1915,  432, 1915,  434,  433,  430,  444, 1915,
-      430,  439,  452,  433,  441,  457,  444, 1915, 1915, 1915,
+      366,  353,  360,  374,  373,  364, 1918,  369,  358,  374,
+      376, 1918,  374,  365, 1918,  381,  380, 1918,  372,  386,
+      384, 1918, 1918,  367,  383,  383, 1918,  390,  380,  394,
+      387,  383,  394,  397,  398,  389,  385, 1918,  384,  400,
+      392,  388, 1918,  389,  404,  406,  410,  401,  405,  413,
+      401,  398,  413,  418,  404,  406,  420,  409,  408,  422,
+      413,  425, 1918,  409,  413,  420,  429,  411,  417, 1918,
+      418,  429, 1918,  435,  434,  434,  414,  430,  438,  422,
+      441,  435,  440,  432,  427, 1918,  435, 1918,  437,  436,
+      433,  447, 1918,  433,  442,  455,  436,  444,  460,  447,
 
-      456, 1915,  457,  459,  461,  443,  451,  460,  453,  465,
-     1915, 1915,  455, 1915,  466,  456,  453,  471,  474,  462,
-      454,  463,  470,  476,  466,  477,  462, 1915,  464,  469,
-      480, 1915,  468,  482,  475,  490,  471,  492,  484,  494,
-      481,  496,  492,  486,  487,  485,  496,  502,  488,  489,
-      498,  491,  507,  496,  494,  501,  495,  493,  507,  508,
-     1915,  511,  493,  509,  508,  515,  503,  521,  522,  506,
-      510,  515,  522,  526,  517,  515,  530,  527,  509,  529,
-      526,  533, 1915, 1915,  534, 1915,  529,  522,  537,  538,
-     1915, 1915,  539,  526,  532,  542,  546,  535,  549,  540,
+     1918, 1918, 1918,  459, 1918,  460,  462,  464,  446,  454,
+      463,  456,  468, 1918, 1918,  458, 1918,  469,  459,  456,
+      474,  477,  465,  457,  466,  473,  479,  469,  480,  465,
+     1918,  467,  472,  483, 1918,  471,  485,  478,  493,  474,
+      495,  487,  497,  484,  499,  495,  489,  490,  488,  499,
+      505,  491,  492,  501,  494,  510,  499,  497,  504,  498,
+      496,  510,  511, 1918,  514,  496,  512,  511,  518,  506,
+      524,  525,  509,  513,  518,  525,  529,  520,  518,  533,
+      530,  512,  532,  529,  536, 1918, 1918,  537, 1918,  532,
+      525,  540,  541, 1918, 1918,  542,  529,  535,  545,  549,
 
-      550,  546,  549,  555,  533, 1915, 1915, 1915,  552,  539,
-      559,  559,  541,  562,  563,  559,  549,  559,  555,  549,
-      554,  552,  546,  560,  564,  570,  560,  563,  559,  569,
-      565,  562,  563,  574,  582,  564,  580,  564,  575, 1915,
-      569,  580,  576,  572,  581,  584,  579,  583,  581,  577,
-      598,  599,  600,  601,  602,  598,  599,  600,  588,  607,
-      604,  609, 1915, 1915, 1915,  605,  606,  609,  606,  605,
-      610,  616,  629,  617,  602,  610,  609, 1915,  622,  608,
-      621, 1915,  622, 1915,  616,  617,  612,  619,  627,  615,
-      623,  632,  628,  638,  624,  632, 1915,  626,  639,  636,
+      538,  552,  543,  553,  549,  552,  558,  536, 1918, 1918,
+     1918,  555,  542,  562,  562,  544,  565,  566,  562,  552,
+      562,  558,  552,  557,  555,  549,  563,  567,  573,  563,
+      566,  562,  572,  568,  565,  566,  577,  585,  567,  583,
+      567,  578, 1918,  572,  583,  579,  575,  584,  587,  582,
+      586,  584,  580,  601,  602,  603,  604,  605,  601,  602,
+      603,  591,  610,  607,  612, 1918, 1918, 1918,  608,  609,
+      612,  609,  608,  613,  619,  632,  620,  605,  613,  612,
+     1918,  625,  611,  624, 1918,  625, 1918,  619,  620,  615,
+      622,  630,  618,  626,  635,  631,  641,  627,  635, 1918,
 
-     1915,  631, 1915,  633,  642,  645, 1915,  646,  642,  646,
-      652,  646,  650,  655,  656, 1915, 1915,  643,  658,  650,
-      656,  652,  662,  654,  665,  669,  655,  650,  658, 1915,
-     1915,  659,  670,  661,  658,  659,  674,  679,  661,  670,
-     1915, 1915,  672,  672,  673,  670, 1915,  668,  674,  688,
-      670,  679,  692,  688,  689,  676,  684,  688,  684,  680,
-      696,  687,  697,  688,  698, 1915,  700, 1915,  681,  688,
-      704, 1915,  693, 1915,  691, 1915,  701,  708,  700,  701,
-      716,  697,  696,  704,  706,  721,  709,  722,  715,  706,
-      722,  721,  728,  729,  727,  711,  727,  713,  725,  731,
+      629,  642,  639, 1918,  634, 1918,  636,  645,  648, 1918,
+      649,  645,  649,  655,  649,  653,  658,  659, 1918, 1918,
+      646,  661,  653,  659,  655,  665,  657,  668,  672,  658,
+      653,  661, 1918, 1918,  662,  673,  664,  661,  662,  677,
+      682,  664,  673, 1918, 1918,  675,  675,  676,  673, 1918,
+      671,  677,  691,  673,  682,  695,  691,  692,  679,  687,
+      691,  687,  683,  699,  690,  700,  691,  701, 1918,  703,
+     1918,  684,  691,  707, 1918,  696, 1918,  694, 1918,  704,
+      711,  703,  704,  719,  700,  699,  707,  709,  724,  712,
+      725,  718,  709,  725,  724,  731,  732,  730,  714,  730,
 
-      721,  722,  723,  724,  721,  741,  718,  724,  729,  740,
-      742,  731,  724,  738,  741,  732, 1915,  738,  765,  764,
-      757,  738,  757,  759,  760,  736,  753,  764, 1915,  753,
-      761,  762,  753,  765,  755,  766, 1915,  763,  761,  758,
-      760,  755,  776,  769,  764,  775,  784,  778,  782, 1915,
-      771,  780,  770, 1915, 1915, 1915,  778,  774,  771,  778,
-      777,  774,  775, 1915,  781,  795,  784,  777,  797,  785,
-      787,  788,  797,  798,  798,  798,  806,  803,  803, 1915,
-      796,  791,  803,  811, 1915,  812, 1915,  794,  815,  796,
-      805, 1915, 1915,  815,  801,  800, 1915,  806,  810,  803,
+      716,  728,  734,  724,  725,  726,  727,  724,  744,  721,
+      727,  732,  743,  745,  734,  727,  741,  744,  735, 1918,
+      741,  768,  767,  760,  741,  760,  762,  763,  739,  756,
+      767, 1918,  756,  764,  765,  756,  768,  758,  769, 1918,
+      766,  764,  761,  763,  758,  779,  772,  767,  778,  787,
+      781,  785, 1918,  774,  783,  773, 1918, 1918, 1918,  781,
+      777,  774,  781,  780,  777,  778, 1918,  784,  798,  787,
+      780,  800,  788,  790,  791,  800,  801,  801,  801,  809,
+      806,  806, 1918,  799,  794,  806,  814, 1918,  815, 1918,
+      797,  818,  799,  808, 1918, 1918,  818,  804,  803, 1918,
 
-      801,  820,  825,  820,  828,  815,  818,  813,  832,  833,
-      829,  835,  837,  829, 1915,  830,  835,  839, 1915, 1915,
-      830, 1915,  840,  828,  825,  843,  824,  843,  834,  836,
-      835,  847,  849,  836,  846,  850,  848,  842,  843,  844,
-      845, 1915,  842,  847,  844,  849,  854,  862,  848, 1915,
-     1915,  855,  870,  859,  882,  883,  875,  876,  857,  857,
-      872,  874, 1915,  877,  858, 1915,  868,  877,  869, 1915,
-      871,  869,  871,  873,  877,  876,  871,  881,  889,  891,
-      882,  896,  892,  878,  890,  882,  896,  888,  898,  886,
-      893,  901,  895,  896,  893,  907,  899, 1915,  908,  908,
+      809,  813,  806,  804,  823,  828,  823,  831,  818,  821,
+      816,  835,  836,  832,  838,  840,  832, 1918,  833,  838,
+      842, 1918, 1918,  833, 1918,  843,  831,  828,  846,  827,
+      846,  837,  839,  838,  850,  852,  839,  849,  853,  851,
+      845,  846,  847,  848, 1918,  845,  850,  847,  852,  857,
+      865,  851, 1918, 1918,  858,  873,  862,  885,  886,  878,
+      879,  860,  860,  875,  877, 1918,  880,  861, 1918,  871,
+      880,  872, 1918,  874,  872,  874,  876,  880,  879,  874,
+      884,  892,  894,  885,  899,  895,  881,  893,  885,  899,
+      891,  901,  889,  896,  904,  898,  899,  896,  910,  902,
 
-      905,  910,  898,  899,  918,  898,  905,  921,  922,  907,
-      909,  925,  901,  902, 1915,  912,  910, 1915,  922,  922,
-     1915,  913,  930,  930, 1915,  920,  917,  924,  933,  924,
-      940,  926,  942,  922,  926,  926,  927,  928,  943,  935,
-     1915,  949,  947,  944,  933,  949,  955,  941, 1915, 1915,
-      956,  957, 1915, 1915,  950,  957,  952,  943,  958,  959,
-      960,  961,  958,  959, 1915,  964,  950,  959, 1915,  965,
-      972,  965,  952,  961,  965,  954,  956,  979,  981,  977,
-      979,  984, 1915,  977,  971,  978, 1915,  980,  984,  986,
-      990,  977,  992,  980,  987,  976,  997,  980,  988,  988,
+     1918,  911,  911,  908,  913,  901,  902,  921,  901,  908,
+      924,  925,  910,  912,  928,  904,  905, 1918,  915,  913,
+     1918,  925,  925, 1918,  916,  933,  933, 1918,  923,  920,
+      927,  936,  927,  943,  929,  945,  925,  929,  929,  930,
+      931,  946,  938, 1918,  952,  950,  947,  936,  952,  958,
+      944, 1918, 1918,  959,  960, 1918, 1918,  953,  960,  955,
+      946,  961,  962,  963,  964,  961,  962, 1918,  967,  953,
+      962, 1918,  968,  975,  968,  955,  964,  968,  957,  959,
+      982,  984,  980,  982,  987, 1918,  980,  974,  981, 1918,
+      983,  987,  989,  993,  980,  995,  983,  990,  979, 1000,
 
-      989,  987,  991,  989,  990,  986,  998, 1915, 1008,  997,
-      996, 1915, 1915, 1011, 1003,  994, 1000, 1012,  996,  997,
-     1004, 1001, 1020, 1915, 1016, 1915, 1021, 1010, 1915, 1023,
-     1022, 1008, 1024, 1023, 1010, 1017, 1014, 1019, 1032, 1023,
-     1032, 1915, 1019, 1030, 1915, 1033, 1028, 1043, 1043, 1915,
-     1045, 1035, 1029, 1035, 1029, 1046, 1046, 1049, 1052, 1036,
-     1037, 1038, 1039, 1045, 1041, 1042, 1060, 1042, 1915, 1060,
-     1050, 1050, 1048, 1052, 1059, 1061, 1061, 1062, 1054, 1915,
-     1061, 1069, 1071, 1056, 1915, 1077, 1073, 1067, 1060, 1077,
-     1062, 1915, 1915, 1069, 1072, 1066, 1071, 1072, 1081, 1074,
+      983,  991,  991,  992,  990,  994,  992,  993,  989, 1001,
+     1918, 1011, 1000,  999, 1918, 1918, 1014, 1006,  997, 1003,
+     1015,  999, 1000, 1007, 1004, 1023, 1918, 1019, 1918, 1024,
+     1013, 1918, 1026, 1025, 1011, 1027, 1026, 1013, 1020, 1017,
+     1022, 1035, 1026, 1035, 1918, 1022, 1033, 1918, 1036, 1031,
+     1046, 1046, 1918, 1048, 1038, 1032, 1038, 1032, 1049, 1049,
+     1052, 1055, 1039, 1040, 1041, 1042, 1048, 1044, 1045, 1063,
+     1045, 1918, 1063, 1053, 1053, 1051, 1055, 1062, 1064, 1064,
+     1065, 1057, 1918, 1064, 1072, 1074, 1059, 1918, 1080, 1076,
+     1070, 1063, 1080, 1065, 1918, 1918, 1072, 1075, 1069, 1074,
 
-     1083, 1084, 1915, 1088, 1090, 1915, 1915, 1085, 1915, 1079,
-     1096, 1097, 1083, 1090, 1091, 1915, 1915, 1096, 1099, 1085,
-     1090, 1100, 1094, 1106, 1104, 1915, 1915, 1915, 1109, 1094,
-     1107, 1103, 1097, 1099, 1096, 1116, 1104, 1915, 1915, 1098,
-     1105, 1109, 1116, 1118, 1118, 1116, 1915, 1915, 1124, 1124,
-     1127, 1128, 1129, 1130, 1126, 1127, 1133, 1915, 1133, 1115,
-     1131, 1119, 1915, 1123, 1119, 1125, 1121, 1126, 1138, 1139,
-     1127, 1143, 1147, 1145, 1135, 1150, 1146, 1148, 1915, 1138,
-     1139, 1915, 1148, 1149, 1915, 1150, 1915, 1915, 1140, 1144,
-     1144, 1142, 1142, 1160, 1143, 1152, 1153, 1166, 1160, 1169,
+     1075, 1084, 1077, 1086, 1087, 1918, 1091, 1093, 1918, 1918,
+     1088, 1918, 1082, 1099, 1100, 1086, 1093, 1094, 1918, 1918,
+     1099, 1102, 1088, 1093, 1103, 1097, 1109, 1107, 1918, 1918,
+     1918, 1112, 1097, 1110, 1106, 1100, 1102, 1099, 1119, 1107,
+     1918, 1918, 1101, 1108, 1112, 1119, 1121, 1121, 1119, 1918,
+     1918, 1127, 1127, 1130, 1131, 1132, 1133, 1129, 1130, 1136,
+     1918, 1136, 1118, 1134, 1122, 1918, 1126, 1122, 1128, 1124,
+     1129, 1141, 1142, 1130, 1146, 1150, 1148, 1138, 1153, 1149,
+     1151, 1918, 1141, 1142, 1918, 1151, 1152, 1918, 1153, 1918,
+     1918, 1143, 1147, 1147, 1145, 1145, 1163, 1146, 1155, 1156,
 
-     1163, 1915, 1166, 1154, 1915, 1154, 1162, 1915, 1171, 1915,
-     1172, 1155, 1175, 1163, 1171, 1167, 1177, 1158, 1915, 1915,
-     1915, 1164, 1173, 1171, 1172, 1173, 1174, 1915, 1190, 1185,
-     1915, 1171, 1915, 1189, 1190, 1195, 1915, 1915, 1174, 1183,
-     1176, 1199, 1185, 1182, 1194, 1915, 1201, 1205, 1188, 1187,
-     1201, 1915, 1915, 1915, 1212, 1196, 1192, 1915, 1193, 1198,
-     1200, 1210, 1211, 1198, 1217, 1198, 1215, 1915, 1217, 1206,
-     1214, 1206, 1220, 1915, 1225, 1215, 1215, 1224, 1205, 1231,
-     1227, 1228, 1220, 1221, 1222, 1223, 1224, 1227, 1239, 1915,
-     1915, 1228, 1246, 1241, 1240, 1230, 1226, 1243, 1230, 1249,
+     1169, 1163, 1172, 1166, 1918, 1169, 1157, 1918, 1157, 1165,
+     1918, 1174, 1918, 1175, 1158, 1178, 1166, 1174, 1170, 1180,
+     1161, 1918, 1918, 1918, 1167, 1176, 1174, 1175, 1176, 1177,
+     1918, 1193, 1188, 1918, 1174, 1918, 1192, 1193, 1198, 1918,
+     1918, 1177, 1186, 1179, 1202, 1188, 1185, 1197, 1918, 1204,
+     1208, 1191, 1190, 1204, 1918, 1918, 1918, 1215, 1199, 1195,
+     1918, 1196, 1201, 1203, 1213, 1214, 1201, 1220, 1201, 1218,
+     1918, 1220, 1209, 1217, 1209, 1223, 1918, 1228, 1218, 1218,
+     1227, 1208, 1234, 1230, 1231, 1223, 1224, 1225, 1226, 1227,
+     1230, 1242, 1918, 1918, 1231, 1249, 1244, 1243, 1233, 1229,
 
-     1243, 1249, 1915, 1244, 1915, 1915, 1248, 1915, 1915, 1241,
-     1236, 1915, 1257, 1243, 1245, 1241, 1242, 1262, 1251, 1244,
-     1915, 1246, 1254, 1262, 1263, 1257, 1270, 1265, 1272, 1269,
-     1262, 1263, 1264, 1265, 1263, 1264, 1268, 1276, 1915, 1915,
-     1277, 1271, 1266, 1271, 1268, 1282, 1274, 1288, 1275, 1288,
-     1915, 1278, 1915, 1281, 1280, 1281, 1291, 1915, 1278, 1289,
-     1915, 1915, 1287, 1915, 1915, 1281, 1295, 1293, 1297, 1915,
-     1279, 1280, 1281, 1282, 1288, 1294, 1298, 1292, 1915, 1915,
-     1307, 1293, 1292, 1297, 1302, 1303, 1305, 1314, 1315, 1312,
-     1915, 1317, 1305, 1315, 1305, 1321, 1915, 1318, 1316, 1320,
+     1246, 1233, 1252, 1246, 1252, 1918, 1247, 1918, 1918, 1251,
+     1918, 1918, 1244, 1239, 1918, 1260, 1246, 1248, 1244, 1245,
+     1265, 1254, 1247, 1918, 1249, 1257, 1265, 1266, 1260, 1273,
+     1268, 1275, 1272, 1265, 1266, 1267, 1268, 1266, 1267, 1271,
+     1279, 1918, 1918, 1280, 1274, 1269, 1274, 1271, 1285, 1277,
+     1291, 1278, 1291, 1918, 1281, 1918, 1284, 1283, 1284, 1294,
+     1918, 1281, 1292, 1918, 1918, 1290, 1918, 1918, 1284, 1298,
+     1296, 1300, 1918, 1282, 1283, 1284, 1285, 1291, 1297, 1301,
+     1295, 1918, 1918, 1310, 1296, 1295, 1300, 1305, 1306, 1308,
+     1317, 1318, 1315, 1918, 1320, 1308, 1318, 1308, 1324, 1918,
 
-     1915, 1915, 1915, 1915, 1321, 1327, 1307, 1314, 1328, 1915,
-     1330, 1336, 1332, 1324, 1326, 1915, 1337, 1328, 1330, 1915,
-     1330, 1915, 1326, 1333, 1341, 1335, 1345, 1915, 1915, 1348,
-     1345, 1333, 1349, 1341, 1349, 1354, 1336, 1348, 1915, 1342,
-     1350, 1355, 1915, 1356, 1357, 1356, 1346, 1365, 1351, 1348,
-     1356, 1355, 1915, 1350, 1359, 1368, 1915, 1915, 1354, 1369,
-     1370, 1373, 1356, 1915, 1359, 1375, 1915, 1375, 1915, 1915,
-     1381, 1368, 1368, 1370, 1915, 1366, 1915, 1366, 1384, 1367,
-     1369, 1915, 1381, 1386, 1378, 1915, 1380, 1915, 1374, 1390,
-     1915, 1915, 1915, 1409, 1410, 1412, 1413, 1414
+     1321, 1319, 1323, 1918, 1918, 1918, 1918, 1324, 1330, 1310,
+     1317, 1331, 1918, 1333, 1339, 1335, 1327, 1329, 1918, 1340,
+     1331, 1333, 1918, 1333, 1918, 1329, 1336, 1344, 1338, 1348,
+     1918, 1918, 1351, 1348, 1336, 1352, 1344, 1352, 1357, 1339,
+     1351, 1918, 1345, 1353, 1358, 1918, 1359, 1360, 1359, 1349,
+     1368, 1354, 1351, 1359, 1358, 1918, 1353, 1362, 1371, 1918,
+     1918, 1357, 1372, 1373, 1376, 1359, 1918, 1362, 1378, 1918,
+     1378, 1918, 1918, 1384, 1371, 1371, 1373, 1918, 1369, 1918,
+     1369, 1387, 1370, 1372, 1918, 1384, 1389, 1381, 1918, 1383,
+     1918, 1377, 1393, 1918, 1918, 1918, 1412, 1413, 1415, 1416,
 
+     1417
     } ;
 
-static yyconst short int yy_def[1899] =
+static yyconst short int yy_def[1902] =
     {   0,
-     1893,    1, 1893, 1893, 1893, 1894, 1895, 1896, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1894, 1895,
-     1893, 1896, 1893, 1893, 1893, 1896, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896,    1, 1896, 1896, 1896, 1897, 1898, 1899, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1897, 1898,
+     1896, 1899, 1896, 1896, 1896, 1899, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1897,
-     1898, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1900, 1901, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1897, 1897, 1898, 1898, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1900, 1900, 1901,
+     1901, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
 
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893,    0, 1893, 1893, 1893, 1893, 1893
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896,    0, 1896, 1896, 1896, 1896,
 
+     1896
     } ;
 
-static yyconst short int yy_nxt[1957] =
+static yyconst short int yy_nxt[1960] =
     {   0,
         4,    5,    6,    7,    8,    4,    9,   10,   11,   11,
        11,    4,    4,    4,   12,   13,   14,   15,   16,   17,
@@ -993,51 +995,51 @@
        95,   91,   96,  102,  103,  107,  108,   92,  104,  109,
       172,  173,  105,  110,  203,  119,  153,  248,  106,  111,
       112,  204,  113,  120,  114,  163,  206,  164,  115,  121,
-      176,  177,  249,  801,  116,  178,  209,  207,  169,  181,
+      176,  177,  249,  803,  116,  178,  209,  207,  169,  181,
       117,  125,  210,  179,  126,  127,  170,  128,  180,  235,
       129,  130,  131,  182,  236,  132,  133,  134,  171,  188,
       135,  189,  193,  136,  194,  190,  137,  191,  237,  214,
-      138,  215,  238,  139,  140,  242,  239,  272,  464,  141,
+      138,  215,  238,  139,  140,  242,  239,  272,  465,  141,
 
       142,  240,  192,  226,  227,  228,  269,  243,  254,  229,
-      274,  273,  279,  300,  230,  288,  465,  270,  275,  301,
-      231,  271,  280,  232,  255,  256,  261,  338,  802,  262,
+      274,  273,  279,  300,  230,  288,  466,  270,  275,  301,
+      231,  271,  280,  232,  255,  256,  261,  338,  804,  262,
       294,  289,  263,  264,  302,  265,  313,  303,  266,  406,
       295,  370,  371,  314,  267,  398,  339,  296,  378,  379,
-      414,  382,  399,  297,  383,  455,  433,  415,  434,  529,
-      407,  400,  416,  484,  603,  456,  485,  417,  803,  584,
-      585,  733,  650,  530,  561,  562,  563,  651,  760,  692,
-      564,  604,  565,  734,  806,  566,  807,  567,  586,  761,
-      605,  728,  587,  568,  606,  729,  633,  607,  693,  608,
+      408,  382,  399,  297,  383,  415,  434,  530,  435,  456,
+      407,  400,  416,  605,  805,  485,  409,  417,  486,  457,
+      694,  531,  418,  562,  563,  564,  586,  587,  607,  565,
+      606,  566,  608,  652,  567,  609,  568,  610,  653,  695,
+      635,  735,  569,  746,  636,  588,  637,  638,  730,  589,
 
-      634,  743,  635,  636,  762,  804,  752,  808,  744,  753,
-      754,  809,  810,  768,  637,  755,  769,  775,  811,  812,
-      776,  763,  805,  813,  764,  814,  815,  816,  817,  818,
-      819,  820,  821,  823,  825,  826,  827,  828,  829,  830,
-      831,  832,  824,  833,  834,  835,  836,  837,  838,  839,
-      840,  822,  841,  842,  843,  844,  845,  846,  847,  848,
-      849,  850,  851,  852,  853,  854,  859,  855,  860,  856,
-      861,  862,  863,  857,  865,  866,  867,  868,  869,  858,
-      864,  870,  872,  873,  874,  875,  876,  877,  878,  879,
-      882,  883,  871,  884,  885,  886,  887,  888,  889,  890,
+      747,  755,  731,  736,  756,  757,  763,  765,  639,  771,
+      758,  778,  772,  806,  779,  807,  809,  764,  810,  811,
+      812,  813,  814,  815,  766,  816,  817,  767,  818,  819,
+      820,  821,  808,  822,  823,  824,  826,  828,  829,  830,
+      831,  832,  833,  834,  835,  827,  836,  837,  838,  839,
+      840,  841,  842,  843,  825,  844,  845,  846,  847,  848,
+      849,  850,  851,  852,  853,  854,  855,  856,  857,  862,
+      858,  863,  859,  864,  865,  866,  860,  868,  869,  870,
+      871,  872,  861,  867,  873,  875,  876,  877,  878,  879,
+      880,  881,  882,  885,  886,  874,  887,  888,  889,  890,
 
-      891,  892,  880,  893,  894,  895,  896,  881,  897,  898,
-      899,  900,  901,  902,  903,  904,  905,  906,  907,  908,
+      891,  892,  893,  894,  895,  883,  896,  897,  898,  899,
+      884,  900,  901,  902,  903,  904,  905,  906,  907,  908,
       909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
       919,  920,  921,  922,  923,  924,  925,  926,  927,  928,
       929,  930,  931,  932,  933,  934,  935,  936,  937,  938,
       939,  940,  941,  942,  943,  944,  945,  946,  947,  948,
-      949,  950,  951,  956,  957,  958,  952,  959,  953,  960,
-      961,  962,  954,  955,  963,  964,  965,  966,  967,  968,
+      949,  950,  951,  952,  953,  954,  959,  960,  961,  955,
+      962,  956,  963,  964,  965,  957,  958,  966,  967,  968,
       969,  970,  971,  972,  973,  974,  975,  976,  977,  978,
       979,  980,  981,  982,  983,  984,  985,  986,  987,  988,
 
       989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
       999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
-     1009, 1010, 1011, 1012, 1014, 1015, 1013, 1016, 1017, 1018,
-     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1028, 1029, 1030,
-     1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1026,
-     1027, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
+     1009, 1010, 1011, 1012, 1013, 1014, 1015, 1017, 1018, 1016,
+     1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
+     1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040,
+     1041, 1042, 1029, 1030, 1043, 1044, 1045, 1046, 1047, 1048,
      1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
      1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068,
      1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
@@ -1046,35 +1048,35 @@
      1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
      1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,
      1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
-     1119, 1122, 1120, 1123, 1124, 1125, 1126, 1127, 1128, 1129,
-     1121, 1130, 1131, 1132, 1133, 1134, 1136, 1137, 1138, 1135,
-     1141, 1139, 1142, 1147, 1148, 1149, 1150, 1143, 1151, 1144,
-     1152, 1153, 1154, 1145, 1140, 1155, 1156, 1157, 1158, 1146,
-     1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168,
+     1119, 1120, 1121, 1122, 1125, 1123, 1126, 1127, 1128, 1129,
+     1130, 1131, 1132, 1124, 1133, 1134, 1135, 1136, 1137, 1139,
+     1140, 1141, 1138, 1144, 1142, 1145, 1150, 1151, 1152, 1153,
+     1146, 1154, 1147, 1155, 1156, 1157, 1148, 1143, 1158, 1159,
+     1160, 1161, 1149, 1162, 1163, 1164, 1165, 1166, 1167, 1168,
      1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178,
      1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188,
 
      1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
-     1199, 1200, 1201, 1202, 1204, 1205, 1206, 1207, 1208, 1209,
-     1210, 1211, 1212, 1203, 1213, 1214, 1215, 1216, 1217, 1218,
+     1199, 1200, 1201, 1202, 1203, 1204, 1205, 1207, 1208, 1209,
+     1210, 1211, 1212, 1213, 1214, 1215, 1206, 1216, 1217, 1218,
      1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228,
      1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238,
      1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
-     1249, 1250, 1251, 1252, 1253, 1254, 1119, 1256, 1120, 1258,
-     1259, 1260, 1261, 1262, 1263, 1264, 1121, 1265, 1266, 1267,
+     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1122,
+     1259, 1123, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1124,
      1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277,
      1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
 
      1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
      1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
      1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
-     1318, 1319, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
-     1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1320, 1337,
-     1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
+     1318, 1319, 1320, 1321, 1322, 1324, 1325, 1326, 1327, 1328,
+     1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338,
+     1339, 1323, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
      1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
      1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
-     1368, 1369, 1370, 1371, 1372, 1256, 1256, 1258, 1258, 1373,
-     1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
+     1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1259, 1259,
+     1261, 1261, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
 
      1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393,
      1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403,
@@ -1089,10 +1091,10 @@
 
      1484, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493,
      1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503,
-     1504, 1505, 1506, 1507, 1508, 1510, 1511, 1512, 1513, 1515,
-     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
-     1526, 1527, 1528, 1509, 1529, 1514, 1530, 1531, 1532, 1534,
-     1535, 1536, 1537, 1538, 1533, 1539, 1540, 1541, 1542, 1543,
+     1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1513, 1514,
+     1515, 1516, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
+     1526, 1527, 1528, 1529, 1530, 1531, 1512, 1532, 1517, 1533,
+     1534, 1535, 1537, 1538, 1539, 1540, 1541, 1536, 1542, 1543,
      1544, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553,
      1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563,
      1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573,
@@ -1110,7 +1112,7 @@
      1674, 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683,
 
      1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693,
-     1694, 1695, 1696, 1697, 1698, 1700, 1699, 1701, 1702, 1703,
+     1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1703, 1702,
      1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713,
      1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723,
      1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733,
@@ -1131,70 +1133,70 @@
      1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873,
      1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883,
 
-     1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892,   39,
-       40,   40,   42, 1255, 1257,  800,  799,  798,  797,  796,
-      795,  794,  793,  792,  791,  790,  789,  788,  787,  786,
-      785,  784,  783,  782,  781,  780,  779,  778,  777,  774,
-      773,  772,  771,  770,  767,  766,  765,  759,  758,  757,
-      756,  751,  750,  749,  748,  747,  746,  745,  742,  741,
-      740,  739,  738,  737,  736,  735,  732,  731,  730,  727,
-      726,  725,  724,  723,  722,  721,  720,  719,  718,  717,
-      716,  715,  714,  713,  712,  711,  710,  709,  708,  707,
-      706,  705,  704,  703,  702,  701,  700,  699,  698,  697,
+     1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893,
+     1894, 1895,   39,   40,   40,   42, 1258, 1260,  802,  801,
+      800,  799,  798,  797,  796,  795,  794,  793,  792,  791,
+      790,  789,  788,  787,  786,  785,  784,  783,  782,  781,
+      780,  777,  776,  775,  774,  773,  770,  769,  768,  762,
+      761,  760,  759,  754,  753,  752,  751,  750,  749,  748,
+      745,  744,  743,  742,  741,  740,  739,  738,  737,  734,
+      733,  732,  729,  728,  727,  726,  725,  724,  723,  722,
+      721,  720,  719,  718,  717,  716,  715,  714,  713,  712,
+      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
 
-      696,  695,  694,  691,  690,  689,  688,  687,  686,  685,
-      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
-      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
-      664,  663,  662,  661,  660,  659,  658,  657,  656,  655,
-      654,  653,  652,  649,  648,  647,  646,  645,  644,  643,
-      642,  641,  640,  639,  638,  632,  631,  630,  629,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  615,  614,  613,  612,  611,  610,  609,  602,
-      601,  600,  599,  598,  597,  596,  595,  594,  593,  592,
-      591,  590,  589,  588,  583,  582,  581,  580,  579,  578,
+      701,  700,  699,  698,  697,  696,  693,  692,  691,  690,
+      689,  688,  687,  686,  685,  684,  683,  682,  681,  680,
+      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
+      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
+      659,  658,  657,  656,  655,  654,  651,  650,  649,  648,
+      647,  646,  645,  644,  643,  642,  641,  640,  634,  633,
+      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
+      622,  621,  620,  619,  618,  617,  616,  615,  614,  613,
+      612,  611,  604,  603,  602,  601,  600,  599,  598,  597,
+      596,  595,  594,  593,  592,  591,  590,  585,  584,  583,
 
-      577,  576,  575,  574,  573,  572,  571,  570,  569,  560,
-      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
-      549,  548,  547,  546,  545,  544,  543,  542,  541,  540,
-      539,  538,  537,  536,  535,  534,  533,  532,  531,  528,
-      527,  526,  525,  524,  523,  522,  521,  520,  519,  518,
-      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
-      507,  506,  505,  504,  503,  502,  501,  500,  499,  498,
-      497,  496,  495,  494,  493,  492,  491,  490,  489,  488,
-      487,  486,  483,  482,  481,  480,  479,  478,  477,  476,
-      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
+      582,  581,  580,  579,  578,  577,  576,  575,  574,  573,
+      572,  571,  570,  561,  560,  559,  558,  557,  556,  555,
+      554,  553,  552,  551,  550,  549,  548,  547,  546,  545,
+      544,  543,  542,  541,  540,  539,  538,  537,  536,  535,
+      534,  533,  532,  529,  528,  527,  526,  525,  524,  523,
+      522,  521,  520,  519,  518,  517,  516,  515,  514,  513,
+      512,  511,  510,  509,  508,  507,  506,  505,  504,  503,
+      502,  501,  500,  499,  498,  497,  496,  495,  494,  493,
+      492,  491,  490,  489,  488,  487,  484,  483,  482,  481,
+      480,  479,  478,  477,  476,  475,  474,  473,  472,  471,
 
-      463,  462,  461,  460,  459,  458,  457,  454,  453,  452,
-      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
-      441,  440,  439,  438,  437,  436,  435,  432,  431,  430,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-      419,  418,  413,  412,  411,  410,  409,  408,  405,  404,
-      403,  402,  401,  397,  396,  395,  394,  393,  392,  391,
-      390,  389,  388,  387,  386,  385,  384,  381,  380,  377,
-      376,  375,  374,  373,  372,  369,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  355,  354,  353,
-      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
+      470,  469,  468,  467,  464,  463,  462,  461,  460,  459,
+      458,  455,  454,  453,  452,  451,  450,  449,  448,  447,
+      446,  445,  444,  443,  442,  441,  440,  439,  438,  437,
+      436,  433,  432,  431,  430,  429,  428,  427,  426,  425,
+      424,  423,  422,  421,  420,  419,  414,  413,  412,  411,
+      410,  405,  404,  403,  402,  401,  397,  396,  395,  394,
+      393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
+      381,  380,  377,  376,  375,  374,  373,  372,  369,  368,
+      367,  366,  365,  364,  363,  362,  361,  360,  359,  358,
+      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
 
-      342,  341,  340,  337,  336,  335,  334,  333,  332,  331,
-      330,  329,  328,  327,  326,  325,  324,  323,  322,  321,
-      320,  319,  318,  317,  316,  315,  312,  311,  310,  309,
-      308,  307,  306,  305,  304,  299,  298,  293,  292,  291,
-      290,  287,  286,  285,  284,  283,  282,  281,  278,  277,
-      276,  268,  258,  257,  253,  252,  251,  250,  247,  246,
-      245,  244,  241,  234,  233,  225,  224,  223,  222,  221,
-      220,  219,  218,  217,  216,  213,  212,  211,  208,  205,
-      202,  201,  200,  197,  196,  195,  187,  186,  185,  184,
-      183,  175,  174,  166,  165,  162,  161,  160,  159,  158,
+      345,  344,  343,  342,  341,  340,  337,  336,  335,  334,
+      333,  332,  331,  330,  329,  328,  327,  326,  325,  324,
+      323,  322,  321,  320,  319,  318,  317,  316,  315,  312,
+      311,  310,  309,  308,  307,  306,  305,  304,  299,  298,
+      293,  292,  291,  290,  287,  286,  285,  284,  283,  282,
+      281,  278,  277,  276,  268,  258,  257,  253,  252,  251,
+      250,  247,  246,  245,  244,  241,  234,  233,  225,  224,
+      223,  222,  221,  220,  219,  218,  217,  216,  213,  212,
+      211,  208,  205,  202,  201,  200,  197,  196,  195,  187,
+      186,  185,  184,  183,  175,  174,  166,  165,  162,  161,
 
-      157,  156,  155,  154,  151,   38,  150,  149,  146,  122,
-      118,   97,   38, 1893,    3, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893
+      160,  159,  158,  157,  156,  155,  154,  151,   38,  150,
+      149,  146,  122,  118,   97,   38, 1896,    3, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896
     } ;
 
-static yyconst short int yy_chk[1957] =
+static yyconst short int yy_chk[1960] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1212,7 +1214,7 @@
        20,   19,   20,   23,   23,   24,   24,   19,   23,   24,
        63,   63,   23,   24,   83,   27,   48,  114,   23,   24,
        25,   83,   25,   27,   25,   58,   85,   58,   25,   27,
-       66,   66,  114,  630,   25,   66,   87,   85,   62,   67,
+       66,   66,  114,  631,   25,   66,   87,   85,   62,   67,
        25,   30,   87,   66,   30,   30,   62,   30,   66,  105,
        30,   30,   30,   67,  105,   30,   30,   31,   62,   73,
        31,   73,   75,   31,   75,   74,   31,   74,  106,   91,
@@ -1220,197 +1222,197 @@
 
        31,  107,   74,  102,  102,  102,  125,  109,  119,  102,
       127,  126,  131,  147,  102,  139,  298,  125,  127,  147,
-      102,  125,  131,  102,  119,  119,  123,  183,  631,  123,
+      102,  125,  131,  102,  119,  119,  123,  183,  632,  123,
       144,  139,  123,  123,  148,  123,  158,  148,  123,  244,
       144,  213,  213,  158,  123,  238,  183,  144,  220,  220,
-      251,  223,  238,  144,  223,  290,  267,  251,  267,  368,
-      244,  238,  251,  320,  437,  290,  320,  251,  632,  419,
-      419,  567,  478,  368,  402,  402,  402,  478,  589,  527,
-      402,  437,  402,  567,  634,  402,  635,  402,  419,  589,
-      438,  563,  419,  402,  438,  563,  464,  438,  527,  438,
+      245,  223,  238,  144,  223,  251,  267,  368,  267,  290,
+      244,  238,  251,  438,  633,  320,  245,  251,  320,  290,
+      528,  368,  251,  402,  402,  402,  420,  420,  439,  402,
+      438,  402,  439,  479,  402,  439,  402,  439,  479,  528,
+      465,  568,  402,  578,  465,  420,  465,  465,  564,  420,
 
-      464,  576,  464,  464,  590,  633,  584,  636,  576,  584,
-      584,  637,  638,  594,  464,  584,  594,  601,  639,  640,
-      601,  590,  633,  641,  590,  642,  645,  646,  648,  650,
-      651,  652,  653,  654,  655,  656,  657,  658,  659,  660,
-      661,  662,  654,  663,  664,  665,  666,  667,  668,  669,
-      670,  653,  671,  672,  674,  675,  677,  678,  679,  680,
-      681,  682,  683,  684,  685,  686,  687,  686,  688,  686,
-      690,  691,  692,  686,  694,  695,  696,  697,  698,  686,
-      692,  699,  700,  701,  702,  703,  704,  706,  707,  708,
-      709,  711,  699,  712,  714,  715,  717,  718,  719,  722,
+      578,  586,  564,  568,  586,  586,  591,  592,  465,  596,
+      586,  603,  596,  634,  603,  635,  636,  591,  637,  638,
+      639,  640,  641,  642,  592,  643,  644,  592,  647,  648,
+      650,  652,  635,  653,  654,  655,  656,  657,  658,  659,
+      660,  661,  662,  663,  664,  656,  665,  666,  667,  668,
+      669,  670,  671,  672,  655,  673,  674,  676,  677,  679,
+      680,  681,  682,  683,  684,  685,  686,  687,  688,  689,
+      688,  690,  688,  692,  693,  694,  688,  696,  697,  698,
+      699,  700,  688,  694,  701,  702,  703,  704,  705,  706,
+      708,  709,  710,  711,  713,  701,  714,  716,  717,  719,
 
-      723,  724,  708,  726,  727,  728,  729,  708,  730,  731,
-      732,  733,  734,  735,  737,  738,  739,  740,  741,  742,
-      743,  744,  745,  746,  747,  748,  749,  750,  751,  752,
-      753,  754,  755,  756,  757,  758,  759,  761,  762,  763,
-      764,  765,  766,  768,  769,  771,  772,  773,  774,  775,
-      776,  777,  778,  779,  779,  780,  781,  782,  784,  786,
-      787,  788,  789,  791,  792,  793,  789,  794,  789,  795,
-      796,  797,  789,  789,  801,  803,  804,  805,  806,  807,
-      808,  809,  810,  813,  815,  816,  817,  818,  819,  820,
-      821,  822,  823,  824,  825,  826,  827,  829,  830,  831,
+      720,  721,  724,  725,  726,  710,  728,  729,  730,  731,
+      710,  732,  733,  734,  735,  736,  737,  739,  740,  741,
+      742,  744,  745,  746,  747,  748,  749,  750,  751,  752,
+      753,  754,  755,  756,  757,  758,  759,  760,  761,  762,
+      764,  765,  766,  767,  768,  769,  771,  772,  774,  775,
+      776,  777,  778,  779,  780,  781,  782,  782,  783,  784,
+      785,  787,  789,  790,  791,  792,  794,  795,  796,  792,
+      797,  792,  798,  799,  800,  792,  792,  804,  806,  807,
+      808,  809,  810,  811,  812,  813,  816,  818,  819,  820,
+      821,  822,  823,  824,  825,  826,  827,  828,  829,  830,
 
-      833,  834,  835,  836,  837,  838,  839,  840,  841,  842,
+      832,  833,  834,  836,  837,  838,  839,  840,  841,  842,
       843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
-      853,  854,  855,  856,  857,  858,  856,  859,  860,  862,
-      863,  864,  865,  866,  867,  868,  869,  870,  871,  872,
-      873,  874,  875,  876,  877,  878,  879,  880,  881,  869,
-      869,  882,  885,  887,  888,  889,  890,  893,  894,  895,
+      853,  854,  855,  856,  857,  858,  859,  860,  861,  859,
+      862,  863,  865,  866,  867,  868,  869,  870,  871,  872,
+      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
+      883,  884,  872,  872,  885,  888,  890,  891,  892,  893,
       896,  897,  898,  899,  900,  901,  902,  903,  904,  905,
-      909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
+      906,  907,  908,  912,  913,  914,  915,  916,  917,  918,
       919,  920,  921,  922,  923,  924,  925,  926,  927,  928,
       929,  930,  931,  932,  933,  934,  935,  936,  937,  938,
 
-      939,  941,  942,  943,  944,  945,  946,  947,  948,  949,
+      939,  940,  941,  942,  944,  945,  946,  947,  948,  949,
       950,  951,  952,  953,  954,  955,  956,  957,  958,  959,
-      960,  961,  962,  966,  967,  968,  969,  970,  971,  972,
-      973,  974,  973,  975,  976,  977,  979,  980,  981,  983,
-      973,  985,  986,  987,  988,  989,  990,  991,  992,  989,
-      993,  992,  994,  995,  996,  998,  999,  994, 1000,  994,
-     1002, 1004, 1005,  994,  992, 1006, 1008, 1009, 1010,  994,
-     1011, 1012, 1013, 1014, 1015, 1018, 1019, 1020, 1021, 1022,
-     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1032, 1033, 1034,
-     1035, 1036, 1037, 1038, 1039, 1040, 1043, 1044, 1045, 1046,
+      960,  961,  962,  963,  964,  965,  969,  970,  971,  972,
+      973,  974,  975,  976,  977,  976,  978,  979,  980,  982,
+      983,  984,  986,  976,  988,  989,  990,  991,  992,  993,
+      994,  995,  992,  996,  995,  997,  998,  999, 1001, 1002,
+      997, 1003,  997, 1005, 1007, 1008,  997,  995, 1009, 1011,
+     1012, 1013,  997, 1014, 1015, 1016, 1017, 1018, 1021, 1022,
+     1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032,
+     1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1046,
 
-     1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
-     1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1067, 1069,
-     1070, 1071, 1073, 1061, 1075, 1077, 1078, 1079, 1080, 1081,
+     1047, 1048, 1049, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
+     1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067,
+     1068, 1070, 1072, 1073, 1074, 1076, 1064, 1078, 1080, 1081,
      1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
      1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
      1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
-     1112, 1113, 1114, 1115, 1116, 1118, 1119, 1120, 1119, 1121,
-     1122, 1123, 1124, 1125, 1126, 1127, 1119, 1128, 1130, 1131,
-     1132, 1133, 1134, 1135, 1136, 1138, 1139, 1140, 1141, 1142,
-     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1151, 1152, 1153,
+     1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1121, 1122,
+     1123, 1122, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1122,
+     1131, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1141, 1142,
+     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
 
-     1157, 1158, 1159, 1160, 1161, 1162, 1163, 1165, 1166, 1167,
+     1154, 1155, 1156, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
      1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
-     1178, 1179, 1181, 1182, 1183, 1184, 1186, 1188, 1189, 1190,
-     1191, 1194, 1195, 1196, 1198, 1199, 1200, 1201, 1202, 1203,
-     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1194, 1212,
-     1213, 1214, 1216, 1217, 1218, 1221, 1223, 1224, 1225, 1226,
+     1178, 1179, 1180, 1181, 1182, 1184, 1185, 1186, 1187, 1189,
+     1191, 1192, 1193, 1194, 1197, 1198, 1199, 1201, 1202, 1203,
+     1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213,
+     1214, 1197, 1215, 1216, 1217, 1219, 1220, 1221, 1224, 1226,
      1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
-     1237, 1238, 1239, 1240, 1241, 1243, 1244, 1245, 1246, 1247,
-     1248, 1249, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259,
-     1260, 1261, 1262, 1264, 1265, 1267, 1268, 1269, 1271, 1272,
+     1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1246, 1247,
+     1248, 1249, 1250, 1251, 1252, 1255, 1256, 1257, 1258, 1259,
+     1260, 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1270, 1271,
 
-     1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
+     1272, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
      1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292,
-     1293, 1294, 1295, 1296, 1297, 1299, 1300, 1301, 1302, 1303,
+     1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1302, 1303,
      1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313,
-     1314, 1316, 1317, 1319, 1320, 1322, 1323, 1324, 1326, 1327,
-     1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337,
-     1338, 1339, 1340, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
-     1351, 1352, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
-     1363, 1364, 1366, 1367, 1368, 1370, 1371, 1372, 1373, 1374,
-     1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1384, 1385,
+     1314, 1315, 1316, 1317, 1319, 1320, 1322, 1323, 1325, 1326,
+     1327, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337,
+     1338, 1339, 1340, 1341, 1342, 1343, 1345, 1346, 1347, 1348,
+     1349, 1350, 1351, 1354, 1355, 1358, 1359, 1360, 1361, 1362,
+     1363, 1364, 1365, 1366, 1367, 1369, 1370, 1371, 1373, 1374,
+     1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384,
 
-     1386, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396,
+     1385, 1387, 1388, 1389, 1391, 1392, 1393, 1394, 1395, 1396,
      1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406,
-     1407, 1409, 1410, 1411, 1414, 1415, 1416, 1417, 1418, 1419,
-     1420, 1421, 1422, 1423, 1425, 1427, 1428, 1430, 1431, 1432,
-     1433, 1434, 1435, 1414, 1436, 1418, 1437, 1438, 1439, 1440,
-     1441, 1443, 1444, 1446, 1439, 1447, 1448, 1449, 1451, 1452,
-     1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
-     1463, 1464, 1465, 1466, 1467, 1468, 1470, 1471, 1472, 1473,
-     1474, 1475, 1476, 1477, 1478, 1479, 1481, 1482, 1483, 1484,
-     1486, 1487, 1488, 1489, 1490, 1491, 1494, 1495, 1496, 1497,
+     1407, 1408, 1409, 1410, 1412, 1413, 1414, 1417, 1418, 1419,
+     1420, 1421, 1422, 1423, 1424, 1425, 1426, 1428, 1430, 1431,
+     1433, 1434, 1435, 1436, 1437, 1438, 1417, 1439, 1421, 1440,
+     1441, 1442, 1443, 1444, 1446, 1447, 1449, 1442, 1450, 1451,
+     1452, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462,
+     1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1473,
+     1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1484,
+     1485, 1486, 1487, 1489, 1490, 1491, 1492, 1493, 1494, 1497,
 
-     1498, 1499, 1500, 1501, 1502, 1504, 1505, 1508, 1510, 1511,
-     1512, 1513, 1514, 1515, 1518, 1519, 1520, 1521, 1522, 1523,
-     1524, 1525, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
-     1537, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1549, 1550,
-     1551, 1552, 1553, 1554, 1555, 1556, 1557, 1559, 1560, 1561,
-     1562, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572,
-     1573, 1574, 1575, 1576, 1577, 1578, 1580, 1581, 1583, 1584,
-     1586, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597,
-     1598, 1599, 1600, 1601, 1603, 1604, 1606, 1607, 1609, 1611,
-     1612, 1613, 1614, 1615, 1616, 1617, 1618, 1622, 1623, 1624,
+     1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1507, 1508,
+     1511, 1513, 1514, 1515, 1516, 1517, 1518, 1521, 1522, 1523,
+     1524, 1525, 1526, 1527, 1528, 1532, 1533, 1534, 1535, 1536,
+     1537, 1538, 1539, 1540, 1543, 1544, 1545, 1546, 1547, 1548,
+     1549, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560,
+     1562, 1563, 1564, 1565, 1567, 1568, 1569, 1570, 1571, 1572,
+     1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1583,
+     1584, 1586, 1587, 1589, 1592, 1593, 1594, 1595, 1596, 1597,
+     1598, 1599, 1600, 1601, 1602, 1603, 1604, 1606, 1607, 1609,
+     1610, 1612, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621,
 
-     1625, 1626, 1627, 1629, 1630, 1632, 1634, 1635, 1636, 1639,
-     1640, 1641, 1642, 1643, 1644, 1645, 1644, 1647, 1648, 1649,
-     1650, 1651, 1655, 1656, 1657, 1659, 1660, 1661, 1662, 1663,
-     1664, 1665, 1666, 1667, 1669, 1670, 1671, 1672, 1673, 1675,
-     1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685,
-     1686, 1687, 1688, 1689, 1692, 1693, 1693, 1694, 1695, 1696,
-     1697, 1698, 1699, 1700, 1701, 1702, 1704, 1707, 1710, 1711,
-     1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1722, 1723,
-     1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733,
-     1734, 1735, 1736, 1737, 1738, 1741, 1742, 1743, 1744, 1745,
+     1625, 1626, 1627, 1628, 1629, 1630, 1632, 1633, 1635, 1637,
+     1638, 1639, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1647,
+     1650, 1651, 1652, 1653, 1654, 1658, 1659, 1660, 1662, 1663,
+     1664, 1665, 1666, 1667, 1668, 1669, 1670, 1672, 1673, 1674,
+     1675, 1676, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685,
+     1686, 1687, 1688, 1689, 1690, 1691, 1692, 1695, 1696, 1696,
+     1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1707,
+     1710, 1713, 1714, 1716, 1717, 1718, 1719, 1720, 1721, 1722,
+     1723, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733,
+     1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1744, 1745,
 
-     1746, 1747, 1748, 1749, 1750, 1752, 1754, 1755, 1756, 1757,
-     1759, 1760, 1763, 1766, 1767, 1768, 1769, 1771, 1772, 1773,
-     1774, 1775, 1776, 1777, 1778, 1781, 1782, 1783, 1784, 1785,
-     1786, 1787, 1788, 1789, 1790, 1792, 1793, 1794, 1795, 1796,
-     1798, 1799, 1800, 1805, 1806, 1807, 1808, 1809, 1811, 1812,
-     1813, 1814, 1815, 1817, 1818, 1819, 1821, 1823, 1824, 1825,
-     1826, 1827, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837,
-     1838, 1840, 1841, 1842, 1844, 1845, 1846, 1847, 1848, 1849,
-     1850, 1851, 1852, 1854, 1855, 1856, 1859, 1860, 1861, 1862,
-     1863, 1865, 1866, 1868, 1871, 1872, 1873, 1874, 1876, 1878,
+     1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1755, 1757,
+     1758, 1759, 1760, 1762, 1763, 1766, 1769, 1770, 1771, 1772,
+     1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1784, 1785,
+     1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1795, 1796,
+     1797, 1798, 1799, 1801, 1802, 1803, 1808, 1809, 1810, 1811,
+     1812, 1814, 1815, 1816, 1817, 1818, 1820, 1821, 1822, 1824,
+     1826, 1827, 1828, 1829, 1830, 1833, 1834, 1835, 1836, 1837,
+     1838, 1839, 1840, 1841, 1843, 1844, 1845, 1847, 1848, 1849,
+     1850, 1851, 1852, 1853, 1854, 1855, 1857, 1858, 1859, 1862,
+     1863, 1864, 1865, 1866, 1868, 1869, 1871, 1874, 1875, 1876,
 
-     1879, 1880, 1881, 1883, 1884, 1885, 1887, 1889, 1890, 1894,
-     1895, 1895, 1896, 1897, 1898,  629,  628,  627,  626,  625,
-      624,  622,  621,  620,  619,  618,  617,  616,  615,  614,
-      611,  610,  609,  608,  607,  606,  605,  603,  602,  600,
-      599,  598,  597,  596,  593,  592,  591,  588,  587,  586,
-      585,  583,  582,  581,  580,  579,  578,  577,  575,  574,
-      573,  572,  571,  570,  569,  568,  566,  565,  564,  562,
-      561,  560,  559,  558,  557,  556,  555,  554,  553,  552,
-      551,  550,  549,  548,  547,  546,  545,  544,  543,  542,
-      541,  540,  539,  538,  537,  536,  535,  533,  532,  531,
+     1877, 1879, 1881, 1882, 1883, 1884, 1886, 1887, 1888, 1890,
+     1892, 1893, 1897, 1898, 1898, 1899, 1900, 1901,  630,  629,
+      628,  627,  626,  624,  623,  622,  621,  620,  619,  618,
+      617,  616,  613,  612,  611,  610,  609,  608,  607,  605,
+      604,  602,  601,  600,  599,  598,  595,  594,  593,  590,
+      589,  588,  587,  585,  584,  583,  582,  581,  580,  579,
+      577,  576,  575,  574,  573,  572,  571,  570,  569,  567,
+      566,  565,  563,  562,  561,  560,  559,  558,  557,  556,
+      555,  554,  553,  552,  551,  550,  549,  548,  547,  546,
+      545,  544,  543,  542,  541,  540,  539,  538,  537,  536,
 
-      530,  529,  528,  526,  525,  523,  522,  521,  520,  519,
-      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
-      507,  506,  504,  503,  501,  500,  499,  498,  497,  495,
-      494,  493,  492,  491,  489,  488,  487,  486,  485,  484,
-      483,  481,  479,  476,  475,  474,  473,  472,  471,  470,
-      469,  468,  467,  466,  465,  463,  462,  461,  460,  459,
-      457,  456,  455,  454,  453,  452,  451,  450,  449,  448,
-      447,  446,  445,  444,  443,  442,  441,  440,  439,  436,
-      435,  434,  433,  432,  431,  430,  429,  428,  427,  426,
-      425,  423,  421,  420,  418,  417,  416,  415,  414,  413,
+      534,  533,  532,  531,  530,  529,  527,  526,  524,  523,
+      522,  521,  520,  518,  517,  516,  515,  514,  513,  512,
+      511,  510,  509,  508,  507,  505,  504,  502,  501,  500,
+      499,  498,  496,  495,  494,  493,  492,  490,  489,  488,
+      487,  486,  485,  484,  482,  480,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  468,  467,  466,  464,  463,
+      462,  461,  460,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+      441,  440,  437,  436,  435,  434,  433,  432,  431,  430,
+      429,  428,  427,  426,  424,  422,  421,  419,  418,  417,
 
-      412,  411,  410,  408,  407,  406,  405,  404,  403,  401,
-      400,  399,  398,  397,  396,  395,  394,  393,  392,  391,
-      390,  389,  388,  387,  386,  385,  384,  383,  382,  381,
-      380,  377,  376,  375,  374,  373,  371,  370,  369,  367,
-      366,  365,  364,  363,  362,  361,  359,  358,  357,  356,
-      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
-      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
-      334,  333,  330,  329,  328,  327,  326,  325,  324,  323,
-      322,  321,  319,  318,  317,  315,  314,  312,  311,  310,
-      309,  308,  307,  306,  304,  303,  302,  301,  300,  299,
+      416,  415,  414,  413,  412,  411,  409,  408,  407,  406,
+      405,  404,  403,  401,  400,  399,  398,  397,  396,  395,
+      394,  393,  392,  391,  390,  389,  388,  387,  386,  385,
+      384,  383,  382,  381,  380,  377,  376,  375,  374,  373,
+      371,  370,  369,  367,  366,  365,  364,  363,  362,  361,
+      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
+      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
+      339,  338,  337,  336,  334,  333,  330,  329,  328,  327,
+      326,  325,  324,  323,  322,  321,  319,  318,  317,  315,
+      314,  312,  311,  310,  309,  308,  307,  306,  304,  303,
 
-      297,  296,  295,  294,  293,  292,  291,  289,  288,  287,
-      286,  285,  284,  283,  282,  281,  279,  278,  277,  276,
-      275,  273,  272,  271,  270,  269,  268,  266,  265,  264,
-      263,  262,  261,  260,  259,  258,  257,  256,  255,  254,
-      253,  252,  250,  249,  248,  247,  246,  245,  243,  242,
-      241,  240,  239,  237,  236,  235,  234,  233,  232,  231,
-      230,  229,  228,  227,  226,  225,  224,  222,  221,  219,
-      218,  217,  216,  215,  214,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  203,  202,  201,  199,  198,  197,
-      196,  195,  194,  193,  192,  191,  190,  189,  188,  187,
+      302,  301,  300,  299,  297,  296,  295,  294,  293,  292,
+      291,  289,  288,  287,  286,  285,  284,  283,  282,  281,
+      279,  278,  277,  276,  275,  273,  272,  271,  270,  269,
+      268,  266,  265,  264,  263,  262,  261,  260,  259,  258,
+      257,  256,  255,  254,  253,  252,  250,  249,  248,  247,
+      246,  243,  242,  241,  240,  239,  237,  236,  235,  234,
+      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
+      222,  221,  219,  218,  217,  216,  215,  214,  212,  211,
+      210,  209,  208,  207,  206,  205,  204,  203,  202,  201,
+      199,  198,  197,  196,  195,  194,  193,  192,  191,  190,
 
-      186,  185,  184,  182,  180,  179,  178,  177,  176,  175,
-      174,  173,  172,  171,  170,  169,  168,  167,  166,  165,
-      164,  163,  162,  161,  160,  159,  157,  156,  155,  154,
-      153,  152,  151,  150,  149,  146,  145,  143,  142,  141,
-      140,  138,  137,  136,  135,  134,  133,  132,  130,  129,
-      128,  124,  121,  120,  118,  117,  116,  115,  113,  112,
-      111,  110,  108,  104,  103,  101,  100,   99,   98,   97,
-       96,   95,   94,   93,   92,   90,   89,   88,   86,   84,
-       82,   81,   80,   78,   77,   76,   72,   71,   70,   69,
-       68,   65,   64,   60,   59,   57,   56,   55,   54,   53,
+      189,  188,  187,  186,  185,  184,  182,  180,  179,  178,
+      177,  176,  175,  174,  173,  172,  171,  170,  169,  168,
+      167,  166,  165,  164,  163,  162,  161,  160,  159,  157,
+      156,  155,  154,  153,  152,  151,  150,  149,  146,  145,
+      143,  142,  141,  140,  138,  137,  136,  135,  134,  133,
+      132,  130,  129,  128,  124,  121,  120,  118,  117,  116,
+      115,  113,  112,  111,  110,  108,  104,  103,  101,  100,
+       99,   98,   97,   96,   95,   94,   93,   92,   90,   89,
+       88,   86,   84,   82,   81,   80,   78,   77,   76,   72,
+       71,   70,   69,   68,   65,   64,   60,   59,   57,   56,
 
-       52,   51,   50,   49,   44,   38,   36,   35,   33,   28,
-       26,   21,    5,    3, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893, 1893,
-     1893, 1893, 1893, 1893, 1893, 1893
+       55,   54,   53,   52,   51,   50,   49,   44,   38,   36,
+       35,   33,   28,   26,   21,    5,    3, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896,
+     1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896, 1896
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1454,7 +1456,7 @@
  */
 #define YY_NO_UNPUT 1
 #define YY_NEVER_INTERACTIVE 1
-#line 31 "ircd_lexer.l"
+#line 32 "ircd_lexer.l"
 #include "stdinc.h"
 #include "tools.h"
 #include "irc_string.h"
@@ -1486,7 +1488,7 @@
 static void ccomment(void);
 static void cinclude(void);
 static int ieof(void);
-#line 1489 "lex.yy.c"
+#line 1492 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1637,9 +1639,9 @@
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
-#line 70 "ircd_lexer.l"
+#line 71 "ircd_lexer.l"
 
-#line 1642 "lex.yy.c"
+#line 1645 "lex.yy.c"
 
 	if ( yy_init )
 		{
@@ -1696,13 +1698,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 1894 )
+				if ( yy_current_state >= 1897 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 1915 );
+		while ( yy_base[yy_current_state] != 1918 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1730,37 +1732,37 @@
 
 case 1:
 YY_RULE_SETUP
-#line 71 "ircd_lexer.l"
+#line 72 "ircd_lexer.l"
 { cinclude(); }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 72 "ircd_lexer.l"
+#line 73 "ircd_lexer.l"
 { ccomment(); }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 74 "ircd_lexer.l"
+#line 75 "ircd_lexer.l"
 { strcpy(linebuf, yytext+1); ++lineno; yyless(1); }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 76 "ircd_lexer.l"
+#line 77 "ircd_lexer.l"
 ;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 77 "ircd_lexer.l"
+#line 78 "ircd_lexer.l"
 ;
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 79 "ircd_lexer.l"
+#line 80 "ircd_lexer.l"
 { yylval.number = atoi(yytext); return NUMBER; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 81 "ircd_lexer.l"
+#line 82 "ircd_lexer.l"
 { if (yytext[yyleng-2] == '\\')
 		    {
 		      yyless(yyleng-1); /* return last quote */
@@ -1808,1444 +1810,1449 @@
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 126 "ircd_lexer.l"
+#line 127 "ircd_lexer.l"
 { return NOT; }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 127 "ircd_lexer.l"
+#line 128 "ircd_lexer.l"
 { return ACCEPT_PASSWORD; }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 128 "ircd_lexer.l"
+#line 129 "ircd_lexer.l"
 { return ACTION; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 129 "ircd_lexer.l"
+#line 130 "ircd_lexer.l"
 { return ADMIN; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 130 "ircd_lexer.l"
+#line 131 "ircd_lexer.l"
 { return ADMIN; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 131 "ircd_lexer.l"
+#line 132 "ircd_lexer.l"
 { return AFTYPE; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 132 "ircd_lexer.l"
+#line 133 "ircd_lexer.l"
 { return T_ALL; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 133 "ircd_lexer.l"
+#line 134 "ircd_lexer.l"
 { return T_ALLOW; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 134 "ircd_lexer.l"
+#line 135 "ircd_lexer.l"
 { return IRCD_AUTH; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 135 "ircd_lexer.l"
+#line 136 "ircd_lexer.l"
 { return AUTOCONN; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 136 "ircd_lexer.l"
+#line 137 "ircd_lexer.l"
 { return T_BLOCK; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 137 "ircd_lexer.l"
+#line 138 "ircd_lexer.l"
 { return BURST_AWAY; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 138 "ircd_lexer.l"
+#line 139 "ircd_lexer.l"
 { return BURST_TOPICWHO; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 139 "ircd_lexer.l"
+#line 140 "ircd_lexer.l"
 { return CAN_FLOOD; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 140 "ircd_lexer.l"
+#line 141 "ircd_lexer.l"
 { return CAN_IDLE; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 141 "ircd_lexer.l"
+#line 142 "ircd_lexer.l"
 { return CALLER_ID_WAIT; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 142 "ircd_lexer.l"
+#line 143 "ircd_lexer.l"
 { return OPERS_BYPASS_CALLERID; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 143 "ircd_lexer.l"
+#line 144 "ircd_lexer.l"
 { return CHANNEL; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 144 "ircd_lexer.l"
+#line 145 "ircd_lexer.l"
 { return CIDR_BITLEN_IPV4; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 145 "ircd_lexer.l"
+#line 146 "ircd_lexer.l"
 { return CIDR_BITLEN_IPV6; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 146 "ircd_lexer.l"
+#line 147 "ircd_lexer.l"
 { return CIPHER_PREFERENCE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 147 "ircd_lexer.l"
+#line 148 "ircd_lexer.l"
 { return CLASS; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 148 "ircd_lexer.l"
+#line 149 "ircd_lexer.l"
 { return T_CLIENT_FLOOD; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 149 "ircd_lexer.l"
+#line 150 "ircd_lexer.l"
 { return T_CLUSTER; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 150 "ircd_lexer.l"
+#line 151 "ircd_lexer.l"
 { return COMPRESSED; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 151 "ircd_lexer.l"
+#line 152 "ircd_lexer.l"
 { return COMPRESSION_LEVEL; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 152 "ircd_lexer.l"
+#line 153 "ircd_lexer.l"
 { return CONNECT; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 153 "ircd_lexer.l"
+#line 154 "ircd_lexer.l"
 { return CONNECTFREQ; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 154 "ircd_lexer.l"
+#line 155 "ircd_lexer.l"
 { return CRYPTLINK; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 155 "ircd_lexer.l"
+#line 156 "ircd_lexer.l"
 { return DEFAULT_CIPHER_PREFERENCE; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 156 "ircd_lexer.l"
+#line 157 "ircd_lexer.l"
 { return DEFAULT_FLOODCOUNT; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 157 "ircd_lexer.l"
+#line 158 "ircd_lexer.l"
 { return DEFAULT_SPLIT_SERVER_COUNT; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 158 "ircd_lexer.l"
+#line 159 "ircd_lexer.l"
 { return DEFAULT_SPLIT_USER_COUNT; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 159 "ircd_lexer.l"
+#line 160 "ircd_lexer.l"
 { return DENY; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 160 "ircd_lexer.l"
+#line 161 "ircd_lexer.l"
 { return DESCRIPTION; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 161 "ircd_lexer.l"
+#line 162 "ircd_lexer.l"
 { return DIE; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 162 "ircd_lexer.l"
+#line 163 "ircd_lexer.l"
 { return DISABLE_AUTH; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 163 "ircd_lexer.l"
+#line 164 "ircd_lexer.l"
 { return DISABLE_FAKE_CHANNELS; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 164 "ircd_lexer.l"
+#line 165 "ircd_lexer.l"
 { return DISABLE_HIDDEN; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 165 "ircd_lexer.l"
+#line 166 "ircd_lexer.l"
 { return DISABLE_LOCAL_CHANNELS; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 166 "ircd_lexer.l"
+#line 167 "ircd_lexer.l"
 { return DISABLE_REMOTE_COMMANDS; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 167 "ircd_lexer.l"
+#line 168 "ircd_lexer.l"
 { return DOT_IN_IP6_ADDR; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 168 "ircd_lexer.l"
+#line 169 "ircd_lexer.l"
 { return DOTS_IN_IDENT; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 169 "ircd_lexer.l"
+#line 170 "ircd_lexer.l"
 { return DURATION; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 170 "ircd_lexer.l"
+#line 171 "ircd_lexer.l"
 { return EGDPOOL_PATH; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 171 "ircd_lexer.l"
+#line 172 "ircd_lexer.l"
 { return EMAIL; }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 172 "ircd_lexer.l"
+#line 173 "ircd_lexer.l"
 { return ENABLE; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 173 "ircd_lexer.l"
+#line 174 "ircd_lexer.l"
 { return ENCRYPTED; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 174 "ircd_lexer.l"
+#line 175 "ircd_lexer.l"
 { return EXCEED_LIMIT; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 175 "ircd_lexer.l"
+#line 176 "ircd_lexer.l"
 { return EXEMPT; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 176 "ircd_lexer.l"
+#line 177 "ircd_lexer.l"
 { return FAKENAME; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 177 "ircd_lexer.l"
+#line 178 "ircd_lexer.l"
 { return IRCD_FLAGS; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 178 "ircd_lexer.l"
+#line 179 "ircd_lexer.l"
 { return FLATTEN_LINKS; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 179 "ircd_lexer.l"
+#line 180 "ircd_lexer.l"
 { return FGLINELOG; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 180 "ircd_lexer.l"
+#line 181 "ircd_lexer.l"
 { return FGLINELOG; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 181 "ircd_lexer.l"
+#line 182 "ircd_lexer.l"
 { return FKILLLOG; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 182 "ircd_lexer.l"
+#line 183 "ircd_lexer.l"
 { return FIOERRLOG; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 183 "ircd_lexer.l"
+#line 184 "ircd_lexer.l"
 { return FIOERRLOG; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 184 "ircd_lexer.l"
+#line 185 "ircd_lexer.l"
 { return FKILLLOG; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 185 "ircd_lexer.l"
+#line 186 "ircd_lexer.l"
 { return FKLINELOG; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 186 "ircd_lexer.l"
+#line 187 "ircd_lexer.l"
 { return FKLINELOG; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 187 "ircd_lexer.l"
+#line 188 "ircd_lexer.l"
 { return FFAILED_OPERLOG; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 188 "ircd_lexer.l"
+#line 189 "ircd_lexer.l"
 { return FOPERLOG; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 189 "ircd_lexer.l"
+#line 190 "ircd_lexer.l"
 { return FOPERLOG; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 190 "ircd_lexer.l"
+#line 191 "ircd_lexer.l"
 { return FUSERLOG; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 191 "ircd_lexer.l"
+#line 192 "ircd_lexer.l"
 { return FUSERLOG; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 192 "ircd_lexer.l"
+#line 193 "ircd_lexer.l"
 { return GECOS; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 193 "ircd_lexer.l"
+#line 194 "ircd_lexer.l"
 { return GENERAL; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 194 "ircd_lexer.l"
+#line 195 "ircd_lexer.l"
 { return GLINE; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 195 "ircd_lexer.l"
+#line 196 "ircd_lexer.l"
 { return GLINES; }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 196 "ircd_lexer.l"
+#line 197 "ircd_lexer.l"
 { return GLINE_EXEMPT; }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 197 "ircd_lexer.l"
+#line 198 "ircd_lexer.l"
 { return GLINE_MIN_CIDR; }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 198 "ircd_lexer.l"
+#line 199 "ircd_lexer.l"
 { return GLINE_MIN_CIDR6; }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 199 "ircd_lexer.l"
+#line 200 "ircd_lexer.l"
 { return GLOBAL_KILL; }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 200 "ircd_lexer.l"
+#line 201 "ircd_lexer.l"
 { return NEED_IDENT; }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 201 "ircd_lexer.l"
+#line 202 "ircd_lexer.l"
 { return NEED_IDENT; }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 202 "ircd_lexer.l"
+#line 203 "ircd_lexer.l"
 { return HAVENT_READ_CONF; }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 203 "ircd_lexer.l"
+#line 204 "ircd_lexer.l"
 { return HELP_CHANNEL; }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 204 "ircd_lexer.l"
+#line 205 "ircd_lexer.l"
 { return HIDDEN; }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 205 "ircd_lexer.l"
+#line 206 "ircd_lexer.l"
 { return HIDDEN_ADMIN; }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 206 "ircd_lexer.l"
+#line 207 "ircd_lexer.l"
 { return HIDDEN_NAME; }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 207 "ircd_lexer.l"
+#line 208 "ircd_lexer.l"
 { return HIDDEN_OPER; }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 208 "ircd_lexer.l"
+#line 209 "ircd_lexer.l"
 { return HIDE_SERVER_IPS; }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 209 "ircd_lexer.l"
+#line 210 "ircd_lexer.l"
 { return HIDE_SERVERS; }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 210 "ircd_lexer.l"
+#line 211 "ircd_lexer.l"
 { return HIDE_SPOOF_IPS; }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 211 "ircd_lexer.l"
+#line 212 "ircd_lexer.l"
 { return HOST; }
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 212 "ircd_lexer.l"
+#line 213 "ircd_lexer.l"
 { return HUB; }
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 213 "ircd_lexer.l"
+#line 214 "ircd_lexer.l"
 { return HUB_MASK; }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 214 "ircd_lexer.l"
+#line 215 "ircd_lexer.l"
 { return IDLETIME; }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 215 "ircd_lexer.l"
+#line 216 "ircd_lexer.l"
 { return IGNORE_BOGUS_TS; }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 216 "ircd_lexer.l"
+#line 217 "ircd_lexer.l"
 { return INVISIBLE_ON_CONNECT; }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 217 "ircd_lexer.l"
+#line 218 "ircd_lexer.l"
 { return IP; }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 218 "ircd_lexer.l"
+#line 219 "ircd_lexer.l"
 { return T_IPV4; }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 219 "ircd_lexer.l"
+#line 220 "ircd_lexer.l"
 { return T_IPV6; }
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 220 "ircd_lexer.l"
+#line 221 "ircd_lexer.l"
 { return JOIN_FLOOD_COUNT; }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 221 "ircd_lexer.l"
+#line 222 "ircd_lexer.l"
 { return JOIN_FLOOD_TIME; }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 222 "ircd_lexer.l"
+#line 223 "ircd_lexer.l"
 { return KILL; }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 223 "ircd_lexer.l"
+#line 224 "ircd_lexer.l"
 { return KILL_CHASE_TIME_LIMIT; }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 224 "ircd_lexer.l"
+#line 225 "ircd_lexer.l"
 { return KLINE; }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 225 "ircd_lexer.l"
+#line 226 "ircd_lexer.l"
 { return KLINE_EXEMPT; }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 226 "ircd_lexer.l"
+#line 227 "ircd_lexer.l"
 { return T_L_CRIT; }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 227 "ircd_lexer.l"
+#line 228 "ircd_lexer.l"
 { return T_L_DEBUG; }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 228 "ircd_lexer.l"
+#line 229 "ircd_lexer.l"
 { return T_L_ERROR; }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 229 "ircd_lexer.l"
+#line 230 "ircd_lexer.l"
 { return T_L_INFO; }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 230 "ircd_lexer.l"
+#line 231 "ircd_lexer.l"
 { return T_L_NOTICE; }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 231 "ircd_lexer.l"
+#line 232 "ircd_lexer.l"
 { return T_L_TRACE; }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 232 "ircd_lexer.l"
+#line 233 "ircd_lexer.l"
 { return T_L_WARN; }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 233 "ircd_lexer.l"
+#line 234 "ircd_lexer.l"
 { return LAZYLINK; }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 234 "ircd_lexer.l"
+#line 235 "ircd_lexer.l"
 { return LEAF_MASK; }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 235 "ircd_lexer.l"
+#line 236 "ircd_lexer.l"
 { return LISTEN; }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 236 "ircd_lexer.l"
+#line 237 "ircd_lexer.l"
 { return LOG_LEVEL; }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 237 "ircd_lexer.l"
+#line 238 "ircd_lexer.l"
 { return LOGGING; }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 238 "ircd_lexer.l"
+#line 239 "ircd_lexer.l"
 { return LOGGING; }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 239 "ircd_lexer.l"
+#line 240 "ircd_lexer.l"
 { return T_LOGPATH; }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 240 "ircd_lexer.l"
+#line 241 "ircd_lexer.l"
 { return TMASKED; }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 241 "ircd_lexer.l"
+#line 242 "ircd_lexer.l"
 { return T_MAX_CLIENTS; }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 242 "ircd_lexer.l"
+#line 243 "ircd_lexer.l"
 { return MAX_IDENT; }
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 243 "ircd_lexer.l"
+#line 244 "ircd_lexer.l"
 { return MAX_LOCAL; }
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 244 "ircd_lexer.l"
+#line 245 "ircd_lexer.l"
 { return MAX_GLOBAL; }
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 245 "ircd_lexer.l"
+#line 246 "ircd_lexer.l"
 { return MAX_NUMBER; }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 246 "ircd_lexer.l"
+#line 247 "ircd_lexer.l"
 { return MESSAGE_LOCALE; }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 247 "ircd_lexer.l"
+#line 248 "ircd_lexer.l"
 { return MIN_NONWILDCARD; }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 248 "ircd_lexer.l"
+#line 249 "ircd_lexer.l"
 { return MIN_NONWILDCARD_SIMPLE; }
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 249 "ircd_lexer.l"
-{ return NAME; }
+#line 250 "ircd_lexer.l"
+{ return MODE_Z; }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 250 "ircd_lexer.l"
-{ return NEED_PASSWORD; }
+#line 251 "ircd_lexer.l"
+{ return NAME; }
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 251 "ircd_lexer.l"
-{ return NETWORK_DESC; }
+#line 252 "ircd_lexer.l"
+{ return NEED_PASSWORD; }
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 252 "ircd_lexer.l"
-{ return NETWORK_NAME; }
+#line 253 "ircd_lexer.l"
+{ return NETWORK_DESC; }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 253 "ircd_lexer.l"
-{ return NICK; }
+#line 254 "ircd_lexer.l"
+{ return NETWORK_NAME; }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 254 "ircd_lexer.l"
-{ return NICK_CHANGES; }
+#line 255 "ircd_lexer.l"
+{ return NICK; }
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 255 "ircd_lexer.l"
-{ yylval.number = NO; return TBOOL; }
+#line 256 "ircd_lexer.l"
+{ return NICK_CHANGES; }
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 256 "ircd_lexer.l"
-{ return NO_CREATE_ON_SPLIT; }
+#line 257 "ircd_lexer.l"
+{ yylval.number = NO; return TBOOL; }
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 257 "ircd_lexer.l"
-{ return NO_JOIN_ON_SPLIT; }
+#line 258 "ircd_lexer.l"
+{ return NO_CREATE_ON_SPLIT; }
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 258 "ircd_lexer.l"
-{ return NO_OPER_FLOOD; }
+#line 259 "ircd_lexer.l"
+{ return NO_JOIN_ON_SPLIT; }
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 259 "ircd_lexer.l"
-{ return NO_TILDE; }
+#line 260 "ircd_lexer.l"
+{ return NO_OPER_FLOOD; }
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 260 "ircd_lexer.l"
-{ return NUMBER_PER_CIDR; }
+#line 261 "ircd_lexer.l"
+{ return NO_TILDE; }
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 261 "ircd_lexer.l"
-{ return NUMBER_PER_IP; }
+#line 262 "ircd_lexer.l"
+{ return NUMBER_PER_CIDR; }
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 262 "ircd_lexer.l"
-{ return OPERATOR; }
+#line 263 "ircd_lexer.l"
+{ return NUMBER_PER_IP; }
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 263 "ircd_lexer.l"
-{ return OPER_LOG; }
+#line 264 "ircd_lexer.l"
+{ return OPERATOR; }
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 264 "ircd_lexer.l"
-{ return OPER_PASS_RESV; }
+#line 265 "ircd_lexer.l"
+{ return OPER_LOG; }
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 265 "ircd_lexer.l"
-{ return OPERATOR; }
+#line 266 "ircd_lexer.l"
+{ return OPER_PASS_RESV; }
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 266 "ircd_lexer.l"
-{ return PASSWORD; }
+#line 267 "ircd_lexer.l"
+{ return OPERATOR; }
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 267 "ircd_lexer.l"
+#line 268 "ircd_lexer.l"
 { return PASSWORD; }
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 268 "ircd_lexer.l"
-{ return PING_COOKIE; }
+#line 269 "ircd_lexer.l"
+{ return PASSWORD; }
 	YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 269 "ircd_lexer.l"
-{ return PING_TIME; }
+#line 270 "ircd_lexer.l"
+{ return PING_COOKIE; }
 	YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 270 "ircd_lexer.l"
-{ return PING_WARNING; }
+#line 271 "ircd_lexer.l"
+{ return PING_TIME; }
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 271 "ircd_lexer.l"
-{ return PORT; }
+#line 272 "ircd_lexer.l"
+{ return PING_WARNING; }
 	YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 272 "ircd_lexer.l"
-{ return RESV; }
+#line 273 "ircd_lexer.l"
+{ return PORT; }
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 273 "ircd_lexer.l"
-{ return QUIET_ON_BAN; }
+#line 274 "ircd_lexer.l"
+{ return RESV; }
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 274 "ircd_lexer.l"
-{ return REASON; }
+#line 275 "ircd_lexer.l"
+{ return QUIET_ON_BAN; }
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 275 "ircd_lexer.l"
-{ return REDIRPORT; }
+#line 276 "ircd_lexer.l"
+{ return REASON; }
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 276 "ircd_lexer.l"
-{ return REDIRSERV; }
+#line 277 "ircd_lexer.l"
+{ return REDIRPORT; }
 	YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 277 "ircd_lexer.l"
-{ return REGEX_T; }
+#line 278 "ircd_lexer.l"
+{ return REDIRSERV; }
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 278 "ircd_lexer.l"
-{ return REHASH; }
+#line 279 "ircd_lexer.l"
+{ return REGEX_T; }
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 279 "ircd_lexer.l"
-{ return T_REJECT; }
+#line 280 "ircd_lexer.l"
+{ return REHASH; }
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 280 "ircd_lexer.l"
-{ return TREJECT_HOLD_TIME; }
+#line 281 "ircd_lexer.l"
+{ return T_REJECT; }
 	YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 281 "ircd_lexer.l"
-{ return REMOTE; }
+#line 282 "ircd_lexer.l"
+{ return TREJECT_HOLD_TIME; }
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 282 "ircd_lexer.l"
-{ return REMOTEBAN; }
+#line 283 "ircd_lexer.l"
+{ return REMOTE; }
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 283 "ircd_lexer.l"
-{ return RESTRICT_CHANNELS; }
+#line 284 "ircd_lexer.l"
+{ return REMOTEBAN; }
 	YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 284 "ircd_lexer.l"
-{ return RESV; }
+#line 285 "ircd_lexer.l"
+{ return RESTRICT_CHANNELS; }
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 285 "ircd_lexer.l"
-{ return RESV_EXEMPT; }
+#line 286 "ircd_lexer.l"
+{ return RESV; }
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 286 "ircd_lexer.l"
-{ return RSA_PRIVATE_KEY_FILE; }
+#line 287 "ircd_lexer.l"
+{ return RESV_EXEMPT; }
 	YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 287 "ircd_lexer.l"
-{ return RSA_PUBLIC_KEY_FILE; }
+#line 288 "ircd_lexer.l"
+{ return RSA_PRIVATE_KEY_FILE; }
 	YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 288 "ircd_lexer.l"
-{ return T_SSL; }
+#line 289 "ircd_lexer.l"
+{ return RSA_PUBLIC_KEY_FILE; }
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 289 "ircd_lexer.l"
-{ return SSL_CERTIFICATE_FILE; }
+#line 290 "ircd_lexer.l"
+{ return T_SSL; }
 	YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 290 "ircd_lexer.l"
-{ return SEND_PASSWORD; }
+#line 291 "ircd_lexer.l"
+{ return SSL_CERTIFICATE_FILE; }
 	YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 291 "ircd_lexer.l"
-{ return SENDQ; }
+#line 292 "ircd_lexer.l"
+{ return SEND_PASSWORD; }
 	YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 292 "ircd_lexer.l"
-{ return SERVERHIDE; }
+#line 293 "ircd_lexer.l"
+{ return SENDQ; }
 	YY_BREAK
 case 175:
 YY_RULE_SETUP
-#line 293 "ircd_lexer.l"
-{ return SERVERINFO; }
+#line 294 "ircd_lexer.l"
+{ return SERVERHIDE; }
 	YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 294 "ircd_lexer.l"
-{ return SERVLINK_PATH; }
+#line 295 "ircd_lexer.l"
+{ return SERVERINFO; }
 	YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 295 "ircd_lexer.l"
-{ return SERVICES_NAME; }
+#line 296 "ircd_lexer.l"
+{ return SERVLINK_PATH; }
 	YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 296 "ircd_lexer.l"
-{ return T_SHARED; }
+#line 297 "ircd_lexer.l"
+{ return SERVICES_NAME; }
 	YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 297 "ircd_lexer.l"
-{ return SHORT_MOTD; }
+#line 298 "ircd_lexer.l"
+{ return T_SHARED; }
 	YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 298 "ircd_lexer.l"
-{ return IRCD_SID; }
+#line 299 "ircd_lexer.l"
+{ return SHORT_MOTD; }
 	YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 299 "ircd_lexer.l"
-{ return SILENT; }
+#line 300 "ircd_lexer.l"
+{ return IRCD_SID; }
 	YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 300 "ircd_lexer.l"
-{ return T_SNOOP; }
+#line 301 "ircd_lexer.l"
+{ return SILENT; }
 	YY_BREAK
 case 183:
 YY_RULE_SETUP
-#line 301 "ircd_lexer.l"
-{ return SPOOF; }
+#line 302 "ircd_lexer.l"
+{ return T_SNOOP; }
 	YY_BREAK
 case 184:
 YY_RULE_SETUP
-#line 302 "ircd_lexer.l"
-{ return SPOOF_NOTICE; }
+#line 303 "ircd_lexer.l"
+{ return SPOOF; }
 	YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 303 "ircd_lexer.l"
-{ return TKLINE_EXPIRE_NOTICES; }
+#line 304 "ircd_lexer.l"
+{ return SPOOF_NOTICE; }
 	YY_BREAK
 case 186:
 YY_RULE_SETUP
-#line 304 "ircd_lexer.l"
-{ return TYPE; }
+#line 305 "ircd_lexer.l"
+{ return TKLINE_EXPIRE_NOTICES; }
 	YY_BREAK
 case 187:
 YY_RULE_SETUP
-#line 305 "ircd_lexer.l"
-{ return TRUE_NO_OPER_FLOOD; }
+#line 306 "ircd_lexer.l"
+{ return TYPE; }
 	YY_BREAK
 case 188:
 YY_RULE_SETUP
-#line 306 "ircd_lexer.l"
-{ return T_UMODES; }
+#line 307 "ircd_lexer.l"
+{ return TRUE_NO_OPER_FLOOD; }
 	YY_BREAK
 case 189:
 YY_RULE_SETUP
-#line 307 "ircd_lexer.l"
-{ return UNKLINE; }
+#line 308 "ircd_lexer.l"
+{ return T_UMODES; }
 	YY_BREAK
 case 190:
 YY_RULE_SETUP
-#line 308 "ircd_lexer.l"
-{ return USE_EGD; }
+#line 309 "ircd_lexer.l"
+{ return UNKLINE; }
 	YY_BREAK
 case 191:
 YY_RULE_SETUP
-#line 309 "ircd_lexer.l"
-{ return USE_EXCEPT; }
+#line 310 "ircd_lexer.l"
+{ return USE_EGD; }
 	YY_BREAK
 case 192:
 YY_RULE_SETUP
-#line 310 "ircd_lexer.l"
-{ return USE_INVEX; }
+#line 311 "ircd_lexer.l"
+{ return USE_EXCEPT; }
 	YY_BREAK
 case 193:
 YY_RULE_SETUP
-#line 311 "ircd_lexer.l"
-{ return USE_KNOCK; }
+#line 312 "ircd_lexer.l"
+{ return USE_INVEX; }
 	YY_BREAK
 case 194:
 YY_RULE_SETUP
-#line 312 "ircd_lexer.l"
-{ return USE_LOGGING; }
+#line 313 "ircd_lexer.l"
+{ return USE_KNOCK; }
 	YY_BREAK
 case 195:
 YY_RULE_SETUP
-#line 313 "ircd_lexer.l"
-{ return USE_WHOIS_ACTUALLY; }
+#line 314 "ircd_lexer.l"
+{ return USE_LOGGING; }
 	YY_BREAK
 case 196:
 YY_RULE_SETUP
-#line 314 "ircd_lexer.l"
-{ return THROTTLE_TIME; }
+#line 315 "ircd_lexer.l"
+{ return USE_WHOIS_ACTUALLY; }
 	YY_BREAK
 case 197:
 YY_RULE_SETUP
-#line 315 "ircd_lexer.l"
-{ return USER; } 
+#line 316 "ircd_lexer.l"
+{ return THROTTLE_TIME; }
 	YY_BREAK
 case 198:
 YY_RULE_SETUP
-#line 316 "ircd_lexer.l"
-{ return T_USERMODE; }
+#line 317 "ircd_lexer.l"
+{ return USER; } 
 	YY_BREAK
 case 199:
 YY_RULE_SETUP
-#line 317 "ircd_lexer.l"
-{ return TKLINE; } 
+#line 318 "ircd_lexer.l"
+{ return T_USERMODE; }
 	YY_BREAK
 case 200:
 YY_RULE_SETUP
-#line 318 "ircd_lexer.l"
-{ return TXLINE; } 
+#line 319 "ircd_lexer.l"
+{ return TKLINE; } 
 	YY_BREAK
 case 201:
 YY_RULE_SETUP
-#line 319 "ircd_lexer.l"
-{ return TRESV; } 
+#line 320 "ircd_lexer.l"
+{ return TXLINE; } 
 	YY_BREAK
 case 202:
 YY_RULE_SETUP
-#line 320 "ircd_lexer.l"
-{ return VHOST; }
+#line 321 "ircd_lexer.l"
+{ return TRESV; } 
 	YY_BREAK
 case 203:
 YY_RULE_SETUP
-#line 321 "ircd_lexer.l"
-{ return VHOST6; }
+#line 322 "ircd_lexer.l"
+{ return VHOST; }
 	YY_BREAK
 case 204:
 YY_RULE_SETUP
-#line 322 "ircd_lexer.l"
-{ return WARN; }
+#line 323 "ircd_lexer.l"
+{ return VHOST6; }
 	YY_BREAK
 case 205:
 YY_RULE_SETUP
-#line 323 "ircd_lexer.l"
-{ return WEBIRC; }
+#line 324 "ircd_lexer.l"
+{ return WARN; }
 	YY_BREAK
 case 206:
 YY_RULE_SETUP
-#line 324 "ircd_lexer.l"
-{ return XLINE; }
+#line 325 "ircd_lexer.l"
+{ return WEBIRC; }
 	YY_BREAK
 case 207:
 YY_RULE_SETUP
-#line 325 "ircd_lexer.l"
-{ yylval.number = YES; return TBOOL; }
+#line 326 "ircd_lexer.l"
+{ return XLINE; }
 	YY_BREAK
 case 208:
 YY_RULE_SETUP
 #line 327 "ircd_lexer.l"
-{ return FAILED_OPER_NOTICE; }
+{ yylval.number = YES; return TBOOL; }
 	YY_BREAK
 case 209:
 YY_RULE_SETUP
-#line 328 "ircd_lexer.l"
-{ return MAX_ACCEPT; }
+#line 329 "ircd_lexer.l"
+{ return FAILED_OPER_NOTICE; }
 	YY_BREAK
 case 210:
 YY_RULE_SETUP
-#line 329 "ircd_lexer.l"
-{ return MAX_NICK_CHANGES; }
+#line 330 "ircd_lexer.l"
+{ return MAX_ACCEPT; }
 	YY_BREAK
 case 211:
 YY_RULE_SETUP
-#line 330 "ircd_lexer.l"
-{ return MAX_CHANS_PER_USER; }
+#line 331 "ircd_lexer.l"
+{ return MAX_NICK_CHANGES; }
 	YY_BREAK
 case 212:
 YY_RULE_SETUP
-#line 331 "ircd_lexer.l"
-{ return MAX_NICK_TIME; }
+#line 332 "ircd_lexer.l"
+{ return MAX_CHANS_PER_USER; }
 	YY_BREAK
 case 213:
 YY_RULE_SETUP
-#line 332 "ircd_lexer.l"
-{ return ANTI_NICK_FLOOD; }
+#line 333 "ircd_lexer.l"
+{ return MAX_NICK_TIME; }
 	YY_BREAK
 case 214:
 YY_RULE_SETUP
-#line 333 "ircd_lexer.l"
-{ return ANTI_SPAM_EXIT_MESSAGE_TIME; }
+#line 334 "ircd_lexer.l"
+{ return ANTI_NICK_FLOOD; }
 	YY_BREAK
 case 215:
 YY_RULE_SETUP
-#line 334 "ircd_lexer.l"
-{ return TS_MAX_DELTA; }
+#line 335 "ircd_lexer.l"
+{ return ANTI_SPAM_EXIT_MESSAGE_TIME; }
 	YY_BREAK
 case 216:
 YY_RULE_SETUP
-#line 335 "ircd_lexer.l"
-{ return TS_WARN_DELTA; }
+#line 336 "ircd_lexer.l"
+{ return TS_MAX_DELTA; }
 	YY_BREAK
 case 217:
 YY_RULE_SETUP
-#line 336 "ircd_lexer.l"
-{ return LINKS_DELAY; }
+#line 337 "ircd_lexer.l"
+{ return TS_WARN_DELTA; }
 	YY_BREAK
 case 218:
 YY_RULE_SETUP
-#line 337 "ircd_lexer.l"
-{ return KLINE_REASON; }
+#line 338 "ircd_lexer.l"
+{ return LINKS_DELAY; }
 	YY_BREAK
 case 219:
 YY_RULE_SETUP
-#line 338 "ircd_lexer.l"
-{ return KLINE_WITH_REASON; }
+#line 339 "ircd_lexer.l"
+{ return KLINE_REASON; }
 	YY_BREAK
 case 220:
 YY_RULE_SETUP
-#line 339 "ircd_lexer.l"
-{ return WARN_NO_NLINE; }
+#line 340 "ircd_lexer.l"
+{ return KLINE_WITH_REASON; }
 	YY_BREAK
 case 221:
 YY_RULE_SETUP
 #line 341 "ircd_lexer.l"
-{ return STATS_E_DISABLED; }
+{ return WARN_NO_NLINE; }
 	YY_BREAK
 case 222:
 YY_RULE_SETUP
-#line 342 "ircd_lexer.l"
-{ return STATS_O_OPER_ONLY; }
+#line 343 "ircd_lexer.l"
+{ return STATS_E_DISABLED; }
 	YY_BREAK
 case 223:
 YY_RULE_SETUP
-#line 343 "ircd_lexer.l"
-{ return STATS_K_OPER_ONLY; }
+#line 344 "ircd_lexer.l"
+{ return STATS_O_OPER_ONLY; }
 	YY_BREAK
 case 224:
 YY_RULE_SETUP
-#line 344 "ircd_lexer.l"
-{ return STATS_I_OPER_ONLY; }
+#line 345 "ircd_lexer.l"
+{ return STATS_K_OPER_ONLY; }
 	YY_BREAK
 case 225:
 YY_RULE_SETUP
-#line 345 "ircd_lexer.l"
-{ return STATS_P_OPER_ONLY; }
+#line 346 "ircd_lexer.l"
+{ return STATS_I_OPER_ONLY; }
 	YY_BREAK
 case 226:
 YY_RULE_SETUP
-#line 346 "ircd_lexer.l"
-{ return PACE_WAIT; }
+#line 347 "ircd_lexer.l"
+{ return STATS_P_OPER_ONLY; }
 	YY_BREAK
 case 227:
 YY_RULE_SETUP
-#line 347 "ircd_lexer.l"
-{ return PACE_WAIT_SIMPLE; }
+#line 348 "ircd_lexer.l"
+{ return PACE_WAIT; }
 	YY_BREAK
 case 228:
 YY_RULE_SETUP
-#line 348 "ircd_lexer.l"
-{ return KNOCK_DELAY; }
+#line 349 "ircd_lexer.l"
+{ return PACE_WAIT_SIMPLE; }
 	YY_BREAK
 case 229:
 YY_RULE_SETUP
-#line 349 "ircd_lexer.l"
-{ return KNOCK_DELAY_CHANNEL; }
+#line 350 "ircd_lexer.l"
+{ return KNOCK_DELAY; }
 	YY_BREAK
 case 230:
 YY_RULE_SETUP
-#line 350 "ircd_lexer.l"
-{ return MAX_BANS; }
+#line 351 "ircd_lexer.l"
+{ return KNOCK_DELAY_CHANNEL; }
 	YY_BREAK
 case 231:
 YY_RULE_SETUP
-#line 351 "ircd_lexer.l"
-{ return MODULES; }
+#line 352 "ircd_lexer.l"
+{ return MAX_BANS; }
 	YY_BREAK
 case 232:
 YY_RULE_SETUP
-#line 352 "ircd_lexer.l"
-{ return MODULE; }
+#line 353 "ircd_lexer.l"
+{ return MODULES; }
 	YY_BREAK
 case 233:
 YY_RULE_SETUP
-#line 353 "ircd_lexer.l"
-{ return PATH; }
+#line 354 "ircd_lexer.l"
+{ return MODULE; }
 	YY_BREAK
 case 234:
 YY_RULE_SETUP
-#line 354 "ircd_lexer.l"
-{ return MAX_TARGETS; }
+#line 355 "ircd_lexer.l"
+{ return PATH; }
 	YY_BREAK
 case 235:
 YY_RULE_SETUP
 #line 356 "ircd_lexer.l"
-{ return T_UNXLINE; }
+{ return MAX_TARGETS; }
 	YY_BREAK
 case 236:
 YY_RULE_SETUP
-#line 357 "ircd_lexer.l"
-{ return T_UNRESV; }
+#line 358 "ircd_lexer.l"
+{ return T_UNXLINE; }
 	YY_BREAK
 case 237:
 YY_RULE_SETUP
 #line 359 "ircd_lexer.l"
-{ return OPER_ONLY_UMODES; }
+{ return T_UNRESV; }
 	YY_BREAK
 case 238:
 YY_RULE_SETUP
-#line 360 "ircd_lexer.l"
-{ return OPER_UMODES; }
+#line 361 "ircd_lexer.l"
+{ return OPER_ONLY_UMODES; }
 	YY_BREAK
 case 239:
 YY_RULE_SETUP
-#line 361 "ircd_lexer.l"
-{ return T_BOTS; }
+#line 362 "ircd_lexer.l"
+{ return OPER_UMODES; }
 	YY_BREAK
 case 240:
 YY_RULE_SETUP
-#line 362 "ircd_lexer.l"
-{ return T_CCONN; }
+#line 363 "ircd_lexer.l"
+{ return T_BOTS; }
 	YY_BREAK
 case 241:
 YY_RULE_SETUP
-#line 363 "ircd_lexer.l"
-{ return T_CCONN_FULL; }
+#line 364 "ircd_lexer.l"
+{ return T_CCONN; }
 	YY_BREAK
 case 242:
 YY_RULE_SETUP
-#line 364 "ircd_lexer.l"
-{ return T_DEAF; }
+#line 365 "ircd_lexer.l"
+{ return T_CCONN_FULL; }
 	YY_BREAK
 case 243:
 YY_RULE_SETUP
-#line 365 "ircd_lexer.l"
-{ return T_DEBUG; }
+#line 366 "ircd_lexer.l"
+{ return T_DEAF; }
 	YY_BREAK
 case 244:
 YY_RULE_SETUP
-#line 366 "ircd_lexer.l"
-{ return T_FULL; }
+#line 367 "ircd_lexer.l"
+{ return T_DEBUG; }
 	YY_BREAK
 case 245:
 YY_RULE_SETUP
-#line 367 "ircd_lexer.l"
-{ return T_SKILL; }
+#line 368 "ircd_lexer.l"
+{ return T_FULL; }
 	YY_BREAK
 case 246:
 YY_RULE_SETUP
-#line 368 "ircd_lexer.l"
-{ return T_NCHANGE; }
+#line 369 "ircd_lexer.l"
+{ return T_SKILL; }
 	YY_BREAK
 case 247:
 YY_RULE_SETUP
-#line 369 "ircd_lexer.l"
-{ return T_REJ; }
+#line 370 "ircd_lexer.l"
+{ return T_NCHANGE; }
 	YY_BREAK
 case 248:
 YY_RULE_SETUP
-#line 370 "ircd_lexer.l"
-{ return T_UNAUTH; }
+#line 371 "ircd_lexer.l"
+{ return T_REJ; }
 	YY_BREAK
 case 249:
 YY_RULE_SETUP
-#line 371 "ircd_lexer.l"
-{ return T_SPY; }
+#line 372 "ircd_lexer.l"
+{ return T_UNAUTH; }
 	YY_BREAK
 case 250:
 YY_RULE_SETUP
-#line 372 "ircd_lexer.l"
-{ return T_EXTERNAL; }
+#line 373 "ircd_lexer.l"
+{ return T_SPY; }
 	YY_BREAK
 case 251:
 YY_RULE_SETUP
-#line 373 "ircd_lexer.l"
-{ return T_OPERWALL; }
+#line 374 "ircd_lexer.l"
+{ return T_EXTERNAL; }
 	YY_BREAK
 case 252:
 YY_RULE_SETUP
-#line 374 "ircd_lexer.l"
-{ return T_SERVNOTICE; }
+#line 375 "ircd_lexer.l"
+{ return T_OPERWALL; }
 	YY_BREAK
 case 253:
 YY_RULE_SETUP
-#line 375 "ircd_lexer.l"
-{ return T_INVISIBLE; }
+#line 376 "ircd_lexer.l"
+{ return T_SERVNOTICE; }
 	YY_BREAK
 case 254:
 YY_RULE_SETUP
-#line 376 "ircd_lexer.l"
-{ return T_WALLOP; }
+#line 377 "ircd_lexer.l"
+{ return T_INVISIBLE; }
 	YY_BREAK
 case 255:
 YY_RULE_SETUP
-#line 377 "ircd_lexer.l"
-{ return T_CALLERID; }
+#line 378 "ircd_lexer.l"
+{ return T_WALLOP; }
 	YY_BREAK
 case 256:
 YY_RULE_SETUP
-#line 378 "ircd_lexer.l"
-{ return T_SOFTCALLERID; }
+#line 379 "ircd_lexer.l"
+{ return T_CALLERID; }
 	YY_BREAK
 case 257:
 YY_RULE_SETUP
-#line 379 "ircd_lexer.l"
-{ return T_DRONE; }
+#line 380 "ircd_lexer.l"
+{ return T_SOFTCALLERID; }
 	YY_BREAK
 case 258:
 YY_RULE_SETUP
-#line 380 "ircd_lexer.l"
-{ return T_LOCOPS; }
+#line 381 "ircd_lexer.l"
+{ return T_DRONE; }
 	YY_BREAK
 case 259:
 YY_RULE_SETUP
-#line 381 "ircd_lexer.l"
-{ return TOPICBURST; }
+#line 382 "ircd_lexer.l"
+{ return T_LOCOPS; }
 	YY_BREAK
 case 260:
 YY_RULE_SETUP
 #line 383 "ircd_lexer.l"
-{ return WEEKS; }
+{ return TOPICBURST; }
 	YY_BREAK
 case 261:
 YY_RULE_SETUP
-#line 384 "ircd_lexer.l"
+#line 385 "ircd_lexer.l"
 { return WEEKS; }
 	YY_BREAK
 case 262:
 YY_RULE_SETUP
-#line 385 "ircd_lexer.l"
-{ return DAYS; }
+#line 386 "ircd_lexer.l"
+{ return WEEKS; }
 	YY_BREAK
 case 263:
 YY_RULE_SETUP
-#line 386 "ircd_lexer.l"
+#line 387 "ircd_lexer.l"
 { return DAYS; }
 	YY_BREAK
 case 264:
 YY_RULE_SETUP
-#line 387 "ircd_lexer.l"
-{ return HOURS; }
+#line 388 "ircd_lexer.l"
+{ return DAYS; }
 	YY_BREAK
 case 265:
 YY_RULE_SETUP
-#line 388 "ircd_lexer.l"
+#line 389 "ircd_lexer.l"
 { return HOURS; }
 	YY_BREAK
 case 266:
 YY_RULE_SETUP
-#line 389 "ircd_lexer.l"
-{ return MINUTES; }
+#line 390 "ircd_lexer.l"
+{ return HOURS; }
 	YY_BREAK
 case 267:
 YY_RULE_SETUP
-#line 390 "ircd_lexer.l"
+#line 391 "ircd_lexer.l"
 { return MINUTES; }
 	YY_BREAK
 case 268:
 YY_RULE_SETUP
-#line 391 "ircd_lexer.l"
-{ return SECONDS; }
+#line 392 "ircd_lexer.l"
+{ return MINUTES; }
 	YY_BREAK
 case 269:
 YY_RULE_SETUP
-#line 392 "ircd_lexer.l"
+#line 393 "ircd_lexer.l"
 { return SECONDS; }
 	YY_BREAK
 case 270:
 YY_RULE_SETUP
 #line 394 "ircd_lexer.l"
-{ return BYTES; }
+{ return SECONDS; }
 	YY_BREAK
 case 271:
 YY_RULE_SETUP
-#line 395 "ircd_lexer.l"
+#line 396 "ircd_lexer.l"
 { return BYTES; }
 	YY_BREAK
 case 272:
 YY_RULE_SETUP
-#line 396 "ircd_lexer.l"
-{ return KBYTES; }
+#line 397 "ircd_lexer.l"
+{ return BYTES; }
 	YY_BREAK
 case 273:
 YY_RULE_SETUP
-#line 397 "ircd_lexer.l"
+#line 398 "ircd_lexer.l"
 { return KBYTES; }
 	YY_BREAK
 case 274:
 YY_RULE_SETUP
-#line 398 "ircd_lexer.l"
+#line 399 "ircd_lexer.l"
 { return KBYTES; }
 	YY_BREAK
 case 275:
 YY_RULE_SETUP
-#line 399 "ircd_lexer.l"
+#line 400 "ircd_lexer.l"
 { return KBYTES; }
 	YY_BREAK
 case 276:
 YY_RULE_SETUP
-#line 400 "ircd_lexer.l"
+#line 401 "ircd_lexer.l"
 { return KBYTES; }
 	YY_BREAK
 case 277:
 YY_RULE_SETUP
-#line 401 "ircd_lexer.l"
-{ return MBYTES; }
+#line 402 "ircd_lexer.l"
+{ return KBYTES; }
 	YY_BREAK
 case 278:
 YY_RULE_SETUP
-#line 402 "ircd_lexer.l"
+#line 403 "ircd_lexer.l"
 { return MBYTES; }
 	YY_BREAK
 case 279:
 YY_RULE_SETUP
-#line 403 "ircd_lexer.l"
+#line 404 "ircd_lexer.l"
 { return MBYTES; }
 	YY_BREAK
 case 280:
 YY_RULE_SETUP
-#line 404 "ircd_lexer.l"
+#line 405 "ircd_lexer.l"
 { return MBYTES; }
 	YY_BREAK
 case 281:
 YY_RULE_SETUP
-#line 405 "ircd_lexer.l"
+#line 406 "ircd_lexer.l"
 { return MBYTES; }
 	YY_BREAK
 case 282:
 YY_RULE_SETUP
-#line 406 "ircd_lexer.l"
-{ return GBYTES; }
+#line 407 "ircd_lexer.l"
+{ return MBYTES; }
 	YY_BREAK
 case 283:
 YY_RULE_SETUP
-#line 407 "ircd_lexer.l"
+#line 408 "ircd_lexer.l"
 { return GBYTES; }
 	YY_BREAK
 case 284:
 YY_RULE_SETUP
-#line 408 "ircd_lexer.l"
+#line 409 "ircd_lexer.l"
 { return GBYTES; }
 	YY_BREAK
 case 285:
 YY_RULE_SETUP
-#line 409 "ircd_lexer.l"
+#line 410 "ircd_lexer.l"
 { return GBYTES; }
 	YY_BREAK
 case 286:
 YY_RULE_SETUP
-#line 410 "ircd_lexer.l"
+#line 411 "ircd_lexer.l"
 { return GBYTES; }
 	YY_BREAK
 case 287:
 YY_RULE_SETUP
-#line 411 "ircd_lexer.l"
-{ return TBYTES; }
+#line 412 "ircd_lexer.l"
+{ return GBYTES; }
 	YY_BREAK
 case 288:
 YY_RULE_SETUP
-#line 412 "ircd_lexer.l"
+#line 413 "ircd_lexer.l"
 { return TBYTES; }
 	YY_BREAK
 case 289:
 YY_RULE_SETUP
-#line 413 "ircd_lexer.l"
+#line 414 "ircd_lexer.l"
 { return TBYTES; }
 	YY_BREAK
 case 290:
 YY_RULE_SETUP
-#line 414 "ircd_lexer.l"
+#line 415 "ircd_lexer.l"
 { return TBYTES; }
 	YY_BREAK
 case 291:
 YY_RULE_SETUP
-#line 415 "ircd_lexer.l"
+#line 416 "ircd_lexer.l"
 { return TBYTES; }
 	YY_BREAK
 case 292:
 YY_RULE_SETUP
-#line 416 "ircd_lexer.l"
-{ return TWODOTS; }
+#line 417 "ircd_lexer.l"
+{ return TBYTES; }
 	YY_BREAK
 case 293:
 YY_RULE_SETUP
 #line 418 "ircd_lexer.l"
+{ return TWODOTS; }
+	YY_BREAK
+case 294:
+YY_RULE_SETUP
+#line 420 "ircd_lexer.l"
 { return yytext[0]; }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 419 "ircd_lexer.l"
+#line 421 "ircd_lexer.l"
 { if (ieof()) yyterminate(); }
 	YY_BREAK
-case 294:
+case 295:
 YY_RULE_SETUP
-#line 421 "ircd_lexer.l"
+#line 423 "ircd_lexer.l"
 ECHO;
 	YY_BREAK
-#line 3248 "lex.yy.c"
+#line 3256 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3535,7 +3542,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 1894 )
+			if ( yy_current_state >= 1897 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3570,11 +3577,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 1894 )
+		if ( yy_current_state >= 1897 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 1893);
+	yy_is_jam = (yy_current_state == 1896);
 
 	return yy_is_jam ? 0 : yy_current_state;
 	}
@@ -4129,7 +4136,7 @@
 	return 0;
 	}
 #endif
-#line 421 "ircd_lexer.l"
+#line 423 "ircd_lexer.l"
 
 
 /* C-comment ignoring routine -kre*/
Index: src/irc_string.c
===================================================================
--- src/irc_string.c	(.../1.0.2)	(revision 297)
+++ src/irc_string.c	(.../1.0.4)	(revision 297)
@@ -132,6 +132,83 @@
 }
 
 /*
+ * has_ctrl_chars
+ * inputs   - msg
+ * outputs  - returns 1 if message has controls, 0 otherwise
+ * side-effects - none
+ * 
+ * shamelessly stolen from bahamut 1.8.4
+*/
+int
+has_control_characters(const char *msg)
+{
+  char *c;
+
+  if (msg == NULL)
+    return 0;
+
+  for (c = msg; *c != '\0'; ++c)
+  {
+    /* not a control code */
+    if (*c > 31)
+      continue;
+
+    /* ctcp */
+    if (*c == 1)
+      continue;
+
+    /* escape */
+    if (*c == 27)
+    {
+      /* ISO 2022 charset shift sequence */
+      if (c[1] == '$' || c[1] == '(')
+      {
+        c++;
+        continue;
+      }
+    }
+
+    /* control code */
+    break;
+  }
+
+  if (*c != '\0')
+    return 1;
+
+  return 0;
+}
+
+/*
+ * has_colors
+ * inputs   - msg
+ * outputs  - returns 1 if message has colors, 0 otherwise
+ * side-effects - none
+ * 
+ * shamelessly stolen from bahamut 1.8.3
+*/
+int
+has_colors(const char *msg)
+{
+  char *c;
+  if (msg == NULL)
+    return 0;
+
+  c = msg;
+  while (*c)
+  {
+    if (*c == '\003' || *c == '\033')
+      break;
+    else
+      c++;
+  }
+
+  if (*c)
+    return 1;
+
+  return 0;
+}
+
+/*
  * strtoken - walk through a string of tokens, using a set of separators
  *   argv 9/90
  *
Index: src/s_misc.c
===================================================================
--- src/s_misc.c	(.../1.0.2)	(revision 297)
+++ src/s_misc.c	(.../1.0.4)	(revision 297)
@@ -165,7 +165,7 @@
 
   snprintf(buffer, sizeof(buffer), "%s %s-%d",
            name, SSL_get_cipher(ssl), bits);
-  
+
   return buffer;
 }
 #endif
Index: src/ircd.c
===================================================================
--- src/ircd.c	(.../1.0.2)	(revision 297)
+++ src/ircd.c	(.../1.0.4)	(revision 297)
@@ -73,7 +73,7 @@
 struct SetOptions GlobalSetOptions;
 
 /* configuration set from ircd.conf */
-struct config_file_entry ConfigFileEntry; 
+struct config_file_entry ConfigFileEntry;
 /* server info set from ircd.conf */
 struct server_info ServerInfo;
 /* admin info set from ircd.conf */
Index: src/version.c
===================================================================
--- src/version.c	(.../1.0.2)	(revision 297)
+++ src/version.c	(.../1.0.4)	(revision 297)
@@ -122,6 +122,7 @@
   "Kage, Kelmar Firesun, <kage@esper.net>",
   "dNA, Daniel Pemberton, <dna@esper.net>",
   "Hikaru, Timothy C. McGrath, <hikaru@esper.net>",
+  "mr_flea, Indecisive Dude, <mr_flea@esper.net>",
   "",
   "The EsperNet IRC Network: irc.esper.net:5555 (http://www.esper.net)",
   "", 0
Index: src/s_user.c
===================================================================
--- src/s_user.c	(.../1.0.2)	(revision 297)
+++ src/s_user.c	(.../1.0.4)	(revision 297)
@@ -116,11 +116,11 @@
   0,                  /* T */
   0,                  /* U */
   0,                  /* V */
-  0,                  /* W */
+  UMODE_OPERWALL,     /* W */
   0,                  /* X */
   0,                  /* Y */
   0,                  /* Z 0x5A */
-  0, 0, 0, 0, 0,      /* 0x5F   */ 
+  0, 0, 0, 0, 0,      /* 0x5F   */
   0,                  /* 0x60   */
   UMODE_SVCSADMIN,    /* a */
   UMODE_BOTS,         /* b */
@@ -147,7 +147,11 @@
   UMODE_WALLOP,       /* w */
   UMODE_EXTERNAL,     /* x */
   UMODE_SPY,          /* y */
-  UMODE_OPERWALL,     /* z      0x7A */
+#ifdef HAVE_LIBCRYPTO
+  UMODE_SECURE,       /* z      0x7A */
+#else
+  0,                  /* z */
+#endif
   0,0,0,0,0,          /* 0x7B - 0x7F */
 
   /* 0x80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0x8F */
@@ -472,6 +476,13 @@
     Count.invisi++;
   }
 
+#ifdef HAVE_LIBCRYPTO
+  if (ConfigFileEntry.mode_z && source_p->localClient->fd.ssl)
+  {
+    source_p->umodes |= UMODE_SECURE;
+  }
+#endif
+
   if ((++Count.local) > Count.max_loc)
   {
     Count.max_loc = Count.local;
@@ -604,6 +615,9 @@
   else
     send_umode(NULL, source_p, 0, SEND_UMODES, ubuf);
 
+
+  //sendto_realops_flags(UMODE_DEBUG, L_ALL, "introducing client %s with modes %s", source_p->name, ubuf);
+
   if (*ubuf == '\0')
   {
     ubuf[0] = '+';
@@ -625,6 +639,9 @@
    * -davidt
    * rewritten to cope with SIDs .. eww eww eww --is
    */
+
+  /* TODO: prohibit propagation of UMODE_SECURE over non-encrypted links? -eri */
+
   if (!ServerInfo.hub && uplink && IsCapable(uplink, CAP_LL) &&
       client_p != uplink)
   {
@@ -1018,9 +1035,12 @@
         case '\t':
           break;
 
-        case 'S':
-          if (!IsServer(client_p))
+        case 'S':   /* fall through */
+        case 'z':
+          if (!IsServer(client_p)) {
+            sendto_realops_flags(UMODE_DEBUG, L_ALL, "Ignoring mode %c from %s, not a server", *m, client_p->name);
             break;
+          }
 
         case 'r':
         case 'a':
Index: src/s_conf.c
===================================================================
--- src/s_conf.c	(.../1.0.2)	(revision 297)
+++ src/s_conf.c	(.../1.0.4)	(revision 297)
@@ -1923,6 +1923,9 @@
   ConfigFileEntry.gline_min_cidr = 16;
   ConfigFileEntry.gline_min_cidr6 = 48;
   ConfigFileEntry.invisible_on_connect = YES;
+#ifdef HAVE_LIBCRYPTO
+  ConfigFileEntry.mode_z = NO;
+#endif
   ConfigFileEntry.burst_away = NO;
   ConfigFileEntry.use_whois_actually = YES;
   ConfigFileEntry.tkline_expire_notices = YES;
Index: src/channel_mode.c
===================================================================
--- src/channel_mode.c	(.../1.0.2)	(revision 297)
+++ src/channel_mode.c	(.../1.0.4)	(revision 297)
@@ -83,6 +83,12 @@
 static void chm_invex(struct Client *, struct Client *, struct Channel *,
                       int, int *, char **, int *, int, int, char, void *,
                       const char *);
+#ifdef HAVE_LIBCRYPTO
+static void chm_secureonly(struct Client *, struct Client *, struct Channel *,
+                      int, int *, char **, int *, int, int, char, void *,
+                      const char *);
+#endif
+
 static void send_cap_mode_changes(struct Client *, struct Client *,
                                   struct Channel *, int, int);
 static void send_mode_changes(struct Client *, struct Client *,
@@ -339,6 +345,9 @@
   { MODE_COLORLESS,  'c' },
   { MODE_ASCIIONLY,  'C' },
   { MODE_OPERONLY,   'O' },
+#ifdef HAVE_LIBCRYPTO
+  { MODE_SECUREONLY, 'z' },
+#endif
   { 0, '\0' }
 };
 
@@ -444,6 +453,7 @@
 #define SM_ERR_RPL_E        0x00000010
 #define SM_ERR_NOTONCHANNEL 0x00000020 /* Not on channel    */
 #define SM_ERR_RPL_I        0x00000040
+#define SM_ERR_RPL_Z        0x00000080
 
 /* Now lets do some stuff to keep track of what combinations of
  * servers exist...
@@ -807,12 +817,12 @@
    * set the mode.  This prevents the abuse of +I when just a few
    * servers support it --fl
    */
-  if (!ConfigChannel.use_invex && MyClient(source_p) && 
+  if (!ConfigChannel.use_invex && MyClient(source_p) &&
       (dir == MODE_ADD) && (parc > *parn))
   {
     if (*errors & SM_ERR_RPL_I)
       return;
-    
+
     *errors |= SM_ERR_RPL_I;
     return;
   }
@@ -889,6 +899,92 @@
   mode_changes[mode_count++].arg = mask;
 }
 
+#ifdef HAVE_LIBCRYPTO
+static void
+chm_secureonly(struct Client *client_p, struct Client *source_p, struct Channel *chptr,
+           int parc, int *parn, char **parv, int *errors, int alev, int dir,
+           char c, void *d, const char *chname)
+{
+  long mode_type = MODE_SECUREONLY;
+  dlink_node *ptr;
+
+  if (!ConfigFileEntry.mode_z && MyClient(source_p)) {
+    // we can remove the mode if it's there and disabled (e.g; if it
+    // were disabled on rehash), otherwise it's an "unknown mode"
+    if (dir != MODE_DEL || (chptr->mode.mode & mode_type) == 0)
+    {
+        *errors |= SM_ERR_RPL_Z;
+        sendto_one(source_p, form_str(ERR_UNKNOWNMODE), me.name,
+                   source_p->name, c);
+        return;
+    }
+  }
+
+  if (alev < CHACCESS_CHANOP)
+  {
+    if (!(*errors & SM_ERR_NOOPS))
+      sendto_one(source_p, form_str(alev == CHACCESS_NOTONCHAN ?
+                                    ERR_NOTONCHANNEL : ERR_CHANOPRIVSNEEDED),
+                 me.name, source_p->name, chname);
+    *errors |= SM_ERR_NOOPS;
+    return;
+  }
+
+  DLINK_FOREACH(ptr, chptr->members.head)
+  {
+    struct Membership *ms = ptr->data;
+
+    if (!IsSecure(ms->client_p)) {
+        *errors |= SM_ERR_RPL_Z;
+
+        sendto_one(source_p, form_str(ERR_ALLMEMBERSMUSTBESECURE), me.name, source_p->name, chname);
+        return;
+    }
+  }
+
+  /* If have already dealt with this simple mode, ignore it */
+  if (simple_modes_mask & mode_type)
+    return;
+
+  simple_modes_mask |= mode_type;
+
+  /* setting + */
+  /* Apparently, (though no one has ever told the hybrid group directly) 
+   * admins don't like redundant mode checking. ok. It would have been nice 
+   * if you had have told us directly. I've left the original code snippets 
+   * in place. 
+   * 
+   * -Dianora 
+   */
+  if ((dir == MODE_ADD)) /* && !(chptr->mode.mode & mode_type)) */
+  {
+    chptr->mode.mode |= mode_type;
+
+    mode_changes[mode_count].letter = c;
+    mode_changes[mode_count].dir = MODE_ADD;
+    mode_changes[mode_count].caps = 0;
+    mode_changes[mode_count].nocaps = 0;
+    mode_changes[mode_count].id = NULL;
+    mode_changes[mode_count].mems = ALL_MEMBERS;
+    mode_changes[mode_count++].arg = NULL;
+  }
+  else if ((dir == MODE_DEL)) /* && (chptr->mode.mode & mode_type)) */
+  {
+    /* setting - */
+
+    chptr->mode.mode &= ~mode_type;
+
+    mode_changes[mode_count].letter = c;
+    mode_changes[mode_count].dir = MODE_DEL;
+    mode_changes[mode_count].caps = 0;
+    mode_changes[mode_count].nocaps = 0;
+    mode_changes[mode_count].mems = ALL_MEMBERS;
+    mode_changes[mode_count].id = NULL;
+    mode_changes[mode_count++].arg = NULL;
+  }
+}
+#endif
+
 /*
  * inputs	- pointer to channel
  * output	- none
@@ -1374,7 +1470,11 @@
   {chm_nosuch, NULL},                             /* w */
   {chm_nosuch, NULL},                             /* x */
   {chm_nosuch, NULL},                             /* y */
-  {chm_nosuch, NULL},                             /* z */
+#ifdef HAVE_LIBCRYPTO
+  {chm_secureonly, NULL},                         /* z */
+#else
+  {chm_nosuch, NULL},
+#endif
 };
 /* *INDENT-ON* */
 
@@ -1678,7 +1778,7 @@
 
   alevel = get_channel_access(source_p, member);
 
-  for (; (c = *ml) != '\0'; ml++) 
+  for (; (c = *ml) != '\0'; ml++)
   {
 #if 0
     if(mode_count > 20)
@@ -1700,6 +1800,7 @@
           table_position = 0;
         else
           table_position = c - 'A' + 1;
+
         ModeTable[table_position].func(client_p, source_p, chptr,
                                        parc, &parn,
                                        parv, &errors, alevel, dir, c,
Index: src/ircd_parser.y
===================================================================
--- src/ircd_parser.y	(.../1.0.2)	(revision 297)
+++ src/ircd_parser.y	(.../1.0.4)	(revision 297)
@@ -251,6 +251,7 @@
 %token  MESSAGE_LOCALE
 %token  MIN_NONWILDCARD
 %token  MIN_NONWILDCARD_SIMPLE
+%token  MODE_Z
 %token  MODULE
 %token  MODULES
 %token  NAME
@@ -3264,7 +3265,7 @@
 		    general_max_accept | general_anti_spam_exit_message_time |
                     general_ts_warn_delta | general_ts_max_delta |
                     general_kill_chase_time_limit | general_kline_with_reason |
-                    general_kline_reason | general_invisible_on_connect |
+                    general_kline_reason | general_invisible_on_connect | general_mode_z |
                     general_warn_no_nline | general_dots_in_ident |
                     general_stats_o_oper_only | general_stats_k_oper_only |
                     general_pace_wait | general_stats_i_oper_only |
@@ -3411,6 +3412,13 @@
   ConfigFileEntry.invisible_on_connect = yylval.number;
 };
 
+general_mode_z: MODE_Z '=' TBOOL ';'
+{
+#ifdef HAVE_LIBCRYPTO
+  ConfigFileEntry.mode_z = yylval.number;
+#endif
+};
+
 general_warn_no_nline: WARN_NO_NLINE '=' TBOOL ';'
 {
   ConfigFileEntry.warn_no_nline = yylval.number;
Index: src/ircd_lexer.l
===================================================================
--- src/ircd_lexer.l	(.../1.0.2)	(revision 297)
+++ src/ircd_lexer.l	(.../1.0.4)	(revision 297)
@@ -247,6 +247,7 @@
 message_locale	{ return MESSAGE_LOCALE; }
 min_nonwildcard { return MIN_NONWILDCARD; }
 min_nonwildcard_simple	{ return MIN_NONWILDCARD_SIMPLE; }
+mode_z      { return MODE_Z; }
 name		{ return NAME; }
 need_password   { return NEED_PASSWORD; }
 network_desc    { return NETWORK_DESC; }
Index: src/messages.tab
===================================================================
--- src/messages.tab	(.../1.0.2)	(revision 297)
+++ src/messages.tab	(.../1.0.4)	(revision 297)
@@ -514,7 +514,7 @@
 /* 486 */  {NULL, NULL, NULL},
 /* 487 */  {NULL, NULL, NULL},
 /* 488 */  {NULL, NULL, NULL},
-/* 489 */  {NULL, NULL, NULL},
+/* 489 */  {"ERR_NEEDSECURITY", ":%s 489 %s %s :Cannot join channel (+z).", NULL},
 /* 490 */  {NULL, NULL, NULL},
 /* 491 */  {"ERR_NOOPERHOST", ":%s 491 %s :Only few of mere mortals may try to enter the twilight zone", NULL},
 /* 492 */  {NULL, NULL, NULL},
@@ -999,7 +999,7 @@
 /* 971 */  {NULL, NULL, NULL},
 /* 972 */  {NULL, NULL, NULL},
 /* 973 */  {NULL, NULL, NULL},
-/* 974 */  {NULL, NULL, NULL},
+/* 974 */  {"ERR_ALLMEMBERSMUSTBESECURE", ":%s 974 %s %s :Not all members have secure (SSL) connections", NULL},
 /* 975 */  {NULL, NULL, NULL},
 /* 976 */  {NULL, NULL, NULL},
 /* 977 */  {NULL, NULL, NULL},
Index: help/users/umode
===================================================================
--- help/users/umode	(.../1.0.2)	(revision 297)
+++ help/users/umode	(.../1.0.4)	(revision 297)
@@ -13,3 +13,6 @@
          +G     - "soft caller id": block private messages from people not on
                   any common channels with you (unless they are /accept'ed)
          +g     - "caller id" mode: only allow /accept clients to message you
+         +S     - "captured": muted on all but the network help channel.
+         +z     - "secure": on a secure (SSL) connection.
+
Index: help/opers/cmode
===================================================================
--- help/opers/cmode	(.../1.0.2)	(revision 297)
+++ help/opers/cmode	(.../1.0.4)	(revision 297)
@@ -21,9 +21,8 @@
      +s     - 'Secret'.  This will prevent the channel from being shown
               in a /whois, and in the channel list.
 
-     +p     - 'Paranoia'. Controls whether halfops may invite  users
-              into a channel or whether they may kick other members of a
-              channel.
+     +p     - 'Paranoia'.  This mode restricts half-ops (if available) and
+              ordinary users from inviting other users into a channel.
 
      +m     - 'Moderated'.  This will prevent any user who isn't opped,
               half-opped or voiced (+o/+h/+v) from talking in the channel.
@@ -33,8 +32,11 @@
               the +I list.
 
      +c     - 'Colorless'.  This prevents users from sending messages with
-              colors or control characters to the channel.
+              colors. Control characters (bold, underline) are permitted.
 
+     +C     - 'Colorless Plus'. This prevents users from sending messages
+              with colors or control characters.
+
      +R     - 'Identified Only'.  This prevents users who have not identified
               to NickServ from joining the channel.
 
@@ -45,6 +47,9 @@
               IRC Operator from joining or sending messages to the channel.
               Use with extreme care.
 
+     +z     - 'Secure Only'. This will prevent any user who isn't on a secure
+              (SSL) connection from joining the channel.
+
 WITH PARAMETERS:
 ----------------
 
Index: help/opers/umode
===================================================================
--- help/opers/umode	(.../1.0.2)	(revision 297)
+++ help/opers/umode	(.../1.0.4)	(revision 297)
@@ -10,7 +10,7 @@
                   Use the /oper command to attain this.
          +i     - Designates this client 'invisible'.
        * +w     - Can see server wallops.
-       * +z     - Can see oper wallops.
+       * +W     - Can see oper wallops.
        * +l     - Can see oper locops (local wallops).
        * +s     - Can see generic server messages and oper kills.
        * +c     - Can see client connections and exits.
@@ -23,6 +23,7 @@
        * +n     - Can see client nick changes.
        * +x     - Can see new server introduction and split messages.
        * +b     - Can see possible bot / join flood warnings.
+       * +p     - Can see channels set +s
        * +A     - Is marked as a server admin in stats p/o.
        * +a     - Is marked as a services administrator.
          +D     - "deaf": don't receive channel messages
@@ -32,3 +33,5 @@
          +r     - Is marked as being identified to NickServ/services.
          +R     - "identified only": block private messages from people not
                   identified to NickServ.
+         +S     - "captured": muted on all but the network help channel.
+         +z     - "secure": user is on a secure (SSL) connection.
Index: newvers.sh
===================================================================
--- newvers.sh	(.../1.0.2)	(revision 0)
+++ newvers.sh	(.../1.0.4)	(revision 297)
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# Define PATCHLEVEL to include the subversion id, if present.
+#
+
+MAJOR=1
+MINOR=0
+PATCH=4
+
+PATCHLEVEL="${MAJOR}.${MINOR}.${PATCH}"
+
+SVN=`which svn`
+
+if [ -d .svn -a -x ${SVN} ]; then
+  URL=$(${SVN} info | grep URL | awk '{print $2}')
+  REV=$(${SVN} info ${URL} | grep Revision | awk '{print $2}')
+
+  PATCHLEVEL="${PATCHLEVEL}.${REV}"
+fi
+
+TEMP="${1}.tmp"
+DEST="${1}"
+
+cat > $TEMP << EOF
+/*
+ *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
+ *  patchlevel.h: A header defining the patchlevel.
+ *
+ *  Copyright (C) 2002 by the past and present ircd coders, and others.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
+ *  USA
+ *
+ *  \$Id: patchlevel.h 260 2009-11-05 03:22:10Z srees $
+ *  \$Hybrid: patchlevel.h 858 2007-02-28 04:15:47Z lusky $
+ */
+
+#ifndef PATCHLEVEL
+#define PATCHLEVEL   "esphyb-${PATCHLEVEL}"
+#endif
+EOF
+
+diff -q $TEMP $DEST 2>&1 >/dev/null
+
+# difference
+if [ ! $? -eq 0 ]; then
+  mv -f $TEMP $DEST
+else
+  rm -f $TEMP
+fi
+
+echo "Patchlevel: ${PATCHLEVEL}"

Property changes on: newvers.sh
___________________________________________________________________
Added: svn:executable
   + *

Index: modules/m_invite.c
===================================================================
--- modules/m_invite.c	(.../1.0.2)	(revision 297)
+++ modules/m_invite.c	(.../1.0.4)	(revision 297)
@@ -140,6 +140,20 @@
     }
   }
 
+  // in esphyb, invites override bans. but ordinary users can issue invites.
+  // so, we do not wish to allow ordinary users to invite banned users. this
+  // accomplishes that; but there is a race condition: if the invite
+  // precedes the ban, then the invite will override. this might need fixing later. -eri
+  if (is_banned(chptr, target_p))
+  {
+    if (MyConnect(source_p) && !has_member_flags(ms, CHFL_CHANOP|CHFL_HALFOP))
+    {
+      sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
+                 me.name, source_p->name, chptr->chname);
+      return;
+    }
+  }
+
   if (IsMember(target_p, chptr))
   {
     sendto_one(source_p, form_str(ERR_USERONCHANNEL),
@@ -180,24 +194,18 @@
                source_p->host,
                target_p->name, chptr->chname);
 
-    if (chptr->mode.mode & MODE_INVITEONLY)
-    {
-      if (chptr->mode.mode & MODE_PRIVATE)
-      {
-        /* Only do this if channel is set +i AND +p */
-        sendto_channel_local(CHFL_CHANOP|CHFL_HALFOP, NO, chptr,
-                             ":%s NOTICE %s :%s is inviting %s to %s.",
-                             me.name, chptr->chname, source_p->name,
-                             target_p->name, chptr->chname);
-        sendto_channel_remote(source_p, client_p, CHFL_CHANOP|CHFL_HALFOP,
-                              NOCAPS, NOCAPS, chptr,
-                              ":%s NOTICE %s :%s is inviting %s to %s.",
-                              source_p->name, chptr->chname, source_p->name,
-                              target_p->name, chptr->chname);
-      }
+    /* esphyb difference: always notify channel operators when someone
+       invites into the channel */
+    sendto_channel_local(CHFL_CHANOP|CHFL_HALFOP, NO, chptr,
+                         ":%s NOTICE %s :%s is inviting %s to %s.",
+                         me.name, chptr->chname, source_p->name,
+                         target_p->name, chptr->chname);
+    sendto_channel_remote(source_p, client_p, CHFL_CHANOP|CHFL_HALFOP,
+                          NOCAPS, NOCAPS, chptr,
+                          ":%s NOTICE %s :%s is inviting %s to %s.",
+                          source_p->name, chptr->chname, source_p->name,
+                          target_p->name, chptr->chname);
 
-    }
-
     /* Always add invite, since invitation bypasses ban */
     add_invite(chptr, target_p);
   }
Index: modules/m_whois.c
===================================================================
--- modules/m_whois.c	(.../1.0.2)	(revision 297)
+++ modules/m_whois.c	(.../1.0.4)	(revision 297)
@@ -473,13 +473,21 @@
     }
   }
 
+#ifdef HAVE_LIBCRYPTO
+  if (ConfigFileEntry.mode_z && IsSecure(target_p))   // a user might be secure on another server, but if we don't have SSL, then it doesn't matter does it?
+    sendto_one(source_p, form_str(RPL_WHOISSSL),
+               me.name, source_p->name, target_p->name);
+#endif
+
   if (MyConnect(target_p)) /* Can't do any of this if not local! db */
   {
 #ifdef HAVE_LIBCRYPTO
-    if (target_p->localClient->fd.ssl)
+    if (!ConfigFileEntry.mode_z && target_p->localClient->fd.ssl) {
       sendto_one(source_p, form_str(RPL_WHOISSSL),
                  me.name, source_p->name, target_p->name);
+    }
 #endif
+
     sendto_one(source_p, form_str(RPL_WHOISIDLE),
                me.name, source_p->name, target_p->name,
                CurrentTime - target_p->localClient->last,
Index: modules/core/m_message.c
===================================================================
--- modules/core/m_message.c	(.../1.0.2)	(revision 297)
+++ modules/core/m_message.c	(.../1.0.4)	(revision 297)
@@ -59,9 +59,6 @@
                                 struct Channel *chptr, char *chname);
 static struct Client* find_userhost (char *, char *, int *);
 
-static int has_ctrl_chars(char *msg);
-static int has_colors(char *msg);
-
 #define ENTITY_NONE    0
 #define ENTITY_CHANNEL 1
 #define ENTITY_CHANOPS_ON_CHANNEL 2
@@ -494,7 +491,7 @@
 #endif
 
   /* Test for control characters and colors */
-  if ((chptr->mode.mode & MODE_ASCIIONLY) && has_ctrl_chars(text))
+  if ((chptr->mode.mode & MODE_ASCIIONLY) && has_control_characters(text))
   {
     if (p_or_n != NOTICE)
       sendto_one(source_p, form_str(ERR_NOCONTROLSONCHAN),
@@ -1060,80 +1057,3 @@
 
   return(res);
 }
-
-/*
- * has_ctrl_chars
- * inputs   - msg
- * outputs  - returns 1 if message has controls, 0 otherwise
- * side-effects - none
- * 
- * shamelessly stolen from bahamut 1.8.4
-*/
-static int
-has_ctrl_chars(char *msg)
-{
-  char *c;
-
-  if (msg == NULL)
-    return 0;
-
-  for (c = msg; *c != '\0'; ++c)
-  {
-    /* not a control code */
-    if (*c > 31)
-      continue;
-
-    /* ctcp */
-    if (*c == 1)
-      continue;
-
-    /* escape */
-    if (*c == 27)
-    {
-      /* ISO 2022 charset shift sequence */
-      if (c[1] == '$' || c[1] == '(')
-      {
-        c++;
-        continue;
-      }
-    }
-
-    /* control code */
-    break;
-  }
-
-  if (*c != '\0')
-    return 1;
-
-  return 0;
-}
-
-/*
- * has_colors
- * inputs   - msg
- * outputs  - returns 1 if message has colors, 0 otherwise
- * side-effects - none
- * 
- * shamelessly stolen from bahamut 1.8.3
-*/
-static int
-has_colors(char *msg)
-{
-  char *c;
-  if (msg == NULL)
-    return 0;
-
-  c = msg;
-  while(*c)
-  {
-    if(*c == '\003' || *c == '\033')
-      break;
-    else
-      c++;
-  }
-
-  if(*c)
-    return 1;
-
-  return 0;
-}
Index: modules/core/m_nick.c
===================================================================
--- modules/core/m_nick.c	(.../1.0.2)	(revision 297)
+++ modules/core/m_nick.c	(.../1.0.4)	(revision 297)
@@ -804,6 +804,8 @@
   m = &parv[4][1];
   while (*m)
   {
+    //sendto_realops_flags(UMODE_DEBUG, L_ALL, "parsing client %s with mode %c", source_p->name, *m);
+
     flag = user_modes[(unsigned char)*m];
     if (flag & UMODE_INVISIBLE)
       Count.invisi++;
Index: modules/core/m_part.c
===================================================================
--- modules/core/m_part.c	(.../1.0.2)	(revision 297)
+++ modules/core/m_part.c	(.../1.0.4)	(revision 297)
@@ -29,7 +29,7 @@
 #include "channel.h"
 #include "channel_mode.h"
 #include "client.h"
-#include "common.h"  
+#include "common.h"
 #include "hash.h"
 #include "irc_string.h"
 #include "ircd.h"
@@ -66,6 +66,7 @@
 const char *_version = "$Revision$";
 #endif
 
+static int can_send_reason(struct Channel *chptr, char *reason);
 
 /* part_one_client()
  *
@@ -102,9 +103,11 @@
   /*
    *  Remove user from the old channel (if any)
    *  only allow /part reasons in -m chans
+   *
    */
   if (reason[0] && (!MyConnect(source_p) ||
       ((can_send(chptr, source_p, ms) &&
+       (can_send_reason(chptr, reason)) &&
        (source_p->firsttime + ConfigFileEntry.anti_spam_exit_message_time)
         < CurrentTime))))
   {
@@ -172,3 +175,20 @@
     name = strtoken(&p, NULL, ",");
   }
 }
+
+/*
+ * Tests if a part reason can be transmitted to a channel
+ * 
+ * return 0 if no (due to colors or control characters) or 1 oherwise
+*/
+static int
+can_send_reason(struct Channel *chptr, char *reason)
+{
+    if ((chptr->mode.mode & MODE_ASCIIONLY) && has_control_characters(reason))
+        return 0;
+
+    if ((chptr->mode.mode & MODE_COLORLESS) && has_colors(reason))
+        return 0;
+
+    return 1;
+}
Index: modules/m_who.c
===================================================================
--- modules/m_who.c	(.../1.0.2)	(revision 297)
+++ modules/m_who.c	(.../1.0.4)	(revision 297)
@@ -375,7 +375,7 @@
     ircsprintf(status, "%c%s%s", target_p->away ? 'G' : 'H',
 	       IsOper(target_p) ? "*" : "", op_flags);
 
-  if (ConfigServerHide.hide_servers)
+  if (ConfigServerHide.hide_servers || (!IsOper(source_p) && IsHidden(target_p->servptr)))
   {
     sendto_one(source_p, form_str(RPL_WHOREPLY), from, to,
 	       (chname) ? (chname) : "*",
Index: modules/m_webirc.c
===================================================================
--- modules/m_webirc.c	(.../1.0.2)	(revision 297)
+++ modules/m_webirc.c	(.../1.0.4)	(revision 297)
@@ -41,6 +41,7 @@
 #include "parse.h"
 #include "modules.h"
 #include "packet.h"
+#include "hostmask.h"   /* for parse_netmask */
 
 static void mr_webirc(struct Client *, struct Client *, int, char *[]);
 static struct ConfItem *find_webirc_conf(struct Client *);
@@ -106,6 +107,10 @@
 
     strlcpy(client_p->host, hostname, HOSTLEN + 1);
     strlcpy(client_p->sockhost, address, HOSTIPLEN + 1);
+
+    // this is required for channel bans to work
+    int bits; /* unused */
+    parse_netmask(address, &client_p->localClient->ip, &bits);
   }
   else
   {
Index: modules/m_map.c
===================================================================
--- modules/m_map.c	(.../1.0.2)	(revision 297)
+++ modules/m_map.c	(.../1.0.4)	(revision 297)
@@ -149,7 +149,7 @@
 	  100 * (float)users / (float)Count.total);
 
   sendto_one(client_p, form_str(RPL_MAP), me.name, client_p->name, buf);
-        
+
   if (root_p->serv->servers.head)
   {
     cnt += dlink_list_length(&root_p->serv->servers);
@@ -172,16 +172,20 @@
   {
     server_p = ptr->data;
 
+    if (IsHidden(server_p) && !IsOper(client_p))
+        continue;
+
     *pbuf = ' ';
     if (i < cnt)
       *(pbuf + 1) = '|';
     else
       *(pbuf + 1) = '`';
-      
+
     *(pbuf + 2) = '-';
     *(pbuf + 3) = ' ';
+
     dump_map(client_p, server_p, start_len+4, pbuf+4);
- 
+
     ++i;
   }
 }
Index: modules/m_links.c
===================================================================
--- modules/m_links.c	(.../1.0.2)	(revision 297)
+++ modules/m_links.c	(.../1.0.4)	(revision 297)
@@ -103,13 +103,16 @@
       if (!EmptyString(mask) && !match(mask, target_p->name))
         continue;
 
+      if (IsHidden(target_p) && !IsOper(source_p))
+        continue;
+
       if (target_p->info[0])
       {
         if ((p = strchr(target_p->info, ']')))
           p += 2; /* skip the nasty [IP] part */
         else
           p = target_p->info;
-      } 
+      }
       else
         p = "(Unknown Location)";
 
@@ -121,7 +124,7 @@
 		 target_p->name, target_p->servptr->name,
                  target_p->hopcount, p);
     }
-  
+
     sendto_one(source_p, form_str(RPL_ENDOFLINKS),
                me_name, nick,
                EmptyString(mask) ? "*" : mask);
@@ -183,7 +186,7 @@
 mo_links(struct Client *client_p, struct Client *source_p,
          int parc, char *parv[])
 {
-  if (parc > 2) 
+  if (parc > 2)
     if (!ConfigFileEntry.disable_remote || IsOper(source_p))
     {
         if (hunt_server(client_p, source_p, ":%s LINKS %s :%s", 1, parc, parv)
Index: etc/example.conf
===================================================================
--- etc/example.conf	(.../1.0.2)	(revision 297)
+++ etc/example.conf	(.../1.0.4)	(revision 297)
@@ -927,6 +927,13 @@
 	 */
 	invisible_on_connect = yes;
 
+    /*
+     * Whether to set umode +z and enable channel mode +z for secure connections.
+     * Only do this if all your servers support SSL and are interconnected with
+     * SSL. Otherwise, it may give a false sense of security to your users.
+    */
+    mode_z = no;
+
 	/*
 	 * If you don't explicitly specify burst_away in your connect blocks, then
 	 * they will default to the burst_away value below.
