[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#798749: pu: package monit/1:5.9-1+jessie1



Package: release.debian.org
Severity: normal
Tags: jessie
Usertags: pu

I would like to make an upload to stable in order to fix bug
#796989 (umask bug) in the monit package.

The full patch between this new package version and the version
1:5.9-1 currently in Jessie is attached (mostly it's come from
upstream, tokens.h and y.tab.c are automatically updated with yacc).
diff -Nru monit-5.9/debian/changelog monit-5.9/debian/changelog
--- monit-5.9/debian/changelog	2014-09-30 14:24:21.000000000 +0400
+++ monit-5.9/debian/changelog	2015-09-12 11:35:51.000000000 +0300
@@ -1,3 +1,9 @@
+monit (1:5.9-1+jessie1) unstable; urgency=medium
+
+  * Fix umask-related regression between 5.8.1 and 5.9 (Closes: #796989)
+
+ -- Sergey B Kirpichev <skirpichev@gmail.com>  Sat, 12 Sep 2015 11:34:20 +0300
+
 monit (1:5.9-1) unstable; urgency=medium
 
   * Imported Upstream version 5.9
diff -Nru monit-5.9/debian/patches/13_umask_fix.patch monit-5.9/debian/patches/13_umask_fix.patch
--- monit-5.9/debian/patches/13_umask_fix.patch	1970-01-01 03:00:00.000000000 +0300
+++ monit-5.9/debian/patches/13_umask_fix.patch	2015-09-12 11:35:51.000000000 +0300
@@ -0,0 +1,7179 @@
+Description: Restore the umask when executing start/stop/restart programs
+ and check program.
+Bug-Debian: http://bugs.debian.org/796989
+Origin: https://bitbucket.org/tildeslash/monit/commits/4e68a4
+Forwarded: not-needed
+
+---
+ libmonit/src/system/Command.c |   24 
+ libmonit/src/system/Command.h |   16 
+ libmonit/src/system/Process.h |   12 
+ libmonit/test/CommandTest.c   |    5 
+ src/control.c                 |    1 
+ src/p.y                       |    1 
+ src/tokens.h                  |  480 ++--
+ src/y.tab.c                   | 4109 ++++++++++++++++++++++++------------------
+ 8 files changed, 2689 insertions(+), 1959 deletions(-)
+
+--- a/libmonit/src/system/Command.c
++++ b/libmonit/src/system/Command.c
+@@ -63,6 +63,7 @@
+ struct T {
+         uid_t uid;
+         gid_t gid;
++        mode_t umask;
+         List_T env;
+         List_T args;
+         char **_env;
+@@ -75,6 +76,7 @@
+         pid_t pid;
+         uid_t uid;
+         gid_t gid;
++        mode_t umask;
+         int status;
+         int stdin_pipe[2];
+         int stdout_pipe[2];
+@@ -252,6 +254,12 @@
+ }
+ 
+ 
++mode_t Process_getUmask(Process_T P) {
++        assert(P);
++        return P->umask;
++}
++
++
+ const char *Process_getDir(Process_T P) {
+         assert(P);
+         if (! P->working_directory) {
+@@ -411,6 +419,18 @@
+ }
+ 
+ 
++void Command_setUmask(T C, mode_t umask) {
++        assert(C);
++        C->umask = umask;
++}
++
++
++mode_t Command_getUmask(T C) {
++        assert(C);
++        return C->umask;
++}
++
++
+ void Command_setDir(T C, const char *dir) {
+         assert(C);
+         if (dir) { // Allow to set a NULL directory, meaning the calling process's current directory
+@@ -510,6 +530,10 @@
+                         P->uid = (setuid(C->uid) != 0) ? ERROR("Command: Cannot change process uid to '%d' -- %s\n", C->uid, System_getLastError()), getuid() : C->uid;
+                 else
+                         P->uid = getuid();
++                if (C->umask) {
++                        P->umask = C->umask;
++                        umask(P->umask);
++                }
+                 setsid(); // Loose controlling terminal
+                 setupChildPipes(P);
+                 // Close all descriptors except stdio
+--- a/libmonit/src/system/Command.h
++++ b/libmonit/src/system/Command.h
+@@ -136,6 +136,22 @@
+ 
+ 
+ /**
++ * Set the file creation mode mask the sub-process should switch to on exec.
++ * @param C A Command object
++ * @param umask The file creation mode mask the sub-process should switch to when executed
++ */
++void Command_setUmask(T C, mode_t umask);
++
++
++/**
++ * Returns the file creation mode mask the Command should switch to on exec.
++ * @param C A Command object
++ * @return The umask the sub-process should switch to when executed
++ */
++mode_t Command_getUmask(T C);
++
++
++/**
+  * Returns the Process timeout. Default is no timeout. The timeout
+  * is set with Command_setOnTimeout().
+  * @param C A Command object
+--- a/libmonit/src/system/Process.h
++++ b/libmonit/src/system/Process.h
+@@ -77,7 +77,7 @@
+ /**
+  * Returns the user id of the sub-process
+  * @param P A Process object
+- * @return The user id the sub-process
++ * @return The user id of the sub-process
+  */
+ uid_t Process_getUid(T P);
+ 
+@@ -85,12 +85,20 @@
+ /**
+  * Returns the group id of the sub-process
+  * @param P A Process object
+- * @return The group id the sub-process
++ * @return The group id of the sub-process
+  */
+ gid_t Process_getGid(T P);
+ 
+ 
+ /**
++ * Returns the file creation mode mask of the sub-process
++ * @param P A Process object
++ * @return The umask of the sub-process
++ */
++mode_t Process_getUmask(T P);
++
++
++/**
+  * Returns the Process timeout. 
+  * @param P A Process object
+  * @return The number of seconds this Process has until exit before
+--- a/libmonit/test/CommandTest.c
++++ b/libmonit/test/CommandTest.c
+@@ -104,18 +104,21 @@
+         }
+         printf("=> Test1: OK\n\n");
+ 
+-        printf("=> Test2: set and get uid/gid\n");
++        printf("=> Test2: set and get uid/gid/umask\n");
+         {
+                 Command_T c = Command_new("/bin/sh", "-c", "ps -aef|grep monit", NULL);
+                 assert(c);
+                 // Check that default is 0
+                 assert(Command_getUid(c) == 0);
+                 assert(Command_getGid(c) == 0);
++                assert(Command_getUmask(c) == 0);
+                 // set and test uid and gid
+                 Command_setUid(c,42);
+                 assert(Command_getUid(c) == 42);
+                 Command_setGid(c,148);
+                 assert(Command_getGid(c) == 148);
++                Command_setUmask(c,0222);
++                assert(Command_getUmask(c) == 0222);
+                 Command_free(&c);
+                 assert(!c);
+         }
+--- a/src/control.c
++++ b/src/control.c
+@@ -109,6 +109,7 @@
+                         Command_setUid(C, c->uid);
+                 if (c->has_gid)
+                         Command_setGid(C, c->gid);
++                Command_setUmask(C, Run.umask);
+                 Command_setEnv(C, "MONIT_DATE", Time_string(Time_now(), (char[26]){}));
+                 Command_setEnv(C, "MONIT_SERVICE", S->name);
+                 Command_setEnv(C, "MONIT_HOST", Run.system->name);
+--- a/src/p.y
++++ b/src/p.y
+@@ -2145,6 +2145,7 @@
+                         if (s->program->args->has_gid) {
+                                 Command_setGid(s->program->C, s->program->args->gid);
+                         }
++                        Command_setUmask(s->program->C, Run.umask);
+                 }
+         }
+ 
+--- a/src/tokens.h
++++ b/src/tokens.h
+@@ -1,19 +1,19 @@
+-/* A Bison parser, made by GNU Bison 3.0.2.  */
++/* A Bison parser, made by GNU Bison 2.5.  */
+ 
+ /* Bison interface for Yacc-like parsers in C
+-
+-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+-
++   
++      Copyright (C) 1984, 1989-1990, 2000-2011 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 3 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, see <http://www.gnu.org/licenses/>.  */
+ 
+@@ -26,235 +26,227 @@
+    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.  */
+ 
+-#ifndef YY_YY_SRC_Y_TAB_H_INCLUDED
+-# define YY_YY_SRC_Y_TAB_H_INCLUDED
+-/* Debug traces.  */
+-#ifndef YYDEBUG
+-# define YYDEBUG 1
+-#endif
+-#if YYDEBUG
+-extern int yydebug;
+-#endif
+ 
+-/* Token type.  */
++/* Tokens.  */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+-  enum yytokentype
+-  {
+-    IF = 258,
+-    ELSE = 259,
+-    THEN = 260,
+-    OR = 261,
+-    FAILED = 262,
+-    SET = 263,
+-    LOGFILE = 264,
+-    FACILITY = 265,
+-    DAEMON = 266,
+-    SYSLOG = 267,
+-    MAILSERVER = 268,
+-    HTTPD = 269,
+-    ALLOW = 270,
+-    ADDRESS = 271,
+-    INIT = 272,
+-    READONLY = 273,
+-    CLEARTEXT = 274,
+-    MD5HASH = 275,
+-    SHA1HASH = 276,
+-    CRYPT = 277,
+-    DELAY = 278,
+-    PEMFILE = 279,
+-    ENABLE = 280,
+-    DISABLE = 281,
+-    HTTPDSSL = 282,
+-    CLIENTPEMFILE = 283,
+-    ALLOWSELFCERTIFICATION = 284,
+-    IDFILE = 285,
+-    STATEFILE = 286,
+-    SEND = 287,
+-    EXPECT = 288,
+-    EXPECTBUFFER = 289,
+-    CYCLE = 290,
+-    COUNT = 291,
+-    REMINDER = 292,
+-    PIDFILE = 293,
+-    START = 294,
+-    STOP = 295,
+-    PATHTOK = 296,
+-    HOST = 297,
+-    HOSTNAME = 298,
+-    PORT = 299,
+-    TYPE = 300,
+-    UDP = 301,
+-    TCP = 302,
+-    TCPSSL = 303,
+-    PROTOCOL = 304,
+-    CONNECTION = 305,
+-    ALERT = 306,
+-    NOALERT = 307,
+-    MAILFORMAT = 308,
+-    UNIXSOCKET = 309,
+-    SIGNATURE = 310,
+-    TIMEOUT = 311,
+-    RETRY = 312,
+-    RESTART = 313,
+-    CHECKSUM = 314,
+-    EVERY = 315,
+-    NOTEVERY = 316,
+-    DEFAULT = 317,
+-    HTTP = 318,
+-    HTTPS = 319,
+-    APACHESTATUS = 320,
+-    FTP = 321,
+-    SMTP = 322,
+-    SMTPS = 323,
+-    POP = 324,
+-    IMAP = 325,
+-    CLAMAV = 326,
+-    NNTP = 327,
+-    NTP3 = 328,
+-    MYSQL = 329,
+-    DNS = 330,
+-    WEBSOCKET = 331,
+-    SSH = 332,
+-    DWP = 333,
+-    LDAP2 = 334,
+-    LDAP3 = 335,
+-    RDATE = 336,
+-    RSYNC = 337,
+-    TNS = 338,
+-    PGSQL = 339,
+-    POSTFIXPOLICY = 340,
+-    SIP = 341,
+-    LMTP = 342,
+-    GPS = 343,
+-    RADIUS = 344,
+-    MEMCACHE = 345,
+-    STRING = 346,
+-    PATH = 347,
+-    MAILADDR = 348,
+-    MAILFROM = 349,
+-    MAILREPLYTO = 350,
+-    MAILSUBJECT = 351,
+-    MAILBODY = 352,
+-    SERVICENAME = 353,
+-    STRINGNAME = 354,
+-    NUMBER = 355,
+-    PERCENT = 356,
+-    LOGLIMIT = 357,
+-    CLOSELIMIT = 358,
+-    DNSLIMIT = 359,
+-    KEEPALIVELIMIT = 360,
+-    REPLYLIMIT = 361,
+-    REQUESTLIMIT = 362,
+-    STARTLIMIT = 363,
+-    WAITLIMIT = 364,
+-    GRACEFULLIMIT = 365,
+-    CLEANUPLIMIT = 366,
+-    REAL = 367,
+-    CHECKPROC = 368,
+-    CHECKFILESYS = 369,
+-    CHECKFILE = 370,
+-    CHECKDIR = 371,
+-    CHECKHOST = 372,
+-    CHECKSYSTEM = 373,
+-    CHECKFIFO = 374,
+-    CHECKPROGRAM = 375,
+-    CHILDREN = 376,
+-    SYSTEM = 377,
+-    STATUS = 378,
+-    ORIGIN = 379,
+-    VERSIONOPT = 380,
+-    RESOURCE = 381,
+-    MEMORY = 382,
+-    TOTALMEMORY = 383,
+-    LOADAVG1 = 384,
+-    LOADAVG5 = 385,
+-    LOADAVG15 = 386,
+-    SWAP = 387,
+-    MODE = 388,
+-    ACTIVE = 389,
+-    PASSIVE = 390,
+-    MANUAL = 391,
+-    CPU = 392,
+-    TOTALCPU = 393,
+-    CPUUSER = 394,
+-    CPUSYSTEM = 395,
+-    CPUWAIT = 396,
+-    GROUP = 397,
+-    REQUEST = 398,
+-    DEPENDS = 399,
+-    BASEDIR = 400,
+-    SLOT = 401,
+-    EVENTQUEUE = 402,
+-    SECRET = 403,
+-    HOSTHEADER = 404,
+-    UID = 405,
+-    EUID = 406,
+-    GID = 407,
+-    MMONIT = 408,
+-    INSTANCE = 409,
+-    USERNAME = 410,
+-    PASSWORD = 411,
+-    TIMESTAMP = 412,
+-    CHANGED = 413,
+-    SECOND = 414,
+-    MINUTE = 415,
+-    HOUR = 416,
+-    DAY = 417,
+-    SSLAUTO = 418,
+-    SSLV2 = 419,
+-    SSLV3 = 420,
+-    TLSV1 = 421,
+-    TLSV11 = 422,
+-    TLSV12 = 423,
+-    CERTMD5 = 424,
+-    BYTE = 425,
+-    KILOBYTE = 426,
+-    MEGABYTE = 427,
+-    GIGABYTE = 428,
+-    INODE = 429,
+-    SPACE = 430,
+-    PERMISSION = 431,
+-    SIZE = 432,
+-    MATCH = 433,
+-    NOT = 434,
+-    IGNORE = 435,
+-    ACTION = 436,
+-    UPTIME = 437,
+-    EXEC = 438,
+-    UNMONITOR = 439,
+-    PING = 440,
+-    ICMP = 441,
+-    ICMPECHO = 442,
+-    NONEXIST = 443,
+-    EXIST = 444,
+-    INVALID = 445,
+-    DATA = 446,
+-    RECOVERED = 447,
+-    PASSED = 448,
+-    SUCCEEDED = 449,
+-    URL = 450,
+-    CONTENT = 451,
+-    PID = 452,
+-    PPID = 453,
+-    FSFLAG = 454,
+-    REGISTER = 455,
+-    CREDENTIALS = 456,
+-    URLOBJECT = 457,
+-    TARGET = 458,
+-    TIMESPEC = 459,
+-    HTTPHEADER = 460,
+-    MAXFORWARD = 461,
+-    FIPS = 462,
+-    GREATER = 463,
+-    LESS = 464,
+-    EQUAL = 465,
+-    NOTEQUAL = 466
+-  };
++   /* Put the tokens into the symbol table, so that GDB and other debuggers
++      know about them.  */
++   enum yytokentype {
++     IF = 258,
++     ELSE = 259,
++     THEN = 260,
++     OR = 261,
++     FAILED = 262,
++     SET = 263,
++     LOGFILE = 264,
++     FACILITY = 265,
++     DAEMON = 266,
++     SYSLOG = 267,
++     MAILSERVER = 268,
++     HTTPD = 269,
++     ALLOW = 270,
++     ADDRESS = 271,
++     INIT = 272,
++     READONLY = 273,
++     CLEARTEXT = 274,
++     MD5HASH = 275,
++     SHA1HASH = 276,
++     CRYPT = 277,
++     DELAY = 278,
++     PEMFILE = 279,
++     ENABLE = 280,
++     DISABLE = 281,
++     HTTPDSSL = 282,
++     CLIENTPEMFILE = 283,
++     ALLOWSELFCERTIFICATION = 284,
++     IDFILE = 285,
++     STATEFILE = 286,
++     SEND = 287,
++     EXPECT = 288,
++     EXPECTBUFFER = 289,
++     CYCLE = 290,
++     COUNT = 291,
++     REMINDER = 292,
++     PIDFILE = 293,
++     START = 294,
++     STOP = 295,
++     PATHTOK = 296,
++     HOST = 297,
++     HOSTNAME = 298,
++     PORT = 299,
++     TYPE = 300,
++     UDP = 301,
++     TCP = 302,
++     TCPSSL = 303,
++     PROTOCOL = 304,
++     CONNECTION = 305,
++     ALERT = 306,
++     NOALERT = 307,
++     MAILFORMAT = 308,
++     UNIXSOCKET = 309,
++     SIGNATURE = 310,
++     TIMEOUT = 311,
++     RETRY = 312,
++     RESTART = 313,
++     CHECKSUM = 314,
++     EVERY = 315,
++     NOTEVERY = 316,
++     DEFAULT = 317,
++     HTTP = 318,
++     HTTPS = 319,
++     APACHESTATUS = 320,
++     FTP = 321,
++     SMTP = 322,
++     SMTPS = 323,
++     POP = 324,
++     IMAP = 325,
++     CLAMAV = 326,
++     NNTP = 327,
++     NTP3 = 328,
++     MYSQL = 329,
++     DNS = 330,
++     WEBSOCKET = 331,
++     SSH = 332,
++     DWP = 333,
++     LDAP2 = 334,
++     LDAP3 = 335,
++     RDATE = 336,
++     RSYNC = 337,
++     TNS = 338,
++     PGSQL = 339,
++     POSTFIXPOLICY = 340,
++     SIP = 341,
++     LMTP = 342,
++     GPS = 343,
++     RADIUS = 344,
++     MEMCACHE = 345,
++     STRING = 346,
++     PATH = 347,
++     MAILADDR = 348,
++     MAILFROM = 349,
++     MAILREPLYTO = 350,
++     MAILSUBJECT = 351,
++     MAILBODY = 352,
++     SERVICENAME = 353,
++     STRINGNAME = 354,
++     NUMBER = 355,
++     PERCENT = 356,
++     LOGLIMIT = 357,
++     CLOSELIMIT = 358,
++     DNSLIMIT = 359,
++     KEEPALIVELIMIT = 360,
++     REPLYLIMIT = 361,
++     REQUESTLIMIT = 362,
++     STARTLIMIT = 363,
++     WAITLIMIT = 364,
++     GRACEFULLIMIT = 365,
++     CLEANUPLIMIT = 366,
++     REAL = 367,
++     CHECKPROC = 368,
++     CHECKFILESYS = 369,
++     CHECKFILE = 370,
++     CHECKDIR = 371,
++     CHECKHOST = 372,
++     CHECKSYSTEM = 373,
++     CHECKFIFO = 374,
++     CHECKPROGRAM = 375,
++     CHILDREN = 376,
++     SYSTEM = 377,
++     STATUS = 378,
++     ORIGIN = 379,
++     VERSIONOPT = 380,
++     RESOURCE = 381,
++     MEMORY = 382,
++     TOTALMEMORY = 383,
++     LOADAVG1 = 384,
++     LOADAVG5 = 385,
++     LOADAVG15 = 386,
++     SWAP = 387,
++     MODE = 388,
++     ACTIVE = 389,
++     PASSIVE = 390,
++     MANUAL = 391,
++     CPU = 392,
++     TOTALCPU = 393,
++     CPUUSER = 394,
++     CPUSYSTEM = 395,
++     CPUWAIT = 396,
++     GROUP = 397,
++     REQUEST = 398,
++     DEPENDS = 399,
++     BASEDIR = 400,
++     SLOT = 401,
++     EVENTQUEUE = 402,
++     SECRET = 403,
++     HOSTHEADER = 404,
++     UID = 405,
++     EUID = 406,
++     GID = 407,
++     MMONIT = 408,
++     INSTANCE = 409,
++     USERNAME = 410,
++     PASSWORD = 411,
++     TIMESTAMP = 412,
++     CHANGED = 413,
++     SECOND = 414,
++     MINUTE = 415,
++     HOUR = 416,
++     DAY = 417,
++     SSLAUTO = 418,
++     SSLV2 = 419,
++     SSLV3 = 420,
++     TLSV1 = 421,
++     TLSV11 = 422,
++     TLSV12 = 423,
++     CERTMD5 = 424,
++     BYTE = 425,
++     KILOBYTE = 426,
++     MEGABYTE = 427,
++     GIGABYTE = 428,
++     INODE = 429,
++     SPACE = 430,
++     PERMISSION = 431,
++     SIZE = 432,
++     MATCH = 433,
++     NOT = 434,
++     IGNORE = 435,
++     ACTION = 436,
++     UPTIME = 437,
++     EXEC = 438,
++     UNMONITOR = 439,
++     PING = 440,
++     ICMP = 441,
++     ICMPECHO = 442,
++     NONEXIST = 443,
++     EXIST = 444,
++     INVALID = 445,
++     DATA = 446,
++     RECOVERED = 447,
++     PASSED = 448,
++     SUCCEEDED = 449,
++     URL = 450,
++     CONTENT = 451,
++     PID = 452,
++     PPID = 453,
++     FSFLAG = 454,
++     REGISTER = 455,
++     CREDENTIALS = 456,
++     URLOBJECT = 457,
++     TARGET = 458,
++     TIMESPEC = 459,
++     HTTPHEADER = 460,
++     MAXFORWARD = 461,
++     FIPS = 462,
++     NOTEQUAL = 463,
++     EQUAL = 464,
++     LESS = 465,
++     GREATER = 466
++   };
+ #endif
+ /* Tokens.  */
+ #define IF 258
+@@ -462,32 +454,36 @@
+ #define HTTPHEADER 460
+ #define MAXFORWARD 461
+ #define FIPS 462
+-#define GREATER 463
+-#define LESS 464
+-#define EQUAL 465
+-#define NOTEQUAL 466
++#define NOTEQUAL 463
++#define EQUAL 464
++#define LESS 465
++#define GREATER 466
++
++
++
+ 
+-/* Value type.  */
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE YYSTYPE;
+-union YYSTYPE
++typedef union YYSTYPE
+ {
+-#line 260 "src/p.y" /* yacc.c:1909  */
++
++/* Line 2068 of yacc.c  */
++#line 260 "src/p.y"
+ 
+   URL_T url;
+   float real;
+   int   number;
+   char *string;
+ 
+-#line 483 "src/y.tab.h" /* yacc.c:1909  */
+-};
++
++
++/* Line 2068 of yacc.c  */
++#line 481 "src/y.tab.h"
++} YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
++# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ #endif
+ 
+-
+ extern YYSTYPE yylval;
+ 
+-int yyparse (void);
+ 
+-#endif /* !YY_YY_SRC_Y_TAB_H_INCLUDED  */
+--- a/src/y.tab.c
++++ b/src/y.tab.c
+@@ -1,20 +1,20 @@
+ #include <config.h>
+-/* A Bison parser, made by GNU Bison 3.0.2.  */
++/* A Bison parser, made by GNU Bison 2.5.  */
+ 
+ /* Bison implementation for Yacc-like parsers in C
+-
+-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+-
++   
++      Copyright (C) 1984, 1989-1990, 2000-2011 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 3 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, see <http://www.gnu.org/licenses/>.  */
+ 
+@@ -27,7 +27,7 @@
+    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.  */
+ 
+@@ -45,7 +45,7 @@
+ #define YYBISON 1
+ 
+ /* Bison version.  */
+-#define YYBISON_VERSION "3.0.2"
++#define YYBISON_VERSION "2.5"
+ 
+ /* Skeleton name.  */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -59,11 +59,15 @@
+ /* Pull parsers.  */
+ #define YYPULL 1
+ 
++/* Using locations.  */
++#define YYLSP_NEEDED 0
+ 
+ 
+ 
+ /* Copy the first part of user declarations.  */
+-#line 26 "src/p.y" /* yacc.c:339  */
++
++/* Line 268 of yacc.c  */
++#line 26 "src/p.y"
+ 
+ 
+ /*
+@@ -297,15 +301,14 @@
+   static int verifyMaxForward(int);
+ 
+ 
+-#line 300 "src/y.tab.c" /* yacc.c:339  */
+ 
+-# ifndef YY_NULLPTR
+-#  if defined __cplusplus && 201103L <= __cplusplus
+-#   define YY_NULLPTR nullptr
+-#  else
+-#   define YY_NULLPTR 0
+-#  endif
+-# endif
++/* Line 268 of yacc.c  */
++#line 306 "src/y.tab.c"
++
++/* Enabling traces.  */
++#ifndef YYDEBUG
++# define YYDEBUG 1
++#endif
+ 
+ /* Enabling verbose error messages.  */
+ #ifdef YYERROR_VERBOSE
+@@ -315,233 +318,228 @@
+ # define YYERROR_VERBOSE 0
+ #endif
+ 
+-/* In a future release of Bison, this section will be replaced
+-   by #include "y.tab.h".  */
+-#ifndef YY_YY_SRC_Y_TAB_H_INCLUDED
+-# define YY_YY_SRC_Y_TAB_H_INCLUDED
+-/* Debug traces.  */
+-#ifndef YYDEBUG
+-# define YYDEBUG 1
+-#endif
+-#if YYDEBUG
+-extern int yydebug;
++/* Enabling the token table.  */
++#ifndef YYTOKEN_TABLE
++# define YYTOKEN_TABLE 0
+ #endif
+ 
+-/* Token type.  */
++
++/* Tokens.  */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+-  enum yytokentype
+-  {
+-    IF = 258,
+-    ELSE = 259,
+-    THEN = 260,
+-    OR = 261,
+-    FAILED = 262,
+-    SET = 263,
+-    LOGFILE = 264,
+-    FACILITY = 265,
+-    DAEMON = 266,
+-    SYSLOG = 267,
+-    MAILSERVER = 268,
+-    HTTPD = 269,
+-    ALLOW = 270,
+-    ADDRESS = 271,
+-    INIT = 272,
+-    READONLY = 273,
+-    CLEARTEXT = 274,
+-    MD5HASH = 275,
+-    SHA1HASH = 276,
+-    CRYPT = 277,
+-    DELAY = 278,
+-    PEMFILE = 279,
+-    ENABLE = 280,
+-    DISABLE = 281,
+-    HTTPDSSL = 282,
+-    CLIENTPEMFILE = 283,
+-    ALLOWSELFCERTIFICATION = 284,
+-    IDFILE = 285,
+-    STATEFILE = 286,
+-    SEND = 287,
+-    EXPECT = 288,
+-    EXPECTBUFFER = 289,
+-    CYCLE = 290,
+-    COUNT = 291,
+-    REMINDER = 292,
+-    PIDFILE = 293,
+-    START = 294,
+-    STOP = 295,
+-    PATHTOK = 296,
+-    HOST = 297,
+-    HOSTNAME = 298,
+-    PORT = 299,
+-    TYPE = 300,
+-    UDP = 301,
+-    TCP = 302,
+-    TCPSSL = 303,
+-    PROTOCOL = 304,
+-    CONNECTION = 305,
+-    ALERT = 306,
+-    NOALERT = 307,
+-    MAILFORMAT = 308,
+-    UNIXSOCKET = 309,
+-    SIGNATURE = 310,
+-    TIMEOUT = 311,
+-    RETRY = 312,
+-    RESTART = 313,
+-    CHECKSUM = 314,
+-    EVERY = 315,
+-    NOTEVERY = 316,
+-    DEFAULT = 317,
+-    HTTP = 318,
+-    HTTPS = 319,
+-    APACHESTATUS = 320,
+-    FTP = 321,
+-    SMTP = 322,
+-    SMTPS = 323,
+-    POP = 324,
+-    IMAP = 325,
+-    CLAMAV = 326,
+-    NNTP = 327,
+-    NTP3 = 328,
+-    MYSQL = 329,
+-    DNS = 330,
+-    WEBSOCKET = 331,
+-    SSH = 332,
+-    DWP = 333,
+-    LDAP2 = 334,
+-    LDAP3 = 335,
+-    RDATE = 336,
+-    RSYNC = 337,
+-    TNS = 338,
+-    PGSQL = 339,
+-    POSTFIXPOLICY = 340,
+-    SIP = 341,
+-    LMTP = 342,
+-    GPS = 343,
+-    RADIUS = 344,
+-    MEMCACHE = 345,
+-    STRING = 346,
+-    PATH = 347,
+-    MAILADDR = 348,
+-    MAILFROM = 349,
+-    MAILREPLYTO = 350,
+-    MAILSUBJECT = 351,
+-    MAILBODY = 352,
+-    SERVICENAME = 353,
+-    STRINGNAME = 354,
+-    NUMBER = 355,
+-    PERCENT = 356,
+-    LOGLIMIT = 357,
+-    CLOSELIMIT = 358,
+-    DNSLIMIT = 359,
+-    KEEPALIVELIMIT = 360,
+-    REPLYLIMIT = 361,
+-    REQUESTLIMIT = 362,
+-    STARTLIMIT = 363,
+-    WAITLIMIT = 364,
+-    GRACEFULLIMIT = 365,
+-    CLEANUPLIMIT = 366,
+-    REAL = 367,
+-    CHECKPROC = 368,
+-    CHECKFILESYS = 369,
+-    CHECKFILE = 370,
+-    CHECKDIR = 371,
+-    CHECKHOST = 372,
+-    CHECKSYSTEM = 373,
+-    CHECKFIFO = 374,
+-    CHECKPROGRAM = 375,
+-    CHILDREN = 376,
+-    SYSTEM = 377,
+-    STATUS = 378,
+-    ORIGIN = 379,
+-    VERSIONOPT = 380,
+-    RESOURCE = 381,
+-    MEMORY = 382,
+-    TOTALMEMORY = 383,
+-    LOADAVG1 = 384,
+-    LOADAVG5 = 385,
+-    LOADAVG15 = 386,
+-    SWAP = 387,
+-    MODE = 388,
+-    ACTIVE = 389,
+-    PASSIVE = 390,
+-    MANUAL = 391,
+-    CPU = 392,
+-    TOTALCPU = 393,
+-    CPUUSER = 394,
+-    CPUSYSTEM = 395,
+-    CPUWAIT = 396,
+-    GROUP = 397,
+-    REQUEST = 398,
+-    DEPENDS = 399,
+-    BASEDIR = 400,
+-    SLOT = 401,
+-    EVENTQUEUE = 402,
+-    SECRET = 403,
+-    HOSTHEADER = 404,
+-    UID = 405,
+-    EUID = 406,
+-    GID = 407,
+-    MMONIT = 408,
+-    INSTANCE = 409,
+-    USERNAME = 410,
+-    PASSWORD = 411,
+-    TIMESTAMP = 412,
+-    CHANGED = 413,
+-    SECOND = 414,
+-    MINUTE = 415,
+-    HOUR = 416,
+-    DAY = 417,
+-    SSLAUTO = 418,
+-    SSLV2 = 419,
+-    SSLV3 = 420,
+-    TLSV1 = 421,
+-    TLSV11 = 422,
+-    TLSV12 = 423,
+-    CERTMD5 = 424,
+-    BYTE = 425,
+-    KILOBYTE = 426,
+-    MEGABYTE = 427,
+-    GIGABYTE = 428,
+-    INODE = 429,
+-    SPACE = 430,
+-    PERMISSION = 431,
+-    SIZE = 432,
+-    MATCH = 433,
+-    NOT = 434,
+-    IGNORE = 435,
+-    ACTION = 436,
+-    UPTIME = 437,
+-    EXEC = 438,
+-    UNMONITOR = 439,
+-    PING = 440,
+-    ICMP = 441,
+-    ICMPECHO = 442,
+-    NONEXIST = 443,
+-    EXIST = 444,
+-    INVALID = 445,
+-    DATA = 446,
+-    RECOVERED = 447,
+-    PASSED = 448,
+-    SUCCEEDED = 449,
+-    URL = 450,
+-    CONTENT = 451,
+-    PID = 452,
+-    PPID = 453,
+-    FSFLAG = 454,
+-    REGISTER = 455,
+-    CREDENTIALS = 456,
+-    URLOBJECT = 457,
+-    TARGET = 458,
+-    TIMESPEC = 459,
+-    HTTPHEADER = 460,
+-    MAXFORWARD = 461,
+-    FIPS = 462,
+-    GREATER = 463,
+-    LESS = 464,
+-    EQUAL = 465,
+-    NOTEQUAL = 466
+-  };
++   /* Put the tokens into the symbol table, so that GDB and other debuggers
++      know about them.  */
++   enum yytokentype {
++     IF = 258,
++     ELSE = 259,
++     THEN = 260,
++     OR = 261,
++     FAILED = 262,
++     SET = 263,
++     LOGFILE = 264,
++     FACILITY = 265,
++     DAEMON = 266,
++     SYSLOG = 267,
++     MAILSERVER = 268,
++     HTTPD = 269,
++     ALLOW = 270,
++     ADDRESS = 271,
++     INIT = 272,
++     READONLY = 273,
++     CLEARTEXT = 274,
++     MD5HASH = 275,
++     SHA1HASH = 276,
++     CRYPT = 277,
++     DELAY = 278,
++     PEMFILE = 279,
++     ENABLE = 280,
++     DISABLE = 281,
++     HTTPDSSL = 282,
++     CLIENTPEMFILE = 283,
++     ALLOWSELFCERTIFICATION = 284,
++     IDFILE = 285,
++     STATEFILE = 286,
++     SEND = 287,
++     EXPECT = 288,
++     EXPECTBUFFER = 289,
++     CYCLE = 290,
++     COUNT = 291,
++     REMINDER = 292,
++     PIDFILE = 293,
++     START = 294,
++     STOP = 295,
++     PATHTOK = 296,
++     HOST = 297,
++     HOSTNAME = 298,
++     PORT = 299,
++     TYPE = 300,
++     UDP = 301,
++     TCP = 302,
++     TCPSSL = 303,
++     PROTOCOL = 304,
++     CONNECTION = 305,
++     ALERT = 306,
++     NOALERT = 307,
++     MAILFORMAT = 308,
++     UNIXSOCKET = 309,
++     SIGNATURE = 310,
++     TIMEOUT = 311,
++     RETRY = 312,
++     RESTART = 313,
++     CHECKSUM = 314,
++     EVERY = 315,
++     NOTEVERY = 316,
++     DEFAULT = 317,
++     HTTP = 318,
++     HTTPS = 319,
++     APACHESTATUS = 320,
++     FTP = 321,
++     SMTP = 322,
++     SMTPS = 323,
++     POP = 324,
++     IMAP = 325,
++     CLAMAV = 326,
++     NNTP = 327,
++     NTP3 = 328,
++     MYSQL = 329,
++     DNS = 330,
++     WEBSOCKET = 331,
++     SSH = 332,
++     DWP = 333,
++     LDAP2 = 334,
++     LDAP3 = 335,
++     RDATE = 336,
++     RSYNC = 337,
++     TNS = 338,
++     PGSQL = 339,
++     POSTFIXPOLICY = 340,
++     SIP = 341,
++     LMTP = 342,
++     GPS = 343,
++     RADIUS = 344,
++     MEMCACHE = 345,
++     STRING = 346,
++     PATH = 347,
++     MAILADDR = 348,
++     MAILFROM = 349,
++     MAILREPLYTO = 350,
++     MAILSUBJECT = 351,
++     MAILBODY = 352,
++     SERVICENAME = 353,
++     STRINGNAME = 354,
++     NUMBER = 355,
++     PERCENT = 356,
++     LOGLIMIT = 357,
++     CLOSELIMIT = 358,
++     DNSLIMIT = 359,
++     KEEPALIVELIMIT = 360,
++     REPLYLIMIT = 361,
++     REQUESTLIMIT = 362,
++     STARTLIMIT = 363,
++     WAITLIMIT = 364,
++     GRACEFULLIMIT = 365,
++     CLEANUPLIMIT = 366,
++     REAL = 367,
++     CHECKPROC = 368,
++     CHECKFILESYS = 369,
++     CHECKFILE = 370,
++     CHECKDIR = 371,
++     CHECKHOST = 372,
++     CHECKSYSTEM = 373,
++     CHECKFIFO = 374,
++     CHECKPROGRAM = 375,
++     CHILDREN = 376,
++     SYSTEM = 377,
++     STATUS = 378,
++     ORIGIN = 379,
++     VERSIONOPT = 380,
++     RESOURCE = 381,
++     MEMORY = 382,
++     TOTALMEMORY = 383,
++     LOADAVG1 = 384,
++     LOADAVG5 = 385,
++     LOADAVG15 = 386,
++     SWAP = 387,
++     MODE = 388,
++     ACTIVE = 389,
++     PASSIVE = 390,
++     MANUAL = 391,
++     CPU = 392,
++     TOTALCPU = 393,
++     CPUUSER = 394,
++     CPUSYSTEM = 395,
++     CPUWAIT = 396,
++     GROUP = 397,
++     REQUEST = 398,
++     DEPENDS = 399,
++     BASEDIR = 400,
++     SLOT = 401,
++     EVENTQUEUE = 402,
++     SECRET = 403,
++     HOSTHEADER = 404,
++     UID = 405,
++     EUID = 406,
++     GID = 407,
++     MMONIT = 408,
++     INSTANCE = 409,
++     USERNAME = 410,
++     PASSWORD = 411,
++     TIMESTAMP = 412,
++     CHANGED = 413,
++     SECOND = 414,
++     MINUTE = 415,
++     HOUR = 416,
++     DAY = 417,
++     SSLAUTO = 418,
++     SSLV2 = 419,
++     SSLV3 = 420,
++     TLSV1 = 421,
++     TLSV11 = 422,
++     TLSV12 = 423,
++     CERTMD5 = 424,
++     BYTE = 425,
++     KILOBYTE = 426,
++     MEGABYTE = 427,
++     GIGABYTE = 428,
++     INODE = 429,
++     SPACE = 430,
++     PERMISSION = 431,
++     SIZE = 432,
++     MATCH = 433,
++     NOT = 434,
++     IGNORE = 435,
++     ACTION = 436,
++     UPTIME = 437,
++     EXEC = 438,
++     UNMONITOR = 439,
++     PING = 440,
++     ICMP = 441,
++     ICMPECHO = 442,
++     NONEXIST = 443,
++     EXIST = 444,
++     INVALID = 445,
++     DATA = 446,
++     RECOVERED = 447,
++     PASSED = 448,
++     SUCCEEDED = 449,
++     URL = 450,
++     CONTENT = 451,
++     PID = 452,
++     PPID = 453,
++     FSFLAG = 454,
++     REGISTER = 455,
++     CREDENTIALS = 456,
++     URLOBJECT = 457,
++     TARGET = 458,
++     TIMESPEC = 459,
++     HTTPHEADER = 460,
++     MAXFORWARD = 461,
++     FIPS = 462,
++     NOTEQUAL = 463,
++     EQUAL = 464,
++     LESS = 465,
++     GREATER = 466
++   };
+ #endif
+ /* Tokens.  */
+ #define IF 258
+@@ -749,39 +747,42 @@
+ #define HTTPHEADER 460
+ #define MAXFORWARD 461
+ #define FIPS 462
+-#define GREATER 463
+-#define LESS 464
+-#define EQUAL 465
+-#define NOTEQUAL 466
++#define NOTEQUAL 463
++#define EQUAL 464
++#define LESS 465
++#define GREATER 466
++
++
++
+ 
+-/* Value type.  */
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE YYSTYPE;
+-union YYSTYPE
++typedef union YYSTYPE
+ {
+-#line 260 "src/p.y" /* yacc.c:355  */
++
++/* Line 293 of yacc.c  */
++#line 260 "src/p.y"
+ 
+   URL_T url;
+   float real;
+   int   number;
+   char *string;
+ 
+-#line 769 "src/y.tab.c" /* yacc.c:355  */
+-};
++
++
++/* Line 293 of yacc.c  */
++#line 773 "src/y.tab.c"
++} YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
++# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ #endif
+ 
+ 
+-extern YYSTYPE yylval;
+-
+-int yyparse (void);
+-
+-#endif /* !YY_YY_SRC_Y_TAB_H_INCLUDED  */
+-
+ /* Copy the second part of user declarations.  */
+ 
+-#line 784 "src/y.tab.c" /* yacc.c:358  */
++
++/* Line 343 of yacc.c  */
++#line 785 "src/y.tab.c"
+ 
+ #ifdef short
+ # undef short
+@@ -795,8 +796,11 @@
+ 
+ #ifdef YYTYPE_INT8
+ typedef YYTYPE_INT8 yytype_int8;
+-#else
++#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
+@@ -816,7 +820,8 @@
+ #  define YYSIZE_T __SIZE_TYPE__
+ # elif defined size_t
+ #  define YYSIZE_T size_t
+-# elif ! defined YYSIZE_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
+@@ -830,68 +835,39 @@
+ # if defined YYENABLE_NLS && YYENABLE_NLS
+ #  if ENABLE_NLS
+ #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
++#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+ #  endif
+ # endif
+ # ifndef YY_
+-#  define YY_(Msgid) Msgid
+-# endif
+-#endif
+-
+-#ifndef YY_ATTRIBUTE
+-# if (defined __GNUC__                                               \
+-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+-# else
+-#  define YY_ATTRIBUTE(Spec) /* empty */
+-# endif
+-#endif
+-
+-#ifndef YY_ATTRIBUTE_PURE
+-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+-#endif
+-
+-#ifndef YY_ATTRIBUTE_UNUSED
+-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+-#endif
+-
+-#if !defined _Noreturn \
+-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+-# if defined _MSC_VER && 1200 <= _MSC_VER
+-#  define _Noreturn __declspec (noreturn)
+-# else
+-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
++#  define YY_(msgid) msgid
+ # endif
+ #endif
+ 
+ /* Suppress unused-variable warnings by "using" E.  */
+ #if ! defined lint || defined __GNUC__
+-# define YYUSE(E) ((void) (E))
++# define YYUSE(e) ((void) (e))
+ #else
+-# define YYUSE(E) /* empty */
++# define YYUSE(e) /* empty */
+ #endif
+ 
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+-    _Pragma ("GCC diagnostic push") \
+-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+-    _Pragma ("GCC diagnostic pop")
++/* Identity function, used to suppress warnings about constant conditions.  */
++#ifndef lint
++# define YYID(n) (n)
+ #else
+-# define YY_INITIAL_VALUE(Value) Value
+-#endif
+-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int yyi)
++#else
++static int
++YYID (yyi)
++    int yyi;
+ #endif
+-#ifndef YY_INITIAL_VALUE
+-# define YY_INITIAL_VALUE(Value) /* Nothing. */
++{
++  return yyi;
++}
+ #endif
+ 
+-
+ #if ! defined yyoverflow || YYERROR_VERBOSE
+ 
+ /* The parser invokes alloca or malloc; define the necessary symbols.  */
+@@ -909,9 +885,9 @@
+ #    define alloca _alloca
+ #   else
+ #    define YYSTACK_ALLOC alloca
+-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
++#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
+ #     ifndef EXIT_SUCCESS
+ #      define EXIT_SUCCESS 0
+ #     endif
+@@ -921,8 +897,8 @@
+ # endif
+ 
+ # ifdef YYSTACK_ALLOC
+-   /* Pacify GCC's 'empty if-body' warning.  */
+-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
++   /* 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
+@@ -938,7 +914,7 @@
+ #  endif
+ #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
+        && ! ((defined YYMALLOC || defined malloc) \
+-             && (defined YYFREE || defined free)))
++	     && (defined YYFREE || defined free)))
+ #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ #   ifndef EXIT_SUCCESS
+ #    define EXIT_SUCCESS 0
+@@ -946,13 +922,15 @@
+ #  endif
+ #  ifndef YYMALLOC
+ #   define YYMALLOC malloc
+-#   if ! defined malloc && ! defined EXIT_SUCCESS
++#   if ! defined malloc && ! defined EXIT_SUCCESS && (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 EXIT_SUCCESS
++#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
+ #   endif
+ #  endif
+@@ -962,7 +940,7 @@
+ 
+ #if (! defined yyoverflow \
+      && (! defined __cplusplus \
+-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
++	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+ 
+ /* A type that is properly aligned for any stack member.  */
+ union yyalloc
+@@ -987,35 +965,35 @@
+    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_alloc, Stack)                           \
+-    do                                                                  \
+-      {                                                                 \
+-        YYSIZE_T yynewbytes;                                            \
+-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+-        Stack = &yyptr->Stack_alloc;                                    \
+-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+-        yyptr += yynewbytes / sizeof (*yyptr);                          \
+-      }                                                                 \
+-    while (0)
++# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
++    do									\
++      {									\
++	YYSIZE_T yynewbytes;						\
++	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
++	Stack = &yyptr->Stack_alloc;					\
++	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
++	yyptr += yynewbytes / sizeof (*yyptr);				\
++      }									\
++    while (YYID (0))
+ 
+ #endif
+ 
+ #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+-/* Copy COUNT objects from SRC to DST.  The source and destination do
++/* Copy COUNT objects from FROM to TO.  The source and destination do
+    not overlap.  */
+ # ifndef YYCOPY
+ #  if defined __GNUC__ && 1 < __GNUC__
+-#   define YYCOPY(Dst, Src, Count) \
+-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
++#   define YYCOPY(To, From, Count) \
++      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+ #  else
+-#   define YYCOPY(Dst, Src, Count)              \
+-      do                                        \
+-        {                                       \
+-          YYSIZE_T yyi;                         \
+-          for (yyi = 0; yyi < (Count); yyi++)   \
+-            (Dst)[yyi] = (Src)[yyi];            \
+-        }                                       \
+-      while (0)
++#   define YYCOPY(To, From, Count)		\
++      do					\
++	{					\
++	  YYSIZE_T yyi;				\
++	  for (yyi = 0; yyi < (Count); yyi++)	\
++	    (To)[yyi] = (From)[yyi];		\
++	}					\
++      while (YYID (0))
+ #  endif
+ # endif
+ #endif /* !YYCOPY_NEEDED */
+@@ -1031,19 +1009,17 @@
+ #define YYNNTS  172
+ /* YYNRULES -- Number of rules.  */
+ #define YYNRULES  533
+-/* YYNSTATES -- Number of states.  */
++/* YYNRULES -- Number of states.  */
+ #define YYNSTATES  946
+ 
+-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+-   by yylex, with out-of-bounds checking.  */
++/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+ #define YYUNDEFTOK  2
+ #define YYMAXUTOK   466
+ 
+-#define YYTRANSLATE(YYX)                                                \
++#define YYTRANSLATE(YYX)						\
+   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ 
+-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+-   as returned by yylex, without out-of-bounds checking.  */
++/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+ static const yytype_uint8 yytranslate[] =
+ {
+        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+@@ -1096,7 +1072,241 @@
+ };
+ 
+ #if YYDEBUG
+-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
++/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
++   YYRHS.  */
++static const yytype_uint16 yyprhs[] =
++{
++       0,     0,     3,     4,     6,     8,    11,    13,    15,    17,
++      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
++      39,    42,    45,    48,    51,    54,    57,    60,    63,    64,
++      67,    69,    71,    73,    75,    77,    79,    81,    83,    85,
++      87,    89,    91,    93,    95,    97,    99,   101,   103,   105,
++     106,   109,   111,   113,   115,   117,   119,   121,   123,   125,
++     127,   129,   131,   133,   135,   137,   139,   141,   143,   144,
++     147,   149,   151,   153,   155,   157,   159,   161,   163,   165,
++     167,   169,   171,   173,   175,   177,   179,   180,   183,   185,
++     187,   189,   191,   193,   195,   197,   199,   201,   203,   205,
++     207,   209,   211,   213,   216,   218,   220,   222,   224,   226,
++     228,   230,   232,   234,   236,   238,   240,   241,   244,   246,
++     248,   250,   252,   254,   256,   258,   260,   262,   263,   266,
++     268,   270,   272,   274,   276,   278,   280,   282,   284,   286,
++     288,   290,   292,   294,   295,   298,   300,   302,   304,   306,
++     308,   310,   312,   314,   316,   318,   323,   331,   340,   345,
++     346,   350,   355,   358,   361,   365,   369,   375,   380,   387,
++     392,   396,   400,   404,   408,   411,   415,   420,   421,   424,
++     430,   436,   442,   444,   447,   453,   461,   462,   465,   467,
++     469,   471,   473,   476,   479,   480,   483,   485,   487,   489,
++     492,   495,   498,   501,   503,   505,   508,   511,   514,   517,
++     520,   523,   526,   528,   534,   539,   542,   546,   550,   554,
++     555,   560,   561,   567,   568,   574,   575,   581,   584,   586,
++     589,   591,   592,   594,   599,   604,   609,   614,   619,   624,
++     629,   634,   639,   642,   647,   653,   660,   664,   669,   673,
++     678,   682,   687,   689,   692,   694,   697,   699,   701,   704,
++     707,   710,   713,   714,   717,   720,   721,   724,   725,   728,
++     742,   754,   766,   777,   787,   788,   791,   794,   797,   798,
++     801,   806,   809,   810,   813,   814,   816,   818,   820,   822,
++     824,   826,   827,   831,   834,   837,   840,   843,   847,   851,
++     854,   857,   860,   863,   866,   871,   874,   877,   880,   883,
++     886,   889,   892,   895,   898,   901,   904,   907,   910,   914,
++     917,   921,   923,   925,   928,   931,   934,   936,   939,   942,
++     945,   948,   951,   952,   955,   958,   959,   962,   963,   966,
++     968,   970,   972,   974,   978,   982,   985,   988,   991,   992,
++     995,   998,  1000,  1004,  1009,  1014,  1019,  1024,  1029,  1034,
++    1039,  1044,  1049,  1054,  1062,  1069,  1076,  1086,  1087,  1090,
++    1091,  1095,  1096,  1100,  1101,  1105,  1106,  1109,  1117,  1125,
++    1126,  1130,  1132,  1134,  1138,  1145,  1153,  1155,  1158,  1161,
++    1163,  1166,  1168,  1170,  1172,  1174,  1176,  1178,  1180,  1182,
++    1184,  1186,  1188,  1190,  1192,  1194,  1196,  1198,  1200,  1202,
++    1204,  1206,  1208,  1210,  1211,  1216,  1218,  1221,  1223,  1225,
++    1227,  1229,  1233,  1236,  1239,  1242,  1245,  1248,  1251,  1254,
++    1256,  1259,  1261,  1270,  1277,  1284,  1286,  1289,  1291,  1293,
++    1295,  1297,  1304,  1306,  1309,  1311,  1313,  1315,  1317,  1322,
++    1327,  1332,  1334,  1336,  1338,  1343,  1348,  1353,  1358,  1363,
++    1368,  1372,  1376,  1378,  1380,  1382,  1384,  1386,  1396,  1403,
++    1404,  1406,  1408,  1410,  1412,  1414,  1415,  1417,  1419,  1421,
++    1423,  1425,  1428,  1432,  1434,  1436,  1438,  1440,  1442,  1444,
++    1445,  1448,  1452,  1453,  1456,  1460,  1461,  1468,  1475,  1482,
++    1491,  1502,  1510,  1511,  1513,  1515,  1524,  1534,  1544,  1554,
++    1561,  1562,  1564,  1566,  1568,  1570,  1579,  1587,  1595,  1600,
++    1605,  1606,  1608,  1618,  1625,  1634,  1643,  1652,  1661,  1670,
++    1679,  1682,  1683,  1686
++};
++
++/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
++static const yytype_int16 yyrhs[] =
++{
++     219,     0,    -1,    -1,   220,    -1,   221,    -1,   220,   221,
++      -1,   238,    -1,   239,    -1,   244,    -1,   245,    -1,   249,
++      -1,   253,    -1,   254,    -1,   255,    -1,   248,    -1,   246,
++      -1,   247,    -1,   241,    -1,   242,    -1,   243,    -1,   280,
++     222,    -1,   281,   224,    -1,   282,   226,    -1,   283,   228,
++      -1,   284,   230,    -1,   285,   232,    -1,   286,   234,    -1,
++     287,   236,    -1,    -1,   222,   223,    -1,   288,    -1,   289,
++      -1,   290,    -1,   324,    -1,   325,    -1,   326,    -1,   385,
++      -1,   386,    -1,   387,    -1,   327,    -1,   298,    -1,   299,
++      -1,   333,    -1,   336,    -1,   344,    -1,   345,    -1,   346,
++      -1,   347,    -1,   351,    -1,    -1,   224,   225,    -1,   288,
++      -1,   289,    -1,   290,    -1,   324,    -1,   366,    -1,   333,
++      -1,   344,    -1,   336,    -1,   381,    -1,   385,    -1,   387,
++      -1,   375,    -1,   384,    -1,   382,    -1,   345,    -1,   346,
++      -1,   347,    -1,    -1,   226,   227,    -1,   288,    -1,   289,
++      -1,   290,    -1,   324,    -1,   333,    -1,   344,    -1,   336,
++      -1,   381,    -1,   385,    -1,   387,    -1,   345,    -1,   346,
++      -1,   347,    -1,   377,    -1,   378,    -1,   379,    -1,    -1,
++     228,   229,    -1,   288,    -1,   289,    -1,   290,    -1,   324,
++      -1,   366,    -1,   333,    -1,   344,    -1,   336,    -1,   381,
++      -1,   385,    -1,   387,    -1,   345,    -1,   346,    -1,   347,
++      -1,   231,    -1,   230,   231,    -1,   288,    -1,   289,    -1,
++     290,    -1,   324,    -1,   298,    -1,   300,    -1,   333,    -1,
++     336,    -1,   344,    -1,   345,    -1,   346,    -1,   347,    -1,
++      -1,   232,   233,    -1,   288,    -1,   289,    -1,   290,    -1,
++     333,    -1,   336,    -1,   344,    -1,   346,    -1,   347,    -1,
++     354,    -1,    -1,   234,   235,    -1,   288,    -1,   289,    -1,
++     290,    -1,   324,    -1,   366,    -1,   333,    -1,   344,    -1,
++     336,    -1,   381,    -1,   385,    -1,   387,    -1,   345,    -1,
++     346,    -1,   347,    -1,    -1,   236,   237,    -1,   288,    -1,
++     289,    -1,   290,    -1,   333,    -1,   324,    -1,   336,    -1,
++     344,    -1,   346,    -1,   347,    -1,   350,    -1,     8,   337,
++     341,   389,    -1,     8,   337,   212,   339,   213,   341,   389,
++      -1,     8,   337,   179,   212,   339,   213,   341,   389,    -1,
++       8,    11,   100,   240,    -1,    -1,    39,    23,   100,    -1,
++       8,    34,   100,   380,    -1,     8,    17,    -1,     8,   207,
++      -1,     8,     9,    92,    -1,     8,     9,    12,    -1,     8,
++       9,    12,    10,    91,    -1,     8,   147,   145,    92,    -1,
++       8,   147,   145,    92,   146,   100,    -1,     8,   147,   146,
++     100,    -1,     8,    30,    92,    -1,     8,    31,    92,    -1,
++       8,    38,    92,    -1,     8,   153,   250,    -1,   251,   252,
++      -1,   250,   251,   252,    -1,   202,   331,   306,   305,    -1,
++      -1,   200,   201,    -1,     8,    13,   256,   331,   297,    -1,
++       8,    53,   212,   342,   213,    -1,     8,    14,    44,   100,
++     258,    -1,   257,    -1,   256,   257,    -1,    91,   295,   296,
++     306,   305,    -1,    91,    44,   100,   295,   296,   306,   305,
++      -1,    -1,   258,   259,    -1,   260,    -1,   265,    -1,   268,
++      -1,   272,    -1,   264,   261,    -1,   263,   261,    -1,    -1,
++     261,   262,    -1,   269,    -1,   270,    -1,   271,    -1,    27,
++      25,    -1,    25,    27,    -1,    27,    26,    -1,    26,    27,
++      -1,   266,    -1,   267,    -1,    55,    25,    -1,    25,    55,
++      -1,    55,    26,    -1,    26,    55,    -1,    16,    91,    -1,
++      24,    92,    -1,    28,    92,    -1,    29,    -1,    15,    91,
++     214,    91,   279,    -1,    15,   215,    91,   279,    -1,    15,
++      92,    -1,    15,    19,    92,    -1,    15,    20,    92,    -1,
++      15,    22,    92,    -1,    -1,    15,    92,   273,   277,    -1,
++      -1,    15,    19,    92,   274,   277,    -1,    -1,    15,    20,
++      92,   275,   277,    -1,    -1,    15,    22,    92,   276,   277,
++      -1,    15,    91,    -1,   278,    -1,   277,   278,    -1,    91,
++      -1,    -1,    18,    -1,   113,    98,    38,    92,    -1,   113,
++      98,    41,    92,    -1,   113,    98,   178,    91,    -1,   113,
++      98,   178,    92,    -1,   115,    98,    41,    92,    -1,   114,
++      98,    41,    92,    -1,   114,    98,    41,    91,    -1,   116,
++      98,    41,    92,    -1,   117,    98,    16,    91,    -1,   118,
++      98,    -1,   119,    98,    41,    92,    -1,   120,    98,    41,
++     291,   330,    -1,   120,    98,    41,   291,   292,   330,    -1,
++      39,   291,   329,    -1,    39,   291,   292,   329,    -1,    40,
++     291,   329,    -1,    40,   291,   292,   329,    -1,    58,   291,
++     329,    -1,    58,   291,   292,   329,    -1,   293,    -1,   291,
++     293,    -1,   294,    -1,   292,   294,    -1,    91,    -1,    92,
++      -1,   150,    91,    -1,   152,    91,    -1,   150,   100,    -1,
++     152,   100,    -1,    -1,   155,    93,    -1,   155,    91,    -1,
++      -1,   156,    91,    -1,    -1,    43,    91,    -1,     3,     7,
++     301,   302,   304,   307,   334,   331,   332,   372,     5,   370,
++     374,    -1,     3,     7,   195,   202,   334,   331,   332,   372,
++       5,   370,   374,    -1,     3,     7,   303,   304,   307,   331,
++     332,   372,     5,   370,   374,    -1,     3,     7,   186,   388,
++     328,   331,   372,     5,   370,   374,    -1,     3,     7,   185,
++     328,   331,   372,     5,   370,   374,    -1,    -1,    42,    91,
++      -1,    44,   100,    -1,    54,    92,    -1,    -1,    45,    47,
++      -1,    45,    48,   306,   305,    -1,    45,    46,    -1,    -1,
++     169,    91,    -1,    -1,   164,    -1,   165,    -1,   166,    -1,
++     167,    -1,   168,    -1,   163,    -1,    -1,    49,    65,   322,
++      -1,    49,    62,    -1,    49,    75,    -1,    49,    78,    -1,
++      49,    66,    -1,    49,    63,   314,    -1,    49,    64,   314,
++      -1,    49,    70,    -1,    49,    71,    -1,    49,    79,    -1,
++      49,    80,    -1,    49,    74,    -1,    49,    86,   312,   313,
++      -1,    49,    72,    -1,    49,    73,    -1,    49,    85,    -1,
++      49,    69,    -1,    49,    67,    -1,    49,    68,    -1,    49,
++      77,    -1,    49,    81,    -1,    49,    82,    -1,    49,    83,
++      -1,    49,    84,    -1,    49,    87,    -1,    49,    88,    -1,
++      49,    89,   321,    -1,    49,    90,    -1,    49,    76,   310,
++      -1,   308,    -1,   309,    -1,   308,   309,    -1,    32,    91,
++      -1,    33,    91,    -1,   311,    -1,   310,   311,    -1,   124,
++      91,    -1,   143,    92,    -1,    42,    91,    -1,   125,   100,
++      -1,    -1,   203,    93,    -1,   203,    91,    -1,    -1,   206,
++     100,    -1,    -1,   314,   315,    -1,   317,    -1,   318,    -1,
++     316,    -1,   319,    -1,   216,   320,   217,    -1,   123,   367,
++     100,    -1,   143,    92,    -1,    59,    91,    -1,   149,    91,
++      -1,    -1,   320,   205,    -1,   148,    91,    -1,   323,    -1,
++     322,     6,   323,    -1,   102,   367,   100,   101,    -1,   103,
++     367,   100,   101,    -1,   104,   367,   100,   101,    -1,   105,
++     367,   100,   101,    -1,   106,   367,   100,   101,    -1,   107,
++     367,   100,   101,    -1,   108,   367,   100,   101,    -1,   109,
++     367,   100,   101,    -1,   110,   367,   100,   101,    -1,   111,
++     367,   100,   101,    -1,     3,   179,   189,   372,     5,   370,
++     374,    -1,     3,   158,   197,   372,     5,   370,    -1,     3,
++     158,   198,   372,     5,   370,    -1,     3,   182,   367,   100,
++     368,   372,     5,   370,   374,    -1,    -1,    36,   100,    -1,
++      -1,    56,   100,   159,    -1,    -1,    56,   100,   159,    -1,
++      -1,    56,   100,   159,    -1,    -1,    57,   100,    -1,     3,
++     100,    58,   100,    35,     5,   370,    -1,     3,   100,    58,
++     100,    35,     5,    56,    -1,    -1,   196,   335,    91,    -1,
++     209,    -1,   208,    -1,   337,   341,   389,    -1,   337,   212,
++     339,   213,   341,   389,    -1,   337,   179,   212,   339,   213,
++     341,   389,    -1,   338,    -1,    51,    93,    -1,    52,    93,
++      -1,   340,    -1,   339,   340,    -1,   181,    -1,    59,    -1,
++      50,    -1,   196,    -1,   191,    -1,   183,    -1,   199,    -1,
++     152,    -1,   186,    -1,   154,    -1,   190,    -1,   188,    -1,
++     176,    -1,   197,    -1,   198,    -1,   126,    -1,   177,    -1,
++     123,    -1,    56,    -1,   157,    -1,   150,    -1,   182,    -1,
++      -1,    53,   212,   342,   213,    -1,   343,    -1,   342,   343,
++      -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    60,
++     100,    35,    -1,    60,   204,    -1,    61,   204,    -1,   133,
++     134,    -1,   133,   135,    -1,   133,   136,    -1,   142,    99,
++      -1,   144,   348,    -1,   349,    -1,   348,   349,    -1,    98,
++      -1,     3,   123,   367,   100,   372,     5,   370,   374,    -1,
++       3,   158,   123,   372,     5,   370,    -1,     3,   352,   372,
++       5,   370,   374,    -1,   353,    -1,   352,   353,    -1,   357,
++      -1,   360,    -1,   362,    -1,   363,    -1,     3,   355,   372,
++       5,   370,   374,    -1,   356,    -1,   355,   356,    -1,   363,
++      -1,   360,    -1,   361,    -1,   358,    -1,   137,   367,   100,
++     101,    -1,   138,   367,   100,   101,    -1,   359,   367,   100,
++     101,    -1,   139,    -1,   140,    -1,   141,    -1,   127,   367,
++     365,   380,    -1,   127,   367,   100,   101,    -1,   128,   367,
++     365,   380,    -1,   128,   367,   100,   101,    -1,   132,   367,
++     365,   380,    -1,   132,   367,   100,   101,    -1,   121,   367,
++     100,    -1,   364,   367,   365,    -1,   129,    -1,   130,    -1,
++     131,    -1,   112,    -1,   100,    -1,     3,   157,   367,   100,
++     368,   372,     5,   370,   374,    -1,     3,   158,   157,   372,
++       5,   370,    -1,    -1,   211,    -1,   210,    -1,   209,    -1,
++     208,    -1,   158,    -1,    -1,   159,    -1,   160,    -1,   161,
++      -1,   162,    -1,    51,    -1,   183,   291,    -1,   183,   291,
++     292,    -1,    58,    -1,    39,    -1,    40,    -1,   184,    -1,
++     369,    -1,   369,    -1,    -1,   100,    35,    -1,   100,   100,
++      35,    -1,    -1,   100,    35,    -1,   100,   100,    35,    -1,
++      -1,     4,     3,   192,   373,     5,   371,    -1,     4,     3,
++     193,   373,     5,   371,    -1,     4,     3,   194,   373,     5,
++     371,    -1,     3,     7,   376,    59,   372,     5,   370,   374,
++      -1,     3,     7,   376,    59,    33,    91,   372,     5,   370,
++     374,    -1,     3,   158,   376,    59,   372,     5,   370,    -1,
++      -1,    20,    -1,    21,    -1,     3,   174,   367,   100,   372,
++       5,   370,   374,    -1,     3,   174,   367,   100,   101,   372,
++       5,   370,   374,    -1,     3,   175,   367,   365,   380,   372,
++       5,   370,   374,    -1,     3,   175,   367,   100,   101,   372,
++       5,   370,   374,    -1,     3,   158,   199,   372,     5,   370,
++      -1,    -1,   170,    -1,   171,    -1,   172,    -1,   173,    -1,
++       3,     7,   176,   100,   372,     5,   370,   374,    -1,     3,
++     383,   178,    92,   372,     5,   370,    -1,     3,   383,   178,
++      91,   372,     5,   370,    -1,   180,   383,   178,    92,    -1,
++     180,   383,   178,    91,    -1,    -1,   179,    -1,     3,   177,
++     367,   100,   380,   372,     5,   370,   374,    -1,     3,   158,
++     177,   372,     5,   370,    -1,     3,     7,   150,    91,   372,
++       5,   370,   374,    -1,     3,     7,   150,   100,   372,     5,
++     370,   374,    -1,     3,     7,   151,    91,   372,     5,   370,
++     374,    -1,     3,     7,   151,   100,   372,     5,   370,   374,
++      -1,     3,     7,   152,    91,   372,     5,   370,   374,    -1,
++       3,     7,   152,   100,   372,     5,   370,   374,    -1,    45,
++     187,    -1,    -1,    37,   100,    -1,    37,   100,    35,    -1
++};
++
++/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+ static const yytype_uint16 yyrline[] =
+ {
+        0,   306,   306,   307,   310,   311,   314,   315,   316,   317,
+@@ -1156,7 +1366,7 @@
+ };
+ #endif
+ 
+-#if YYDEBUG || YYERROR_VERBOSE || 0
++#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[] =
+@@ -1193,8 +1403,8 @@
+   "UNMONITOR", "PING", "ICMP", "ICMPECHO", "NONEXIST", "EXIST", "INVALID",
+   "DATA", "RECOVERED", "PASSED", "SUCCEEDED", "URL", "CONTENT", "PID",
+   "PPID", "FSFLAG", "REGISTER", "CREDENTIALS", "URLOBJECT", "TARGET",
+-  "TIMESPEC", "HTTPHEADER", "MAXFORWARD", "FIPS", "GREATER", "LESS",
+-  "EQUAL", "NOTEQUAL", "'{'", "'}'", "':'", "'@'", "'['", "']'", "$accept",
++  "TIMESPEC", "HTTPHEADER", "MAXFORWARD", "FIPS", "NOTEQUAL", "EQUAL",
++  "LESS", "GREATER", "'{'", "'}'", "':'", "'@'", "'['", "']'", "$accept",
+   "cfgfile", "statement_list", "statement", "optproclist", "optproc",
+   "optfilelist", "optfile", "optfilesyslist", "optfilesys", "optdirlist",
+   "optdir", "opthostlist", "opthost", "optsystemlist", "optsystem",
+@@ -1227,13 +1437,13 @@
+   "resourceloadavg", "value", "timestamp", "operator", "time", "action",
+   "action1", "action2", "rate1", "rate2", "recovery", "checksum",
+   "hashtype", "inode", "space", "fsflag", "unit", "permission", "match",
+-  "matchflagnot", "size", "uid", "euid", "gid", "icmptype", "reminder", YY_NULLPTR
++  "matchflagnot", "size", "uid", "euid", "gid", "icmptype", "reminder", 0
+ };
+ #endif
+ 
+ # ifdef YYPRINT
+-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+-   (internal) symbol number NUM (which must be that of a token).  */
++/* 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,
+@@ -1261,120 +1471,127 @@
+ };
+ # endif
+ 
+-#define YYPACT_NINF -679
+-
+-#define yypact_value_is_default(Yystate) \
+-  (!!((Yystate) == (-679)))
+-
+-#define YYTABLE_NINF -226
+-
+-#define yytable_value_is_error(Yytable_value) \
+-  0
++/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
++static const yytype_uint16 yyr1[] =
++{
++       0,   218,   219,   219,   220,   220,   221,   221,   221,   221,
++     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
++     221,   221,   221,   221,   221,   221,   221,   221,   222,   222,
++     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
++     223,   223,   223,   223,   223,   223,   223,   223,   223,   224,
++     224,   225,   225,   225,   225,   225,   225,   225,   225,   225,
++     225,   225,   225,   225,   225,   225,   225,   225,   226,   226,
++     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
++     227,   227,   227,   227,   227,   227,   228,   228,   229,   229,
++     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
++     229,   229,   230,   230,   231,   231,   231,   231,   231,   231,
++     231,   231,   231,   231,   231,   231,   232,   232,   233,   233,
++     233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
++     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
++     235,   235,   235,   236,   236,   237,   237,   237,   237,   237,
++     237,   237,   237,   237,   237,   238,   238,   238,   239,   240,
++     240,   241,   242,   243,   244,   244,   244,   245,   245,   245,
++     246,   247,   248,   249,   250,   250,   251,   252,   252,   253,
++     254,   255,   256,   256,   257,   257,   258,   258,   259,   259,
++     259,   259,   260,   260,   261,   261,   262,   262,   262,   263,
++     263,   264,   264,   265,   265,   266,   266,   267,   267,   268,
++     269,   270,   271,   272,   272,   272,   272,   272,   272,   273,
++     272,   274,   272,   275,   272,   276,   272,   272,   277,   277,
++     278,   279,   279,   280,   280,   280,   280,   281,   282,   282,
++     283,   284,   285,   286,   287,   287,   288,   288,   289,   289,
++     290,   290,   291,   291,   292,   292,   293,   293,   294,   294,
++     294,   294,   295,   295,   295,   296,   296,   297,   297,   298,
++     298,   299,   300,   300,   301,   301,   302,   303,   304,   304,
++     304,   304,   305,   305,   306,   306,   306,   306,   306,   306,
++     306,   307,   307,   307,   307,   307,   307,   307,   307,   307,
++     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
++     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
++     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
++     311,   311,   312,   312,   312,   313,   313,   314,   314,   315,
++     315,   315,   315,   315,   316,   317,   318,   319,   320,   320,
++     321,   322,   322,   323,   323,   323,   323,   323,   323,   323,
++     323,   323,   323,   324,   325,   326,   327,   328,   328,   329,
++     329,   330,   330,   331,   331,   332,   332,   333,   333,   334,
++     334,   335,   335,   336,   336,   336,   336,   337,   338,   339,
++     339,   340,   340,   340,   340,   340,   340,   340,   340,   340,
++     340,   340,   340,   340,   340,   340,   340,   340,   340,   340,
++     340,   340,   340,   341,   341,   342,   342,   343,   343,   343,
++     343,   344,   344,   344,   345,   345,   345,   346,   347,   348,
++     348,   349,   350,   350,   351,   352,   352,   353,   353,   353,
++     353,   354,   355,   355,   356,   356,   356,   356,   357,   357,
++     358,   359,   359,   359,   360,   360,   360,   360,   361,   361,
++     362,   363,   364,   364,   364,   365,   365,   366,   366,   367,
++     367,   367,   367,   367,   367,   368,   368,   368,   368,   368,
++     369,   369,   369,   369,   369,   369,   369,   370,   371,   372,
++     372,   372,   373,   373,   373,   374,   374,   374,   374,   375,
++     375,   375,   376,   376,   376,   377,   377,   378,   378,   379,
++     380,   380,   380,   380,   380,   381,   382,   382,   382,   382,
++     383,   383,   384,   384,   385,   385,   386,   386,   387,   387,
++     388,   389,   389,   389
++};
+ 
+-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+-     STATE-NUM.  */
+-static const yytype_int16 yypact[] =
++/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
++static const yytype_uint8 yyr2[] =
+ {
+-     514,   250,   -51,   -35,   -27,   -11,     3,    42,    52,    65,
+-     145,   514,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,   284,  -679,  -679,  -679,    16,    74,   107,   221,  -679,
+-     176,   198,   226,   279,   292,   180,   137,   196,  -679,   -21,
+-      -3,   372,   377,   393,   411,  -679,   397,   415,  -679,  -679,
+-     451,    96,   700,   716,     7,   286,   286,   343,   286,   -52,
+-     273,   289,   381,   391,   284,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,    37,  -679,  -679,  -679,  -679,  -679,
+-     436,   716,   585,   482,  -679,   456,   -18,     0,  -679,   405,
+-    -679,  -679,   260,  -679,  -679,   424,   425,   407,   475,   196,
+-     349,   331,   339,   612,   530,   485,   491,   367,   379,   517,
+-     519,   523,   524,   286,   237,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,    15,   443,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,    27,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,    26,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,    47,
+-     559,   452,  -679,  -679,   230,  -679,   230,  -679,   230,   609,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,   391,  -679,  -679,
+-     435,   612,   530,   685,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   256,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,   558,   625,  -679,   551,   -14,   497,   555,  -679,   613,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     -43,  -679,   513,  -679,   277,   349,   459,  -679,   424,   612,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,   356,  -679,   567,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,   236,   201,   191,   191,
+-     191,  -679,  -679,  -679,   191,   191,   326,   191,   734,  -679,
+-    -679,  -679,  -679,  -679,   191,   101,   191,    62,   191,   452,
+-     492,  -679,   494,   231,   470,   191,   191,   516,   583,   639,
+-     633,   477,   636,   584,   600,   601,   -36,   150,    -6,  -679,
+-    -679,  -679,    -6,  -679,    -6,  -679,  -679,  -679,   612,   422,
+-    -679,   191,  -679,  -679,  -679,   691,  -679,  -679,   191,  -679,
+-    -679,  -679,   191,   579,  -679,   604,   550,  -679,  -679,   615,
+-     277,   548,   617,  -679,   395,  -679,  -679,   610,  -679,  -679,
+-    -679,  -679,  -679,  -679,   540,  -679,  -679,    23,   500,   661,
+-    -679,   680,   620,    73,  -679,   630,   225,   240,   259,   679,
+-    -679,  -679,  -679,  -679,  -679,   628,    41,    59,   637,   645,
+-     600,   600,   646,    -4,  -679,   725,    87,  -679,  -679,   647,
+-     677,   649,   600,   600,   694,   650,   449,   466,   600,   654,
+-     166,  -679,   657,   475,   572,   639,   569,   663,   679,   735,
+-     770,   619,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     535,   661,   179,  -679,   774,   682,   683,   600,  -679,   497,
+-    -679,   540,  -679,  -679,    20,   689,    33,    51,   545,   556,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     690,  -679,  -679,   661,   530,  -679,   627,  -679,  -679,   600,
+-     600,   600,   600,   600,   600,   488,    35,  -679,   686,  -679,
+-     260,   695,   260,   696,   698,   779,   787,   401,  -679,   755,
+-      91,  -679,  -679,   600,    28,   401,   796,   799,   600,   260,
+-     600,   600,  -679,  -679,   800,   486,   705,   260,  -679,   600,
+-    -679,   475,   386,   475,  -679,    35,   802,    91,  -679,   661,
+-     530,   726,   260,    91,   727,   600,   824,   277,  -679,   743,
+-     748,   749,   629,   763,   765,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,   380,   380,  -679,   530,  -679,  -679,
+-     852,   854,   864,   865,   868,   869,  -679,  -679,   277,   788,
+-     810,   858,   475,   557,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,    91,    91,  -679,  -679,  -679,  -679,   600,  -679,  -679,
+-    -679,  -679,  -679,   286,  -679,  -679,   874,   897,   812,   899,
+-     600,    91,    91,   900,   600,   901,   902,    91,   600,   903,
+-     600,   600,   904,   600,  -679,  -679,   819,   855,   569,   290,
+-     874,   530,  -679,  -679,  -679,   874,  -679,   906,    91,   540,
+-     825,   859,   860,   861,   862,   931,   863,   866,  -679,  -679,
+-    -679,  -679,  -679,  -679,    91,    91,    91,    91,    91,    91,
+-     540,  -679,  -679,  -679,  -679,  -679,   789,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,   214,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,   751,  -679,  -679,
+-     808,  -679,   855,  -679,  -679,  -679,   952,   220,   956,  -679,
+-      91,   600,    91,   955,  -679,  -679,    91,   957,    91,    91,
+-    -679,   958,    91,   959,   960,    91,   961,  -679,   867,   600,
+-     475,  -679,  -679,  -679,  -679,  -679,    91,  -679,  -679,   862,
+-     862,   862,   931,  -679,   862,  -679,  -679,  -679,  -679,  -679,
+-     874,   874,   874,   874,   874,   874,  -679,   103,   103,   191,
+-     191,   191,   191,   191,   191,   191,   191,   191,   191,   962,
+-    -679,   870,   878,   871,   880,   214,  -679,   167,   764,   882,
+-    -679,   600,    91,   239,   255,   874,   969,   874,    91,  -679,
+-      91,  -679,  -679,    91,   874,    91,    91,   874,    91,  -679,
+-     970,   855,   874,   862,   862,   862,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,   885,   191,   886,   888,  -679,  -679,
+-    -679,  -679,  -679,  -679,   877,   881,   883,   884,   887,   889,
+-     890,   891,   892,   893,   789,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,   894,  -679,  -679,   975,   874,   895,   895,   895,
+-    -679,    91,  -679,   874,   874,   874,  -679,   874,   874,  -679,
+-     874,    91,   600,  -679,  -679,   896,  -679,  -679,    92,   898,
+-     905,   907,   908,   909,   910,   911,   912,   913,   914,  -679,
+-    -679,    91,  -679,    10,   977,   980,   981,   874,  -679,  -679,
+-    -679,  -679,  -679,  -679,   874,   983,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   874,
+-    -679,   963,    91,    91,    91,  -679,  -679,    91,  -679,  -679,
+-    -679,  -679,  -679,  -679,   874,  -679
++       0,     2,     0,     1,     1,     2,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       2,     2,     2,     2,     2,     2,     2,     2,     0,     2,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
++       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     0,     2,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     0,     2,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     2,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     0,     2,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     0,     2,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     0,     2,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     4,     7,     8,     4,     0,
++       3,     4,     2,     2,     3,     3,     5,     4,     6,     4,
++       3,     3,     3,     3,     2,     3,     4,     0,     2,     5,
++       5,     5,     1,     2,     5,     7,     0,     2,     1,     1,
++       1,     1,     2,     2,     0,     2,     1,     1,     1,     2,
++       2,     2,     2,     1,     1,     2,     2,     2,     2,     2,
++       2,     2,     1,     5,     4,     2,     3,     3,     3,     0,
++       4,     0,     5,     0,     5,     0,     5,     2,     1,     2,
++       1,     0,     1,     4,     4,     4,     4,     4,     4,     4,
++       4,     4,     2,     4,     5,     6,     3,     4,     3,     4,
++       3,     4,     1,     2,     1,     2,     1,     1,     2,     2,
++       2,     2,     0,     2,     2,     0,     2,     0,     2,    13,
++      11,    11,    10,     9,     0,     2,     2,     2,     0,     2,
++       4,     2,     0,     2,     0,     1,     1,     1,     1,     1,
++       1,     0,     3,     2,     2,     2,     2,     3,     3,     2,
++       2,     2,     2,     2,     4,     2,     2,     2,     2,     2,
++       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
++       3,     1,     1,     2,     2,     2,     1,     2,     2,     2,
++       2,     2,     0,     2,     2,     0,     2,     0,     2,     1,
++       1,     1,     1,     3,     3,     2,     2,     2,     0,     2,
++       2,     1,     3,     4,     4,     4,     4,     4,     4,     4,
++       4,     4,     4,     7,     6,     6,     9,     0,     2,     0,
++       3,     0,     3,     0,     3,     0,     2,     7,     7,     0,
++       3,     1,     1,     3,     6,     7,     1,     2,     2,     1,
++       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
++       1,     1,     1,     0,     4,     1,     2,     1,     1,     1,
++       1,     3,     2,     2,     2,     2,     2,     2,     2,     1,
++       2,     1,     8,     6,     6,     1,     2,     1,     1,     1,
++       1,     6,     1,     2,     1,     1,     1,     1,     4,     4,
++       4,     1,     1,     1,     4,     4,     4,     4,     4,     4,
++       3,     3,     1,     1,     1,     1,     1,     9,     6,     0,
++       1,     1,     1,     1,     1,     0,     1,     1,     1,     1,
++       1,     2,     3,     1,     1,     1,     1,     1,     1,     0,
++       2,     3,     0,     2,     3,     0,     6,     6,     6,     8,
++      10,     7,     0,     1,     1,     8,     9,     9,     9,     6,
++       0,     1,     1,     1,     1,     8,     7,     7,     4,     4,
++       0,     1,     9,     6,     8,     8,     8,     8,     8,     8,
++       2,     0,     2,     3
+ };
+ 
+-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+-     Performed when YYTABLE does not specify something else to do.  Zero
+-     means the default is an error.  */
++/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
++   Performed when YYTABLE doesn't specify something else to do.  Zero
++   means the default is an error.  */
+ static const yytype_uint16 yydefact[] =
+ {
+        2,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+@@ -1420,7 +1637,7 @@
+      284,     0,     0,   179,   181,   180,   416,     0,   290,   285,
+      286,   287,   288,   289,   282,   175,   178,     0,     0,   413,
+      390,   532,     0,   371,   244,     0,     0,     0,     0,   278,
+-     474,   470,   471,   472,   473,     0,     0,     0,     0,     0,
++     474,   473,   472,   471,   470,     0,     0,     0,     0,     0,
+      489,   489,     0,     0,   436,     0,     0,   503,   504,     0,
+        0,     0,   489,   489,     0,     0,     0,     0,   489,     0,
+        0,   275,     0,   373,     0,   367,   379,     0,   278,     0,
+@@ -1442,7 +1659,7 @@
+      449,     0,     0,   476,   477,   478,   479,   489,   491,   484,
+      485,   480,   483,     0,   486,   487,   495,     0,     0,     0,
+      489,     0,     0,     0,   489,     0,     0,     0,   489,     0,
+-     489,   489,     0,   489,   381,   382,     0,   375,   379,     0,
++     489,   489,     0,   489,   382,   381,     0,   375,   379,     0,
+      495,   531,   384,   459,   458,   495,   450,     0,     0,   282,
+      216,   217,   218,     0,     0,   231,     0,     0,   212,   195,
+      196,   197,   198,   157,     0,     0,     0,     0,     0,     0,
+@@ -1474,30 +1691,7 @@
+      488,   496,   497,   498,   495,   269
+ };
+ 
+-  /* YYPGOTO[NTERM-NUM].  */
+-static const yytype_int16 yypgoto[] =
+-{
+-    -679,  -679,  -679,   986,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,   926,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,   915,   717,  -679,  -679,  -679,  -679,   919,
+-    -679,  -679,  -679,   498,  -679,  -679,  -679,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -195,
+-    -491,   241,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
+-     438,   603,   681,   -65,  -201,  -202,  -351,   608,   518,  -679,
+-     945,  -679,  -679,  -679,  -679,  -679,   549,  -472,  -387,   453,
+-    -679,   406,  -679,   227,  -679,  -679,   325,  -679,  -679,  -679,
+-    -679,  -679,  -679,  -679,  -679,   169,   423,  -679,  -679,  -679,
+-     560,  -165,   598,  -108,  -678,   776,   368,  -679,   785,  1026,
+-    -679,  -151,  -263,   -76,   740,  -256,   790,    32,   823,   827,
+-    -679,   813,  -679,  -679,  -679,   693,  -679,  -679,   644,  -679,
+-    -679,  -679,  -203,  -679,  -679,  -177,  -679,  -380,    18,  -319,
+-     487,  -294,  -508,  -332,  -355,  -262,  -560,  -679,   687,  -679,
+-    -679,  -679,    43,   299,  -679,   916,  -679,    13,  -679,   208,
+-    -679,  -210
+-};
+-
+-  /* YYDEFGOTO[NTERM-NUM].  */
++/* YYDEFGOTO[NTERM-NUM].  */
+ static const yytype_int16 yydefgoto[] =
+ {
+       -1,    10,    11,    12,    60,   125,    61,   147,    62,   166,
+@@ -1520,9 +1714,135 @@
+      465,   315
+ };
+ 
+-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+-     positive, shift that token.  If negative, reduce the rule whose
+-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
++/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
++   STATE-NUM.  */
++#define YYPACT_NINF -679
++static const yytype_int16 yypact[] =
++{
++     514,   250,   -51,   -35,   -27,   -11,     3,    42,    52,    65,
++     145,   514,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,   284,  -679,  -679,  -679,    16,    74,   107,   221,  -679,
++     176,   198,   226,   279,   292,   180,   137,   196,  -679,   -21,
++      -3,   372,   377,   386,   418,  -679,   397,   415,  -679,  -679,
++     451,    96,   700,   716,     7,   286,   286,   343,   286,   -52,
++     273,   289,   390,   382,   284,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,    37,  -679,  -679,  -679,  -679,  -679,
++     436,   716,   585,   482,  -679,   456,   -18,     0,  -679,   405,
++    -679,  -679,   260,  -679,  -679,   424,   425,   407,   475,   196,
++     349,   331,   339,   612,   530,   485,   491,   367,   379,   517,
++     519,   523,   524,   286,   237,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,    15,   443,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,    27,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,    26,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,    47,
++     559,   452,  -679,  -679,   230,  -679,   230,  -679,   230,   609,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,   382,  -679,  -679,
++     435,   612,   530,   685,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   256,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,   557,   626,  -679,   551,   -14,   497,   555,  -679,   613,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     -43,  -679,   513,  -679,   277,   349,   459,  -679,   424,   612,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,   356,  -679,   567,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,   236,   201,   191,   191,
++     191,  -679,  -679,  -679,   191,   191,   326,   191,   734,  -679,
++    -679,  -679,  -679,  -679,   191,   101,   191,    62,   191,   452,
++     492,  -679,   494,   231,   470,   191,   191,   516,   583,   639,
++     633,   477,   636,   584,   600,   601,   -36,   150,    -6,  -679,
++    -679,  -679,    -6,  -679,    -6,  -679,  -679,  -679,   612,   422,
++    -679,   191,  -679,  -679,  -679,   691,  -679,  -679,   191,  -679,
++    -679,  -679,   191,   579,  -679,   604,   550,  -679,  -679,   615,
++     277,   548,   617,  -679,   395,  -679,  -679,   610,  -679,  -679,
++    -679,  -679,  -679,  -679,   540,  -679,  -679,    23,   500,   661,
++    -679,   680,   620,    73,  -679,   630,   225,   240,   259,   679,
++    -679,  -679,  -679,  -679,  -679,   628,    41,    59,   637,   645,
++     600,   600,   646,    -4,  -679,   725,    87,  -679,  -679,   647,
++     677,   649,   600,   600,   694,   650,   449,   466,   600,   654,
++     166,  -679,   657,   475,   572,   639,   569,   663,   679,   735,
++     770,   619,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     535,   661,   179,  -679,   774,   682,   683,   600,  -679,   497,
++    -679,   540,  -679,  -679,    20,   689,    33,    51,   545,   556,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     690,  -679,  -679,   661,   530,  -679,   625,  -679,  -679,   600,
++     600,   600,   600,   600,   600,   488,    35,  -679,   686,  -679,
++     260,   695,   260,   696,   698,   781,   787,   401,  -679,   755,
++      91,  -679,  -679,   600,    28,   401,   796,   799,   600,   260,
++     600,   600,  -679,  -679,   800,   486,   705,   260,  -679,   600,
++    -679,   475,   381,   475,  -679,    35,   802,    91,  -679,   661,
++     530,   726,   260,    91,   727,   600,   824,   277,  -679,   743,
++     748,   749,   629,   763,   765,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,   380,   380,  -679,   530,  -679,  -679,
++     852,   854,   864,   865,   868,   869,  -679,  -679,   277,   788,
++     810,   858,   475,   564,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,    91,    91,  -679,  -679,  -679,  -679,   600,  -679,  -679,
++    -679,  -679,  -679,   286,  -679,  -679,   874,   897,   812,   899,
++     600,    91,    91,   900,   600,   901,   902,    91,   600,   903,
++     600,   600,   904,   600,  -679,  -679,   819,   855,   569,   290,
++     874,   530,  -679,  -679,  -679,   874,  -679,   906,    91,   540,
++     825,   859,   860,   861,   862,   931,   863,   866,  -679,  -679,
++    -679,  -679,  -679,  -679,    91,    91,    91,    91,    91,    91,
++     540,  -679,  -679,  -679,  -679,  -679,   789,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,   214,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,   751,  -679,  -679,
++     808,  -679,   855,  -679,  -679,  -679,   952,   220,   956,  -679,
++      91,   600,    91,   955,  -679,  -679,    91,   957,    91,    91,
++    -679,   958,    91,   959,   960,    91,   961,  -679,   867,   600,
++     475,  -679,  -679,  -679,  -679,  -679,    91,  -679,  -679,   862,
++     862,   862,   931,  -679,   862,  -679,  -679,  -679,  -679,  -679,
++     874,   874,   874,   874,   874,   874,  -679,   103,   103,   191,
++     191,   191,   191,   191,   191,   191,   191,   191,   191,   962,
++    -679,   870,   878,   871,   880,   214,  -679,   167,   764,   882,
++    -679,   600,    91,   239,   255,   874,   969,   874,    91,  -679,
++      91,  -679,  -679,    91,   874,    91,    91,   874,    91,  -679,
++     970,   855,   874,   862,   862,   862,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,   885,   191,   886,   888,  -679,  -679,
++    -679,  -679,  -679,  -679,   877,   881,   883,   884,   887,   889,
++     890,   891,   892,   893,   789,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,   894,  -679,  -679,   975,   874,   895,   895,   895,
++    -679,    91,  -679,   874,   874,   874,  -679,   874,   874,  -679,
++     874,    91,   600,  -679,  -679,   896,  -679,  -679,    92,   898,
++     905,   907,   908,   909,   910,   911,   912,   913,   914,  -679,
++    -679,    91,  -679,    10,   977,   980,   981,   874,  -679,  -679,
++    -679,  -679,  -679,  -679,   874,   983,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,   874,
++    -679,   963,    91,    91,    91,  -679,  -679,    91,  -679,  -679,
++    -679,  -679,  -679,  -679,   874,  -679
++};
++
++/* YYPGOTO[NTERM-NUM].  */
++static const yytype_int16 yypgoto[] =
++{
++    -679,  -679,  -679,   986,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,   926,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,   915,   717,  -679,  -679,  -679,  -679,   919,
++    -679,  -679,  -679,   498,  -679,  -679,  -679,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -195,
++    -491,   241,  -679,  -679,  -679,  -679,  -679,  -679,  -679,  -679,
++     438,   603,   681,   -65,  -201,  -202,  -351,   608,   518,  -679,
++     945,  -679,  -679,  -679,  -679,  -679,   549,  -472,  -387,   453,
++    -679,   406,  -679,   227,  -679,  -679,   325,  -679,  -679,  -679,
++    -679,  -679,  -679,  -679,  -679,   169,   423,  -679,  -679,  -679,
++     560,  -165,   598,  -108,  -678,   776,   368,  -679,   785,  1026,
++    -679,  -151,  -263,   -76,   740,  -256,   790,    32,   823,   827,
++    -679,   813,  -679,  -679,  -679,   693,  -679,  -679,   644,  -679,
++    -679,  -679,  -203,  -679,  -679,  -177,  -679,  -380,    18,  -319,
++     487,  -294,  -508,  -332,  -355,  -262,  -560,  -679,   687,  -679,
++    -679,  -679,    43,   299,  -679,   916,  -679,    13,  -679,   208,
++    -679,  -210
++};
++
++/* 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 YYTABLE_NINF, syntax error.  */
++#define YYTABLE_NINF -226
+ static const yytype_int16 yytable[] =
+ {
+      284,   206,   369,   208,   369,   372,   369,   374,   222,   470,
+@@ -1567,13 +1887,13 @@
+      246,   367,   105,   929,   820,   336,   361,    46,   108,   431,
+      432,   433,   434,    47,   676,   570,   290,   449,   677,   678,
+      494,   495,   291,   118,   393,   292,   201,    71,   119,   337,
+-     496,   497,   498,   212,   213,   214,    72,   121,    73,   944,
+-     271,   272,   273,   274,   120,   201,   207,   597,   122,   223,
++     496,   497,   498,   212,   213,   214,    72,   120,    73,   944,
++     271,   272,   273,   274,   121,   201,   207,   597,   122,   223,
+      408,   409,   410,   411,   412,   413,   865,   867,   868,   869,
+      499,   754,   476,   653,   124,   657,   123,    48,   318,   319,
+      844,   845,   846,   847,   848,   849,   850,   851,   852,   853,
+      320,   321,   290,   633,   634,    65,    66,   211,   291,   293,
+-     215,   292,   294,   131,   151,   170,   188,    44,    67,   216,
++     216,   292,   294,   131,   151,   170,   188,    44,    67,   215,
+       65,    66,   261,   661,    68,   262,    69,    70,   126,   148,
+      167,   185,    44,    67,   722,   270,   295,   283,   296,    68,
+      297,    69,    70,   298,   238,   254,   885,   282,   276,   277,
+@@ -1583,13 +1903,13 @@
+      290,   289,   308,   309,   310,   311,   291,   552,   553,   292,
+      623,   624,   625,   626,   823,   824,   825,   314,   727,   419,
+      590,   591,   295,   616,   296,   618,   297,   316,    72,   298,
+-      73,   592,   593,   317,    71,   290,   443,   648,   249,   609,
+-     610,   291,   644,    72,   292,    73,   654,   655,   299,   300,
++      73,   592,   593,   317,    71,   290,   443,   648,   249,   654,
++     655,   291,   644,    72,   292,    73,   609,   610,   299,   300,
+      651,   942,   943,   301,   302,   303,   905,   906,   304,   322,
+      305,   323,   306,   307,   324,   664,   325,   363,   308,   309,
+      310,   311,   351,   293,    65,    66,   294,     2,     3,     4,
+        5,     6,     7,     8,     9,   481,    44,    67,   940,   940,
+-     940,   364,   821,    68,   376,    69,    70,   378,   395,   394,
++     940,   364,   821,    68,   376,    69,    70,   378,   394,   395,
+      295,   396,   296,   399,   297,   401,   402,   298,   293,   407,
+      416,   294,   290,   127,   149,   168,   186,   421,   291,   458,
+      456,   292,   457,   452,   461,   462,   299,   300,   464,   466,
+@@ -1603,7 +1923,7 @@
+      549,    44,    67,   548,   555,    65,    66,   558,    68,   560,
+       69,    70,   295,   564,   296,   562,   297,    44,    67,   298,
+      566,   227,   237,   253,    68,   567,    69,    70,   568,   573,
+-     585,   596,   574,   575,   621,   200,   599,   615,   299,   300,
++     585,   596,   574,   575,   599,   200,   621,   615,   299,   300,
+      628,   443,   622,   301,   302,   303,   617,   619,   304,   620,
+      305,   641,   306,   307,   642,   647,   650,   659,   308,   309,
+      310,   311,   329,   330,   331,   332,   333,   381,   329,   330,
+@@ -1634,6 +1954,12 @@
+        0,     0,   352
+ };
+ 
++#define yypact_value_is_default(yystate) \
++  ((yystate) == (-679))
++
++#define yytable_value_is_error(yytable_value) \
++  YYID (0)
++
+ static const yytype_int16 yycheck[] =
+ {
+      108,    66,   204,    68,   206,   206,   208,   208,    84,   364,
+@@ -1678,13 +2004,13 @@
+       91,   152,   212,   901,   749,   158,   195,   147,   202,   208,
+      209,   210,   211,   153,    24,   481,    50,   176,    28,    29,
+       15,    16,    56,    41,   158,    59,   179,   133,    41,   182,
+-      25,    26,    27,   134,   135,   136,   142,    16,   144,   937,
+-     170,   171,   172,   173,    41,   179,    93,   513,    41,     3,
++      25,    26,    27,   134,   135,   136,   142,    41,   144,   937,
++     170,   171,   172,   173,    16,   179,    93,   513,    41,     3,
+      163,   164,   165,   166,   167,   168,   801,   192,   193,   194,
+       55,   661,   803,   561,     3,   563,    41,   207,    91,    92,
+      779,   780,   781,   782,   783,   784,   785,   786,   787,   788,
+       91,    92,    50,   183,   184,    39,    40,   204,    56,   123,
+-      99,    59,   126,    60,    61,    62,    63,    51,    52,    98,
++      98,    59,   126,    60,    61,    62,    63,    51,    52,    99,
+       39,    40,    10,   569,    58,    39,    60,    61,    60,    61,
+       62,    63,    51,    52,   612,   100,   150,   100,   152,    58,
+      154,    60,    61,   157,    91,    92,   835,    92,    94,    95,
+@@ -1694,13 +2020,13 @@
+       50,   212,   196,   197,   198,   199,    56,    91,    92,    59,
+      159,   160,   161,   162,   759,   760,   761,    37,   633,   213,
+       25,    26,   150,   530,   152,   532,   154,    92,   142,   157,
+-     144,    25,    26,    92,   133,    50,   100,   101,     3,    32,
+-      33,    56,   549,   142,    59,   144,   210,   211,   176,   177,
++     144,    25,    26,    92,   133,    50,   100,   101,     3,   208,
++     209,    56,   549,   142,    59,   144,    32,    33,   176,   177,
+      557,   933,   934,   181,   182,   183,   868,   869,   186,    92,
+      188,    92,   190,   191,    91,   572,    92,    58,   196,   197,
+      198,   199,   179,   123,    39,    40,   126,   113,   114,   115,
+      116,   117,   118,   119,   120,   213,    51,    52,   932,   933,
+-     934,   189,   750,    58,    35,    60,    61,   212,    23,    91,
++     934,   189,   750,    58,    35,    60,    61,   212,    91,    23,
+      150,   100,   152,   156,   154,   100,    43,   157,   123,   146,
+      201,   126,    50,    60,    61,    62,    63,   100,    56,   199,
+      178,    59,   178,   157,    91,    36,   176,   177,    45,   202,
+@@ -1714,7 +2040,7 @@
+      100,    51,    52,    59,   100,    39,    40,   100,    58,   187,
+       60,    61,   150,   100,   152,   196,   154,    51,    52,   157,
+       35,    90,    91,    92,    58,     5,    60,    61,   159,     5,
+-      91,    91,   100,   100,     5,   100,   159,   101,   176,   177,
++      91,    91,   100,   100,   159,   100,     5,   101,   176,   177,
+       35,   100,     5,   181,   182,   183,   101,   101,   186,   101,
+      188,     5,   190,   191,     5,     5,   101,     5,   196,   197,
+      198,   199,   127,   128,   129,   130,   131,   132,   127,   128,
+@@ -1745,8 +2071,8 @@
+       -1,    -1,   146
+ };
+ 
+-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+-     symbol of state STATE-NUM.  */
++/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
++   symbol of state STATE-NUM.  */
+ static const yytype_uint16 yystos[] =
+ {
+        0,     8,   113,   114,   115,   116,   117,   118,   119,   120,
+@@ -1814,7 +2140,7 @@
+      101,     5,     5,   159,   160,   161,   162,   368,    35,    39,
+       40,    51,    58,   183,   184,   369,   370,   372,    33,   372,
+      368,     5,     5,   372,   380,   372,   372,     5,   101,   372,
+-     101,   380,   372,   331,   210,   211,   335,   331,   307,     5,
++     101,   380,   372,   331,   208,   209,   335,   331,   307,     5,
+      370,   341,   389,   101,   380,   370,   101,   372,     5,   306,
+       92,    92,    92,   214,   273,    91,    24,    28,    29,   262,
+      269,   270,   271,   389,     5,     5,     5,     5,     5,     5,
+@@ -1846,159 +2172,94 @@
+      369,   371,   371,   371,   370,   374
+ };
+ 
+-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+-static const yytype_uint16 yyr1[] =
+-{
+-       0,   218,   219,   219,   220,   220,   221,   221,   221,   221,
+-     221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
+-     221,   221,   221,   221,   221,   221,   221,   221,   222,   222,
+-     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
+-     223,   223,   223,   223,   223,   223,   223,   223,   223,   224,
+-     224,   225,   225,   225,   225,   225,   225,   225,   225,   225,
+-     225,   225,   225,   225,   225,   225,   225,   225,   226,   226,
+-     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
+-     227,   227,   227,   227,   227,   227,   228,   228,   229,   229,
+-     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+-     229,   229,   230,   230,   231,   231,   231,   231,   231,   231,
+-     231,   231,   231,   231,   231,   231,   232,   232,   233,   233,
+-     233,   233,   233,   233,   233,   233,   233,   234,   234,   235,
+-     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
+-     235,   235,   235,   236,   236,   237,   237,   237,   237,   237,
+-     237,   237,   237,   237,   237,   238,   238,   238,   239,   240,
+-     240,   241,   242,   243,   244,   244,   244,   245,   245,   245,
+-     246,   247,   248,   249,   250,   250,   251,   252,   252,   253,
+-     254,   255,   256,   256,   257,   257,   258,   258,   259,   259,
+-     259,   259,   260,   260,   261,   261,   262,   262,   262,   263,
+-     263,   264,   264,   265,   265,   266,   266,   267,   267,   268,
+-     269,   270,   271,   272,   272,   272,   272,   272,   272,   273,
+-     272,   274,   272,   275,   272,   276,   272,   272,   277,   277,
+-     278,   279,   279,   280,   280,   280,   280,   281,   282,   282,
+-     283,   284,   285,   286,   287,   287,   288,   288,   289,   289,
+-     290,   290,   291,   291,   292,   292,   293,   293,   294,   294,
+-     294,   294,   295,   295,   295,   296,   296,   297,   297,   298,
+-     298,   299,   300,   300,   301,   301,   302,   303,   304,   304,
+-     304,   304,   305,   305,   306,   306,   306,   306,   306,   306,
+-     306,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+-     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+-     307,   307,   307,   307,   307,   307,   307,   307,   307,   307,
+-     307,   307,   308,   308,   309,   309,   310,   310,   311,   311,
+-     311,   311,   312,   312,   312,   313,   313,   314,   314,   315,
+-     315,   315,   315,   315,   316,   317,   318,   319,   320,   320,
+-     321,   322,   322,   323,   323,   323,   323,   323,   323,   323,
+-     323,   323,   323,   324,   325,   326,   327,   328,   328,   329,
+-     329,   330,   330,   331,   331,   332,   332,   333,   333,   334,
+-     334,   335,   335,   336,   336,   336,   336,   337,   338,   339,
+-     339,   340,   340,   340,   340,   340,   340,   340,   340,   340,
+-     340,   340,   340,   340,   340,   340,   340,   340,   340,   340,
+-     340,   340,   340,   341,   341,   342,   342,   343,   343,   343,
+-     343,   344,   344,   344,   345,   345,   345,   346,   347,   348,
+-     348,   349,   350,   350,   351,   352,   352,   353,   353,   353,
+-     353,   354,   355,   355,   356,   356,   356,   356,   357,   357,
+-     358,   359,   359,   359,   360,   360,   360,   360,   361,   361,
+-     362,   363,   364,   364,   364,   365,   365,   366,   366,   367,
+-     367,   367,   367,   367,   367,   368,   368,   368,   368,   368,
+-     369,   369,   369,   369,   369,   369,   369,   370,   371,   372,
+-     372,   372,   373,   373,   373,   374,   374,   374,   374,   375,
+-     375,   375,   376,   376,   376,   377,   377,   378,   378,   379,
+-     380,   380,   380,   380,   380,   381,   382,   382,   382,   382,
+-     383,   383,   384,   384,   385,   385,   386,   386,   387,   387,
+-     388,   389,   389,   389
+-};
++#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.  However,
++   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
++   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
++   discussed.  */
++
++#define YYFAIL		goto yyerrlab
++#if defined YYFAIL
++  /* This is here to suppress warnings from the GCC cpp's
++     -Wunused-macros.  Normally we don't worry about that warning, but
++     some users do, and we want to make it easy for users to remove
++     YYFAIL uses, which will produce warnings from Bison 2.5.  */
++#endif
+ 
+-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+-static const yytype_uint8 yyr2[] =
+-{
+-       0,     2,     0,     1,     1,     2,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       2,     2,     2,     2,     2,     2,     2,     2,     0,     2,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     1,     1,     1,     0,     2,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     1,     0,     2,     1,     1,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     2,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     1,     0,     2,     1,     1,
+-       1,     1,     1,     1,     1,     1,     1,     0,     2,     1,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     0,     2,     1,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     4,     7,     8,     4,     0,
+-       3,     4,     2,     2,     3,     3,     5,     4,     6,     4,
+-       3,     3,     3,     3,     2,     3,     4,     0,     2,     5,
+-       5,     5,     1,     2,     5,     7,     0,     2,     1,     1,
+-       1,     1,     2,     2,     0,     2,     1,     1,     1,     2,
+-       2,     2,     2,     1,     1,     2,     2,     2,     2,     2,
+-       2,     2,     1,     5,     4,     2,     3,     3,     3,     0,
+-       4,     0,     5,     0,     5,     0,     5,     2,     1,     2,
+-       1,     0,     1,     4,     4,     4,     4,     4,     4,     4,
+-       4,     4,     2,     4,     5,     6,     3,     4,     3,     4,
+-       3,     4,     1,     2,     1,     2,     1,     1,     2,     2,
+-       2,     2,     0,     2,     2,     0,     2,     0,     2,    13,
+-      11,    11,    10,     9,     0,     2,     2,     2,     0,     2,
+-       4,     2,     0,     2,     0,     1,     1,     1,     1,     1,
+-       1,     0,     3,     2,     2,     2,     2,     3,     3,     2,
+-       2,     2,     2,     2,     4,     2,     2,     2,     2,     2,
+-       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+-       3,     1,     1,     2,     2,     2,     1,     2,     2,     2,
+-       2,     2,     0,     2,     2,     0,     2,     0,     2,     1,
+-       1,     1,     1,     3,     3,     2,     2,     2,     0,     2,
+-       2,     1,     3,     4,     4,     4,     4,     4,     4,     4,
+-       4,     4,     4,     7,     6,     6,     9,     0,     2,     0,
+-       3,     0,     3,     0,     3,     0,     2,     7,     7,     0,
+-       3,     1,     1,     3,     6,     7,     1,     2,     2,     1,
+-       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+-       1,     1,     1,     0,     4,     1,     2,     1,     1,     1,
+-       1,     3,     2,     2,     2,     2,     2,     2,     2,     1,
+-       2,     1,     8,     6,     6,     1,     2,     1,     1,     1,
+-       1,     6,     1,     2,     1,     1,     1,     1,     4,     4,
+-       4,     1,     1,     1,     4,     4,     4,     4,     4,     4,
+-       3,     3,     1,     1,     1,     1,     1,     9,     6,     0,
+-       1,     1,     1,     1,     1,     0,     1,     1,     1,     1,
+-       1,     2,     3,     1,     1,     1,     1,     1,     1,     0,
+-       2,     3,     0,     2,     3,     0,     6,     6,     6,     8,
+-      10,     7,     0,     1,     1,     8,     9,     9,     9,     6,
+-       0,     1,     1,     1,     1,     8,     7,     7,     4,     4,
+-       0,     1,     9,     6,     8,     8,     8,     8,     8,     8,
+-       2,     0,     2,     3
+-};
++#define YYRECOVERING()  (!!yyerrstatus)
+ 
++#define YYBACKUP(Token, Value)					\
++do								\
++  if (yychar == YYEMPTY && yylen == 1)				\
++    {								\
++      yychar = (Token);						\
++      yylval = (Value);						\
++      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
+ 
+-#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
+ 
++/* This macro is provided for backward compatibility. */
+ 
+-#define YYRECOVERING()  (!!yyerrstatus)
++#ifndef YY_LOCATION_PRINT
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++#endif
+ 
+-#define YYBACKUP(Token, Value)                                  \
+-do                                                              \
+-  if (yychar == YYEMPTY)                                        \
+-    {                                                           \
+-      yychar = (Token);                                         \
+-      yylval = (Value);                                         \
+-      YYPOPSTACK (yylen);                                       \
+-      yystate = *yyssp;                                         \
+-      goto yybackup;                                            \
+-    }                                                           \
+-  else                                                          \
+-    {                                                           \
+-      yyerror (YY_("syntax error: cannot back up")); \
+-      YYERROR;                                                  \
+-    }                                                           \
+-while (0)
+-
+-/* Error token number */
+-#define YYTERROR        1
+-#define YYERRCODE       256
+ 
++/* YYLEX -- calling `yylex' with the right arguments.  */
+ 
++#ifdef YYLEX_PARAM
++# define YYLEX yylex (YYLEX_PARAM)
++#else
++# define YYLEX yylex ()
++#endif
+ 
+ /* Enable debugging if requested.  */
+ #if YYDEBUG
+@@ -2008,46 +2269,54 @@
+ #  define YYFPRINTF fprintf
+ # endif
+ 
+-# define YYDPRINTF(Args)                        \
+-do {                                            \
+-  if (yydebug)                                  \
+-    YYFPRINTF Args;                             \
+-} while (0)
+-
+-/* This macro is provided for backward compatibility. */
+-#ifndef YY_LOCATION_PRINT
+-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+-#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))
+ 
+ 
+-# 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 (0)
+-
+-
+-/*----------------------------------------.
+-| Print this symbol's value on YYOUTPUT.  |
+-`----------------------------------------*/
++/*--------------------------------.
++| 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)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++    FILE *yyoutput;
++    int yytype;
++    YYSTYPE const * const yyvaluep;
++#endif
+ {
+-  FILE *yyo = yyoutput;
+-  YYUSE (yyo);
+   if (!yyvaluep)
+     return;
+ # ifdef YYPRINT
+   if (yytype < YYNTOKENS)
+     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++  YYUSE (yyoutput);
+ # endif
+-  YYUSE (yytype);
++  switch (yytype)
++    {
++      default:
++	break;
++    }
+ }
+ 
+ 
+@@ -2055,11 +2324,22 @@
+ | 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
+ {
+-  YYFPRINTF (yyoutput, "%s %s (",
+-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
++  if (yytype < YYNTOKENS)
++    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++  else
++    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+ 
+   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+   YYFPRINTF (yyoutput, ")");
+@@ -2070,8 +2350,16 @@
+ | TOP (included).                                                   |
+ `------------------------------------------------------------------*/
+ 
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
++#else
++static void
++yy_stack_print (yybottom, yytop)
++    yytype_int16 *yybottom;
++    yytype_int16 *yytop;
++#endif
+ {
+   YYFPRINTF (stderr, "Stack now");
+   for (; yybottom <= yytop; yybottom++)
+@@ -2082,42 +2370,49 @@
+   YYFPRINTF (stderr, "\n");
+ }
+ 
+-# define YY_STACK_PRINT(Bottom, Top)                            \
+-do {                                                            \
+-  if (yydebug)                                                  \
+-    yy_stack_print ((Bottom), (Top));                           \
+-} while (0)
++# 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 (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
++yy_reduce_print (yyvsp, yyrule)
++    YYSTYPE *yyvsp;
++    int yyrule;
++#endif
+ {
+-  unsigned long int yylno = yyrline[yyrule];
+   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);
++	     yyrule - 1, yylno);
+   /* The symbols being reduced.  */
+   for (yyi = 0; yyi < yynrhs; yyi++)
+     {
+       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+-      yy_symbol_print (stderr,
+-                       yystos[yyssp[yyi + 1 - yynrhs]],
+-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+-                                              );
++      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++		       &(yyvsp[(yyi + 1) - (yynrhs)])
++		       		       );
+       YYFPRINTF (stderr, "\n");
+     }
+ }
+ 
+-# define YY_REDUCE_PRINT(Rule)          \
+-do {                                    \
+-  if (yydebug)                          \
+-    yy_reduce_print (yyssp, yyvsp, Rule); \
+-} while (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.  */
+@@ -2131,7 +2426,7 @@
+ 
+ 
+ /* YYINITDEPTH -- initial size of the parser's stacks.  */
+-#ifndef YYINITDEPTH
++#ifndef	YYINITDEPTH
+ # define YYINITDEPTH 200
+ #endif
+ 
+@@ -2154,8 +2449,15 @@
+ #   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++)
+@@ -2171,8 +2473,16 @@
+ #  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;
+@@ -2202,27 +2512,27 @@
+       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;
+-          }
++	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: ;
+     }
+ 
+@@ -2245,11 +2555,12 @@
+ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                 yytype_int16 *yyssp, int yytoken)
+ {
+-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
++  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+   YYSIZE_T yysize = yysize0;
++  YYSIZE_T yysize1;
+   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+   /* Internationalized format string. */
+-  const char *yyformat = YY_NULLPTR;
++  const char *yyformat = 0;
+   /* Arguments of yyformat. */
+   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+   /* Number of reported tokens (one for the "unexpected", one per
+@@ -2257,6 +2568,10 @@
+   int yycount = 0;
+ 
+   /* There are many possibilities here to consider:
++     - Assume YYFAIL is not used.  It's too flawed to consider.  See
++       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
++       for details.  YYERROR is fine as it does not invoke this
++       function.
+      - If this state is a consistent state with a default action, then
+        the only way this function was invoked is if the default action
+        is an error action.  In that case, don't check for expected
+@@ -2305,13 +2620,11 @@
+                     break;
+                   }
+                 yyarg[yycount++] = yytname[yyx];
+-                {
+-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+-                  if (! (yysize <= yysize1
+-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+-                    return 2;
+-                  yysize = yysize1;
+-                }
++                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
++                if (! (yysize <= yysize1
++                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++                  return 2;
++                yysize = yysize1;
+               }
+         }
+     }
+@@ -2331,12 +2644,10 @@
+ # undef YYCASE_
+     }
+ 
+-  {
+-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+-      return 2;
+-    yysize = yysize1;
+-  }
++  yysize1 = yysize + yystrlen (yyformat);
++  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
++    return 2;
++  yysize = yysize1;
+ 
+   if (*yymsg_alloc < yysize)
+     {
+@@ -2373,20 +2684,48 @@
+ | 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;
++#endif
+ {
+   YYUSE (yyvaluep);
++
+   if (!yymsg)
+     yymsg = "Deleting";
+   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ 
+-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-  YYUSE (yytype);
+-  YY_IGNORE_MAYBE_UNINITIALIZED_END
++  switch (yytype)
++    {
++
++      default:
++	break;
++    }
+ }
+ 
+ 
++/* Prevent warnings from -Wmissing-prototypes.  */
++#ifdef YYPARSE_PARAM
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void *YYPARSE_PARAM);
++#else
++int yyparse ();
++#endif
++#else /* ! YYPARSE_PARAM */
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void);
++#else
++int yyparse ();
++#endif
++#endif /* ! YYPARSE_PARAM */
+ 
+ 
+ /* The lookahead symbol.  */
+@@ -2394,6 +2733,7 @@
+ 
+ /* The semantic value of the lookahead symbol.  */
+ YYSTYPE yylval;
++
+ /* Number of syntax errors so far.  */
+ int yynerrs;
+ 
+@@ -2402,18 +2742,37 @@
+ | 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;
++#endif
++#else /* ! YYPARSE_PARAM */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++     || defined __cplusplus || defined _MSC_VER)
+ int
+ yyparse (void)
++#else
++int
++yyparse ()
++
++#endif
++#endif
+ {
+     int yystate;
+     /* Number of tokens to shift before error messages enabled.  */
+     int yyerrstatus;
+ 
+     /* The stacks and their tools:
+-       'yyss': related to states.
+-       'yyvs': related to semantic values.
++       `yyss': related to states.
++       `yyvs': related to semantic values.
+ 
+-       Refer to the stacks through separate pointers, to allow yyoverflow
++       Refer to the stacks thru separate pointers, to allow yyoverflow
+        to reallocate them elsewhere.  */
+ 
+     /* The state stack.  */
+@@ -2431,7 +2790,7 @@
+   int yyn;
+   int yyresult;
+   /* Lookahead token as an internal (translated) token number.  */
+-  int yytoken = 0;
++  int yytoken;
+   /* The variables used to return semantic value and location from the
+      action routines.  */
+   YYSTYPE yyval;
+@@ -2449,8 +2808,9 @@
+      Keep to zero when no symbol should be popped.  */
+   int yylen = 0;
+ 
+-  yyssp = yyss = yyssa;
+-  yyvsp = yyvs = yyvsa;
++  yytoken = 0;
++  yyss = yyssa;
++  yyvs = yyvsa;
+   yystacksize = YYINITDEPTH;
+ 
+   YYDPRINTF ((stderr, "Starting parse\n"));
+@@ -2459,6 +2819,14 @@
+   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;
+ 
+ /*------------------------------------------------------------.
+@@ -2479,23 +2847,23 @@
+ 
+ #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);
++	/* 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;
++	yyss = yyss1;
++	yyvs = yyvs1;
+       }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+@@ -2503,22 +2871,22 @@
+ # else
+       /* Extend the stack our own way.  */
+       if (YYMAXDEPTH <= yystacksize)
+-        goto yyexhaustedlab;
++	goto yyexhaustedlab;
+       yystacksize *= 2;
+       if (YYMAXDEPTH < yystacksize)
+-        yystacksize = YYMAXDEPTH;
++	yystacksize = YYMAXDEPTH;
+ 
+       {
+-        yytype_int16 *yyss1 = yyss;
+-        union yyalloc *yyptr =
+-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+-        if (! yyptr)
+-          goto yyexhaustedlab;
+-        YYSTACK_RELOCATE (yyss_alloc, yyss);
+-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
++	yytype_int16 *yyss1 = yyss;
++	union yyalloc *yyptr =
++	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
++	if (! yyptr)
++	  goto yyexhaustedlab;
++	YYSTACK_RELOCATE (yyss_alloc, yyss);
++	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ #  undef YYSTACK_RELOCATE
+-        if (yyss1 != yyssa)
+-          YYSTACK_FREE (yyss1);
++	if (yyss1 != yyssa)
++	  YYSTACK_FREE (yyss1);
+       }
+ # endif
+ #endif /* no yyoverflow */
+@@ -2527,10 +2895,10 @@
+       yyvsp = yyvs + yysize - 1;
+ 
+       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+-                  (unsigned long int) yystacksize));
++		  (unsigned long int) yystacksize));
+ 
+       if (yyss + yystacksize - 1 <= yyssp)
+-        YYABORT;
++	YYABORT;
+     }
+ 
+   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+@@ -2559,7 +2927,7 @@
+   if (yychar == YYEMPTY)
+     {
+       YYDPRINTF ((stderr, "Reading a token: "));
+-      yychar = yylex ();
++      yychar = YYLEX;
+     }
+ 
+   if (yychar <= YYEOF)
+@@ -2599,9 +2967,7 @@
+   yychar = YYEMPTY;
+ 
+   yystate = yyn;
+-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+   *++yyvsp = yylval;
+-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+ 
+   goto yynewstate;
+ 
+@@ -2624,7 +2990,7 @@
+   yylen = yyr2[yyn];
+ 
+   /* If YYLEN is nonzero, implement the default value of the action:
+-     '$$ = $1'.
++     `$$ = $1'.
+ 
+      Otherwise, the following line sets YYVAL to garbage.
+      This behavior is undocumented and Bison
+@@ -2638,195 +3004,218 @@
+   switch (yyn)
+     {
+         case 155:
+-#line 497 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 497 "src/p.y"
+     {
+                    mailset.events = Event_All;
+-                    addmail((yyvsp[-2].string), &mailset, &Run.maillist);
++                    addmail((yyvsp[(2) - (4)].string), &mailset, &Run.maillist);
+                   }
+-#line 2646 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 156:
+-#line 501 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 501 "src/p.y"
+     {
+-                    addmail((yyvsp[-5].string), &mailset, &Run.maillist);
++                    addmail((yyvsp[(2) - (7)].string), &mailset, &Run.maillist);
+                   }
+-#line 2654 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 157:
+-#line 504 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 504 "src/p.y"
+     {
+                    mailset.events = ~mailset.events;
+-                   addmail((yyvsp[-6].string), &mailset, &Run.maillist);
++                   addmail((yyvsp[(2) - (8)].string), &mailset, &Run.maillist);
+                   }
+-#line 2663 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 158:
+-#line 510 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 510 "src/p.y"
+     {
+                     if (!Run.isdaemon || ihp.daemon) {
+                       ihp.daemon     = TRUE;
+                       Run.isdaemon   = TRUE;
+-                      Run.polltime   = (yyvsp[-1].number);
+-                      Run.startdelay = (yyvsp[0].number);
++                      Run.polltime   = (yyvsp[(3) - (4)].number);
++                      Run.startdelay = (yyvsp[(4) - (4)].number);
+                     }
+                   }
+-#line 2676 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 159:
+-#line 520 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 520 "src/p.y"
+     { (yyval.number) = START_DELAY; }
+-#line 2682 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 160:
+-#line 521 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.number) = (yyvsp[0].number); }
+-#line 2688 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 521 "src/p.y"
++    { (yyval.number) = (yyvsp[(3) - (3)].number); }
+     break;
+ 
+   case 161:
+-#line 524 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 524 "src/p.y"
+     {
+-                    Run.expectbuffer = (yyvsp[-1].number) * (yyvsp[0].number);
++                    Run.expectbuffer = (yyvsp[(3) - (4)].number) * (yyvsp[(4) - (4)].number);
+                     if (Run.expectbuffer > EXPECT_BUFFER_MAX)
+                         yyerror("Maximum value for expect buffer is 100 KB");
+                   }
+-#line 2698 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 162:
+-#line 531 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 531 "src/p.y"
+     {
+                     Run.init = TRUE;
+                   }
+-#line 2706 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 163:
+-#line 536 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 536 "src/p.y"
+     {
+                   #ifdef OPENSSL_FIPS
+                     Run.fipsEnabled = TRUE;
+                   #endif
+                   }
+-#line 2716 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 164:
+-#line 543 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 543 "src/p.y"
+     {
+                    if (!Run.logfile || ihp.logfile) {
+                      ihp.logfile = TRUE;
+-                     setlogfile((yyvsp[0].string));
++                     setlogfile((yyvsp[(3) - (3)].string));
+                      Run.use_syslog = FALSE;
+                      Run.dolog =TRUE;
+                    }
+                   }
+-#line 2729 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 165:
+-#line 551 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 551 "src/p.y"
+     {
+                     setsyslog(NULL);
+                   }
+-#line 2737 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 166:
+-#line 554 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 554 "src/p.y"
+     {
+-                    setsyslog((yyvsp[0].string)); FREE((yyvsp[0].string));
++                    setsyslog((yyvsp[(5) - (5)].string)); FREE((yyvsp[(5) - (5)].string));
+                   }
+-#line 2745 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 167:
+-#line 559 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 559 "src/p.y"
+     {
+-                    Run.eventlist_dir = (yyvsp[0].string);
++                    Run.eventlist_dir = (yyvsp[(4) - (4)].string);
+                   }
+-#line 2753 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 168:
+-#line 562 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 562 "src/p.y"
+     {
+-                    Run.eventlist_dir = (yyvsp[-2].string);
+-                    Run.eventlist_slots = (yyvsp[0].number);
++                    Run.eventlist_dir = (yyvsp[(4) - (6)].string);
++                    Run.eventlist_slots = (yyvsp[(6) - (6)].number);
+                   }
+-#line 2762 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 169:
+-#line 566 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 566 "src/p.y"
+     {
+                     Run.eventlist_dir = Str_dup(MYEVENTLISTBASE);
+-                    Run.eventlist_slots = (yyvsp[0].number);
++                    Run.eventlist_slots = (yyvsp[(4) - (4)].number);
+                   }
+-#line 2771 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 170:
+-#line 572 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 572 "src/p.y"
+     {
+-                    Run.idfile = (yyvsp[0].string);
++                    Run.idfile = (yyvsp[(3) - (3)].string);
+                   }
+-#line 2779 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 171:
+-#line 577 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 577 "src/p.y"
+     {
+-                    Run.statefile = (yyvsp[0].string);
++                    Run.statefile = (yyvsp[(3) - (3)].string);
+                   }
+-#line 2787 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 172:
+-#line 582 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 582 "src/p.y"
+     {
+                    if (!Run.pidfile || ihp.pidfile) {
+                      ihp.pidfile = TRUE;
+-                     setpidfile((yyvsp[0].string));
++                     setpidfile((yyvsp[(3) - (3)].string));
+                    }
+                  }
+-#line 2798 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 176:
+-#line 597 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 597 "src/p.y"
+     {
+-                    check_hostname(((yyvsp[-3].url))->hostname);
+-                    addmmonit((yyvsp[-3].url), (yyvsp[-2].number), (yyvsp[-1].number), (yyvsp[0].string));
++                    check_hostname(((yyvsp[(1) - (4)].url))->hostname);
++                    addmmonit((yyvsp[(1) - (4)].url), (yyvsp[(2) - (4)].number), (yyvsp[(3) - (4)].number), (yyvsp[(4) - (4)].string));
+                   }
+-#line 2807 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 178:
+-#line 604 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 604 "src/p.y"
+     {
+                     Run.dommonitcredentials = FALSE;
+                   }
+-#line 2815 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 179:
+-#line 609 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 609 "src/p.y"
+     {
+-                   if (((yyvsp[-1].number)) > SMTP_TIMEOUT)
+-                     Run.mailserver_timeout = (yyvsp[-1].number);
+-                   Run.mail_hostname = (yyvsp[0].string);
++                   if (((yyvsp[(4) - (5)].number)) > SMTP_TIMEOUT)
++                     Run.mailserver_timeout = (yyvsp[(4) - (5)].number);
++                   Run.mail_hostname = (yyvsp[(5) - (5)].string);
+                   }
+-#line 2825 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 180:
+-#line 616 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 616 "src/p.y"
+     {
+                    Run.MailFormat.from    = mailset.from    ?  mailset.from    : Str_dup(ALERT_FROM);
+                    Run.MailFormat.replyto = mailset.replyto ?  mailset.replyto : NULL;
+@@ -2834,73 +3223,78 @@
+                    Run.MailFormat.message = mailset.message ?  mailset.message : Str_dup(ALERT_MESSAGE);
+                    reset_mailset();
+                  }
+-#line 2837 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 181:
+-#line 625 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 625 "src/p.y"
+     {
+                    Run.dohttpd = TRUE;
+-                   Run.httpdport = (yyvsp[-1].number);
++                   Run.httpdport = (yyvsp[(4) - (5)].number);
+                  }
+-#line 2846 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 184:
+-#line 635 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 635 "src/p.y"
+     {
+                     /* Restore the current text overriden by lookahead */
+                     FREE(argyytext);
+-                    argyytext = Str_dup((yyvsp[-4].string));
++                    argyytext = Str_dup((yyvsp[(1) - (5)].string));
+ 
+-                    check_hostname((yyvsp[-4].string));
+-                    mailserverset.host = (yyvsp[-4].string);
+-                    mailserverset.username = (yyvsp[-3].string);
+-                    mailserverset.password = (yyvsp[-2].string);
+-                    mailserverset.ssl.version = (yyvsp[-1].number);
++                    check_hostname((yyvsp[(1) - (5)].string));
++                    mailserverset.host = (yyvsp[(1) - (5)].string);
++                    mailserverset.username = (yyvsp[(2) - (5)].string);
++                    mailserverset.password = (yyvsp[(3) - (5)].string);
++                    mailserverset.ssl.version = (yyvsp[(4) - (5)].number);
+                     if (mailserverset.ssl.version != SSL_VERSION_NONE) {
+                       mailserverset.ssl.use_ssl = TRUE;
+                       if (mailserverset.ssl.version == SSL_VERSION_SSLV2 || mailserverset.ssl.version == SSL_VERSION_SSLV3)
+                          mailserverset.port = PORT_SMTPS;
+-                      mailserverset.ssl.certmd5 = (yyvsp[0].string);
++                      mailserverset.ssl.certmd5 = (yyvsp[(5) - (5)].string);
+                     }
+                     addmailserver(&mailserverset);
+                   }
+-#line 2869 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 185:
+-#line 653 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 653 "src/p.y"
+     {
+                     /* Restore the current text overriden by lookahead */
+                     FREE(argyytext);
+-                    argyytext = Str_dup((yyvsp[-6].string));
++                    argyytext = Str_dup((yyvsp[(1) - (7)].string));
+ 
+-                    check_hostname((yyvsp[-6].string));
+-                    mailserverset.host = (yyvsp[-6].string);
+-                    mailserverset.port = (yyvsp[-4].number);
+-                    mailserverset.username = (yyvsp[-3].string);
+-                    mailserverset.password = (yyvsp[-2].string);
+-                    mailserverset.ssl.version = (yyvsp[-1].number);
++                    check_hostname((yyvsp[(1) - (7)].string));
++                    mailserverset.host = (yyvsp[(1) - (7)].string);
++                    mailserverset.port = (yyvsp[(3) - (7)].number);
++                    mailserverset.username = (yyvsp[(4) - (7)].string);
++                    mailserverset.password = (yyvsp[(5) - (7)].string);
++                    mailserverset.ssl.version = (yyvsp[(6) - (7)].number);
+                     if (mailserverset.ssl.version != SSL_VERSION_NONE) {
+                       mailserverset.ssl.use_ssl = TRUE;
+-                      mailserverset.ssl.certmd5 = (yyvsp[0].string);
++                      mailserverset.ssl.certmd5 = (yyvsp[(7) - (7)].string);
+                     }
+                     addmailserver(&mailserverset);
+                   }
+-#line 2891 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 192:
+-#line 682 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 682 "src/p.y"
+     {
+                     Run.httpdssl = FALSE;
+                   }
+-#line 2899 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 193:
+-#line 685 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 685 "src/p.y"
+     {
+                     Run.httpdssl = TRUE;
+                     if (! have_ssl())
+@@ -2910,2303 +3304,2585 @@
+                     else if (! file_checkStat(Run.httpsslpem, "SSL server PEM file", S_IRWXU))
+                       yyerror("SSL server PEM file permissions check failed");
+                   }
+-#line 2913 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 203:
+-#line 713 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 713 "src/p.y"
+     { Run.httpdsig = TRUE; }
+-#line 2919 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 204:
+-#line 714 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 714 "src/p.y"
+     { Run.httpdsig = FALSE; }
+-#line 2925 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 209:
+-#line 725 "src/p.y" /* yacc.c:1646  */
+-    { Run.bind_addr = (yyvsp[0].string); }
+-#line 2931 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 725 "src/p.y"
++    { Run.bind_addr = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 210:
+-#line 728 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 728 "src/p.y"
+     {
+-                    Run.httpsslpem = (yyvsp[0].string);
++                    Run.httpsslpem = (yyvsp[(2) - (2)].string);
+                   }
+-#line 2939 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 211:
+-#line 733 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 733 "src/p.y"
+     {
+-                    Run.httpsslclientpem = (yyvsp[0].string);
++                    Run.httpsslclientpem = (yyvsp[(2) - (2)].string);
+                     Run.clientssl = TRUE;
+                     if (!file_checkStat(Run.httpsslclientpem, "SSL client PEM file", S_IRWXU | S_IRGRP | S_IROTH))
+                       yyerror2("SSL client PEM file has too loose permissions");
+                   }
+-#line 2950 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 212:
+-#line 741 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 741 "src/p.y"
+     {
+                     Run.allowselfcert = TRUE;
+                   }
+-#line 2958 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 213:
+-#line 746 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 746 "src/p.y"
+     {
+-                    addcredentials((yyvsp[-3].string),(yyvsp[-1].string), DIGEST_CLEARTEXT, (yyvsp[0].number));
++                    addcredentials((yyvsp[(2) - (5)].string),(yyvsp[(4) - (5)].string), DIGEST_CLEARTEXT, (yyvsp[(5) - (5)].number));
+                   }
+-#line 2966 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 214:
+-#line 749 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 749 "src/p.y"
+     {
+ #ifdef HAVE_LIBPAM
+-                    addpamauth((yyvsp[-1].string), (yyvsp[0].number));
++                    addpamauth((yyvsp[(3) - (4)].string), (yyvsp[(4) - (4)].number));
+ #else
+                     yyerror("PAM is not supported");
+-                    FREE((yyvsp[-1].string));
++                    FREE((yyvsp[(3) - (4)].string));
+ #endif
+                   }
+-#line 2979 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 215:
+-#line 757 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 757 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_CLEARTEXT);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(2) - (2)].string), NULL, DIGEST_CLEARTEXT);
++                    FREE((yyvsp[(2) - (2)].string));
+                   }
+-#line 2988 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 216:
+-#line 761 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 761 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_CLEARTEXT);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(3) - (3)].string), NULL, DIGEST_CLEARTEXT);
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 2997 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 217:
+-#line 765 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 765 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_MD5);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(3) - (3)].string), NULL, DIGEST_MD5);
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 3006 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 218:
+-#line 769 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 769 "src/p.y"
+     {
+-                    addhtpasswdentry((yyvsp[0].string), NULL, DIGEST_CRYPT);
+-                    FREE((yyvsp[0].string));
++                    addhtpasswdentry((yyvsp[(3) - (3)].string), NULL, DIGEST_CRYPT);
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 3015 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 219:
+-#line 773 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 773 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(2) - (2)].string);
+                     digesttype = CLEARTEXT;
+                   }
+-#line 3024 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 220:
+-#line 777 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 777 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3032 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 221:
+-#line 780 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 780 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(3) - (3)].string);
+                     digesttype = DIGEST_CLEARTEXT;
+                   }
+-#line 3041 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 222:
+-#line 784 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 784 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3049 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 223:
+-#line 787 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 787 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(3) - (3)].string);
+                     digesttype = DIGEST_MD5;
+                   }
+-#line 3058 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 224:
+-#line 791 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 791 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3066 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 225:
+-#line 794 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 794 "src/p.y"
+     {
+-                    htpasswd_file = (yyvsp[0].string);
++                    htpasswd_file = (yyvsp[(3) - (3)].string);
+                     digesttype = DIGEST_CRYPT;
+                   }
+-#line 3075 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 226:
+-#line 798 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 798 "src/p.y"
+     {
+                     FREE(htpasswd_file);
+                   }
+-#line 3083 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 227:
+-#line 801 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 801 "src/p.y"
+     {
+-                    if (! (add_net_allow((yyvsp[0].string)) || add_host_allow((yyvsp[0].string)))) {
+-                      yyerror2("Erroneous network or host identifier %s", (yyvsp[0].string));
++                    if (! (add_net_allow((yyvsp[(2) - (2)].string)) || add_host_allow((yyvsp[(2) - (2)].string)))) {
++                      yyerror2("Erroneous network or host identifier %s", (yyvsp[(2) - (2)].string));
+                     }
+-                    FREE((yyvsp[0].string));
++                    FREE((yyvsp[(2) - (2)].string));
+                   }
+-#line 3094 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 230:
+-#line 813 "src/p.y" /* yacc.c:1646  */
+-    { addhtpasswdentry(htpasswd_file, (yyvsp[0].string), digesttype);
+-                           FREE((yyvsp[0].string)); }
+-#line 3101 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 813 "src/p.y"
++    { addhtpasswdentry(htpasswd_file, (yyvsp[(1) - (1)].string), digesttype);
++                           FREE((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 231:
+-#line 817 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 817 "src/p.y"
+     { (yyval.number) = FALSE; }
+-#line 3107 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 232:
+-#line 818 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 818 "src/p.y"
+     { (yyval.number) = TRUE; }
+-#line 3113 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 233:
+-#line 821 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 821 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                   }
+-#line 3121 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 234:
+-#line 824 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 824 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                   }
+-#line 3129 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 235:
+-#line 827 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 827 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                     matchset.ignore = FALSE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = Str_dup((yyvsp[0].string));
++                    matchset.match_string = Str_dup((yyvsp[(4) - (4)].string));
+                     addmatch(&matchset, ACTION_IGNORE, 0);
+                   }
+-#line 3141 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 236:
+-#line 834 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 834 "src/p.y"
+     {
+-                    createservice(TYPE_PROCESS, (yyvsp[-2].string), (yyvsp[0].string), check_process);
++                    createservice(TYPE_PROCESS, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_process);
+                     matchset.ignore = FALSE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = Str_dup((yyvsp[0].string));
++                    matchset.match_string = Str_dup((yyvsp[(4) - (4)].string));
+                     addmatch(&matchset, ACTION_IGNORE, 0);
+                   }
+-#line 3153 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 237:
+-#line 843 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 843 "src/p.y"
+     {
+-                    createservice(TYPE_FILE, (yyvsp[-2].string), (yyvsp[0].string), check_file);
++                    createservice(TYPE_FILE, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_file);
+                   }
+-#line 3161 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 238:
+-#line 848 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 848 "src/p.y"
+     {
+-                    createservice(TYPE_FILESYSTEM, (yyvsp[-2].string), (yyvsp[0].string), check_filesystem);
++                    createservice(TYPE_FILESYSTEM, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_filesystem);
+                   }
+-#line 3169 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 239:
+-#line 851 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 851 "src/p.y"
+     {
+-                    createservice(TYPE_FILESYSTEM, (yyvsp[-2].string), (yyvsp[0].string), check_filesystem);
++                    createservice(TYPE_FILESYSTEM, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_filesystem);
+                   }
+-#line 3177 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 240:
+-#line 856 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 856 "src/p.y"
+     {
+-                    createservice(TYPE_DIRECTORY, (yyvsp[-2].string), (yyvsp[0].string), check_directory);
++                    createservice(TYPE_DIRECTORY, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_directory);
+                   }
+-#line 3185 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 241:
+-#line 861 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 861 "src/p.y"
+     {
+-                    check_hostname((yyvsp[0].string));
+-                    createservice(TYPE_HOST, (yyvsp[-2].string), (yyvsp[0].string), check_remote_host);
++                    check_hostname((yyvsp[(4) - (4)].string));
++                    createservice(TYPE_HOST, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_remote_host);
+                   }
+-#line 3194 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 242:
+-#line 867 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 867 "src/p.y"
+     {
+                     char hostname[STRLEN];
+                     if (Util_getfqdnhostname(hostname, sizeof(hostname))) {
+                       LogError("Cannot get system hostname\n");
+                       cfg_errflag++;
+                     }
+-                    char *servicename = (yyvsp[0].string);
++                    char *servicename = (yyvsp[(2) - (2)].string);
+                     Util_replaceString(&servicename, "$HOST", hostname);
+                     Run.system = createservice(TYPE_SYSTEM, servicename, Str_dup(""), check_system); // The name given in the 'check system' statement overrides system hostname
+                   }
+-#line 3209 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 243:
+-#line 879 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 879 "src/p.y"
+     {
+-                    createservice(TYPE_FIFO, (yyvsp[-2].string), (yyvsp[0].string), check_fifo);
++                    createservice(TYPE_FIFO, (yyvsp[(2) - (4)].string), (yyvsp[(4) - (4)].string), check_fifo);
+                   }
+-#line 3217 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 244:
+-#line 884 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 884 "src/p.y"
+     {
+                         command_t c = command; // Current command
+                         check_exec(c->arg[0]);
+-                        createservice(TYPE_PROGRAM, (yyvsp[-3].string), Str_dup(c->arg[0]), check_program);
+-                        current->program->timeout = (yyvsp[0].number);
++                        createservice(TYPE_PROGRAM, (yyvsp[(2) - (5)].string), Str_dup(c->arg[0]), check_program);
++                        current->program->timeout = (yyvsp[(5) - (5)].number);
+                         current->program->output = StringBuffer_create(64);
+                  }
+-#line 3229 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 245:
+-#line 891 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 891 "src/p.y"
+     {
+                         command_t c = command; // Current command
+                         check_exec(c->arg[0]);
+-                        createservice(TYPE_PROGRAM, (yyvsp[-4].string), Str_dup(c->arg[0]), check_program);
+-                        current->program->timeout = (yyvsp[-1].number);
++                        createservice(TYPE_PROGRAM, (yyvsp[(2) - (6)].string), Str_dup(c->arg[0]), check_program);
++                        current->program->timeout = (yyvsp[(5) - (6)].number);
+                         current->program->output = StringBuffer_create(64);
+                  }
+-#line 3241 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 246:
+-#line 900 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 900 "src/p.y"
+     {
+-                    addcommand(START, (yyvsp[0].number));
++                    addcommand(START, (yyvsp[(3) - (3)].number));
+                   }
+-#line 3249 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 247:
+-#line 903 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 903 "src/p.y"
+     {
+-                    addcommand(START, (yyvsp[0].number));
++                    addcommand(START, (yyvsp[(4) - (4)].number));
+                   }
+-#line 3257 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 248:
+-#line 908 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 908 "src/p.y"
+     {
+-                    addcommand(STOP, (yyvsp[0].number));
++                    addcommand(STOP, (yyvsp[(3) - (3)].number));
+                   }
+-#line 3265 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 249:
+-#line 911 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 911 "src/p.y"
+     {
+-                    addcommand(STOP, (yyvsp[0].number));
++                    addcommand(STOP, (yyvsp[(4) - (4)].number));
+                   }
+-#line 3273 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 250:
+-#line 917 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 917 "src/p.y"
+     {
+-                    addcommand(RESTART, (yyvsp[0].number));
++                    addcommand(RESTART, (yyvsp[(3) - (3)].number));
+                   }
+-#line 3281 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 251:
+-#line 920 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 920 "src/p.y"
+     {
+-                    addcommand(RESTART, (yyvsp[0].number));
++                    addcommand(RESTART, (yyvsp[(4) - (4)].number));
+                   }
+-#line 3289 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 256:
+-#line 933 "src/p.y" /* yacc.c:1646  */
+-    { addargument((yyvsp[0].string)); }
+-#line 3295 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 933 "src/p.y"
++    { addargument((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 257:
+-#line 934 "src/p.y" /* yacc.c:1646  */
+-    { addargument((yyvsp[0].string)); }
+-#line 3301 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 934 "src/p.y"
++    { addargument((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 258:
+-#line 937 "src/p.y" /* yacc.c:1646  */
+-    { addeuid( get_uid((yyvsp[0].string), 0) ); FREE((yyvsp[0].string)); }
+-#line 3307 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 937 "src/p.y"
++    { addeuid( get_uid((yyvsp[(2) - (2)].string), 0) ); FREE((yyvsp[(2) - (2)].string)); }
+     break;
+ 
+   case 259:
+-#line 938 "src/p.y" /* yacc.c:1646  */
+-    { addegid( get_gid((yyvsp[0].string), 0) ); FREE((yyvsp[0].string)); }
+-#line 3313 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 938 "src/p.y"
++    { addegid( get_gid((yyvsp[(2) - (2)].string), 0) ); FREE((yyvsp[(2) - (2)].string)); }
+     break;
+ 
+   case 260:
+-#line 939 "src/p.y" /* yacc.c:1646  */
+-    { addeuid( get_uid(NULL, (yyvsp[0].number)) ); }
+-#line 3319 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 939 "src/p.y"
++    { addeuid( get_uid(NULL, (yyvsp[(2) - (2)].number)) ); }
+     break;
+ 
+   case 261:
+-#line 940 "src/p.y" /* yacc.c:1646  */
+-    { addegid( get_gid(NULL, (yyvsp[0].number)) ); }
+-#line 3325 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 940 "src/p.y"
++    { addegid( get_gid(NULL, (yyvsp[(2) - (2)].number)) ); }
+     break;
+ 
+   case 262:
+-#line 943 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 943 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3331 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 263:
+-#line 944 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3337 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 944 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 264:
+-#line 945 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3343 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 945 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 265:
+-#line 948 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 948 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3349 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 266:
+-#line 949 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3355 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 949 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 267:
+-#line 952 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 952 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3361 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 268:
+-#line 953 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3367 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 953 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 269:
+-#line 957 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 957 "src/p.y"
+     {
+-                    portset.timeout = (yyvsp[-5].number);
+-                    portset.retry = (yyvsp[-4].number);
++                    portset.timeout = (yyvsp[(8) - (13)].number);
++                    portset.retry = (yyvsp[(9) - (13)].number);
+                     /* This is a workaround to support content match without having to create
+                      an URL object. 'urloption' creates the Request_T object we need minus the
+                      URL object, but with enough information to perform content test. 
+                      TODO: Parser is in need of refactoring */
+                     portset.url_request = urlrequest;
+-                    addeventaction(&(portset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    addeventaction(&(portset).action, (yyvsp[(12) - (13)].number), (yyvsp[(13) - (13)].number));
+                     addport(&portset);
+                   }
+-#line 3383 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 270:
+-#line 969 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 969 "src/p.y"
+     {
+-                    prepare_urlrequest((yyvsp[-7].url));
+-                    portset.timeout = (yyvsp[-5].number);
+-                    portset.retry = (yyvsp[-4].number);
+-                    addeventaction(&(portset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    prepare_urlrequest((yyvsp[(4) - (11)].url));
++                    portset.timeout = (yyvsp[(6) - (11)].number);
++                    portset.retry = (yyvsp[(7) - (11)].number);
++                    addeventaction(&(portset).action, (yyvsp[(10) - (11)].number), (yyvsp[(11) - (11)].number));
+                     addport(&portset);
+                   }
+-#line 3395 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 271:
+-#line 979 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 979 "src/p.y"
+     {
+-                   portset.timeout = (yyvsp[-5].number);
+-                   portset.retry = (yyvsp[-4].number);
+-                   addeventaction(&(portset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                   portset.timeout = (yyvsp[(6) - (11)].number);
++                   portset.retry = (yyvsp[(7) - (11)].number);
++                   addeventaction(&(portset).action, (yyvsp[(10) - (11)].number), (yyvsp[(11) - (11)].number));
+                    addport(&portset);
+                   }
+-#line 3406 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 272:
+-#line 987 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 987 "src/p.y"
+     {
+-                   icmpset.type = (yyvsp[-6].number);
+-                   icmpset.count = (yyvsp[-5].number);
+-                   icmpset.timeout = (yyvsp[-4].number);
+-                   addeventaction(&(icmpset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                   icmpset.type = (yyvsp[(4) - (10)].number);
++                   icmpset.count = (yyvsp[(5) - (10)].number);
++                   icmpset.timeout = (yyvsp[(6) - (10)].number);
++                   addeventaction(&(icmpset).action, (yyvsp[(9) - (10)].number), (yyvsp[(10) - (10)].number));
+                    addicmp(&icmpset);
+                   }
+-#line 3418 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 273:
+-#line 994 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 994 "src/p.y"
+     {
+                         icmpset.type = ICMP_ECHO;
+-                        icmpset.count = (yyvsp[-5].number);
+-                        icmpset.timeout = (yyvsp[-4].number);
+-                        addeventaction(&(icmpset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                        icmpset.count = (yyvsp[(4) - (9)].number);
++                        icmpset.timeout = (yyvsp[(5) - (9)].number);
++                        addeventaction(&(icmpset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                         addicmp(&icmpset);
+                  }
+-#line 3430 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 274:
+-#line 1003 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1003 "src/p.y"
+     {
+                     if (current->type == TYPE_HOST)
+                       portset.hostname = Str_dup(current->path);
+                     else
+                       portset.hostname = Str_dup(LOCALHOST);
+                   }
+-#line 3441 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 275:
+-#line 1009 "src/p.y" /* yacc.c:1646  */
+-    { check_hostname((yyvsp[0].string)); portset.hostname = (yyvsp[0].string); }
+-#line 3447 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1009 "src/p.y"
++    { check_hostname((yyvsp[(2) - (2)].string)); portset.hostname = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 276:
+-#line 1012 "src/p.y" /* yacc.c:1646  */
+-    { portset.port = (yyvsp[0].number); portset.family = AF_INET; }
+-#line 3453 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1012 "src/p.y"
++    { portset.port = (yyvsp[(2) - (2)].number); portset.family = AF_INET; }
+     break;
+ 
+   case 277:
+-#line 1015 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1015 "src/p.y"
+     {
+-                    portset.pathname = (yyvsp[0].string); portset.family = AF_UNIX;
++                    portset.pathname = (yyvsp[(2) - (2)].string); portset.family = AF_UNIX;
+                   }
+-#line 3461 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 278:
+-#line 1020 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1020 "src/p.y"
+     {
+                     portset.type = SOCK_STREAM;
+                   }
+-#line 3469 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 279:
+-#line 1023 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1023 "src/p.y"
+     {
+                     portset.type = SOCK_STREAM;
+                   }
+-#line 3477 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 280:
+-#line 1026 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1026 "src/p.y"
+     {
+                     portset.type = SOCK_STREAM;
+                     portset.SSL.use_ssl = TRUE;
+-                    portset.SSL.version = (yyvsp[-1].number);
++                    portset.SSL.version = (yyvsp[(3) - (4)].number);
+                     if (portset.SSL.version == SSL_VERSION_NONE)
+                       portset.SSL.version = SSL_VERSION_AUTO;
+-                    portset.SSL.certmd5 = (yyvsp[0].string);
++                    portset.SSL.certmd5 = (yyvsp[(4) - (4)].string);
+                   }
+-#line 3490 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 281:
+-#line 1034 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1034 "src/p.y"
+     {
+                     portset.type = SOCK_DGRAM;
+                   }
+-#line 3498 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 282:
+-#line 1039 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1039 "src/p.y"
+     { (yyval.string) = NULL; }
+-#line 3504 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 283:
+-#line 1040 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 3510 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1040 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 284:
+-#line 1043 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1043 "src/p.y"
+     { (yyval.number) = SSL_VERSION_NONE; }
+-#line 3516 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 285:
+-#line 1044 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1044 "src/p.y"
+     { (yyval.number) = SSL_VERSION_SSLV2; }
+-#line 3522 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 286:
+-#line 1045 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1045 "src/p.y"
+     { (yyval.number) = SSL_VERSION_SSLV3; }
+-#line 3528 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 287:
+-#line 1046 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1046 "src/p.y"
+     { (yyval.number) = SSL_VERSION_TLSV1; }
+-#line 3534 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 288:
+-#line 1048 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1048 "src/p.y"
+     {
+ #ifndef HAVE_TLSV1_1_CLIENT_METHOD
+                         yyerror("Your SSL Library does not support TLS version 1.1");
+ #endif
+                         (yyval.number) = SSL_VERSION_TLSV11;
+                 }
+-#line 3545 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 289:
+-#line 1055 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1055 "src/p.y"
+     {
+ #ifndef HAVE_TLSV1_1_CLIENT_METHOD
+                         yyerror("Your SSL Library does not support TLS version 1.2");
+ #endif
+                         (yyval.number) = SSL_VERSION_TLSV12;
+                 }
+-#line 3556 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 290:
+-#line 1061 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1061 "src/p.y"
+     { (yyval.number) = SSL_VERSION_AUTO; }
+-#line 3562 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 291:
+-#line 1064 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1064 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DEFAULT);
+                   }
+-#line 3570 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 292:
+-#line 1067 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1067 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_APACHESTATUS);
+                   }
+-#line 3578 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 293:
+-#line 1070 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1070 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DEFAULT);
+                   }
+-#line 3586 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 294:
+-#line 1073 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1073 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DNS);
+                   }
+-#line 3594 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 295:
+-#line 1076 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1076 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_DWP);
+                   }
+-#line 3602 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 296:
+-#line 1079 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1079 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_FTP);
+                   }
+-#line 3610 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 297:
+-#line 1082 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1082 "src/p.y"
+     {
+                         portset.protocol = Protocol_get(Protocol_HTTP);
+                   }
+-#line 3618 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 298:
+-#line 1085 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1085 "src/p.y"
+     {
+                         portset.type = SOCK_STREAM;
+                         portset.SSL.use_ssl = TRUE;
+                         portset.SSL.version = SSL_VERSION_AUTO;
+                         portset.protocol = Protocol_get(Protocol_HTTP);
+                  }
+-#line 3629 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 299:
+-#line 1091 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1091 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_IMAP);
+                   }
+-#line 3637 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 300:
+-#line 1094 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1094 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_CLAMAV);
+                   }
+-#line 3645 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 301:
+-#line 1097 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1097 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_LDAP2);
+                   }
+-#line 3653 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 302:
+-#line 1100 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1100 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_LDAP3);
+                   }
+-#line 3661 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 303:
+-#line 1103 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1103 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_MYSQL);
+                   }
+-#line 3669 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 304:
+-#line 1106 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1106 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_SIP);
+                   }
+-#line 3677 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 305:
+-#line 1109 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1109 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_NNTP);
+                   }
+-#line 3685 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 306:
+-#line 1112 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1112 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_NTP3);
+                     portset.type = SOCK_DGRAM;
+                   }
+-#line 3694 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 307:
+-#line 1116 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1116 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_POSTFIXPOLICY);
+                   }
+-#line 3702 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 308:
+-#line 1119 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1119 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_POP);
+                   }
+-#line 3710 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 309:
+-#line 1122 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1122 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_SMTP);
+                   }
+-#line 3718 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 310:
+-#line 1125 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1125 "src/p.y"
+     {
+                         portset.type = SOCK_STREAM;
+                         portset.SSL.use_ssl = TRUE;
+                         portset.SSL.version = SSL_VERSION_AUTO;
+                         portset.protocol = Protocol_get(Protocol_SMTP);
+                  }
+-#line 3729 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 311:
+-#line 1131 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1131 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_SSH);
+                   }
+-#line 3737 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 312:
+-#line 1134 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1134 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_RDATE);
+                   }
+-#line 3745 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 313:
+-#line 1137 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1137 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_RSYNC);
+                   }
+-#line 3753 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 314:
+-#line 1140 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1140 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_TNS);
+                   }
+-#line 3761 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 315:
+-#line 1143 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1143 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_PGSQL);
+                   }
+-#line 3769 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 316:
+-#line 1146 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1146 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_LMTP);
+                   }
+-#line 3777 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 317:
+-#line 1149 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1149 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_GPS);
+                   }
+-#line 3785 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 318:
+-#line 1152 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1152 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_RADIUS);
+                   }
+-#line 3793 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 319:
+-#line 1155 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1155 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_MEMCACHE);
+                   }
+-#line 3801 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 320:
+-#line 1158 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1158 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_WEBSOCKET);
+                   }
+-#line 3809 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 321:
+-#line 1161 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1161 "src/p.y"
+     {
+                     portset.protocol = Protocol_get(Protocol_GENERIC);
+                   }
+-#line 3817 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 324:
+-#line 1170 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1170 "src/p.y"
+     {
+-                    addgeneric(&portset, (yyvsp[0].string), NULL);
++                    addgeneric(&portset, (yyvsp[(2) - (2)].string), NULL);
+                   }
+-#line 3825 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 325:
+-#line 1173 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1173 "src/p.y"
+     {
+-                    addgeneric(&portset, NULL, (yyvsp[0].string));
++                    addgeneric(&portset, NULL, (yyvsp[(2) - (2)].string));
+                   }
+-#line 3833 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 328:
+-#line 1182 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1182 "src/p.y"
+     {
+-                    portset.pathname = (yyvsp[0].string);
++                    portset.pathname = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3841 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 329:
+-#line 1185 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1185 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3849 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 330:
+-#line 1188 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1188 "src/p.y"
+     {
+-                    portset.request_hostheader = (yyvsp[0].string);
++                    portset.request_hostheader = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3857 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 331:
+-#line 1191 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1191 "src/p.y"
+     {
+-                    portset.version = (yyvsp[0].number);
++                    portset.version = (yyvsp[(2) - (2)].number);
+                   }
+-#line 3865 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 333:
+-#line 1197 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1197 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3873 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 334:
+-#line 1200 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1200 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3881 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 336:
+-#line 1206 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1206 "src/p.y"
+     {
+-                     portset.maxforward = verifyMaxForward((yyvsp[0].number));
++                     portset.maxforward = verifyMaxForward((yyvsp[(2) - (2)].number));
+                    }
+-#line 3889 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 344:
+-#line 1222 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1222 "src/p.y"
+     {
+-                    portset.operator = (yyvsp[-1].number);
+-                    portset.status = (yyvsp[0].number);
++                    portset.operator = (yyvsp[(2) - (3)].number);
++                    portset.status = (yyvsp[(3) - (3)].number);
+                   }
+-#line 3898 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 345:
+-#line 1228 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1228 "src/p.y"
+     {
+-                    portset.request = Util_urlEncode((yyvsp[0].string));
+-                    FREE((yyvsp[0].string));
++                    portset.request = Util_urlEncode((yyvsp[(2) - (2)].string));
++                    FREE((yyvsp[(2) - (2)].string));
+                   }
+-#line 3907 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 346:
+-#line 1234 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1234 "src/p.y"
+     {
+-                    portset.request_checksum = (yyvsp[0].string);
++                    portset.request_checksum = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3915 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 347:
+-#line 1239 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1239 "src/p.y"
+     {
+-                    portset.request_hostheader = (yyvsp[0].string);
++                    portset.request_hostheader = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3923 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 349:
+-#line 1245 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1245 "src/p.y"
+     {
+                         if (! portset.http_headers) {
+                                 portset.http_headers = List_new();
+                         }
+-                        List_append(portset.http_headers, (yyvsp[0].string));
++                        List_append(portset.http_headers, (yyvsp[(2) - (2)].string));
+                  }
+-#line 3934 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 350:
+-#line 1253 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1253 "src/p.y"
+     {
+-                    portset.request = (yyvsp[0].string);
++                    portset.request = (yyvsp[(2) - (2)].string);
+                   }
+-#line 3942 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 353:
+-#line 1262 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1262 "src/p.y"
+     {
+-                    portset.ApacheStatus.loglimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.loglimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.loglimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.loglimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3951 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 354:
+-#line 1266 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1266 "src/p.y"
+     {
+-                    portset.ApacheStatus.closelimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.closelimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.closelimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.closelimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3960 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 355:
+-#line 1270 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1270 "src/p.y"
+     {
+-                    portset.ApacheStatus.dnslimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.dnslimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.dnslimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.dnslimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3969 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 356:
+-#line 1274 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1274 "src/p.y"
+     {
+-                    portset.ApacheStatus.keepalivelimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.keepalivelimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.keepalivelimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.keepalivelimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3978 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 357:
+-#line 1278 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1278 "src/p.y"
+     {
+-                    portset.ApacheStatus.replylimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.replylimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.replylimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.replylimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3987 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 358:
+-#line 1282 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1282 "src/p.y"
+     {
+-                    portset.ApacheStatus.requestlimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.requestlimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.requestlimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.requestlimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 3996 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 359:
+-#line 1286 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1286 "src/p.y"
+     {
+-                    portset.ApacheStatus.startlimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.startlimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.startlimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.startlimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4005 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 360:
+-#line 1290 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1290 "src/p.y"
+     {
+-                    portset.ApacheStatus.waitlimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.waitlimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.waitlimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.waitlimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4014 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 361:
+-#line 1294 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1294 "src/p.y"
+     {
+-                    portset.ApacheStatus.gracefullimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.gracefullimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.gracefullimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.gracefullimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4023 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 362:
+-#line 1298 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1298 "src/p.y"
+     {
+-                    portset.ApacheStatus.cleanuplimitOP = (yyvsp[-2].number);
+-                    portset.ApacheStatus.cleanuplimit = (yyvsp[-1].number);
++                    portset.ApacheStatus.cleanuplimitOP = (yyvsp[(2) - (4)].number);
++                    portset.ApacheStatus.cleanuplimit = (yyvsp[(3) - (4)].number);
+                   }
+-#line 4032 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 363:
+-#line 1304 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1304 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_NONEXIST, (yyvsp[-1].number), (yyvsp[0].number));
++                    seteventaction(&(current)->action_NONEXIST, (yyvsp[(6) - (7)].number), (yyvsp[(7) - (7)].number));
+                   }
+-#line 4040 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 364:
+-#line 1310 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1310 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_PID, (yyvsp[0].number), ACTION_IGNORE);
++                    seteventaction(&(current)->action_PID, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                   }
+-#line 4048 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 365:
+-#line 1315 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1315 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_PPID, (yyvsp[0].number), ACTION_IGNORE);
++                    seteventaction(&(current)->action_PPID, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                   }
+-#line 4056 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 366:
+-#line 1320 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1320 "src/p.y"
+     {
+-                    uptimeset.operator = (yyvsp[-6].number);
+-                    uptimeset.uptime = ((unsigned long long)(yyvsp[-5].number) * (yyvsp[-4].number));
+-                    addeventaction(&(uptimeset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uptimeset.operator = (yyvsp[(3) - (9)].number);
++                    uptimeset.uptime = ((unsigned long long)(yyvsp[(4) - (9)].number) * (yyvsp[(5) - (9)].number));
++                    addeventaction(&(uptimeset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     adduptime(&uptimeset);
+                   }
+-#line 4067 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 367:
+-#line 1327 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1327 "src/p.y"
+     {
+                    (yyval.number) = ICMP_ATTEMPT_COUNT;
+                   }
+-#line 4075 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 368:
+-#line 1330 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1330 "src/p.y"
+     {
+-                        (yyval.number) = (yyvsp[0].number);
++                        (yyval.number) = (yyvsp[(2) - (2)].number);
+                  }
+-#line 4083 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 369:
+-#line 1335 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1335 "src/p.y"
+     {
+                    (yyval.number) = EXEC_TIMEOUT;
+                   }
+-#line 4091 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 370:
+-#line 1338 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1338 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[-1].number);
++                   (yyval.number) = (yyvsp[(2) - (3)].number);
+                   }
+-#line 4099 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 371:
+-#line 1343 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1343 "src/p.y"
+     {
+                    (yyval.number) = PROGRAM_TIMEOUT; // Default program status check timeout is 5 min
+                   }
+-#line 4107 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 372:
+-#line 1346 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1346 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[-1].number);
++                   (yyval.number) = (yyvsp[(2) - (3)].number);
+                   }
+-#line 4115 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 373:
+-#line 1351 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1351 "src/p.y"
+     {
+                    (yyval.number) = NET_TIMEOUT; // timeout is in milliseconds
+                   }
+-#line 4123 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 374:
+-#line 1354 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1354 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[-1].number) * 1000; // net timeout is in milliseconds internally
++                   (yyval.number) = (yyvsp[(2) - (3)].number) * 1000; // net timeout is in milliseconds internally
+                   }
+-#line 4131 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 375:
+-#line 1359 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1359 "src/p.y"
+     {
+                    (yyval.number) = 1;
+                   }
+-#line 4139 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 376:
+-#line 1362 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1362 "src/p.y"
+     {
+-                   (yyval.number) = (yyvsp[0].number);
++                   (yyval.number) = (yyvsp[(2) - (2)].number);
+                   }
+-#line 4147 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 377:
+-#line 1367 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1367 "src/p.y"
+     {
+-                   actionrateset.count = (yyvsp[-5].number);
+-                   actionrateset.cycle = (yyvsp[-3].number);
+-                   addeventaction(&(actionrateset).action, (yyvsp[0].number), ACTION_ALERT);
++                   actionrateset.count = (yyvsp[(2) - (7)].number);
++                   actionrateset.cycle = (yyvsp[(4) - (7)].number);
++                   addeventaction(&(actionrateset).action, (yyvsp[(7) - (7)].number), ACTION_ALERT);
+                    addactionrate(&actionrateset);
+                  }
+-#line 4158 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 378:
+-#line 1373 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1373 "src/p.y"
+     {
+-                   actionrateset.count = (yyvsp[-5].number);
+-                   actionrateset.cycle = (yyvsp[-3].number);
++                   actionrateset.count = (yyvsp[(2) - (7)].number);
++                   actionrateset.cycle = (yyvsp[(4) - (7)].number);
+                    addeventaction(&(actionrateset).action, ACTION_UNMONITOR, ACTION_ALERT);
+                    addactionrate(&actionrateset);
+                  }
+-#line 4169 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 380:
+-#line 1382 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1382 "src/p.y"
+     {
+-                    seturlrequest((yyvsp[-1].number), (yyvsp[0].string));
+-                    FREE((yyvsp[0].string));
++                    seturlrequest((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].string));
++                    FREE((yyvsp[(3) - (3)].string));
+                   }
+-#line 4178 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 381:
+-#line 1388 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1388 "src/p.y"
+     { (yyval.number) = Operator_Equal; }
+-#line 4184 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 382:
+-#line 1389 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1389 "src/p.y"
+     { (yyval.number) = Operator_NotEqual; }
+-#line 4190 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 383:
+-#line 1392 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1392 "src/p.y"
+     {
+                    mailset.events = Event_All;
+-                   addmail((yyvsp[-2].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (3)].string), &mailset, &current->maillist);
+                   }
+-#line 4199 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 384:
+-#line 1396 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1396 "src/p.y"
+     {
+-                   addmail((yyvsp[-5].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (6)].string), &mailset, &current->maillist);
+                   }
+-#line 4207 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 385:
+-#line 1399 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1399 "src/p.y"
+     {
+                    mailset.events = ~mailset.events;
+-                   addmail((yyvsp[-6].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (7)].string), &mailset, &current->maillist);
+                   }
+-#line 4216 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 386:
+-#line 1403 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1403 "src/p.y"
+     {
+-                   addmail((yyvsp[0].string), &mailset, &current->maillist);
++                   addmail((yyvsp[(1) - (1)].string), &mailset, &current->maillist);
+                   }
+-#line 4224 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 387:
+-#line 1408 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 4230 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1408 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 388:
+-#line 1411 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.string) = (yyvsp[0].string); }
+-#line 4236 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1411 "src/p.y"
++    { (yyval.string) = (yyvsp[(2) - (2)].string); }
+     break;
+ 
+   case 391:
+-#line 1418 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1418 "src/p.y"
+     { mailset.events |= Event_Action; }
+-#line 4242 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 392:
+-#line 1419 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1419 "src/p.y"
+     { mailset.events |= Event_Checksum; }
+-#line 4248 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 393:
+-#line 1420 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1420 "src/p.y"
+     { mailset.events |= Event_Connection; }
+-#line 4254 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 394:
+-#line 1421 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1421 "src/p.y"
+     { mailset.events |= Event_Content; }
+-#line 4260 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 395:
+-#line 1422 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1422 "src/p.y"
+     { mailset.events |= Event_Data; }
+-#line 4266 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 396:
+-#line 1423 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1423 "src/p.y"
+     { mailset.events |= Event_Exec; }
+-#line 4272 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 397:
+-#line 1424 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1424 "src/p.y"
+     { mailset.events |= Event_Fsflag; }
+-#line 4278 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 398:
+-#line 1425 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1425 "src/p.y"
+     { mailset.events |= Event_Gid; }
+-#line 4284 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 399:
+-#line 1426 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1426 "src/p.y"
+     { mailset.events |= Event_Icmp; }
+-#line 4290 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 400:
+-#line 1427 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1427 "src/p.y"
+     { mailset.events |= Event_Instance; }
+-#line 4296 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 401:
+-#line 1428 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1428 "src/p.y"
+     { mailset.events |= Event_Invalid; }
+-#line 4302 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 402:
+-#line 1429 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1429 "src/p.y"
+     { mailset.events |= Event_Nonexist; }
+-#line 4308 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 403:
+-#line 1430 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1430 "src/p.y"
+     { mailset.events |= Event_Permission; }
+-#line 4314 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 404:
+-#line 1431 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1431 "src/p.y"
+     { mailset.events |= Event_Pid; }
+-#line 4320 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 405:
+-#line 1432 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1432 "src/p.y"
+     { mailset.events |= Event_PPid; }
+-#line 4326 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 406:
+-#line 1433 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1433 "src/p.y"
+     { mailset.events |= Event_Resource; }
+-#line 4332 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 407:
+-#line 1434 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1434 "src/p.y"
+     { mailset.events |= Event_Size; }
+-#line 4338 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 408:
+-#line 1435 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1435 "src/p.y"
+     { mailset.events |= Event_Status; }
+-#line 4344 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 409:
+-#line 1436 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1436 "src/p.y"
+     { mailset.events |= Event_Timeout; }
+-#line 4350 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 410:
+-#line 1437 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1437 "src/p.y"
+     { mailset.events |= Event_Timestamp; }
+-#line 4356 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 411:
+-#line 1438 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1438 "src/p.y"
+     { mailset.events |= Event_Uid; }
+-#line 4362 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 412:
+-#line 1439 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1439 "src/p.y"
+     { mailset.events |= Event_Uptime; }
+-#line 4368 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 417:
+-#line 1450 "src/p.y" /* yacc.c:1646  */
+-    { mailset.from = (yyvsp[0].string); }
+-#line 4374 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1450 "src/p.y"
++    { mailset.from = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 418:
+-#line 1451 "src/p.y" /* yacc.c:1646  */
+-    { mailset.replyto = (yyvsp[0].string); }
+-#line 4380 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1451 "src/p.y"
++    { mailset.replyto = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 419:
+-#line 1452 "src/p.y" /* yacc.c:1646  */
+-    { mailset.subject = (yyvsp[0].string); }
+-#line 4386 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1452 "src/p.y"
++    { mailset.subject = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 420:
+-#line 1453 "src/p.y" /* yacc.c:1646  */
+-    { mailset.message = (yyvsp[0].string); }
+-#line 4392 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1453 "src/p.y"
++    { mailset.message = (yyvsp[(1) - (1)].string); }
+     break;
+ 
+   case 421:
+-#line 1456 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1456 "src/p.y"
+     {
+                    current->every.type = EVERY_SKIPCYCLES;
+-                   current->every.spec.cycle.number = (yyvsp[-1].number);
++                   current->every.spec.cycle.number = (yyvsp[(2) - (3)].number);
+                  }
+-#line 4401 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 422:
+-#line 1460 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1460 "src/p.y"
+     {
+                    current->every.type = EVERY_CRON;
+-                   current->every.spec.cron = (yyvsp[0].string);
++                   current->every.spec.cron = (yyvsp[(2) - (2)].string);
+                  }
+-#line 4410 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 423:
+-#line 1464 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1464 "src/p.y"
+     {
+                    current->every.type = EVERY_NOTINCRON;
+-                   current->every.spec.cron = (yyvsp[0].string);
++                   current->every.spec.cron = (yyvsp[(2) - (2)].string);
+                  }
+-#line 4419 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 424:
+-#line 1470 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1470 "src/p.y"
+     {
+                     current->mode = MODE_ACTIVE;
+                   }
+-#line 4427 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 425:
+-#line 1473 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1473 "src/p.y"
+     {
+                     current->mode = MODE_PASSIVE;
+                   }
+-#line 4435 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 426:
+-#line 1476 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1476 "src/p.y"
+     {
+                     current->mode = MODE_MANUAL;
+                     current->monitor = MONITOR_NOT;
+                   }
+-#line 4444 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 427:
+-#line 1482 "src/p.y" /* yacc.c:1646  */
+-    { addservicegroup((yyvsp[0].string)); FREE((yyvsp[0].string));}
+-#line 4450 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1482 "src/p.y"
++    { addservicegroup((yyvsp[(2) - (2)].string)); FREE((yyvsp[(2) - (2)].string));}
+     break;
+ 
+   case 431:
+-#line 1493 "src/p.y" /* yacc.c:1646  */
+-    { adddependant((yyvsp[0].string)); }
+-#line 4456 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1493 "src/p.y"
++    { adddependant((yyvsp[(1) - (1)].string)); }
+     break;
+ 
+   case 432:
+-#line 1496 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1496 "src/p.y"
+     {
+                         statusset.initialized = TRUE;
+-                        statusset.operator = (yyvsp[-5].number);
+-                        statusset.return_value = (yyvsp[-4].number);
+-                        addeventaction(&(statusset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                        statusset.operator = (yyvsp[(3) - (8)].number);
++                        statusset.return_value = (yyvsp[(4) - (8)].number);
++                        addeventaction(&(statusset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                         addstatus(&statusset);
+                    }
+-#line 4468 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 433:
+-#line 1503 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1503 "src/p.y"
+     {
+                         statusset.initialized = FALSE;
+                         statusset.operator = Operator_Changed;
+                         statusset.return_value = 0;
+-                        addeventaction(&(statusset).action, (yyvsp[0].number), ACTION_IGNORE);
++                        addeventaction(&(statusset).action, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                         addstatus(&statusset);
+                    }
+-#line 4480 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 434:
+-#line 1512 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1512 "src/p.y"
+     {
+-                     addeventaction(&(resourceset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                     addeventaction(&(resourceset).action, (yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].number));
+                      addresource(&resourceset);
+                    }
+-#line 4489 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 441:
+-#line 1528 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1528 "src/p.y"
+     {
+-                     addeventaction(&(resourceset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                     addeventaction(&(resourceset).action, (yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].number));
+                      addresource(&resourceset);
+                    }
+-#line 4498 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 448:
+-#line 1544 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1544 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_CPU_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4508 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 449:
+-#line 1549 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1549 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_TOTAL_CPU_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4518 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 450:
+-#line 1556 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1556 "src/p.y"
+     {
+-                    resourceset.resource_id = (yyvsp[-3].number);
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.resource_id = (yyvsp[(1) - (4)].number);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4528 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 451:
+-#line 1563 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1563 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_CPUUSER; }
+-#line 4534 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 452:
+-#line 1564 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1564 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_CPUSYSTEM; }
+-#line 4540 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 453:
+-#line 1565 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1565 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_CPUWAIT; }
+-#line 4546 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 454:
+-#line 1568 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1568 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_MEM_KBYTE;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = (int) ((yyvsp[-1].real) * ((yyvsp[0].number) / 1024.0));
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (4)].real) * ((yyvsp[(4) - (4)].number) / 1024.0));
+                   }
+-#line 4556 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 455:
+-#line 1573 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1573 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_MEM_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4566 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 456:
+-#line 1578 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1578 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_TOTAL_MEM_KBYTE;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = (int) ((yyvsp[-1].real) * ((yyvsp[0].number) / 1024.0));
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (4)].real) * ((yyvsp[(4) - (4)].number) / 1024.0));
+                   }
+-#line 4576 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 457:
+-#line 1583 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1583 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_TOTAL_MEM_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4586 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 458:
+-#line 1590 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1590 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_SWAP_KBYTE;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = (int) ((yyvsp[-1].real) * ((yyvsp[0].number) / 1024.0));
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (4)].real) * ((yyvsp[(4) - (4)].number) / 1024.0));
+                   }
+-#line 4596 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 459:
+-#line 1595 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1595 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_SWAP_PERCENT;
+-                    resourceset.operator = (yyvsp[-2].number);
+-                    resourceset.limit = ((yyvsp[-1].number) * 10);
++                    resourceset.operator = (yyvsp[(2) - (4)].number);
++                    resourceset.limit = ((yyvsp[(3) - (4)].number) * 10);
+                   }
+-#line 4606 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 460:
+-#line 1602 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1602 "src/p.y"
+     {
+                     resourceset.resource_id = RESOURCE_ID_CHILDREN;
+-                    resourceset.operator = (yyvsp[-1].number);
+-                    resourceset.limit = (int) (yyvsp[0].number);
++                    resourceset.operator = (yyvsp[(2) - (3)].number);
++                    resourceset.limit = (int) (yyvsp[(3) - (3)].number);
+                   }
+-#line 4616 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 461:
+-#line 1609 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1609 "src/p.y"
+     {
+-                    resourceset.resource_id = (yyvsp[-2].number);
+-                    resourceset.operator = (yyvsp[-1].number);
+-                    resourceset.limit = (int) ((yyvsp[0].real) * 10.0);
++                    resourceset.resource_id = (yyvsp[(1) - (3)].number);
++                    resourceset.operator = (yyvsp[(2) - (3)].number);
++                    resourceset.limit = (int) ((yyvsp[(3) - (3)].real) * 10.0);
+                   }
+-#line 4626 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 462:
+-#line 1616 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1616 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_LOAD1; }
+-#line 4632 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 463:
+-#line 1617 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1617 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_LOAD5; }
+-#line 4638 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 464:
+-#line 1618 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1618 "src/p.y"
+     { (yyval.number) = RESOURCE_ID_LOAD15; }
+-#line 4644 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 465:
+-#line 1621 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.real) = (yyvsp[0].real); }
+-#line 4650 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1621 "src/p.y"
++    { (yyval.real) = (yyvsp[(1) - (1)].real); }
+     break;
+ 
+   case 466:
+-#line 1622 "src/p.y" /* yacc.c:1646  */
+-    { (yyval.real) = (float) (yyvsp[0].number); }
+-#line 4656 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1622 "src/p.y"
++    { (yyval.real) = (float) (yyvsp[(1) - (1)].number); }
+     break;
+ 
+   case 467:
+-#line 1625 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1625 "src/p.y"
+     {
+-                    timestampset.operator = (yyvsp[-6].number);
+-                    timestampset.time = ((yyvsp[-5].number) * (yyvsp[-4].number));
+-                    addeventaction(&(timestampset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    timestampset.operator = (yyvsp[(3) - (9)].number);
++                    timestampset.time = ((yyvsp[(4) - (9)].number) * (yyvsp[(5) - (9)].number));
++                    addeventaction(&(timestampset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addtimestamp(&timestampset, FALSE);
+                   }
+-#line 4667 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 468:
+-#line 1631 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1631 "src/p.y"
+     {
+                     timestampset.test_changes = TRUE;
+-                    addeventaction(&(timestampset).action, (yyvsp[0].number), ACTION_IGNORE);
++                    addeventaction(&(timestampset).action, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                     addtimestamp(&timestampset, TRUE);
+                   }
+-#line 4677 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 469:
+-#line 1638 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1638 "src/p.y"
+     { (yyval.number) = Operator_Equal; }
+-#line 4683 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 470:
+-#line 1639 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1639 "src/p.y"
+     { (yyval.number) = Operator_Greater; }
+-#line 4689 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 471:
+-#line 1640 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1640 "src/p.y"
+     { (yyval.number) = Operator_Less; }
+-#line 4695 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 472:
+-#line 1641 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1641 "src/p.y"
+     { (yyval.number) = Operator_Equal; }
+-#line 4701 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 473:
+-#line 1642 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1642 "src/p.y"
+     { (yyval.number) = Operator_NotEqual; }
+-#line 4707 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 474:
+-#line 1643 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1643 "src/p.y"
+     { (yyval.number) = Operator_Changed; }
+-#line 4713 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 475:
+-#line 1646 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1646 "src/p.y"
+     { (yyval.number) = TIME_SECOND; }
+-#line 4719 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 476:
+-#line 1647 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1647 "src/p.y"
+     { (yyval.number) = TIME_SECOND; }
+-#line 4725 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 477:
+-#line 1648 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1648 "src/p.y"
+     { (yyval.number) = TIME_MINUTE; }
+-#line 4731 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 478:
+-#line 1649 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1649 "src/p.y"
+     { (yyval.number) = TIME_HOUR; }
+-#line 4737 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 479:
+-#line 1650 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1650 "src/p.y"
+     { (yyval.number) = TIME_DAY; }
+-#line 4743 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 480:
+-#line 1653 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1653 "src/p.y"
+     { (yyval.number) = ACTION_ALERT; }
+-#line 4749 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 481:
+-#line 1654 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1654 "src/p.y"
+     { (yyval.number) = ACTION_EXEC; }
+-#line 4755 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 482:
+-#line 1655 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1655 "src/p.y"
+     { (yyval.number) = ACTION_EXEC; }
+-#line 4761 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 483:
+-#line 1656 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1656 "src/p.y"
+     { (yyval.number) = ACTION_RESTART; }
+-#line 4767 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 484:
+-#line 1657 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1657 "src/p.y"
+     { (yyval.number) = ACTION_START; }
+-#line 4773 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 485:
+-#line 1658 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1658 "src/p.y"
+     { (yyval.number) = ACTION_STOP; }
+-#line 4779 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 486:
+-#line 1659 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1659 "src/p.y"
+     { (yyval.number) = ACTION_UNMONITOR; }
+-#line 4785 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 487:
+-#line 1662 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1662 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
+-                    if ((yyvsp[0].number) == ACTION_EXEC && command) {
++                    (yyval.number) = (yyvsp[(1) - (1)].number);
++                    if ((yyvsp[(1) - (1)].number) == ACTION_EXEC && command) {
+                       command1 = command;
+                       command = NULL;
+                     }
+                   }
+-#line 4797 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 488:
+-#line 1671 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1671 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
+-                    if ((yyvsp[0].number) == ACTION_EXEC && command) {
++                    (yyval.number) = (yyvsp[(1) - (1)].number);
++                    if ((yyvsp[(1) - (1)].number) == ACTION_EXEC && command) {
+                       command2 = command;
+                       command = NULL;
+                     }
+                   }
+-#line 4809 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 490:
+-#line 1681 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1681 "src/p.y"
+     {
+-                    rate1.count  = (yyvsp[-1].number);
+-                    rate1.cycles = (yyvsp[-1].number);
++                    rate1.count  = (yyvsp[(1) - (2)].number);
++                    rate1.cycles = (yyvsp[(1) - (2)].number);
+                     if (rate1.cycles < 1 || rate1.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                   }
+-#line 4820 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 491:
+-#line 1687 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1687 "src/p.y"
+     {
+-                    rate1.count  = (yyvsp[-2].number);
+-                    rate1.cycles = (yyvsp[-1].number);
++                    rate1.count  = (yyvsp[(1) - (3)].number);
++                    rate1.cycles = (yyvsp[(2) - (3)].number);
+                     if (rate1.cycles < 1 || rate1.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                     if (rate1.count < 1 || rate1.count > rate1.cycles)
+                       yyerror2("The number of events must be bigger then 0 and less than poll cycles");
+                   }
+-#line 4833 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 493:
+-#line 1698 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1698 "src/p.y"
+     {
+-                    rate2.count  = (yyvsp[-1].number);
+-                    rate2.cycles = (yyvsp[-1].number);
++                    rate2.count  = (yyvsp[(1) - (2)].number);
++                    rate2.cycles = (yyvsp[(1) - (2)].number);
+                     if (rate2.cycles < 1 || rate2.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                   }
+-#line 4844 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 494:
+-#line 1704 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1704 "src/p.y"
+     {
+-                    rate2.count  = (yyvsp[-2].number);
+-                    rate2.cycles = (yyvsp[-1].number);
++                    rate2.count  = (yyvsp[(1) - (3)].number);
++                    rate2.cycles = (yyvsp[(2) - (3)].number);
+                     if (rate2.cycles < 1 || rate2.cycles > BITMAP_MAX)
+                       yyerror2("The number of cycles must be between 1 and %d", BITMAP_MAX);
+                     if (rate2.count < 1 || rate2.count > rate2.cycles)
+                       yyerror2("The number of events must be bigger then 0 and less than poll cycles");
+                   }
+-#line 4857 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 495:
+-#line 1714 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1714 "src/p.y"
+     {
+                     (yyval.number) = ACTION_ALERT;
+                   }
+-#line 4865 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 496:
+-#line 1717 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1717 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
++                    (yyval.number) = (yyvsp[(6) - (6)].number);
+                   }
+-#line 4873 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 497:
+-#line 1720 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1720 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
++                    (yyval.number) = (yyvsp[(6) - (6)].number);
+                   }
+-#line 4881 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 498:
+-#line 1723 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1723 "src/p.y"
+     {
+-                    (yyval.number) = (yyvsp[0].number);
++                    (yyval.number) = (yyvsp[(6) - (6)].number);
+                   }
+-#line 4889 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 499:
+-#line 1728 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1728 "src/p.y"
+     {
+-                    addeventaction(&(checksumset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    addeventaction(&(checksumset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     addchecksum(&checksumset);
+                   }
+-#line 4898 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 500:
+-#line 1733 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1733 "src/p.y"
+     {
+-                    snprintf(checksumset.hash, sizeof(checksumset.hash), "%s", (yyvsp[-4].string));
+-                    FREE((yyvsp[-4].string));
+-                    addeventaction(&(checksumset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    snprintf(checksumset.hash, sizeof(checksumset.hash), "%s", (yyvsp[(6) - (10)].string));
++                    FREE((yyvsp[(6) - (10)].string));
++                    addeventaction(&(checksumset).action, (yyvsp[(9) - (10)].number), (yyvsp[(10) - (10)].number));
+                     addchecksum(&checksumset);
+                   }
+-#line 4909 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 501:
+-#line 1739 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1739 "src/p.y"
+     {
+                     checksumset.test_changes = TRUE;
+-                    addeventaction(&(checksumset).action, (yyvsp[0].number), ACTION_IGNORE);
++                    addeventaction(&(checksumset).action, (yyvsp[(7) - (7)].number), ACTION_IGNORE);
+                     addchecksum(&checksumset);
+                   }
+-#line 4919 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 502:
+-#line 1745 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1745 "src/p.y"
+     { checksumset.type = HASH_UNKNOWN; }
+-#line 4925 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 503:
+-#line 1746 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1746 "src/p.y"
+     { checksumset.type = HASH_MD5; }
+-#line 4931 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 504:
+-#line 1747 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1747 "src/p.y"
+     { checksumset.type = HASH_SHA1; }
+-#line 4937 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 505:
+-#line 1750 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1750 "src/p.y"
+     {
+                     filesystemset.resource = RESOURCE_ID_INODE;
+-                    filesystemset.operator = (yyvsp[-5].number);
+-                    filesystemset.limit_absolute = (yyvsp[-4].number);
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (8)].number);
++                    filesystemset.limit_absolute = (yyvsp[(4) - (8)].number);
++                    addeventaction(&(filesystemset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4949 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 506:
+-#line 1757 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1757 "src/p.y"
+     {
+                     filesystemset.resource = RESOURCE_ID_INODE;
+-                    filesystemset.operator = (yyvsp[-6].number);
+-                    filesystemset.limit_percent = (int)((yyvsp[-5].number) * 10);
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (9)].number);
++                    filesystemset.limit_percent = (int)((yyvsp[(4) - (9)].number) * 10);
++                    addeventaction(&(filesystemset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4961 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 507:
+-#line 1766 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1766 "src/p.y"
+     {
+                     if (! filesystem_usage(current))
+                       yyerror2("Cannot read usage of filesystem %s", current->path);
+                     filesystemset.resource = RESOURCE_ID_SPACE;
+-                    filesystemset.operator = (yyvsp[-6].number);
+-                    filesystemset.limit_absolute = (long long)((double)(yyvsp[-5].real) / (double)current->inf->priv.filesystem.f_bsize * (double)(yyvsp[-4].number));
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (9)].number);
++                    filesystemset.limit_absolute = (long long)((double)(yyvsp[(4) - (9)].real) / (double)current->inf->priv.filesystem.f_bsize * (double)(yyvsp[(5) - (9)].number));
++                    addeventaction(&(filesystemset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4975 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 508:
+-#line 1775 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1775 "src/p.y"
+     {
+                     filesystemset.resource = RESOURCE_ID_SPACE;
+-                    filesystemset.operator = (yyvsp[-6].number);
+-                    filesystemset.limit_percent = (int)((yyvsp[-5].number) * 10);
+-                    addeventaction(&(filesystemset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    filesystemset.operator = (yyvsp[(3) - (9)].number);
++                    filesystemset.limit_percent = (int)((yyvsp[(4) - (9)].number) * 10);
++                    addeventaction(&(filesystemset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addfilesystem(&filesystemset);
+                   }
+-#line 4987 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 509:
+-#line 1784 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1784 "src/p.y"
+     {
+-                    seteventaction(&(current)->action_FSFLAG, (yyvsp[0].number), ACTION_IGNORE);
++                    seteventaction(&(current)->action_FSFLAG, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                   }
+-#line 4995 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 510:
+-#line 1789 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1789 "src/p.y"
+     { (yyval.number) = UNIT_BYTE; }
+-#line 5001 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 511:
+-#line 1790 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1790 "src/p.y"
+     { (yyval.number) = UNIT_BYTE; }
+-#line 5007 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 512:
+-#line 1791 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1791 "src/p.y"
+     { (yyval.number) = UNIT_KILOBYTE; }
+-#line 5013 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 513:
+-#line 1792 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1792 "src/p.y"
+     { (yyval.number) = UNIT_MEGABYTE; }
+-#line 5019 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 514:
+-#line 1793 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1793 "src/p.y"
+     { (yyval.number) = UNIT_GIGABYTE; }
+-#line 5025 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 515:
+-#line 1796 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1796 "src/p.y"
+     {
+-                    permset.perm = check_perm((yyvsp[-4].number));
+-                    addeventaction(&(permset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    permset.perm = check_perm((yyvsp[(4) - (8)].number));
++                    addeventaction(&(permset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     addperm(&permset);
+                   }
+-#line 5035 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 516:
+-#line 1803 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1803 "src/p.y"
+     {
+                     matchset.ignore = FALSE;
+-                    matchset.match_path = (yyvsp[-3].string);
++                    matchset.match_path = (yyvsp[(4) - (7)].string);
+                     matchset.match_string = NULL;
+-                    addmatchpath(&matchset, (yyvsp[0].number));
+-                    FREE((yyvsp[-3].string));
++                    addmatchpath(&matchset, (yyvsp[(7) - (7)].number));
++                    FREE((yyvsp[(4) - (7)].string));
+                   }
+-#line 5047 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 517:
+-#line 1810 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1810 "src/p.y"
+     {
+                     matchset.ignore = FALSE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = (yyvsp[-3].string);
+-                    addmatch(&matchset, (yyvsp[0].number), 0);
++                    matchset.match_string = (yyvsp[(4) - (7)].string);
++                    addmatch(&matchset, (yyvsp[(7) - (7)].number), 0);
+                   }
+-#line 5058 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 518:
+-#line 1816 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1816 "src/p.y"
+     {
+                     matchset.ignore = TRUE;
+-                    matchset.match_path = (yyvsp[0].string);
++                    matchset.match_path = (yyvsp[(4) - (4)].string);
+                     matchset.match_string = NULL;
+                     addmatchpath(&matchset, ACTION_IGNORE);
+-                    FREE((yyvsp[0].string));
++                    FREE((yyvsp[(4) - (4)].string));
+                   }
+-#line 5070 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 519:
+-#line 1823 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1823 "src/p.y"
+     {
+                     matchset.ignore = TRUE;
+                     matchset.match_path = NULL;
+-                    matchset.match_string = (yyvsp[0].string);
++                    matchset.match_string = (yyvsp[(4) - (4)].string);
+                     addmatch(&matchset, ACTION_IGNORE, 0);
+                   }
+-#line 5081 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 520:
+-#line 1831 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1831 "src/p.y"
+     {
+                     matchset.not = FALSE;
+                   }
+-#line 5089 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 521:
+-#line 1834 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1834 "src/p.y"
+     {
+                     matchset.not = TRUE;
+                   }
+-#line 5097 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 522:
+-#line 1840 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1840 "src/p.y"
+     {
+-                    sizeset.operator = (yyvsp[-6].number);
+-                    sizeset.size = ((unsigned long long)(yyvsp[-5].number) * (yyvsp[-4].number));
+-                    addeventaction(&(sizeset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    sizeset.operator = (yyvsp[(3) - (9)].number);
++                    sizeset.size = ((unsigned long long)(yyvsp[(4) - (9)].number) * (yyvsp[(5) - (9)].number));
++                    addeventaction(&(sizeset).action, (yyvsp[(8) - (9)].number), (yyvsp[(9) - (9)].number));
+                     addsize(&sizeset);
+                   }
+-#line 5108 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 523:
+-#line 1846 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1846 "src/p.y"
+     {
+                     sizeset.test_changes = TRUE;
+-                    addeventaction(&(sizeset).action, (yyvsp[0].number), ACTION_IGNORE);
++                    addeventaction(&(sizeset).action, (yyvsp[(6) - (6)].number), ACTION_IGNORE);
+                     addsize(&sizeset);
+                   }
+-#line 5118 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 524:
+-#line 1853 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1853 "src/p.y"
+     {
+-                    uidset.uid = get_uid((yyvsp[-4].string), 0);
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid((yyvsp[(4) - (8)].string), 0);
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->uid = adduid(&uidset);
+-                    FREE((yyvsp[-4].string));
++                    FREE((yyvsp[(4) - (8)].string));
+                   }
+-#line 5129 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 525:
+-#line 1859 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1859 "src/p.y"
+     {
+-                    uidset.uid = get_uid(NULL, (yyvsp[-4].number));
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid(NULL, (yyvsp[(4) - (8)].number));
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->uid = adduid(&uidset);
+                   }
+-#line 5139 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 526:
+-#line 1866 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1866 "src/p.y"
+     {
+-                    uidset.uid = get_uid((yyvsp[-4].string), 0);
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid((yyvsp[(4) - (8)].string), 0);
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->euid = adduid(&uidset);
+-                    FREE((yyvsp[-4].string));
++                    FREE((yyvsp[(4) - (8)].string));
+                   }
+-#line 5150 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 527:
+-#line 1872 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1872 "src/p.y"
+     {
+-                    uidset.uid = get_uid(NULL, (yyvsp[-4].number));
+-                    addeventaction(&(uidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    uidset.uid = get_uid(NULL, (yyvsp[(4) - (8)].number));
++                    addeventaction(&(uidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->euid = adduid(&uidset);
+                   }
+-#line 5160 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 528:
+-#line 1879 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1879 "src/p.y"
+     {
+-                    gidset.gid = get_gid((yyvsp[-4].string), 0);
+-                    addeventaction(&(gidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    gidset.gid = get_gid((yyvsp[(4) - (8)].string), 0);
++                    addeventaction(&(gidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->gid = addgid(&gidset);
+-                    FREE((yyvsp[-4].string));
++                    FREE((yyvsp[(4) - (8)].string));
+                   }
+-#line 5171 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 529:
+-#line 1885 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1885 "src/p.y"
+     {
+-                    gidset.gid = get_gid(NULL, (yyvsp[-4].number));
+-                    addeventaction(&(gidset).action, (yyvsp[-1].number), (yyvsp[0].number));
++                    gidset.gid = get_gid(NULL, (yyvsp[(4) - (8)].number));
++                    addeventaction(&(gidset).action, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].number));
+                     current->gid = addgid(&gidset);
+                   }
+-#line 5181 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 530:
+-#line 1892 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1892 "src/p.y"
+     { (yyval.number) = ICMP_ECHO; }
+-#line 5187 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 531:
+-#line 1895 "src/p.y" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1895 "src/p.y"
+     { mailset.reminder = 0; }
+-#line 5193 "src/y.tab.c" /* yacc.c:1646  */
+     break;
+ 
+   case 532:
+-#line 1896 "src/p.y" /* yacc.c:1646  */
+-    { mailset.reminder = (yyvsp[0].number); }
+-#line 5199 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1896 "src/p.y"
++    { mailset.reminder = (yyvsp[(2) - (2)].number); }
+     break;
+ 
+   case 533:
+-#line 1897 "src/p.y" /* yacc.c:1646  */
+-    { mailset.reminder = (yyvsp[-1].number); }
+-#line 5205 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 1897 "src/p.y"
++    { mailset.reminder = (yyvsp[(2) - (3)].number); }
+     break;
+ 
+ 
+-#line 5209 "src/y.tab.c" /* yacc.c:1646  */
++
++/* Line 1806 of yacc.c  */
++#line 5885 "src/y.tab.c"
+       default: break;
+     }
+   /* User semantic actions sometimes alter yychar, and that requires
+@@ -5228,7 +5904,7 @@
+ 
+   *++yyvsp = yyval;
+ 
+-  /* Now 'shift' the result of the reduction.  Determine what state
++  /* 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.  */
+ 
+@@ -5243,9 +5919,9 @@
+   goto yynewstate;
+ 
+ 
+-/*--------------------------------------.
+-| yyerrlab -- here on detecting error.  |
+-`--------------------------------------*/
++/*------------------------------------.
++| yyerrlab -- here on detecting error |
++`------------------------------------*/
+ yyerrlab:
+   /* Make sure we have latest lookahead translation.  See comments at
+      user semantic actions for why this is necessary.  */
+@@ -5296,20 +5972,20 @@
+   if (yyerrstatus == 3)
+     {
+       /* If just tried and failed to reuse lookahead token after an
+-         error, discard it.  */
++	 error, discard it.  */
+ 
+       if (yychar <= YYEOF)
+-        {
+-          /* Return failure if at end of input.  */
+-          if (yychar == YYEOF)
+-            YYABORT;
+-        }
++	{
++	  /* Return failure if at end of input.  */
++	  if (yychar == YYEOF)
++	    YYABORT;
++	}
+       else
+-        {
+-          yydestruct ("Error: discarding",
+-                      yytoken, &yylval);
+-          yychar = YYEMPTY;
+-        }
++	{
++	  yydestruct ("Error: discarding",
++		      yytoken, &yylval);
++	  yychar = YYEMPTY;
++	}
+     }
+ 
+   /* Else will try to reuse lookahead token after shifting the error
+@@ -5328,7 +6004,7 @@
+   if (/*CONSTCOND*/ 0)
+      goto yyerrorlab;
+ 
+-  /* Do not reclaim the symbols of the rule whose action triggered
++  /* Do not reclaim the symbols of the rule which action triggered
+      this YYERROR.  */
+   YYPOPSTACK (yylen);
+   yylen = 0;
+@@ -5341,37 +6017,35 @@
+ | yyerrlab1 -- common code for both syntax error and YYERROR.  |
+ `-------------------------------------------------------------*/
+ yyerrlab1:
+-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
++  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+ 
+   for (;;)
+     {
+       yyn = yypact[yystate];
+       if (!yypact_value_is_default (yyn))
+-        {
+-          yyn += YYTERROR;
+-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+-            {
+-              yyn = yytable[yyn];
+-              if (0 < yyn)
+-                break;
+-            }
+-        }
++	{
++	  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;
++	YYABORT;
+ 
+ 
+       yydestruct ("Error: popping",
+-                  yystos[yystate], yyvsp);
++		  yystos[yystate], yyvsp);
+       YYPOPSTACK (1);
+       yystate = *yyssp;
+       YY_STACK_PRINT (yyss, yyssp);
+     }
+ 
+-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+   *++yyvsp = yylval;
+-  YY_IGNORE_MAYBE_UNINITIALIZED_END
+ 
+ 
+   /* Shift the error token.  */
+@@ -5395,7 +6069,7 @@
+   yyresult = 1;
+   goto yyreturn;
+ 
+-#if !defined yyoverflow || YYERROR_VERBOSE
++#if !defined(yyoverflow) || YYERROR_VERBOSE
+ /*-------------------------------------------------.
+ | yyexhaustedlab -- memory exhaustion comes here.  |
+ `-------------------------------------------------*/
+@@ -5414,14 +6088,14 @@
+       yydestruct ("Cleanup: discarding lookahead",
+                   yytoken, &yylval);
+     }
+-  /* Do not reclaim the symbols of the rule whose action triggered
++  /* 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)
+     {
+       yydestruct ("Cleanup: popping",
+-                  yystos[*yyssp], yyvsp);
++		  yystos[*yyssp], yyvsp);
+       YYPOPSTACK (1);
+     }
+ #ifndef yyoverflow
+@@ -5432,9 +6106,14 @@
+   if (yymsg != yymsgbuf)
+     YYSTACK_FREE (yymsg);
+ #endif
+-  return yyresult;
++  /* Make sure YYID is used.  */
++  return YYID (yyresult);
+ }
+-#line 1900 "src/p.y" /* yacc.c:1906  */
++
++
++
++/* Line 2067 of yacc.c  */
++#line 1900 "src/p.y"
+ 
+ 
+ 
+@@ -5683,6 +6362,7 @@
+                         if (s->program->args->has_gid) {
+                                 Command_setGid(s->program->C, s->program->args->gid);
+                         }
++                        Command_setUmask(s->program->C, Run.umask);
+                 }
+         }
+ 
+@@ -7246,3 +7926,4 @@
+   return copy;
+ }
+ 
++
diff -Nru monit-5.9/debian/patches/series monit-5.9/debian/patches/series
--- monit-5.9/debian/patches/series	2014-09-30 14:24:21.000000000 +0400
+++ monit-5.9/debian/patches/series	2015-09-12 11:35:51.000000000 +0300
@@ -2,3 +2,4 @@
  05_monitrc.patch
  11_enable_hurd.patch
 12_FTBFS_on_kfreebsd.patch
+13_umask_fix.patch

Attachment: signature.asc
Description: Digital signature


Reply to: