summaryrefslogtreecommitdiff
path: root/src/conf_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/conf_parser.c')
-rw-r--r--src/conf_parser.c7071
1 files changed, 7071 insertions, 0 deletions
diff --git a/src/conf_parser.c b/src/conf_parser.c
new file mode 100644
index 0000000..294935c
--- /dev/null
+++ b/src/conf_parser.c
@@ -0,0 +1,7071 @@
+/* A Bison parser, made by GNU Bison 2.6.2. */
+
+/* Bison implementation for Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989-1990, 2000-2012 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/>. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.6.2"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Push parsers. */
+#define YYPUSH 0
+
+/* Pull parsers. */
+#define YYPULL 1
+
+
+
+
+/* Copy the first part of user declarations. */
+/* Line 336 of yacc.c */
+#line 25 "conf_parser.y"
+
+
+#define YY_NO_UNPUT
+#include <sys/types.h>
+#include <string.h>
+
+#include "config.h"
+#include "stdinc.h"
+#include "ircd.h"
+#include "list.h"
+#include "conf.h"
+#include "event.h"
+#include "log.h"
+#include "client.h" /* for UMODE_ALL only */
+#include "irc_string.h"
+#include "sprintf_irc.h"
+#include "memory.h"
+#include "modules.h"
+#include "s_serv.h"
+#include "hostmask.h"
+#include "send.h"
+#include "listener.h"
+#include "resv.h"
+#include "numeric.h"
+#include "s_user.h"
+
+#ifdef HAVE_LIBCRYPTO
+#include <openssl/rsa.h>
+#include <openssl/bio.h>
+#include <openssl/pem.h>
+#include <openssl/dh.h>
+#endif
+
+int yylex(void);
+
+static char *class_name = NULL;
+static struct ConfItem *yy_conf = NULL;
+static struct AccessItem *yy_aconf = NULL;
+static struct MatchItem *yy_match_item = NULL;
+static struct ClassItem *yy_class = NULL;
+static char *yy_class_name = NULL;
+
+static dlink_list col_conf_list = { NULL, NULL, 0 };
+static unsigned int listener_flags = 0;
+static unsigned int regex_ban = 0;
+static char userbuf[IRCD_BUFSIZE];
+static char hostbuf[IRCD_BUFSIZE];
+static char reasonbuf[REASONLEN + 1];
+static char gecos_name[REALLEN * 4];
+static char lfile[IRCD_BUFSIZE];
+static unsigned int ltype = 0;
+static unsigned int lsize = 0;
+static char *resv_reason = NULL;
+static char *listener_address = NULL;
+
+struct CollectItem
+{
+ dlink_node node;
+ char *name;
+ char *user;
+ char *host;
+ char *passwd;
+ int port;
+ int flags;
+#ifdef HAVE_LIBCRYPTO
+ char *rsa_public_key_file;
+ RSA *rsa_public_key;
+#endif
+};
+
+static void
+free_collect_item(struct CollectItem *item)
+{
+ MyFree(item->name);
+ MyFree(item->user);
+ MyFree(item->host);
+ MyFree(item->passwd);
+#ifdef HAVE_LIBCRYPTO
+ MyFree(item->rsa_public_key_file);
+#endif
+ MyFree(item);
+}
+
+
+/* Line 336 of yacc.c */
+#line 153 "conf_parser.c"
+
+# ifndef YY_NULL
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULL nullptr
+# else
+# define YY_NULL 0
+# endif
+# endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* In a future release of Bison, this section will be replaced
+ by #include "y.tab.h". */
+#ifndef YY_Y_TAB_H
+# define YY_Y_TAB_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ ACCEPT_PASSWORD = 258,
+ ADMIN = 259,
+ AFTYPE = 260,
+ ANTI_NICK_FLOOD = 261,
+ ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
+ AUTOCONN = 263,
+ BYTES = 264,
+ KBYTES = 265,
+ MBYTES = 266,
+ CALLER_ID_WAIT = 267,
+ CAN_FLOOD = 268,
+ CHANNEL = 269,
+ CIDR_BITLEN_IPV4 = 270,
+ CIDR_BITLEN_IPV6 = 271,
+ CLASS = 272,
+ CONNECT = 273,
+ CONNECTFREQ = 274,
+ DEFAULT_FLOODCOUNT = 275,
+ DEFAULT_SPLIT_SERVER_COUNT = 276,
+ DEFAULT_SPLIT_USER_COUNT = 277,
+ DENY = 278,
+ DESCRIPTION = 279,
+ DIE = 280,
+ DISABLE_AUTH = 281,
+ DISABLE_FAKE_CHANNELS = 282,
+ DISABLE_REMOTE_COMMANDS = 283,
+ DOTS_IN_IDENT = 284,
+ EGDPOOL_PATH = 285,
+ EMAIL = 286,
+ ENCRYPTED = 287,
+ EXCEED_LIMIT = 288,
+ EXEMPT = 289,
+ FAILED_OPER_NOTICE = 290,
+ IRCD_FLAGS = 291,
+ FLATTEN_LINKS = 292,
+ GECOS = 293,
+ GENERAL = 294,
+ GLINE = 295,
+ GLINE_DURATION = 296,
+ GLINE_ENABLE = 297,
+ GLINE_EXEMPT = 298,
+ GLINE_REQUEST_DURATION = 299,
+ GLINE_MIN_CIDR = 300,
+ GLINE_MIN_CIDR6 = 301,
+ GLOBAL_KILL = 302,
+ IRCD_AUTH = 303,
+ NEED_IDENT = 304,
+ HAVENT_READ_CONF = 305,
+ HIDDEN = 306,
+ HIDDEN_NAME = 307,
+ HIDE_SERVER_IPS = 308,
+ HIDE_SERVERS = 309,
+ HIDE_SPOOF_IPS = 310,
+ HOST = 311,
+ HUB = 312,
+ HUB_MASK = 313,
+ IGNORE_BOGUS_TS = 314,
+ INVISIBLE_ON_CONNECT = 315,
+ IP = 316,
+ KILL = 317,
+ KILL_CHASE_TIME_LIMIT = 318,
+ KLINE = 319,
+ KLINE_EXEMPT = 320,
+ KNOCK_DELAY = 321,
+ KNOCK_DELAY_CHANNEL = 322,
+ LEAF_MASK = 323,
+ LINKS_DELAY = 324,
+ LISTEN = 325,
+ T_LOG = 326,
+ MAX_ACCEPT = 327,
+ MAX_BANS = 328,
+ MAX_CHANS_PER_OPER = 329,
+ MAX_CHANS_PER_USER = 330,
+ MAX_GLOBAL = 331,
+ MAX_IDENT = 332,
+ MAX_LOCAL = 333,
+ MAX_NICK_CHANGES = 334,
+ MAX_NICK_TIME = 335,
+ MAX_NUMBER = 336,
+ MAX_TARGETS = 337,
+ MAX_WATCH = 338,
+ MESSAGE_LOCALE = 339,
+ MIN_NONWILDCARD = 340,
+ MIN_NONWILDCARD_SIMPLE = 341,
+ MODULE = 342,
+ MODULES = 343,
+ NAME = 344,
+ NEED_PASSWORD = 345,
+ NETWORK_DESC = 346,
+ NETWORK_NAME = 347,
+ NICK = 348,
+ NICK_CHANGES = 349,
+ NO_CREATE_ON_SPLIT = 350,
+ NO_JOIN_ON_SPLIT = 351,
+ NO_OPER_FLOOD = 352,
+ NO_TILDE = 353,
+ NUMBER = 354,
+ NUMBER_PER_CIDR = 355,
+ NUMBER_PER_IP = 356,
+ OPERATOR = 357,
+ OPERS_BYPASS_CALLERID = 358,
+ OPER_ONLY_UMODES = 359,
+ OPER_PASS_RESV = 360,
+ OPER_SPY_T = 361,
+ OPER_UMODES = 362,
+ JOIN_FLOOD_COUNT = 363,
+ JOIN_FLOOD_TIME = 364,
+ PACE_WAIT = 365,
+ PACE_WAIT_SIMPLE = 366,
+ PASSWORD = 367,
+ PATH = 368,
+ PING_COOKIE = 369,
+ PING_TIME = 370,
+ PING_WARNING = 371,
+ PORT = 372,
+ QSTRING = 373,
+ QUIET_ON_BAN = 374,
+ REASON = 375,
+ REDIRPORT = 376,
+ REDIRSERV = 377,
+ REGEX_T = 378,
+ REHASH = 379,
+ REMOTE = 380,
+ REMOTEBAN = 381,
+ RESTRICT_CHANNELS = 382,
+ RSA_PRIVATE_KEY_FILE = 383,
+ RSA_PUBLIC_KEY_FILE = 384,
+ SSL_CERTIFICATE_FILE = 385,
+ SSL_DH_PARAM_FILE = 386,
+ T_SSL_CLIENT_METHOD = 387,
+ T_SSL_SERVER_METHOD = 388,
+ T_SSLV3 = 389,
+ T_TLSV1 = 390,
+ RESV = 391,
+ RESV_EXEMPT = 392,
+ SECONDS = 393,
+ MINUTES = 394,
+ HOURS = 395,
+ DAYS = 396,
+ WEEKS = 397,
+ SENDQ = 398,
+ SEND_PASSWORD = 399,
+ SERVERHIDE = 400,
+ SERVERINFO = 401,
+ IRCD_SID = 402,
+ TKLINE_EXPIRE_NOTICES = 403,
+ T_SHARED = 404,
+ T_CLUSTER = 405,
+ TYPE = 406,
+ SHORT_MOTD = 407,
+ SPOOF = 408,
+ SPOOF_NOTICE = 409,
+ STATS_E_DISABLED = 410,
+ STATS_I_OPER_ONLY = 411,
+ STATS_K_OPER_ONLY = 412,
+ STATS_O_OPER_ONLY = 413,
+ STATS_P_OPER_ONLY = 414,
+ TBOOL = 415,
+ TMASKED = 416,
+ TS_MAX_DELTA = 417,
+ TS_WARN_DELTA = 418,
+ TWODOTS = 419,
+ T_ALL = 420,
+ T_BOTS = 421,
+ T_SOFTCALLERID = 422,
+ T_CALLERID = 423,
+ T_CCONN = 424,
+ T_CCONN_FULL = 425,
+ T_SSL_CIPHER_LIST = 426,
+ T_DEAF = 427,
+ T_DEBUG = 428,
+ T_DLINE = 429,
+ T_EXTERNAL = 430,
+ T_FULL = 431,
+ T_INVISIBLE = 432,
+ T_IPV4 = 433,
+ T_IPV6 = 434,
+ T_LOCOPS = 435,
+ T_MAX_CLIENTS = 436,
+ T_NCHANGE = 437,
+ T_OPERWALL = 438,
+ T_RECVQ = 439,
+ T_REJ = 440,
+ T_SERVER = 441,
+ T_SERVNOTICE = 442,
+ T_SET = 443,
+ T_SKILL = 444,
+ T_SPY = 445,
+ T_SSL = 446,
+ T_UMODES = 447,
+ T_UNAUTH = 448,
+ T_UNDLINE = 449,
+ T_UNLIMITED = 450,
+ T_UNRESV = 451,
+ T_UNXLINE = 452,
+ T_GLOBOPS = 453,
+ T_WALLOP = 454,
+ T_RESTART = 455,
+ T_SERVICE = 456,
+ T_SERVICES_NAME = 457,
+ THROTTLE_TIME = 458,
+ TRUE_NO_OPER_FLOOD = 459,
+ UNKLINE = 460,
+ USER = 461,
+ USE_EGD = 462,
+ USE_LOGGING = 463,
+ VHOST = 464,
+ VHOST6 = 465,
+ XLINE = 466,
+ WARN_NO_NLINE = 467,
+ T_SIZE = 468,
+ T_FILE = 469
+ };
+#endif
+/* Tokens. */
+#define ACCEPT_PASSWORD 258
+#define ADMIN 259
+#define AFTYPE 260
+#define ANTI_NICK_FLOOD 261
+#define ANTI_SPAM_EXIT_MESSAGE_TIME 262
+#define AUTOCONN 263
+#define BYTES 264
+#define KBYTES 265
+#define MBYTES 266
+#define CALLER_ID_WAIT 267
+#define CAN_FLOOD 268
+#define CHANNEL 269
+#define CIDR_BITLEN_IPV4 270
+#define CIDR_BITLEN_IPV6 271
+#define CLASS 272
+#define CONNECT 273
+#define CONNECTFREQ 274
+#define DEFAULT_FLOODCOUNT 275
+#define DEFAULT_SPLIT_SERVER_COUNT 276
+#define DEFAULT_SPLIT_USER_COUNT 277
+#define DENY 278
+#define DESCRIPTION 279
+#define DIE 280
+#define DISABLE_AUTH 281
+#define DISABLE_FAKE_CHANNELS 282
+#define DISABLE_REMOTE_COMMANDS 283
+#define DOTS_IN_IDENT 284
+#define EGDPOOL_PATH 285
+#define EMAIL 286
+#define ENCRYPTED 287
+#define EXCEED_LIMIT 288
+#define EXEMPT 289
+#define FAILED_OPER_NOTICE 290
+#define IRCD_FLAGS 291
+#define FLATTEN_LINKS 292
+#define GECOS 293
+#define GENERAL 294
+#define GLINE 295
+#define GLINE_DURATION 296
+#define GLINE_ENABLE 297
+#define GLINE_EXEMPT 298
+#define GLINE_REQUEST_DURATION 299
+#define GLINE_MIN_CIDR 300
+#define GLINE_MIN_CIDR6 301
+#define GLOBAL_KILL 302
+#define IRCD_AUTH 303
+#define NEED_IDENT 304
+#define HAVENT_READ_CONF 305
+#define HIDDEN 306
+#define HIDDEN_NAME 307
+#define HIDE_SERVER_IPS 308
+#define HIDE_SERVERS 309
+#define HIDE_SPOOF_IPS 310
+#define HOST 311
+#define HUB 312
+#define HUB_MASK 313
+#define IGNORE_BOGUS_TS 314
+#define INVISIBLE_ON_CONNECT 315
+#define IP 316
+#define KILL 317
+#define KILL_CHASE_TIME_LIMIT 318
+#define KLINE 319
+#define KLINE_EXEMPT 320
+#define KNOCK_DELAY 321
+#define KNOCK_DELAY_CHANNEL 322
+#define LEAF_MASK 323
+#define LINKS_DELAY 324
+#define LISTEN 325
+#define T_LOG 326
+#define MAX_ACCEPT 327
+#define MAX_BANS 328
+#define MAX_CHANS_PER_OPER 329
+#define MAX_CHANS_PER_USER 330
+#define MAX_GLOBAL 331
+#define MAX_IDENT 332
+#define MAX_LOCAL 333
+#define MAX_NICK_CHANGES 334
+#define MAX_NICK_TIME 335
+#define MAX_NUMBER 336
+#define MAX_TARGETS 337
+#define MAX_WATCH 338
+#define MESSAGE_LOCALE 339
+#define MIN_NONWILDCARD 340
+#define MIN_NONWILDCARD_SIMPLE 341
+#define MODULE 342
+#define MODULES 343
+#define NAME 344
+#define NEED_PASSWORD 345
+#define NETWORK_DESC 346
+#define NETWORK_NAME 347
+#define NICK 348
+#define NICK_CHANGES 349
+#define NO_CREATE_ON_SPLIT 350
+#define NO_JOIN_ON_SPLIT 351
+#define NO_OPER_FLOOD 352
+#define NO_TILDE 353
+#define NUMBER 354
+#define NUMBER_PER_CIDR 355
+#define NUMBER_PER_IP 356
+#define OPERATOR 357
+#define OPERS_BYPASS_CALLERID 358
+#define OPER_ONLY_UMODES 359
+#define OPER_PASS_RESV 360
+#define OPER_SPY_T 361
+#define OPER_UMODES 362
+#define JOIN_FLOOD_COUNT 363
+#define JOIN_FLOOD_TIME 364
+#define PACE_WAIT 365
+#define PACE_WAIT_SIMPLE 366
+#define PASSWORD 367
+#define PATH 368
+#define PING_COOKIE 369
+#define PING_TIME 370
+#define PING_WARNING 371
+#define PORT 372
+#define QSTRING 373
+#define QUIET_ON_BAN 374
+#define REASON 375
+#define REDIRPORT 376
+#define REDIRSERV 377
+#define REGEX_T 378
+#define REHASH 379
+#define REMOTE 380
+#define REMOTEBAN 381
+#define RESTRICT_CHANNELS 382
+#define RSA_PRIVATE_KEY_FILE 383
+#define RSA_PUBLIC_KEY_FILE 384
+#define SSL_CERTIFICATE_FILE 385
+#define SSL_DH_PARAM_FILE 386
+#define T_SSL_CLIENT_METHOD 387
+#define T_SSL_SERVER_METHOD 388
+#define T_SSLV3 389
+#define T_TLSV1 390
+#define RESV 391
+#define RESV_EXEMPT 392
+#define SECONDS 393
+#define MINUTES 394
+#define HOURS 395
+#define DAYS 396
+#define WEEKS 397
+#define SENDQ 398
+#define SEND_PASSWORD 399
+#define SERVERHIDE 400
+#define SERVERINFO 401
+#define IRCD_SID 402
+#define TKLINE_EXPIRE_NOTICES 403
+#define T_SHARED 404
+#define T_CLUSTER 405
+#define TYPE 406
+#define SHORT_MOTD 407
+#define SPOOF 408
+#define SPOOF_NOTICE 409
+#define STATS_E_DISABLED 410
+#define STATS_I_OPER_ONLY 411
+#define STATS_K_OPER_ONLY 412
+#define STATS_O_OPER_ONLY 413
+#define STATS_P_OPER_ONLY 414
+#define TBOOL 415
+#define TMASKED 416
+#define TS_MAX_DELTA 417
+#define TS_WARN_DELTA 418
+#define TWODOTS 419
+#define T_ALL 420
+#define T_BOTS 421
+#define T_SOFTCALLERID 422
+#define T_CALLERID 423
+#define T_CCONN 424
+#define T_CCONN_FULL 425
+#define T_SSL_CIPHER_LIST 426
+#define T_DEAF 427
+#define T_DEBUG 428
+#define T_DLINE 429
+#define T_EXTERNAL 430
+#define T_FULL 431
+#define T_INVISIBLE 432
+#define T_IPV4 433
+#define T_IPV6 434
+#define T_LOCOPS 435
+#define T_MAX_CLIENTS 436
+#define T_NCHANGE 437
+#define T_OPERWALL 438
+#define T_RECVQ 439
+#define T_REJ 440
+#define T_SERVER 441
+#define T_SERVNOTICE 442
+#define T_SET 443
+#define T_SKILL 444
+#define T_SPY 445
+#define T_SSL 446
+#define T_UMODES 447
+#define T_UNAUTH 448
+#define T_UNDLINE 449
+#define T_UNLIMITED 450
+#define T_UNRESV 451
+#define T_UNXLINE 452
+#define T_GLOBOPS 453
+#define T_WALLOP 454
+#define T_RESTART 455
+#define T_SERVICE 456
+#define T_SERVICES_NAME 457
+#define THROTTLE_TIME 458
+#define TRUE_NO_OPER_FLOOD 459
+#define UNKLINE 460
+#define USER 461
+#define USE_EGD 462
+#define USE_LOGGING 463
+#define VHOST 464
+#define VHOST6 465
+#define XLINE 466
+#define WARN_NO_NLINE 467
+#define T_SIZE 468
+#define T_FILE 469
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+/* Line 350 of yacc.c */
+#line 110 "conf_parser.y"
+
+ int number;
+ char *string;
+
+
+/* Line 350 of yacc.c */
+#line 630 "conf_parser.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+extern YYSTYPE yylval;
+
+#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 */
+
+#endif /* !YY_Y_TAB_H */
+
+/* Copy the second part of user declarations. */
+
+/* Line 353 of yacc.c */
+#line 658 "conf_parser.c"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+ int yyi;
+#endif
+{
+ return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined 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
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# 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 && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack_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
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+# else
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 2
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 1206
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 220
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 283
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 627
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 1228
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 469
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 219, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 215,
+ 2, 218, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 217, 2, 216, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
+ 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
+ 39, 41, 43, 45, 47, 50, 53, 54, 56, 59,
+ 63, 67, 71, 75, 79, 80, 82, 85, 89, 93,
+ 97, 103, 106, 108, 110, 112, 115, 120, 125, 131,
+ 134, 136, 138, 140, 142, 144, 146, 148, 150, 152,
+ 154, 156, 158, 160, 162, 164, 166, 169, 174, 179,
+ 183, 185, 187, 189, 193, 195, 197, 199, 204, 209,
+ 214, 219, 224, 229, 234, 239, 244, 249, 254, 259,
+ 264, 270, 273, 275, 277, 279, 281, 284, 289, 294,
+ 299, 305, 308, 310, 312, 314, 317, 322, 323, 330,
+ 333, 335, 337, 339, 341, 344, 349, 354, 359, 360,
+ 366, 370, 372, 374, 376, 378, 380, 382, 384, 386,
+ 387, 394, 397, 399, 401, 403, 405, 407, 409, 411,
+ 413, 415, 418, 423, 428, 433, 438, 443, 448, 449,
+ 455, 459, 461, 463, 465, 467, 469, 471, 473, 475,
+ 477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
+ 497, 499, 501, 502, 508, 512, 514, 516, 518, 520,
+ 522, 524, 526, 528, 530, 532, 534, 536, 538, 540,
+ 542, 544, 546, 548, 550, 552, 553, 560, 563, 565,
+ 567, 569, 571, 573, 575, 577, 579, 581, 583, 585,
+ 587, 589, 591, 593, 596, 601, 606, 611, 616, 621,
+ 626, 631, 636, 641, 646, 651, 656, 661, 666, 667,
+ 674, 675, 681, 685, 687, 689, 691, 693, 696, 698,
+ 700, 702, 704, 706, 709, 710, 716, 720, 722, 724,
+ 728, 733, 738, 739, 746, 749, 751, 753, 755, 757,
+ 759, 761, 763, 765, 767, 770, 775, 780, 785, 790,
+ 791, 797, 801, 803, 805, 807, 809, 811, 813, 815,
+ 817, 819, 821, 826, 831, 836, 837, 844, 847, 849,
+ 851, 853, 855, 858, 863, 868, 873, 879, 882, 884,
+ 886, 888, 893, 894, 901, 904, 906, 908, 910, 912,
+ 915, 920, 925, 926, 932, 936, 938, 940, 942, 944,
+ 946, 948, 950, 952, 954, 956, 958, 959, 966, 969,
+ 971, 973, 975, 978, 983, 984, 990, 994, 996, 998,
+ 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1017,
+ 1024, 1027, 1029, 1031, 1033, 1035, 1037, 1039, 1041, 1043,
+ 1045, 1047, 1049, 1051, 1053, 1055, 1058, 1063, 1068, 1073,
+ 1078, 1083, 1088, 1093, 1098, 1099, 1105, 1109, 1111, 1113,
+ 1115, 1120, 1125, 1130, 1135, 1140, 1141, 1148, 1149, 1155,
+ 1159, 1161, 1163, 1166, 1168, 1170, 1172, 1174, 1176, 1181,
+ 1186, 1187, 1194, 1197, 1199, 1201, 1203, 1205, 1210, 1215,
+ 1221, 1224, 1226, 1228, 1230, 1235, 1236, 1243, 1244, 1250,
+ 1254, 1256, 1258, 1261, 1263, 1265, 1267, 1269, 1271, 1276,
+ 1281, 1287, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304,
+ 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324,
+ 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1342, 1344,
+ 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364,
+ 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382, 1384,
+ 1386, 1388, 1390, 1392, 1397, 1402, 1407, 1412, 1417, 1422,
+ 1427, 1432, 1437, 1442, 1447, 1452, 1457, 1462, 1467, 1472,
+ 1477, 1482, 1487, 1492, 1497, 1502, 1507, 1512, 1517, 1522,
+ 1527, 1532, 1537, 1542, 1547, 1552, 1557, 1562, 1567, 1572,
+ 1577, 1582, 1587, 1592, 1597, 1602, 1607, 1612, 1617, 1622,
+ 1623, 1629, 1633, 1635, 1637, 1639, 1641, 1643, 1645, 1647,
+ 1649, 1651, 1653, 1655, 1657, 1659, 1661, 1663, 1665, 1667,
+ 1669, 1671, 1673, 1675, 1676, 1682, 1686, 1688, 1690, 1692,
+ 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712,
+ 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1733, 1738,
+ 1743, 1749, 1752, 1754, 1756, 1758, 1760, 1762, 1764, 1766,
+ 1768, 1770, 1772, 1774, 1776, 1778, 1780, 1782, 1784, 1789,
+ 1794, 1799, 1804, 1809, 1814, 1819, 1824, 1829, 1834, 1839,
+ 1844, 1849, 1854, 1860, 1863, 1865, 1867, 1869, 1871, 1873,
+ 1875, 1877, 1879, 1884, 1889, 1894, 1899, 1904
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int16 yyrhs[] =
+{
+ 221, 0, -1, -1, 221, 222, -1, 254, -1, 260,
+ -1, 274, -1, 477, -1, 292, -1, 310, -1, 324,
+ -1, 232, -1, 494, -1, 339, -1, 346, -1, 350,
+ -1, 360, -1, 369, -1, 389, -1, 399, -1, 405,
+ -1, 419, -1, 409, -1, 227, -1, 1, 215, -1,
+ 1, 216, -1, -1, 224, -1, 99, 223, -1, 99,
+ 138, 223, -1, 99, 139, 223, -1, 99, 140, 223,
+ -1, 99, 141, 223, -1, 99, 142, 223, -1, -1,
+ 226, -1, 99, 225, -1, 99, 9, 225, -1, 99,
+ 10, 225, -1, 99, 11, 225, -1, 88, 217, 228,
+ 216, 215, -1, 228, 229, -1, 229, -1, 230, -1,
+ 231, -1, 1, 215, -1, 87, 218, 118, 215, -1,
+ 113, 218, 118, 215, -1, 146, 217, 233, 216, 215,
+ -1, 233, 234, -1, 234, -1, 245, -1, 250, -1,
+ 253, -1, 247, -1, 248, -1, 249, -1, 252, -1,
+ 243, -1, 242, -1, 251, -1, 246, -1, 241, -1,
+ 235, -1, 236, -1, 244, -1, 1, 215, -1, 132,
+ 218, 237, 215, -1, 133, 218, 239, 215, -1, 237,
+ 219, 238, -1, 238, -1, 134, -1, 135, -1, 239,
+ 219, 240, -1, 240, -1, 134, -1, 135, -1, 130,
+ 218, 118, 215, -1, 128, 218, 118, 215, -1, 131,
+ 218, 118, 215, -1, 171, 218, 118, 215, -1, 89,
+ 218, 118, 215, -1, 147, 218, 118, 215, -1, 24,
+ 218, 118, 215, -1, 92, 218, 118, 215, -1, 91,
+ 218, 118, 215, -1, 209, 218, 118, 215, -1, 210,
+ 218, 118, 215, -1, 181, 218, 99, 215, -1, 57,
+ 218, 160, 215, -1, 4, 217, 255, 216, 215, -1,
+ 255, 256, -1, 256, -1, 257, -1, 259, -1, 258,
+ -1, 1, 215, -1, 89, 218, 118, 215, -1, 31,
+ 218, 118, 215, -1, 24, 218, 118, 215, -1, 71,
+ 217, 261, 216, 215, -1, 261, 262, -1, 262, -1,
+ 263, -1, 264, -1, 1, 215, -1, 208, 218, 160,
+ 215, -1, -1, 265, 214, 217, 266, 216, 215, -1,
+ 266, 267, -1, 267, -1, 268, -1, 270, -1, 269,
+ -1, 1, 215, -1, 89, 218, 118, 215, -1, 213,
+ 218, 226, 215, -1, 213, 218, 195, 215, -1, -1,
+ 151, 271, 218, 272, 215, -1, 272, 219, 273, -1,
+ 273, -1, 206, -1, 102, -1, 40, -1, 174, -1,
+ 64, -1, 62, -1, 173, -1, -1, 102, 275, 217,
+ 276, 216, 215, -1, 276, 277, -1, 277, -1, 278,
+ -1, 279, -1, 280, -1, 284, -1, 283, -1, 281,
+ -1, 282, -1, 288, -1, 1, 215, -1, 89, 218,
+ 118, 215, -1, 206, 218, 118, 215, -1, 112, 218,
+ 118, 215, -1, 32, 218, 160, 215, -1, 129, 218,
+ 118, 215, -1, 17, 218, 118, 215, -1, -1, 192,
+ 285, 218, 286, 215, -1, 286, 219, 287, -1, 287,
+ -1, 166, -1, 169, -1, 170, -1, 172, -1, 173,
+ -1, 176, -1, 51, -1, 189, -1, 182, -1, 185,
+ -1, 193, -1, 190, -1, 175, -1, 183, -1, 187,
+ -1, 177, -1, 199, -1, 167, -1, 168, -1, 180,
+ -1, -1, 36, 289, 218, 290, 215, -1, 290, 219,
+ 291, -1, 291, -1, 47, -1, 125, -1, 64, -1,
+ 205, -1, 174, -1, 194, -1, 211, -1, 40, -1,
+ 25, -1, 200, -1, 124, -1, 4, -1, 94, -1,
+ 183, -1, 198, -1, 106, -1, 126, -1, 188, -1,
+ 87, -1, -1, 17, 293, 217, 294, 216, 215, -1,
+ 294, 295, -1, 295, -1, 296, -1, 307, -1, 308,
+ -1, 297, -1, 298, -1, 309, -1, 299, -1, 300,
+ -1, 301, -1, 302, -1, 303, -1, 304, -1, 305,
+ -1, 306, -1, 1, 215, -1, 89, 218, 118, 215,
+ -1, 115, 218, 224, 215, -1, 116, 218, 224, 215,
+ -1, 101, 218, 99, 215, -1, 19, 218, 224, 215,
+ -1, 81, 218, 99, 215, -1, 76, 218, 99, 215,
+ -1, 78, 218, 99, 215, -1, 77, 218, 99, 215,
+ -1, 143, 218, 226, 215, -1, 184, 218, 226, 215,
+ -1, 15, 218, 99, 215, -1, 16, 218, 99, 215,
+ -1, 100, 218, 99, 215, -1, -1, 70, 311, 217,
+ 316, 216, 215, -1, -1, 36, 313, 218, 314, 215,
+ -1, 314, 219, 315, -1, 315, -1, 191, -1, 51,
+ -1, 186, -1, 316, 317, -1, 317, -1, 318, -1,
+ 312, -1, 322, -1, 323, -1, 1, 215, -1, -1,
+ 117, 218, 320, 319, 215, -1, 320, 219, 321, -1,
+ 321, -1, 99, -1, 99, 164, 99, -1, 61, 218,
+ 118, 215, -1, 56, 218, 118, 215, -1, -1, 48,
+ 325, 217, 326, 216, 215, -1, 326, 327, -1, 327,
+ -1, 328, -1, 329, -1, 330, -1, 332, -1, 336,
+ -1, 337, -1, 338, -1, 331, -1, 1, 215, -1,
+ 206, 218, 118, 215, -1, 112, 218, 118, 215, -1,
+ 17, 218, 118, 215, -1, 32, 218, 160, 215, -1,
+ -1, 36, 333, 218, 334, 215, -1, 334, 219, 335,
+ -1, 335, -1, 154, -1, 33, -1, 65, -1, 49,
+ -1, 13, -1, 98, -1, 43, -1, 137, -1, 90,
+ -1, 153, 218, 118, 215, -1, 122, 218, 118, 215,
+ -1, 121, 218, 99, 215, -1, -1, 136, 340, 217,
+ 341, 216, 215, -1, 341, 342, -1, 342, -1, 343,
+ -1, 344, -1, 345, -1, 1, 215, -1, 120, 218,
+ 118, 215, -1, 14, 218, 118, 215, -1, 93, 218,
+ 118, 215, -1, 201, 217, 347, 216, 215, -1, 347,
+ 348, -1, 348, -1, 349, -1, 1, -1, 89, 218,
+ 118, 215, -1, -1, 149, 351, 217, 352, 216, 215,
+ -1, 352, 353, -1, 353, -1, 354, -1, 355, -1,
+ 356, -1, 1, 215, -1, 89, 218, 118, 215, -1,
+ 206, 218, 118, 215, -1, -1, 151, 357, 218, 358,
+ 215, -1, 358, 219, 359, -1, 359, -1, 64, -1,
+ 205, -1, 174, -1, 194, -1, 211, -1, 197, -1,
+ 136, -1, 196, -1, 180, -1, 165, -1, -1, 150,
+ 361, 217, 362, 216, 215, -1, 362, 363, -1, 363,
+ -1, 364, -1, 365, -1, 1, 215, -1, 89, 218,
+ 118, 215, -1, -1, 151, 366, 218, 367, 215, -1,
+ 367, 219, 368, -1, 368, -1, 64, -1, 205, -1,
+ 174, -1, 194, -1, 211, -1, 197, -1, 136, -1,
+ 196, -1, 180, -1, 165, -1, -1, 18, 370, 217,
+ 371, 216, 215, -1, 371, 372, -1, 372, -1, 373,
+ -1, 374, -1, 375, -1, 376, -1, 377, -1, 379,
+ -1, 378, -1, 388, -1, 380, -1, 385, -1, 386,
+ -1, 387, -1, 384, -1, 1, 215, -1, 89, 218,
+ 118, 215, -1, 56, 218, 118, 215, -1, 209, 218,
+ 118, 215, -1, 144, 218, 118, 215, -1, 3, 218,
+ 118, 215, -1, 117, 218, 99, 215, -1, 5, 218,
+ 178, 215, -1, 5, 218, 179, 215, -1, -1, 36,
+ 381, 218, 382, 215, -1, 382, 219, 383, -1, 383,
+ -1, 8, -1, 191, -1, 32, 218, 160, 215, -1,
+ 58, 218, 118, 215, -1, 68, 218, 118, 215, -1,
+ 17, 218, 118, 215, -1, 171, 218, 118, 215, -1,
+ -1, 62, 390, 217, 395, 216, 215, -1, -1, 151,
+ 392, 218, 393, 215, -1, 393, 219, 394, -1, 394,
+ -1, 123, -1, 395, 396, -1, 396, -1, 397, -1,
+ 398, -1, 391, -1, 1, -1, 206, 218, 118, 215,
+ -1, 120, 218, 118, 215, -1, -1, 23, 400, 217,
+ 401, 216, 215, -1, 401, 402, -1, 402, -1, 403,
+ -1, 404, -1, 1, -1, 61, 218, 118, 215, -1,
+ 120, 218, 118, 215, -1, 34, 217, 406, 216, 215,
+ -1, 406, 407, -1, 407, -1, 408, -1, 1, -1,
+ 61, 218, 118, 215, -1, -1, 38, 410, 217, 415,
+ 216, 215, -1, -1, 151, 412, 218, 413, 215, -1,
+ 413, 219, 414, -1, 414, -1, 123, -1, 415, 416,
+ -1, 416, -1, 417, -1, 418, -1, 411, -1, 1,
+ -1, 89, 218, 118, 215, -1, 120, 218, 118, 215,
+ -1, 39, 217, 420, 216, 215, -1, 420, 421, -1,
+ 421, -1, 430, -1, 431, -1, 433, -1, 434, -1,
+ 435, -1, 436, -1, 437, -1, 438, -1, 439, -1,
+ 440, -1, 429, -1, 442, -1, 443, -1, 458, -1,
+ 445, -1, 447, -1, 449, -1, 448, -1, 452, -1,
+ 446, -1, 453, -1, 454, -1, 455, -1, 456, -1,
+ 457, -1, 470, -1, 459, -1, 460, -1, 461, -1,
+ 466, -1, 450, -1, 451, -1, 476, -1, 474, -1,
+ 475, -1, 432, -1, 465, -1, 441, -1, 463, -1,
+ 464, -1, 428, -1, 423, -1, 424, -1, 425, -1,
+ 426, -1, 427, -1, 444, -1, 422, -1, 462, -1,
+ 1, -1, 83, 218, 99, 215, -1, 42, 218, 160,
+ 215, -1, 41, 218, 224, 215, -1, 44, 218, 224,
+ 215, -1, 45, 218, 99, 215, -1, 46, 218, 99,
+ 215, -1, 148, 218, 160, 215, -1, 63, 218, 224,
+ 215, -1, 55, 218, 160, 215, -1, 59, 218, 160,
+ 215, -1, 28, 218, 160, 215, -1, 35, 218, 160,
+ 215, -1, 6, 218, 160, 215, -1, 80, 218, 224,
+ 215, -1, 79, 218, 99, 215, -1, 72, 218, 99,
+ 215, -1, 7, 218, 224, 215, -1, 163, 218, 224,
+ 215, -1, 162, 218, 224, 215, -1, 50, 218, 99,
+ 215, -1, 60, 218, 160, 215, -1, 212, 218, 160,
+ 215, -1, 155, 218, 160, 215, -1, 158, 218, 160,
+ 215, -1, 159, 218, 160, 215, -1, 157, 218, 160,
+ 215, -1, 157, 218, 161, 215, -1, 156, 218, 160,
+ 215, -1, 156, 218, 161, 215, -1, 110, 218, 224,
+ 215, -1, 12, 218, 224, 215, -1, 103, 218, 160,
+ 215, -1, 111, 218, 224, 215, -1, 152, 218, 160,
+ 215, -1, 97, 218, 160, 215, -1, 204, 218, 160,
+ 215, -1, 105, 218, 160, 215, -1, 84, 218, 118,
+ 215, -1, 29, 218, 99, 215, -1, 82, 218, 99,
+ 215, -1, 207, 218, 160, 215, -1, 30, 218, 118,
+ 215, -1, 202, 218, 118, 215, -1, 114, 218, 160,
+ 215, -1, 26, 218, 160, 215, -1, 203, 218, 224,
+ 215, -1, -1, 107, 467, 218, 468, 215, -1, 468,
+ 219, 469, -1, 469, -1, 166, -1, 169, -1, 170,
+ -1, 172, -1, 173, -1, 176, -1, 51, -1, 189,
+ -1, 182, -1, 185, -1, 193, -1, 190, -1, 175,
+ -1, 183, -1, 187, -1, 177, -1, 199, -1, 167,
+ -1, 168, -1, 180, -1, -1, 104, 471, 218, 472,
+ 215, -1, 472, 219, 473, -1, 473, -1, 166, -1,
+ 169, -1, 170, -1, 172, -1, 173, -1, 176, -1,
+ 189, -1, 51, -1, 182, -1, 185, -1, 193, -1,
+ 190, -1, 175, -1, 183, -1, 187, -1, 177, -1,
+ 199, -1, 167, -1, 168, -1, 180, -1, 85, 218,
+ 99, 215, -1, 86, 218, 99, 215, -1, 20, 218,
+ 99, 215, -1, 14, 217, 478, 216, 215, -1, 478,
+ 479, -1, 479, -1, 487, -1, 482, -1, 483, -1,
+ 484, -1, 485, -1, 486, -1, 488, -1, 489, -1,
+ 490, -1, 481, -1, 491, -1, 492, -1, 493, -1,
+ 480, -1, 1, -1, 27, 218, 160, 215, -1, 127,
+ 218, 160, 215, -1, 66, 218, 224, 215, -1, 67,
+ 218, 224, 215, -1, 75, 218, 99, 215, -1, 74,
+ 218, 99, 215, -1, 119, 218, 160, 215, -1, 73,
+ 218, 99, 215, -1, 22, 218, 99, 215, -1, 21,
+ 218, 99, 215, -1, 95, 218, 160, 215, -1, 96,
+ 218, 160, 215, -1, 108, 218, 99, 215, -1, 109,
+ 218, 224, 215, -1, 145, 217, 495, 216, 215, -1,
+ 495, 496, -1, 496, -1, 497, -1, 498, -1, 500,
+ -1, 501, -1, 499, -1, 502, -1, 1, -1, 37,
+ 218, 160, 215, -1, 54, 218, 160, 215, -1, 52,
+ 218, 118, 215, -1, 69, 218, 224, 215, -1, 51,
+ 218, 160, 215, -1, 53, 218, 160, 215, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 330, 330, 331, 334, 335, 336, 337, 338, 339,
+ 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
+ 350, 351, 352, 353, 354, 355, 359, 359, 360, 364,
+ 368, 372, 376, 380, 386, 386, 387, 388, 389, 390,
+ 397, 400, 400, 401, 401, 401, 403, 409, 416, 418,
+ 418, 419, 419, 420, 420, 421, 421, 422, 422, 423,
+ 423, 424, 424, 425, 425, 426, 427, 430, 431, 433,
+ 433, 434, 440, 448, 448, 449, 455, 463, 502, 561,
+ 589, 597, 612, 627, 636, 650, 659, 687, 717, 740,
+ 749, 751, 751, 752, 752, 753, 753, 755, 764, 773,
+ 785, 786, 786, 788, 788, 789, 791, 798, 798, 808,
+ 809, 811, 811, 812, 812, 814, 819, 822, 828, 827,
+ 833, 833, 834, 838, 842, 846, 850, 854, 858, 869,
+ 868, 966, 966, 967, 967, 967, 968, 968, 968, 969,
+ 969, 969, 971, 980, 1017, 1029, 1040, 1082, 1092, 1091,
+ 1097, 1097, 1098, 1102, 1106, 1110, 1114, 1118, 1122, 1126,
+ 1130, 1134, 1138, 1142, 1146, 1150, 1154, 1158, 1162, 1166,
+ 1170, 1174, 1181, 1180, 1186, 1186, 1187, 1191, 1195, 1199,
+ 1203, 1207, 1211, 1215, 1219, 1223, 1227, 1231, 1235, 1239,
+ 1243, 1247, 1251, 1255, 1259, 1270, 1269, 1319, 1319, 1320,
+ 1321, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
+ 1330, 1331, 1331, 1332, 1334, 1343, 1349, 1355, 1361, 1367,
+ 1373, 1379, 1385, 1391, 1397, 1404, 1410, 1416, 1426, 1425,
+ 1442, 1441, 1446, 1446, 1447, 1451, 1455, 1463, 1463, 1464,
+ 1464, 1464, 1464, 1464, 1466, 1466, 1468, 1468, 1470, 1484,
+ 1504, 1513, 1526, 1525, 1594, 1594, 1595, 1595, 1595, 1595,
+ 1596, 1596, 1596, 1597, 1597, 1599, 1634, 1647, 1656, 1668,
+ 1667, 1671, 1671, 1672, 1676, 1680, 1684, 1688, 1692, 1696,
+ 1700, 1704, 1710, 1729, 1739, 1753, 1752, 1768, 1768, 1769,
+ 1769, 1769, 1769, 1771, 1780, 1795, 1808, 1810, 1810, 1811,
+ 1811, 1813, 1829, 1828, 1844, 1844, 1845, 1845, 1845, 1845,
+ 1847, 1856, 1879, 1878, 1884, 1884, 1885, 1889, 1893, 1897,
+ 1901, 1905, 1909, 1913, 1917, 1921, 1931, 1930, 1947, 1947,
+ 1948, 1948, 1948, 1950, 1957, 1956, 1962, 1962, 1963, 1967,
+ 1971, 1975, 1979, 1983, 1987, 1991, 1995, 1999, 2009, 2008,
+ 2059, 2059, 2060, 2060, 2060, 2061, 2061, 2062, 2062, 2062,
+ 2063, 2063, 2063, 2064, 2064, 2065, 2067, 2076, 2085, 2111,
+ 2129, 2147, 2153, 2157, 2166, 2165, 2169, 2169, 2170, 2174,
+ 2180, 2191, 2202, 2213, 2222, 2241, 2240, 2306, 2305, 2309,
+ 2309, 2310, 2316, 2316, 2317, 2317, 2317, 2317, 2319, 2338,
+ 2348, 2347, 2372, 2372, 2373, 2373, 2373, 2375, 2381, 2390,
+ 2392, 2392, 2393, 2393, 2395, 2414, 2413, 2461, 2460, 2464,
+ 2464, 2465, 2471, 2471, 2472, 2472, 2472, 2472, 2474, 2480,
+ 2489, 2492, 2492, 2493, 2493, 2494, 2494, 2495, 2495, 2496,
+ 2496, 2497, 2497, 2498, 2499, 2500, 2500, 2501, 2501, 2502,
+ 2502, 2503, 2503, 2504, 2504, 2505, 2505, 2506, 2507, 2507,
+ 2508, 2508, 2509, 2509, 2510, 2510, 2511, 2511, 2512, 2513,
+ 2513, 2514, 2515, 2516, 2516, 2517, 2517, 2518, 2519, 2520,
+ 2521, 2521, 2522, 2525, 2530, 2536, 2542, 2548, 2553, 2558,
+ 2563, 2568, 2573, 2578, 2583, 2588, 2593, 2598, 2603, 2608,
+ 2613, 2618, 2624, 2635, 2640, 2645, 2650, 2655, 2660, 2663,
+ 2668, 2671, 2676, 2681, 2686, 2691, 2696, 2701, 2706, 2711,
+ 2716, 2727, 2732, 2737, 2742, 2751, 2760, 2765, 2770, 2776,
+ 2775, 2780, 2780, 2781, 2784, 2787, 2790, 2793, 2796, 2799,
+ 2802, 2805, 2808, 2811, 2814, 2817, 2820, 2823, 2826, 2829,
+ 2832, 2835, 2838, 2844, 2843, 2848, 2848, 2849, 2852, 2855,
+ 2858, 2861, 2864, 2867, 2870, 2873, 2876, 2879, 2882, 2885,
+ 2888, 2891, 2894, 2897, 2900, 2903, 2906, 2911, 2916, 2921,
+ 2930, 2933, 2933, 2934, 2935, 2935, 2936, 2936, 2937, 2937,
+ 2938, 2939, 2939, 2940, 2941, 2941, 2942, 2942, 2944, 2949,
+ 2954, 2959, 2964, 2969, 2974, 2979, 2984, 2989, 2994, 2999,
+ 3004, 3009, 3017, 3020, 3020, 3021, 3021, 3022, 3023, 3023,
+ 3024, 3025, 3027, 3033, 3039, 3048, 3062, 3068
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || 0
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
+ "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN", "BYTES",
+ "KBYTES", "MBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CHANNEL",
+ "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS", "CONNECT",
+ "CONNECTFREQ", "DEFAULT_FLOODCOUNT", "DEFAULT_SPLIT_SERVER_COUNT",
+ "DEFAULT_SPLIT_USER_COUNT", "DENY", "DESCRIPTION", "DIE", "DISABLE_AUTH",
+ "DISABLE_FAKE_CHANNELS", "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT",
+ "EGDPOOL_PATH", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
+ "FAILED_OPER_NOTICE", "IRCD_FLAGS", "FLATTEN_LINKS", "GECOS", "GENERAL",
+ "GLINE", "GLINE_DURATION", "GLINE_ENABLE", "GLINE_EXEMPT",
+ "GLINE_REQUEST_DURATION", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
+ "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
+ "HIDDEN_NAME", "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SPOOF_IPS",
+ "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
+ "IP", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT",
+ "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY",
+ "LISTEN", "T_LOG", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANS_PER_OPER",
+ "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
+ "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
+ "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
+ "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
+ "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
+ "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
+ "NUMBER", "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPERATOR",
+ "OPERS_BYPASS_CALLERID", "OPER_ONLY_UMODES", "OPER_PASS_RESV",
+ "OPER_SPY_T", "OPER_UMODES", "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME",
+ "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE",
+ "PING_TIME", "PING_WARNING", "PORT", "QSTRING", "QUIET_ON_BAN", "REASON",
+ "REDIRPORT", "REDIRSERV", "REGEX_T", "REHASH", "REMOTE", "REMOTEBAN",
+ "RESTRICT_CHANNELS", "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE",
+ "SSL_CERTIFICATE_FILE", "SSL_DH_PARAM_FILE", "T_SSL_CLIENT_METHOD",
+ "T_SSL_SERVER_METHOD", "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT",
+ "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD",
+ "SERVERHIDE", "SERVERINFO", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
+ "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
+ "STATS_E_DISABLED", "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY",
+ "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL", "TMASKED",
+ "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "T_ALL", "T_BOTS",
+ "T_SOFTCALLERID", "T_CALLERID", "T_CCONN", "T_CCONN_FULL",
+ "T_SSL_CIPHER_LIST", "T_DEAF", "T_DEBUG", "T_DLINE", "T_EXTERNAL",
+ "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_MAX_CLIENTS",
+ "T_NCHANGE", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_SERVER",
+ "T_SERVNOTICE", "T_SET", "T_SKILL", "T_SPY", "T_SSL", "T_UMODES",
+ "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV", "T_UNXLINE",
+ "T_GLOBOPS", "T_WALLOP", "T_RESTART", "T_SERVICE", "T_SERVICES_NAME",
+ "THROTTLE_TIME", "TRUE_NO_OPER_FLOOD", "UNKLINE", "USER", "USE_EGD",
+ "USE_LOGGING", "VHOST", "VHOST6", "XLINE", "WARN_NO_NLINE", "T_SIZE",
+ "T_FILE", "';'", "'}'", "'{'", "'='", "','", "$accept", "conf",
+ "conf_item", "timespec_", "timespec", "sizespec_", "sizespec",
+ "modules_entry", "modules_items", "modules_item", "modules_module",
+ "modules_path", "serverinfo_entry", "serverinfo_items",
+ "serverinfo_item", "serverinfo_ssl_client_method",
+ "serverinfo_ssl_server_method", "client_method_types",
+ "client_method_type_item", "server_method_types",
+ "server_method_type_item", "serverinfo_ssl_certificate_file",
+ "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
+ "serverinfo_ssl_cipher_list", "serverinfo_name", "serverinfo_sid",
+ "serverinfo_description", "serverinfo_network_name",
+ "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
+ "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
+ "admin_item", "admin_name", "admin_email", "admin_description",
+ "logging_entry", "logging_items", "logging_item", "logging_use_logging",
+ "logging_file_entry", "$@1", "logging_file_items", "logging_file_item",
+ "logging_file_name", "logging_file_size", "logging_file_type", "$@2",
+ "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@3",
+ "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
+ "oper_encrypted", "oper_rsa_public_key_file", "oper_class",
+ "oper_umodes", "$@4", "oper_umodes_items", "oper_umodes_item",
+ "oper_flags", "$@5", "oper_flags_items", "oper_flags_item",
+ "class_entry", "$@6", "class_items", "class_item", "class_name",
+ "class_ping_time", "class_ping_warning", "class_number_per_ip",
+ "class_connectfreq", "class_max_number", "class_max_global",
+ "class_max_local", "class_max_ident", "class_sendq", "class_recvq",
+ "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
+ "class_number_per_cidr", "listen_entry", "$@7", "listen_flags", "$@8",
+ "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
+ "listen_port", "$@9", "port_items", "port_item", "listen_address",
+ "listen_host", "auth_entry", "$@10", "auth_items", "auth_item",
+ "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
+ "$@11", "auth_flags_items", "auth_flags_item", "auth_spoof",
+ "auth_redir_serv", "auth_redir_port", "resv_entry", "$@12", "resv_items",
+ "resv_item", "resv_creason", "resv_channel", "resv_nick",
+ "service_entry", "service_items", "service_item", "service_name",
+ "shared_entry", "$@13", "shared_items", "shared_item", "shared_name",
+ "shared_user", "shared_type", "$@14", "shared_types", "shared_type_item",
+ "cluster_entry", "$@15", "cluster_items", "cluster_item", "cluster_name",
+ "cluster_type", "$@16", "cluster_types", "cluster_type_item",
+ "connect_entry", "$@17", "connect_items", "connect_item", "connect_name",
+ "connect_host", "connect_vhost", "connect_send_password",
+ "connect_accept_password", "connect_port", "connect_aftype",
+ "connect_flags", "$@18", "connect_flags_items", "connect_flags_item",
+ "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
+ "connect_class", "connect_ssl_cipher_list", "kill_entry", "$@19",
+ "kill_type", "$@20", "kill_type_items", "kill_type_item", "kill_items",
+ "kill_item", "kill_user", "kill_reason", "deny_entry", "$@21",
+ "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
+ "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@22",
+ "gecos_flags", "$@23", "gecos_flags_items", "gecos_flags_item",
+ "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
+ "general_entry", "general_items", "general_item", "general_max_watch",
+ "general_gline_enable", "general_gline_duration",
+ "general_gline_request_duration", "general_gline_min_cidr",
+ "general_gline_min_cidr6", "general_tkline_expire_notices",
+ "general_kill_chase_time_limit", "general_hide_spoof_ips",
+ "general_ignore_bogus_ts", "general_disable_remote_commands",
+ "general_failed_oper_notice", "general_anti_nick_flood",
+ "general_max_nick_time", "general_max_nick_changes",
+ "general_max_accept", "general_anti_spam_exit_message_time",
+ "general_ts_warn_delta", "general_ts_max_delta",
+ "general_havent_read_conf", "general_invisible_on_connect",
+ "general_warn_no_nline", "general_stats_e_disabled",
+ "general_stats_o_oper_only", "general_stats_P_oper_only",
+ "general_stats_k_oper_only", "general_stats_i_oper_only",
+ "general_pace_wait", "general_caller_id_wait",
+ "general_opers_bypass_callerid", "general_pace_wait_simple",
+ "general_short_motd", "general_no_oper_flood",
+ "general_true_no_oper_flood", "general_oper_pass_resv",
+ "general_message_locale", "general_dots_in_ident", "general_max_targets",
+ "general_use_egd", "general_egdpool_path", "general_services_name",
+ "general_ping_cookie", "general_disable_auth", "general_throttle_time",
+ "general_oper_umodes", "$@24", "umode_oitems", "umode_oitem",
+ "general_oper_only_umodes", "$@25", "umode_items", "umode_item",
+ "general_min_nonwildcard", "general_min_nonwildcard_simple",
+ "general_default_floodcount", "channel_entry", "channel_items",
+ "channel_item", "channel_disable_fake_channels",
+ "channel_restrict_channels", "channel_knock_delay",
+ "channel_knock_delay_channel", "channel_max_chans_per_user",
+ "channel_max_chans_per_oper", "channel_quiet_on_ban", "channel_max_bans",
+ "channel_default_split_user_count", "channel_default_split_server_count",
+ "channel_no_create_on_split", "channel_no_join_on_split",
+ "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
+ "serverhide_items", "serverhide_item", "serverhide_flatten_links",
+ "serverhide_hide_servers", "serverhide_hidden_name",
+ "serverhide_links_delay", "serverhide_hidden",
+ "serverhide_hide_server_ips", YY_NULL
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
+ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
+ 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
+ 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+ 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
+ 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
+ 465, 466, 467, 468, 469, 59, 125, 123, 61, 44
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint16 yyr1[] =
+{
+ 0, 220, 221, 221, 222, 222, 222, 222, 222, 222,
+ 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
+ 222, 222, 222, 222, 222, 222, 223, 223, 224, 224,
+ 224, 224, 224, 224, 225, 225, 226, 226, 226, 226,
+ 227, 228, 228, 229, 229, 229, 230, 231, 232, 233,
+ 233, 234, 234, 234, 234, 234, 234, 234, 234, 234,
+ 234, 234, 234, 234, 234, 234, 234, 235, 236, 237,
+ 237, 238, 238, 239, 239, 240, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 255, 256, 256, 256, 256, 257, 258, 259,
+ 260, 261, 261, 262, 262, 262, 263, 265, 264, 266,
+ 266, 267, 267, 267, 267, 268, 269, 269, 271, 270,
+ 272, 272, 273, 273, 273, 273, 273, 273, 273, 275,
+ 274, 276, 276, 277, 277, 277, 277, 277, 277, 277,
+ 277, 277, 278, 279, 280, 281, 282, 283, 285, 284,
+ 286, 286, 287, 287, 287, 287, 287, 287, 287, 287,
+ 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
+ 287, 287, 289, 288, 290, 290, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 293, 292, 294, 294, 295,
+ 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
+ 295, 295, 295, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 311, 310,
+ 313, 312, 314, 314, 315, 315, 315, 316, 316, 317,
+ 317, 317, 317, 317, 319, 318, 320, 320, 321, 321,
+ 322, 323, 325, 324, 326, 326, 327, 327, 327, 327,
+ 327, 327, 327, 327, 327, 328, 329, 330, 331, 333,
+ 332, 334, 334, 335, 335, 335, 335, 335, 335, 335,
+ 335, 335, 336, 337, 338, 340, 339, 341, 341, 342,
+ 342, 342, 342, 343, 344, 345, 346, 347, 347, 348,
+ 348, 349, 351, 350, 352, 352, 353, 353, 353, 353,
+ 354, 355, 357, 356, 358, 358, 359, 359, 359, 359,
+ 359, 359, 359, 359, 359, 359, 361, 360, 362, 362,
+ 363, 363, 363, 364, 366, 365, 367, 367, 368, 368,
+ 368, 368, 368, 368, 368, 368, 368, 368, 370, 369,
+ 371, 371, 372, 372, 372, 372, 372, 372, 372, 372,
+ 372, 372, 372, 372, 372, 372, 373, 374, 375, 376,
+ 377, 378, 379, 379, 381, 380, 382, 382, 383, 383,
+ 384, 385, 386, 387, 388, 390, 389, 392, 391, 393,
+ 393, 394, 395, 395, 396, 396, 396, 396, 397, 398,
+ 400, 399, 401, 401, 402, 402, 402, 403, 404, 405,
+ 406, 406, 407, 407, 408, 410, 409, 412, 411, 413,
+ 413, 414, 415, 415, 416, 416, 416, 416, 417, 418,
+ 419, 420, 420, 421, 421, 421, 421, 421, 421, 421,
+ 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
+ 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
+ 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
+ 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
+ 421, 421, 421, 422, 423, 424, 425, 426, 427, 428,
+ 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
+ 439, 440, 441, 442, 443, 444, 445, 446, 447, 447,
+ 448, 448, 449, 450, 451, 452, 453, 454, 455, 456,
+ 457, 458, 459, 460, 461, 462, 463, 464, 465, 467,
+ 466, 468, 468, 469, 469, 469, 469, 469, 469, 469,
+ 469, 469, 469, 469, 469, 469, 469, 469, 469, 469,
+ 469, 469, 469, 471, 470, 472, 472, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 473, 473, 473, 473,
+ 473, 473, 473, 473, 473, 473, 473, 474, 475, 476,
+ 477, 478, 478, 479, 479, 479, 479, 479, 479, 479,
+ 479, 479, 479, 479, 479, 479, 479, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
+ 492, 493, 494, 495, 495, 496, 496, 496, 496, 496,
+ 496, 496, 497, 498, 499, 500, 501, 502
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 2, 0, 1, 2, 3,
+ 3, 3, 3, 3, 0, 1, 2, 3, 3, 3,
+ 5, 2, 1, 1, 1, 2, 4, 4, 5, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 4, 4, 3,
+ 1, 1, 1, 3, 1, 1, 1, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
+ 5, 2, 1, 1, 1, 2, 4, 0, 6, 2,
+ 1, 1, 1, 1, 2, 4, 4, 4, 0, 5,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 4, 4, 4, 4, 4, 4, 0, 5,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 5, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 6, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 0, 6,
+ 0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
+ 1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
+ 4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
+ 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 0, 6, 2, 1, 1,
+ 1, 1, 2, 4, 4, 4, 5, 2, 1, 1,
+ 1, 4, 0, 6, 2, 1, 1, 1, 1, 2,
+ 4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 6, 2, 1,
+ 1, 1, 2, 4, 0, 5, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 0, 6,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
+ 4, 4, 4, 4, 0, 5, 3, 1, 1, 1,
+ 4, 4, 4, 4, 4, 0, 6, 0, 5, 3,
+ 1, 1, 2, 1, 1, 1, 1, 1, 4, 4,
+ 0, 6, 2, 1, 1, 1, 1, 4, 4, 5,
+ 2, 1, 1, 1, 4, 0, 6, 0, 5, 3,
+ 1, 1, 2, 1, 1, 1, 1, 1, 4, 4,
+ 5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
+ 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 5, 3, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
+ 5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 4, 4, 4, 4, 4, 4
+};
+
+/* 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, 1, 0, 0, 0, 195, 348, 400, 0,
+ 415, 0, 252, 385, 228, 0, 0, 129, 285, 0,
+ 0, 302, 326, 0, 3, 23, 11, 4, 5, 6,
+ 8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
+ 20, 22, 21, 7, 12, 24, 25, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 92, 93, 95, 94, 597, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 582, 596, 592, 584, 585, 586, 587, 588,
+ 583, 589, 590, 591, 593, 594, 595, 0, 0, 0,
+ 413, 0, 0, 411, 412, 0, 482, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 553, 0, 529, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 432, 480, 474,
+ 475, 476, 477, 478, 473, 443, 433, 434, 468, 435,
+ 436, 437, 438, 439, 440, 441, 442, 470, 444, 445,
+ 479, 447, 452, 448, 450, 449, 463, 464, 451, 453,
+ 454, 455, 456, 457, 446, 459, 460, 461, 481, 471,
+ 472, 469, 462, 458, 466, 467, 465, 0, 0, 0,
+ 0, 0, 0, 102, 103, 104, 0, 0, 0, 0,
+ 0, 42, 43, 44, 0, 0, 621, 0, 0, 0,
+ 0, 0, 0, 0, 614, 615, 616, 619, 617, 618,
+ 620, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 50, 63,
+ 64, 62, 59, 58, 65, 51, 61, 54, 55, 56,
+ 52, 60, 57, 53, 0, 0, 300, 0, 0, 298,
+ 299, 96, 0, 0, 0, 0, 91, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 581, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 198,
+ 199, 202, 203, 205, 206, 207, 208, 209, 210, 211,
+ 212, 200, 201, 204, 0, 0, 0, 0, 0, 374,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 351,
+ 352, 353, 354, 355, 356, 358, 357, 360, 364, 361,
+ 362, 363, 359, 406, 0, 0, 0, 403, 404, 405,
+ 0, 0, 410, 427, 0, 0, 417, 426, 0, 423,
+ 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 431, 0, 0, 0, 269, 0, 0, 0,
+ 0, 0, 0, 255, 256, 257, 258, 263, 259, 260,
+ 261, 262, 397, 0, 387, 0, 396, 0, 393, 394,
+ 395, 0, 230, 0, 0, 0, 240, 0, 238, 239,
+ 241, 242, 105, 0, 0, 101, 0, 45, 0, 0,
+ 0, 41, 0, 0, 0, 172, 0, 0, 0, 148,
+ 0, 0, 132, 133, 134, 135, 138, 139, 137, 136,
+ 140, 0, 0, 0, 0, 0, 288, 289, 290, 291,
+ 0, 0, 0, 0, 0, 0, 0, 613, 66, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 49, 0, 0, 312, 0,
+ 0, 305, 306, 307, 308, 0, 0, 334, 0, 329,
+ 330, 331, 0, 0, 297, 0, 0, 0, 90, 0,
+ 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 580, 213, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 197, 365, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 350, 0, 0,
+ 0, 402, 0, 409, 0, 0, 0, 0, 422, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 430, 264, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 254, 0, 0, 0, 0, 392, 243, 0, 0,
+ 0, 0, 0, 237, 0, 100, 0, 0, 0, 40,
+ 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 131, 292, 0, 0, 0, 0, 287, 0, 0, 0,
+ 0, 0, 0, 612, 0, 0, 0, 0, 0, 0,
+ 0, 0, 71, 72, 0, 70, 75, 76, 0, 74,
+ 0, 0, 0, 0, 0, 48, 309, 0, 0, 0,
+ 0, 304, 332, 0, 0, 0, 328, 0, 296, 99,
+ 98, 97, 607, 606, 598, 26, 26, 26, 26, 26,
+ 28, 27, 600, 601, 605, 603, 602, 608, 609, 610,
+ 611, 604, 599, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 34, 0, 0, 196, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 349, 0, 0, 401, 414, 0, 0,
+ 0, 416, 495, 499, 513, 579, 527, 493, 521, 524,
+ 494, 485, 484, 486, 487, 488, 502, 491, 492, 503,
+ 490, 498, 497, 496, 522, 483, 520, 577, 578, 517,
+ 514, 564, 557, 574, 575, 558, 559, 560, 561, 569,
+ 562, 572, 576, 565, 570, 566, 571, 563, 568, 567,
+ 573, 0, 556, 519, 539, 533, 550, 551, 534, 535,
+ 536, 537, 545, 538, 548, 552, 541, 546, 542, 547,
+ 540, 544, 543, 549, 0, 532, 512, 515, 526, 489,
+ 516, 505, 510, 511, 508, 509, 506, 507, 501, 500,
+ 525, 528, 518, 523, 504, 0, 0, 0, 0, 0,
+ 0, 0, 0, 253, 0, 0, 0, 386, 0, 0,
+ 0, 248, 244, 247, 229, 106, 0, 0, 118, 0,
+ 0, 110, 111, 113, 112, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 130, 0, 0, 0, 286,
+ 622, 626, 624, 627, 623, 625, 83, 89, 81, 85,
+ 84, 78, 77, 79, 67, 0, 68, 0, 82, 80,
+ 88, 86, 87, 0, 0, 0, 303, 0, 0, 327,
+ 301, 29, 30, 31, 32, 33, 225, 226, 218, 220,
+ 222, 221, 219, 214, 227, 217, 215, 216, 34, 34,
+ 34, 36, 35, 223, 224, 370, 372, 373, 383, 380,
+ 378, 379, 0, 377, 367, 381, 382, 366, 371, 369,
+ 384, 368, 407, 408, 428, 429, 421, 0, 420, 554,
+ 0, 530, 0, 267, 268, 277, 274, 279, 276, 275,
+ 281, 278, 280, 273, 0, 272, 266, 284, 283, 282,
+ 265, 399, 391, 0, 390, 398, 235, 236, 234, 0,
+ 233, 251, 250, 0, 0, 0, 114, 0, 0, 0,
+ 0, 109, 147, 145, 187, 184, 183, 176, 178, 194,
+ 188, 191, 186, 177, 192, 180, 189, 193, 181, 190,
+ 185, 179, 182, 0, 175, 142, 144, 146, 158, 152,
+ 169, 170, 153, 154, 155, 156, 164, 157, 167, 171,
+ 160, 165, 161, 166, 159, 163, 162, 168, 0, 151,
+ 143, 294, 295, 293, 69, 73, 310, 316, 322, 325,
+ 318, 324, 319, 323, 321, 317, 320, 0, 315, 311,
+ 333, 338, 344, 347, 340, 346, 341, 345, 343, 339,
+ 342, 0, 337, 37, 38, 39, 375, 0, 418, 0,
+ 555, 531, 270, 0, 388, 0, 231, 0, 249, 246,
+ 245, 0, 0, 0, 0, 108, 173, 0, 149, 0,
+ 313, 0, 335, 0, 376, 419, 271, 389, 232, 115,
+ 124, 127, 126, 123, 128, 125, 122, 0, 121, 117,
+ 116, 174, 150, 314, 336, 119, 0, 120
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 24, 780, 781, 1021, 1022, 25, 230, 231,
+ 232, 233, 26, 267, 268, 269, 270, 744, 745, 748,
+ 749, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 27, 71, 72, 73, 74, 75,
+ 28, 222, 223, 224, 225, 226, 950, 951, 952, 953,
+ 954, 1088, 1217, 1218, 29, 60, 501, 502, 503, 504,
+ 505, 506, 507, 508, 509, 717, 1138, 1139, 510, 713,
+ 1113, 1114, 30, 49, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 31, 57, 476, 698, 1079, 1080, 477, 478, 479, 1085,
+ 942, 943, 480, 481, 32, 55, 452, 453, 454, 455,
+ 456, 457, 458, 684, 1064, 1065, 459, 460, 461, 33,
+ 61, 515, 516, 517, 518, 519, 34, 288, 289, 290,
+ 35, 64, 550, 551, 552, 553, 554, 758, 1157, 1158,
+ 36, 65, 558, 559, 560, 561, 764, 1171, 1172, 37,
+ 50, 358, 359, 360, 361, 362, 363, 364, 365, 366,
+ 367, 607, 1032, 1033, 368, 369, 370, 371, 372, 38,
+ 56, 466, 693, 1073, 1074, 467, 468, 469, 470, 39,
+ 51, 376, 377, 378, 379, 40, 112, 113, 114, 41,
+ 53, 387, 626, 1047, 1048, 388, 389, 390, 391, 42,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 423, 904, 905,
+ 213, 421, 881, 882, 214, 215, 216, 43, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 44, 243, 244, 245, 246, 247,
+ 248, 249, 250
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -744
+static const yytype_int16 yypact[] =
+{
+ -744, 610, -744, -209, -187, -179, -744, -744, -744, -176,
+ -744, -171, -744, -744, -744, -166, -164, -744, -744, -139,
+ -136, -744, -744, -131, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, 61, 807, -126,
+ -104, -84, 16, -79, 382, -77, -63, -60, 7, 21,
+ -49, -40, 638, 381, -26, 52, 25, -152, 62, 85,
+ 86, 18, -744, -744, -744, -744, -744, 88, 89, 93,
+ 94, 96, 101, 108, 112, 118, 119, 125, 127, 132,
+ 133, 162, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, 531, 499, 266,
+ -744, 135, 28, -744, -744, 11, -744, 142, 143, 145,
+ 147, 148, 150, 153, 163, 166, 167, 169, 173, 174,
+ 175, 177, 178, 180, 182, 183, 185, 191, 197, 200,
+ 201, 202, 204, 211, 212, 215, -744, 216, -744, 217,
+ 218, 221, 222, 225, 226, 229, 234, 235, 237, 238,
+ 239, 242, 253, 256, 257, 262, 38, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, 337, 24, 259,
+ 73, 263, 4, -744, -744, -744, 126, 131, 264, 270,
+ 59, -744, -744, -744, 389, 209, -744, 276, 279, 280,
+ 281, 285, 287, 3, -744, -744, -744, -744, -744, -744,
+ -744, 149, 288, 289, 290, 292, 299, 301, 302, 303,
+ 304, 305, 307, 308, 315, 324, 330, 75, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, 208, 30, -744, 331, 15, -744,
+ -744, -744, 107, 254, 359, 165, -744, 385, 396, 367,
+ 454, 454, 455, 457, 461, 399, 401, 464, 454, 404,
+ 405, 351, -744, 358, 356, 360, 361, 362, 364, 365,
+ 369, 374, 375, 379, 383, 386, 388, 395, 232, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, 384, 397, 400, 403, 408, -744,
+ 411, 412, 420, 423, 424, 427, 433, 434, 260, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, 435, 437, 8, -744, -744, -744,
+ 458, 407, -744, -744, 441, 442, -744, -744, 36, -744,
+ -744, -744, 417, 454, 454, 501, 443, 459, 524, 543,
+ 502, 454, 503, 454, 565, 567, 568, 508, 509, 513,
+ 454, 577, 578, 454, 580, 583, 566, 584, 587, 527,
+ 528, 475, 535, 478, 454, 454, 537, 540, 541, 542,
+ -146, -133, 544, 546, 454, 454, 585, 454, 550, 553,
+ 554, 510, -744, 515, 514, 517, -744, 519, 521, 525,
+ 529, 530, 58, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, 533, -744, 534, -744, 10, -744, -744,
+ -744, 538, -744, 536, 539, 545, -744, 115, -744, -744,
+ -744, -744, -744, 582, 547, -744, 532, -744, 640, 643,
+ 549, -744, 555, 559, 560, -744, 562, 569, 572, -744,
+ 573, 70, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, 558, 588, 595, 597, 146, -744, -744, -744, -744,
+ 623, 625, 687, 658, 659, 454, 606, -744, -744, 704,
+ 663, 706, 707, 709, 713, 714, 715, 79, 159, 717,
+ 718, 646, 719, 720, 626, -744, 628, 622, -744, 624,
+ 128, -744, -744, -744, -744, 629, 630, -744, 22, -744,
+ -744, -744, 728, 632, -744, 634, 635, 636, -744, 637,
+ 639, 641, 430, 642, 645, 648, 649, 650, 651, 652,
+ 653, 654, 656, 657, -744, -744, 754, 756, 454, 759,
+ 776, 778, 779, 761, 784, 785, 454, 454, 786, 786,
+ 671, -744, -744, 769, 122, 770, 729, 672, 773, 774,
+ 775, 777, 795, 780, 781, 782, 681, -744, 783, 787,
+ 682, -744, 689, -744, 788, 789, 690, 694, -744, 695,
+ 696, 697, 698, 699, 702, 703, 705, 708, 710, 712,
+ 716, 721, 722, 723, 724, 725, 726, 727, 730, 731,
+ 732, 733, 734, 735, 736, 737, 738, 739, 551, 740,
+ 599, 741, 742, 743, 744, 745, 746, 747, 748, 749,
+ 750, 751, 752, 753, 755, 757, 758, 760, 762, 763,
+ -744, -744, 801, 764, 711, 803, 823, 810, 812, 814,
+ 765, -744, 815, 766, 817, 767, -744, -744, 768, 825,
+ 826, 870, 772, -744, 790, -744, 184, 791, 792, -744,
+ -744, 853, 816, 771, 856, 861, 863, 793, 865, 794,
+ -744, -744, 867, 872, 873, 797, -744, 798, 799, 800,
+ 802, 804, 805, -744, 806, 808, 809, 811, 813, 818,
+ 819, 820, -744, -744, -195, -744, -744, -744, -172, -744,
+ 821, 822, 824, 827, 828, -744, -744, 874, 829, 875,
+ 830, -744, -744, 876, 831, 833, -744, 835, -744, -744,
+ -744, -744, -744, -744, -744, 454, 454, 454, 454, 454,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, 836, 837, 838, 839, 840, 841, 842,
+ 843, 844, 845, 846, 847, 314, 848, 849, -744, 850,
+ 851, 852, 854, 855, 13, 857, 858, 859, 860, 862,
+ 864, 866, 868, -744, 869, 871, -744, -744, 877, 878,
+ 879, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -167, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -154, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, 880, 881, 309, 882, 883,
+ 884, 885, 886, -744, 887, 893, 888, -744, -33, 889,
+ 890, 832, 891, -744, -744, -744, 892, 894, -744, 895,
+ 154, -744, -744, -744, -744, -744, -744, 896, 899, 511,
+ 900, 901, 902, 627, 903, -744, 904, 905, 906, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, 79, -744, 159, -744, -744,
+ -744, -744, -744, 907, 460, 908, -744, 909, 665, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, 786, 786,
+ 786, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -145, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -50, -744, -744,
+ 551, -744, 599, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -41, -744, -744, -744, -744, -744,
+ -744, -744, -744, -27, -744, -744, -744, -744, -744, -17,
+ -744, -744, -744, 898, 870, 910, -744, 911, 912, -86,
+ 913, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, 34, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, 40, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, 53, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, 63, -744, -744, -744, -744, -744, 13, -744, 879,
+ -744, -744, -744, 309, -744, 893, -744, -33, -744, -744,
+ -744, 914, 277, 916, 917, -744, -744, 511, -744, 627,
+ -744, 460, -744, 665, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, 68, -744, -744,
+ -744, -744, -744, -744, -744, -744, 277, -744
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -744, -744, -744, -743, -298, -663, -598, -744, -744, 897,
+ -744, -744, -744, -744, 915, -744, -744, -744, 14, -744,
+ 1, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, 924, -744, -744, -744,
+ -744, -744, 796, -744, -744, -744, -744, 48, -744, -744,
+ -744, -744, -744, -226, -744, -744, -744, 500, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -196, -744, -744,
+ -744, -193, -744, -744, -744, 680, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -177, -744, 548, -744, -744,
+ -744, -62, -744, -744, -744, -744, -744, 575, -744, -744,
+ -744, -744, -744, -744, -744, -153, -744, -744, -744, -744,
+ -744, -744, 516, -744, -744, -744, -744, -744, 918, -744,
+ -744, -744, -744, 482, -744, -744, -744, -744, -744, -163,
+ -744, -744, -744, 483, -744, -744, -744, -744, -159, -744,
+ -744, -744, 688, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -137, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -117, -744, 604, -744, -744, -744,
+ -744, -744, 700, -744, -744, -744, -744, 966, -744, -744,
+ -744, -744, -744, -744, -99, -744, 701, -744, -744, -744,
+ -744, 919, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, 35,
+ -744, -744, -744, 32, -744, -744, -744, -744, -744, 997,
+ -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
+ -744, -744, -744, -744, -744, -744, 920, -744, -744, -744,
+ -744, -744, -744
+};
+
+/* 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 -108
+static const yytype_int16 yytable[] =
+{
+ 806, 807, 573, 574, 236, 220, 45, 46, 220, 373,
+ 581, 462, 383, 805, 667, 668, 286, 110, 1076, 67,
+ 984, 1030, 227, 555, 985, 462, 286, 669, 670, 110,
+ 47, 555, 1001, 1002, 1003, 1004, 1005, 383, 48, 116,
+ 237, 52, 68, 986, 117, 118, 54, 987, 1049, 69,
+ 119, 58, 1050, 59, 238, 239, 240, 241, 120, 443,
+ 227, 1051, 67, 291, 121, 1052, 122, 123, 124, 374,
+ 1176, 492, 242, 125, 1177, 444, 251, 111, 62, 126,
+ 127, 63, 128, 129, 130, 68, 66, 493, 131, 111,
+ 445, 107, 69, 132, 446, 630, 631, 133, 134, 252,
+ 384, 135, 494, 638, 287, 640, 495, 70, 228, 1193,
+ 136, 556, 647, 108, 287, 650, 471, 137, 138, 556,
+ 139, 140, 141, 142, 143, 384, 661, 662, 375, 546,
+ 463, 385, 253, 109, 229, 144, 673, 674, 115, 676,
+ 217, 145, 146, 147, 463, 148, 228, 511, 149, 150,
+ 70, 472, 151, 1077, 218, 946, 385, 219, 1078, 496,
+ 512, 464, 386, 76, 254, 1178, 255, 256, 234, 1179,
+ 447, 473, 229, 557, 1182, 464, 474, 235, 1183, 448,
+ 449, 557, 497, 77, 78, 946, 152, 386, 1184, 79,
+ 153, 284, 1185, 154, 155, 156, 157, 158, 1186, 498,
+ 159, 160, 1187, 257, 1031, 258, 259, 260, 261, 546,
+ 511, 450, 221, 742, 743, 221, 465, 547, -107, 526,
+ 484, -107, 262, 512, 620, 565, 695, 732, 80, 81,
+ 465, 563, 475, 313, 295, 82, 83, 84, 765, 513,
+ 161, 162, 163, 947, 381, 164, 263, 314, 315, 1196,
+ 165, 316, 627, 1197, 441, 1198, 264, 85, 86, 1199,
+ 471, 344, 499, 345, 451, 346, 514, 373, 1200, 285,
+ 87, 88, 1201, 947, 690, 490, 500, 347, 1202, 548,
+ 292, 89, 1203, 1225, 265, 266, 719, 1226, 482, 90,
+ 795, 544, 348, 746, 747, 472, 349, 547, 803, 804,
+ 810, 811, 513, 293, 294, 948, 297, 298, 317, 318,
+ 319, 299, 300, 320, 301, 473, 350, 1210, 351, 302,
+ 474, 321, 1055, 1018, 1019, 1020, 303, 374, 352, 514,
+ 304, 702, 322, 323, 549, 948, 305, 306, 443, 1211,
+ 486, 1212, 1056, 307, 760, 308, 487, 324, 325, 353,
+ 309, 310, 1057, 380, 444, 1173, 1174, 1175, 1058, 548,
+ 392, 393, 725, 394, 528, 395, 396, 949, 397, 445,
+ 1090, 398, 566, 446, 1059, 326, 475, 354, 311, 1213,
+ 568, 399, 251, 116, 400, 401, 375, 402, 117, 118,
+ 492, 403, 404, 405, 119, 406, 407, 949, 408, 1060,
+ 409, 410, 120, 411, 355, 252, 493, 1061, 121, 412,
+ 122, 123, 124, 805, 549, 413, 327, 125, 414, 415,
+ 416, 494, 417, 126, 127, 495, 128, 129, 130, 418,
+ 419, 356, 131, 420, 422, 424, 425, 132, 253, 426,
+ 427, 133, 134, 428, 429, 135, 1062, 430, 600, 447,
+ 1214, 1215, 431, 432, 136, 433, 434, 435, 448, 449,
+ 436, 137, 138, 1063, 139, 140, 141, 142, 143, 357,
+ 254, 437, 255, 256, 438, 439, 616, 567, 496, 144,
+ 440, 483, 488, 1216, 569, 145, 146, 147, 489, 148,
+ 450, 1194, 149, 150, 520, 570, 151, 521, 522, 523,
+ 344, 497, 345, 524, 346, 525, 529, 530, 531, 257,
+ 532, 258, 259, 260, 261, 1094, 347, 533, 498, 534,
+ 535, 536, 537, 538, 1147, 539, 540, 571, 262, 572,
+ 152, 348, 313, 541, 153, 349, 1095, 154, 155, 156,
+ 157, 158, 542, 451, 159, 160, 314, 315, 543, 562,
+ 316, 1096, 263, 572, 575, 350, 576, 351, 1097, 578,
+ 577, 579, 264, 580, 582, 583, 584, 352, 775, 776,
+ 777, 778, 779, 585, 586, 1098, 622, 629, 587, 588,
+ 589, 499, 590, 591, 161, 162, 163, 592, 353, 164,
+ 265, 266, 593, 594, 165, 500, 1148, 595, 1099, 602,
+ 632, 596, 861, 633, 597, 1100, 598, 317, 318, 319,
+ 2, 3, 320, 599, 4, 603, 354, 1101, 604, 634,
+ 321, 605, 623, 635, 5, 1149, 606, 6, 7, 608,
+ 609, 322, 323, 8, 1150, 1102, 1103, 1104, 610, 236,
+ 1151, 611, 612, 355, 9, 613, 324, 325, 10, 11,
+ 884, 614, 615, 618, 1152, 619, 1153, 1154, 12, 624,
+ 625, 636, 637, 639, 641, 1155, 642, 643, 644, 645,
+ 356, 1156, 13, 646, 326, 237, 648, 649, 1118, 651,
+ 14, 15, 652, 654, 653, 1105, 655, 656, 657, 238,
+ 239, 240, 241, 658, 1106, 659, 660, 663, 16, 1107,
+ 664, 665, 666, 675, 671, 1108, 672, 242, 357, 1109,
+ 677, 1110, 17, 678, 679, 327, 1111, 862, 863, 864,
+ 865, 866, 1112, 867, 868, 680, 869, 870, 871, 1161,
+ 681, 872, 682, 873, 874, 683, 875, 685, 876, 686,
+ 877, 878, 704, 687, 879, 752, 18, 688, 689, 706,
+ 880, 692, 694, 697, 699, 19, 20, 700, 707, 21,
+ 22, 708, 705, 701, 709, 885, 886, 887, 888, 889,
+ 710, 890, 891, 721, 892, 893, 894, 711, 712, 895,
+ 714, 896, 897, 727, 898, 728, 899, 715, 900, 901,
+ 716, 718, 902, 1119, 1120, 1121, 1122, 1123, 903, 1124,
+ 1125, 1162, 1126, 1127, 1128, 729, 722, 1129, 76, 1130,
+ 1131, 23, 1132, 723, 1133, 724, 1134, 1135, 730, 731,
+ 1136, 733, 734, 735, 736, 737, 1137, 738, 77, 78,
+ 1163, 739, 740, 741, 79, 750, 751, 753, 754, 1164,
+ 757, 755, 759, 756, 762, 1165, 767, 768, 763, 769,
+ 770, 771, 772, 793, 773, 794, 774, 782, 796, 1166,
+ 783, 1167, 1168, 784, 785, 786, 787, 788, 789, 790,
+ 1169, 791, 792, 80, 81, 797, 1170, 798, 799, 800,
+ 82, 83, 84, 801, 802, 805, 808, 809, 812, 813,
+ 814, 815, 816, 817, 819, 818, 823, 826, 820, 821,
+ 822, 824, 85, 86, 827, 825, 828, 829, 830, 831,
+ 832, 833, 834, 835, 836, 87, 88, 837, 838, 925,
+ 839, 928, 929, 840, 926, 841, 89, 842, 930, 927,
+ 931, 843, 932, 934, 90, 936, 844, 845, 846, 847,
+ 848, 849, 850, 939, 940, 851, 852, 853, 854, 855,
+ 856, 857, 858, 859, 860, 883, 906, 907, 908, 909,
+ 910, 911, 912, 913, 914, 915, 916, 917, 918, 941,
+ 919, 957, 920, 921, 960, 922, 958, 923, 924, 961,
+ 933, 962, 937, 964, 935, 966, 938, 944, 1145, 959,
+ 967, 968, 993, 995, 997, 296, 1083, 1188, 1091, 1144,
+ 1227, 720, 1046, 1222, 1221, 945, 955, 956, 601, 965,
+ 1208, 963, 969, 970, 971, 972, 1072, 973, 485, 974,
+ 975, 976, 1189, 977, 978, 703, 979, 691, 980, 1191,
+ 1206, 726, 761, 981, 982, 983, 988, 989, 1223, 990,
+ 1204, 766, 991, 992, 1224, 996, 617, 994, 999, 998,
+ 1000, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
+ 1015, 1016, 1017, 1023, 1024, 1025, 1026, 1027, 1207, 1028,
+ 1029, 696, 1034, 1035, 1036, 1037, 621, 1038, 382, 1039,
+ 1205, 1040, 1180, 1041, 1042, 442, 1043, 1181, 312, 628,
+ 0, 0, 1044, 1045, 0, 1053, 1054, 1066, 1067, 1068,
+ 1069, 1070, 1071, 1075, 1081, 1082, 0, 1086, 0, 0,
+ 1084, 1092, 1087, 1089, 1093, 1115, 1116, 1117, 1140, 1141,
+ 1142, 1143, 1146, 1159, 1160, 1190, 0, 491, 1195, 1209,
+ 1192, 1219, 1220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 527, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 545, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 564
+};
+
+#define yypact_value_is_default(yystate) \
+ ((yystate) == (-744))
+
+#define yytable_value_is_error(yytable_value) \
+ YYID (0)
+
+static const yytype_int16 yycheck[] =
+{
+ 598, 599, 300, 301, 1, 1, 215, 216, 1, 1,
+ 308, 1, 1, 99, 160, 161, 1, 1, 51, 1,
+ 215, 8, 1, 1, 219, 1, 1, 160, 161, 1,
+ 217, 1, 775, 776, 777, 778, 779, 1, 217, 1,
+ 37, 217, 24, 215, 6, 7, 217, 219, 215, 31,
+ 12, 217, 219, 217, 51, 52, 53, 54, 20, 1,
+ 1, 215, 1, 215, 26, 219, 28, 29, 30, 61,
+ 215, 1, 69, 35, 219, 17, 1, 61, 217, 41,
+ 42, 217, 44, 45, 46, 24, 217, 17, 50, 61,
+ 32, 217, 31, 55, 36, 393, 394, 59, 60, 24,
+ 89, 63, 32, 401, 89, 403, 36, 89, 87, 195,
+ 72, 89, 410, 217, 89, 413, 1, 79, 80, 89,
+ 82, 83, 84, 85, 86, 89, 424, 425, 120, 1,
+ 120, 120, 57, 217, 113, 97, 434, 435, 217, 437,
+ 217, 103, 104, 105, 120, 107, 87, 1, 110, 111,
+ 89, 36, 114, 186, 217, 1, 120, 217, 191, 89,
+ 14, 151, 151, 1, 89, 215, 91, 92, 217, 219,
+ 112, 56, 113, 151, 215, 151, 61, 217, 219, 121,
+ 122, 151, 112, 21, 22, 1, 148, 151, 215, 27,
+ 152, 217, 219, 155, 156, 157, 158, 159, 215, 129,
+ 162, 163, 219, 128, 191, 130, 131, 132, 133, 1,
+ 1, 153, 208, 134, 135, 208, 206, 89, 214, 216,
+ 216, 214, 147, 14, 216, 118, 216, 525, 66, 67,
+ 206, 216, 117, 1, 216, 73, 74, 75, 216, 93,
+ 202, 203, 204, 89, 216, 207, 171, 15, 16, 215,
+ 212, 19, 216, 219, 216, 215, 181, 95, 96, 219,
+ 1, 1, 192, 3, 206, 5, 120, 1, 215, 217,
+ 108, 109, 219, 89, 216, 216, 206, 17, 215, 151,
+ 218, 119, 219, 215, 209, 210, 216, 219, 215, 127,
+ 588, 216, 32, 134, 135, 36, 36, 89, 596, 597,
+ 178, 179, 93, 218, 218, 151, 218, 218, 76, 77,
+ 78, 218, 218, 81, 218, 56, 56, 40, 58, 218,
+ 61, 89, 13, 9, 10, 11, 218, 61, 68, 120,
+ 218, 216, 100, 101, 206, 151, 218, 218, 1, 62,
+ 214, 64, 33, 218, 216, 218, 215, 115, 116, 89,
+ 218, 218, 43, 218, 17, 1018, 1019, 1020, 49, 151,
+ 218, 218, 216, 218, 215, 218, 218, 213, 218, 32,
+ 216, 218, 118, 36, 65, 143, 117, 117, 216, 102,
+ 215, 218, 1, 1, 218, 218, 120, 218, 6, 7,
+ 1, 218, 218, 218, 12, 218, 218, 213, 218, 90,
+ 218, 218, 20, 218, 144, 24, 17, 98, 26, 218,
+ 28, 29, 30, 99, 206, 218, 184, 35, 218, 218,
+ 218, 32, 218, 41, 42, 36, 44, 45, 46, 218,
+ 218, 171, 50, 218, 218, 218, 218, 55, 57, 218,
+ 218, 59, 60, 218, 218, 63, 137, 218, 216, 112,
+ 173, 174, 218, 218, 72, 218, 218, 218, 121, 122,
+ 218, 79, 80, 154, 82, 83, 84, 85, 86, 209,
+ 89, 218, 91, 92, 218, 218, 216, 118, 89, 97,
+ 218, 218, 218, 206, 99, 103, 104, 105, 218, 107,
+ 153, 1089, 110, 111, 218, 99, 114, 218, 218, 218,
+ 1, 112, 3, 218, 5, 218, 218, 218, 218, 128,
+ 218, 130, 131, 132, 133, 4, 17, 218, 129, 218,
+ 218, 218, 218, 218, 64, 218, 218, 160, 147, 99,
+ 148, 32, 1, 218, 152, 36, 25, 155, 156, 157,
+ 158, 159, 218, 206, 162, 163, 15, 16, 218, 218,
+ 19, 40, 171, 99, 99, 56, 99, 58, 47, 160,
+ 99, 160, 181, 99, 160, 160, 215, 68, 138, 139,
+ 140, 141, 142, 215, 218, 64, 118, 160, 218, 218,
+ 218, 192, 218, 218, 202, 203, 204, 218, 89, 207,
+ 209, 210, 218, 218, 212, 206, 136, 218, 87, 215,
+ 99, 218, 51, 160, 218, 94, 218, 76, 77, 78,
+ 0, 1, 81, 218, 4, 218, 117, 106, 218, 160,
+ 89, 218, 215, 99, 14, 165, 218, 17, 18, 218,
+ 218, 100, 101, 23, 174, 124, 125, 126, 218, 1,
+ 180, 218, 218, 144, 34, 218, 115, 116, 38, 39,
+ 51, 218, 218, 218, 194, 218, 196, 197, 48, 218,
+ 218, 118, 160, 160, 99, 205, 99, 99, 160, 160,
+ 171, 211, 62, 160, 143, 37, 99, 99, 51, 99,
+ 70, 71, 99, 99, 118, 174, 99, 160, 160, 51,
+ 52, 53, 54, 218, 183, 160, 218, 160, 88, 188,
+ 160, 160, 160, 118, 160, 194, 160, 69, 209, 198,
+ 160, 200, 102, 160, 160, 184, 205, 166, 167, 168,
+ 169, 170, 211, 172, 173, 215, 175, 176, 177, 64,
+ 215, 180, 218, 182, 183, 218, 185, 218, 187, 218,
+ 189, 190, 160, 218, 193, 99, 136, 218, 218, 217,
+ 199, 218, 218, 215, 218, 145, 146, 218, 118, 149,
+ 150, 118, 215, 218, 215, 166, 167, 168, 169, 170,
+ 215, 172, 173, 215, 175, 176, 177, 218, 218, 180,
+ 218, 182, 183, 160, 185, 160, 187, 218, 189, 190,
+ 218, 218, 193, 166, 167, 168, 169, 170, 199, 172,
+ 173, 136, 175, 176, 177, 118, 218, 180, 1, 182,
+ 183, 201, 185, 218, 187, 218, 189, 190, 160, 160,
+ 193, 215, 118, 160, 118, 118, 199, 118, 21, 22,
+ 165, 118, 118, 118, 27, 118, 118, 118, 118, 174,
+ 218, 215, 218, 215, 215, 180, 118, 215, 218, 215,
+ 215, 215, 215, 99, 215, 99, 215, 215, 99, 194,
+ 215, 196, 197, 215, 215, 215, 215, 215, 215, 215,
+ 205, 215, 215, 66, 67, 99, 211, 99, 99, 118,
+ 73, 74, 75, 99, 99, 99, 215, 118, 118, 160,
+ 218, 118, 118, 118, 99, 118, 215, 215, 118, 118,
+ 118, 118, 95, 96, 215, 118, 118, 118, 218, 215,
+ 215, 215, 215, 215, 215, 108, 109, 215, 215, 118,
+ 215, 118, 99, 215, 160, 215, 119, 215, 118, 218,
+ 118, 215, 118, 118, 127, 118, 215, 215, 215, 215,
+ 215, 215, 215, 118, 118, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 99,
+ 215, 118, 215, 215, 118, 215, 160, 215, 215, 118,
+ 215, 118, 215, 118, 218, 118, 218, 215, 987, 218,
+ 118, 118, 118, 118, 118, 71, 164, 99, 950, 985,
+ 1226, 501, 123, 1199, 1197, 215, 215, 215, 328, 215,
+ 1187, 218, 215, 215, 215, 215, 123, 215, 222, 215,
+ 215, 215, 1084, 215, 215, 477, 215, 452, 215, 118,
+ 1183, 515, 550, 215, 215, 215, 215, 215, 1201, 215,
+ 1177, 558, 215, 215, 1203, 215, 358, 218, 215, 218,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 1185, 215,
+ 215, 467, 215, 215, 215, 215, 376, 215, 112, 215,
+ 1179, 215, 1050, 215, 215, 166, 215, 1052, 91, 388,
+ -1, -1, 215, 215, -1, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, -1, 215, -1, -1,
+ 219, 215, 218, 218, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, -1, 230, 215, 215,
+ 218, 215, 215, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 243, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 288
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint16 yystos[] =
+{
+ 0, 221, 0, 1, 4, 14, 17, 18, 23, 34,
+ 38, 39, 48, 62, 70, 71, 88, 102, 136, 145,
+ 146, 149, 150, 201, 222, 227, 232, 254, 260, 274,
+ 292, 310, 324, 339, 346, 350, 360, 369, 389, 399,
+ 405, 409, 419, 477, 494, 215, 216, 217, 217, 293,
+ 370, 400, 217, 410, 217, 325, 390, 311, 217, 217,
+ 275, 340, 217, 217, 351, 361, 217, 1, 24, 31,
+ 89, 255, 256, 257, 258, 259, 1, 21, 22, 27,
+ 66, 67, 73, 74, 75, 95, 96, 108, 109, 119,
+ 127, 478, 479, 480, 481, 482, 483, 484, 485, 486,
+ 487, 488, 489, 490, 491, 492, 493, 217, 217, 217,
+ 1, 61, 406, 407, 408, 217, 1, 6, 7, 12,
+ 20, 26, 28, 29, 30, 35, 41, 42, 44, 45,
+ 46, 50, 55, 59, 60, 63, 72, 79, 80, 82,
+ 83, 84, 85, 86, 97, 103, 104, 105, 107, 110,
+ 111, 114, 148, 152, 155, 156, 157, 158, 159, 162,
+ 163, 202, 203, 204, 207, 212, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 465, 466, 470, 474, 475, 476, 217, 217, 217,
+ 1, 208, 261, 262, 263, 264, 265, 1, 87, 113,
+ 228, 229, 230, 231, 217, 217, 1, 37, 51, 52,
+ 53, 54, 69, 495, 496, 497, 498, 499, 500, 501,
+ 502, 1, 24, 57, 89, 91, 92, 128, 130, 131,
+ 132, 133, 147, 171, 181, 209, 210, 233, 234, 235,
+ 236, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 217, 217, 1, 89, 347, 348,
+ 349, 215, 218, 218, 218, 216, 256, 218, 218, 218,
+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
+ 218, 216, 479, 1, 15, 16, 19, 76, 77, 78,
+ 81, 89, 100, 101, 115, 116, 143, 184, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 1, 3, 5, 17, 32, 36,
+ 56, 58, 68, 89, 117, 144, 171, 209, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 384, 385,
+ 386, 387, 388, 1, 61, 120, 401, 402, 403, 404,
+ 218, 216, 407, 1, 89, 120, 151, 411, 415, 416,
+ 417, 418, 218, 218, 218, 218, 218, 218, 218, 218,
+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
+ 218, 471, 218, 467, 218, 218, 218, 218, 218, 218,
+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
+ 218, 216, 421, 1, 17, 32, 36, 112, 121, 122,
+ 153, 206, 326, 327, 328, 329, 330, 331, 332, 336,
+ 337, 338, 1, 120, 151, 206, 391, 395, 396, 397,
+ 398, 1, 36, 56, 61, 117, 312, 316, 317, 318,
+ 322, 323, 215, 218, 216, 262, 214, 215, 218, 218,
+ 216, 229, 1, 17, 32, 36, 89, 112, 129, 192,
+ 206, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 288, 1, 14, 93, 120, 341, 342, 343, 344, 345,
+ 218, 218, 218, 218, 218, 218, 216, 496, 215, 218,
+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
+ 218, 218, 218, 218, 216, 234, 1, 89, 151, 206,
+ 352, 353, 354, 355, 356, 1, 89, 151, 362, 363,
+ 364, 365, 218, 216, 348, 118, 118, 118, 215, 99,
+ 99, 160, 99, 224, 224, 99, 99, 99, 160, 160,
+ 99, 224, 160, 160, 215, 215, 218, 218, 218, 218,
+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
+ 216, 295, 215, 218, 218, 218, 218, 381, 218, 218,
+ 218, 218, 218, 218, 218, 218, 216, 372, 218, 218,
+ 216, 402, 118, 215, 218, 218, 412, 216, 416, 160,
+ 224, 224, 99, 160, 160, 99, 118, 160, 224, 160,
+ 224, 99, 99, 99, 160, 160, 160, 224, 99, 99,
+ 224, 99, 99, 118, 99, 99, 160, 160, 218, 160,
+ 218, 224, 224, 160, 160, 160, 160, 160, 161, 160,
+ 161, 160, 160, 224, 224, 118, 224, 160, 160, 160,
+ 215, 215, 218, 218, 333, 218, 218, 218, 218, 218,
+ 216, 327, 218, 392, 218, 216, 396, 215, 313, 218,
+ 218, 218, 216, 317, 160, 215, 217, 118, 118, 215,
+ 215, 218, 218, 289, 218, 218, 218, 285, 218, 216,
+ 277, 215, 218, 218, 218, 216, 342, 160, 160, 118,
+ 160, 160, 224, 215, 118, 160, 118, 118, 118, 118,
+ 118, 118, 134, 135, 237, 238, 134, 135, 239, 240,
+ 118, 118, 99, 118, 118, 215, 215, 218, 357, 218,
+ 216, 353, 215, 218, 366, 216, 363, 118, 215, 215,
+ 215, 215, 215, 215, 215, 138, 139, 140, 141, 142,
+ 223, 224, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 99, 99, 224, 99, 99, 99, 99,
+ 118, 99, 99, 224, 224, 99, 226, 226, 215, 118,
+ 178, 179, 118, 160, 218, 118, 118, 118, 118, 99,
+ 118, 118, 118, 215, 118, 118, 215, 215, 118, 118,
+ 218, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 51, 166, 167, 168, 169, 170, 172, 173, 175,
+ 176, 177, 180, 182, 183, 185, 187, 189, 190, 193,
+ 199, 472, 473, 215, 51, 166, 167, 168, 169, 170,
+ 172, 173, 175, 176, 177, 180, 182, 183, 185, 187,
+ 189, 190, 193, 199, 468, 469, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 118, 160, 218, 118, 99,
+ 118, 118, 118, 215, 118, 218, 118, 215, 218, 118,
+ 118, 99, 320, 321, 215, 215, 1, 89, 151, 213,
+ 266, 267, 268, 269, 270, 215, 215, 118, 160, 218,
+ 118, 118, 118, 218, 118, 215, 118, 118, 118, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 219, 215, 219, 215, 215,
+ 215, 215, 215, 118, 218, 118, 215, 118, 218, 215,
+ 215, 223, 223, 223, 223, 223, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 215, 215, 9, 10,
+ 11, 225, 226, 215, 215, 215, 215, 215, 215, 215,
+ 8, 191, 382, 383, 215, 215, 215, 215, 215, 215,
+ 215, 215, 215, 215, 215, 215, 123, 413, 414, 215,
+ 219, 215, 219, 215, 215, 13, 33, 43, 49, 65,
+ 90, 98, 137, 154, 334, 335, 215, 215, 215, 215,
+ 215, 215, 123, 393, 394, 215, 51, 186, 191, 314,
+ 315, 215, 215, 164, 219, 319, 215, 218, 271, 218,
+ 216, 267, 215, 215, 4, 25, 40, 47, 64, 87,
+ 94, 106, 124, 125, 126, 174, 183, 188, 194, 198,
+ 200, 205, 211, 290, 291, 215, 215, 215, 51, 166,
+ 167, 168, 169, 170, 172, 173, 175, 176, 177, 180,
+ 182, 183, 185, 187, 189, 190, 193, 199, 286, 287,
+ 215, 215, 215, 215, 238, 240, 215, 64, 136, 165,
+ 174, 180, 194, 196, 197, 205, 211, 358, 359, 215,
+ 215, 64, 136, 165, 174, 180, 194, 196, 197, 205,
+ 211, 367, 368, 225, 225, 225, 215, 219, 215, 219,
+ 473, 469, 215, 219, 215, 219, 215, 219, 99, 321,
+ 215, 118, 218, 195, 226, 215, 215, 219, 215, 219,
+ 215, 219, 215, 219, 383, 414, 335, 394, 315, 215,
+ 40, 62, 64, 102, 173, 174, 206, 272, 273, 215,
+ 215, 291, 287, 359, 368, 215, 219, 273
+};
+
+#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
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#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 (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). */
+
+#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 YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* 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
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#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
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ 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, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| 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++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ 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 (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return 2 if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+{
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULL;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ 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
+ tokens because there are none.
+ - The only way there can be no lookahead present (in yychar) is if
+ this state is a consistent state with a default action. Thus,
+ detecting the absence of a lookahead is sufficient to determine
+ that there is no unexpected or expected token to report. In that
+ case, just report a simple "syntax error".
+ - Don't assume there isn't a lookahead just because this state is a
+ consistent state with a default action. There might have been a
+ previous inconsistent state, consistent state with a non-default
+ action, or user semantic action that manipulated yychar.
+ - Of course, the expected token list depends on states to have
+ correct lookahead information, and it depends on the parser not
+ to perform extra reductions after fetching a lookahead from the
+ scanner and before detecting a syntax error. Thus, state merging
+ (from LALR or IELR) and default reductions corrupt the expected
+ token list. However, the list is correct for canonical LR with
+ one exception: it will still contain any token that will not be
+ accepted due to an error action in a later state.
+ */
+ if (yytoken != YYEMPTY)
+ {
+ int yyn = yypact[*yyssp];
+ yyarg[yycount++] = yytname[yytoken];
+ if (!yypact_value_is_default (yyn))
+ {
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. In other words, skip the first -YYN actions for
+ this state because they are default actions. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yyx;
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+
+ switch (yycount)
+ {
+# define YYCASE_(N, S) \
+ case N: \
+ yyformat = S; \
+ break
+ YYCASE_(0, YY_("syntax error"));
+ YYCASE_(1, YY_("syntax error, unexpected %s"));
+ YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+ YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+ YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+ YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+ }
+
+ yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+
+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
+
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ {
+ char *yyp = *yymsg;
+ int yyi = 0;
+ while ((*yyp = *yyformat) != '\0')
+ if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyformat += 2;
+ }
+ else
+ {
+ yyp++;
+ yyformat++;
+ }
+ }
+ return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ YYUSE (yyvaluep);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+
+
+
+
+/* The lookahead symbol. */
+int yychar;
+
+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#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.
+
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ YYSIZE_T yystacksize;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken;
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ yytoken = 0;
+ yyss = yyssa;
+ yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+ yyssp = yyss;
+ yyvsp = yyvs;
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss_alloc, yyss);
+ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ if (yystate == YYFINAL)
+ YYACCEPT;
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ lookahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to lookahead token. */
+ yyn = yypact[yystate];
+ if (yypact_value_is_default (yyn))
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the lookahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 26:
+/* Line 1787 of yacc.c */
+#line 359 "conf_parser.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 28:
+/* Line 1787 of yacc.c */
+#line 361 "conf_parser.y"
+ {
+ (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
+ }
+ break;
+
+ case 29:
+/* Line 1787 of yacc.c */
+#line 365 "conf_parser.y"
+ {
+ (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
+ }
+ break;
+
+ case 30:
+/* Line 1787 of yacc.c */
+#line 369 "conf_parser.y"
+ {
+ (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
+ }
+ break;
+
+ case 31:
+/* Line 1787 of yacc.c */
+#line 373 "conf_parser.y"
+ {
+ (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
+ }
+ break;
+
+ case 32:
+/* Line 1787 of yacc.c */
+#line 377 "conf_parser.y"
+ {
+ (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
+ }
+ break;
+
+ case 33:
+/* Line 1787 of yacc.c */
+#line 381 "conf_parser.y"
+ {
+ (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
+ }
+ break;
+
+ case 34:
+/* Line 1787 of yacc.c */
+#line 386 "conf_parser.y"
+ { (yyval.number) = 0; }
+ break;
+
+ case 36:
+/* Line 1787 of yacc.c */
+#line 387 "conf_parser.y"
+ { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
+ break;
+
+ case 37:
+/* Line 1787 of yacc.c */
+#line 388 "conf_parser.y"
+ { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
+ break;
+
+ case 38:
+/* Line 1787 of yacc.c */
+#line 389 "conf_parser.y"
+ { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
+ break;
+
+ case 39:
+/* Line 1787 of yacc.c */
+#line 390 "conf_parser.y"
+ { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
+ break;
+
+ case 46:
+/* Line 1787 of yacc.c */
+#line 404 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ add_conf_module(libio_basename(yylval.string));
+}
+ break;
+
+ case 47:
+/* Line 1787 of yacc.c */
+#line 410 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ mod_add_path(yylval.string);
+}
+ break;
+
+ case 71:
+/* Line 1787 of yacc.c */
+#line 435 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
+ SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
+#endif
+}
+ break;
+
+ case 72:
+/* Line 1787 of yacc.c */
+#line 441 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
+ SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
+#endif
+}
+ break;
+
+ case 75:
+/* Line 1787 of yacc.c */
+#line 450 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
+ SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
+#endif
+}
+ break;
+
+ case 76:
+/* Line 1787 of yacc.c */
+#line 456 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
+ SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
+#endif
+}
+ break;
+
+ case 77:
+/* Line 1787 of yacc.c */
+#line 464 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
+ {
+ if (!ServerInfo.rsa_private_key_file)
+ {
+ yyerror("No rsa_private_key_file specified, SSL disabled");
+ break;
+ }
+
+ if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
+ SSL_FILETYPE_PEM) <= 0 ||
+ SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
+ SSL_FILETYPE_PEM) <= 0)
+ {
+ yyerror(ERR_lib_error_string(ERR_get_error()));
+ break;
+ }
+
+ if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
+ SSL_FILETYPE_PEM) <= 0 ||
+ SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
+ SSL_FILETYPE_PEM) <= 0)
+ {
+ yyerror(ERR_lib_error_string(ERR_get_error()));
+ break;
+ }
+
+ if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
+ !SSL_CTX_check_private_key(ServerInfo.client_ctx))
+ {
+ yyerror(ERR_lib_error_string(ERR_get_error()));
+ break;
+ }
+ }
+#endif
+}
+ break;
+
+ case 78:
+/* Line 1787 of yacc.c */
+#line 503 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 1)
+ {
+ BIO *file;
+
+ if (ServerInfo.rsa_private_key)
+ {
+ RSA_free(ServerInfo.rsa_private_key);
+ ServerInfo.rsa_private_key = NULL;
+ }
+
+ if (ServerInfo.rsa_private_key_file)
+ {
+ MyFree(ServerInfo.rsa_private_key_file);
+ ServerInfo.rsa_private_key_file = NULL;
+ }
+
+ DupString(ServerInfo.rsa_private_key_file, yylval.string);
+
+ if ((file = BIO_new_file(yylval.string, "r")) == NULL)
+ {
+ yyerror("File open failed, ignoring");
+ break;
+ }
+
+ ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
+
+ BIO_set_close(file, BIO_CLOSE);
+ BIO_free(file);
+
+ if (ServerInfo.rsa_private_key == NULL)
+ {
+ yyerror("Couldn't extract key, ignoring");
+ break;
+ }
+
+ if (!RSA_check_key(ServerInfo.rsa_private_key))
+ {
+ RSA_free(ServerInfo.rsa_private_key);
+ ServerInfo.rsa_private_key = NULL;
+
+ yyerror("Invalid key, ignoring");
+ break;
+ }
+
+ /* require 2048 bit (256 byte) key */
+ if (RSA_size(ServerInfo.rsa_private_key) != 256)
+ {
+ RSA_free(ServerInfo.rsa_private_key);
+ ServerInfo.rsa_private_key = NULL;
+
+ yyerror("Not a 2048 bit key, ignoring");
+ }
+ }
+#endif
+}
+ break;
+
+ case 79:
+/* Line 1787 of yacc.c */
+#line 562 "conf_parser.y"
+ {
+/* TBD - XXX: error reporting */
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
+ {
+ BIO *file = BIO_new_file(yylval.string, "r");
+
+ if (file)
+ {
+ DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
+
+ BIO_free(file);
+
+ if (dh)
+ {
+ if (DH_size(dh) < 128)
+ ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
+ else
+ SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
+
+ DH_free(dh);
+ }
+ }
+ }
+#endif
+}
+ break;
+
+ case 80:
+/* Line 1787 of yacc.c */
+#line 590 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
+ SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
+#endif
+}
+ break;
+
+ case 81:
+/* Line 1787 of yacc.c */
+#line 598 "conf_parser.y"
+ {
+ /* this isn't rehashable */
+ if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
+ {
+ if (valid_servname(yylval.string))
+ DupString(ServerInfo.name, yylval.string);
+ else
+ {
+ ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
+ exit(0);
+ }
+ }
+}
+ break;
+
+ case 82:
+/* Line 1787 of yacc.c */
+#line 613 "conf_parser.y"
+ {
+ /* this isn't rehashable */
+ if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
+ {
+ if (valid_sid(yylval.string))
+ DupString(ServerInfo.sid, yylval.string);
+ else
+ {
+ ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
+ exit(0);
+ }
+ }
+}
+ break;
+
+ case 83:
+/* Line 1787 of yacc.c */
+#line 628 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(ServerInfo.description);
+ DupString(ServerInfo.description,yylval.string);
+ }
+}
+ break;
+
+ case 84:
+/* Line 1787 of yacc.c */
+#line 637 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ char *p;
+
+ if ((p = strchr(yylval.string, ' ')) != NULL)
+ p = '\0';
+
+ MyFree(ServerInfo.network_name);
+ DupString(ServerInfo.network_name, yylval.string);
+ }
+}
+ break;
+
+ case 85:
+/* Line 1787 of yacc.c */
+#line 651 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(ServerInfo.network_desc);
+ DupString(ServerInfo.network_desc, yylval.string);
+ }
+}
+ break;
+
+ case 86:
+/* Line 1787 of yacc.c */
+#line 660 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
+ {
+ struct addrinfo hints, *res;
+
+ memset(&hints, 0, sizeof(hints));
+
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
+
+ if (getaddrinfo(yylval.string, NULL, &hints, &res))
+ ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
+ else
+ {
+ assert(res != NULL);
+
+ memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
+ ServerInfo.ip.ss.ss_family = res->ai_family;
+ ServerInfo.ip.ss_len = res->ai_addrlen;
+ freeaddrinfo(res);
+
+ ServerInfo.specific_ipv4_vhost = 1;
+ }
+ }
+}
+ break;
+
+ case 87:
+/* Line 1787 of yacc.c */
+#line 688 "conf_parser.y"
+ {
+#ifdef IPV6
+ if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
+ {
+ struct addrinfo hints, *res;
+
+ memset(&hints, 0, sizeof(hints));
+
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
+
+ if (getaddrinfo(yylval.string, NULL, &hints, &res))
+ ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
+ else
+ {
+ assert(res != NULL);
+
+ memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
+ ServerInfo.ip6.ss.ss_family = res->ai_family;
+ ServerInfo.ip6.ss_len = res->ai_addrlen;
+ freeaddrinfo(res);
+
+ ServerInfo.specific_ipv6_vhost = 1;
+ }
+ }
+#endif
+}
+ break;
+
+ case 88:
+/* Line 1787 of yacc.c */
+#line 718 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ recalc_fdlimit(NULL);
+
+ if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
+ {
+ char buf[IRCD_BUFSIZE];
+ ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
+ yyerror(buf);
+ }
+ else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
+ {
+ char buf[IRCD_BUFSIZE];
+ ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
+ yyerror(buf);
+ }
+ else
+ ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
+ }
+}
+ break;
+
+ case 89:
+/* Line 1787 of yacc.c */
+#line 741 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ServerInfo.hub = yylval.number;
+}
+ break;
+
+ case 97:
+/* Line 1787 of yacc.c */
+#line 756 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(AdminInfo.name);
+ DupString(AdminInfo.name, yylval.string);
+ }
+}
+ break;
+
+ case 98:
+/* Line 1787 of yacc.c */
+#line 765 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(AdminInfo.email);
+ DupString(AdminInfo.email, yylval.string);
+ }
+}
+ break;
+
+ case 99:
+/* Line 1787 of yacc.c */
+#line 774 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(AdminInfo.description);
+ DupString(AdminInfo.description, yylval.string);
+ }
+}
+ break;
+
+ case 106:
+/* Line 1787 of yacc.c */
+#line 792 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigLoggingEntry.use_logging = yylval.number;
+}
+ break;
+
+ case 107:
+/* Line 1787 of yacc.c */
+#line 798 "conf_parser.y"
+ {
+ lfile[0] = '\0';
+ ltype = 0;
+ lsize = 0;
+}
+ break;
+
+ case 108:
+/* Line 1787 of yacc.c */
+#line 803 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2 && ltype > 0)
+ log_add_file(ltype, lsize, lfile);
+}
+ break;
+
+ case 115:
+/* Line 1787 of yacc.c */
+#line 815 "conf_parser.y"
+ {
+ strlcpy(lfile, yylval.string, sizeof(lfile));
+}
+ break;
+
+ case 116:
+/* Line 1787 of yacc.c */
+#line 820 "conf_parser.y"
+ {
+ lsize = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 117:
+/* Line 1787 of yacc.c */
+#line 823 "conf_parser.y"
+ {
+ lsize = 0;
+}
+ break;
+
+ case 118:
+/* Line 1787 of yacc.c */
+#line 828 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = 0;
+}
+ break;
+
+ case 122:
+/* Line 1787 of yacc.c */
+#line 835 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_USER;
+}
+ break;
+
+ case 123:
+/* Line 1787 of yacc.c */
+#line 839 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_OPER;
+}
+ break;
+
+ case 124:
+/* Line 1787 of yacc.c */
+#line 843 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_GLINE;
+}
+ break;
+
+ case 125:
+/* Line 1787 of yacc.c */
+#line 847 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_DLINE;
+}
+ break;
+
+ case 126:
+/* Line 1787 of yacc.c */
+#line 851 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_KLINE;
+}
+ break;
+
+ case 127:
+/* Line 1787 of yacc.c */
+#line 855 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_KILL;
+}
+ break;
+
+ case 128:
+/* Line 1787 of yacc.c */
+#line 859 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ltype = LOG_TYPE_DEBUG;
+}
+ break;
+
+ case 129:
+/* Line 1787 of yacc.c */
+#line 869 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_conf = make_conf_item(OPER_TYPE);
+ yy_aconf = map_to_conf(yy_conf);
+ SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
+ }
+ else
+ {
+ MyFree(class_name);
+ class_name = NULL;
+ }
+}
+ break;
+
+ case 130:
+/* Line 1787 of yacc.c */
+#line 882 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct CollectItem *yy_tmp;
+ dlink_node *ptr;
+ dlink_node *next_ptr;
+
+ conf_add_class_to_conf(yy_conf, class_name);
+
+ /* Now, make sure there is a copy of the "base" given oper
+ * block in each of the collected copies
+ */
+
+ DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
+ {
+ struct AccessItem *new_aconf;
+ struct ConfItem *new_conf;
+ yy_tmp = ptr->data;
+
+ new_conf = make_conf_item(OPER_TYPE);
+ new_aconf = (struct AccessItem *)map_to_conf(new_conf);
+
+ new_aconf->flags = yy_aconf->flags;
+
+ if (yy_conf->name != NULL)
+ DupString(new_conf->name, yy_conf->name);
+ if (yy_tmp->user != NULL)
+ DupString(new_aconf->user, yy_tmp->user);
+ else
+ DupString(new_aconf->user, "*");
+ if (yy_tmp->host != NULL)
+ DupString(new_aconf->host, yy_tmp->host);
+ else
+ DupString(new_aconf->host, "*");
+
+ new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->addr,
+ &new_aconf->bits);
+
+ conf_add_class_to_conf(new_conf, class_name);
+ if (yy_aconf->passwd != NULL)
+ DupString(new_aconf->passwd, yy_aconf->passwd);
+
+ new_aconf->port = yy_aconf->port;
+#ifdef HAVE_LIBCRYPTO
+ if (yy_aconf->rsa_public_key_file != NULL)
+ {
+ BIO *file;
+
+ DupString(new_aconf->rsa_public_key_file,
+ yy_aconf->rsa_public_key_file);
+
+ file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
+ new_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
+ NULL, 0, NULL);
+ BIO_set_close(file, BIO_CLOSE);
+ BIO_free(file);
+ }
+#endif
+
+#ifdef HAVE_LIBCRYPTO
+ if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
+ && yy_tmp->host)
+#else
+ if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
+#endif
+ {
+ conf_add_class_to_conf(new_conf, class_name);
+ if (yy_tmp->name != NULL)
+ DupString(new_conf->name, yy_tmp->name);
+ }
+
+ dlinkDelete(&yy_tmp->node, &col_conf_list);
+ free_collect_item(yy_tmp);
+ }
+
+ yy_conf = NULL;
+ yy_aconf = NULL;
+
+
+ MyFree(class_name);
+ class_name = NULL;
+ }
+}
+ break;
+
+ case 142:
+/* Line 1787 of yacc.c */
+#line 972 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(yy_conf->name);
+ DupString(yy_conf->name, yylval.string);
+ }
+}
+ break;
+
+ case 143:
+/* Line 1787 of yacc.c */
+#line 981 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct split_nuh_item nuh;
+
+ nuh.nuhmask = yylval.string;
+ nuh.nickptr = NULL;
+ nuh.userptr = userbuf;
+ nuh.hostptr = hostbuf;
+
+ nuh.nicksize = 0;
+ nuh.usersize = sizeof(userbuf);
+ nuh.hostsize = sizeof(hostbuf);
+
+ split_nuh(&nuh);
+
+ if (yy_aconf->user == NULL)
+ {
+ DupString(yy_aconf->user, userbuf);
+ DupString(yy_aconf->host, hostbuf);
+
+ yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->addr,
+ &yy_aconf->bits);
+ }
+ else
+ {
+ struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
+
+ DupString(yy_tmp->user, userbuf);
+ DupString(yy_tmp->host, hostbuf);
+
+ dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
+ }
+ }
+}
+ break;
+
+ case 144:
+/* Line 1787 of yacc.c */
+#line 1018 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yy_aconf->passwd != NULL)
+ memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+
+ MyFree(yy_aconf->passwd);
+ DupString(yy_aconf->passwd, yylval.string);
+ }
+}
+ break;
+
+ case 145:
+/* Line 1787 of yacc.c */
+#line 1030 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yylval.number)
+ SetConfEncrypted(yy_aconf);
+ else
+ ClearConfEncrypted(yy_aconf);
+ }
+}
+ break;
+
+ case 146:
+/* Line 1787 of yacc.c */
+#line 1041 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2)
+ {
+ BIO *file;
+
+ if (yy_aconf->rsa_public_key != NULL)
+ {
+ RSA_free(yy_aconf->rsa_public_key);
+ yy_aconf->rsa_public_key = NULL;
+ }
+
+ if (yy_aconf->rsa_public_key_file != NULL)
+ {
+ MyFree(yy_aconf->rsa_public_key_file);
+ yy_aconf->rsa_public_key_file = NULL;
+ }
+
+ DupString(yy_aconf->rsa_public_key_file, yylval.string);
+ file = BIO_new_file(yylval.string, "r");
+
+ if (file == NULL)
+ {
+ yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
+ break;
+ }
+
+ yy_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
+
+ if (yy_aconf->rsa_public_key == NULL)
+ {
+ yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
+ break;
+ }
+
+ BIO_set_close(file, BIO_CLOSE);
+ BIO_free(file);
+ }
+#endif /* HAVE_LIBCRYPTO */
+}
+ break;
+
+ case 147:
+/* Line 1787 of yacc.c */
+#line 1083 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(class_name);
+ DupString(class_name, yylval.string);
+ }
+}
+ break;
+
+ case 148:
+/* Line 1787 of yacc.c */
+#line 1092 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes = 0;
+}
+ break;
+
+ case 152:
+/* Line 1787 of yacc.c */
+#line 1099 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_BOTS;
+}
+ break;
+
+ case 153:
+/* Line 1787 of yacc.c */
+#line 1103 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_CCONN;
+}
+ break;
+
+ case 154:
+/* Line 1787 of yacc.c */
+#line 1107 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_CCONN_FULL;
+}
+ break;
+
+ case 155:
+/* Line 1787 of yacc.c */
+#line 1111 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_DEAF;
+}
+ break;
+
+ case 156:
+/* Line 1787 of yacc.c */
+#line 1115 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_DEBUG;
+}
+ break;
+
+ case 157:
+/* Line 1787 of yacc.c */
+#line 1119 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_FULL;
+}
+ break;
+
+ case 158:
+/* Line 1787 of yacc.c */
+#line 1123 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_HIDDEN;
+}
+ break;
+
+ case 159:
+/* Line 1787 of yacc.c */
+#line 1127 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_SKILL;
+}
+ break;
+
+ case 160:
+/* Line 1787 of yacc.c */
+#line 1131 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_NCHANGE;
+}
+ break;
+
+ case 161:
+/* Line 1787 of yacc.c */
+#line 1135 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_REJ;
+}
+ break;
+
+ case 162:
+/* Line 1787 of yacc.c */
+#line 1139 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_UNAUTH;
+}
+ break;
+
+ case 163:
+/* Line 1787 of yacc.c */
+#line 1143 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_SPY;
+}
+ break;
+
+ case 164:
+/* Line 1787 of yacc.c */
+#line 1147 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_EXTERNAL;
+}
+ break;
+
+ case 165:
+/* Line 1787 of yacc.c */
+#line 1151 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_OPERWALL;
+}
+ break;
+
+ case 166:
+/* Line 1787 of yacc.c */
+#line 1155 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_SERVNOTICE;
+}
+ break;
+
+ case 167:
+/* Line 1787 of yacc.c */
+#line 1159 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_INVISIBLE;
+}
+ break;
+
+ case 168:
+/* Line 1787 of yacc.c */
+#line 1163 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_WALLOP;
+}
+ break;
+
+ case 169:
+/* Line 1787 of yacc.c */
+#line 1167 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_SOFTCALLERID;
+}
+ break;
+
+ case 170:
+/* Line 1787 of yacc.c */
+#line 1171 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_CALLERID;
+}
+ break;
+
+ case 171:
+/* Line 1787 of yacc.c */
+#line 1175 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->modes |= UMODE_LOCOPS;
+}
+ break;
+
+ case 172:
+/* Line 1787 of yacc.c */
+#line 1181 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port = 0;
+}
+ break;
+
+ case 176:
+/* Line 1787 of yacc.c */
+#line 1188 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
+}
+ break;
+
+ case 177:
+/* Line 1787 of yacc.c */
+#line 1192 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_REMOTE;
+}
+ break;
+
+ case 178:
+/* Line 1787 of yacc.c */
+#line 1196 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_K;
+}
+ break;
+
+ case 179:
+/* Line 1787 of yacc.c */
+#line 1200 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_UNKLINE;
+}
+ break;
+
+ case 180:
+/* Line 1787 of yacc.c */
+#line 1204 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_DLINE;
+}
+ break;
+
+ case 181:
+/* Line 1787 of yacc.c */
+#line 1208 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_UNDLINE;
+}
+ break;
+
+ case 182:
+/* Line 1787 of yacc.c */
+#line 1212 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_X;
+}
+ break;
+
+ case 183:
+/* Line 1787 of yacc.c */
+#line 1216 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_GLINE;
+}
+ break;
+
+ case 184:
+/* Line 1787 of yacc.c */
+#line 1220 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_DIE;
+}
+ break;
+
+ case 185:
+/* Line 1787 of yacc.c */
+#line 1224 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_RESTART;
+}
+ break;
+
+ case 186:
+/* Line 1787 of yacc.c */
+#line 1228 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_REHASH;
+}
+ break;
+
+ case 187:
+/* Line 1787 of yacc.c */
+#line 1232 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_ADMIN;
+}
+ break;
+
+ case 188:
+/* Line 1787 of yacc.c */
+#line 1236 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_N;
+}
+ break;
+
+ case 189:
+/* Line 1787 of yacc.c */
+#line 1240 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_OPERWALL;
+}
+ break;
+
+ case 190:
+/* Line 1787 of yacc.c */
+#line 1244 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_GLOBOPS;
+}
+ break;
+
+ case 191:
+/* Line 1787 of yacc.c */
+#line 1248 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_OPER_SPY;
+}
+ break;
+
+ case 192:
+/* Line 1787 of yacc.c */
+#line 1252 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_REMOTEBAN;
+}
+ break;
+
+ case 193:
+/* Line 1787 of yacc.c */
+#line 1256 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_SET;
+}
+ break;
+
+ case 194:
+/* Line 1787 of yacc.c */
+#line 1260 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port |= OPER_FLAG_MODULE;
+}
+ break;
+
+ case 195:
+/* Line 1787 of yacc.c */
+#line 1270 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ {
+ yy_conf = make_conf_item(CLASS_TYPE);
+ yy_class = map_to_conf(yy_conf);
+ }
+}
+ break;
+
+ case 196:
+/* Line 1787 of yacc.c */
+#line 1277 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ {
+ struct ConfItem *cconf = NULL;
+ struct ClassItem *class = NULL;
+
+ if (yy_class_name == NULL)
+ delete_conf_item(yy_conf);
+ else
+ {
+ cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
+
+ if (cconf != NULL) /* The class existed already */
+ {
+ int user_count = 0;
+
+ rebuild_cidr_class(cconf, yy_class);
+
+ class = map_to_conf(cconf);
+
+ user_count = class->curr_user_count;
+ memcpy(class, yy_class, sizeof(*class));
+ class->curr_user_count = user_count;
+ class->active = 1;
+
+ delete_conf_item(yy_conf);
+
+ MyFree(cconf->name); /* Allows case change of class name */
+ cconf->name = yy_class_name;
+ }
+ else /* Brand new class */
+ {
+ MyFree(yy_conf->name); /* just in case it was allocated */
+ yy_conf->name = yy_class_name;
+ yy_class->active = 1;
+ }
+ }
+
+ yy_class_name = NULL;
+ }
+}
+ break;
+
+ case 214:
+/* Line 1787 of yacc.c */
+#line 1335 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ {
+ MyFree(yy_class_name);
+ DupString(yy_class_name, yylval.string);
+ }
+}
+ break;
+
+ case 215:
+/* Line 1787 of yacc.c */
+#line 1344 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->ping_freq = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 216:
+/* Line 1787 of yacc.c */
+#line 1350 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->ping_warning = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 217:
+/* Line 1787 of yacc.c */
+#line 1356 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->max_perip = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 218:
+/* Line 1787 of yacc.c */
+#line 1362 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->con_freq = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 219:
+/* Line 1787 of yacc.c */
+#line 1368 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->max_total = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 220:
+/* Line 1787 of yacc.c */
+#line 1374 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->max_global = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 221:
+/* Line 1787 of yacc.c */
+#line 1380 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->max_local = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 222:
+/* Line 1787 of yacc.c */
+#line 1386 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->max_ident = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 223:
+/* Line 1787 of yacc.c */
+#line 1392 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->max_sendq = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 224:
+/* Line 1787 of yacc.c */
+#line 1398 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
+ yy_class->max_recvq = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 225:
+/* Line 1787 of yacc.c */
+#line 1405 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 226:
+/* Line 1787 of yacc.c */
+#line 1411 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 227:
+/* Line 1787 of yacc.c */
+#line 1417 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 1)
+ yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 228:
+/* Line 1787 of yacc.c */
+#line 1426 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ listener_address = NULL;
+ listener_flags = 0;
+ }
+}
+ break;
+
+ case 229:
+/* Line 1787 of yacc.c */
+#line 1433 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(listener_address);
+ listener_address = NULL;
+ }
+}
+ break;
+
+ case 230:
+/* Line 1787 of yacc.c */
+#line 1442 "conf_parser.y"
+ {
+ listener_flags = 0;
+}
+ break;
+
+ case 234:
+/* Line 1787 of yacc.c */
+#line 1448 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ listener_flags |= LISTENER_SSL;
+}
+ break;
+
+ case 235:
+/* Line 1787 of yacc.c */
+#line 1452 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ listener_flags |= LISTENER_HIDDEN;
+}
+ break;
+
+ case 236:
+/* Line 1787 of yacc.c */
+#line 1456 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ listener_flags |= LISTENER_SERVER;
+}
+ break;
+
+ case 244:
+/* Line 1787 of yacc.c */
+#line 1466 "conf_parser.y"
+ { listener_flags = 0; }
+ break;
+
+ case 248:
+/* Line 1787 of yacc.c */
+#line 1471 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if ((listener_flags & LISTENER_SSL))
+#ifdef HAVE_LIBCRYPTO
+ if (!ServerInfo.server_ctx)
+#endif
+ {
+ yyerror("SSL not available - port closed");
+ break;
+ }
+ add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
+ }
+}
+ break;
+
+ case 249:
+/* Line 1787 of yacc.c */
+#line 1485 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ int i;
+
+ if ((listener_flags & LISTENER_SSL))
+#ifdef HAVE_LIBCRYPTO
+ if (!ServerInfo.server_ctx)
+#endif
+ {
+ yyerror("SSL not available - port closed");
+ break;
+ }
+
+ for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
+ add_listener(i, listener_address, listener_flags);
+ }
+}
+ break;
+
+ case 250:
+/* Line 1787 of yacc.c */
+#line 1505 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(listener_address);
+ DupString(listener_address, yylval.string);
+ }
+}
+ break;
+
+ case 251:
+/* Line 1787 of yacc.c */
+#line 1514 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(listener_address);
+ DupString(listener_address, yylval.string);
+ }
+}
+ break;
+
+ case 252:
+/* Line 1787 of yacc.c */
+#line 1526 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_conf = make_conf_item(CLIENT_TYPE);
+ yy_aconf = map_to_conf(yy_conf);
+ }
+ else
+ {
+ MyFree(class_name);
+ class_name = NULL;
+ }
+}
+ break;
+
+ case 253:
+/* Line 1787 of yacc.c */
+#line 1538 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct CollectItem *yy_tmp = NULL;
+ dlink_node *ptr = NULL, *next_ptr = NULL;
+
+ if (yy_aconf->user && yy_aconf->host)
+ {
+ conf_add_class_to_conf(yy_conf, class_name);
+ add_conf_by_address(CONF_CLIENT, yy_aconf);
+ }
+ else
+ delete_conf_item(yy_conf);
+
+ /* copy over settings from first struct */
+ DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
+ {
+ struct AccessItem *new_aconf;
+ struct ConfItem *new_conf;
+
+ new_conf = make_conf_item(CLIENT_TYPE);
+ new_aconf = map_to_conf(new_conf);
+
+ yy_tmp = ptr->data;
+
+ assert(yy_tmp->user && yy_tmp->host);
+
+ if (yy_aconf->passwd != NULL)
+ DupString(new_aconf->passwd, yy_aconf->passwd);
+ if (yy_conf->name != NULL)
+ DupString(new_conf->name, yy_conf->name);
+ if (yy_aconf->passwd != NULL)
+ DupString(new_aconf->passwd, yy_aconf->passwd);
+
+ new_aconf->flags = yy_aconf->flags;
+ new_aconf->port = yy_aconf->port;
+
+ DupString(new_aconf->user, yy_tmp->user);
+ collapse(new_aconf->user);
+
+ DupString(new_aconf->host, yy_tmp->host);
+ collapse(new_aconf->host);
+
+ conf_add_class_to_conf(new_conf, class_name);
+ add_conf_by_address(CONF_CLIENT, new_aconf);
+ dlinkDelete(&yy_tmp->node, &col_conf_list);
+ free_collect_item(yy_tmp);
+ }
+
+ MyFree(class_name);
+ class_name = NULL;
+ yy_conf = NULL;
+ yy_aconf = NULL;
+ }
+}
+ break;
+
+ case 265:
+/* Line 1787 of yacc.c */
+#line 1600 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct CollectItem *yy_tmp = NULL;
+ struct split_nuh_item nuh;
+
+ nuh.nuhmask = yylval.string;
+ nuh.nickptr = NULL;
+ nuh.userptr = userbuf;
+ nuh.hostptr = hostbuf;
+
+ nuh.nicksize = 0;
+ nuh.usersize = sizeof(userbuf);
+ nuh.hostsize = sizeof(hostbuf);
+
+ split_nuh(&nuh);
+
+ if (yy_aconf->user == NULL)
+ {
+ DupString(yy_aconf->user, userbuf);
+ DupString(yy_aconf->host, hostbuf);
+ }
+ else
+ {
+ yy_tmp = MyMalloc(sizeof(struct CollectItem));
+
+ DupString(yy_tmp->user, userbuf);
+ DupString(yy_tmp->host, hostbuf);
+
+ dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
+ }
+ }
+}
+ break;
+
+ case 266:
+/* Line 1787 of yacc.c */
+#line 1635 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ /* be paranoid */
+ if (yy_aconf->passwd != NULL)
+ memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+
+ MyFree(yy_aconf->passwd);
+ DupString(yy_aconf->passwd, yylval.string);
+ }
+}
+ break;
+
+ case 267:
+/* Line 1787 of yacc.c */
+#line 1648 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(class_name);
+ DupString(class_name, yylval.string);
+ }
+}
+ break;
+
+ case 268:
+/* Line 1787 of yacc.c */
+#line 1657 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yylval.number)
+ SetConfEncrypted(yy_aconf);
+ else
+ ClearConfEncrypted(yy_aconf);
+ }
+}
+ break;
+
+ case 269:
+/* Line 1787 of yacc.c */
+#line 1668 "conf_parser.y"
+ {
+}
+ break;
+
+ case 273:
+/* Line 1787 of yacc.c */
+#line 1673 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
+}
+ break;
+
+ case 274:
+/* Line 1787 of yacc.c */
+#line 1677 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
+}
+ break;
+
+ case 275:
+/* Line 1787 of yacc.c */
+#line 1681 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
+}
+ break;
+
+ case 276:
+/* Line 1787 of yacc.c */
+#line 1685 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
+}
+ break;
+
+ case 277:
+/* Line 1787 of yacc.c */
+#line 1689 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
+}
+ break;
+
+ case 278:
+/* Line 1787 of yacc.c */
+#line 1693 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
+}
+ break;
+
+ case 279:
+/* Line 1787 of yacc.c */
+#line 1697 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
+}
+ break;
+
+ case 280:
+/* Line 1787 of yacc.c */
+#line 1701 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
+}
+ break;
+
+ case 281:
+/* Line 1787 of yacc.c */
+#line 1705 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
+}
+ break;
+
+ case 282:
+/* Line 1787 of yacc.c */
+#line 1711 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(yy_conf->name);
+
+ if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
+ {
+ DupString(yy_conf->name, yylval.string);
+ yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
+ }
+ else
+ {
+ ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
+ yy_conf->name = NULL;
+ }
+ }
+}
+ break;
+
+ case 283:
+/* Line 1787 of yacc.c */
+#line 1730 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_aconf->flags |= CONF_FLAGS_REDIR;
+ MyFree(yy_conf->name);
+ DupString(yy_conf->name, yylval.string);
+ }
+}
+ break;
+
+ case 284:
+/* Line 1787 of yacc.c */
+#line 1740 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_aconf->flags |= CONF_FLAGS_REDIR;
+ yy_aconf->port = (yyvsp[(3) - (4)].number);
+ }
+}
+ break;
+
+ case 285:
+/* Line 1787 of yacc.c */
+#line 1753 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(resv_reason);
+ resv_reason = NULL;
+ }
+}
+ break;
+
+ case 286:
+/* Line 1787 of yacc.c */
+#line 1760 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(resv_reason);
+ resv_reason = NULL;
+ }
+}
+ break;
+
+ case 293:
+/* Line 1787 of yacc.c */
+#line 1772 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(resv_reason);
+ DupString(resv_reason, yylval.string);
+ }
+}
+ break;
+
+ case 294:
+/* Line 1787 of yacc.c */
+#line 1781 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (IsChanPrefix(*yylval.string))
+ {
+ char def_reason[] = "No reason";
+
+ create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
+ }
+ }
+ /* ignore it for now.. but we really should make a warning if
+ * its an erroneous name --fl_ */
+}
+ break;
+
+ case 295:
+/* Line 1787 of yacc.c */
+#line 1796 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ char def_reason[] = "No reason";
+
+ create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
+ }
+}
+ break;
+
+ case 301:
+/* Line 1787 of yacc.c */
+#line 1814 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (valid_servname(yylval.string))
+ {
+ yy_conf = make_conf_item(SERVICE_TYPE);
+ DupString(yy_conf->name, yylval.string);
+ }
+ }
+}
+ break;
+
+ case 302:
+/* Line 1787 of yacc.c */
+#line 1829 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_conf = make_conf_item(ULINE_TYPE);
+ yy_match_item = map_to_conf(yy_conf);
+ yy_match_item->action = SHARED_ALL;
+ }
+}
+ break;
+
+ case 303:
+/* Line 1787 of yacc.c */
+#line 1837 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_conf = NULL;
+ }
+}
+ break;
+
+ case 310:
+/* Line 1787 of yacc.c */
+#line 1848 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(yy_conf->name);
+ DupString(yy_conf->name, yylval.string);
+ }
+}
+ break;
+
+ case 311:
+/* Line 1787 of yacc.c */
+#line 1857 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct split_nuh_item nuh;
+
+ nuh.nuhmask = yylval.string;
+ nuh.nickptr = NULL;
+ nuh.userptr = userbuf;
+ nuh.hostptr = hostbuf;
+
+ nuh.nicksize = 0;
+ nuh.usersize = sizeof(userbuf);
+ nuh.hostsize = sizeof(hostbuf);
+
+ split_nuh(&nuh);
+
+ DupString(yy_match_item->user, userbuf);
+ DupString(yy_match_item->host, hostbuf);
+ }
+}
+ break;
+
+ case 312:
+/* Line 1787 of yacc.c */
+#line 1879 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action = 0;
+}
+ break;
+
+ case 316:
+/* Line 1787 of yacc.c */
+#line 1886 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_KLINE;
+}
+ break;
+
+ case 317:
+/* Line 1787 of yacc.c */
+#line 1890 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_UNKLINE;
+}
+ break;
+
+ case 318:
+/* Line 1787 of yacc.c */
+#line 1894 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_DLINE;
+}
+ break;
+
+ case 319:
+/* Line 1787 of yacc.c */
+#line 1898 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_UNDLINE;
+}
+ break;
+
+ case 320:
+/* Line 1787 of yacc.c */
+#line 1902 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_XLINE;
+}
+ break;
+
+ case 321:
+/* Line 1787 of yacc.c */
+#line 1906 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_UNXLINE;
+}
+ break;
+
+ case 322:
+/* Line 1787 of yacc.c */
+#line 1910 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_RESV;
+}
+ break;
+
+ case 323:
+/* Line 1787 of yacc.c */
+#line 1914 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_UNRESV;
+}
+ break;
+
+ case 324:
+/* Line 1787 of yacc.c */
+#line 1918 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action |= SHARED_LOCOPS;
+}
+ break;
+
+ case 325:
+/* Line 1787 of yacc.c */
+#line 1922 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_match_item->action = SHARED_ALL;
+}
+ break;
+
+ case 326:
+/* Line 1787 of yacc.c */
+#line 1931 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_conf = make_conf_item(CLUSTER_TYPE);
+ yy_conf->flags = SHARED_ALL;
+ }
+}
+ break;
+
+ case 327:
+/* Line 1787 of yacc.c */
+#line 1938 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yy_conf->name == NULL)
+ DupString(yy_conf->name, "*");
+ yy_conf = NULL;
+ }
+}
+ break;
+
+ case 333:
+/* Line 1787 of yacc.c */
+#line 1951 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ DupString(yy_conf->name, yylval.string);
+}
+ break;
+
+ case 334:
+/* Line 1787 of yacc.c */
+#line 1957 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags = 0;
+}
+ break;
+
+ case 338:
+/* Line 1787 of yacc.c */
+#line 1964 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_KLINE;
+}
+ break;
+
+ case 339:
+/* Line 1787 of yacc.c */
+#line 1968 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_UNKLINE;
+}
+ break;
+
+ case 340:
+/* Line 1787 of yacc.c */
+#line 1972 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_DLINE;
+}
+ break;
+
+ case 341:
+/* Line 1787 of yacc.c */
+#line 1976 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_UNDLINE;
+}
+ break;
+
+ case 342:
+/* Line 1787 of yacc.c */
+#line 1980 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_XLINE;
+}
+ break;
+
+ case 343:
+/* Line 1787 of yacc.c */
+#line 1984 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_UNXLINE;
+}
+ break;
+
+ case 344:
+/* Line 1787 of yacc.c */
+#line 1988 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_RESV;
+}
+ break;
+
+ case 345:
+/* Line 1787 of yacc.c */
+#line 1992 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_UNRESV;
+}
+ break;
+
+ case 346:
+/* Line 1787 of yacc.c */
+#line 1996 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags |= SHARED_LOCOPS;
+}
+ break;
+
+ case 347:
+/* Line 1787 of yacc.c */
+#line 2000 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_conf->flags = SHARED_ALL;
+}
+ break;
+
+ case 348:
+/* Line 1787 of yacc.c */
+#line 2009 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ yy_conf = make_conf_item(SERVER_TYPE);
+ yy_aconf = map_to_conf(yy_conf);
+
+ /* defaults */
+ yy_aconf->port = PORTNUM;
+ }
+ else
+ {
+ MyFree(class_name);
+ class_name = NULL;
+ }
+}
+ break;
+
+ case 349:
+/* Line 1787 of yacc.c */
+#line 2024 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yy_aconf->host && yy_aconf->passwd && yy_aconf->spasswd)
+ {
+ if (conf_add_server(yy_conf, class_name) == -1)
+ delete_conf_item(yy_conf);
+ }
+ else
+ {
+ if (yy_conf->name != NULL)
+ {
+ if (yy_aconf->host == NULL)
+ yyerror("Ignoring connect block -- missing host");
+ else if (!yy_aconf->passwd || !yy_aconf->spasswd)
+ yyerror("Ignoring connect block -- missing password");
+ }
+
+ /* XXX
+ * This fixes a try_connections() core (caused by invalid class_ptr
+ * pointers) reported by metalrock. That's an ugly fix, but there
+ * is currently no better way. The entire config subsystem needs an
+ * rewrite ASAP. make_conf_item() shouldn't really add things onto
+ * a doubly linked list immediately without any sanity checks! -Michael
+ */
+ delete_conf_item(yy_conf);
+ }
+
+ MyFree(class_name);
+ class_name = NULL;
+ yy_conf = NULL;
+ yy_aconf = NULL;
+ }
+}
+ break;
+
+ case 366:
+/* Line 1787 of yacc.c */
+#line 2068 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(yy_conf->name);
+ DupString(yy_conf->name, yylval.string);
+ }
+}
+ break;
+
+ case 367:
+/* Line 1787 of yacc.c */
+#line 2077 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(yy_aconf->host);
+ DupString(yy_aconf->host, yylval.string);
+ }
+}
+ break;
+
+ case 368:
+/* Line 1787 of yacc.c */
+#line 2086 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct addrinfo hints, *res;
+
+ memset(&hints, 0, sizeof(hints));
+
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
+
+ if (getaddrinfo(yylval.string, NULL, &hints, &res))
+ ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
+ else
+ {
+ assert(res != NULL);
+
+ memcpy(&yy_aconf->bind, res->ai_addr, res->ai_addrlen);
+ yy_aconf->bind.ss.ss_family = res->ai_family;
+ yy_aconf->bind.ss_len = res->ai_addrlen;
+ freeaddrinfo(res);
+ }
+ }
+}
+ break;
+
+ case 369:
+/* Line 1787 of yacc.c */
+#line 2112 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if ((yyvsp[(3) - (4)].string)[0] == ':')
+ yyerror("Server passwords cannot begin with a colon");
+ else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
+ yyerror("Server passwords cannot contain spaces");
+ else {
+ if (yy_aconf->spasswd != NULL)
+ memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
+
+ MyFree(yy_aconf->spasswd);
+ DupString(yy_aconf->spasswd, yylval.string);
+ }
+ }
+}
+ break;
+
+ case 370:
+/* Line 1787 of yacc.c */
+#line 2130 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if ((yyvsp[(3) - (4)].string)[0] == ':')
+ yyerror("Server passwords cannot begin with a colon");
+ else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
+ yyerror("Server passwords cannot contain spaces");
+ else {
+ if (yy_aconf->passwd != NULL)
+ memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
+
+ MyFree(yy_aconf->passwd);
+ DupString(yy_aconf->passwd, yylval.string);
+ }
+ }
+}
+ break;
+
+ case 371:
+/* Line 1787 of yacc.c */
+#line 2148 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->port = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 372:
+/* Line 1787 of yacc.c */
+#line 2154 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->aftype = AF_INET;
+}
+ break;
+
+ case 373:
+/* Line 1787 of yacc.c */
+#line 2158 "conf_parser.y"
+ {
+#ifdef IPV6
+ if (conf_parser_ctx.pass == 2)
+ yy_aconf->aftype = AF_INET6;
+#endif
+}
+ break;
+
+ case 374:
+/* Line 1787 of yacc.c */
+#line 2166 "conf_parser.y"
+ {
+}
+ break;
+
+ case 378:
+/* Line 1787 of yacc.c */
+#line 2171 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ SetConfAllowAutoConn(yy_aconf);
+}
+ break;
+
+ case 379:
+/* Line 1787 of yacc.c */
+#line 2175 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ SetConfSSL(yy_aconf);
+}
+ break;
+
+ case 380:
+/* Line 1787 of yacc.c */
+#line 2181 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yylval.number)
+ yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
+ else
+ yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
+ }
+}
+ break;
+
+ case 381:
+/* Line 1787 of yacc.c */
+#line 2192 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ char *mask;
+
+ DupString(mask, yylval.string);
+ dlinkAdd(mask, make_dlink_node(), &yy_aconf->hub_list);
+ }
+}
+ break;
+
+ case 382:
+/* Line 1787 of yacc.c */
+#line 2203 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ char *mask;
+
+ DupString(mask, yylval.string);
+ dlinkAdd(mask, make_dlink_node(), &yy_aconf->leaf_list);
+ }
+}
+ break;
+
+ case 383:
+/* Line 1787 of yacc.c */
+#line 2214 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(class_name);
+ DupString(class_name, yylval.string);
+ }
+}
+ break;
+
+ case 384:
+/* Line 1787 of yacc.c */
+#line 2223 "conf_parser.y"
+ {
+#ifdef HAVE_LIBCRYPTO
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(yy_aconf->cipher_list);
+ DupString(yy_aconf->cipher_list, yylval.string);
+ }
+#else
+ if (conf_parser_ctx.pass == 2)
+ yyerror("Ignoring connect::ciphers -- no OpenSSL support");
+#endif
+}
+ break;
+
+ case 385:
+/* Line 1787 of yacc.c */
+#line 2241 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
+ regex_ban = 0;
+ }
+}
+ break;
+
+ case 386:
+/* Line 1787 of yacc.c */
+#line 2248 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (userbuf[0] && hostbuf[0])
+ {
+ if (regex_ban)
+ {
+#ifdef HAVE_LIBPCRE
+ void *exp_user = NULL;
+ void *exp_host = NULL;
+ const char *errptr = NULL;
+
+ if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
+ !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
+ {
+ ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
+ errptr);
+ break;
+ }
+
+ yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
+ yy_aconf->regexuser = exp_user;
+ yy_aconf->regexhost = exp_host;
+
+ DupString(yy_aconf->user, userbuf);
+ DupString(yy_aconf->host, hostbuf);
+
+ if (reasonbuf[0])
+ DupString(yy_aconf->reason, reasonbuf);
+ else
+ DupString(yy_aconf->reason, "No reason");
+#else
+ ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
+ break;
+#endif
+ }
+ else
+ {
+ find_and_delete_temporary(userbuf, hostbuf, CONF_KLINE);
+
+ yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
+
+ DupString(yy_aconf->user, userbuf);
+ DupString(yy_aconf->host, hostbuf);
+
+ if (reasonbuf[0])
+ DupString(yy_aconf->reason, reasonbuf);
+ else
+ DupString(yy_aconf->reason, "No reason");
+ add_conf_by_address(CONF_KLINE, yy_aconf);
+ }
+ }
+
+ yy_aconf = NULL;
+ }
+}
+ break;
+
+ case 387:
+/* Line 1787 of yacc.c */
+#line 2306 "conf_parser.y"
+ {
+}
+ break;
+
+ case 391:
+/* Line 1787 of yacc.c */
+#line 2311 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ regex_ban = 1;
+}
+ break;
+
+ case 398:
+/* Line 1787 of yacc.c */
+#line 2320 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ struct split_nuh_item nuh;
+
+ nuh.nuhmask = yylval.string;
+ nuh.nickptr = NULL;
+ nuh.userptr = userbuf;
+ nuh.hostptr = hostbuf;
+
+ nuh.nicksize = 0;
+ nuh.usersize = sizeof(userbuf);
+ nuh.hostsize = sizeof(hostbuf);
+
+ split_nuh(&nuh);
+ }
+}
+ break;
+
+ case 399:
+/* Line 1787 of yacc.c */
+#line 2339 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
+}
+ break;
+
+ case 400:
+/* Line 1787 of yacc.c */
+#line 2348 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ hostbuf[0] = reasonbuf[0] = '\0';
+}
+ break;
+
+ case 401:
+/* Line 1787 of yacc.c */
+#line 2352 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
+ {
+ find_and_delete_temporary(NULL, hostbuf, CONF_DLINE);
+
+ yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
+ DupString(yy_aconf->host, hostbuf);
+
+ if (reasonbuf[0])
+ DupString(yy_aconf->reason, reasonbuf);
+ else
+ DupString(yy_aconf->reason, "No reason");
+ add_conf_by_address(CONF_DLINE, yy_aconf);
+ yy_aconf = NULL;
+ }
+ }
+}
+ break;
+
+ case 407:
+/* Line 1787 of yacc.c */
+#line 2376 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
+}
+ break;
+
+ case 408:
+/* Line 1787 of yacc.c */
+#line 2382 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
+}
+ break;
+
+ case 414:
+/* Line 1787 of yacc.c */
+#line 2396 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
+ {
+ yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
+ DupString(yy_aconf->host, yylval.string);
+
+ add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
+ yy_aconf = NULL;
+ }
+ }
+}
+ break;
+
+ case 415:
+/* Line 1787 of yacc.c */
+#line 2414 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ regex_ban = 0;
+ reasonbuf[0] = gecos_name[0] = '\0';
+ }
+}
+ break;
+
+ case 416:
+/* Line 1787 of yacc.c */
+#line 2421 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (gecos_name[0])
+ {
+ if (regex_ban)
+ {
+#ifdef HAVE_LIBPCRE
+ void *exp_p = NULL;
+ const char *errptr = NULL;
+
+ if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
+ {
+ ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
+ errptr);
+ break;
+ }
+
+ yy_conf = make_conf_item(RXLINE_TYPE);
+ yy_conf->regexpname = exp_p;
+#else
+ ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
+ break;
+#endif
+ }
+ else
+ yy_conf = make_conf_item(XLINE_TYPE);
+
+ yy_match_item = map_to_conf(yy_conf);
+ DupString(yy_conf->name, gecos_name);
+
+ if (reasonbuf[0])
+ DupString(yy_match_item->reason, reasonbuf);
+ else
+ DupString(yy_match_item->reason, "No reason");
+ }
+ }
+}
+ break;
+
+ case 417:
+/* Line 1787 of yacc.c */
+#line 2461 "conf_parser.y"
+ {
+}
+ break;
+
+ case 421:
+/* Line 1787 of yacc.c */
+#line 2466 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ regex_ban = 1;
+}
+ break;
+
+ case 428:
+/* Line 1787 of yacc.c */
+#line 2475 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
+}
+ break;
+
+ case 429:
+/* Line 1787 of yacc.c */
+#line 2481 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
+}
+ break;
+
+ case 483:
+/* Line 1787 of yacc.c */
+#line 2526 "conf_parser.y"
+ {
+ ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 484:
+/* Line 1787 of yacc.c */
+#line 2531 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigFileEntry.glines = yylval.number;
+}
+ break;
+
+ case 485:
+/* Line 1787 of yacc.c */
+#line 2537 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 486:
+/* Line 1787 of yacc.c */
+#line 2543 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 487:
+/* Line 1787 of yacc.c */
+#line 2549 "conf_parser.y"
+ {
+ ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 488:
+/* Line 1787 of yacc.c */
+#line 2554 "conf_parser.y"
+ {
+ ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 489:
+/* Line 1787 of yacc.c */
+#line 2559 "conf_parser.y"
+ {
+ ConfigFileEntry.tkline_expire_notices = yylval.number;
+}
+ break;
+
+ case 490:
+/* Line 1787 of yacc.c */
+#line 2564 "conf_parser.y"
+ {
+ ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 491:
+/* Line 1787 of yacc.c */
+#line 2569 "conf_parser.y"
+ {
+ ConfigFileEntry.hide_spoof_ips = yylval.number;
+}
+ break;
+
+ case 492:
+/* Line 1787 of yacc.c */
+#line 2574 "conf_parser.y"
+ {
+ ConfigFileEntry.ignore_bogus_ts = yylval.number;
+}
+ break;
+
+ case 493:
+/* Line 1787 of yacc.c */
+#line 2579 "conf_parser.y"
+ {
+ ConfigFileEntry.disable_remote = yylval.number;
+}
+ break;
+
+ case 494:
+/* Line 1787 of yacc.c */
+#line 2584 "conf_parser.y"
+ {
+ ConfigFileEntry.failed_oper_notice = yylval.number;
+}
+ break;
+
+ case 495:
+/* Line 1787 of yacc.c */
+#line 2589 "conf_parser.y"
+ {
+ ConfigFileEntry.anti_nick_flood = yylval.number;
+}
+ break;
+
+ case 496:
+/* Line 1787 of yacc.c */
+#line 2594 "conf_parser.y"
+ {
+ ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 497:
+/* Line 1787 of yacc.c */
+#line 2599 "conf_parser.y"
+ {
+ ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 498:
+/* Line 1787 of yacc.c */
+#line 2604 "conf_parser.y"
+ {
+ ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 499:
+/* Line 1787 of yacc.c */
+#line 2609 "conf_parser.y"
+ {
+ ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 500:
+/* Line 1787 of yacc.c */
+#line 2614 "conf_parser.y"
+ {
+ ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 501:
+/* Line 1787 of yacc.c */
+#line 2619 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 502:
+/* Line 1787 of yacc.c */
+#line 2625 "conf_parser.y"
+ {
+ if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
+ {
+ ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
+ ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
+ ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
+ exit(0);
+ }
+}
+ break;
+
+ case 503:
+/* Line 1787 of yacc.c */
+#line 2636 "conf_parser.y"
+ {
+ ConfigFileEntry.invisible_on_connect = yylval.number;
+}
+ break;
+
+ case 504:
+/* Line 1787 of yacc.c */
+#line 2641 "conf_parser.y"
+ {
+ ConfigFileEntry.warn_no_nline = yylval.number;
+}
+ break;
+
+ case 505:
+/* Line 1787 of yacc.c */
+#line 2646 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_e_disabled = yylval.number;
+}
+ break;
+
+ case 506:
+/* Line 1787 of yacc.c */
+#line 2651 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_o_oper_only = yylval.number;
+}
+ break;
+
+ case 507:
+/* Line 1787 of yacc.c */
+#line 2656 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_P_oper_only = yylval.number;
+}
+ break;
+
+ case 508:
+/* Line 1787 of yacc.c */
+#line 2661 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
+}
+ break;
+
+ case 509:
+/* Line 1787 of yacc.c */
+#line 2664 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_k_oper_only = 1;
+}
+ break;
+
+ case 510:
+/* Line 1787 of yacc.c */
+#line 2669 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
+}
+ break;
+
+ case 511:
+/* Line 1787 of yacc.c */
+#line 2672 "conf_parser.y"
+ {
+ ConfigFileEntry.stats_i_oper_only = 1;
+}
+ break;
+
+ case 512:
+/* Line 1787 of yacc.c */
+#line 2677 "conf_parser.y"
+ {
+ ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 513:
+/* Line 1787 of yacc.c */
+#line 2682 "conf_parser.y"
+ {
+ ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 514:
+/* Line 1787 of yacc.c */
+#line 2687 "conf_parser.y"
+ {
+ ConfigFileEntry.opers_bypass_callerid = yylval.number;
+}
+ break;
+
+ case 515:
+/* Line 1787 of yacc.c */
+#line 2692 "conf_parser.y"
+ {
+ ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 516:
+/* Line 1787 of yacc.c */
+#line 2697 "conf_parser.y"
+ {
+ ConfigFileEntry.short_motd = yylval.number;
+}
+ break;
+
+ case 517:
+/* Line 1787 of yacc.c */
+#line 2702 "conf_parser.y"
+ {
+ ConfigFileEntry.no_oper_flood = yylval.number;
+}
+ break;
+
+ case 518:
+/* Line 1787 of yacc.c */
+#line 2707 "conf_parser.y"
+ {
+ ConfigFileEntry.true_no_oper_flood = yylval.number;
+}
+ break;
+
+ case 519:
+/* Line 1787 of yacc.c */
+#line 2712 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_pass_resv = yylval.number;
+}
+ break;
+
+ case 520:
+/* Line 1787 of yacc.c */
+#line 2717 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (strlen(yylval.string) > LOCALE_LENGTH-2)
+ yylval.string[LOCALE_LENGTH-1] = '\0';
+
+ set_locale(yylval.string);
+ }
+}
+ break;
+
+ case 521:
+/* Line 1787 of yacc.c */
+#line 2728 "conf_parser.y"
+ {
+ ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 522:
+/* Line 1787 of yacc.c */
+#line 2733 "conf_parser.y"
+ {
+ ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 523:
+/* Line 1787 of yacc.c */
+#line 2738 "conf_parser.y"
+ {
+ ConfigFileEntry.use_egd = yylval.number;
+}
+ break;
+
+ case 524:
+/* Line 1787 of yacc.c */
+#line 2743 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(ConfigFileEntry.egdpool_path);
+ DupString(ConfigFileEntry.egdpool_path, yylval.string);
+ }
+}
+ break;
+
+ case 525:
+/* Line 1787 of yacc.c */
+#line 2752 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
+ {
+ MyFree(ConfigFileEntry.service_name);
+ DupString(ConfigFileEntry.service_name, yylval.string);
+ }
+}
+ break;
+
+ case 526:
+/* Line 1787 of yacc.c */
+#line 2761 "conf_parser.y"
+ {
+ ConfigFileEntry.ping_cookie = yylval.number;
+}
+ break;
+
+ case 527:
+/* Line 1787 of yacc.c */
+#line 2766 "conf_parser.y"
+ {
+ ConfigFileEntry.disable_auth = yylval.number;
+}
+ break;
+
+ case 528:
+/* Line 1787 of yacc.c */
+#line 2771 "conf_parser.y"
+ {
+ ConfigFileEntry.throttle_time = yylval.number;
+}
+ break;
+
+ case 529:
+/* Line 1787 of yacc.c */
+#line 2776 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes = 0;
+}
+ break;
+
+ case 533:
+/* Line 1787 of yacc.c */
+#line 2782 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_BOTS;
+}
+ break;
+
+ case 534:
+/* Line 1787 of yacc.c */
+#line 2785 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_CCONN;
+}
+ break;
+
+ case 535:
+/* Line 1787 of yacc.c */
+#line 2788 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
+}
+ break;
+
+ case 536:
+/* Line 1787 of yacc.c */
+#line 2791 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_DEAF;
+}
+ break;
+
+ case 537:
+/* Line 1787 of yacc.c */
+#line 2794 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
+}
+ break;
+
+ case 538:
+/* Line 1787 of yacc.c */
+#line 2797 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_FULL;
+}
+ break;
+
+ case 539:
+/* Line 1787 of yacc.c */
+#line 2800 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
+}
+ break;
+
+ case 540:
+/* Line 1787 of yacc.c */
+#line 2803 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_SKILL;
+}
+ break;
+
+ case 541:
+/* Line 1787 of yacc.c */
+#line 2806 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
+}
+ break;
+
+ case 542:
+/* Line 1787 of yacc.c */
+#line 2809 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_REJ;
+}
+ break;
+
+ case 543:
+/* Line 1787 of yacc.c */
+#line 2812 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
+}
+ break;
+
+ case 544:
+/* Line 1787 of yacc.c */
+#line 2815 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_SPY;
+}
+ break;
+
+ case 545:
+/* Line 1787 of yacc.c */
+#line 2818 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
+}
+ break;
+
+ case 546:
+/* Line 1787 of yacc.c */
+#line 2821 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
+}
+ break;
+
+ case 547:
+/* Line 1787 of yacc.c */
+#line 2824 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
+}
+ break;
+
+ case 548:
+/* Line 1787 of yacc.c */
+#line 2827 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
+}
+ break;
+
+ case 549:
+/* Line 1787 of yacc.c */
+#line 2830 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
+}
+ break;
+
+ case 550:
+/* Line 1787 of yacc.c */
+#line 2833 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
+}
+ break;
+
+ case 551:
+/* Line 1787 of yacc.c */
+#line 2836 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
+}
+ break;
+
+ case 552:
+/* Line 1787 of yacc.c */
+#line 2839 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
+}
+ break;
+
+ case 553:
+/* Line 1787 of yacc.c */
+#line 2844 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes = 0;
+}
+ break;
+
+ case 557:
+/* Line 1787 of yacc.c */
+#line 2850 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
+}
+ break;
+
+ case 558:
+/* Line 1787 of yacc.c */
+#line 2853 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
+}
+ break;
+
+ case 559:
+/* Line 1787 of yacc.c */
+#line 2856 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
+}
+ break;
+
+ case 560:
+/* Line 1787 of yacc.c */
+#line 2859 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
+}
+ break;
+
+ case 561:
+/* Line 1787 of yacc.c */
+#line 2862 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
+}
+ break;
+
+ case 562:
+/* Line 1787 of yacc.c */
+#line 2865 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
+}
+ break;
+
+ case 563:
+/* Line 1787 of yacc.c */
+#line 2868 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
+}
+ break;
+
+ case 564:
+/* Line 1787 of yacc.c */
+#line 2871 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
+}
+ break;
+
+ case 565:
+/* Line 1787 of yacc.c */
+#line 2874 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
+}
+ break;
+
+ case 566:
+/* Line 1787 of yacc.c */
+#line 2877 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
+}
+ break;
+
+ case 567:
+/* Line 1787 of yacc.c */
+#line 2880 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
+}
+ break;
+
+ case 568:
+/* Line 1787 of yacc.c */
+#line 2883 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
+}
+ break;
+
+ case 569:
+/* Line 1787 of yacc.c */
+#line 2886 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
+}
+ break;
+
+ case 570:
+/* Line 1787 of yacc.c */
+#line 2889 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
+}
+ break;
+
+ case 571:
+/* Line 1787 of yacc.c */
+#line 2892 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
+}
+ break;
+
+ case 572:
+/* Line 1787 of yacc.c */
+#line 2895 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
+}
+ break;
+
+ case 573:
+/* Line 1787 of yacc.c */
+#line 2898 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
+}
+ break;
+
+ case 574:
+/* Line 1787 of yacc.c */
+#line 2901 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
+}
+ break;
+
+ case 575:
+/* Line 1787 of yacc.c */
+#line 2904 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
+}
+ break;
+
+ case 576:
+/* Line 1787 of yacc.c */
+#line 2907 "conf_parser.y"
+ {
+ ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
+}
+ break;
+
+ case 577:
+/* Line 1787 of yacc.c */
+#line 2912 "conf_parser.y"
+ {
+ ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 578:
+/* Line 1787 of yacc.c */
+#line 2917 "conf_parser.y"
+ {
+ ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 579:
+/* Line 1787 of yacc.c */
+#line 2922 "conf_parser.y"
+ {
+ ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 598:
+/* Line 1787 of yacc.c */
+#line 2945 "conf_parser.y"
+ {
+ ConfigChannel.disable_fake_channels = yylval.number;
+}
+ break;
+
+ case 599:
+/* Line 1787 of yacc.c */
+#line 2950 "conf_parser.y"
+ {
+ ConfigChannel.restrict_channels = yylval.number;
+}
+ break;
+
+ case 600:
+/* Line 1787 of yacc.c */
+#line 2955 "conf_parser.y"
+ {
+ ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 601:
+/* Line 1787 of yacc.c */
+#line 2960 "conf_parser.y"
+ {
+ ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 602:
+/* Line 1787 of yacc.c */
+#line 2965 "conf_parser.y"
+ {
+ ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 603:
+/* Line 1787 of yacc.c */
+#line 2970 "conf_parser.y"
+ {
+ ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 604:
+/* Line 1787 of yacc.c */
+#line 2975 "conf_parser.y"
+ {
+ ConfigChannel.quiet_on_ban = yylval.number;
+}
+ break;
+
+ case 605:
+/* Line 1787 of yacc.c */
+#line 2980 "conf_parser.y"
+ {
+ ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 606:
+/* Line 1787 of yacc.c */
+#line 2985 "conf_parser.y"
+ {
+ ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 607:
+/* Line 1787 of yacc.c */
+#line 2990 "conf_parser.y"
+ {
+ ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
+}
+ break;
+
+ case 608:
+/* Line 1787 of yacc.c */
+#line 2995 "conf_parser.y"
+ {
+ ConfigChannel.no_create_on_split = yylval.number;
+}
+ break;
+
+ case 609:
+/* Line 1787 of yacc.c */
+#line 3000 "conf_parser.y"
+ {
+ ConfigChannel.no_join_on_split = yylval.number;
+}
+ break;
+
+ case 610:
+/* Line 1787 of yacc.c */
+#line 3005 "conf_parser.y"
+ {
+ GlobalSetOptions.joinfloodcount = yylval.number;
+}
+ break;
+
+ case 611:
+/* Line 1787 of yacc.c */
+#line 3010 "conf_parser.y"
+ {
+ GlobalSetOptions.joinfloodtime = yylval.number;
+}
+ break;
+
+ case 622:
+/* Line 1787 of yacc.c */
+#line 3028 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigServerHide.flatten_links = yylval.number;
+}
+ break;
+
+ case 623:
+/* Line 1787 of yacc.c */
+#line 3034 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigServerHide.hide_servers = yylval.number;
+}
+ break;
+
+ case 624:
+/* Line 1787 of yacc.c */
+#line 3040 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ MyFree(ConfigServerHide.hidden_name);
+ DupString(ConfigServerHide.hidden_name, yylval.string);
+ }
+}
+ break;
+
+ case 625:
+/* Line 1787 of yacc.c */
+#line 3049 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ {
+ if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
+ {
+ eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
+ ConfigServerHide.links_disabled = 0;
+ }
+
+ ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
+ }
+}
+ break;
+
+ case 626:
+/* Line 1787 of yacc.c */
+#line 3063 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigServerHide.hidden = yylval.number;
+}
+ break;
+
+ case 627:
+/* Line 1787 of yacc.c */
+#line 3069 "conf_parser.y"
+ {
+ if (conf_parser_ctx.pass == 2)
+ ConfigServerHide.hide_server_ips = yylval.number;
+}
+ break;
+
+
+/* Line 1787 of yacc.c */
+#line 6844 "conf_parser.c"
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+ that yytoken be updated with the new translation. We take the
+ approach of translating immediately before every use of yytoken.
+ One alternative is translating here after every semantic action,
+ but that translation would be missed if the semantic action invokes
+ YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+ if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
+ incorrect destructor might then be invoked immediately. In the
+ case of YYERROR or YYBACKUP, subsequent parser actions might lead
+ to an incorrect destructor call or verbose syntax error message
+ before the lookahead is translated. */
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
+ {
+ char const *yymsgp = YY_("syntax error");
+ int yysyntax_error_status;
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ if (yysyntax_error_status == 0)
+ yymsgp = yymsg;
+ else if (yysyntax_error_status == 1)
+ {
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ if (!yymsg)
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = 2;
+ }
+ else
+ {
+ yysyntax_error_status = YYSYNTAX_ERROR;
+ yymsgp = yymsg;
+ }
+ }
+ yyerror (yymsgp);
+ if (yysyntax_error_status == 2)
+ goto yyexhaustedlab;
+ }
+# undef YYSYNTAX_ERROR
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#if !defined yyoverflow || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEMPTY)
+ {
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = YYTRANSLATE (yychar);
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+