ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
(Generate patch)

Comparing:
ircd-hybrid-8/src/conf_parser.c (file contents), Revision 1520 by michael, Wed Sep 5 15:50:02 2012 UTC vs.
ircd-hybrid/trunk/src/conf_parser.c (file contents), Revision 2244 by michael, Sat Jun 15 22:08:10 2013 UTC

# Line 1 | Line 1
1 < /* A Bison parser, made by GNU Bison 2.6.2.  */
1 > /* A Bison parser, made by GNU Bison 2.7.12-4996.  */
2  
3   /* Bison implementation for Yacc-like parsers in C
4    
5 <      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
5 >      Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6    
7     This program is free software: you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
# Line 44 | Line 44
44   #define YYBISON 1
45  
46   /* Bison version.  */
47 < #define YYBISON_VERSION "2.6.2"
47 > #define YYBISON_VERSION "2.7.12-4996"
48  
49   /* Skeleton name.  */
50   #define YYSKELETON_NAME "yacc.c"
# Line 62 | Line 62
62  
63  
64   /* Copy the first part of user declarations.  */
65 < /* Line 336 of yacc.c  */
65 > /* Line 371 of yacc.c  */
66   #line 25 "conf_parser.y"
67  
68  
# Line 75 | Line 75
75   #include "ircd.h"
76   #include "list.h"
77   #include "conf.h"
78 + #include "conf_class.h"
79   #include "event.h"
80   #include "log.h"
81   #include "client.h"     /* for UMODE_ALL only */
82   #include "irc_string.h"
82 #include "sprintf_irc.h"
83   #include "memory.h"
84   #include "modules.h"
85   #include "s_serv.h"
# Line 89 | Line 89
89   #include "resv.h"
90   #include "numeric.h"
91   #include "s_user.h"
92 + #include "motd.h"
93  
94   #ifdef HAVE_LIBCRYPTO
95   #include <openssl/rsa.h>
# Line 97 | Line 98
98   #include <openssl/dh.h>
99   #endif
100  
101 < int yylex(void);
101 > #include "rsa.h"
102  
103 < static char *class_name = NULL;
103 < static struct ConfItem *yy_conf = NULL;
104 < static struct AccessItem *yy_aconf = NULL;
105 < static struct MatchItem *yy_match_item = NULL;
106 < static struct ClassItem *yy_class = NULL;
107 < static char *yy_class_name = NULL;
108 <
109 < static dlink_list col_conf_list  = { NULL, NULL, 0 };
110 < static unsigned int listener_flags = 0;
111 < static unsigned int regex_ban = 0;
112 < static char userbuf[IRCD_BUFSIZE];
113 < static char hostbuf[IRCD_BUFSIZE];
114 < static char reasonbuf[REASONLEN + 1];
115 < static char gecos_name[REALLEN * 4];
116 < static char lfile[IRCD_BUFSIZE];
117 < static unsigned int ltype = 0;
118 < static unsigned int lsize = 0;
119 < static char *resv_reason = NULL;
120 < static char *listener_address = NULL;
103 > int yylex(void);
104  
105 < struct CollectItem
105 > static struct
106   {
107 <  dlink_node node;
108 <  char *name;
109 <  char *user;
110 <  char *host;
111 <  char *passwd;
112 <  int  port;
113 <  int  flags;
114 < #ifdef HAVE_LIBCRYPTO
115 <  char *rsa_public_key_file;
116 <  RSA *rsa_public_key;
117 < #endif
118 < };
107 >  struct {
108 >    dlink_list list;
109 >  } mask,
110 >    leaf,
111 >    hub;
112 >
113 >  struct {
114 >    char buf[IRCD_BUFSIZE];
115 >  } name,
116 >    user,
117 >    host,
118 >    addr,
119 >    bind,
120 >    file,
121 >    ciph,
122 >    cert,
123 >    rpass,
124 >    spass,
125 >    class;
126 >
127 >  struct {
128 >    unsigned int value;
129 >  } flags,
130 >    modes,
131 >    size,
132 >    type,
133 >    port,
134 >    aftype,
135 >    ping_freq,
136 >    max_perip,
137 >    con_freq,
138 >    min_idle,
139 >    max_idle,
140 >    max_total,
141 >    max_global,
142 >    max_local,
143 >    max_ident,
144 >    max_sendq,
145 >    max_recvq,
146 >    cidr_bitlen_ipv4,
147 >    cidr_bitlen_ipv6,
148 >    number_per_cidr;
149 > } block_state;
150  
151   static void
152 < free_collect_item(struct CollectItem *item)
152 > reset_block_state(void)
153   {
154 <  MyFree(item->name);
155 <  MyFree(item->user);
156 <  MyFree(item->host);
157 <  MyFree(item->passwd);
158 < #ifdef HAVE_LIBCRYPTO
159 <  MyFree(item->rsa_public_key_file);
160 < #endif
161 <  MyFree(item);
154 >  dlink_node *ptr = NULL, *ptr_next = NULL;
155 >
156 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.mask.list.head)
157 >  {
158 >    MyFree(ptr->data);
159 >    dlinkDelete(ptr, &block_state.mask.list);
160 >    free_dlink_node(ptr);
161 >  }
162 >
163 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.leaf.list.head)
164 >  {
165 >    MyFree(ptr->data);
166 >    dlinkDelete(ptr, &block_state.leaf.list);
167 >    free_dlink_node(ptr);
168 >  }
169 >
170 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.hub.list.head)
171 >  {
172 >    MyFree(ptr->data);
173 >    dlinkDelete(ptr, &block_state.hub.list);
174 >    free_dlink_node(ptr);
175 >  }
176 >
177 >  memset(&block_state, 0, sizeof(block_state));
178   }
179  
180  
181 < /* Line 336 of yacc.c  */
182 < #line 153 "conf_parser.c"
181 > /* Line 371 of yacc.c  */
182 > #line 183 "conf_parser.c"
183  
184   # ifndef YY_NULL
185   #  if defined __cplusplus && 201103L <= __cplusplus
# Line 169 | Line 199 | free_collect_item(struct CollectItem *it
199  
200   /* In a future release of Bison, this section will be replaced
201     by #include "y.tab.h".  */
202 < #ifndef YY_Y_TAB_H
203 < # define YY_Y_TAB_H
202 > #ifndef YY_YY_CONF_PARSER_H_INCLUDED
203 > # define YY_YY_CONF_PARSER_H_INCLUDED
204   /* Enabling traces.  */
205   #ifndef YYDEBUG
206   # define YYDEBUG 0
# Line 218 | Line 248 | extern int yydebug;
248       EXCEED_LIMIT = 288,
249       EXEMPT = 289,
250       FAILED_OPER_NOTICE = 290,
251 <     IRCD_FLAGS = 291,
252 <     FLATTEN_LINKS = 292,
253 <     GECOS = 293,
254 <     GENERAL = 294,
255 <     GLINE = 295,
256 <     GLINE_DURATION = 296,
257 <     GLINE_ENABLE = 297,
258 <     GLINE_EXEMPT = 298,
259 <     GLINE_REQUEST_DURATION = 299,
260 <     GLINE_MIN_CIDR = 300,
261 <     GLINE_MIN_CIDR6 = 301,
262 <     GLOBAL_KILL = 302,
263 <     IRCD_AUTH = 303,
264 <     NEED_IDENT = 304,
265 <     HAVENT_READ_CONF = 305,
266 <     HIDDEN = 306,
267 <     HIDDEN_NAME = 307,
268 <     HIDE_SERVER_IPS = 308,
269 <     HIDE_SERVERS = 309,
270 <     HIDE_SPOOF_IPS = 310,
271 <     HOST = 311,
272 <     HUB = 312,
273 <     HUB_MASK = 313,
274 <     IGNORE_BOGUS_TS = 314,
275 <     INVISIBLE_ON_CONNECT = 315,
276 <     IP = 316,
277 <     KILL = 317,
278 <     KILL_CHASE_TIME_LIMIT = 318,
279 <     KLINE = 319,
280 <     KLINE_EXEMPT = 320,
281 <     KLINE_REASON = 321,
282 <     KLINE_WITH_REASON = 322,
283 <     KNOCK_DELAY = 323,
284 <     KNOCK_DELAY_CHANNEL = 324,
285 <     LEAF_MASK = 325,
286 <     LINKS_DELAY = 326,
287 <     LISTEN = 327,
288 <     T_LOG = 328,
289 <     MAX_ACCEPT = 329,
290 <     MAX_BANS = 330,
291 <     MAX_CHANS_PER_OPER = 331,
292 <     MAX_CHANS_PER_USER = 332,
293 <     MAX_GLOBAL = 333,
294 <     MAX_IDENT = 334,
295 <     MAX_LOCAL = 335,
296 <     MAX_NICK_CHANGES = 336,
297 <     MAX_NICK_TIME = 337,
298 <     MAX_NUMBER = 338,
299 <     MAX_TARGETS = 339,
300 <     MAX_WATCH = 340,
301 <     MESSAGE_LOCALE = 341,
302 <     MIN_NONWILDCARD = 342,
303 <     MIN_NONWILDCARD_SIMPLE = 343,
304 <     MODULE = 344,
305 <     MODULES = 345,
306 <     NAME = 346,
307 <     NEED_PASSWORD = 347,
308 <     NETWORK_DESC = 348,
309 <     NETWORK_NAME = 349,
310 <     NICK = 350,
311 <     NICK_CHANGES = 351,
312 <     NO_CREATE_ON_SPLIT = 352,
313 <     NO_JOIN_ON_SPLIT = 353,
314 <     NO_OPER_FLOOD = 354,
315 <     NO_TILDE = 355,
316 <     NUMBER = 356,
317 <     NUMBER_PER_CIDR = 357,
318 <     NUMBER_PER_IP = 358,
319 <     OPERATOR = 359,
320 <     OPERS_BYPASS_CALLERID = 360,
321 <     OPER_ONLY_UMODES = 361,
322 <     OPER_PASS_RESV = 362,
323 <     OPER_SPY_T = 363,
324 <     OPER_UMODES = 364,
325 <     JOIN_FLOOD_COUNT = 365,
326 <     JOIN_FLOOD_TIME = 366,
327 <     PACE_WAIT = 367,
328 <     PACE_WAIT_SIMPLE = 368,
329 <     PASSWORD = 369,
330 <     PATH = 370,
331 <     PING_COOKIE = 371,
332 <     PING_TIME = 372,
333 <     PING_WARNING = 373,
334 <     PORT = 374,
335 <     QSTRING = 375,
336 <     QUIET_ON_BAN = 376,
337 <     REASON = 377,
338 <     REDIRPORT = 378,
339 <     REDIRSERV = 379,
340 <     REGEX_T = 380,
341 <     REHASH = 381,
342 <     TREJECT_HOLD_TIME = 382,
251 >     FLATTEN_LINKS = 291,
252 >     GECOS = 292,
253 >     GENERAL = 293,
254 >     GLINE = 294,
255 >     GLINE_DURATION = 295,
256 >     GLINE_ENABLE = 296,
257 >     GLINE_EXEMPT = 297,
258 >     GLINE_MIN_CIDR = 298,
259 >     GLINE_MIN_CIDR6 = 299,
260 >     GLINE_REQUEST_DURATION = 300,
261 >     GLOBAL_KILL = 301,
262 >     HAVENT_READ_CONF = 302,
263 >     HIDDEN = 303,
264 >     HIDDEN_NAME = 304,
265 >     HIDE_IDLE_FROM_OPERS = 305,
266 >     HIDE_SERVER_IPS = 306,
267 >     HIDE_SERVERS = 307,
268 >     HIDE_SERVICES = 308,
269 >     HIDE_SPOOF_IPS = 309,
270 >     HOST = 310,
271 >     HUB = 311,
272 >     HUB_MASK = 312,
273 >     IGNORE_BOGUS_TS = 313,
274 >     INVISIBLE_ON_CONNECT = 314,
275 >     IP = 315,
276 >     IRCD_AUTH = 316,
277 >     IRCD_FLAGS = 317,
278 >     IRCD_SID = 318,
279 >     JOIN_FLOOD_COUNT = 319,
280 >     JOIN_FLOOD_TIME = 320,
281 >     KILL = 321,
282 >     KILL_CHASE_TIME_LIMIT = 322,
283 >     KLINE = 323,
284 >     KLINE_EXEMPT = 324,
285 >     KNOCK_DELAY = 325,
286 >     KNOCK_DELAY_CHANNEL = 326,
287 >     LEAF_MASK = 327,
288 >     LINKS_DELAY = 328,
289 >     LISTEN = 329,
290 >     MASK = 330,
291 >     MAX_ACCEPT = 331,
292 >     MAX_BANS = 332,
293 >     MAX_CHANS_PER_OPER = 333,
294 >     MAX_CHANS_PER_USER = 334,
295 >     MAX_GLOBAL = 335,
296 >     MAX_IDENT = 336,
297 >     MAX_IDLE = 337,
298 >     MAX_LOCAL = 338,
299 >     MAX_NICK_CHANGES = 339,
300 >     MAX_NICK_LENGTH = 340,
301 >     MAX_NICK_TIME = 341,
302 >     MAX_NUMBER = 342,
303 >     MAX_TARGETS = 343,
304 >     MAX_TOPIC_LENGTH = 344,
305 >     MAX_WATCH = 345,
306 >     MIN_IDLE = 346,
307 >     MIN_NONWILDCARD = 347,
308 >     MIN_NONWILDCARD_SIMPLE = 348,
309 >     MODULE = 349,
310 >     MODULES = 350,
311 >     MOTD = 351,
312 >     NAME = 352,
313 >     NEED_IDENT = 353,
314 >     NEED_PASSWORD = 354,
315 >     NETWORK_DESC = 355,
316 >     NETWORK_NAME = 356,
317 >     NICK = 357,
318 >     NO_CREATE_ON_SPLIT = 358,
319 >     NO_JOIN_ON_SPLIT = 359,
320 >     NO_OPER_FLOOD = 360,
321 >     NO_TILDE = 361,
322 >     NUMBER = 362,
323 >     NUMBER_PER_CIDR = 363,
324 >     NUMBER_PER_IP = 364,
325 >     OPER_ONLY_UMODES = 365,
326 >     OPER_PASS_RESV = 366,
327 >     OPER_UMODES = 367,
328 >     OPERATOR = 368,
329 >     OPERS_BYPASS_CALLERID = 369,
330 >     PACE_WAIT = 370,
331 >     PACE_WAIT_SIMPLE = 371,
332 >     PASSWORD = 372,
333 >     PATH = 373,
334 >     PING_COOKIE = 374,
335 >     PING_TIME = 375,
336 >     PORT = 376,
337 >     QSTRING = 377,
338 >     RANDOM_IDLE = 378,
339 >     REASON = 379,
340 >     REDIRPORT = 380,
341 >     REDIRSERV = 381,
342 >     REHASH = 382,
343       REMOTE = 383,
344       REMOTEBAN = 384,
345 <     RESTRICT_CHANNELS = 385,
346 <     RSA_PRIVATE_KEY_FILE = 386,
347 <     RSA_PUBLIC_KEY_FILE = 387,
348 <     SSL_CERTIFICATE_FILE = 388,
349 <     SSL_DH_PARAM_FILE = 389,
350 <     T_SSL_CLIENT_METHOD = 390,
351 <     T_SSL_SERVER_METHOD = 391,
352 <     T_SSLV3 = 392,
353 <     T_TLSV1 = 393,
354 <     RESV = 394,
355 <     RESV_EXEMPT = 395,
356 <     SECONDS = 396,
357 <     MINUTES = 397,
358 <     HOURS = 398,
359 <     DAYS = 399,
360 <     WEEKS = 400,
361 <     SENDQ = 401,
362 <     SEND_PASSWORD = 402,
363 <     SERVERHIDE = 403,
364 <     SERVERINFO = 404,
365 <     IRCD_SID = 405,
366 <     TKLINE_EXPIRE_NOTICES = 406,
367 <     T_SHARED = 407,
368 <     T_CLUSTER = 408,
369 <     TYPE = 409,
370 <     SHORT_MOTD = 410,
371 <     SPOOF = 411,
372 <     SPOOF_NOTICE = 412,
373 <     STATS_E_DISABLED = 413,
374 <     STATS_I_OPER_ONLY = 414,
375 <     STATS_K_OPER_ONLY = 415,
376 <     STATS_O_OPER_ONLY = 416,
377 <     STATS_P_OPER_ONLY = 417,
378 <     TBOOL = 418,
379 <     TMASKED = 419,
380 <     TS_MAX_DELTA = 420,
381 <     TS_WARN_DELTA = 421,
382 <     TWODOTS = 422,
383 <     T_ALL = 423,
384 <     T_BOTS = 424,
385 <     T_SOFTCALLERID = 425,
386 <     T_CALLERID = 426,
387 <     T_CCONN = 427,
388 <     T_CCONN_FULL = 428,
389 <     T_SSL_CIPHER_LIST = 429,
390 <     T_DEAF = 430,
391 <     T_DEBUG = 431,
392 <     T_DLINE = 432,
393 <     T_EXTERNAL = 433,
394 <     T_FULL = 434,
395 <     T_INVISIBLE = 435,
396 <     T_IPV4 = 436,
397 <     T_IPV6 = 437,
398 <     T_LOCOPS = 438,
399 <     T_MAX_CLIENTS = 439,
400 <     T_NCHANGE = 440,
401 <     T_OPERWALL = 441,
402 <     T_RECVQ = 442,
403 <     T_REJ = 443,
404 <     T_SERVER = 444,
405 <     T_SERVNOTICE = 445,
406 <     T_SET = 446,
407 <     T_SKILL = 447,
408 <     T_SPY = 448,
409 <     T_SSL = 449,
410 <     T_UMODES = 450,
411 <     T_UNAUTH = 451,
412 <     T_UNDLINE = 452,
413 <     T_UNLIMITED = 453,
414 <     T_UNRESV = 454,
415 <     T_UNXLINE = 455,
416 <     T_GLOBOPS = 456,
417 <     T_WALLOP = 457,
418 <     T_RESTART = 458,
419 <     T_SERVICE = 459,
420 <     T_SERVICES_NAME = 460,
421 <     THROTTLE_TIME = 461,
422 <     TRUE_NO_OPER_FLOOD = 462,
423 <     UNKLINE = 463,
424 <     USER = 464,
425 <     USE_EGD = 465,
426 <     USE_LOGGING = 466,
427 <     USE_WHOIS_ACTUALLY = 467,
428 <     VHOST = 468,
429 <     VHOST6 = 469,
430 <     XLINE = 470,
431 <     WARN_NO_NLINE = 471,
432 <     T_SIZE = 472,
433 <     T_FILE = 473
345 >     RESV = 385,
346 >     RESV_EXEMPT = 386,
347 >     RSA_PRIVATE_KEY_FILE = 387,
348 >     RSA_PUBLIC_KEY_FILE = 388,
349 >     SECONDS = 389,
350 >     MINUTES = 390,
351 >     HOURS = 391,
352 >     DAYS = 392,
353 >     WEEKS = 393,
354 >     MONTHS = 394,
355 >     YEARS = 395,
356 >     SEND_PASSWORD = 396,
357 >     SENDQ = 397,
358 >     SERVERHIDE = 398,
359 >     SERVERINFO = 399,
360 >     SHORT_MOTD = 400,
361 >     SPOOF = 401,
362 >     SPOOF_NOTICE = 402,
363 >     SQUIT = 403,
364 >     SSL_CERTIFICATE_FILE = 404,
365 >     SSL_CERTIFICATE_FINGERPRINT = 405,
366 >     SSL_DH_PARAM_FILE = 406,
367 >     STATS_E_DISABLED = 407,
368 >     STATS_I_OPER_ONLY = 408,
369 >     STATS_K_OPER_ONLY = 409,
370 >     STATS_O_OPER_ONLY = 410,
371 >     STATS_P_OPER_ONLY = 411,
372 >     T_ALL = 412,
373 >     T_BOTS = 413,
374 >     T_CALLERID = 414,
375 >     T_CCONN = 415,
376 >     T_CLUSTER = 416,
377 >     T_DEAF = 417,
378 >     T_DEBUG = 418,
379 >     T_DLINE = 419,
380 >     T_EXTERNAL = 420,
381 >     T_FARCONNECT = 421,
382 >     T_FILE = 422,
383 >     T_FULL = 423,
384 >     T_GLOBOPS = 424,
385 >     T_INVISIBLE = 425,
386 >     T_IPV4 = 426,
387 >     T_IPV6 = 427,
388 >     T_LOCOPS = 428,
389 >     T_LOG = 429,
390 >     T_MAX_CLIENTS = 430,
391 >     T_NCHANGE = 431,
392 >     T_NONONREG = 432,
393 >     T_OPERWALL = 433,
394 >     T_RECVQ = 434,
395 >     T_REJ = 435,
396 >     T_RESTART = 436,
397 >     T_SERVER = 437,
398 >     T_SERVICE = 438,
399 >     T_SERVICES_NAME = 439,
400 >     T_SERVNOTICE = 440,
401 >     T_SET = 441,
402 >     T_SHARED = 442,
403 >     T_SIZE = 443,
404 >     T_SKILL = 444,
405 >     T_SOFTCALLERID = 445,
406 >     T_SPY = 446,
407 >     T_SSL = 447,
408 >     T_SSL_CIPHER_LIST = 448,
409 >     T_SSL_CLIENT_METHOD = 449,
410 >     T_SSL_SERVER_METHOD = 450,
411 >     T_SSLV3 = 451,
412 >     T_TLSV1 = 452,
413 >     T_UMODES = 453,
414 >     T_UNAUTH = 454,
415 >     T_UNDLINE = 455,
416 >     T_UNLIMITED = 456,
417 >     T_UNRESV = 457,
418 >     T_UNXLINE = 458,
419 >     T_WALLOP = 459,
420 >     T_WALLOPS = 460,
421 >     T_WEBIRC = 461,
422 >     TBOOL = 462,
423 >     THROTTLE_TIME = 463,
424 >     TKLINE_EXPIRE_NOTICES = 464,
425 >     TMASKED = 465,
426 >     TRUE_NO_OPER_FLOOD = 466,
427 >     TS_MAX_DELTA = 467,
428 >     TS_WARN_DELTA = 468,
429 >     TWODOTS = 469,
430 >     TYPE = 470,
431 >     UNKLINE = 471,
432 >     USE_EGD = 472,
433 >     USE_LOGGING = 473,
434 >     USER = 474,
435 >     VHOST = 475,
436 >     VHOST6 = 476,
437 >     WARN_NO_NLINE = 477,
438 >     XLINE = 478
439     };
440   #endif
441   /* Tokens.  */
# Line 437 | Line 472 | extern int yydebug;
472   #define EXCEED_LIMIT 288
473   #define EXEMPT 289
474   #define FAILED_OPER_NOTICE 290
475 < #define IRCD_FLAGS 291
476 < #define FLATTEN_LINKS 292
477 < #define GECOS 293
478 < #define GENERAL 294
479 < #define GLINE 295
480 < #define GLINE_DURATION 296
481 < #define GLINE_ENABLE 297
482 < #define GLINE_EXEMPT 298
483 < #define GLINE_REQUEST_DURATION 299
484 < #define GLINE_MIN_CIDR 300
485 < #define GLINE_MIN_CIDR6 301
486 < #define GLOBAL_KILL 302
487 < #define IRCD_AUTH 303
488 < #define NEED_IDENT 304
489 < #define HAVENT_READ_CONF 305
490 < #define HIDDEN 306
491 < #define HIDDEN_NAME 307
492 < #define HIDE_SERVER_IPS 308
493 < #define HIDE_SERVERS 309
494 < #define HIDE_SPOOF_IPS 310
495 < #define HOST 311
496 < #define HUB 312
497 < #define HUB_MASK 313
498 < #define IGNORE_BOGUS_TS 314
499 < #define INVISIBLE_ON_CONNECT 315
500 < #define IP 316
501 < #define KILL 317
502 < #define KILL_CHASE_TIME_LIMIT 318
503 < #define KLINE 319
504 < #define KLINE_EXEMPT 320
505 < #define KLINE_REASON 321
506 < #define KLINE_WITH_REASON 322
507 < #define KNOCK_DELAY 323
508 < #define KNOCK_DELAY_CHANNEL 324
509 < #define LEAF_MASK 325
510 < #define LINKS_DELAY 326
511 < #define LISTEN 327
512 < #define T_LOG 328
513 < #define MAX_ACCEPT 329
514 < #define MAX_BANS 330
515 < #define MAX_CHANS_PER_OPER 331
516 < #define MAX_CHANS_PER_USER 332
517 < #define MAX_GLOBAL 333
518 < #define MAX_IDENT 334
519 < #define MAX_LOCAL 335
520 < #define MAX_NICK_CHANGES 336
521 < #define MAX_NICK_TIME 337
522 < #define MAX_NUMBER 338
523 < #define MAX_TARGETS 339
524 < #define MAX_WATCH 340
525 < #define MESSAGE_LOCALE 341
526 < #define MIN_NONWILDCARD 342
527 < #define MIN_NONWILDCARD_SIMPLE 343
528 < #define MODULE 344
529 < #define MODULES 345
530 < #define NAME 346
531 < #define NEED_PASSWORD 347
532 < #define NETWORK_DESC 348
533 < #define NETWORK_NAME 349
534 < #define NICK 350
535 < #define NICK_CHANGES 351
536 < #define NO_CREATE_ON_SPLIT 352
537 < #define NO_JOIN_ON_SPLIT 353
538 < #define NO_OPER_FLOOD 354
539 < #define NO_TILDE 355
540 < #define NUMBER 356
541 < #define NUMBER_PER_CIDR 357
542 < #define NUMBER_PER_IP 358
543 < #define OPERATOR 359
544 < #define OPERS_BYPASS_CALLERID 360
545 < #define OPER_ONLY_UMODES 361
546 < #define OPER_PASS_RESV 362
547 < #define OPER_SPY_T 363
548 < #define OPER_UMODES 364
549 < #define JOIN_FLOOD_COUNT 365
550 < #define JOIN_FLOOD_TIME 366
551 < #define PACE_WAIT 367
552 < #define PACE_WAIT_SIMPLE 368
553 < #define PASSWORD 369
554 < #define PATH 370
555 < #define PING_COOKIE 371
556 < #define PING_TIME 372
557 < #define PING_WARNING 373
558 < #define PORT 374
559 < #define QSTRING 375
560 < #define QUIET_ON_BAN 376
561 < #define REASON 377
562 < #define REDIRPORT 378
563 < #define REDIRSERV 379
564 < #define REGEX_T 380
565 < #define REHASH 381
566 < #define TREJECT_HOLD_TIME 382
475 > #define FLATTEN_LINKS 291
476 > #define GECOS 292
477 > #define GENERAL 293
478 > #define GLINE 294
479 > #define GLINE_DURATION 295
480 > #define GLINE_ENABLE 296
481 > #define GLINE_EXEMPT 297
482 > #define GLINE_MIN_CIDR 298
483 > #define GLINE_MIN_CIDR6 299
484 > #define GLINE_REQUEST_DURATION 300
485 > #define GLOBAL_KILL 301
486 > #define HAVENT_READ_CONF 302
487 > #define HIDDEN 303
488 > #define HIDDEN_NAME 304
489 > #define HIDE_IDLE_FROM_OPERS 305
490 > #define HIDE_SERVER_IPS 306
491 > #define HIDE_SERVERS 307
492 > #define HIDE_SERVICES 308
493 > #define HIDE_SPOOF_IPS 309
494 > #define HOST 310
495 > #define HUB 311
496 > #define HUB_MASK 312
497 > #define IGNORE_BOGUS_TS 313
498 > #define INVISIBLE_ON_CONNECT 314
499 > #define IP 315
500 > #define IRCD_AUTH 316
501 > #define IRCD_FLAGS 317
502 > #define IRCD_SID 318
503 > #define JOIN_FLOOD_COUNT 319
504 > #define JOIN_FLOOD_TIME 320
505 > #define KILL 321
506 > #define KILL_CHASE_TIME_LIMIT 322
507 > #define KLINE 323
508 > #define KLINE_EXEMPT 324
509 > #define KNOCK_DELAY 325
510 > #define KNOCK_DELAY_CHANNEL 326
511 > #define LEAF_MASK 327
512 > #define LINKS_DELAY 328
513 > #define LISTEN 329
514 > #define MASK 330
515 > #define MAX_ACCEPT 331
516 > #define MAX_BANS 332
517 > #define MAX_CHANS_PER_OPER 333
518 > #define MAX_CHANS_PER_USER 334
519 > #define MAX_GLOBAL 335
520 > #define MAX_IDENT 336
521 > #define MAX_IDLE 337
522 > #define MAX_LOCAL 338
523 > #define MAX_NICK_CHANGES 339
524 > #define MAX_NICK_LENGTH 340
525 > #define MAX_NICK_TIME 341
526 > #define MAX_NUMBER 342
527 > #define MAX_TARGETS 343
528 > #define MAX_TOPIC_LENGTH 344
529 > #define MAX_WATCH 345
530 > #define MIN_IDLE 346
531 > #define MIN_NONWILDCARD 347
532 > #define MIN_NONWILDCARD_SIMPLE 348
533 > #define MODULE 349
534 > #define MODULES 350
535 > #define MOTD 351
536 > #define NAME 352
537 > #define NEED_IDENT 353
538 > #define NEED_PASSWORD 354
539 > #define NETWORK_DESC 355
540 > #define NETWORK_NAME 356
541 > #define NICK 357
542 > #define NO_CREATE_ON_SPLIT 358
543 > #define NO_JOIN_ON_SPLIT 359
544 > #define NO_OPER_FLOOD 360
545 > #define NO_TILDE 361
546 > #define NUMBER 362
547 > #define NUMBER_PER_CIDR 363
548 > #define NUMBER_PER_IP 364
549 > #define OPER_ONLY_UMODES 365
550 > #define OPER_PASS_RESV 366
551 > #define OPER_UMODES 367
552 > #define OPERATOR 368
553 > #define OPERS_BYPASS_CALLERID 369
554 > #define PACE_WAIT 370
555 > #define PACE_WAIT_SIMPLE 371
556 > #define PASSWORD 372
557 > #define PATH 373
558 > #define PING_COOKIE 374
559 > #define PING_TIME 375
560 > #define PORT 376
561 > #define QSTRING 377
562 > #define RANDOM_IDLE 378
563 > #define REASON 379
564 > #define REDIRPORT 380
565 > #define REDIRSERV 381
566 > #define REHASH 382
567   #define REMOTE 383
568   #define REMOTEBAN 384
569 < #define RESTRICT_CHANNELS 385
570 < #define RSA_PRIVATE_KEY_FILE 386
571 < #define RSA_PUBLIC_KEY_FILE 387
572 < #define SSL_CERTIFICATE_FILE 388
573 < #define SSL_DH_PARAM_FILE 389
574 < #define T_SSL_CLIENT_METHOD 390
575 < #define T_SSL_SERVER_METHOD 391
576 < #define T_SSLV3 392
577 < #define T_TLSV1 393
578 < #define RESV 394
579 < #define RESV_EXEMPT 395
580 < #define SECONDS 396
581 < #define MINUTES 397
582 < #define HOURS 398
583 < #define DAYS 399
584 < #define WEEKS 400
585 < #define SENDQ 401
586 < #define SEND_PASSWORD 402
587 < #define SERVERHIDE 403
588 < #define SERVERINFO 404
589 < #define IRCD_SID 405
590 < #define TKLINE_EXPIRE_NOTICES 406
591 < #define T_SHARED 407
592 < #define T_CLUSTER 408
593 < #define TYPE 409
594 < #define SHORT_MOTD 410
595 < #define SPOOF 411
596 < #define SPOOF_NOTICE 412
597 < #define STATS_E_DISABLED 413
598 < #define STATS_I_OPER_ONLY 414
599 < #define STATS_K_OPER_ONLY 415
600 < #define STATS_O_OPER_ONLY 416
601 < #define STATS_P_OPER_ONLY 417
602 < #define TBOOL 418
603 < #define TMASKED 419
604 < #define TS_MAX_DELTA 420
605 < #define TS_WARN_DELTA 421
606 < #define TWODOTS 422
607 < #define T_ALL 423
608 < #define T_BOTS 424
609 < #define T_SOFTCALLERID 425
610 < #define T_CALLERID 426
611 < #define T_CCONN 427
612 < #define T_CCONN_FULL 428
613 < #define T_SSL_CIPHER_LIST 429
614 < #define T_DEAF 430
615 < #define T_DEBUG 431
616 < #define T_DLINE 432
617 < #define T_EXTERNAL 433
618 < #define T_FULL 434
619 < #define T_INVISIBLE 435
620 < #define T_IPV4 436
621 < #define T_IPV6 437
622 < #define T_LOCOPS 438
623 < #define T_MAX_CLIENTS 439
624 < #define T_NCHANGE 440
625 < #define T_OPERWALL 441
626 < #define T_RECVQ 442
627 < #define T_REJ 443
628 < #define T_SERVER 444
629 < #define T_SERVNOTICE 445
630 < #define T_SET 446
631 < #define T_SKILL 447
632 < #define T_SPY 448
633 < #define T_SSL 449
634 < #define T_UMODES 450
635 < #define T_UNAUTH 451
636 < #define T_UNDLINE 452
637 < #define T_UNLIMITED 453
638 < #define T_UNRESV 454
639 < #define T_UNXLINE 455
640 < #define T_GLOBOPS 456
641 < #define T_WALLOP 457
642 < #define T_RESTART 458
643 < #define T_SERVICE 459
644 < #define T_SERVICES_NAME 460
645 < #define THROTTLE_TIME 461
646 < #define TRUE_NO_OPER_FLOOD 462
647 < #define UNKLINE 463
648 < #define USER 464
649 < #define USE_EGD 465
650 < #define USE_LOGGING 466
651 < #define USE_WHOIS_ACTUALLY 467
652 < #define VHOST 468
653 < #define VHOST6 469
654 < #define XLINE 470
655 < #define WARN_NO_NLINE 471
656 < #define T_SIZE 472
657 < #define T_FILE 473
569 > #define RESV 385
570 > #define RESV_EXEMPT 386
571 > #define RSA_PRIVATE_KEY_FILE 387
572 > #define RSA_PUBLIC_KEY_FILE 388
573 > #define SECONDS 389
574 > #define MINUTES 390
575 > #define HOURS 391
576 > #define DAYS 392
577 > #define WEEKS 393
578 > #define MONTHS 394
579 > #define YEARS 395
580 > #define SEND_PASSWORD 396
581 > #define SENDQ 397
582 > #define SERVERHIDE 398
583 > #define SERVERINFO 399
584 > #define SHORT_MOTD 400
585 > #define SPOOF 401
586 > #define SPOOF_NOTICE 402
587 > #define SQUIT 403
588 > #define SSL_CERTIFICATE_FILE 404
589 > #define SSL_CERTIFICATE_FINGERPRINT 405
590 > #define SSL_DH_PARAM_FILE 406
591 > #define STATS_E_DISABLED 407
592 > #define STATS_I_OPER_ONLY 408
593 > #define STATS_K_OPER_ONLY 409
594 > #define STATS_O_OPER_ONLY 410
595 > #define STATS_P_OPER_ONLY 411
596 > #define T_ALL 412
597 > #define T_BOTS 413
598 > #define T_CALLERID 414
599 > #define T_CCONN 415
600 > #define T_CLUSTER 416
601 > #define T_DEAF 417
602 > #define T_DEBUG 418
603 > #define T_DLINE 419
604 > #define T_EXTERNAL 420
605 > #define T_FARCONNECT 421
606 > #define T_FILE 422
607 > #define T_FULL 423
608 > #define T_GLOBOPS 424
609 > #define T_INVISIBLE 425
610 > #define T_IPV4 426
611 > #define T_IPV6 427
612 > #define T_LOCOPS 428
613 > #define T_LOG 429
614 > #define T_MAX_CLIENTS 430
615 > #define T_NCHANGE 431
616 > #define T_NONONREG 432
617 > #define T_OPERWALL 433
618 > #define T_RECVQ 434
619 > #define T_REJ 435
620 > #define T_RESTART 436
621 > #define T_SERVER 437
622 > #define T_SERVICE 438
623 > #define T_SERVICES_NAME 439
624 > #define T_SERVNOTICE 440
625 > #define T_SET 441
626 > #define T_SHARED 442
627 > #define T_SIZE 443
628 > #define T_SKILL 444
629 > #define T_SOFTCALLERID 445
630 > #define T_SPY 446
631 > #define T_SSL 447
632 > #define T_SSL_CIPHER_LIST 448
633 > #define T_SSL_CLIENT_METHOD 449
634 > #define T_SSL_SERVER_METHOD 450
635 > #define T_SSLV3 451
636 > #define T_TLSV1 452
637 > #define T_UMODES 453
638 > #define T_UNAUTH 454
639 > #define T_UNDLINE 455
640 > #define T_UNLIMITED 456
641 > #define T_UNRESV 457
642 > #define T_UNXLINE 458
643 > #define T_WALLOP 459
644 > #define T_WALLOPS 460
645 > #define T_WEBIRC 461
646 > #define TBOOL 462
647 > #define THROTTLE_TIME 463
648 > #define TKLINE_EXPIRE_NOTICES 464
649 > #define TMASKED 465
650 > #define TRUE_NO_OPER_FLOOD 466
651 > #define TS_MAX_DELTA 467
652 > #define TS_WARN_DELTA 468
653 > #define TWODOTS 469
654 > #define TYPE 470
655 > #define UNKLINE 471
656 > #define USE_EGD 472
657 > #define USE_LOGGING 473
658 > #define USER 474
659 > #define VHOST 475
660 > #define VHOST6 476
661 > #define WARN_NO_NLINE 477
662 > #define XLINE 478
663  
664  
665  
666   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
667   typedef union YYSTYPE
668   {
669 < /* Line 350 of yacc.c  */
670 < #line 110 "conf_parser.y"
669 > /* Line 387 of yacc.c  */
670 > #line 140 "conf_parser.y"
671  
672    int number;
673    char *string;
674  
675  
676 < /* Line 350 of yacc.c  */
677 < #line 638 "conf_parser.c"
676 > /* Line 387 of yacc.c  */
677 > #line 678 "conf_parser.c"
678   } YYSTYPE;
679   # define YYSTYPE_IS_TRIVIAL 1
680   # define yystype YYSTYPE /* obsolescent; will be withdrawn */
# Line 657 | Line 697 | int yyparse ();
697   #endif
698   #endif /* ! YYPARSE_PARAM */
699  
700 < #endif /* !YY_Y_TAB_H  */
700 > #endif /* !YY_YY_CONF_PARSER_H_INCLUDED  */
701  
702   /* Copy the second part of user declarations.  */
703  
704 < /* Line 353 of yacc.c  */
705 < #line 666 "conf_parser.c"
704 > /* Line 390 of yacc.c  */
705 > #line 706 "conf_parser.c"
706  
707   #ifdef short
708   # undef short
# Line 715 | Line 755 | typedef short int yytype_int16;
755   # if defined YYENABLE_NLS && YYENABLE_NLS
756   #  if ENABLE_NLS
757   #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
758 < #   define YY_(msgid) dgettext ("bison-runtime", msgid)
758 > #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
759   #  endif
760   # endif
761   # ifndef YY_
762 < #  define YY_(msgid) msgid
762 > #  define YY_(Msgid) Msgid
763 > # endif
764 > #endif
765 >
766 > #ifndef __attribute__
767 > /* This feature is available in gcc versions 2.5 and later.  */
768 > # if (! defined __GNUC__ || __GNUC__ < 2 \
769 >      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
770 > #  define __attribute__(Spec) /* empty */
771   # endif
772   #endif
773  
774   /* Suppress unused-variable warnings by "using" E.  */
775   #if ! defined lint || defined __GNUC__
776 < # define YYUSE(e) ((void) (e))
776 > # define YYUSE(E) ((void) (E))
777   #else
778 < # define YYUSE(e) /* empty */
778 > # define YYUSE(E) /* empty */
779   #endif
780  
781 +
782   /* Identity function, used to suppress warnings about constant conditions.  */
783   #ifndef lint
784 < # define YYID(n) (n)
784 > # define YYID(N) (N)
785   #else
786   #if (defined __STDC__ || defined __C99__FUNC__ \
787       || defined __cplusplus || defined _MSC_VER)
# Line 882 | Line 931 | union yyalloc
931   /* YYFINAL -- State number of the termination state.  */
932   #define YYFINAL  2
933   /* YYLAST -- Last index in YYTABLE.  */
934 < #define YYLAST   1231
934 > #define YYLAST   1219
935  
936   /* YYNTOKENS -- Number of terminals.  */
937 < #define YYNTOKENS  224
937 > #define YYNTOKENS  230
938   /* YYNNTS -- Number of nonterminals.  */
939 < #define YYNNTS  287
939 > #define YYNNTS  288
940   /* YYNRULES -- Number of rules.  */
941 < #define YYNRULES  635
941 > #define YYNRULES  648
942   /* YYNRULES -- Number of states.  */
943 < #define YYNSTATES  1248
943 > #define YYNSTATES  1270
944  
945   /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
946   #define YYUNDEFTOK  2
947 < #define YYMAXUTOK   473
947 > #define YYMAXUTOK   478
948  
949   #define YYTRANSLATE(YYX)                                                \
950    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
# Line 907 | Line 956 | static const yytype_uint8 yytranslate[]
956         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
957         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
958         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
959 <       2,     2,     2,     2,   223,     2,     2,     2,     2,     2,
960 <       2,     2,     2,     2,     2,     2,     2,     2,     2,   219,
961 <       2,   222,     2,     2,     2,     2,     2,     2,     2,     2,
959 >       2,     2,     2,     2,   228,     2,     2,     2,     2,     2,
960 >       2,     2,     2,     2,     2,     2,     2,     2,   229,   224,
961 >       2,   227,     2,     2,     2,     2,     2,     2,     2,     2,
962         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
963         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
964         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
965         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
966         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
967 <       2,     2,     2,   221,     2,   220,     2,     2,     2,     2,
967 >       2,     2,     2,   226,     2,   225,     2,     2,     2,     2,
968         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
969         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
970         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
# Line 950 | Line 999 | static const yytype_uint8 yytranslate[]
999       185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
1000       195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1001       205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1002 <     215,   216,   217,   218
1002 >     215,   216,   217,   218,   219,   220,   221,   222,   223
1003   };
1004  
1005   #if YYDEBUG
# Line 960 | Line 1009 | static const yytype_uint16 yyprhs[] =
1009   {
1010         0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
1011        19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
1012 <      39,    41,    43,    45,    47,    50,    53,    54,    56,    59,
1013 <      63,    67,    71,    75,    79,    80,    82,    85,    89,    93,
1014 <      97,   103,   106,   108,   110,   112,   115,   120,   125,   131,
1015 <     134,   136,   138,   140,   142,   144,   146,   148,   150,   152,
1016 <     154,   156,   158,   160,   162,   164,   166,   169,   174,   179,
1017 <     183,   185,   187,   189,   193,   195,   197,   199,   204,   209,
1018 <     214,   219,   224,   229,   234,   239,   244,   249,   254,   259,
1019 <     264,   270,   273,   275,   277,   279,   281,   284,   289,   294,
1020 <     299,   305,   308,   310,   312,   314,   317,   322,   323,   330,
1021 <     333,   335,   337,   339,   341,   344,   349,   354,   359,   360,
1022 <     366,   370,   372,   374,   376,   378,   380,   382,   384,   386,
1023 <     387,   394,   397,   399,   401,   403,   405,   407,   409,   411,
1024 <     413,   415,   418,   423,   428,   433,   438,   443,   448,   449,
1025 <     455,   459,   461,   463,   465,   467,   469,   471,   473,   475,
1026 <     477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
978 <     497,   499,   501,   502,   508,   512,   514,   516,   518,   520,
1012 >      39,    41,    43,    45,    47,    49,    52,    55,    56,    58,
1013 >      61,    65,    69,    73,    77,    81,    85,    89,    90,    92,
1014 >      95,    99,   103,   107,   113,   116,   118,   120,   122,   125,
1015 >     130,   135,   141,   144,   146,   148,   150,   152,   154,   156,
1016 >     158,   160,   162,   164,   166,   168,   170,   172,   174,   176,
1017 >     178,   180,   183,   188,   193,   197,   199,   201,   203,   207,
1018 >     209,   211,   213,   218,   223,   228,   233,   238,   243,   248,
1019 >     253,   258,   263,   268,   273,   278,   283,   288,   294,   297,
1020 >     299,   301,   303,   305,   308,   313,   318,   323,   324,   331,
1021 >     334,   336,   338,   340,   343,   348,   353,   359,   362,   364,
1022 >     366,   368,   371,   376,   377,   384,   387,   389,   391,   393,
1023 >     395,   398,   403,   408,   413,   414,   420,   424,   426,   428,
1024 >     430,   432,   434,   436,   438,   440,   441,   448,   451,   453,
1025 >     455,   457,   459,   461,   463,   465,   467,   469,   471,   474,
1026 >     479,   484,   489,   494,   499,   504,   509,   510,   516,   520,
1027       522,   524,   526,   528,   530,   532,   534,   536,   538,   540,
1028 <     542,   544,   546,   548,   550,   552,   553,   560,   563,   565,
1029 <     567,   569,   571,   573,   575,   577,   579,   581,   583,   585,
1030 <     587,   589,   591,   593,   596,   601,   606,   611,   616,   621,
1031 <     626,   631,   636,   641,   646,   651,   656,   661,   666,   667,
1032 <     674,   675,   681,   685,   687,   689,   691,   693,   696,   698,
1033 <     700,   702,   704,   706,   709,   710,   716,   720,   722,   724,
1034 <     728,   733,   738,   739,   746,   749,   751,   753,   755,   757,
1035 <     759,   761,   763,   765,   767,   770,   775,   780,   785,   790,
1036 <     791,   797,   801,   803,   805,   807,   809,   811,   813,   815,
1037 <     817,   819,   821,   826,   831,   836,   837,   844,   847,   849,
1038 <     851,   853,   855,   858,   863,   868,   873,   879,   882,   884,
1039 <     886,   888,   893,   894,   901,   904,   906,   908,   910,   912,
1040 <     915,   920,   925,   926,   932,   936,   938,   940,   942,   944,
1041 <     946,   948,   950,   952,   954,   956,   958,   959,   966,   969,
1042 <     971,   973,   975,   978,   983,   984,   990,   994,   996,   998,
1043 <    1000,  1002,  1004,  1006,  1008,  1010,  1012,  1014,  1016,  1017,
1044 <    1024,  1027,  1029,  1031,  1033,  1035,  1037,  1039,  1041,  1043,
1045 <    1045,  1047,  1049,  1051,  1053,  1055,  1058,  1063,  1068,  1073,
1046 <    1078,  1083,  1088,  1093,  1098,  1099,  1105,  1109,  1111,  1113,
1047 <    1115,  1120,  1125,  1130,  1135,  1140,  1141,  1148,  1149,  1155,
1048 <    1159,  1161,  1163,  1166,  1168,  1170,  1172,  1174,  1176,  1181,
1049 <    1186,  1187,  1194,  1197,  1199,  1201,  1203,  1205,  1210,  1215,
1050 <    1221,  1224,  1226,  1228,  1230,  1235,  1236,  1243,  1244,  1250,
1051 <    1254,  1256,  1258,  1261,  1263,  1265,  1267,  1269,  1271,  1276,
1052 <    1281,  1287,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
1053 <    1306,  1308,  1310,  1312,  1314,  1316,  1318,  1320,  1322,  1324,
1054 <    1326,  1328,  1330,  1332,  1334,  1336,  1338,  1340,  1342,  1344,
1055 <    1346,  1348,  1350,  1352,  1354,  1356,  1358,  1360,  1362,  1364,
1056 <    1366,  1368,  1370,  1372,  1374,  1376,  1378,  1380,  1382,  1384,
1057 <    1386,  1388,  1390,  1392,  1394,  1396,  1398,  1400,  1405,  1410,
1058 <    1415,  1420,  1425,  1430,  1435,  1440,  1445,  1450,  1455,  1460,
1059 <    1465,  1470,  1475,  1480,  1485,  1490,  1495,  1500,  1505,  1510,
1060 <    1515,  1520,  1525,  1530,  1535,  1540,  1545,  1550,  1555,  1560,
1061 <    1565,  1570,  1575,  1580,  1585,  1590,  1595,  1600,  1605,  1610,
1062 <    1615,  1620,  1625,  1630,  1635,  1640,  1645,  1650,  1651,  1657,
1063 <    1661,  1663,  1665,  1667,  1669,  1671,  1673,  1675,  1677,  1679,
1064 <    1681,  1683,  1685,  1687,  1689,  1691,  1693,  1695,  1697,  1699,
1065 <    1701,  1703,  1704,  1710,  1714,  1716,  1718,  1720,  1722,  1724,
1066 <    1726,  1728,  1730,  1732,  1734,  1736,  1738,  1740,  1742,  1744,
1067 <    1746,  1748,  1750,  1752,  1754,  1756,  1761,  1766,  1771,  1777,
1068 <    1780,  1782,  1784,  1786,  1788,  1790,  1792,  1794,  1796,  1798,
1069 <    1800,  1802,  1804,  1806,  1808,  1810,  1812,  1817,  1822,  1827,
1070 <    1832,  1837,  1842,  1847,  1852,  1857,  1862,  1867,  1872,  1877,
1071 <    1882,  1888,  1891,  1893,  1895,  1897,  1899,  1901,  1903,  1905,
1072 <    1907,  1912,  1917,  1922,  1927,  1932
1028 >     542,   544,   546,   548,   550,   552,   554,   556,   558,   560,
1029 >     562,   564,   565,   571,   575,   577,   581,   583,   587,   589,
1030 >     593,   595,   597,   599,   601,   603,   605,   607,   609,   611,
1031 >     613,   615,   617,   619,   621,   623,   625,   627,   629,   630,
1032 >     637,   640,   642,   644,   646,   648,   650,   652,   654,   656,
1033 >     658,   660,   662,   664,   666,   668,   670,   672,   674,   677,
1034 >     682,   687,   692,   697,   702,   707,   712,   717,   722,   727,
1035 >     732,   737,   742,   747,   752,   753,   759,   763,   765,   767,
1036 >     769,   770,   777,   778,   784,   788,   790,   792,   794,   796,
1037 >     799,   801,   803,   805,   807,   809,   812,   813,   819,   823,
1038 >     825,   827,   831,   836,   841,   842,   849,   852,   854,   856,
1039 >     858,   860,   862,   864,   866,   868,   870,   873,   878,   883,
1040 >     888,   893,   894,   900,   904,   906,   908,   910,   912,   914,
1041 >     916,   918,   920,   922,   924,   926,   931,   936,   941,   942,
1042 >     949,   952,   954,   956,   958,   960,   963,   968,   973,   978,
1043 >     984,   987,   989,   991,   993,   998,   999,  1006,  1009,  1011,
1044 >    1013,  1015,  1017,  1020,  1025,  1030,  1031,  1037,  1041,  1043,
1045 >    1045,  1047,  1049,  1051,  1053,  1055,  1057,  1059,  1061,  1063,
1046 >    1064,  1071,  1074,  1076,  1078,  1080,  1083,  1088,  1089,  1095,
1047 >    1099,  1101,  1103,  1105,  1107,  1109,  1111,  1113,  1115,  1117,
1048 >    1119,  1121,  1122,  1129,  1132,  1134,  1136,  1138,  1140,  1142,
1049 >    1144,  1146,  1148,  1150,  1152,  1154,  1156,  1158,  1160,  1162,
1050 >    1165,  1170,  1175,  1180,  1185,  1190,  1195,  1200,  1205,  1210,
1051 >    1211,  1217,  1221,  1223,  1225,  1227,  1232,  1237,  1242,  1247,
1052 >    1252,  1253,  1260,  1263,  1265,  1267,  1269,  1271,  1276,  1281,
1053 >    1282,  1289,  1292,  1294,  1296,  1298,  1300,  1305,  1310,  1316,
1054 >    1319,  1321,  1323,  1325,  1330,  1331,  1338,  1341,  1343,  1345,
1055 >    1347,  1349,  1354,  1359,  1365,  1368,  1370,  1372,  1374,  1376,
1056 >    1378,  1380,  1382,  1384,  1386,  1388,  1390,  1392,  1394,  1396,
1057 >    1398,  1400,  1402,  1404,  1406,  1408,  1410,  1412,  1414,  1416,
1058 >    1418,  1420,  1422,  1424,  1426,  1428,  1430,  1432,  1434,  1436,
1059 >    1438,  1440,  1442,  1444,  1446,  1448,  1450,  1452,  1454,  1456,
1060 >    1458,  1460,  1462,  1464,  1466,  1471,  1476,  1481,  1486,  1491,
1061 >    1496,  1501,  1506,  1511,  1516,  1521,  1526,  1531,  1536,  1541,
1062 >    1546,  1551,  1556,  1561,  1566,  1571,  1576,  1581,  1586,  1591,
1063 >    1596,  1601,  1606,  1611,  1616,  1621,  1626,  1631,  1636,  1641,
1064 >    1646,  1651,  1656,  1661,  1666,  1671,  1676,  1681,  1686,  1687,
1065 >    1693,  1697,  1699,  1701,  1703,  1705,  1707,  1709,  1711,  1713,
1066 >    1715,  1717,  1719,  1721,  1723,  1725,  1727,  1729,  1731,  1733,
1067 >    1735,  1737,  1739,  1741,  1742,  1748,  1752,  1754,  1756,  1758,
1068 >    1760,  1762,  1764,  1766,  1768,  1770,  1772,  1774,  1776,  1778,
1069 >    1780,  1782,  1784,  1786,  1788,  1790,  1792,  1794,  1796,  1801,
1070 >    1806,  1811,  1817,  1820,  1822,  1824,  1826,  1828,  1830,  1832,
1071 >    1834,  1836,  1838,  1840,  1842,  1844,  1846,  1848,  1853,  1858,
1072 >    1863,  1868,  1873,  1878,  1883,  1888,  1893,  1898,  1903,  1908,
1073 >    1914,  1917,  1919,  1921,  1923,  1925,  1927,  1929,  1931,  1933,
1074 >    1935,  1937,  1942,  1947,  1952,  1957,  1962,  1967,  1972
1075   };
1076  
1077   /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1078   static const yytype_int16 yyrhs[] =
1079   {
1080 <     225,     0,    -1,    -1,   225,   226,    -1,   258,    -1,   264,
1081 <      -1,   278,    -1,   485,    -1,   296,    -1,   314,    -1,   328,
1082 <      -1,   236,    -1,   502,    -1,   343,    -1,   350,    -1,   354,
1083 <      -1,   364,    -1,   373,    -1,   393,    -1,   403,    -1,   409,
1084 <      -1,   423,    -1,   413,    -1,   231,    -1,     1,   219,    -1,
1085 <       1,   220,    -1,    -1,   228,    -1,   101,   227,    -1,   101,
1086 <     141,   227,    -1,   101,   142,   227,    -1,   101,   143,   227,
1087 <      -1,   101,   144,   227,    -1,   101,   145,   227,    -1,    -1,
1088 <     230,    -1,   101,   229,    -1,   101,     9,   229,    -1,   101,
1089 <      10,   229,    -1,   101,    11,   229,    -1,    90,   221,   232,
1090 <     220,   219,    -1,   232,   233,    -1,   233,    -1,   234,    -1,
1091 <     235,    -1,     1,   219,    -1,    89,   222,   120,   219,    -1,
1092 <     115,   222,   120,   219,    -1,   149,   221,   237,   220,   219,
1093 <      -1,   237,   238,    -1,   238,    -1,   249,    -1,   254,    -1,
1094 <     257,    -1,   251,    -1,   252,    -1,   253,    -1,   256,    -1,
1095 <     247,    -1,   246,    -1,   255,    -1,   250,    -1,   245,    -1,
1096 <     239,    -1,   240,    -1,   248,    -1,     1,   219,    -1,   135,
1097 <     222,   241,   219,    -1,   136,   222,   243,   219,    -1,   241,
1098 <     223,   242,    -1,   242,    -1,   137,    -1,   138,    -1,   243,
1099 <     223,   244,    -1,   244,    -1,   137,    -1,   138,    -1,   133,
1100 <     222,   120,   219,    -1,   131,   222,   120,   219,    -1,   134,
1101 <     222,   120,   219,    -1,   174,   222,   120,   219,    -1,    91,
1102 <     222,   120,   219,    -1,   150,   222,   120,   219,    -1,    24,
1103 <     222,   120,   219,    -1,    94,   222,   120,   219,    -1,    93,
1104 <     222,   120,   219,    -1,   213,   222,   120,   219,    -1,   214,
1105 <     222,   120,   219,    -1,   184,   222,   101,   219,    -1,    57,
1106 <     222,   163,   219,    -1,     4,   221,   259,   220,   219,    -1,
1107 <     259,   260,    -1,   260,    -1,   261,    -1,   263,    -1,   262,
1108 <      -1,     1,   219,    -1,    91,   222,   120,   219,    -1,    31,
1109 <     222,   120,   219,    -1,    24,   222,   120,   219,    -1,    73,
1110 <     221,   265,   220,   219,    -1,   265,   266,    -1,   266,    -1,
1111 <     267,    -1,   268,    -1,     1,   219,    -1,   211,   222,   163,
1112 <     219,    -1,    -1,   269,   218,   221,   270,   220,   219,    -1,
1113 <     270,   271,    -1,   271,    -1,   272,    -1,   274,    -1,   273,
1114 <      -1,     1,   219,    -1,    91,   222,   120,   219,    -1,   217,
1115 <     222,   230,   219,    -1,   217,   222,   198,   219,    -1,    -1,
1116 <     154,   275,   222,   276,   219,    -1,   276,   223,   277,    -1,
1117 <     277,    -1,   209,    -1,   104,    -1,    40,    -1,   177,    -1,
1118 <      64,    -1,    62,    -1,   176,    -1,    -1,   104,   279,   221,
1119 <     280,   220,   219,    -1,   280,   281,    -1,   281,    -1,   282,
1120 <      -1,   283,    -1,   284,    -1,   288,    -1,   287,    -1,   285,
1121 <      -1,   286,    -1,   292,    -1,     1,   219,    -1,    91,   222,
1122 <     120,   219,    -1,   209,   222,   120,   219,    -1,   114,   222,
1123 <     120,   219,    -1,    32,   222,   163,   219,    -1,   132,   222,
1124 <     120,   219,    -1,    17,   222,   120,   219,    -1,    -1,   195,
1125 <     289,   222,   290,   219,    -1,   290,   223,   291,    -1,   291,
1126 <      -1,   169,    -1,   172,    -1,   173,    -1,   175,    -1,   176,
1127 <      -1,   179,    -1,    51,    -1,   192,    -1,   185,    -1,   188,
1128 <      -1,   196,    -1,   193,    -1,   178,    -1,   186,    -1,   190,
1129 <      -1,   180,    -1,   202,    -1,   170,    -1,   171,    -1,   183,
1130 <      -1,    -1,    36,   293,   222,   294,   219,    -1,   294,   223,
1131 <     295,    -1,   295,    -1,    47,    -1,   128,    -1,    64,    -1,
1132 <     208,    -1,   177,    -1,   197,    -1,   215,    -1,    40,    -1,
1133 <      25,    -1,   203,    -1,   126,    -1,     4,    -1,    96,    -1,
1134 <     186,    -1,   201,    -1,   108,    -1,   129,    -1,   191,    -1,
1135 <      89,    -1,    -1,    17,   297,   221,   298,   220,   219,    -1,
1136 <     298,   299,    -1,   299,    -1,   300,    -1,   311,    -1,   312,
1137 <      -1,   301,    -1,   302,    -1,   313,    -1,   303,    -1,   304,
1138 <      -1,   305,    -1,   306,    -1,   307,    -1,   308,    -1,   309,
1139 <      -1,   310,    -1,     1,   219,    -1,    91,   222,   120,   219,
1140 <      -1,   117,   222,   228,   219,    -1,   118,   222,   228,   219,
1141 <      -1,   103,   222,   101,   219,    -1,    19,   222,   228,   219,
1142 <      -1,    83,   222,   101,   219,    -1,    78,   222,   101,   219,
1143 <      -1,    80,   222,   101,   219,    -1,    79,   222,   101,   219,
1144 <      -1,   146,   222,   230,   219,    -1,   187,   222,   230,   219,
1145 <      -1,    15,   222,   101,   219,    -1,    16,   222,   101,   219,
1146 <      -1,   102,   222,   101,   219,    -1,    -1,    72,   315,   221,
1147 <     320,   220,   219,    -1,    -1,    36,   317,   222,   318,   219,
1148 <      -1,   318,   223,   319,    -1,   319,    -1,   194,    -1,    51,
1149 <      -1,   189,    -1,   320,   321,    -1,   321,    -1,   322,    -1,
1150 <     316,    -1,   326,    -1,   327,    -1,     1,   219,    -1,    -1,
1151 <     119,   222,   324,   323,   219,    -1,   324,   223,   325,    -1,
1152 <     325,    -1,   101,    -1,   101,   167,   101,    -1,    61,   222,
1153 <     120,   219,    -1,    56,   222,   120,   219,    -1,    -1,    48,
1154 <     329,   221,   330,   220,   219,    -1,   330,   331,    -1,   331,
1155 <      -1,   332,    -1,   333,    -1,   334,    -1,   336,    -1,   340,
1156 <      -1,   341,    -1,   342,    -1,   335,    -1,     1,   219,    -1,
1157 <     209,   222,   120,   219,    -1,   114,   222,   120,   219,    -1,
1158 <      17,   222,   120,   219,    -1,    32,   222,   163,   219,    -1,
1159 <      -1,    36,   337,   222,   338,   219,    -1,   338,   223,   339,
1160 <      -1,   339,    -1,   157,    -1,    33,    -1,    65,    -1,    49,
1161 <      -1,    13,    -1,   100,    -1,    43,    -1,   140,    -1,    92,
1162 <      -1,   156,   222,   120,   219,    -1,   124,   222,   120,   219,
1163 <      -1,   123,   222,   101,   219,    -1,    -1,   139,   344,   221,
1164 <     345,   220,   219,    -1,   345,   346,    -1,   346,    -1,   347,
1165 <      -1,   348,    -1,   349,    -1,     1,   219,    -1,   122,   222,
1166 <     120,   219,    -1,    14,   222,   120,   219,    -1,    95,   222,
1167 <     120,   219,    -1,   204,   221,   351,   220,   219,    -1,   351,
1168 <     352,    -1,   352,    -1,   353,    -1,     1,    -1,    91,   222,
1169 <     120,   219,    -1,    -1,   152,   355,   221,   356,   220,   219,
1170 <      -1,   356,   357,    -1,   357,    -1,   358,    -1,   359,    -1,
1171 <     360,    -1,     1,   219,    -1,    91,   222,   120,   219,    -1,
1172 <     209,   222,   120,   219,    -1,    -1,   154,   361,   222,   362,
1173 <     219,    -1,   362,   223,   363,    -1,   363,    -1,    64,    -1,
1174 <     208,    -1,   177,    -1,   197,    -1,   215,    -1,   200,    -1,
1175 <     139,    -1,   199,    -1,   183,    -1,   168,    -1,    -1,   153,
1176 <     365,   221,   366,   220,   219,    -1,   366,   367,    -1,   367,
1177 <      -1,   368,    -1,   369,    -1,     1,   219,    -1,    91,   222,
1178 <     120,   219,    -1,    -1,   154,   370,   222,   371,   219,    -1,
1179 <     371,   223,   372,    -1,   372,    -1,    64,    -1,   208,    -1,
1180 <     177,    -1,   197,    -1,   215,    -1,   200,    -1,   139,    -1,
1181 <     199,    -1,   183,    -1,   168,    -1,    -1,    18,   374,   221,
1182 <     375,   220,   219,    -1,   375,   376,    -1,   376,    -1,   377,
1183 <      -1,   378,    -1,   379,    -1,   380,    -1,   381,    -1,   383,
1184 <      -1,   382,    -1,   392,    -1,   384,    -1,   389,    -1,   390,
1185 <      -1,   391,    -1,   388,    -1,     1,   219,    -1,    91,   222,
1186 <     120,   219,    -1,    56,   222,   120,   219,    -1,   213,   222,
1187 <     120,   219,    -1,   147,   222,   120,   219,    -1,     3,   222,
1188 <     120,   219,    -1,   119,   222,   101,   219,    -1,     5,   222,
1189 <     181,   219,    -1,     5,   222,   182,   219,    -1,    -1,    36,
1190 <     385,   222,   386,   219,    -1,   386,   223,   387,    -1,   387,
1191 <      -1,     8,    -1,   194,    -1,    32,   222,   163,   219,    -1,
1192 <      58,   222,   120,   219,    -1,    70,   222,   120,   219,    -1,
1193 <      17,   222,   120,   219,    -1,   174,   222,   120,   219,    -1,
1194 <      -1,    62,   394,   221,   399,   220,   219,    -1,    -1,   154,
1195 <     396,   222,   397,   219,    -1,   397,   223,   398,    -1,   398,
1196 <      -1,   125,    -1,   399,   400,    -1,   400,    -1,   401,    -1,
1197 <     402,    -1,   395,    -1,     1,    -1,   209,   222,   120,   219,
1198 <      -1,   122,   222,   120,   219,    -1,    -1,    23,   404,   221,
1199 <     405,   220,   219,    -1,   405,   406,    -1,   406,    -1,   407,
1200 <      -1,   408,    -1,     1,    -1,    61,   222,   120,   219,    -1,
1201 <     122,   222,   120,   219,    -1,    34,   221,   410,   220,   219,
1202 <      -1,   410,   411,    -1,   411,    -1,   412,    -1,     1,    -1,
1203 <      61,   222,   120,   219,    -1,    -1,    38,   414,   221,   419,
1204 <     220,   219,    -1,    -1,   154,   416,   222,   417,   219,    -1,
1205 <     417,   223,   418,    -1,   418,    -1,   125,    -1,   419,   420,
1206 <      -1,   420,    -1,   421,    -1,   422,    -1,   415,    -1,     1,
1207 <      -1,    91,   222,   120,   219,    -1,   122,   222,   120,   219,
1208 <      -1,    39,   221,   424,   220,   219,    -1,   424,   425,    -1,
1209 <     425,    -1,   436,    -1,   437,    -1,   439,    -1,   440,    -1,
1210 <     441,    -1,   442,    -1,   443,    -1,   444,    -1,   445,    -1,
1211 <     446,    -1,   435,    -1,   448,    -1,   449,    -1,   450,    -1,
1212 <     451,    -1,   466,    -1,   453,    -1,   455,    -1,   457,    -1,
1213 <     456,    -1,   460,    -1,   454,    -1,   461,    -1,   462,    -1,
1214 <     463,    -1,   464,    -1,   465,    -1,   478,    -1,   467,    -1,
1215 <     468,    -1,   469,    -1,   474,    -1,   458,    -1,   459,    -1,
1216 <     484,    -1,   482,    -1,   483,    -1,   438,    -1,   473,    -1,
1217 <     447,    -1,   471,    -1,   472,    -1,   434,    -1,   427,    -1,
1218 <     428,    -1,   429,    -1,   430,    -1,   431,    -1,   432,    -1,
1219 <     433,    -1,   452,    -1,   426,    -1,   470,    -1,     1,    -1,
1220 <      85,   222,   101,   219,    -1,    42,   222,   163,   219,    -1,
1221 <      41,   222,   228,   219,    -1,    44,   222,   228,   219,    -1,
1222 <      45,   222,   101,   219,    -1,    46,   222,   101,   219,    -1,
1223 <     212,   222,   163,   219,    -1,   127,   222,   228,   219,    -1,
1224 <     151,   222,   163,   219,    -1,    63,   222,   228,   219,    -1,
1225 <      55,   222,   163,   219,    -1,    59,   222,   163,   219,    -1,
1226 <      28,   222,   163,   219,    -1,    35,   222,   163,   219,    -1,
1227 <       6,   222,   163,   219,    -1,    82,   222,   228,   219,    -1,
1228 <      81,   222,   101,   219,    -1,    74,   222,   101,   219,    -1,
1229 <       7,   222,   228,   219,    -1,   166,   222,   228,   219,    -1,
1230 <     165,   222,   228,   219,    -1,    50,   222,   101,   219,    -1,
1231 <      67,   222,   163,   219,    -1,    66,   222,   120,   219,    -1,
1232 <      60,   222,   163,   219,    -1,   216,   222,   163,   219,    -1,
1233 <     158,   222,   163,   219,    -1,   161,   222,   163,   219,    -1,
1234 <     162,   222,   163,   219,    -1,   160,   222,   163,   219,    -1,
1235 <     160,   222,   164,   219,    -1,   159,   222,   163,   219,    -1,
1236 <     159,   222,   164,   219,    -1,   112,   222,   228,   219,    -1,
1237 <      12,   222,   228,   219,    -1,   105,   222,   163,   219,    -1,
1238 <     113,   222,   228,   219,    -1,   155,   222,   163,   219,    -1,
1239 <      99,   222,   163,   219,    -1,   207,   222,   163,   219,    -1,
1240 <     107,   222,   163,   219,    -1,    86,   222,   120,   219,    -1,
1241 <      29,   222,   101,   219,    -1,    84,   222,   101,   219,    -1,
1242 <     210,   222,   163,   219,    -1,    30,   222,   120,   219,    -1,
1243 <     205,   222,   120,   219,    -1,   116,   222,   163,   219,    -1,
1244 <      26,   222,   163,   219,    -1,   206,   222,   228,   219,    -1,
1245 <      -1,   109,   475,   222,   476,   219,    -1,   476,   223,   477,
1246 <      -1,   477,    -1,   169,    -1,   172,    -1,   173,    -1,   175,
1247 <      -1,   176,    -1,   179,    -1,    51,    -1,   192,    -1,   185,
1248 <      -1,   188,    -1,   196,    -1,   193,    -1,   178,    -1,   186,
1249 <      -1,   190,    -1,   180,    -1,   202,    -1,   170,    -1,   171,
1250 <      -1,   183,    -1,    -1,   106,   479,   222,   480,   219,    -1,
1251 <     480,   223,   481,    -1,   481,    -1,   169,    -1,   172,    -1,
1252 <     173,    -1,   175,    -1,   176,    -1,   179,    -1,   192,    -1,
1253 <      51,    -1,   185,    -1,   188,    -1,   196,    -1,   193,    -1,
1254 <     178,    -1,   186,    -1,   190,    -1,   180,    -1,   202,    -1,
1255 <     170,    -1,   171,    -1,   183,    -1,    87,   222,   101,   219,
1256 <      -1,    88,   222,   101,   219,    -1,    20,   222,   101,   219,
1257 <      -1,    14,   221,   486,   220,   219,    -1,   486,   487,    -1,
1258 <     487,    -1,   495,    -1,   490,    -1,   491,    -1,   492,    -1,
1259 <     493,    -1,   494,    -1,   496,    -1,   497,    -1,   498,    -1,
1260 <     489,    -1,   499,    -1,   500,    -1,   501,    -1,   488,    -1,
1261 <       1,    -1,    27,   222,   163,   219,    -1,   130,   222,   163,
1262 <     219,    -1,    68,   222,   228,   219,    -1,    69,   222,   228,
1263 <     219,    -1,    77,   222,   101,   219,    -1,    76,   222,   101,
1264 <     219,    -1,   121,   222,   163,   219,    -1,    75,   222,   101,
1265 <     219,    -1,    22,   222,   101,   219,    -1,    21,   222,   101,
1266 <     219,    -1,    97,   222,   163,   219,    -1,    98,   222,   163,
1267 <     219,    -1,   110,   222,   101,   219,    -1,   111,   222,   228,
1268 <     219,    -1,   148,   221,   503,   220,   219,    -1,   503,   504,
1269 <      -1,   504,    -1,   505,    -1,   506,    -1,   508,    -1,   509,
1270 <      -1,   507,    -1,   510,    -1,     1,    -1,    37,   222,   163,
1271 <     219,    -1,    54,   222,   163,   219,    -1,    52,   222,   120,
1272 <     219,    -1,    71,   222,   228,   219,    -1,    51,   222,   163,
1273 <     219,    -1,    53,   222,   163,   219,    -1
1080 >     231,     0,    -1,    -1,   231,   232,    -1,   266,    -1,   278,
1081 >      -1,   292,    -1,   492,    -1,   311,    -1,   334,    -1,   348,
1082 >      -1,   242,    -1,   507,    -1,   363,    -1,   370,    -1,   374,
1083 >      -1,   384,    -1,   393,    -1,   414,    -1,   420,    -1,   426,
1084 >      -1,   436,    -1,   430,    -1,   237,    -1,   272,    -1,     1,
1085 >     224,    -1,     1,   225,    -1,    -1,   234,    -1,   107,   233,
1086 >      -1,   107,   134,   233,    -1,   107,   135,   233,    -1,   107,
1087 >     136,   233,    -1,   107,   137,   233,    -1,   107,   138,   233,
1088 >      -1,   107,   139,   233,    -1,   107,   140,   233,    -1,    -1,
1089 >     236,    -1,   107,   235,    -1,   107,     9,   235,    -1,   107,
1090 >      10,   235,    -1,   107,    11,   235,    -1,    95,   226,   238,
1091 >     225,   224,    -1,   238,   239,    -1,   239,    -1,   240,    -1,
1092 >     241,    -1,     1,   224,    -1,    94,   227,   122,   224,    -1,
1093 >     118,   227,   122,   224,    -1,   144,   226,   243,   225,   224,
1094 >      -1,   243,   244,    -1,   244,    -1,   255,    -1,   260,    -1,
1095 >     265,    -1,   257,    -1,   258,    -1,   259,    -1,   262,    -1,
1096 >     263,    -1,   264,    -1,   253,    -1,   252,    -1,   261,    -1,
1097 >     256,    -1,   251,    -1,   245,    -1,   246,    -1,   254,    -1,
1098 >       1,   224,    -1,   194,   227,   247,   224,    -1,   195,   227,
1099 >     249,   224,    -1,   247,   228,   248,    -1,   248,    -1,   196,
1100 >      -1,   197,    -1,   249,   228,   250,    -1,   250,    -1,   196,
1101 >      -1,   197,    -1,   149,   227,   122,   224,    -1,   132,   227,
1102 >     122,   224,    -1,   151,   227,   122,   224,    -1,   193,   227,
1103 >     122,   224,    -1,    97,   227,   122,   224,    -1,    63,   227,
1104 >     122,   224,    -1,    24,   227,   122,   224,    -1,   101,   227,
1105 >     122,   224,    -1,   100,   227,   122,   224,    -1,   220,   227,
1106 >     122,   224,    -1,   221,   227,   122,   224,    -1,   175,   227,
1107 >     107,   224,    -1,    85,   227,   107,   224,    -1,    89,   227,
1108 >     107,   224,    -1,    56,   227,   207,   224,    -1,     4,   226,
1109 >     267,   225,   224,    -1,   267,   268,    -1,   268,    -1,   269,
1110 >      -1,   271,    -1,   270,    -1,     1,   224,    -1,    97,   227,
1111 >     122,   224,    -1,    31,   227,   122,   224,    -1,    24,   227,
1112 >     122,   224,    -1,    -1,    96,   273,   226,   274,   225,   224,
1113 >      -1,   274,   275,    -1,   275,    -1,   276,    -1,   277,    -1,
1114 >       1,   224,    -1,    75,   227,   122,   224,    -1,   167,   227,
1115 >     122,   224,    -1,   174,   226,   279,   225,   224,    -1,   279,
1116 >     280,    -1,   280,    -1,   281,    -1,   282,    -1,     1,   224,
1117 >      -1,   218,   227,   207,   224,    -1,    -1,   283,   167,   226,
1118 >     284,   225,   224,    -1,   284,   285,    -1,   285,    -1,   286,
1119 >      -1,   288,    -1,   287,    -1,     1,   224,    -1,    97,   227,
1120 >     122,   224,    -1,   188,   227,   236,   224,    -1,   188,   227,
1121 >     201,   224,    -1,    -1,   215,   289,   227,   290,   224,    -1,
1122 >     290,   228,   291,    -1,   291,    -1,   219,    -1,   113,    -1,
1123 >      39,    -1,   164,    -1,    68,    -1,    66,    -1,   163,    -1,
1124 >      -1,   113,   293,   226,   294,   225,   224,    -1,   294,   295,
1125 >      -1,   295,    -1,   296,    -1,   297,    -1,   298,    -1,   303,
1126 >      -1,   302,    -1,   299,    -1,   300,    -1,   301,    -1,   307,
1127 >      -1,     1,   224,    -1,    97,   227,   122,   224,    -1,   219,
1128 >     227,   122,   224,    -1,   117,   227,   122,   224,    -1,    32,
1129 >     227,   207,   224,    -1,   133,   227,   122,   224,    -1,   150,
1130 >     227,   122,   224,    -1,    17,   227,   122,   224,    -1,    -1,
1131 >     198,   304,   227,   305,   224,    -1,   305,   228,   306,    -1,
1132 >     306,    -1,   158,    -1,   160,    -1,   162,    -1,   163,    -1,
1133 >     168,    -1,    48,    -1,   189,    -1,   176,    -1,   180,    -1,
1134 >     199,    -1,   191,    -1,   165,    -1,   178,    -1,   185,    -1,
1135 >     170,    -1,   204,    -1,   190,    -1,   159,    -1,   173,    -1,
1136 >     177,    -1,   166,    -1,    -1,    62,   308,   227,   309,   224,
1137 >      -1,   309,   228,   310,    -1,   310,    -1,    66,   229,   128,
1138 >      -1,    66,    -1,    18,   229,   128,    -1,    18,    -1,   148,
1139 >     229,   128,    -1,   148,    -1,    68,    -1,   216,    -1,   164,
1140 >      -1,   200,    -1,   223,    -1,    39,    -1,    25,    -1,   181,
1141 >      -1,   127,    -1,     4,    -1,   178,    -1,   169,    -1,   205,
1142 >      -1,   173,    -1,   129,    -1,   186,    -1,    94,    -1,    -1,
1143 >      17,   312,   226,   313,   225,   224,    -1,   313,   314,    -1,
1144 >     314,    -1,   315,    -1,   325,    -1,   326,    -1,   316,    -1,
1145 >     327,    -1,   317,    -1,   318,    -1,   319,    -1,   320,    -1,
1146 >     321,    -1,   322,    -1,   323,    -1,   324,    -1,   328,    -1,
1147 >     329,    -1,   330,    -1,     1,   224,    -1,    97,   227,   122,
1148 >     224,    -1,   120,   227,   234,   224,    -1,   109,   227,   107,
1149 >     224,    -1,    19,   227,   234,   224,    -1,    87,   227,   107,
1150 >     224,    -1,    80,   227,   107,   224,    -1,    83,   227,   107,
1151 >     224,    -1,    81,   227,   107,   224,    -1,   142,   227,   236,
1152 >     224,    -1,   179,   227,   236,   224,    -1,    15,   227,   107,
1153 >     224,    -1,    16,   227,   107,   224,    -1,   108,   227,   107,
1154 >     224,    -1,    91,   227,   234,   224,    -1,    82,   227,   234,
1155 >     224,    -1,    -1,    62,   331,   227,   332,   224,    -1,   332,
1156 >     228,   333,    -1,   333,    -1,   123,    -1,    50,    -1,    -1,
1157 >      74,   335,   226,   340,   225,   224,    -1,    -1,    62,   337,
1158 >     227,   338,   224,    -1,   338,   228,   339,    -1,   339,    -1,
1159 >     192,    -1,    48,    -1,   182,    -1,   340,   341,    -1,   341,
1160 >      -1,   342,    -1,   336,    -1,   346,    -1,   347,    -1,     1,
1161 >     224,    -1,    -1,   121,   227,   344,   343,   224,    -1,   344,
1162 >     228,   345,    -1,   345,    -1,   107,    -1,   107,   214,   107,
1163 >      -1,    60,   227,   122,   224,    -1,    55,   227,   122,   224,
1164 >      -1,    -1,    61,   349,   226,   350,   225,   224,    -1,   350,
1165 >     351,    -1,   351,    -1,   352,    -1,   353,    -1,   354,    -1,
1166 >     356,    -1,   360,    -1,   361,    -1,   362,    -1,   355,    -1,
1167 >       1,   224,    -1,   219,   227,   122,   224,    -1,   117,   227,
1168 >     122,   224,    -1,    17,   227,   122,   224,    -1,    32,   227,
1169 >     207,   224,    -1,    -1,    62,   357,   227,   358,   224,    -1,
1170 >     358,   228,   359,    -1,   359,    -1,   147,    -1,    33,    -1,
1171 >      69,    -1,    98,    -1,    13,    -1,   106,    -1,    42,    -1,
1172 >     131,    -1,   206,    -1,    99,    -1,   146,   227,   122,   224,
1173 >      -1,   126,   227,   122,   224,    -1,   125,   227,   107,   224,
1174 >      -1,    -1,   130,   364,   226,   365,   225,   224,    -1,   365,
1175 >     366,    -1,   366,    -1,   367,    -1,   368,    -1,   369,    -1,
1176 >       1,   224,    -1,    75,   227,   122,   224,    -1,   124,   227,
1177 >     122,   224,    -1,    34,   227,   122,   224,    -1,   183,   226,
1178 >     371,   225,   224,    -1,   371,   372,    -1,   372,    -1,   373,
1179 >      -1,     1,    -1,    97,   227,   122,   224,    -1,    -1,   187,
1180 >     375,   226,   376,   225,   224,    -1,   376,   377,    -1,   377,
1181 >      -1,   378,    -1,   379,    -1,   380,    -1,     1,   224,    -1,
1182 >      97,   227,   122,   224,    -1,   219,   227,   122,   224,    -1,
1183 >      -1,   215,   381,   227,   382,   224,    -1,   382,   228,   383,
1184 >      -1,   383,    -1,    68,    -1,   216,    -1,   164,    -1,   200,
1185 >      -1,   223,    -1,   203,    -1,   130,    -1,   202,    -1,   173,
1186 >      -1,   157,    -1,    -1,   161,   385,   226,   386,   225,   224,
1187 >      -1,   386,   387,    -1,   387,    -1,   388,    -1,   389,    -1,
1188 >       1,   224,    -1,    97,   227,   122,   224,    -1,    -1,   215,
1189 >     390,   227,   391,   224,    -1,   391,   228,   392,    -1,   392,
1190 >      -1,    68,    -1,   216,    -1,   164,    -1,   200,    -1,   223,
1191 >      -1,   203,    -1,   130,    -1,   202,    -1,   173,    -1,   157,
1192 >      -1,    -1,    18,   394,   226,   395,   225,   224,    -1,   395,
1193 >     396,    -1,   396,    -1,   397,    -1,   398,    -1,   399,    -1,
1194 >     400,    -1,   401,    -1,   402,    -1,   404,    -1,   403,    -1,
1195 >     413,    -1,   405,    -1,   410,    -1,   411,    -1,   412,    -1,
1196 >     409,    -1,     1,   224,    -1,    97,   227,   122,   224,    -1,
1197 >      55,   227,   122,   224,    -1,   220,   227,   122,   224,    -1,
1198 >     141,   227,   122,   224,    -1,     3,   227,   122,   224,    -1,
1199 >     150,   227,   122,   224,    -1,   121,   227,   107,   224,    -1,
1200 >       5,   227,   171,   224,    -1,     5,   227,   172,   224,    -1,
1201 >      -1,    62,   406,   227,   407,   224,    -1,   407,   228,   408,
1202 >      -1,   408,    -1,     8,    -1,   192,    -1,    32,   227,   207,
1203 >     224,    -1,    57,   227,   122,   224,    -1,    72,   227,   122,
1204 >     224,    -1,    17,   227,   122,   224,    -1,   193,   227,   122,
1205 >     224,    -1,    -1,    66,   415,   226,   416,   225,   224,    -1,
1206 >     416,   417,    -1,   417,    -1,   418,    -1,   419,    -1,     1,
1207 >      -1,   219,   227,   122,   224,    -1,   124,   227,   122,   224,
1208 >      -1,    -1,    23,   421,   226,   422,   225,   224,    -1,   422,
1209 >     423,    -1,   423,    -1,   424,    -1,   425,    -1,     1,    -1,
1210 >      60,   227,   122,   224,    -1,   124,   227,   122,   224,    -1,
1211 >      34,   226,   427,   225,   224,    -1,   427,   428,    -1,   428,
1212 >      -1,   429,    -1,     1,    -1,    60,   227,   122,   224,    -1,
1213 >      -1,    37,   431,   226,   432,   225,   224,    -1,   432,   433,
1214 >      -1,   433,    -1,   434,    -1,   435,    -1,     1,    -1,    97,
1215 >     227,   122,   224,    -1,   124,   227,   122,   224,    -1,    38,
1216 >     226,   437,   225,   224,    -1,   437,   438,    -1,   438,    -1,
1217 >     447,    -1,   448,    -1,   449,    -1,   450,    -1,   451,    -1,
1218 >     452,    -1,   453,    -1,   454,    -1,   455,    -1,   456,    -1,
1219 >     446,    -1,   458,    -1,   459,    -1,   473,    -1,   461,    -1,
1220 >     463,    -1,   465,    -1,   464,    -1,   468,    -1,   462,    -1,
1221 >     469,    -1,   470,    -1,   471,    -1,   472,    -1,   485,    -1,
1222 >     474,    -1,   475,    -1,   476,    -1,   481,    -1,   466,    -1,
1223 >     467,    -1,   491,    -1,   489,    -1,   490,    -1,   480,    -1,
1224 >     457,    -1,   478,    -1,   479,    -1,   445,    -1,   440,    -1,
1225 >     441,    -1,   442,    -1,   443,    -1,   444,    -1,   460,    -1,
1226 >     439,    -1,   477,    -1,     1,    -1,    90,   227,   107,   224,
1227 >      -1,    41,   227,   207,   224,    -1,    40,   227,   234,   224,
1228 >      -1,    45,   227,   234,   224,    -1,    43,   227,   107,   224,
1229 >      -1,    44,   227,   107,   224,    -1,   209,   227,   207,   224,
1230 >      -1,    67,   227,   234,   224,    -1,    54,   227,   207,   224,
1231 >      -1,    58,   227,   207,   224,    -1,    35,   227,   207,   224,
1232 >      -1,     6,   227,   207,   224,    -1,    86,   227,   234,   224,
1233 >      -1,    84,   227,   107,   224,    -1,    76,   227,   107,   224,
1234 >      -1,     7,   227,   234,   224,    -1,   213,   227,   234,   224,
1235 >      -1,   212,   227,   234,   224,    -1,    47,   227,   107,   224,
1236 >      -1,    59,   227,   207,   224,    -1,   222,   227,   207,   224,
1237 >      -1,   152,   227,   207,   224,    -1,   155,   227,   207,   224,
1238 >      -1,   156,   227,   207,   224,    -1,   154,   227,   207,   224,
1239 >      -1,   154,   227,   210,   224,    -1,   153,   227,   207,   224,
1240 >      -1,   153,   227,   210,   224,    -1,   115,   227,   234,   224,
1241 >      -1,    12,   227,   234,   224,    -1,   114,   227,   207,   224,
1242 >      -1,   116,   227,   234,   224,    -1,   145,   227,   207,   224,
1243 >      -1,   105,   227,   207,   224,    -1,   211,   227,   207,   224,
1244 >      -1,   111,   227,   207,   224,    -1,    29,   227,   107,   224,
1245 >      -1,    88,   227,   107,   224,    -1,   217,   227,   207,   224,
1246 >      -1,    30,   227,   122,   224,    -1,   184,   227,   122,   224,
1247 >      -1,   119,   227,   207,   224,    -1,    26,   227,   207,   224,
1248 >      -1,   208,   227,   234,   224,    -1,    -1,   112,   482,   227,
1249 >     483,   224,    -1,   483,   228,   484,    -1,   484,    -1,   158,
1250 >      -1,   160,    -1,   162,    -1,   163,    -1,   168,    -1,    48,
1251 >      -1,   189,    -1,   176,    -1,   180,    -1,   199,    -1,   191,
1252 >      -1,   165,    -1,   178,    -1,   185,    -1,   170,    -1,   204,
1253 >      -1,   190,    -1,   159,    -1,   173,    -1,   177,    -1,   166,
1254 >      -1,    -1,   110,   486,   227,   487,   224,    -1,   487,   228,
1255 >     488,    -1,   488,    -1,   158,    -1,   160,    -1,   162,    -1,
1256 >     163,    -1,   168,    -1,   189,    -1,    48,    -1,   176,    -1,
1257 >     180,    -1,   199,    -1,   191,    -1,   165,    -1,   178,    -1,
1258 >     185,    -1,   170,    -1,   204,    -1,   190,    -1,   159,    -1,
1259 >     173,    -1,   177,    -1,   166,    -1,    92,   227,   107,   224,
1260 >      -1,    93,   227,   107,   224,    -1,    20,   227,   107,   224,
1261 >      -1,    14,   226,   493,   225,   224,    -1,   493,   494,    -1,
1262 >     494,    -1,   500,    -1,   496,    -1,   497,    -1,   498,    -1,
1263 >     499,    -1,   501,    -1,   502,    -1,   503,    -1,   504,    -1,
1264 >     505,    -1,   506,    -1,   495,    -1,     1,    -1,    27,   227,
1265 >     207,   224,    -1,    70,   227,   234,   224,    -1,    71,   227,
1266 >     234,   224,    -1,    79,   227,   107,   224,    -1,    78,   227,
1267 >     107,   224,    -1,    77,   227,   107,   224,    -1,    22,   227,
1268 >     107,   224,    -1,    21,   227,   107,   224,    -1,   103,   227,
1269 >     207,   224,    -1,   104,   227,   207,   224,    -1,    64,   227,
1270 >     107,   224,    -1,    65,   227,   234,   224,    -1,   143,   226,
1271 >     508,   225,   224,    -1,   508,   509,    -1,   509,    -1,   510,
1272 >      -1,   511,    -1,   512,    -1,   513,    -1,   515,    -1,   516,
1273 >      -1,   514,    -1,   517,    -1,     1,    -1,    36,   227,   207,
1274 >     224,    -1,    28,   227,   207,   224,    -1,    52,   227,   207,
1275 >     224,    -1,    53,   227,   207,   224,    -1,    49,   227,   122,
1276 >     224,    -1,    73,   227,   234,   224,    -1,    48,   227,   207,
1277 >     224,    -1,    51,   227,   207,   224,    -1
1278   };
1279  
1280   /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1281   static const yytype_uint16 yyrline[] =
1282   {
1283 <       0,   334,   334,   335,   338,   339,   340,   341,   342,   343,
1284 <     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
1285 <     354,   355,   356,   357,   358,   359,   363,   363,   364,   368,
1286 <     372,   376,   380,   384,   390,   390,   391,   392,   393,   394,
1287 <     401,   404,   404,   405,   405,   405,   407,   413,   420,   422,
1288 <     422,   423,   423,   424,   424,   425,   425,   426,   426,   427,
1289 <     427,   428,   428,   429,   429,   430,   431,   434,   435,   437,
1290 <     437,   438,   444,   452,   452,   453,   459,   467,   506,   565,
1291 <     593,   601,   616,   631,   640,   654,   663,   691,   721,   744,
1292 <     753,   755,   755,   756,   756,   757,   757,   759,   768,   777,
1293 <     789,   790,   790,   792,   792,   793,   795,   802,   802,   812,
1294 <     813,   815,   815,   816,   816,   818,   823,   826,   832,   831,
1295 <     837,   837,   838,   842,   846,   850,   854,   858,   862,   873,
1296 <     872,   970,   970,   971,   971,   971,   972,   972,   972,   973,
1297 <     973,   973,   975,   984,  1021,  1033,  1044,  1086,  1096,  1095,
1298 <    1101,  1101,  1102,  1106,  1110,  1114,  1118,  1122,  1126,  1130,
1299 <    1134,  1138,  1142,  1146,  1150,  1154,  1158,  1162,  1166,  1170,
1300 <    1174,  1178,  1185,  1184,  1190,  1190,  1191,  1195,  1199,  1203,
1301 <    1207,  1211,  1215,  1219,  1223,  1227,  1231,  1235,  1239,  1243,
1302 <    1247,  1251,  1255,  1259,  1263,  1274,  1273,  1323,  1323,  1324,
1303 <    1325,  1325,  1326,  1327,  1328,  1329,  1330,  1331,  1332,  1333,
1304 <    1334,  1335,  1335,  1336,  1338,  1347,  1353,  1359,  1365,  1371,
1305 <    1377,  1383,  1389,  1395,  1401,  1408,  1414,  1420,  1430,  1429,
1306 <    1446,  1445,  1450,  1450,  1451,  1455,  1459,  1467,  1467,  1468,
1307 <    1468,  1468,  1468,  1468,  1470,  1470,  1472,  1472,  1474,  1488,
1308 <    1508,  1517,  1530,  1529,  1598,  1598,  1599,  1599,  1599,  1599,
1309 <    1600,  1600,  1600,  1601,  1601,  1603,  1638,  1651,  1660,  1672,
1310 <    1671,  1675,  1675,  1676,  1680,  1684,  1688,  1692,  1696,  1700,
1311 <    1704,  1708,  1715,  1734,  1744,  1758,  1757,  1773,  1773,  1774,
1312 <    1774,  1774,  1774,  1776,  1785,  1800,  1813,  1815,  1815,  1816,
1313 <    1816,  1818,  1834,  1833,  1849,  1849,  1850,  1850,  1850,  1850,
1314 <    1852,  1861,  1884,  1883,  1889,  1889,  1890,  1894,  1898,  1902,
1315 <    1906,  1910,  1914,  1918,  1922,  1926,  1936,  1935,  1952,  1952,
1316 <    1953,  1953,  1953,  1955,  1962,  1961,  1967,  1967,  1968,  1972,
1317 <    1976,  1980,  1984,  1988,  1992,  1996,  2000,  2004,  2014,  2013,
1318 <    2064,  2064,  2065,  2065,  2065,  2066,  2066,  2067,  2067,  2067,
1319 <    2068,  2068,  2068,  2069,  2069,  2070,  2072,  2081,  2090,  2116,
1320 <    2134,  2152,  2158,  2162,  2171,  2170,  2174,  2174,  2175,  2179,
1321 <    2185,  2196,  2207,  2218,  2227,  2246,  2245,  2311,  2310,  2314,
1322 <    2314,  2315,  2321,  2321,  2322,  2322,  2322,  2322,  2324,  2343,
1323 <    2353,  2352,  2377,  2377,  2378,  2378,  2378,  2380,  2386,  2395,
1324 <    2397,  2397,  2398,  2398,  2400,  2419,  2418,  2466,  2465,  2469,
1325 <    2469,  2470,  2476,  2476,  2477,  2477,  2477,  2477,  2479,  2485,
1326 <    2494,  2497,  2497,  2498,  2498,  2499,  2499,  2500,  2500,  2501,
1327 <    2501,  2502,  2502,  2503,  2503,  2504,  2504,  2505,  2505,  2506,
1328 <    2506,  2507,  2507,  2508,  2508,  2509,  2509,  2510,  2510,  2511,
1329 <    2512,  2512,  2513,  2513,  2514,  2514,  2515,  2515,  2516,  2516,
1330 <    2517,  2518,  2518,  2519,  2520,  2521,  2521,  2522,  2522,  2523,
1331 <    2524,  2524,  2525,  2525,  2526,  2526,  2527,  2530,  2535,  2541,
1332 <    2547,  2553,  2558,  2563,  2568,  2573,  2578,  2583,  2588,  2593,
1333 <    2598,  2603,  2608,  2613,  2618,  2623,  2628,  2633,  2639,  2650,
1334 <    2655,  2664,  2669,  2674,  2679,  2684,  2689,  2692,  2697,  2700,
1335 <    2705,  2710,  2715,  2720,  2725,  2730,  2735,  2740,  2745,  2756,
1336 <    2761,  2766,  2771,  2780,  2789,  2794,  2799,  2805,  2804,  2809,
1337 <    2809,  2810,  2813,  2816,  2819,  2822,  2825,  2828,  2831,  2834,
1338 <    2837,  2840,  2843,  2846,  2849,  2852,  2855,  2858,  2861,  2864,
1339 <    2867,  2873,  2872,  2877,  2877,  2878,  2881,  2884,  2887,  2890,
1340 <    2893,  2896,  2899,  2902,  2905,  2908,  2911,  2914,  2917,  2920,
1341 <    2923,  2926,  2929,  2932,  2935,  2940,  2945,  2950,  2959,  2962,
1342 <    2962,  2963,  2964,  2964,  2965,  2965,  2966,  2966,  2967,  2968,
1343 <    2968,  2969,  2970,  2970,  2971,  2971,  2973,  2978,  2983,  2988,
1344 <    2993,  2998,  3003,  3008,  3013,  3018,  3023,  3028,  3033,  3038,
1345 <    3046,  3049,  3049,  3050,  3050,  3051,  3052,  3052,  3053,  3054,
1346 <    3056,  3062,  3068,  3077,  3091,  3097
1283 >       0,   367,   367,   368,   371,   372,   373,   374,   375,   376,
1284 >     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
1285 >     387,   388,   389,   390,   391,   392,   393,   397,   397,   398,
1286 >     402,   406,   410,   414,   418,   422,   426,   432,   432,   433,
1287 >     434,   435,   436,   443,   446,   446,   447,   447,   447,   449,
1288 >     455,   462,   464,   464,   465,   465,   466,   466,   467,   467,
1289 >     468,   468,   469,   469,   470,   470,   471,   471,   472,   472,
1290 >     473,   474,   477,   478,   480,   480,   481,   487,   495,   495,
1291 >     496,   502,   510,   552,   611,   639,   647,   662,   677,   686,
1292 >     700,   709,   737,   767,   792,   814,   836,   845,   847,   847,
1293 >     848,   848,   849,   849,   851,   860,   869,   882,   881,   899,
1294 >     899,   900,   900,   900,   902,   908,   917,   918,   918,   920,
1295 >     920,   921,   923,   930,   930,   943,   944,   946,   946,   947,
1296 >     947,   949,   957,   960,   966,   965,   971,   971,   972,   976,
1297 >     980,   984,   988,   992,   996,  1007,  1006,  1086,  1086,  1087,
1298 >    1087,  1087,  1088,  1088,  1088,  1089,  1089,  1090,  1090,  1092,
1299 >    1098,  1104,  1110,  1121,  1127,  1133,  1140,  1139,  1145,  1145,
1300 >    1146,  1150,  1154,  1158,  1162,  1166,  1170,  1174,  1178,  1182,
1301 >    1186,  1190,  1194,  1198,  1202,  1206,  1210,  1214,  1218,  1222,
1302 >    1226,  1233,  1232,  1238,  1238,  1239,  1243,  1247,  1251,  1255,
1303 >    1259,  1263,  1267,  1271,  1275,  1279,  1283,  1287,  1291,  1295,
1304 >    1299,  1303,  1307,  1311,  1315,  1319,  1323,  1327,  1338,  1337,
1305 >    1398,  1398,  1399,  1400,  1400,  1401,  1402,  1403,  1404,  1405,
1306 >    1406,  1407,  1408,  1409,  1409,  1410,  1411,  1412,  1413,  1415,
1307 >    1421,  1427,  1433,  1439,  1445,  1451,  1457,  1463,  1469,  1476,
1308 >    1482,  1488,  1494,  1503,  1513,  1512,  1518,  1518,  1519,  1523,
1309 >    1534,  1533,  1540,  1539,  1544,  1544,  1545,  1549,  1553,  1559,
1310 >    1559,  1560,  1560,  1560,  1560,  1560,  1562,  1562,  1564,  1564,
1311 >    1566,  1580,  1600,  1606,  1616,  1615,  1657,  1657,  1658,  1658,
1312 >    1658,  1658,  1659,  1659,  1659,  1660,  1660,  1662,  1668,  1674,
1313 >    1680,  1692,  1691,  1697,  1697,  1698,  1702,  1706,  1710,  1714,
1314 >    1718,  1722,  1726,  1730,  1734,  1740,  1754,  1763,  1777,  1776,
1315 >    1791,  1791,  1792,  1792,  1792,  1792,  1794,  1800,  1806,  1816,
1316 >    1818,  1818,  1819,  1819,  1821,  1837,  1836,  1861,  1861,  1862,
1317 >    1862,  1862,  1862,  1864,  1870,  1890,  1889,  1895,  1895,  1896,
1318 >    1900,  1904,  1908,  1912,  1916,  1920,  1924,  1928,  1932,  1942,
1319 >    1941,  1962,  1962,  1963,  1963,  1963,  1965,  1972,  1971,  1977,
1320 >    1977,  1978,  1982,  1986,  1990,  1994,  1998,  2002,  2006,  2010,
1321 >    2014,  2024,  2023,  2093,  2093,  2094,  2094,  2094,  2095,  2095,
1322 >    2096,  2097,  2097,  2097,  2098,  2098,  2098,  2099,  2099,  2100,
1323 >    2102,  2108,  2114,  2120,  2133,  2146,  2152,  2158,  2162,  2171,
1324 >    2170,  2175,  2175,  2176,  2180,  2186,  2197,  2203,  2209,  2215,
1325 >    2231,  2230,  2256,  2256,  2257,  2257,  2257,  2259,  2279,  2289,
1326 >    2288,  2315,  2315,  2316,  2316,  2316,  2318,  2324,  2333,  2335,
1327 >    2335,  2336,  2336,  2338,  2356,  2355,  2378,  2378,  2379,  2379,
1328 >    2379,  2381,  2387,  2396,  2399,  2399,  2400,  2400,  2401,  2401,
1329 >    2402,  2402,  2403,  2403,  2404,  2404,  2405,  2406,  2407,  2407,
1330 >    2408,  2408,  2409,  2409,  2410,  2410,  2411,  2411,  2412,  2412,
1331 >    2413,  2413,  2414,  2414,  2415,  2415,  2416,  2416,  2417,  2417,
1332 >    2418,  2418,  2419,  2420,  2421,  2421,  2422,  2422,  2423,  2424,
1333 >    2425,  2426,  2426,  2427,  2430,  2435,  2441,  2447,  2453,  2458,
1334 >    2463,  2468,  2473,  2478,  2483,  2488,  2493,  2498,  2503,  2508,
1335 >    2513,  2518,  2524,  2535,  2540,  2545,  2550,  2555,  2560,  2563,
1336 >    2568,  2571,  2576,  2581,  2586,  2591,  2596,  2601,  2606,  2611,
1337 >    2616,  2621,  2626,  2631,  2640,  2649,  2654,  2659,  2665,  2664,
1338 >    2669,  2669,  2670,  2673,  2676,  2679,  2682,  2685,  2688,  2691,
1339 >    2694,  2697,  2700,  2703,  2706,  2709,  2712,  2715,  2718,  2721,
1340 >    2724,  2727,  2730,  2736,  2735,  2740,  2740,  2741,  2744,  2747,
1341 >    2750,  2753,  2756,  2759,  2762,  2765,  2768,  2771,  2774,  2777,
1342 >    2780,  2783,  2786,  2789,  2792,  2795,  2798,  2801,  2806,  2811,
1343 >    2816,  2825,  2828,  2828,  2829,  2830,  2830,  2831,  2831,  2832,
1344 >    2833,  2834,  2835,  2836,  2836,  2837,  2837,  2839,  2844,  2849,
1345 >    2854,  2859,  2864,  2869,  2874,  2879,  2884,  2889,  2894,  2902,
1346 >    2905,  2905,  2906,  2906,  2907,  2908,  2909,  2910,  2910,  2911,
1347 >    2912,  2914,  2920,  2926,  2932,  2938,  2947,  2961,  2967
1348   };
1349   #endif
1350  
# Line 1306 | Line 1361 | static const char *const yytname[] =
1361    "DEFAULT_SPLIT_USER_COUNT", "DENY", "DESCRIPTION", "DIE", "DISABLE_AUTH",
1362    "DISABLE_FAKE_CHANNELS", "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT",
1363    "EGDPOOL_PATH", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1364 <  "FAILED_OPER_NOTICE", "IRCD_FLAGS", "FLATTEN_LINKS", "GECOS", "GENERAL",
1365 <  "GLINE", "GLINE_DURATION", "GLINE_ENABLE", "GLINE_EXEMPT",
1366 <  "GLINE_REQUEST_DURATION", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1367 <  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1368 <  "HIDDEN_NAME", "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SPOOF_IPS",
1364 >  "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "GECOS", "GENERAL", "GLINE",
1365 >  "GLINE_DURATION", "GLINE_ENABLE", "GLINE_EXEMPT", "GLINE_MIN_CIDR",
1366 >  "GLINE_MIN_CIDR6", "GLINE_REQUEST_DURATION", "GLOBAL_KILL",
1367 >  "HAVENT_READ_CONF", "HIDDEN", "HIDDEN_NAME", "HIDE_IDLE_FROM_OPERS",
1368 >  "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SERVICES", "HIDE_SPOOF_IPS",
1369    "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
1370 <  "IP", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT",
1371 <  "KLINE_REASON", "KLINE_WITH_REASON", "KNOCK_DELAY",
1372 <  "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY", "LISTEN", "T_LOG",
1373 <  "MAX_ACCEPT", "MAX_BANS", "MAX_CHANS_PER_OPER", "MAX_CHANS_PER_USER",
1374 <  "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL", "MAX_NICK_CHANGES",
1375 <  "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS", "MAX_WATCH",
1376 <  "MESSAGE_LOCALE", "MIN_NONWILDCARD", "MIN_NONWILDCARD_SIMPLE", "MODULE",
1377 <  "MODULES", "NAME", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME",
1378 <  "NICK", "NICK_CHANGES", "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT",
1379 <  "NO_OPER_FLOOD", "NO_TILDE", "NUMBER", "NUMBER_PER_CIDR",
1380 <  "NUMBER_PER_IP", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_ONLY_UMODES",
1381 <  "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES", "JOIN_FLOOD_COUNT",
1382 <  "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD", "PATH",
1383 <  "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT", "QSTRING",
1384 <  "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T", "REHASH",
1385 <  "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN", "RESTRICT_CHANNELS",
1386 <  "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE",
1387 <  "SSL_DH_PARAM_FILE", "T_SSL_CLIENT_METHOD", "T_SSL_SERVER_METHOD",
1388 <  "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1389 <  "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1390 <  "SERVERINFO", "IRCD_SID", "TKLINE_EXPIRE_NOTICES", "T_SHARED",
1391 <  "T_CLUSTER", "TYPE", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1392 <  "STATS_E_DISABLED", "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY",
1393 <  "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL", "TMASKED",
1394 <  "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "T_ALL", "T_BOTS",
1395 <  "T_SOFTCALLERID", "T_CALLERID", "T_CCONN", "T_CCONN_FULL",
1396 <  "T_SSL_CIPHER_LIST", "T_DEAF", "T_DEBUG", "T_DLINE", "T_EXTERNAL",
1397 <  "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_MAX_CLIENTS",
1398 <  "T_NCHANGE", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_SERVER",
1399 <  "T_SERVNOTICE", "T_SET", "T_SKILL", "T_SPY", "T_SSL", "T_UMODES",
1400 <  "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV", "T_UNXLINE",
1401 <  "T_GLOBOPS", "T_WALLOP", "T_RESTART", "T_SERVICE", "T_SERVICES_NAME",
1402 <  "THROTTLE_TIME", "TRUE_NO_OPER_FLOOD", "UNKLINE", "USER", "USE_EGD",
1403 <  "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6", "XLINE",
1404 <  "WARN_NO_NLINE", "T_SIZE", "T_FILE", "';'", "'}'", "'{'", "'='", "','",
1370 >  "IP", "IRCD_AUTH", "IRCD_FLAGS", "IRCD_SID", "JOIN_FLOOD_COUNT",
1371 >  "JOIN_FLOOD_TIME", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE",
1372 >  "KLINE_EXEMPT", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1373 >  "LINKS_DELAY", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS",
1374 >  "MAX_CHANS_PER_OPER", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT",
1375 >  "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES", "MAX_NICK_LENGTH",
1376 >  "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS", "MAX_TOPIC_LENGTH",
1377 >  "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD", "MIN_NONWILDCARD_SIMPLE",
1378 >  "MODULE", "MODULES", "MOTD", "NAME", "NEED_IDENT", "NEED_PASSWORD",
1379 >  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NO_CREATE_ON_SPLIT",
1380 >  "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE", "NUMBER",
1381 >  "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPER_ONLY_UMODES", "OPER_PASS_RESV",
1382 >  "OPER_UMODES", "OPERATOR", "OPERS_BYPASS_CALLERID", "PACE_WAIT",
1383 >  "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME",
1384 >  "PORT", "QSTRING", "RANDOM_IDLE", "REASON", "REDIRPORT", "REDIRSERV",
1385 >  "REHASH", "REMOTE", "REMOTEBAN", "RESV", "RESV_EXEMPT",
1386 >  "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE", "SECONDS", "MINUTES",
1387 >  "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1388 >  "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1389 >  "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1390 >  "SSL_DH_PARAM_FILE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1391 >  "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "T_ALL",
1392 >  "T_BOTS", "T_CALLERID", "T_CCONN", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1393 >  "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1394 >  "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_MAX_CLIENTS",
1395 >  "T_NCHANGE", "T_NONONREG", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_RESTART",
1396 >  "T_SERVER", "T_SERVICE", "T_SERVICES_NAME", "T_SERVNOTICE", "T_SET",
1397 >  "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1398 >  "T_SSL_CIPHER_LIST", "T_SSL_CLIENT_METHOD", "T_SSL_SERVER_METHOD",
1399 >  "T_SSLV3", "T_TLSV1", "T_UMODES", "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED",
1400 >  "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS", "T_WEBIRC", "TBOOL",
1401 >  "THROTTLE_TIME", "TKLINE_EXPIRE_NOTICES", "TMASKED",
1402 >  "TRUE_NO_OPER_FLOOD", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "TYPE",
1403 >  "UNKLINE", "USE_EGD", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1404 >  "WARN_NO_NLINE", "XLINE", "';'", "'}'", "'{'", "'='", "','", "':'",
1405    "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1406    "sizespec", "modules_entry", "modules_items", "modules_item",
1407    "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
# Line 1358 | Line 1413 | static const char *const yytname[] =
1413    "serverinfo_ssl_cipher_list", "serverinfo_name", "serverinfo_sid",
1414    "serverinfo_description", "serverinfo_network_name",
1415    "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1416 <  "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1417 <  "admin_item", "admin_name", "admin_email", "admin_description",
1418 <  "logging_entry", "logging_items", "logging_item", "logging_use_logging",
1419 <  "logging_file_entry", "$@1", "logging_file_items", "logging_file_item",
1420 <  "logging_file_name", "logging_file_size", "logging_file_type", "$@2",
1421 <  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@3",
1416 >  "serverinfo_max_clients", "serverinfo_max_nick_length",
1417 >  "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1418 >  "admin_items", "admin_item", "admin_name", "admin_email",
1419 >  "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1420 >  "motd_mask", "motd_file", "logging_entry", "logging_items",
1421 >  "logging_item", "logging_use_logging", "logging_file_entry", "$@2",
1422 >  "logging_file_items", "logging_file_item", "logging_file_name",
1423 >  "logging_file_size", "logging_file_type", "$@3",
1424 >  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@4",
1425    "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
1426 <  "oper_encrypted", "oper_rsa_public_key_file", "oper_class",
1427 <  "oper_umodes", "$@4", "oper_umodes_items", "oper_umodes_item",
1428 <  "oper_flags", "$@5", "oper_flags_items", "oper_flags_item",
1429 <  "class_entry", "$@6", "class_items", "class_item", "class_name",
1430 <  "class_ping_time", "class_ping_warning", "class_number_per_ip",
1431 <  "class_connectfreq", "class_max_number", "class_max_global",
1432 <  "class_max_local", "class_max_ident", "class_sendq", "class_recvq",
1433 <  "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1434 <  "class_number_per_cidr", "listen_entry", "$@7", "listen_flags", "$@8",
1435 <  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1436 <  "listen_port", "$@9", "port_items", "port_item", "listen_address",
1437 <  "listen_host", "auth_entry", "$@10", "auth_items", "auth_item",
1438 <  "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1439 <  "$@11", "auth_flags_items", "auth_flags_item", "auth_spoof",
1440 <  "auth_redir_serv", "auth_redir_port", "resv_entry", "$@12", "resv_items",
1441 <  "resv_item", "resv_creason", "resv_channel", "resv_nick",
1442 <  "service_entry", "service_items", "service_item", "service_name",
1443 <  "shared_entry", "$@13", "shared_items", "shared_item", "shared_name",
1444 <  "shared_user", "shared_type", "$@14", "shared_types", "shared_type_item",
1445 <  "cluster_entry", "$@15", "cluster_items", "cluster_item", "cluster_name",
1446 <  "cluster_type", "$@16", "cluster_types", "cluster_type_item",
1447 <  "connect_entry", "$@17", "connect_items", "connect_item", "connect_name",
1426 >  "oper_encrypted", "oper_rsa_public_key_file",
1427 >  "oper_ssl_certificate_fingerprint", "oper_class", "oper_umodes", "$@5",
1428 >  "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@6",
1429 >  "oper_flags_items", "oper_flags_item", "class_entry", "$@7",
1430 >  "class_items", "class_item", "class_name", "class_ping_time",
1431 >  "class_number_per_ip", "class_connectfreq", "class_max_number",
1432 >  "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
1433 >  "class_recvq", "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1434 >  "class_number_per_cidr", "class_min_idle", "class_max_idle",
1435 >  "class_flags", "$@8", "class_flags_items", "class_flags_item",
1436 >  "listen_entry", "$@9", "listen_flags", "$@10", "listen_flags_items",
1437 >  "listen_flags_item", "listen_items", "listen_item", "listen_port",
1438 >  "$@11", "port_items", "port_item", "listen_address", "listen_host",
1439 >  "auth_entry", "$@12", "auth_items", "auth_item", "auth_user",
1440 >  "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@13",
1441 >  "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1442 >  "auth_redir_port", "resv_entry", "$@14", "resv_items", "resv_item",
1443 >  "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1444 >  "service_items", "service_item", "service_name", "shared_entry", "$@15",
1445 >  "shared_items", "shared_item", "shared_name", "shared_user",
1446 >  "shared_type", "$@16", "shared_types", "shared_type_item",
1447 >  "cluster_entry", "$@17", "cluster_items", "cluster_item", "cluster_name",
1448 >  "cluster_type", "$@18", "cluster_types", "cluster_type_item",
1449 >  "connect_entry", "$@19", "connect_items", "connect_item", "connect_name",
1450    "connect_host", "connect_vhost", "connect_send_password",
1451 <  "connect_accept_password", "connect_port", "connect_aftype",
1452 <  "connect_flags", "$@18", "connect_flags_items", "connect_flags_item",
1453 <  "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1454 <  "connect_class", "connect_ssl_cipher_list", "kill_entry", "$@19",
1455 <  "kill_type", "$@20", "kill_type_items", "kill_type_item", "kill_items",
1456 <  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@21",
1451 >  "connect_accept_password", "connect_ssl_certificate_fingerprint",
1452 >  "connect_port", "connect_aftype", "connect_flags", "$@20",
1453 >  "connect_flags_items", "connect_flags_item", "connect_encrypted",
1454 >  "connect_hub_mask", "connect_leaf_mask", "connect_class",
1455 >  "connect_ssl_cipher_list", "kill_entry", "$@21", "kill_items",
1456 >  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@22",
1457    "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1458 <  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@22",
1399 <  "gecos_flags", "$@23", "gecos_flags_items", "gecos_flags_item",
1458 >  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@23",
1459    "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1460    "general_entry", "general_items", "general_item", "general_max_watch",
1461    "general_gline_enable", "general_gline_duration",
1462    "general_gline_request_duration", "general_gline_min_cidr",
1463 <  "general_gline_min_cidr6", "general_use_whois_actually",
1405 <  "general_reject_hold_time", "general_tkline_expire_notices",
1463 >  "general_gline_min_cidr6", "general_tkline_expire_notices",
1464    "general_kill_chase_time_limit", "general_hide_spoof_ips",
1465 <  "general_ignore_bogus_ts", "general_disable_remote_commands",
1466 <  "general_failed_oper_notice", "general_anti_nick_flood",
1467 <  "general_max_nick_time", "general_max_nick_changes",
1468 <  "general_max_accept", "general_anti_spam_exit_message_time",
1469 <  "general_ts_warn_delta", "general_ts_max_delta",
1470 <  "general_havent_read_conf", "general_kline_with_reason",
1471 <  "general_kline_reason", "general_invisible_on_connect",
1472 <  "general_warn_no_nline", "general_stats_e_disabled",
1473 <  "general_stats_o_oper_only", "general_stats_P_oper_only",
1474 <  "general_stats_k_oper_only", "general_stats_i_oper_only",
1475 <  "general_pace_wait", "general_caller_id_wait",
1476 <  "general_opers_bypass_callerid", "general_pace_wait_simple",
1477 <  "general_short_motd", "general_no_oper_flood",
1420 <  "general_true_no_oper_flood", "general_oper_pass_resv",
1421 <  "general_message_locale", "general_dots_in_ident", "general_max_targets",
1465 >  "general_ignore_bogus_ts", "general_failed_oper_notice",
1466 >  "general_anti_nick_flood", "general_max_nick_time",
1467 >  "general_max_nick_changes", "general_max_accept",
1468 >  "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1469 >  "general_ts_max_delta", "general_havent_read_conf",
1470 >  "general_invisible_on_connect", "general_warn_no_nline",
1471 >  "general_stats_e_disabled", "general_stats_o_oper_only",
1472 >  "general_stats_P_oper_only", "general_stats_k_oper_only",
1473 >  "general_stats_i_oper_only", "general_pace_wait",
1474 >  "general_caller_id_wait", "general_opers_bypass_callerid",
1475 >  "general_pace_wait_simple", "general_short_motd",
1476 >  "general_no_oper_flood", "general_true_no_oper_flood",
1477 >  "general_oper_pass_resv", "general_dots_in_ident", "general_max_targets",
1478    "general_use_egd", "general_egdpool_path", "general_services_name",
1479    "general_ping_cookie", "general_disable_auth", "general_throttle_time",
1480    "general_oper_umodes", "$@24", "umode_oitems", "umode_oitem",
1481    "general_oper_only_umodes", "$@25", "umode_items", "umode_item",
1482    "general_min_nonwildcard", "general_min_nonwildcard_simple",
1483    "general_default_floodcount", "channel_entry", "channel_items",
1484 <  "channel_item", "channel_disable_fake_channels",
1429 <  "channel_restrict_channels", "channel_knock_delay",
1484 >  "channel_item", "channel_disable_fake_channels", "channel_knock_delay",
1485    "channel_knock_delay_channel", "channel_max_chans_per_user",
1486 <  "channel_max_chans_per_oper", "channel_quiet_on_ban", "channel_max_bans",
1486 >  "channel_max_chans_per_oper", "channel_max_bans",
1487    "channel_default_split_user_count", "channel_default_split_server_count",
1488    "channel_no_create_on_split", "channel_no_join_on_split",
1489    "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
1490    "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1491 <  "serverhide_hide_servers", "serverhide_hidden_name",
1491 >  "serverhide_disable_remote_commands", "serverhide_hide_servers",
1492 >  "serverhide_hide_services", "serverhide_hidden_name",
1493    "serverhide_links_delay", "serverhide_hidden",
1494    "serverhide_hide_server_ips", YY_NULL
1495   };
# Line 1465 | Line 1521 | static const yytype_uint16 yytoknum[] =
1521       435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
1522       445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1523       455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1524 <     465,   466,   467,   468,   469,   470,   471,   472,   473,    59,
1525 <     125,   123,    61,    44
1524 >     465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1525 >     475,   476,   477,   478,    59,   125,   123,    61,    44,    58
1526   };
1527   # endif
1528  
1529   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1530   static const yytype_uint16 yyr1[] =
1531   {
1532 <       0,   224,   225,   225,   226,   226,   226,   226,   226,   226,
1533 <     226,   226,   226,   226,   226,   226,   226,   226,   226,   226,
1534 <     226,   226,   226,   226,   226,   226,   227,   227,   228,   228,
1535 <     228,   228,   228,   228,   229,   229,   230,   230,   230,   230,
1536 <     231,   232,   232,   233,   233,   233,   234,   235,   236,   237,
1537 <     237,   238,   238,   238,   238,   238,   238,   238,   238,   238,
1538 <     238,   238,   238,   238,   238,   238,   238,   239,   240,   241,
1539 <     241,   242,   242,   243,   243,   244,   244,   245,   246,   247,
1540 <     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
1541 <     258,   259,   259,   260,   260,   260,   260,   261,   262,   263,
1542 <     264,   265,   265,   266,   266,   266,   267,   269,   268,   270,
1543 <     270,   271,   271,   271,   271,   272,   273,   273,   275,   274,
1544 <     276,   276,   277,   277,   277,   277,   277,   277,   277,   279,
1545 <     278,   280,   280,   281,   281,   281,   281,   281,   281,   281,
1546 <     281,   281,   282,   283,   284,   285,   286,   287,   289,   288,
1547 <     290,   290,   291,   291,   291,   291,   291,   291,   291,   291,
1548 <     291,   291,   291,   291,   291,   291,   291,   291,   291,   291,
1549 <     291,   291,   293,   292,   294,   294,   295,   295,   295,   295,
1550 <     295,   295,   295,   295,   295,   295,   295,   295,   295,   295,
1551 <     295,   295,   295,   295,   295,   297,   296,   298,   298,   299,
1552 <     299,   299,   299,   299,   299,   299,   299,   299,   299,   299,
1553 <     299,   299,   299,   299,   300,   301,   302,   303,   304,   305,
1554 <     306,   307,   308,   309,   310,   311,   312,   313,   315,   314,
1555 <     317,   316,   318,   318,   319,   319,   319,   320,   320,   321,
1556 <     321,   321,   321,   321,   323,   322,   324,   324,   325,   325,
1557 <     326,   327,   329,   328,   330,   330,   331,   331,   331,   331,
1558 <     331,   331,   331,   331,   331,   332,   333,   334,   335,   337,
1559 <     336,   338,   338,   339,   339,   339,   339,   339,   339,   339,
1560 <     339,   339,   340,   341,   342,   344,   343,   345,   345,   346,
1561 <     346,   346,   346,   347,   348,   349,   350,   351,   351,   352,
1562 <     352,   353,   355,   354,   356,   356,   357,   357,   357,   357,
1563 <     358,   359,   361,   360,   362,   362,   363,   363,   363,   363,
1564 <     363,   363,   363,   363,   363,   363,   365,   364,   366,   366,
1565 <     367,   367,   367,   368,   370,   369,   371,   371,   372,   372,
1566 <     372,   372,   372,   372,   372,   372,   372,   372,   374,   373,
1567 <     375,   375,   376,   376,   376,   376,   376,   376,   376,   376,
1568 <     376,   376,   376,   376,   376,   376,   377,   378,   379,   380,
1569 <     381,   382,   383,   383,   385,   384,   386,   386,   387,   387,
1570 <     388,   389,   390,   391,   392,   394,   393,   396,   395,   397,
1571 <     397,   398,   399,   399,   400,   400,   400,   400,   401,   402,
1572 <     404,   403,   405,   405,   406,   406,   406,   407,   408,   409,
1573 <     410,   410,   411,   411,   412,   414,   413,   416,   415,   417,
1574 <     417,   418,   419,   419,   420,   420,   420,   420,   421,   422,
1575 <     423,   424,   424,   425,   425,   425,   425,   425,   425,   425,
1576 <     425,   425,   425,   425,   425,   425,   425,   425,   425,   425,
1577 <     425,   425,   425,   425,   425,   425,   425,   425,   425,   425,
1578 <     425,   425,   425,   425,   425,   425,   425,   425,   425,   425,
1579 <     425,   425,   425,   425,   425,   425,   425,   425,   425,   425,
1580 <     425,   425,   425,   425,   425,   425,   425,   426,   427,   428,
1581 <     429,   430,   431,   432,   433,   434,   435,   436,   437,   438,
1582 <     439,   440,   441,   442,   443,   444,   445,   446,   447,   448,
1583 <     449,   450,   451,   452,   453,   454,   455,   455,   456,   456,
1584 <     457,   458,   459,   460,   461,   462,   463,   464,   465,   466,
1585 <     467,   468,   469,   470,   471,   472,   473,   475,   474,   476,
1586 <     476,   477,   477,   477,   477,   477,   477,   477,   477,   477,
1587 <     477,   477,   477,   477,   477,   477,   477,   477,   477,   477,
1588 <     477,   479,   478,   480,   480,   481,   481,   481,   481,   481,
1589 <     481,   481,   481,   481,   481,   481,   481,   481,   481,   481,
1590 <     481,   481,   481,   481,   481,   482,   483,   484,   485,   486,
1591 <     486,   487,   487,   487,   487,   487,   487,   487,   487,   487,
1592 <     487,   487,   487,   487,   487,   487,   488,   489,   490,   491,
1593 <     492,   493,   494,   495,   496,   497,   498,   499,   500,   501,
1594 <     502,   503,   503,   504,   504,   504,   504,   504,   504,   504,
1595 <     505,   506,   507,   508,   509,   510
1532 >       0,   230,   231,   231,   232,   232,   232,   232,   232,   232,
1533 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1534 >     232,   232,   232,   232,   232,   232,   232,   233,   233,   234,
1535 >     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
1536 >     236,   236,   236,   237,   238,   238,   239,   239,   239,   240,
1537 >     241,   242,   243,   243,   244,   244,   244,   244,   244,   244,
1538 >     244,   244,   244,   244,   244,   244,   244,   244,   244,   244,
1539 >     244,   244,   245,   246,   247,   247,   248,   248,   249,   249,
1540 >     250,   250,   251,   252,   253,   254,   255,   256,   257,   258,
1541 >     259,   260,   261,   262,   263,   264,   265,   266,   267,   267,
1542 >     268,   268,   268,   268,   269,   270,   271,   273,   272,   274,
1543 >     274,   275,   275,   275,   276,   277,   278,   279,   279,   280,
1544 >     280,   280,   281,   283,   282,   284,   284,   285,   285,   285,
1545 >     285,   286,   287,   287,   289,   288,   290,   290,   291,   291,
1546 >     291,   291,   291,   291,   291,   293,   292,   294,   294,   295,
1547 >     295,   295,   295,   295,   295,   295,   295,   295,   295,   296,
1548 >     297,   298,   299,   300,   301,   302,   304,   303,   305,   305,
1549 >     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
1550 >     306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
1551 >     306,   308,   307,   309,   309,   310,   310,   310,   310,   310,
1552 >     310,   310,   310,   310,   310,   310,   310,   310,   310,   310,
1553 >     310,   310,   310,   310,   310,   310,   310,   310,   312,   311,
1554 >     313,   313,   314,   314,   314,   314,   314,   314,   314,   314,
1555 >     314,   314,   314,   314,   314,   314,   314,   314,   314,   315,
1556 >     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
1557 >     326,   327,   328,   329,   331,   330,   332,   332,   333,   333,
1558 >     335,   334,   337,   336,   338,   338,   339,   339,   339,   340,
1559 >     340,   341,   341,   341,   341,   341,   343,   342,   344,   344,
1560 >     345,   345,   346,   347,   349,   348,   350,   350,   351,   351,
1561 >     351,   351,   351,   351,   351,   351,   351,   352,   353,   354,
1562 >     355,   357,   356,   358,   358,   359,   359,   359,   359,   359,
1563 >     359,   359,   359,   359,   359,   360,   361,   362,   364,   363,
1564 >     365,   365,   366,   366,   366,   366,   367,   368,   369,   370,
1565 >     371,   371,   372,   372,   373,   375,   374,   376,   376,   377,
1566 >     377,   377,   377,   378,   379,   381,   380,   382,   382,   383,
1567 >     383,   383,   383,   383,   383,   383,   383,   383,   383,   385,
1568 >     384,   386,   386,   387,   387,   387,   388,   390,   389,   391,
1569 >     391,   392,   392,   392,   392,   392,   392,   392,   392,   392,
1570 >     392,   394,   393,   395,   395,   396,   396,   396,   396,   396,
1571 >     396,   396,   396,   396,   396,   396,   396,   396,   396,   396,
1572 >     397,   398,   399,   400,   401,   402,   403,   404,   404,   406,
1573 >     405,   407,   407,   408,   408,   409,   410,   411,   412,   413,
1574 >     415,   414,   416,   416,   417,   417,   417,   418,   419,   421,
1575 >     420,   422,   422,   423,   423,   423,   424,   425,   426,   427,
1576 >     427,   428,   428,   429,   431,   430,   432,   432,   433,   433,
1577 >     433,   434,   435,   436,   437,   437,   438,   438,   438,   438,
1578 >     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
1579 >     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
1580 >     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
1581 >     438,   438,   438,   438,   438,   438,   438,   438,   438,   438,
1582 >     438,   438,   438,   438,   439,   440,   441,   442,   443,   444,
1583 >     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1584 >     455,   456,   457,   458,   459,   460,   461,   462,   463,   463,
1585 >     464,   464,   465,   466,   467,   468,   469,   470,   471,   472,
1586 >     473,   474,   475,   476,   477,   478,   479,   480,   482,   481,
1587 >     483,   483,   484,   484,   484,   484,   484,   484,   484,   484,
1588 >     484,   484,   484,   484,   484,   484,   484,   484,   484,   484,
1589 >     484,   484,   484,   486,   485,   487,   487,   488,   488,   488,
1590 >     488,   488,   488,   488,   488,   488,   488,   488,   488,   488,
1591 >     488,   488,   488,   488,   488,   488,   488,   488,   489,   490,
1592 >     491,   492,   493,   493,   494,   494,   494,   494,   494,   494,
1593 >     494,   494,   494,   494,   494,   494,   494,   495,   496,   497,
1594 >     498,   499,   500,   501,   502,   503,   504,   505,   506,   507,
1595 >     508,   508,   509,   509,   509,   509,   509,   509,   509,   509,
1596 >     509,   510,   511,   512,   513,   514,   515,   516,   517
1597   };
1598  
1599   /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
# Line 1544 | Line 1601 | static const yytype_uint8 yyr2[] =
1601   {
1602         0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
1603         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1604 <       1,     1,     1,     1,     2,     2,     0,     1,     2,     3,
1605 <       3,     3,     3,     3,     0,     1,     2,     3,     3,     3,
1606 <       5,     2,     1,     1,     1,     2,     4,     4,     5,     2,
1604 >       1,     1,     1,     1,     1,     2,     2,     0,     1,     2,
1605 >       3,     3,     3,     3,     3,     3,     3,     0,     1,     2,
1606 >       3,     3,     3,     5,     2,     1,     1,     1,     2,     4,
1607 >       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
1608         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1609 <       1,     1,     1,     1,     1,     1,     2,     4,     4,     3,
1610 <       1,     1,     1,     3,     1,     1,     1,     4,     4,     4,
1611 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1612 <       5,     2,     1,     1,     1,     1,     2,     4,     4,     4,
1613 <       5,     2,     1,     1,     1,     2,     4,     0,     6,     2,
1614 <       1,     1,     1,     1,     2,     4,     4,     4,     0,     5,
1615 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1616 <       6,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1617 <       1,     2,     4,     4,     4,     4,     4,     4,     0,     5,
1618 <       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1609 >       1,     2,     4,     4,     3,     1,     1,     1,     3,     1,
1610 >       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
1611 >       4,     4,     4,     4,     4,     4,     4,     5,     2,     1,
1612 >       1,     1,     1,     2,     4,     4,     4,     0,     6,     2,
1613 >       1,     1,     1,     2,     4,     4,     5,     2,     1,     1,
1614 >       1,     2,     4,     0,     6,     2,     1,     1,     1,     1,
1615 >       2,     4,     4,     4,     0,     5,     3,     1,     1,     1,
1616 >       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
1617 >       1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
1618 >       4,     4,     4,     4,     4,     4,     0,     5,     3,     1,
1619         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1562       1,     1,     0,     5,     3,     1,     1,     1,     1,     1,
1620         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1621 <       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
1621 >       1,     0,     5,     3,     1,     3,     1,     3,     1,     3,
1622         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1566       1,     1,     1,     2,     4,     4,     4,     4,     4,     4,
1567       4,     4,     4,     4,     4,     4,     4,     4,     0,     6,
1568       0,     5,     3,     1,     1,     1,     1,     2,     1,     1,
1569       1,     1,     1,     2,     0,     5,     3,     1,     1,     3,
1570       4,     4,     0,     6,     2,     1,     1,     1,     1,     1,
1571       1,     1,     1,     1,     2,     4,     4,     4,     4,     0,
1572       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1573       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
1574       1,     1,     2,     4,     4,     4,     5,     2,     1,     1,
1575       1,     4,     0,     6,     2,     1,     1,     1,     1,     2,
1576       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
1577       1,     1,     1,     1,     1,     1,     0,     6,     2,     1,
1578       1,     1,     2,     4,     0,     5,     3,     1,     1,     1,
1623         1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
1624         2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1625 <       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
1625 >       1,     1,     1,     1,     1,     1,     1,     1,     2,     4,
1626 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1627         4,     4,     4,     4,     0,     5,     3,     1,     1,     1,
1628 <       4,     4,     4,     4,     4,     0,     6,     0,     5,     3,
1629 <       1,     1,     2,     1,     1,     1,     1,     1,     4,     4,
1630 <       0,     6,     2,     1,     1,     1,     1,     4,     4,     5,
1631 <       2,     1,     1,     1,     4,     0,     6,     0,     5,     3,
1632 <       1,     1,     2,     1,     1,     1,     1,     1,     4,     4,
1633 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1628 >       0,     6,     0,     5,     3,     1,     1,     1,     1,     2,
1629 >       1,     1,     1,     1,     1,     2,     0,     5,     3,     1,
1630 >       1,     3,     4,     4,     0,     6,     2,     1,     1,     1,
1631 >       1,     1,     1,     1,     1,     1,     2,     4,     4,     4,
1632 >       4,     0,     5,     3,     1,     1,     1,     1,     1,     1,
1633 >       1,     1,     1,     1,     1,     4,     4,     4,     0,     6,
1634 >       2,     1,     1,     1,     1,     2,     4,     4,     4,     5,
1635 >       2,     1,     1,     1,     4,     0,     6,     2,     1,     1,
1636 >       1,     1,     2,     4,     4,     0,     5,     3,     1,     1,
1637 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1638 >       6,     2,     1,     1,     1,     2,     4,     0,     5,     3,
1639         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1640 +       1,     0,     6,     2,     1,     1,     1,     1,     1,     1,
1641 +       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1642 +       4,     4,     4,     4,     4,     4,     4,     4,     4,     0,
1643 +       5,     3,     1,     1,     1,     4,     4,     4,     4,     4,
1644 +       0,     6,     2,     1,     1,     1,     1,     4,     4,     0,
1645 +       6,     2,     1,     1,     1,     1,     4,     4,     5,     2,
1646 +       1,     1,     1,     4,     0,     6,     2,     1,     1,     1,
1647 +       1,     4,     4,     5,     2,     1,     1,     1,     1,     1,
1648         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1649         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1650         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1651 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1652 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1651 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1652 >       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
1653         4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1654         4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1655         4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1656 <       4,     4,     4,     4,     4,     4,     4,     0,     5,     3,
1657 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1600 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1601 <       1,     0,     5,     3,     1,     1,     1,     1,     1,     1,
1656 >       4,     4,     4,     4,     4,     4,     4,     4,     0,     5,
1657 >       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1658         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1659 <       1,     1,     1,     1,     1,     4,     4,     4,     5,     2,
1659 >       1,     1,     1,     0,     5,     3,     1,     1,     1,     1,
1660         1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1661 <       1,     1,     1,     1,     1,     1,     4,     4,     4,     4,
1662 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1663 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1664 <       4,     4,     4,     4,     4,     4
1661 >       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
1662 >       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
1663 >       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1664 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     5,
1665 >       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1666 >       1,     4,     4,     4,     4,     4,     4,     4,     4
1667   };
1668  
1669   /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
# Line 1613 | Line 1671 | static const yytype_uint8 yyr2[] =
1671     means the default is an error.  */
1672   static const yytype_uint16 yydefact[] =
1673   {
1674 <       2,     0,     1,     0,     0,     0,   195,   348,   400,     0,
1675 <     415,     0,   252,   385,   228,     0,     0,   129,   285,     0,
1676 <       0,   302,   326,     0,     3,    23,    11,     4,     5,     6,
1677 <       8,     9,    10,    13,    14,    15,    16,    17,    18,    19,
1678 <      20,    22,    21,     7,    12,    24,    25,     0,     0,     0,
1674 >       2,     0,     1,     0,     0,     0,   218,   381,   429,     0,
1675 >     444,     0,   284,   420,   260,     0,   107,   145,   318,     0,
1676 >       0,   359,     0,     0,   335,     3,    23,    11,     4,    24,
1677 >       5,     6,     8,     9,    10,    13,    14,    15,    16,    17,
1678 >      18,    19,    20,    22,    21,     7,    12,    25,    26,     0,
1679         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1680         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1681 <       0,     0,    92,    93,    95,    94,   605,     0,     0,     0,
1681 >       0,     0,     0,     0,     0,    99,   100,   102,   101,   616,
1682         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1683 <       0,     0,   590,   604,   600,   592,   593,   594,   595,   596,
1684 <     591,   597,   598,   599,   601,   602,   603,     0,     0,     0,
1685 <     413,     0,     0,   411,   412,     0,   486,     0,     0,     0,
1683 >       0,     0,     0,   603,   615,   605,   606,   607,   608,   604,
1684 >     609,   610,   611,   612,   613,   614,     0,     0,     0,   442,
1685 >       0,     0,   440,   441,     0,   503,     0,     0,     0,     0,
1686         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1687         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1688 <       0,     0,     0,     0,     0,     0,     0,     0,   561,     0,
1631 <     537,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1688 >       0,     0,   573,     0,   548,     0,     0,     0,     0,     0,
1689         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1690 <       0,   432,   484,   476,   477,   478,   479,   480,   481,   482,
1691 <     475,   443,   433,   434,   470,   435,   436,   437,   438,   439,
1692 <     440,   441,   442,   472,   444,   445,   446,   447,   483,   449,
1693 <     454,   450,   452,   451,   465,   466,   453,   455,   456,   457,
1694 <     458,   459,   448,   461,   462,   463,   485,   473,   474,   471,
1695 <     464,   460,   468,   469,   467,     0,     0,     0,     0,     0,
1696 <       0,   102,   103,   104,     0,     0,     0,     0,     0,    42,
1697 <      43,    44,     0,     0,   629,     0,     0,     0,     0,     0,
1698 <       0,     0,   622,   623,   624,   627,   625,   626,   628,     0,
1690 >       0,     0,     0,     0,   455,   501,   495,   496,   497,   498,
1691 >     499,   494,   466,   456,   457,   458,   459,   460,   461,   462,
1692 >     463,   464,   465,   491,   467,   468,   500,   470,   475,   471,
1693 >     473,   472,   485,   486,   474,   476,   477,   478,   479,   469,
1694 >     481,   482,   483,   502,   492,   493,   490,   484,   480,   488,
1695 >     489,   487,     0,     0,     0,     0,     0,     0,     0,    45,
1696 >      46,    47,     0,     0,     0,   640,     0,     0,     0,     0,
1697 >       0,     0,     0,     0,     0,   631,   632,   633,   634,   635,
1698 >     638,   636,   637,   639,     0,     0,     0,     0,     0,     0,
1699         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1700 <       0,     0,     0,     0,     0,     0,    50,    63,    64,    62,
1701 <      59,    58,    65,    51,    61,    54,    55,    56,    52,    60,
1702 <      57,    53,     0,     0,   300,     0,     0,   298,   299,    96,
1703 <       0,     0,     0,     0,    91,     0,     0,     0,     0,     0,
1700 >       0,     0,     0,    53,    68,    69,    67,    64,    63,    70,
1701 >      54,    66,    57,    58,    59,    55,    65,    60,    61,    62,
1702 >      56,     0,     0,     0,     0,   118,   119,   120,     0,   333,
1703 >       0,     0,   331,   332,     0,   103,     0,     0,     0,     0,
1704 >      98,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1705 >       0,     0,     0,     0,   602,     0,     0,     0,     0,   254,
1706         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1707 <     589,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1708 <       0,     0,     0,     0,     0,     0,     0,   198,   199,   202,
1709 <     203,   205,   206,   207,   208,   209,   210,   211,   212,   200,
1710 <     201,   204,     0,     0,     0,     0,     0,   374,     0,     0,
1711 <       0,     0,     0,     0,     0,     0,     0,   351,   352,   353,
1712 <     354,   355,   356,   358,   357,   360,   364,   361,   362,   363,
1713 <     359,   406,     0,     0,     0,   403,   404,   405,     0,     0,
1655 <     410,   427,     0,     0,   417,   426,     0,   423,   424,   425,
1707 >       0,     0,     0,   221,   222,   225,   227,   228,   229,   230,
1708 >     231,   232,   233,   234,   223,   224,   226,   235,   236,   237,
1709 >       0,     0,     0,     0,     0,     0,     0,   409,     0,     0,
1710 >       0,     0,     0,     0,     0,     0,   384,   385,   386,   387,
1711 >     388,   389,   390,   392,   391,   394,   398,   395,   396,   397,
1712 >     393,   435,     0,     0,     0,   432,   433,   434,     0,     0,
1713 >     439,   450,     0,     0,     0,   447,   448,   449,     0,     0,
1714         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1715         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1716         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1717         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1718 +       0,     0,     0,     0,     0,     0,   454,     0,     0,     0,
1719 +     301,     0,     0,     0,     0,     0,     0,   287,   288,   289,
1720 +     290,   295,   291,   292,   293,   294,   426,     0,     0,     0,
1721 +     423,   424,   425,     0,     0,     0,   262,     0,   272,     0,
1722 +     270,   271,   273,   274,    48,     0,     0,     0,    44,     0,
1723 +       0,     0,     0,   110,   111,   112,     0,     0,     0,   191,
1724 +       0,     0,     0,     0,   166,     0,     0,   148,   149,   150,
1725 +     151,   154,   155,   156,   153,   152,   157,     0,     0,     0,
1726 +       0,     0,   321,   322,   323,   324,     0,     0,     0,     0,
1727 +       0,     0,     0,     0,     0,   630,    71,     0,     0,     0,
1728         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1729 <       0,     0,     0,     0,   431,     0,     0,     0,   269,     0,
1730 <       0,     0,     0,     0,     0,   255,   256,   257,   258,   263,
1731 <     259,   260,   261,   262,   397,     0,   387,     0,   396,     0,
1732 <     393,   394,   395,     0,   230,     0,     0,     0,   240,     0,
1733 <     238,   239,   241,   242,   105,     0,     0,   101,     0,    45,
1666 <       0,     0,     0,    41,     0,     0,     0,   172,     0,     0,
1667 <       0,   148,     0,     0,   132,   133,   134,   135,   138,   139,
1668 <     137,   136,   140,     0,     0,     0,     0,     0,   288,   289,
1669 <     290,   291,     0,     0,     0,     0,     0,     0,     0,   621,
1670 <      66,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1671 <       0,     0,     0,     0,     0,     0,     0,    49,     0,     0,
1672 <     312,     0,     0,   305,   306,   307,   308,     0,     0,   334,
1673 <       0,   329,   330,   331,     0,     0,   297,     0,     0,     0,
1674 <      90,     0,     0,     0,    26,     0,     0,     0,     0,     0,
1675 <       0,     0,     0,     0,     0,     0,   588,   213,     0,     0,
1729 >       0,     0,     0,     0,     0,    52,     0,     0,   367,     0,
1730 >     362,   363,   364,   121,     0,     0,   117,     0,     0,     0,
1731 >     330,     0,     0,   345,     0,     0,   338,   339,   340,   341,
1732 >       0,     0,     0,    97,     0,     0,     0,     0,    27,     0,
1733 >       0,     0,     0,     0,     0,     0,     0,   601,   238,     0,
1734         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1735 <       0,     0,     0,   197,   365,     0,     0,     0,     0,     0,
1678 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
1679 <       0,     0,     0,   402,     0,   409,     0,     0,     0,     0,
1680 <     422,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1735 >       0,     0,     0,     0,     0,     0,   220,   399,     0,     0,
1736         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1737 +       0,     0,     0,   383,     0,     0,     0,   431,     0,   438,
1738 +       0,     0,     0,   446,     0,     0,     0,     0,     0,     0,
1739         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1740         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1741         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1685       0,     0,     0,     0,     0,     0,   430,   264,     0,     0,
1686       0,     0,     0,     0,     0,     0,     0,   254,     0,     0,
1687       0,     0,   392,   243,     0,     0,     0,     0,     0,   237,
1688       0,   100,     0,     0,     0,    40,   141,     0,     0,     0,
1689       0,     0,     0,     0,     0,     0,   131,   292,     0,     0,
1690       0,     0,   287,     0,     0,     0,     0,     0,     0,   620,
1691       0,     0,     0,     0,     0,     0,     0,     0,    71,    72,
1692       0,    70,    75,    76,     0,    74,     0,     0,     0,     0,
1693       0,    48,   309,     0,     0,     0,     0,   304,   332,     0,
1694       0,     0,   328,     0,   296,    99,    98,    97,   615,   614,
1695     606,    26,    26,    26,    26,    26,    28,    27,   608,   609,
1696     613,   611,   610,   616,   617,   618,   619,   612,   607,     0,
1742         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1743 <       0,    34,     0,     0,   196,     0,     0,     0,     0,     0,
1744 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   349,
1745 <       0,     0,   401,   414,     0,     0,     0,   416,   501,   505,
1746 <     521,   587,   535,   499,   529,   532,   500,   489,   488,   490,
1747 <     491,   492,   508,   497,   498,   511,   496,   510,   509,   504,
1748 <     503,   502,   530,   487,   528,   585,   586,   525,   522,   572,
1749 <     565,   582,   583,   566,   567,   568,   569,   577,   570,   580,
1750 <     584,   573,   578,   574,   579,   571,   576,   575,   581,     0,
1751 <     564,   527,   547,   541,   558,   559,   542,   543,   544,   545,
1752 <     553,   546,   556,   560,   549,   554,   550,   555,   548,   552,
1753 <     551,   557,     0,   540,   520,   523,   534,   494,   495,   524,
1754 <     513,   518,   519,   516,   517,   514,   515,   507,   506,   533,
1755 <     536,   526,   531,   493,   512,     0,     0,     0,     0,     0,
1756 <       0,     0,     0,   253,     0,     0,     0,   386,     0,     0,
1757 <       0,   248,   244,   247,   229,   106,     0,     0,   118,     0,
1758 <       0,   110,   111,   113,   112,    46,    47,     0,     0,     0,
1759 <       0,     0,     0,     0,     0,   130,     0,     0,     0,   286,
1760 <     630,   634,   632,   635,   631,   633,    83,    89,    81,    85,
1761 <      84,    78,    77,    79,    67,     0,    68,     0,    82,    80,
1762 <      88,    86,    87,     0,     0,     0,   303,     0,     0,   327,
1763 <     301,    29,    30,    31,    32,    33,   225,   226,   218,   220,
1764 <     222,   221,   219,   214,   227,   217,   215,   216,    34,    34,
1765 <      34,    36,    35,   223,   224,   370,   372,   373,   383,   380,
1766 <     378,   379,     0,   377,   367,   381,   382,   366,   371,   369,
1767 <     384,   368,   407,   408,   428,   429,   421,     0,   420,   562,
1768 <       0,   538,     0,   267,   268,   277,   274,   279,   276,   275,
1769 <     281,   278,   280,   273,     0,   272,   266,   284,   283,   282,
1770 <     265,   399,   391,     0,   390,   398,   235,   236,   234,     0,
1771 <     233,   251,   250,     0,     0,     0,   114,     0,     0,     0,
1772 <       0,   109,   147,   145,   187,   184,   183,   176,   178,   194,
1773 <     188,   191,   186,   177,   192,   180,   189,   193,   181,   190,
1774 <     185,   179,   182,     0,   175,   142,   144,   146,   158,   152,
1775 <     169,   170,   153,   154,   155,   156,   164,   157,   167,   171,
1776 <     160,   165,   161,   166,   159,   163,   162,   168,     0,   151,
1777 <     143,   294,   295,   293,    69,    73,   310,   316,   322,   325,
1778 <     318,   324,   319,   323,   321,   317,   320,     0,   315,   311,
1779 <     333,   338,   344,   347,   340,   346,   341,   345,   343,   339,
1780 <     342,     0,   337,    37,    38,    39,   375,     0,   418,     0,
1781 <     563,   539,   270,     0,   388,     0,   231,     0,   249,   246,
1782 <     245,     0,     0,     0,     0,   108,   173,     0,   149,     0,
1783 <     313,     0,   335,     0,   376,   419,   271,   389,   232,   115,
1784 <     124,   127,   126,   123,   128,   125,   122,     0,   121,   117,
1785 <     116,   174,   150,   314,   336,   119,     0,   120
1743 >       0,     0,     0,   453,   296,     0,     0,     0,     0,     0,
1744 >       0,     0,     0,     0,   286,     0,     0,     0,   422,   275,
1745 >       0,     0,     0,     0,     0,   269,     0,     0,    43,   113,
1746 >       0,     0,     0,   109,   158,     0,     0,     0,     0,     0,
1747 >       0,     0,     0,     0,     0,   147,   325,     0,     0,     0,
1748 >       0,   320,     0,     0,     0,     0,     0,     0,     0,     0,
1749 >     629,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1750 >       0,     0,     0,     0,    76,    77,     0,    75,    80,    81,
1751 >       0,    79,     0,     0,    51,   365,     0,     0,     0,   361,
1752 >       0,   116,     0,     0,   329,   342,     0,     0,     0,     0,
1753 >     337,   106,   105,   104,   624,   623,   617,   627,    27,    27,
1754 >      27,    27,    27,    27,    27,    29,    28,   628,   618,   619,
1755 >     622,   621,   620,   625,   626,     0,     0,     0,     0,     0,
1756 >       0,     0,     0,     0,     0,     0,     0,     0,     0,    37,
1757 >       0,     0,   219,     0,     0,     0,     0,     0,     0,     0,
1758 >       0,     0,     0,     0,     0,     0,     0,     0,   382,     0,
1759 >       0,   430,   443,     0,     0,   445,   515,   519,   533,   600,
1760 >     546,   540,   543,   514,   506,   505,   508,   509,   507,   522,
1761 >     512,   513,   523,   511,   518,   517,   516,   541,   504,   598,
1762 >     599,   537,   583,   577,   594,   578,   579,   580,   588,   597,
1763 >     581,   591,   595,   584,   596,   589,   585,   590,   582,   593,
1764 >     587,   586,   592,     0,   576,   539,   557,   552,   569,   553,
1765 >     554,   555,   563,   572,   556,   566,   570,   559,   571,   564,
1766 >     560,   565,   558,   568,   562,   561,   567,     0,   551,   534,
1767 >     532,   535,   545,   536,   525,   530,   531,   528,   529,   526,
1768 >     527,   544,   547,   510,   538,   521,   520,   542,   524,     0,
1769 >       0,     0,     0,     0,     0,     0,     0,   285,     0,     0,
1770 >     421,     0,     0,     0,   280,   276,   279,   261,    49,    50,
1771 >       0,     0,   108,     0,     0,     0,     0,     0,     0,     0,
1772 >       0,     0,   146,     0,     0,     0,   319,   642,   641,   647,
1773 >     645,   648,   643,   644,   646,    88,    96,    87,    94,    95,
1774 >      86,    90,    89,    83,    82,    84,    93,    85,    72,     0,
1775 >      73,     0,    91,    92,     0,     0,   360,   122,     0,     0,
1776 >       0,   134,     0,   126,   127,   129,   128,   334,     0,     0,
1777 >       0,   336,    30,    31,    32,    33,    34,    35,    36,   249,
1778 >     250,   242,   259,   258,     0,   257,   244,   246,   253,   245,
1779 >     243,   252,   239,   251,   241,   240,    37,    37,    37,    39,
1780 >      38,   247,   248,   404,   407,   408,   418,   415,   401,   416,
1781 >     413,   414,     0,   412,   417,   400,   406,   403,   405,   419,
1782 >     402,   436,   437,   451,   452,   574,     0,   549,     0,   299,
1783 >     300,   309,   306,   311,   307,   308,   314,   310,   312,   305,
1784 >     313,     0,   304,   298,   317,   316,   315,   297,   428,   427,
1785 >     283,   282,   267,   268,   266,     0,   265,     0,     0,     0,
1786 >     114,   115,   165,   162,   210,   198,   207,   206,   196,   201,
1787 >     217,   209,   215,   200,   203,   212,   214,   211,   208,   216,
1788 >     204,   213,   202,   205,     0,   194,   159,   161,   163,   164,
1789 >     175,   170,   187,   171,   172,   173,   181,   190,   174,   184,
1790 >     188,   177,   189,   182,   178,   183,   176,   186,   180,   179,
1791 >     185,     0,   169,   160,   328,   326,   327,    74,    78,   366,
1792 >     371,   377,   380,   373,   379,   374,   378,   376,   372,   375,
1793 >       0,   370,   130,     0,     0,     0,     0,   125,   343,   349,
1794 >     355,   358,   351,   357,   352,   356,   354,   350,   353,     0,
1795 >     348,   344,   255,     0,    40,    41,    42,   410,     0,   575,
1796 >     550,   302,     0,   263,     0,   281,   278,   277,     0,     0,
1797 >       0,   192,     0,   167,     0,   368,     0,     0,     0,     0,
1798 >       0,   124,   346,     0,   256,   411,   303,   264,   197,   195,
1799 >     199,   193,   168,   369,   131,   133,   132,   140,   143,   142,
1800 >     139,   144,   141,   138,     0,   137,   347,   135,     0,   136
1801   };
1802  
1803   /* YYDEFGOTO[NTERM-NUM].  */
1804   static const yytype_int16 yydefgoto[] =
1805   {
1806 <      -1,     1,    24,   796,   797,  1041,  1042,    25,   238,   239,
1807 <     240,   241,    26,   275,   276,   277,   278,   760,   761,   764,
1808 <     765,   279,   280,   281,   282,   283,   284,   285,   286,   287,
1809 <     288,   289,   290,   291,    27,    71,    72,    73,    74,    75,
1810 <      28,   230,   231,   232,   233,   234,   970,   971,   972,   973,
1811 <     974,  1108,  1237,  1238,    29,    60,   513,   514,   515,   516,
1812 <     517,   518,   519,   520,   521,   733,  1158,  1159,   522,   729,
1813 <    1133,  1134,    30,    49,   336,   337,   338,   339,   340,   341,
1814 <     342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
1815 <      31,    57,   488,   714,  1099,  1100,   489,   490,   491,  1105,
1816 <     962,   963,   492,   493,    32,    55,   464,   465,   466,   467,
1817 <     468,   469,   470,   700,  1084,  1085,   471,   472,   473,    33,
1818 <      61,   527,   528,   529,   530,   531,    34,   296,   297,   298,
1819 <      35,    64,   562,   563,   564,   565,   566,   774,  1177,  1178,
1820 <      36,    65,   570,   571,   572,   573,   780,  1191,  1192,    37,
1821 <      50,   366,   367,   368,   369,   370,   371,   372,   373,   374,
1822 <     375,   619,  1052,  1053,   376,   377,   378,   379,   380,    38,
1823 <      56,   478,   709,  1093,  1094,   479,   480,   481,   482,    39,
1824 <      51,   384,   385,   386,   387,    40,   112,   113,   114,    41,
1825 <      53,   395,   638,  1067,  1068,   396,   397,   398,   399,    42,
1826 <     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
1827 <     180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
1828 <     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
1829 <     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
1830 <     210,   211,   212,   213,   214,   215,   216,   217,   218,   219,
1831 <     220,   433,   922,   923,   221,   431,   899,   900,   222,   223,
1832 <     224,    43,    91,    92,    93,    94,    95,    96,    97,    98,
1833 <      99,   100,   101,   102,   103,   104,   105,   106,    44,   251,
1834 <     252,   253,   254,   255,   256,   257,   258
1806 >      -1,     1,    25,   805,   806,  1059,  1060,    26,   218,   219,
1807 >     220,   221,    27,   262,   263,   264,   265,   766,   767,   770,
1808 >     771,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1809 >     275,   276,   277,   278,   279,   280,    28,    74,    75,    76,
1810 >      77,    78,    29,    61,   492,   493,   494,   495,    30,   284,
1811 >     285,   286,   287,   288,  1022,  1023,  1024,  1025,  1026,  1195,
1812 >    1264,  1265,    31,    62,   506,   507,   508,   509,   510,   511,
1813 >     512,   513,   514,   515,   732,  1171,  1172,   516,   727,  1144,
1814 >    1145,    32,    51,   332,   333,   334,   335,   336,   337,   338,
1815 >     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
1816 >     349,   602,  1044,  1045,    33,    59,   478,   712,  1115,  1116,
1817 >     479,   480,   481,  1119,   965,   966,   482,   483,    34,    57,
1818 >     456,   457,   458,   459,   460,   461,   462,   697,  1101,  1102,
1819 >     463,   464,   465,    35,    63,   521,   522,   523,   524,   525,
1820 >      36,   291,   292,   293,    37,    69,   575,   576,   577,   578,
1821 >     579,   787,  1209,  1210,    38,    66,   559,   560,   561,   562,
1822 >     777,  1190,  1191,    39,    52,   365,   366,   367,   368,   369,
1823 >     370,   371,   372,   373,   374,   375,   624,  1072,  1073,   376,
1824 >     377,   378,   379,   380,    40,    58,   469,   470,   471,   472,
1825 >      41,    53,   384,   385,   386,   387,    42,   111,   112,   113,
1826 >      43,    55,   394,   395,   396,   397,    44,   163,   164,   165,
1827 >     166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
1828 >     176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
1829 >     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
1830 >     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1831 >     206,   207,   426,   927,   928,   208,   424,   903,   904,   209,
1832 >     210,   211,    45,    92,    93,    94,    95,    96,    97,    98,
1833 >      99,   100,   101,   102,   103,   104,   105,    46,   234,   235,
1834 >     236,   237,   238,   239,   240,   241,   242,   243
1835   };
1836  
1837   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1838     STATE-NUM.  */
1839 < #define YYPACT_NINF -861
1839 > #define YYPACT_NINF -990
1840   static const yytype_int16 yypact[] =
1841   {
1842 <    -861,   613,  -861,  -173,  -209,  -198,  -861,  -861,  -861,  -193,
1843 <    -861,  -188,  -861,  -861,  -861,  -185,  -183,  -861,  -861,  -180,
1844 <    -169,  -861,  -861,  -138,  -861,  -861,  -861,  -861,  -861,  -861,
1845 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1846 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,    18,   823,  -124,
1847 <    -100,   -98,    21,   -80,   438,   -74,   -71,   -58,    44,     4,
1848 <     -20,   -15,   378,   326,   -10,    -7,     7,   -66,    41,    51,
1849 <      57,     8,  -861,  -861,  -861,  -861,  -861,    59,    62,    65,
1850 <      84,    92,    96,   100,   102,   103,   104,   106,   110,   117,
1851 <     122,     3,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1852 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,   555,   356,    49,
1853 <    -861,   123,    26,  -861,  -861,   166,  -861,   133,   134,   136,
1854 <     138,   141,   144,   145,   148,   149,   153,   154,   155,   156,
1855 <     158,   160,   162,   163,   165,   167,   168,   169,   172,   173,
1856 <     177,   179,   186,   189,   191,   194,   196,   201,  -861,   203,
1857 <    -861,   211,   212,   214,   215,   218,   220,   221,   224,   226,
1858 <     229,   231,   234,   243,   247,   248,   250,   252,   255,   259,
1859 <     131,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1860 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1861 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1862 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1863 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1864 <    -861,  -861,  -861,  -861,  -861,   392,    42,   279,     1,   263,
1865 <      58,  -861,  -861,  -861,    80,    94,   264,   265,    19,  -861,
1866 <    -861,  -861,   364,   188,  -861,   267,   269,   270,   272,   273,
1867 <     280,    14,  -861,  -861,  -861,  -861,  -861,  -861,  -861,   288,
1868 <     286,   287,   289,   291,   292,   296,   299,   305,   306,   309,
1869 <     311,   312,   313,   319,   320,    91,  -861,  -861,  -861,  -861,
1870 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1871 <    -861,  -861,    20,    16,  -861,   324,    36,  -861,  -861,  -861,
1872 <     157,   290,   429,   336,  -861,   456,   457,   398,   462,   462,
1873 <     463,   465,   466,   409,   412,   475,   462,   420,   422,   367,
1874 <    -861,   368,   366,   369,   370,   372,   373,   383,   384,   385,
1875 <     386,   388,   393,   394,   396,   400,   251,  -861,  -861,  -861,
1876 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1877 <    -861,  -861,   371,   401,   402,   403,   404,  -861,   406,   407,
1878 <     410,   415,   418,   431,   433,   434,   316,  -861,  -861,  -861,
1879 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1880 <    -861,  -861,   440,   441,    30,  -861,  -861,  -861,   500,   445,
1881 <    -861,  -861,   443,   444,  -861,  -861,    34,  -861,  -861,  -861,
1882 <     497,   462,   462,   566,   505,   506,   569,   551,   511,   462,
1883 <     515,   462,   578,   579,   580,   520,   521,   524,   462,   562,
1884 <     525,   588,   590,   462,   591,   592,   574,   594,   595,   534,
1885 <     535,   478,   539,   483,   462,   462,   543,   462,   544,   545,
1886 <     546,   -87,    97,   548,   549,   462,   462,   593,   462,   552,
1887 <     556,   557,   559,   499,  -861,   504,   502,   503,  -861,   507,
1888 <     516,   526,   528,   533,    12,  -861,  -861,  -861,  -861,  -861,
1889 <    -861,  -861,  -861,  -861,  -861,   536,  -861,   537,  -861,    33,
1890 <    -861,  -861,  -861,   508,  -861,   538,   542,   550,  -861,    25,
1891 <    -861,  -861,  -861,  -861,  -861,   563,   560,  -861,   522,  -861,
1892 <     636,   655,   568,  -861,   570,   558,   571,  -861,   581,   585,
1893 <     586,  -861,   599,   232,  -861,  -861,  -861,  -861,  -861,  -861,
1894 <    -861,  -861,  -861,   573,   601,   603,   604,    88,  -861,  -861,
1895 <    -861,  -861,   619,   622,   693,   652,   664,   462,   610,  -861,
1896 <    -861,   710,   668,   712,   713,   714,   715,   716,   717,   -75,
1897 <     -68,   718,   720,   740,   722,   723,   627,  -861,   628,   629,
1898 <    -861,   630,    39,  -861,  -861,  -861,  -861,   634,   633,  -861,
1899 <      15,  -861,  -861,  -861,   736,   638,  -861,   640,   641,   642,
1900 <    -861,   643,   644,   646,   261,   647,   648,   650,   653,   654,
1901 <     656,   657,   658,   663,   665,   666,  -861,  -861,   773,   782,
1902 <     462,   786,   787,   789,   792,   774,   794,   796,   462,   462,
1903 <     800,   800,   683,  -861,  -861,   783,   119,   784,   742,   684,
1904 <     788,   790,   791,   793,   806,   795,   797,   798,   690,  -861,
1905 <     799,   802,   695,  -861,   697,  -861,   803,   804,   703,   707,
1906 <    -861,   708,   709,   711,   719,   721,   724,   726,   727,   728,
1907 <     729,   730,   731,   732,   733,   735,   737,   738,   739,   741,
1908 <     743,   744,   745,   746,   747,   748,   749,   750,   751,   752,
1909 <     753,   754,   561,   755,   598,   756,   757,   758,   759,   760,
1910 <     761,   762,   763,   764,   765,   766,   767,   768,   769,   770,
1911 <     771,   772,   775,   776,   777,   778,  -861,  -861,   809,   779,
1912 <     780,   811,   831,   815,   816,   817,   781,  -861,   819,   785,
1913 <     821,   801,  -861,  -861,   805,   835,   839,   860,   807,  -861,
1914 <     810,  -861,    55,   812,   813,  -861,  -861,   872,   830,   808,
1915 <     878,   879,   881,   814,   883,   818,  -861,  -861,   884,   885,
1916 <     886,   820,  -861,   822,   824,   825,   826,   827,   828,  -861,
1917 <     829,   832,   833,   834,   836,   837,   838,   840,  -861,  -861,
1918 <    -205,  -861,  -861,  -861,  -166,  -861,   841,   842,   843,   844,
1919 <     845,  -861,  -861,   888,   846,   889,   847,  -861,  -861,   890,
1920 <     848,   850,  -861,   852,  -861,  -861,  -861,  -861,  -861,  -861,
1921 <    -861,   462,   462,   462,   462,   462,  -861,  -861,  -861,  -861,
1922 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,   853,
1923 <     854,   855,   856,   857,   858,   859,   861,   862,   863,   864,
1924 <     865,    64,   866,   867,  -861,   868,   869,   870,   871,   873,
1925 <      -2,   874,   875,   876,   877,   880,   882,   887,   891,  -861,
1926 <     892,   893,  -861,  -861,   894,   895,   896,  -861,  -861,  -861,
1927 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1928 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1929 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1930 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1931 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -165,
1932 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1933 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1934 <    -861,  -861,  -159,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1935 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1936 <    -861,  -861,  -861,  -861,  -861,   897,   898,   519,   899,   900,
1937 <     901,   902,   903,  -861,   904,   908,   905,  -861,   -40,   906,
1938 <     907,   849,   689,  -861,  -861,  -861,   909,   910,  -861,   911,
1939 <      54,  -861,  -861,  -861,  -861,  -861,  -861,   912,   915,   513,
1940 <     916,   917,   918,   626,   919,  -861,   920,   921,   922,  -861,
1941 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1942 <    -861,  -861,  -861,  -861,  -861,   -75,  -861,   -68,  -861,  -861,
1943 <    -861,  -861,  -861,   923,   671,   924,  -861,   925,   681,  -861,
1944 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1945 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,   800,   800,
1946 <     800,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1947 <    -861,  -861,  -135,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1948 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -129,  -861,  -861,
1949 <     561,  -861,   598,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1950 <    -861,  -861,  -861,  -861,  -103,  -861,  -861,  -861,  -861,  -861,
1951 <    -861,  -861,  -861,  -101,  -861,  -861,  -861,  -861,  -861,   -61,
1952 <    -861,  -861,  -861,   913,   860,   926,  -861,   914,   927,   -94,
1953 <     928,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1954 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1955 <    -861,  -861,  -861,   -24,  -861,  -861,  -861,  -861,  -861,  -861,
1956 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1957 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,   -19,  -861,
1958 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1959 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,   -16,  -861,  -861,
1960 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1961 <    -861,    76,  -861,  -861,  -861,  -861,  -861,    -2,  -861,   896,
1962 <    -861,  -861,  -861,   519,  -861,   908,  -861,   -40,  -861,  -861,
1963 <    -861,   929,   245,   931,   932,  -861,  -861,   513,  -861,   626,
1964 <    -861,   671,  -861,   681,  -861,  -861,  -861,  -861,  -861,  -861,
1965 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,    93,  -861,  -861,
1966 <    -861,  -861,  -861,  -861,  -861,  -861,   245,  -861
1842 >    -990,   660,  -990,  -163,  -210,  -201,  -990,  -990,  -990,  -195,
1843 >    -990,  -192,  -990,  -990,  -990,  -190,  -990,  -990,  -990,  -178,
1844 >    -172,  -990,  -150,  -148,  -990,  -990,  -990,  -990,  -990,  -990,
1845 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1846 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,   248,
1847 >     886,  -127,  -125,  -106,    27,   -92,   424,   -71,   -58,   -53,
1848 >      49,   -42,   -40,   -34,   320,   395,   -28,     9,    26,   -20,
1849 >    -131,   -16,     1,    38,     8,  -990,  -990,  -990,  -990,  -990,
1850 >      87,    90,   103,   108,   112,   113,   115,   116,   117,   119,
1851 >     122,   123,   337,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1852 >    -990,  -990,  -990,  -990,  -990,  -990,   700,   380,    51,  -990,
1853 >     125,    25,  -990,  -990,    80,  -990,   126,   127,   130,   133,
1854 >     134,   136,   139,   140,   143,   147,   148,   150,   151,   152,
1855 >     153,   155,   157,   159,   160,   161,   162,   163,   164,   167,
1856 >     168,   171,  -990,   172,  -990,   176,   177,   182,   183,   190,
1857 >     191,   194,   195,   196,   197,   199,   200,   201,   205,   206,
1858 >     207,   211,   212,   107,  -990,  -990,  -990,  -990,  -990,  -990,
1859 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1860 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1861 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1862 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1863 >    -990,  -990,   330,     6,    11,   101,   216,   218,    46,  -990,
1864 >    -990,  -990,    13,   501,    17,  -990,   219,   221,   222,   230,
1865 >     233,   235,   236,   239,     7,  -990,  -990,  -990,  -990,  -990,
1866 >    -990,  -990,  -990,  -990,   189,   243,   246,   247,   252,   254,
1867 >     258,   259,   260,   261,   262,   263,   266,   267,   270,   271,
1868 >     276,   278,    21,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1869 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1870 >    -990,    85,   251,   280,    18,  -990,  -990,  -990,    73,  -990,
1871 >     282,    62,  -990,  -990,     5,  -990,   384,   389,   391,   291,
1872 >    -990,   412,   413,   315,   416,   417,   417,   417,   418,   419,
1873 >     425,   334,   335,   313,  -990,   323,   321,   324,   326,  -990,
1874 >     338,   340,   341,   344,   345,   348,   355,   357,   358,   359,
1875 >     360,   364,   186,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1876 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1877 >     368,   367,   369,   370,   372,   374,   375,  -990,   376,   377,
1878 >     378,   382,   385,   386,   387,   279,  -990,  -990,  -990,  -990,
1879 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1880 >    -990,  -990,   390,   392,    22,  -990,  -990,  -990,   428,   383,
1881 >    -990,  -990,   393,   402,    20,  -990,  -990,  -990,   404,   417,
1882 >     417,   457,   423,   524,   516,   435,   417,   436,   537,   542,
1883 >     417,   543,   438,   441,   445,   417,   546,   548,   417,   550,
1884 >     551,   552,   555,   456,   439,   458,   440,   462,   417,   417,
1885 >     463,   464,   466,    83,    94,   469,   472,   559,   417,   475,
1886 >     477,   417,   417,   478,   479,   465,  -990,   468,   460,   476,
1887 >    -990,   480,   482,   483,   485,   487,    32,  -990,  -990,  -990,
1888 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,   490,   491,    39,
1889 >    -990,  -990,  -990,   498,   496,   497,  -990,   502,  -990,    10,
1890 >    -990,  -990,  -990,  -990,  -990,   568,   571,   504,  -990,   506,
1891 >     508,   509,    14,  -990,  -990,  -990,   507,   510,   517,  -990,
1892 >     518,   519,   521,   522,  -990,   525,    12,  -990,  -990,  -990,
1893 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,   529,   530,   531,
1894 >     532,     4,  -990,  -990,  -990,  -990,   499,   526,   544,   582,
1895 >     553,   556,   557,   417,   547,  -990,  -990,   603,   558,   644,
1896 >     661,   663,   645,   650,   653,   655,   656,   657,   677,   664,
1897 >      57,    59,   666,   667,   569,  -990,   570,   565,  -990,    74,
1898 >    -990,  -990,  -990,  -990,   588,   572,  -990,   573,   676,   576,
1899 >    -990,   577,   575,  -990,   578,    19,  -990,  -990,  -990,  -990,
1900 >     583,   586,   587,  -990,   589,   592,   594,   595,   421,   598,
1901 >     599,   600,   601,   602,   605,   606,   607,  -990,  -990,   699,
1902 >     720,   417,   609,   725,   730,   417,   731,   732,   417,   711,
1903 >     733,   734,   417,   737,   737,   621,  -990,  -990,   724,   104,
1904 >     736,   641,   738,   740,   625,   741,   743,   748,   744,   750,
1905 >     751,   752,   646,  -990,   753,   755,   654,  -990,   659,  -990,
1906 >     771,   775,   674,  -990,   681,   685,   686,   688,   690,   694,
1907 >     695,   696,   697,   698,   702,   709,   712,   714,   716,   717,
1908 >     719,   728,   729,   742,   745,   746,   747,   754,   756,   757,
1909 >     691,   758,   726,   759,   760,   761,   762,   763,   764,   767,
1910 >     768,   770,   772,   773,   774,   776,   777,   778,   779,   780,
1911 >     781,   782,   783,  -990,  -990,   801,   693,   721,   802,   794,
1912 >     822,   833,   839,   784,  -990,   840,   845,   785,  -990,  -990,
1913 >     850,   852,   749,   868,   786,  -990,   787,   788,  -990,  -990,
1914 >     855,   857,   789,  -990,  -990,   871,   792,   790,   873,   892,
1915 >     893,   894,   791,   897,   796,  -990,  -990,   899,   900,   901,
1916 >     800,  -990,   803,   804,   805,   806,   807,   808,   809,   810,
1917 >    -990,   811,   812,   813,   814,   815,   816,   817,   818,   819,
1918 >     820,   821,   823,   824,  -990,  -990,  -187,  -990,  -990,  -990,
1919 >    -182,  -990,   825,   826,  -990,  -990,   903,   799,   827,  -990,
1920 >     828,  -990,    97,   829,  -990,  -990,   924,   830,   932,   831,
1921 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,   417,   417,
1922 >     417,   417,   417,   417,   417,  -990,  -990,  -990,  -990,  -990,
1923 >    -990,  -990,  -990,  -990,  -990,   832,   834,   835,   -33,   836,
1924 >     837,   838,   841,   842,   843,   844,   846,   847,   848,   179,
1925 >     849,   851,  -990,   853,   854,   856,   858,   859,   860,   861,
1926 >      16,   862,   863,   864,   865,   866,   867,   869,  -990,   870,
1927 >     872,  -990,  -990,   874,   875,  -990,  -990,  -990,  -990,  -990,
1928 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1929 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1930 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1931 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1932 >    -990,  -990,  -990,  -171,  -990,  -990,  -990,  -990,  -990,  -990,
1933 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1934 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -133,  -990,  -990,
1935 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1936 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,   876,
1937 >     877,   541,   878,   879,   880,   881,   882,  -990,   883,   884,
1938 >    -990,   885,   887,   121,   896,   888,  -990,  -990,  -990,  -990,
1939 >     889,   890,  -990,   891,   895,   527,   898,   902,   904,   905,
1940 >     769,   906,  -990,   907,   908,   909,  -990,  -990,  -990,  -990,
1941 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1942 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,    57,
1943 >    -990,    59,  -990,  -990,   910,   538,  -990,  -990,   911,   912,
1944 >     913,  -990,    82,  -990,  -990,  -990,  -990,  -990,   914,   612,
1945 >     917,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1946 >    -990,  -990,  -990,  -990,  -124,  -990,  -990,  -990,  -990,  -990,
1947 >    -990,  -990,  -990,  -990,  -990,  -990,   737,   737,   737,  -990,
1948 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1949 >    -990,  -990,   -68,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1950 >    -990,  -990,  -990,  -990,  -990,  -990,   691,  -990,   726,  -990,
1951 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1952 >    -990,   -21,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1953 >    -990,  -990,  -990,  -990,  -990,   -15,  -990,   956,   868,   918,
1954 >    -990,  -990,  -990,  -990,  -990,   915,  -990,  -990,   916,  -990,
1955 >    -990,  -990,  -990,   919,  -990,  -990,  -990,  -990,  -990,  -990,
1956 >    -990,  -990,  -990,  -990,    50,  -990,  -990,  -990,  -990,  -990,
1957 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1958 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1959 >    -990,    64,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1960 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1961 >      98,  -990,  -990,   942,   -77,   920,   922,  -990,  -990,  -990,
1962 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,    99,
1963 >    -990,  -990,  -990,   -33,  -990,  -990,  -990,  -990,    16,  -990,
1964 >    -990,  -990,   541,  -990,   121,  -990,  -990,  -990,   941,   946,
1965 >     948,  -990,   527,  -990,   769,  -990,   538,   925,   926,   927,
1966 >     242,  -990,  -990,   612,  -990,  -990,  -990,  -990,  -990,  -990,
1967 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1968 >    -990,  -990,  -990,  -990,   109,  -990,  -990,  -990,   242,  -990
1969   };
1970  
1971   /* YYPGOTO[NTERM-NUM].  */
1972   static const yytype_int16 yypgoto[] =
1973   {
1974 <    -861,  -861,  -861,  -213,  -306,  -860,  -610,  -861,  -861,   930,
1975 <    -861,  -861,  -861,  -861,   933,  -861,  -861,  -861,     6,  -861,
1976 <       5,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1977 <    -861,  -861,  -861,  -861,  -861,  -861,   942,  -861,  -861,  -861,
1978 <    -861,  -861,   934,  -861,  -861,  -861,  -861,    45,  -861,  -861,
1979 <    -861,  -861,  -861,  -229,  -861,  -861,  -861,   509,  -861,  -861,
1980 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -201,  -861,  -861,
1981 <    -861,  -194,  -861,  -861,  -861,   688,  -861,  -861,  -861,  -861,
1982 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1983 <    -861,  -861,  -861,  -861,  -861,  -182,  -861,   530,  -861,  -861,
1984 <    -861,   -76,  -861,  -861,  -861,  -861,  -861,   576,  -861,  -861,
1985 <    -861,  -861,  -861,  -861,  -861,  -168,  -861,  -861,  -861,  -861,
1986 <    -861,  -861,   523,  -861,  -861,  -861,  -861,  -861,   935,  -861,
1987 <    -861,  -861,  -861,   476,  -861,  -861,  -861,  -861,  -861,  -179,
1988 <    -861,  -861,  -861,   479,  -861,  -861,  -861,  -861,  -158,  -861,
1989 <    -861,  -861,   692,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1990 <    -861,  -861,  -861,  -143,  -861,  -861,  -861,  -861,  -861,  -861,
1991 <    -861,  -861,  -861,  -861,  -126,  -861,   612,  -861,  -861,  -861,
1992 <    -861,  -861,   725,  -861,  -861,  -861,  -861,   955,  -861,  -861,
1993 <    -861,  -861,  -861,  -861,  -102,  -861,   702,  -861,  -861,  -861,
1994 <    -861,   937,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1995 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1996 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1997 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1998 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
1999 <    -861,  -861,  -861,    28,  -861,  -861,  -861,    32,  -861,  -861,
2000 <    -861,  -861,  -861,  1012,  -861,  -861,  -861,  -861,  -861,  -861,
2001 <    -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,  -861,
2002 <     936,  -861,  -861,  -861,  -861,  -861,  -861
1974 >    -990,  -990,  -990,  -176,  -303,  -989,  -613,  -990,  -990,   934,
1975 >    -990,  -990,  -990,  -990,   921,  -990,  -990,  -990,    70,  -990,
1976 >      81,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1977 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  1007,  -990,
1978 >    -990,  -990,  -990,  -990,  -990,   620,  -990,  -990,  -990,  -990,
1979 >     923,  -990,  -990,  -990,  -990,    75,  -990,  -990,  -990,  -990,
1980 >    -990,  -173,  -990,  -990,  -990,   611,  -990,  -990,  -990,  -990,
1981 >    -990,  -990,  -990,  -990,  -990,  -990,  -116,  -990,  -990,  -990,
1982 >    -112,  -990,  -990,  -990,   793,  -990,  -990,  -990,  -990,  -990,
1983 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1984 >    -990,  -990,  -990,   -90,  -990,  -990,  -990,  -990,  -990,  -103,
1985 >    -990,   648,  -990,  -990,  -990,    35,  -990,  -990,  -990,  -990,
1986 >    -990,   668,  -990,  -990,  -990,  -990,  -990,  -990,  -990,   -86,
1987 >    -990,  -990,  -990,  -990,  -990,  -990,   616,  -990,  -990,  -990,
1988 >    -990,  -990,   928,  -990,  -990,  -990,  -990,   579,  -990,  -990,
1989 >    -990,  -990,  -990,  -100,  -990,  -990,  -990,   596,  -990,  -990,
1990 >    -990,  -990,   -80,  -990,  -990,  -990,   795,  -990,  -990,  -990,
1991 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,   -61,  -990,
1992 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,   689,  -990,  -990,
1993 >    -990,  -990,  -990,   797,  -990,  -990,  -990,  -990,  1048,  -990,
1994 >    -990,  -990,  -990,   798,  -990,  -990,  -990,  -990,   998,  -990,
1995 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1996 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1997 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1998 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,
1999 >    -990,  -990,  -990,  -990,    76,  -990,  -990,  -990,    77,  -990,
2000 >    -990,  -990,  -990,  -990,  1070,  -990,  -990,  -990,  -990,  -990,
2001 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990,   931,
2002 >    -990,  -990,  -990,  -990,  -990,  -990,  -990,  -990
2003   };
2004  
2005   /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
2006     positive, shift that token.  If negative, reduce the rule which
2007     number is the opposite.  If YYTABLE_NINF, syntax error.  */
2008 < #define YYTABLE_NINF -108
2008 > #define YYTABLE_NINF -124
2009   static const yytype_int16 yytable[] =
2010   {
2011 <     822,   823,   585,   586,    76,   235,  1050,   821,   294,    67,
2012 <     593,  1096,    47,   455,  1004,   244,   567,   567,  1005,    67,
2013 <     235,   558,   110,    48,    77,    78,   483,   110,    52,   456,
2014 <      79,   381,    68,    54,   474,   391,    58,   294,    59,    69,
2015 <     558,    62,    68,   474,   457,   228,    45,    46,   458,    69,
2016 <     381,   245,    63,  1006,  1069,   966,   966,  1007,  1070,   228,
2017 <    1071,   484,   758,   759,  1072,   246,   247,   248,   249,   762,
2018 <     763,    80,    81,  1038,  1039,  1040,   682,   683,    82,    83,
2019 <      84,   485,   111,    66,  1196,   250,   486,   111,  1197,   523,
2020 <    1198,   382,   259,   236,  1199,   642,   643,   107,   295,    70,
2021 <      85,    86,   524,   650,  1213,   652,   568,   568,   236,    70,
2022 <     382,   559,   659,    87,    88,   260,  1202,   664,  1204,   237,
2023 <    1203,   108,  1205,   109,    89,   392,   459,   295,   675,   676,
2024 <     559,   678,   116,    90,   237,   460,   461,   117,   118,   688,
2025 <     689,   115,   691,   119,   487,   967,   967,   225,   261,  1097,
2026 <     226,   120,   383,   299,  1098,   475,   393,   121,  1206,   122,
2027 <     123,   124,  1207,   227,   475,   821,   125,   391,   462,   569,
2028 <     569,   383,   126,   127,   560,   128,   129,   130,  1193,  1194,
2029 <    1195,   131,   262,   525,   263,   264,   132,   476,   394,   523,
2030 <     133,   134,  1051,   560,   135,  1216,   476,   136,   137,  1217,
2031 <    1218,   242,   524,  1220,  1219,   138,   243,  1221,   968,   968,
2032 <     526,   292,   139,   140,   293,   141,   142,   143,   144,   145,
2033 <     494,   463,   265,   319,   266,   267,   268,   269,   303,   561,
2034 <     146,   748,   706,   504,   538,   781,   147,   148,   149,   502,
2035 <     150,   270,   477,   151,   152,   718,   389,   153,   561,   505,
2036 <     632,   477,   321,   711,   639,   229,   575,   392,   154,   776,
2037 <     684,   685,  -107,   300,   506,   271,   322,   323,   507,   229,
2038 <     324,   969,   969,   301,  1110,   272,  -107,   577,   496,   302,
2039 <     483,   305,   155,   525,   306,  1230,   156,   307,   393,   157,
2040 <     158,   159,   160,   161,   811,  1222,   162,   163,   498,  1223,
2041 <     826,   827,   819,   820,   273,   274,   308,  1231,   741,  1232,
2042 <     526,   556,  1245,   499,   309,   484,  1246,   352,   310,   353,
2043 <     394,   354,   311,   508,   312,   313,   314,   259,   315,   325,
2044 <     326,   327,   316,   355,   328,   485,   164,   165,   166,   317,
2045 <     486,   167,   329,   168,   318,   388,   509,   169,   356,  1233,
2046 <     260,   453,   357,   330,   331,   400,   401,   352,   402,   353,
2047 <     403,   354,   584,   404,   510,   504,   405,   406,   332,   333,
2048 <     407,   408,   358,   355,   359,   409,   410,   411,   412,   244,
2049 <     413,   505,   414,   261,   415,   416,   360,   417,   356,   418,
2050 <     419,   420,   357,   455,   421,   422,   506,   334,   487,   423,
2051 <     507,   424,   791,   792,   793,   794,   795,   361,   425,   456,
2052 <     578,   426,   358,   427,   359,   245,   428,   262,   429,   263,
2053 <     264,  1234,  1235,   430,   457,   432,   360,   511,   458,   246,
2054 <     247,   248,   249,   434,   435,   362,   436,   437,   335,   116,
2055 <     438,   512,   439,   440,   117,   118,   441,   361,   442,   250,
2056 <     119,   443,   735,   444,  1236,   508,   445,   265,   120,   266,
2057 <     267,   268,   269,   363,   121,   446,   122,   123,   124,   447,
2058 <     448,   612,   449,   125,   450,   362,   270,   451,   509,   126,
2059 <     127,   452,   128,   129,   130,   495,   500,   501,   131,   532,
2060 <     364,   533,   534,   132,   535,   536,   510,   133,   134,  1214,
2061 <     271,   135,   537,   363,   136,   137,   459,   540,   541,   542,
2062 <     272,   543,   138,   544,   545,   460,   461,  1114,   546,   139,
2063 <     140,   547,   141,   142,   143,   144,   145,   548,   549,   365,
2064 <     364,   550,  1075,   551,   552,   553,   628,   146,  1115,   273,
2065 <     274,   554,   555,   147,   148,   149,   574,   150,   462,   579,
2066 <     151,   152,  1076,  1116,   153,   580,   321,   581,   582,   511,
2067 <    1117,   583,  1077,   584,   587,   154,   588,   589,  1078,   365,
2068 <     322,   323,   590,   512,   324,   591,   592,  1118,  1021,  1022,
2069 <    1023,  1024,  1025,   594,  1079,   595,   596,   597,   598,   155,
2070 <     614,   599,   600,   156,   601,   602,   157,   158,   159,   160,
2071 <     161,   463,  1119,   162,   163,   603,   604,   605,   606,  1120,
2072 <     607,  1080,   879,     2,     3,   608,   609,     4,   610,  1081,
2073 <     634,  1121,   611,   615,   616,   617,   618,     5,   620,   621,
2074 <       6,     7,   622,   325,   326,   327,     8,   623,   328,  1122,
2075 <     624,  1123,  1124,   164,   165,   166,   329,     9,   167,   902,
2076 <     168,    10,    11,   625,   169,   626,   627,   330,   331,  1082,
2077 <     641,    12,   630,   631,   635,   636,   637,   644,   645,   646,
2078 <     647,   648,   332,   333,   649,    13,  1083,  1138,   651,   653,
2079 <     654,   655,   660,   656,   657,    14,    15,   658,   661,   662,
2080 <    1125,   663,   665,   666,   667,   668,   669,   670,   671,  1126,
2081 <     672,   334,   673,    16,  1127,   674,   677,   679,   680,   681,
2082 <    1128,   686,   687,   690,  1129,   692,  1130,    17,   696,   693,
2083 <     694,  1131,   695,   697,   698,   699,   720,   713,  1132,   701,
2084 <     880,   881,   882,   883,   884,  1167,   885,   886,   702,   887,
2085 <     888,   889,   335,   722,   890,  1181,   891,   892,   703,   893,
2086 <     704,   894,    18,   895,   896,   705,   723,   897,   708,   710,
2087 <     715,    19,    20,   898,   716,    21,    22,   903,   904,   905,
2088 <     906,   907,   717,   908,   909,   724,   910,   911,   912,   721,
2089 <     727,   913,   743,   914,   915,   744,   916,   725,   917,   726,
2090 <     918,   919,   737,   728,   920,  1139,  1140,  1141,  1142,  1143,
2091 <     921,  1144,  1145,   730,  1146,  1147,  1148,   731,   732,  1149,
2092 <    1168,  1150,  1151,   745,  1152,   746,  1153,    23,  1154,  1155,
2093 <    1182,   734,  1156,   738,    76,   739,   740,   747,  1157,   749,
2094 <     750,   751,   752,   753,   754,   755,   756,   757,   766,  1169,
2095 <     767,   768,   769,   770,    77,    78,   771,   772,  1170,  1183,
2096 <      79,   773,   775,   778,  1171,   779,   783,   784,  1184,   785,
2097 <     786,   787,   788,   789,  1185,   790,   798,   799,  1172,   800,
2098 <    1173,  1174,   801,   802,   809,   803,   804,   805,  1186,  1175,
2099 <    1187,  1188,   806,   810,   807,   808,  1176,   812,   813,  1189,
2100 <     814,    80,    81,   815,   816,   817,  1190,   818,    82,    83,
2101 <      84,   821,   824,   825,   828,   829,   830,   835,   831,   839,
2102 <     832,   833,  1104,   834,   842,   836,   843,   837,   838,   840,
2103 <      85,    86,   841,   844,   845,   846,   847,   848,   849,   945,
2104 <     850,   948,   949,    87,    88,   950,   951,   952,   851,   954,
2105 <     852,   956,   946,   853,    89,   854,   855,   856,   857,   858,
2106 <     859,   860,   861,    90,   862,   959,   863,   864,   865,   960,
2107 <     866,   961,   867,   868,   869,   870,   871,   872,   873,   874,
2108 <     875,   876,   877,   878,   901,   924,   925,   926,   927,   928,
2109 <     929,   930,   931,   932,   933,   934,   935,   936,   937,   938,
2110 <     939,   940,   977,   978,   941,   942,   943,   944,   980,   981,
2111 <     953,   982,   947,   984,   986,   987,   988,   955,  1013,  1015,
2112 <    1017,  1164,  1165,   304,  1208,  1111,  1103,  1247,  1242,   719,
2113 <     957,  1066,   736,  1241,   613,  1228,   964,   958,  1209,   965,
2114 <     979,   975,   976,  1092,  1211,  1226,   983,   985,   777,   989,
2115 <     707,   990,  1243,   991,   992,   993,   994,   995,   996,   782,
2116 <     742,   997,   998,   999,  1224,  1000,  1001,  1002,   629,  1003,
2117 <    1008,  1009,  1010,  1011,  1012,  1244,  1016,   390,  1014,  1019,
2118 <    1018,  1020,  1026,  1027,  1028,  1029,  1030,  1031,  1032,  1227,
2119 <    1033,  1034,  1035,  1036,  1037,  1043,  1044,  1045,  1046,  1047,
2120 <    1048,   712,  1049,  1054,  1055,  1056,  1057,  1225,   640,  1058,
2121 <    1201,  1059,  1200,   320,     0,     0,  1060,   454,     0,   633,
2122 <    1061,  1062,  1063,  1064,  1065,     0,  1073,  1074,  1086,  1087,
2123 <    1088,  1089,  1090,  1091,  1095,  1101,  1102,     0,  1106,     0,
2124 <       0,  1112,  1107,  1109,  1113,  1135,  1136,  1137,  1160,  1161,
2125 <    1162,  1163,  1166,  1179,  1180,  1210,     0,  1215,  1229,  1212,
2126 <    1239,  1240,     0,     0,     0,     0,     0,     0,     0,     0,
2127 <       0,     0,     0,     0,   497,     0,     0,     0,   503,     0,
2066 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2067 <       0,     0,     0,     0,     0,     0,     0,   539,     0,     0,
2068 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2069 <       0,     0,     0,     0,     0,     0,     0,     0,   557,     0,
2011 >     830,   831,   589,   590,   591,   517,   571,   466,   225,    70,
2012 >     282,   473,   473,   496,   489,   489,    49,  1042,   517,   282,
2013 >     571,   391,   244,   381,  1070,    50,   109,   289,   109,   497,
2014 >     829,    54,    71,   447,    56,   226,    60,  1008,   518,    72,
2015 >     466,  1009,  1010,   227,   498,   245,  1011,   215,    64,   448,
2016 >     215,   518,   381,  1085,    65,   228,   229,  1086,   230,   231,
2017 >     232,    47,    48,   289,   449,   474,   474,  1214,  1215,  1216,
2018 >     475,   475,   476,   476,   499,   556,    67,   246,    68,   519,
2019 >     233,   391,   382,  1018,   247,   110,   556,   110,   490,   490,
2020 >    1043,  1087,   519,   295,   450,  1088,   645,   646,  1018,   106,
2021 >    1212,   107,   572,   652,  1213,    73,   248,   656,   115,   500,
2022 >     249,   382,   661,   116,   117,   664,   572,   392,   250,   118,
2023 >     108,   251,   252,   290,  1238,   674,   675,   119,   520,   501,
2024 >     467,   477,   477,   120,   114,   686,   121,   122,   689,   690,
2025 >     216,   520,   123,   216,   393,   502,   383,   124,   125,   451,
2026 >     126,   127,   128,   253,   129,   212,  1217,   452,   453,   290,
2027 >    1218,   130,   503,   467,   217,   131,   132,   217,   213,  1112,
2028 >     254,   557,   255,   214,   133,   383,  -123,   392,   454,  1019,
2029 >     491,   491,   557,   134,   222,  -123,   223,   315,  1056,  1057,
2030 >    1058,   135,   224,   136,  1019,   137,   256,   138,   281,   139,
2031 >     140,   316,   317,  1221,   393,   318,   294,  1222,  1071,  1223,
2032 >     504,   296,   141,  1224,   257,   258,   259,   142,   143,   144,
2033 >     573,   145,   146,   147,   574,   468,   148,   283,   297,   740,
2034 >     749,   505,   534,   299,   573,   714,   283,   734,   574,   722,
2035 >     567,   260,   261,   565,   789,   642,   554,   636,   319,    70,
2036 >     389,   455,   149,   764,   765,   768,   769,   703,   468,   150,
2037 >     151,   152,   153,   154,   707,   298,   320,   321,   322,   323,
2038 >    1020,   487,    71,   324,  1231,   834,   835,   325,  1232,    72,
2039 >     350,  1257,   351,   326,   352,  1020,   829,   569,  1233,   558,
2040 >     679,   155,  1234,   680,   327,   328,   353,  1021,   817,   778,
2041 >     558,   681,   821,  1113,   682,   824,   329,  1196,  1258,   828,
2042 >    1259,   354,  1021,  1114,   301,   156,   157,   302,   158,   159,
2043 >     160,   225,  1235,  1242,   161,   484,  1236,  1243,   330,   162,
2044 >     303,   447,   445,  1267,   355,   304,   356,  1268,    79,   305,
2045 >     306,   357,   307,   308,   309,    73,   310,   448,   226,   311,
2046 >     312,   358,   388,   398,   399,  1260,   227,   400,    80,    81,
2047 >     401,   402,   449,   403,    82,   331,   404,   405,   228,   229,
2048 >     406,   230,   231,   232,   407,   408,   359,   409,   410,   411,
2049 >     412,   350,   413,   351,   414,   352,   415,   416,   417,   418,
2050 >     419,   420,   450,   233,   421,   422,   244,   353,   423,   425,
2051 >     360,    83,    84,   427,   428,  1261,  1262,    85,    86,   429,
2052 >     430,   615,   354,   536,    87,    88,    89,   431,   432,   245,
2053 >     361,   433,   434,   435,   436,   115,   437,   438,   439,   362,
2054 >     116,   117,   440,   441,   442,   355,   118,   356,   443,   444,
2055 >      90,    91,   357,   485,   119,   486,   526,   451,   527,   528,
2056 >     120,   246,   358,   121,   122,   452,   453,   529,   247,   123,
2057 >     530,  1263,   531,   532,   124,   125,   533,   126,   127,   128,
2058 >     537,   129,   363,   538,   539,   563,   454,   359,   130,   540,
2059 >     248,   541,   131,   132,   249,   542,   543,   544,   545,   546,
2060 >     547,   133,   250,   548,   549,   251,   252,   550,   551,   364,
2061 >     134,   360,   496,   552,   632,   553,   580,   564,   135,   568,
2062 >     136,   581,   137,   582,   138,   583,   139,   140,   497,   584,
2063 >     585,   361,   586,   587,   588,   592,   593,   253,   588,   141,
2064 >     362,  1124,   594,   498,   142,   143,   144,   597,   145,   146,
2065 >     147,   595,   596,   148,   254,  1125,   255,   598,   599,   455,
2066 >     638,   600,  1126,   601,  1091,   798,   799,   800,   801,   802,
2067 >     803,   804,   313,   499,   647,   603,  1127,   604,   605,   149,
2068 >     256,   606,   607,   363,  1092,   608,   150,   151,   152,   153,
2069 >     154,  1239,   609,  1093,   610,   611,   612,   613,   257,   258,
2070 >     259,   614,   617,  1128,   618,  1129,   619,   620,   500,   621,
2071 >     364,   622,   623,   625,   626,   627,  1180,   639,   155,   628,
2072 >    1094,   644,   629,   630,   631,   260,   261,   634,   501,   635,
2073 >     640,  1130,  1032,  1033,  1034,  1035,  1036,  1037,  1038,   641,
2074 >     648,   649,   156,   157,   502,   158,   159,   160,   650,  1095,
2075 >    1096,   161,   651,   653,   654,   658,   162,  1097,   659,   655,
2076 >     657,   503,   660,   662,  1131,   663,  1132,   665,   666,   667,
2077 >       2,     3,   668,   669,     4,   671,   670,   672,  1181,   673,
2078 >     676,   677,  1098,   678,     5,  1133,   683,     6,     7,   684,
2079 >    1199,   685,   687,     8,   688,   691,   692,   695,  1099,   693,
2080 >     716,  1134,   694,   717,     9,  1182,  1135,    10,    11,   504,
2081 >    1136,   315,  1183,   696,   745,  1137,   742,   698,  1138,   699,
2082 >     700,  1184,   701,  1139,   702,   316,   317,   705,   706,   318,
2083 >     505,    12,   709,   710,   711,   751,    13,  1140,   718,   713,
2084 >     719,   724,  1141,   743,    14,   720,   721,   725,  1185,   882,
2085 >    1186,  1187,  1200,  1142,   726,   728,   729,  1100,   730,   731,
2086 >    1143,   744,   733,   736,  1188,    15,    16,   737,   738,   739,
2087 >     746,  1189,   319,   747,   748,   752,   753,   756,   754,  1201,
2088 >     755,   750,   757,    17,   906,   758,  1202,   759,   760,   761,
2089 >     320,   321,   322,   323,   762,  1203,   763,   324,   772,   773,
2090 >      18,   325,   776,   774,   775,   780,   781,   326,   783,   782,
2091 >     784,   785,   786,    19,    20,   788,   815,   791,   327,   328,
2092 >     792,   793,  1204,   794,  1205,  1206,   795,  1150,   796,   797,
2093 >     329,    21,   807,   808,   809,   810,   811,   816,  1207,   812,
2094 >     813,   814,   819,   825,    22,  1208,   818,   820,   822,   823,
2095 >     826,   827,   330,    23,   829,   832,   833,    24,   837,   883,
2096 >     884,   885,   840,   886,   887,   843,   888,   889,   836,   890,
2097 >     838,   891,   839,   841,   892,   842,   844,   893,   894,   895,
2098 >     848,   896,   845,   846,   847,   849,   897,   850,   851,   331,
2099 >     898,   899,   900,   852,   907,   908,   909,    79,   910,   911,
2100 >     901,   912,   913,   853,   914,   902,   915,   854,   855,   916,
2101 >     950,   953,   917,   918,   919,   856,   920,    80,    81,   857,
2102 >     858,   921,   859,    82,   860,   922,   923,   924,   861,   862,
2103 >     863,   864,   865,   949,   952,   925,   866,  1151,  1152,  1153,
2104 >     926,  1154,  1155,   867,  1156,  1157,   868,  1158,   869,  1159,
2105 >     870,   871,  1160,   872,   954,  1161,  1162,  1163,   951,  1164,
2106 >      83,    84,   873,   874,  1165,   955,    85,    86,  1166,  1167,
2107 >    1168,   956,   958,    87,    88,    89,   875,   959,  1169,   876,
2108 >     877,   878,   961,  1170,   962,   964,   963,   970,   879,   971,
2109 >     880,   881,   905,   929,   930,   931,   932,   933,   934,    90,
2110 >      91,   935,   936,   973,   937,   976,   938,   939,   940,   974,
2111 >     941,   942,   943,   944,   945,   946,   947,   948,   957,   960,
2112 >     967,   968,   969,   972,   977,   978,   979,   975,   980,   981,
2113 >     982,   983,   984,   985,   986,  1014,  1015,   987,   988,   989,
2114 >     990,   991,   992,   993,   994,   995,   996,   997,   998,   999,
2115 >    1000,  1001,  1002,  1003,  1004,  1005,  1028,  1006,  1007,  1012,
2116 >    1013,  1016,  1017,  1027,  1030,  1031,  1039,  1029,  1040,  1041,
2117 >    1046,  1047,  1048,  1225,  1237,  1049,  1050,  1051,  1052,  1248,
2118 >    1053,  1054,  1055,  1061,  1249,  1062,  1250,  1063,  1064,  1177,
2119 >    1065,   300,  1066,  1067,  1068,  1069,  1074,  1075,  1076,  1077,
2120 >    1078,  1079,  1178,  1080,  1081,  1269,  1082,  1197,  1083,  1084,
2121 >    1089,  1090,  1103,  1104,  1105,  1106,  1107,  1108,  1109,  1110,
2122 >    1117,  1111,   723,  1120,  1121,  1122,  1118,   735,  1252,  1123,
2123 >    1251,  1247,  1146,  1244,   704,   616,  1147,   715,  1148,  1149,
2124 >    1173,  1174,  1175,  1176,  1179,  1192,  1246,   741,  1198,  1193,
2125 >    1194,  1211,  1227,  1266,  1228,  1229,  1241,  1240,  1230,  1254,
2126 >    1255,  1256,   488,  1226,   790,   779,  1253,  1245,   708,   390,
2127 >     633,   446,   314,  1219,  1220,   535,     0,     0,     0,     0,
2128         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2129 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2130 <       0,   576
2129 >       0,   637,     0,   555,     0,     0,     0,     0,     0,     0,
2130 >       0,     0,   643,     0,     0,     0,     0,     0,     0,     0,
2131 >       0,     0,     0,     0,     0,     0,     0,   566,     0,     0,
2132 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   570
2133   };
2134  
2135 < #define yypact_value_is_default(yystate) \
2136 <  ((yystate) == (-861))
2135 > #define yypact_value_is_default(Yystate) \
2136 >  (!!((Yystate) == (-990)))
2137  
2138 < #define yytable_value_is_error(yytable_value) \
2138 > #define yytable_value_is_error(Yytable_value) \
2139    YYID (0)
2140  
2141   static const yytype_int16 yycheck[] =
2142   {
2143 <     610,   611,   308,   309,     1,     1,     8,   101,     1,     1,
2144 <     316,    51,   221,     1,   219,     1,     1,     1,   223,     1,
2145 <       1,     1,     1,   221,    21,    22,     1,     1,   221,    17,
2146 <      27,     1,    24,   221,     1,     1,   221,     1,   221,    31,
2147 <       1,   221,    24,     1,    32,     1,   219,   220,    36,    31,
2148 <       1,    37,   221,   219,   219,     1,     1,   223,   223,     1,
2149 <     219,    36,   137,   138,   223,    51,    52,    53,    54,   137,
2150 <     138,    68,    69,     9,    10,    11,   163,   164,    75,    76,
2151 <      77,    56,    61,   221,   219,    71,    61,    61,   223,     1,
2152 <     219,    61,     1,    89,   223,   401,   402,   221,    91,    91,
2153 <      97,    98,    14,   409,   198,   411,    91,    91,    89,    91,
2154 <      61,    91,   418,   110,   111,    24,   219,   423,   219,   115,
2155 <     223,   221,   223,   221,   121,    91,   114,    91,   434,   435,
2156 <      91,   437,     1,   130,   115,   123,   124,     6,     7,   445,
2157 <     446,   221,   448,    12,   119,    91,    91,   221,    57,   189,
2158 <     221,    20,   122,   219,   194,   122,   122,    26,   219,    28,
2159 <      29,    30,   223,   221,   122,   101,    35,     1,   156,   154,
2160 <     154,   122,    41,    42,   154,    44,    45,    46,  1038,  1039,
2161 <    1040,    50,    91,    95,    93,    94,    55,   154,   154,     1,
2162 <      59,    60,   194,   154,    63,   219,   154,    66,    67,   223,
2163 <     219,   221,    14,   219,   223,    74,   221,   223,   154,   154,
2164 <     122,   221,    81,    82,   221,    84,    85,    86,    87,    88,
2165 <     219,   209,   131,   220,   133,   134,   135,   136,   220,   209,
2166 <      99,   537,   220,     1,   220,   220,   105,   106,   107,   220,
2167 <     109,   150,   209,   112,   113,   220,   220,   116,   209,    17,
2168 <     220,   209,     1,   220,   220,   211,   220,    91,   127,   220,
2169 <     163,   164,   218,   222,    32,   174,    15,    16,    36,   211,
2170 <      19,   217,   217,   222,   220,   184,   218,   120,   220,   222,
2171 <       1,   222,   151,    95,   222,    40,   155,   222,   122,   158,
2172 <     159,   160,   161,   162,   600,   219,   165,   166,   218,   223,
2173 <     181,   182,   608,   609,   213,   214,   222,    62,   220,    64,
2174 <     122,   220,   219,   219,   222,    36,   223,     1,   222,     3,
2175 <     154,     5,   222,    91,   222,   222,   222,     1,   222,    78,
2176 <      79,    80,   222,    17,    83,    56,   205,   206,   207,   222,
2177 <      61,   210,    91,   212,   222,   222,   114,   216,    32,   104,
2178 <      24,   220,    36,   102,   103,   222,   222,     1,   222,     3,
2179 <     222,     5,   101,   222,   132,     1,   222,   222,   117,   118,
2180 <     222,   222,    56,    17,    58,   222,   222,   222,   222,     1,
2181 <     222,    17,   222,    57,   222,   222,    70,   222,    32,   222,
2182 <     222,   222,    36,     1,   222,   222,    32,   146,   119,   222,
2183 <      36,   222,   141,   142,   143,   144,   145,    91,   222,    17,
2184 <     120,   222,    56,   222,    58,    37,   222,    91,   222,    93,
2185 <      94,   176,   177,   222,    32,   222,    70,   195,    36,    51,
2186 <      52,    53,    54,   222,   222,   119,   222,   222,   187,     1,
2187 <     222,   209,   222,   222,     6,     7,   222,    91,   222,    71,
2188 <      12,   222,   220,   222,   209,    91,   222,   131,    20,   133,
2189 <     134,   135,   136,   147,    26,   222,    28,    29,    30,   222,
2190 <     222,   220,   222,    35,   222,   119,   150,   222,   114,    41,
2191 <      42,   222,    44,    45,    46,   222,   222,   222,    50,   222,
2192 <     174,   222,   222,    55,   222,   222,   132,    59,    60,  1109,
2193 <     174,    63,   222,   147,    66,    67,   114,   219,   222,   222,
2194 <     184,   222,    74,   222,   222,   123,   124,     4,   222,    81,
2195 <      82,   222,    84,    85,    86,    87,    88,   222,   222,   213,
2196 <     174,   222,    13,   222,   222,   222,   220,    99,    25,   213,
2197 <     214,   222,   222,   105,   106,   107,   222,   109,   156,   120,
2198 <     112,   113,    33,    40,   116,   219,     1,   101,   101,   195,
2199 <      47,   163,    43,   101,   101,   127,   101,   101,    49,   213,
2200 <      15,    16,   163,   209,    19,   163,   101,    64,   791,   792,
2201 <     793,   794,   795,   163,    65,   163,   219,   219,   222,   151,
2202 <     219,   222,   222,   155,   222,   222,   158,   159,   160,   161,
2203 <     162,   209,    89,   165,   166,   222,   222,   222,   222,    96,
2204 <     222,    92,    51,     0,     1,   222,   222,     4,   222,   100,
2205 <     120,   108,   222,   222,   222,   222,   222,    14,   222,   222,
2206 <      17,    18,   222,    78,    79,    80,    23,   222,    83,   126,
2207 <     222,   128,   129,   205,   206,   207,    91,    34,   210,    51,
2208 <     212,    38,    39,   222,   216,   222,   222,   102,   103,   140,
2209 <     163,    48,   222,   222,   219,   222,   222,   101,   163,   163,
2210 <     101,   120,   117,   118,   163,    62,   157,    51,   163,   101,
2211 <     101,   101,   120,   163,   163,    72,    73,   163,   163,   101,
2212 <     177,   101,   101,   101,   120,   101,   101,   163,   163,   186,
2213 <     222,   146,   163,    90,   191,   222,   163,   163,   163,   163,
2214 <     197,   163,   163,   120,   201,   163,   203,   104,   219,   163,
2215 <     163,   208,   163,   219,   222,   222,   163,   219,   215,   222,
2216 <     169,   170,   171,   172,   173,    64,   175,   176,   222,   178,
2217 <     179,   180,   187,   221,   183,    64,   185,   186,   222,   188,
2218 <     222,   190,   139,   192,   193,   222,   120,   196,   222,   222,
2219 <     222,   148,   149,   202,   222,   152,   153,   169,   170,   171,
2220 <     172,   173,   222,   175,   176,   120,   178,   179,   180,   219,
2221 <     222,   183,   163,   185,   186,   163,   188,   219,   190,   219,
2222 <     192,   193,   219,   222,   196,   169,   170,   171,   172,   173,
2223 <     202,   175,   176,   222,   178,   179,   180,   222,   222,   183,
2224 <     139,   185,   186,   120,   188,   163,   190,   204,   192,   193,
2225 <     139,   222,   196,   222,     1,   222,   222,   163,   202,   219,
2226 <     120,   163,   120,   120,   120,   120,   120,   120,   120,   168,
2227 <     120,   101,   120,   120,    21,    22,   219,   219,   177,   168,
2228 <      27,   222,   222,   219,   183,   222,   120,   219,   177,   219,
2229 <     219,   219,   219,   219,   183,   219,   219,   219,   197,   219,
2230 <     199,   200,   219,   219,   101,   219,   219,   219,   197,   208,
2231 <     199,   200,   219,   101,   219,   219,   215,   101,   101,   208,
2232 <     101,    68,    69,   101,   120,   101,   215,   101,    75,    76,
2233 <      77,   101,   219,   120,   120,   163,   222,   101,   120,   219,
2234 <     120,   120,   223,   120,   219,   120,   219,   120,   120,   120,
2235 <      97,    98,   120,   120,   120,   222,   219,   219,   219,   120,
2236 <     219,   120,   101,   110,   111,   120,   120,   120,   219,   120,
2237 <     219,   120,   163,   219,   121,   219,   219,   219,   219,   219,
2238 <     219,   219,   219,   130,   219,   120,   219,   219,   219,   120,
2239 <     219,   101,   219,   219,   219,   219,   219,   219,   219,   219,
2240 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2241 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2242 <     219,   219,   120,   163,   219,   219,   219,   219,   120,   120,
2243 <     219,   120,   222,   120,   120,   120,   120,   222,   120,   120,
2244 <     120,  1005,  1007,    71,   101,   970,   167,  1246,  1219,   489,
2245 <     219,   125,   513,  1217,   336,  1207,   219,   222,  1104,   219,
2246 <     222,   219,   219,   125,   120,  1203,   222,   219,   562,   219,
2247 <     464,   219,  1221,   219,   219,   219,   219,   219,   219,   570,
2248 <     527,   219,   219,   219,  1197,   219,   219,   219,   366,   219,
2249 <     219,   219,   219,   219,   219,  1223,   219,   112,   222,   219,
2250 <     222,   219,   219,   219,   219,   219,   219,   219,   219,  1205,
2251 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2252 <     219,   479,   219,   219,   219,   219,   219,  1199,   396,   219,
2253 <    1072,   219,  1070,    91,    -1,    -1,   219,   170,    -1,   384,
2254 <     219,   219,   219,   219,   219,    -1,   219,   219,   219,   219,
2255 <     219,   219,   219,   219,   219,   219,   219,    -1,   219,    -1,
2256 <      -1,   219,   222,   222,   219,   219,   219,   219,   219,   219,
2257 <     219,   219,   219,   219,   219,   219,    -1,   219,   219,   222,
2258 <     219,   219,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2259 <      -1,    -1,    -1,    -1,   230,    -1,    -1,    -1,   238,    -1,
2200 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2201 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,   251,    -1,    -1,
2202 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2203 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   275,    -1,
2143 >     613,   614,   305,   306,   307,     1,     1,     1,     1,     1,
2144 >       1,     1,     1,     1,     1,     1,   226,    50,     1,     1,
2145 >       1,     1,     1,     1,     8,   226,     1,     1,     1,    17,
2146 >     107,   226,    24,     1,   226,    28,   226,   224,    34,    31,
2147 >       1,   228,   224,    36,    32,    24,   228,     1,   226,    17,
2148 >       1,    34,     1,   224,   226,    48,    49,   228,    51,    52,
2149 >      53,   224,   225,     1,    32,    55,    55,  1056,  1057,  1058,
2150 >      60,    60,    62,    62,    62,     1,   226,    56,   226,    75,
2151 >      73,     1,    60,     1,    63,    60,     1,    60,    75,    75,
2152 >     123,   224,    75,   224,    62,   228,   399,   400,     1,   226,
2153 >     224,   226,    97,   406,   228,    97,    85,   410,     1,    97,
2154 >      89,    60,   415,     6,     7,   418,    97,    97,    97,    12,
2155 >     226,   100,   101,    97,   201,   428,   429,    20,   124,   117,
2156 >     124,   121,   121,    26,   226,   438,    29,    30,   441,   442,
2157 >      94,   124,    35,    94,   124,   133,   124,    40,    41,   117,
2158 >      43,    44,    45,   132,    47,   226,   224,   125,   126,    97,
2159 >     228,    54,   150,   124,   118,    58,    59,   118,   226,    48,
2160 >     149,    97,   151,   226,    67,   124,   167,    97,   146,    97,
2161 >     167,   167,    97,    76,   226,   167,   226,     1,     9,    10,
2162 >      11,    84,   226,    86,    97,    88,   175,    90,   226,    92,
2163 >      93,    15,    16,   224,   124,    19,   226,   228,   192,   224,
2164 >     198,   227,   105,   228,   193,   194,   195,   110,   111,   112,
2165 >     215,   114,   115,   116,   219,   219,   119,   218,   227,   225,
2166 >     533,   219,   225,   225,   215,   225,   218,   225,   219,   225,
2167 >     167,   220,   221,   225,   225,   225,   225,   225,    62,     1,
2168 >     225,   219,   145,   196,   197,   196,   197,   225,   219,   152,
2169 >     153,   154,   155,   156,   225,   227,    80,    81,    82,    83,
2170 >     188,   225,    24,    87,   224,   171,   172,    91,   228,    31,
2171 >       1,    39,     3,    97,     5,   188,   107,   225,   224,   215,
2172 >     207,   184,   228,   210,   108,   109,    17,   215,   601,   225,
2173 >     215,   207,   605,   182,   210,   608,   120,   225,    66,   612,
2174 >      68,    32,   215,   192,   227,   208,   209,   227,   211,   212,
2175 >     213,     1,   224,   224,   217,   224,   228,   228,   142,   222,
2176 >     227,     1,   225,   224,    55,   227,    57,   228,     1,   227,
2177 >     227,    62,   227,   227,   227,    97,   227,    17,    28,   227,
2178 >     227,    72,   227,   227,   227,   113,    36,   227,    21,    22,
2179 >     227,   227,    32,   227,    27,   179,   227,   227,    48,    49,
2180 >     227,    51,    52,    53,   227,   227,    97,   227,   227,   227,
2181 >     227,     1,   227,     3,   227,     5,   227,   227,   227,   227,
2182 >     227,   227,    62,    73,   227,   227,     1,    17,   227,   227,
2183 >     121,    64,    65,   227,   227,   163,   164,    70,    71,   227,
2184 >     227,   225,    32,   224,    77,    78,    79,   227,   227,    24,
2185 >     141,   227,   227,   227,   227,     1,   227,   227,   227,   150,
2186 >       6,     7,   227,   227,   227,    55,    12,    57,   227,   227,
2187 >     103,   104,    62,   227,    20,   227,   227,   117,   227,   227,
2188 >      26,    56,    72,    29,    30,   125,   126,   227,    63,    35,
2189 >     227,   219,   227,   227,    40,    41,   227,    43,    44,    45,
2190 >     227,    47,   193,   227,   227,   224,   146,    97,    54,   227,
2191 >      85,   227,    58,    59,    89,   227,   227,   227,   227,   227,
2192 >     227,    67,    97,   227,   227,   100,   101,   227,   227,   220,
2193 >      76,   121,     1,   227,   225,   227,   122,   227,    84,   227,
2194 >      86,   122,    88,   122,    90,   224,    92,    93,    17,   107,
2195 >     107,   141,   207,   107,   107,   107,   107,   132,   107,   105,
2196 >     150,     4,   107,    32,   110,   111,   112,   224,   114,   115,
2197 >     116,   207,   207,   119,   149,    18,   151,   224,   227,   219,
2198 >     122,   227,    25,   227,    13,   134,   135,   136,   137,   138,
2199 >     139,   140,   225,    62,   107,   227,    39,   227,   227,   145,
2200 >     175,   227,   227,   193,    33,   227,   152,   153,   154,   155,
2201 >     156,  1194,   227,    42,   227,   227,   227,   227,   193,   194,
2202 >     195,   227,   224,    66,   227,    68,   227,   227,    97,   227,
2203 >     220,   227,   227,   227,   227,   227,    68,   224,   184,   227,
2204 >      69,   207,   227,   227,   227,   220,   221,   227,   117,   227,
2205 >     227,    94,   798,   799,   800,   801,   802,   803,   804,   227,
2206 >     207,   107,   208,   209,   133,   211,   212,   213,   122,    98,
2207 >      99,   217,   207,   207,   107,   207,   222,   106,   207,   107,
2208 >     107,   150,   207,   107,   127,   107,   129,   107,   107,   107,
2209 >       0,     1,   107,   207,     4,   207,   227,   227,   130,   207,
2210 >     207,   207,   131,   207,    14,   148,   207,    17,    18,   207,
2211 >      68,   122,   207,    23,   207,   207,   207,   227,   147,   224,
2212 >     122,   164,   224,   122,    34,   157,   169,    37,    38,   198,
2213 >     173,     1,   164,   227,   122,   178,   207,   227,   181,   227,
2214 >     227,   173,   227,   186,   227,    15,    16,   227,   227,    19,
2215 >     219,    61,   224,   227,   227,   122,    66,   200,   224,   227,
2216 >     224,   224,   205,   207,    74,   227,   227,   227,   200,    48,
2217 >     202,   203,   130,   216,   227,   227,   227,   206,   227,   227,
2218 >     223,   207,   227,   224,   216,    95,    96,   227,   227,   227,
2219 >     207,   223,    62,   207,   207,   207,   122,   122,   107,   157,
2220 >     107,   224,   122,   113,    48,   122,   164,   122,   122,   122,
2221 >      80,    81,    82,    83,   107,   173,   122,    87,   122,   122,
2222 >     130,    91,   227,   224,   224,   207,   224,    97,   122,   226,
2223 >     224,   224,   227,   143,   144,   227,   107,   224,   108,   109,
2224 >     224,   224,   200,   224,   202,   203,   224,    48,   224,   224,
2225 >     120,   161,   224,   224,   224,   224,   224,   107,   216,   224,
2226 >     224,   224,   107,   122,   174,   223,   227,   107,   107,   107,
2227 >     107,   107,   142,   183,   107,   224,   122,   187,   207,   158,
2228 >     159,   160,   227,   162,   163,   107,   165,   166,   122,   168,
2229 >     122,   170,   122,   122,   173,   122,   122,   176,   177,   178,
2230 >     224,   180,   122,   122,   122,   122,   185,   122,   224,   179,
2231 >     189,   190,   191,   224,   158,   159,   160,     1,   162,   163,
2232 >     199,   165,   166,   122,   168,   204,   170,   122,   224,   173,
2233 >     207,   107,   176,   177,   178,   224,   180,    21,    22,   224,
2234 >     224,   185,   224,    27,   224,   189,   190,   191,   224,   224,
2235 >     224,   224,   224,   122,   122,   199,   224,   158,   159,   160,
2236 >     204,   162,   163,   224,   165,   166,   224,   168,   224,   170,
2237 >     224,   224,   173,   224,   122,   176,   177,   178,   227,   180,
2238 >      64,    65,   224,   224,   185,   122,    70,    71,   189,   190,
2239 >     191,   122,   122,    77,    78,    79,   224,   122,   199,   224,
2240 >     224,   224,   122,   204,   122,   107,   227,   122,   224,   122,
2241 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   103,
2242 >     104,   224,   224,   122,   224,   122,   224,   224,   224,   207,
2243 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2244 >     224,   224,   224,   224,   122,   122,   122,   227,   227,   122,
2245 >     224,   122,   122,   122,   224,   122,   227,   224,   224,   224,
2246 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2247 >     224,   224,   224,   224,   224,   224,   122,   224,   224,   224,
2248 >     224,   224,   224,   224,   122,   224,   224,   227,   224,   224,
2249 >     224,   224,   224,   107,   122,   224,   224,   224,   224,   128,
2250 >     224,   224,   224,   224,   128,   224,   128,   224,   224,  1009,
2251 >     224,    74,   224,   224,   224,   224,   224,   224,   224,   224,
2252 >     224,   224,  1011,   224,   224,  1268,   224,  1022,   224,   224,
2253 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2254 >     214,   224,   492,   224,   224,   224,   228,   506,  1234,   224,
2255 >    1232,  1224,   224,  1213,   456,   332,   224,   479,   224,   224,
2256 >     224,   224,   224,   224,   224,   224,  1222,   521,   224,   227,
2257 >     227,   224,   224,  1243,   229,   229,   224,   227,   229,   224,
2258 >     224,   224,   218,  1118,   575,   559,  1236,  1218,   469,   111,
2259 >     365,   163,    92,  1086,  1088,   234,    -1,    -1,    -1,    -1,
2260        -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2261 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2262 <      -1,   296
2261 >      -1,   384,    -1,   262,    -1,    -1,    -1,    -1,    -1,    -1,
2262 >      -1,    -1,   394,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2263 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,   284,    -1,    -1,
2264 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   291
2265   };
2266  
2267   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2268     symbol of state STATE-NUM.  */
2269   static const yytype_uint16 yystos[] =
2270   {
2271 <       0,   225,     0,     1,     4,    14,    17,    18,    23,    34,
2272 <      38,    39,    48,    62,    72,    73,    90,   104,   139,   148,
2273 <     149,   152,   153,   204,   226,   231,   236,   258,   264,   278,
2274 <     296,   314,   328,   343,   350,   354,   364,   373,   393,   403,
2275 <     409,   413,   423,   485,   502,   219,   220,   221,   221,   297,
2276 <     374,   404,   221,   414,   221,   329,   394,   315,   221,   221,
2277 <     279,   344,   221,   221,   355,   365,   221,     1,    24,    31,
2278 <      91,   259,   260,   261,   262,   263,     1,    21,    22,    27,
2279 <      68,    69,    75,    76,    77,    97,    98,   110,   111,   121,
2280 <     130,   486,   487,   488,   489,   490,   491,   492,   493,   494,
2281 <     495,   496,   497,   498,   499,   500,   501,   221,   221,   221,
2282 <       1,    61,   410,   411,   412,   221,     1,     6,     7,    12,
2283 <      20,    26,    28,    29,    30,    35,    41,    42,    44,    45,
2284 <      46,    50,    55,    59,    60,    63,    66,    67,    74,    81,
2285 <      82,    84,    85,    86,    87,    88,    99,   105,   106,   107,
2286 <     109,   112,   113,   116,   127,   151,   155,   158,   159,   160,
2287 <     161,   162,   165,   166,   205,   206,   207,   210,   212,   216,
2230 <     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
2231 <     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
2271 >       0,   231,     0,     1,     4,    14,    17,    18,    23,    34,
2272 >      37,    38,    61,    66,    74,    95,    96,   113,   130,   143,
2273 >     144,   161,   174,   183,   187,   232,   237,   242,   266,   272,
2274 >     278,   292,   311,   334,   348,   363,   370,   374,   384,   393,
2275 >     414,   420,   426,   430,   436,   492,   507,   224,   225,   226,
2276 >     226,   312,   394,   421,   226,   431,   226,   349,   415,   335,
2277 >     226,   273,   293,   364,   226,   226,   385,   226,   226,   375,
2278 >       1,    24,    31,    97,   267,   268,   269,   270,   271,     1,
2279 >      21,    22,    27,    64,    65,    70,    71,    77,    78,    79,
2280 >     103,   104,   493,   494,   495,   496,   497,   498,   499,   500,
2281 >     501,   502,   503,   504,   505,   506,   226,   226,   226,     1,
2282 >      60,   427,   428,   429,   226,     1,     6,     7,    12,    20,
2283 >      26,    29,    30,    35,    40,    41,    43,    44,    45,    47,
2284 >      54,    58,    59,    67,    76,    84,    86,    88,    90,    92,
2285 >      93,   105,   110,   111,   112,   114,   115,   116,   119,   145,
2286 >     152,   153,   154,   155,   156,   184,   208,   209,   211,   212,
2287 >     213,   217,   222,   437,   438,   439,   440,   441,   442,   443,
2288       444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
2289       454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
2290       464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
2291 <     474,   478,   482,   483,   484,   221,   221,   221,     1,   211,
2292 <     265,   266,   267,   268,   269,     1,    89,   115,   232,   233,
2293 <     234,   235,   221,   221,     1,    37,    51,    52,    53,    54,
2294 <      71,   503,   504,   505,   506,   507,   508,   509,   510,     1,
2295 <      24,    57,    91,    93,    94,   131,   133,   134,   135,   136,
2296 <     150,   174,   184,   213,   214,   237,   238,   239,   240,   245,
2297 <     246,   247,   248,   249,   250,   251,   252,   253,   254,   255,
2298 <     256,   257,   221,   221,     1,    91,   351,   352,   353,   219,
2299 <     222,   222,   222,   220,   260,   222,   222,   222,   222,   222,
2300 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   220,
2301 <     487,     1,    15,    16,    19,    78,    79,    80,    83,    91,
2302 <     102,   103,   117,   118,   146,   187,   298,   299,   300,   301,
2303 <     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
2304 <     312,   313,     1,     3,     5,    17,    32,    36,    56,    58,
2305 <      70,    91,   119,   147,   174,   213,   375,   376,   377,   378,
2306 <     379,   380,   381,   382,   383,   384,   388,   389,   390,   391,
2307 <     392,     1,    61,   122,   405,   406,   407,   408,   222,   220,
2308 <     411,     1,    91,   122,   154,   415,   419,   420,   421,   422,
2309 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
2310 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
2311 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
2312 <     222,   479,   222,   475,   222,   222,   222,   222,   222,   222,
2313 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
2314 <     222,   222,   222,   220,   425,     1,    17,    32,    36,   114,
2315 <     123,   124,   156,   209,   330,   331,   332,   333,   334,   335,
2316 <     336,   340,   341,   342,     1,   122,   154,   209,   395,   399,
2317 <     400,   401,   402,     1,    36,    56,    61,   119,   316,   320,
2318 <     321,   322,   326,   327,   219,   222,   220,   266,   218,   219,
2319 <     222,   222,   220,   233,     1,    17,    32,    36,    91,   114,
2320 <     132,   195,   209,   280,   281,   282,   283,   284,   285,   286,
2321 <     287,   288,   292,     1,    14,    95,   122,   345,   346,   347,
2322 <     348,   349,   222,   222,   222,   222,   222,   222,   220,   504,
2323 <     219,   222,   222,   222,   222,   222,   222,   222,   222,   222,
2324 <     222,   222,   222,   222,   222,   222,   220,   238,     1,    91,
2325 <     154,   209,   356,   357,   358,   359,   360,     1,    91,   154,
2326 <     366,   367,   368,   369,   222,   220,   352,   120,   120,   120,
2327 <     219,   101,   101,   163,   101,   228,   228,   101,   101,   101,
2328 <     163,   163,   101,   228,   163,   163,   219,   219,   222,   222,
2329 <     222,   222,   222,   222,   222,   222,   222,   222,   222,   222,
2330 <     222,   222,   220,   299,   219,   222,   222,   222,   222,   385,
2331 <     222,   222,   222,   222,   222,   222,   222,   222,   220,   376,
2332 <     222,   222,   220,   406,   120,   219,   222,   222,   416,   220,
2333 <     420,   163,   228,   228,   101,   163,   163,   101,   120,   163,
2334 <     228,   163,   228,   101,   101,   101,   163,   163,   163,   228,
2335 <     120,   163,   101,   101,   228,   101,   101,   120,   101,   101,
2336 <     163,   163,   222,   163,   222,   228,   228,   163,   228,   163,
2337 <     163,   163,   163,   164,   163,   164,   163,   163,   228,   228,
2338 <     120,   228,   163,   163,   163,   163,   219,   219,   222,   222,
2339 <     337,   222,   222,   222,   222,   222,   220,   331,   222,   396,
2340 <     222,   220,   400,   219,   317,   222,   222,   222,   220,   321,
2341 <     163,   219,   221,   120,   120,   219,   219,   222,   222,   293,
2342 <     222,   222,   222,   289,   222,   220,   281,   219,   222,   222,
2343 <     222,   220,   346,   163,   163,   120,   163,   163,   228,   219,
2344 <     120,   163,   120,   120,   120,   120,   120,   120,   137,   138,
2345 <     241,   242,   137,   138,   243,   244,   120,   120,   101,   120,
2346 <     120,   219,   219,   222,   361,   222,   220,   357,   219,   222,
2347 <     370,   220,   367,   120,   219,   219,   219,   219,   219,   219,
2348 <     219,   141,   142,   143,   144,   145,   227,   228,   219,   219,
2349 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   101,
2350 <     101,   228,   101,   101,   101,   101,   120,   101,   101,   228,
2351 <     228,   101,   230,   230,   219,   120,   181,   182,   120,   163,
2352 <     222,   120,   120,   120,   120,   101,   120,   120,   120,   219,
2353 <     120,   120,   219,   219,   120,   120,   222,   219,   219,   219,
2354 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2355 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2356 <     219,   219,   219,   219,   219,   219,   219,   219,   219,    51,
2357 <     169,   170,   171,   172,   173,   175,   176,   178,   179,   180,
2358 <     183,   185,   186,   188,   190,   192,   193,   196,   202,   480,
2359 <     481,   219,    51,   169,   170,   171,   172,   173,   175,   176,
2360 <     178,   179,   180,   183,   185,   186,   188,   190,   192,   193,
2361 <     196,   202,   476,   477,   219,   219,   219,   219,   219,   219,
2362 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2363 <     219,   219,   219,   219,   219,   120,   163,   222,   120,   101,
2364 <     120,   120,   120,   219,   120,   222,   120,   219,   222,   120,
2365 <     120,   101,   324,   325,   219,   219,     1,    91,   154,   217,
2366 <     270,   271,   272,   273,   274,   219,   219,   120,   163,   222,
2367 <     120,   120,   120,   222,   120,   219,   120,   120,   120,   219,
2368 <     219,   219,   219,   219,   219,   219,   219,   219,   219,   219,
2369 <     219,   219,   219,   219,   219,   223,   219,   223,   219,   219,
2370 <     219,   219,   219,   120,   222,   120,   219,   120,   222,   219,
2371 <     219,   227,   227,   227,   227,   227,   219,   219,   219,   219,
2372 <     219,   219,   219,   219,   219,   219,   219,   219,     9,    10,
2373 <      11,   229,   230,   219,   219,   219,   219,   219,   219,   219,
2374 <       8,   194,   386,   387,   219,   219,   219,   219,   219,   219,
2375 <     219,   219,   219,   219,   219,   219,   125,   417,   418,   219,
2376 <     223,   219,   223,   219,   219,    13,    33,    43,    49,    65,
2377 <      92,   100,   140,   157,   338,   339,   219,   219,   219,   219,
2378 <     219,   219,   125,   397,   398,   219,    51,   189,   194,   318,
2379 <     319,   219,   219,   167,   223,   323,   219,   222,   275,   222,
2380 <     220,   271,   219,   219,     4,    25,    40,    47,    64,    89,
2381 <      96,   108,   126,   128,   129,   177,   186,   191,   197,   201,
2382 <     203,   208,   215,   294,   295,   219,   219,   219,    51,   169,
2383 <     170,   171,   172,   173,   175,   176,   178,   179,   180,   183,
2384 <     185,   186,   188,   190,   192,   193,   196,   202,   290,   291,
2385 <     219,   219,   219,   219,   242,   244,   219,    64,   139,   168,
2386 <     177,   183,   197,   199,   200,   208,   215,   362,   363,   219,
2387 <     219,    64,   139,   168,   177,   183,   197,   199,   200,   208,
2388 <     215,   371,   372,   229,   229,   229,   219,   223,   219,   223,
2389 <     481,   477,   219,   223,   219,   223,   219,   223,   101,   325,
2390 <     219,   120,   222,   198,   230,   219,   219,   223,   219,   223,
2391 <     219,   223,   219,   223,   387,   418,   339,   398,   319,   219,
2392 <      40,    62,    64,   104,   176,   177,   209,   276,   277,   219,
2393 <     219,   295,   291,   363,   372,   219,   223,   277
2291 >     474,   475,   476,   477,   478,   479,   480,   481,   485,   489,
2292 >     490,   491,   226,   226,   226,     1,    94,   118,   238,   239,
2293 >     240,   241,   226,   226,   226,     1,    28,    36,    48,    49,
2294 >      51,    52,    53,    73,   508,   509,   510,   511,   512,   513,
2295 >     514,   515,   516,   517,     1,    24,    56,    63,    85,    89,
2296 >      97,   100,   101,   132,   149,   151,   175,   193,   194,   195,
2297 >     220,   221,   243,   244,   245,   246,   251,   252,   253,   254,
2298 >     255,   256,   257,   258,   259,   260,   261,   262,   263,   264,
2299 >     265,   226,     1,   218,   279,   280,   281,   282,   283,     1,
2300 >      97,   371,   372,   373,   226,   224,   227,   227,   227,   225,
2301 >     268,   227,   227,   227,   227,   227,   227,   227,   227,   227,
2302 >     227,   227,   227,   225,   494,     1,    15,    16,    19,    62,
2303 >      80,    81,    82,    83,    87,    91,    97,   108,   109,   120,
2304 >     142,   179,   313,   314,   315,   316,   317,   318,   319,   320,
2305 >     321,   322,   323,   324,   325,   326,   327,   328,   329,   330,
2306 >       1,     3,     5,    17,    32,    55,    57,    62,    72,    97,
2307 >     121,   141,   150,   193,   220,   395,   396,   397,   398,   399,
2308 >     400,   401,   402,   403,   404,   405,   409,   410,   411,   412,
2309 >     413,     1,    60,   124,   422,   423,   424,   425,   227,   225,
2310 >     428,     1,    97,   124,   432,   433,   434,   435,   227,   227,
2311 >     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
2312 >     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
2313 >     227,   227,   227,   227,   486,   227,   482,   227,   227,   227,
2314 >     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
2315 >     227,   227,   227,   227,   227,   225,   438,     1,    17,    32,
2316 >      62,   117,   125,   126,   146,   219,   350,   351,   352,   353,
2317 >     354,   355,   356,   360,   361,   362,     1,   124,   219,   416,
2318 >     417,   418,   419,     1,    55,    60,    62,   121,   336,   340,
2319 >     341,   342,   346,   347,   224,   227,   227,   225,   239,     1,
2320 >      75,   167,   274,   275,   276,   277,     1,    17,    32,    62,
2321 >      97,   117,   133,   150,   198,   219,   294,   295,   296,   297,
2322 >     298,   299,   300,   301,   302,   303,   307,     1,    34,    75,
2323 >     124,   365,   366,   367,   368,   369,   227,   227,   227,   227,
2324 >     227,   227,   227,   227,   225,   509,   224,   227,   227,   227,
2325 >     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
2326 >     227,   227,   227,   227,   225,   244,     1,    97,   215,   386,
2327 >     387,   388,   389,   224,   227,   225,   280,   167,   227,   225,
2328 >     372,     1,    97,   215,   219,   376,   377,   378,   379,   380,
2329 >     122,   122,   122,   224,   107,   107,   207,   107,   107,   234,
2330 >     234,   234,   107,   107,   107,   207,   207,   224,   224,   227,
2331 >     227,   227,   331,   227,   227,   227,   227,   227,   227,   227,
2332 >     227,   227,   227,   227,   227,   225,   314,   224,   227,   227,
2333 >     227,   227,   227,   227,   406,   227,   227,   227,   227,   227,
2334 >     227,   227,   225,   396,   227,   227,   225,   423,   122,   224,
2335 >     227,   227,   225,   433,   207,   234,   234,   107,   207,   107,
2336 >     122,   207,   234,   207,   107,   107,   234,   107,   207,   207,
2337 >     207,   234,   107,   107,   234,   107,   107,   107,   107,   207,
2338 >     227,   207,   227,   207,   234,   234,   207,   207,   207,   207,
2339 >     210,   207,   210,   207,   207,   122,   234,   207,   207,   234,
2340 >     234,   207,   207,   224,   224,   227,   227,   357,   227,   227,
2341 >     227,   227,   227,   225,   351,   227,   227,   225,   417,   224,
2342 >     227,   227,   337,   227,   225,   341,   122,   122,   224,   224,
2343 >     227,   227,   225,   275,   224,   227,   227,   308,   227,   227,
2344 >     227,   227,   304,   227,   225,   295,   224,   227,   227,   227,
2345 >     225,   366,   207,   207,   207,   122,   207,   207,   207,   234,
2346 >     224,   122,   207,   122,   107,   107,   122,   122,   122,   122,
2347 >     122,   122,   107,   122,   196,   197,   247,   248,   196,   197,
2348 >     249,   250,   122,   122,   224,   224,   227,   390,   225,   387,
2349 >     207,   224,   226,   122,   224,   224,   227,   381,   227,   225,
2350 >     377,   224,   224,   224,   224,   224,   224,   224,   134,   135,
2351 >     136,   137,   138,   139,   140,   233,   234,   224,   224,   224,
2352 >     224,   224,   224,   224,   224,   107,   107,   234,   227,   107,
2353 >     107,   234,   107,   107,   234,   122,   107,   107,   234,   107,
2354 >     236,   236,   224,   122,   171,   172,   122,   207,   122,   122,
2355 >     227,   122,   122,   107,   122,   122,   122,   122,   224,   122,
2356 >     122,   224,   224,   122,   122,   224,   224,   224,   224,   224,
2357 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2358 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2359 >     224,   224,    48,   158,   159,   160,   162,   163,   165,   166,
2360 >     168,   170,   173,   176,   177,   178,   180,   185,   189,   190,
2361 >     191,   199,   204,   487,   488,   224,    48,   158,   159,   160,
2362 >     162,   163,   165,   166,   168,   170,   173,   176,   177,   178,
2363 >     180,   185,   189,   190,   191,   199,   204,   483,   484,   224,
2364 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2365 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   122,
2366 >     207,   227,   122,   107,   122,   122,   122,   224,   122,   122,
2367 >     224,   122,   122,   227,   107,   344,   345,   224,   224,   224,
2368 >     122,   122,   224,   122,   207,   227,   122,   122,   122,   122,
2369 >     227,   122,   224,   122,   122,   122,   224,   224,   224,   224,
2370 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2371 >     224,   224,   224,   224,   224,   224,   224,   224,   224,   228,
2372 >     224,   228,   224,   224,   122,   227,   224,   224,     1,    97,
2373 >     188,   215,   284,   285,   286,   287,   288,   224,   122,   227,
2374 >     122,   224,   233,   233,   233,   233,   233,   233,   233,   224,
2375 >     224,   224,    50,   123,   332,   333,   224,   224,   224,   224,
2376 >     224,   224,   224,   224,   224,   224,     9,    10,    11,   235,
2377 >     236,   224,   224,   224,   224,   224,   224,   224,   224,   224,
2378 >       8,   192,   407,   408,   224,   224,   224,   224,   224,   224,
2379 >     224,   224,   224,   224,   224,   224,   228,   224,   228,   224,
2380 >     224,    13,    33,    42,    69,    98,    99,   106,   131,   147,
2381 >     206,   358,   359,   224,   224,   224,   224,   224,   224,   224,
2382 >     224,   224,    48,   182,   192,   338,   339,   214,   228,   343,
2383 >     224,   224,   224,   224,     4,    18,    25,    39,    66,    68,
2384 >      94,   127,   129,   148,   164,   169,   173,   178,   181,   186,
2385 >     200,   205,   216,   223,   309,   310,   224,   224,   224,   224,
2386 >      48,   158,   159,   160,   162,   163,   165,   166,   168,   170,
2387 >     173,   176,   177,   178,   180,   185,   189,   190,   191,   199,
2388 >     204,   305,   306,   224,   224,   224,   224,   248,   250,   224,
2389 >      68,   130,   157,   164,   173,   200,   202,   203,   216,   223,
2390 >     391,   392,   224,   227,   227,   289,   225,   285,   224,    68,
2391 >     130,   157,   164,   173,   200,   202,   203,   216,   223,   382,
2392 >     383,   224,   224,   228,   235,   235,   235,   224,   228,   488,
2393 >     484,   224,   228,   224,   228,   107,   345,   224,   229,   229,
2394 >     229,   224,   228,   224,   228,   224,   228,   122,   201,   236,
2395 >     227,   224,   224,   228,   333,   408,   359,   339,   128,   128,
2396 >     128,   310,   306,   392,   224,   224,   224,    39,    66,    68,
2397 >     113,   163,   164,   219,   290,   291,   383,   224,   228,   291
2398   };
2399  
2400   #define yyerrok         (yyerrstatus = 0)
# Line 2381 | Line 2441 | do
2441      }                                                           \
2442   while (YYID (0))
2443  
2444 <
2444 > /* Error token number */
2445   #define YYTERROR        1
2446   #define YYERRCODE       256
2447  
2388 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2389   If N is 0, then set CURRENT to the empty location which ends
2390   the previous symbol: RHS[0] (always defined).  */
2391
2392 #ifndef YYLLOC_DEFAULT
2393 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2394    do                                                                  \
2395      if (YYID (N))                                                     \
2396        {                                                               \
2397          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2398          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2399          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2400          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2401        }                                                               \
2402      else                                                              \
2403        {                                                               \
2404          (Current).first_line   = (Current).last_line   =              \
2405            YYRHSLOC (Rhs, 0).last_line;                                \
2406          (Current).first_column = (Current).last_column =              \
2407            YYRHSLOC (Rhs, 0).last_column;                              \
2408        }                                                               \
2409    while (YYID (0))
2410 #endif
2411
2412 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2413
2414
2448  
2449   /* This macro is provided for backward compatibility. */
2417
2450   #ifndef YY_LOCATION_PRINT
2451   # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2452   #endif
2453  
2454  
2455   /* YYLEX -- calling `yylex' with the right arguments.  */
2424
2456   #ifdef YYLEX_PARAM
2457   # define YYLEX yylex (YYLEX_PARAM)
2458   #else
# Line 2481 | Line 2512 | yy_symbol_value_print (yyoutput, yytype,
2512   # else
2513    YYUSE (yyoutput);
2514   # endif
2515 <  switch (yytype)
2485 <    {
2486 <      default:
2487 <        break;
2488 <    }
2515 >  YYUSE (yytype);
2516   }
2517  
2518  
# Line 2726 | Line 2753 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2753   {
2754    YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
2755    YYSIZE_T yysize = yysize0;
2729  YYSIZE_T yysize1;
2756    enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2757    /* Internationalized format string. */
2758    const char *yyformat = YY_NULL;
# Line 2789 | Line 2815 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2815                      break;
2816                    }
2817                  yyarg[yycount++] = yytname[yyx];
2818 <                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2819 <                if (! (yysize <= yysize1
2820 <                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2821 <                  return 2;
2822 <                yysize = yysize1;
2818 >                {
2819 >                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2820 >                  if (! (yysize <= yysize1
2821 >                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2822 >                    return 2;
2823 >                  yysize = yysize1;
2824 >                }
2825                }
2826          }
2827      }
# Line 2813 | Line 2841 | yysyntax_error (YYSIZE_T *yymsg_alloc, c
2841   # undef YYCASE_
2842      }
2843  
2844 <  yysize1 = yysize + yystrlen (yyformat);
2845 <  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2846 <    return 2;
2847 <  yysize = yysize1;
2844 >  {
2845 >    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2846 >    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2847 >      return 2;
2848 >    yysize = yysize1;
2849 >  }
2850  
2851    if (*yymsg_alloc < yysize)
2852      {
# Line 2872 | Line 2902 | yydestruct (yymsg, yytype, yyvaluep)
2902      yymsg = "Deleting";
2903    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2904  
2905 <  switch (yytype)
2876 <    {
2877 <
2878 <      default:
2879 <        break;
2880 <    }
2905 >  YYUSE (yytype);
2906   }
2907  
2908  
# Line 2886 | Line 2911 | yydestruct (yymsg, yytype, yyvaluep)
2911   /* The lookahead symbol.  */
2912   int yychar;
2913  
2914 +
2915 + #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2916 + # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2917 + # define YY_IGNORE_MAYBE_UNINITIALIZED_END
2918 + #endif
2919 + #ifndef YY_INITIAL_VALUE
2920 + # define YY_INITIAL_VALUE(Value) /* Nothing. */
2921 + #endif
2922 +
2923   /* The semantic value of the lookahead symbol.  */
2924 < YYSTYPE yylval;
2924 > YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
2925  
2926   /* Number of syntax errors so far.  */
2927   int yynerrs;
# Line 2945 | Line 2979 | yyparse ()
2979    int yyn;
2980    int yyresult;
2981    /* Lookahead token as an internal (translated) token number.  */
2982 <  int yytoken;
2982 >  int yytoken = 0;
2983    /* The variables used to return semantic value and location from the
2984       action routines.  */
2985    YYSTYPE yyval;
# Line 2963 | Line 2997 | yyparse ()
2997       Keep to zero when no symbol should be popped.  */
2998    int yylen = 0;
2999  
3000 <  yytoken = 0;
3001 <  yyss = yyssa;
2968 <  yyvs = yyvsa;
3000 >  yyssp = yyss = yyssa;
3001 >  yyvsp = yyvs = yyvsa;
3002    yystacksize = YYINITDEPTH;
3003  
3004    YYDPRINTF ((stderr, "Starting parse\n"));
# Line 2974 | Line 3007 | yyparse ()
3007    yyerrstatus = 0;
3008    yynerrs = 0;
3009    yychar = YYEMPTY; /* Cause a token to be read.  */
2977
2978  /* Initialize stack pointers.
2979     Waste one element of value and location stack
2980     so that they stay on the same level as the state stack.
2981     The wasted elements are never initialized.  */
2982  yyssp = yyss;
2983  yyvsp = yyvs;
3010    goto yysetstate;
3011  
3012   /*------------------------------------------------------------.
# Line 3121 | Line 3147 | yybackup:
3147    yychar = YYEMPTY;
3148  
3149    yystate = yyn;
3150 +  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3151    *++yyvsp = yylval;
3152 +  YY_IGNORE_MAYBE_UNINITIALIZED_END
3153  
3154    goto yynewstate;
3155  
# Line 3157 | Line 3185 | yyreduce:
3185    YY_REDUCE_PRINT (yyn);
3186    switch (yyn)
3187      {
3188 <        case 26:
3188 >        case 27:
3189   /* Line 1787 of yacc.c  */
3190 < #line 363 "conf_parser.y"
3190 > #line 397 "conf_parser.y"
3191      { (yyval.number) = 0; }
3192      break;
3193  
3194 <  case 28:
3194 >  case 29:
3195   /* Line 1787 of yacc.c  */
3196 < #line 365 "conf_parser.y"
3196 > #line 399 "conf_parser.y"
3197      {
3198                          (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3199                  }
3200      break;
3201  
3202 <  case 29:
3202 >  case 30:
3203   /* Line 1787 of yacc.c  */
3204 < #line 369 "conf_parser.y"
3204 > #line 403 "conf_parser.y"
3205      {
3206                          (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3207                  }
3208      break;
3209  
3210 <  case 30:
3210 >  case 31:
3211   /* Line 1787 of yacc.c  */
3212 < #line 373 "conf_parser.y"
3212 > #line 407 "conf_parser.y"
3213      {
3214                          (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3215                  }
3216      break;
3217  
3218 <  case 31:
3218 >  case 32:
3219   /* Line 1787 of yacc.c  */
3220 < #line 377 "conf_parser.y"
3220 > #line 411 "conf_parser.y"
3221      {
3222                          (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3223                  }
3224      break;
3225  
3226 <  case 32:
3226 >  case 33:
3227   /* Line 1787 of yacc.c  */
3228 < #line 381 "conf_parser.y"
3228 > #line 415 "conf_parser.y"
3229      {
3230                          (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3231                  }
3232      break;
3233  
3234 <  case 33:
3234 >  case 34:
3235   /* Line 1787 of yacc.c  */
3236 < #line 385 "conf_parser.y"
3236 > #line 419 "conf_parser.y"
3237      {
3238                          (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3239                  }
3240      break;
3241  
3242 <  case 34:
3242 >  case 35:
3243   /* Line 1787 of yacc.c  */
3244 < #line 390 "conf_parser.y"
3245 <    { (yyval.number) = 0; }
3244 > #line 423 "conf_parser.y"
3245 >    {
3246 >                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[(3) - (3)].number);
3247 >                }
3248      break;
3249  
3250    case 36:
3251   /* Line 1787 of yacc.c  */
3252 < #line 391 "conf_parser.y"
3253 <    { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3252 > #line 427 "conf_parser.y"
3253 >    {
3254 >                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 365 + (yyvsp[(3) - (3)].number);
3255 >                }
3256      break;
3257  
3258    case 37:
3259   /* Line 1787 of yacc.c  */
3260 < #line 392 "conf_parser.y"
3260 > #line 432 "conf_parser.y"
3261 >    { (yyval.number) = 0; }
3262 >    break;
3263 >
3264 >  case 39:
3265 > /* Line 1787 of yacc.c  */
3266 > #line 433 "conf_parser.y"
3267 >    { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3268 >    break;
3269 >
3270 >  case 40:
3271 > /* Line 1787 of yacc.c  */
3272 > #line 434 "conf_parser.y"
3273      { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3274      break;
3275  
3276 <  case 38:
3276 >  case 41:
3277   /* Line 1787 of yacc.c  */
3278 < #line 393 "conf_parser.y"
3278 > #line 435 "conf_parser.y"
3279      { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3280      break;
3281  
3282 <  case 39:
3282 >  case 42:
3283   /* Line 1787 of yacc.c  */
3284 < #line 394 "conf_parser.y"
3284 > #line 436 "conf_parser.y"
3285      { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3286      break;
3287  
3288 <  case 46:
3288 >  case 49:
3289   /* Line 1787 of yacc.c  */
3290 < #line 408 "conf_parser.y"
3290 > #line 450 "conf_parser.y"
3291      {
3292    if (conf_parser_ctx.pass == 2)
3293      add_conf_module(libio_basename(yylval.string));
3294   }
3295      break;
3296  
3297 <  case 47:
3297 >  case 50:
3298   /* Line 1787 of yacc.c  */
3299 < #line 414 "conf_parser.y"
3299 > #line 456 "conf_parser.y"
3300      {
3301    if (conf_parser_ctx.pass == 2)
3302      mod_add_path(yylval.string);
3303   }
3304      break;
3305  
3306 <  case 71:
3306 >  case 76:
3307   /* Line 1787 of yacc.c  */
3308 < #line 439 "conf_parser.y"
3308 > #line 482 "conf_parser.y"
3309      {
3310   #ifdef HAVE_LIBCRYPTO
3311    if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
# Line 3270 | Line 3314 | yyreduce:
3314   }
3315      break;
3316  
3317 <  case 72:
3317 >  case 77:
3318   /* Line 1787 of yacc.c  */
3319 < #line 445 "conf_parser.y"
3319 > #line 488 "conf_parser.y"
3320      {
3321   #ifdef HAVE_LIBCRYPTO
3322    if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
# Line 3281 | Line 3325 | yyreduce:
3325   }
3326      break;
3327  
3328 <  case 75:
3328 >  case 80:
3329   /* Line 1787 of yacc.c  */
3330 < #line 454 "conf_parser.y"
3330 > #line 497 "conf_parser.y"
3331      {
3332   #ifdef HAVE_LIBCRYPTO
3333    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
# Line 3292 | Line 3336 | yyreduce:
3336   }
3337      break;
3338  
3339 <  case 76:
3339 >  case 81:
3340   /* Line 1787 of yacc.c  */
3341 < #line 460 "conf_parser.y"
3341 > #line 503 "conf_parser.y"
3342      {
3343   #ifdef HAVE_LIBCRYPTO
3344    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
# Line 3303 | Line 3347 | yyreduce:
3347   }
3348      break;
3349  
3350 <  case 77:
3350 >  case 82:
3351   /* Line 1787 of yacc.c  */
3352 < #line 468 "conf_parser.y"
3352 > #line 511 "conf_parser.y"
3353      {
3354   #ifdef HAVE_LIBCRYPTO
3355    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3356    {
3357      if (!ServerInfo.rsa_private_key_file)
3358      {
3359 <      yyerror("No rsa_private_key_file specified, SSL disabled");
3359 >      conf_error_report("No rsa_private_key_file specified, SSL disabled");
3360        break;
3361      }
3362  
# Line 3321 | Line 3365 | yyreduce:
3365          SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
3366                                       SSL_FILETYPE_PEM) <= 0)
3367      {
3368 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3368 >      report_crypto_errors();
3369 >      conf_error_report("Could not open/read certificate file");
3370        break;
3371      }
3372  
# Line 3330 | Line 3375 | yyreduce:
3375          SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3376                                      SSL_FILETYPE_PEM) <= 0)
3377      {
3378 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3378 >      report_crypto_errors();
3379 >      conf_error_report("Could not read RSA private key");
3380        break;
3381      }
3382  
3383      if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3384          !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3385      {
3386 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3386 >      report_crypto_errors();
3387 >      conf_error_report("Could not read RSA private key");
3388        break;
3389      }
3390    }
# Line 3345 | Line 3392 | yyreduce:
3392   }
3393      break;
3394  
3395 <  case 78:
3395 >  case 83:
3396   /* Line 1787 of yacc.c  */
3397 < #line 507 "conf_parser.y"
3397 > #line 553 "conf_parser.y"
3398      {
3399   #ifdef HAVE_LIBCRYPTO
3400 <  if (conf_parser_ctx.pass == 1)
3354 <  {
3355 <    BIO *file;
3400 >  BIO *file = NULL;
3401  
3402 <    if (ServerInfo.rsa_private_key)
3403 <    {
3359 <      RSA_free(ServerInfo.rsa_private_key);
3360 <      ServerInfo.rsa_private_key = NULL;
3361 <    }
3402 >  if (conf_parser_ctx.pass != 1)
3403 >    break;
3404  
3405 <    if (ServerInfo.rsa_private_key_file)
3406 <    {
3407 <      MyFree(ServerInfo.rsa_private_key_file);
3408 <      ServerInfo.rsa_private_key_file = NULL;
3409 <    }
3405 >  if (ServerInfo.rsa_private_key)
3406 >  {
3407 >    RSA_free(ServerInfo.rsa_private_key);
3408 >    ServerInfo.rsa_private_key = NULL;
3409 >  }
3410  
3411 <    DupString(ServerInfo.rsa_private_key_file, yylval.string);
3411 >  if (ServerInfo.rsa_private_key_file)
3412 >  {
3413 >    MyFree(ServerInfo.rsa_private_key_file);
3414 >    ServerInfo.rsa_private_key_file = NULL;
3415 >  }
3416  
3417 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3372 <    {
3373 <      yyerror("File open failed, ignoring");
3374 <      break;
3375 <    }
3417 >  ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3418  
3419 <    ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3419 >  if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3420 >  {
3421 >    conf_error_report("File open failed, ignoring");
3422 >    break;
3423 >  }
3424  
3425 <    BIO_set_close(file, BIO_CLOSE);
3380 <    BIO_free(file);
3425 >  ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3426  
3427 <    if (ServerInfo.rsa_private_key == NULL)
3428 <    {
3384 <      yyerror("Couldn't extract key, ignoring");
3385 <      break;
3386 <    }
3427 >  BIO_set_close(file, BIO_CLOSE);
3428 >  BIO_free(file);
3429  
3430 <    if (!RSA_check_key(ServerInfo.rsa_private_key))
3431 <    {
3432 <      RSA_free(ServerInfo.rsa_private_key);
3433 <      ServerInfo.rsa_private_key = NULL;
3430 >  if (ServerInfo.rsa_private_key == NULL)
3431 >  {
3432 >    conf_error_report("Couldn't extract key, ignoring");
3433 >    break;
3434 >  }
3435  
3436 <      yyerror("Invalid key, ignoring");
3437 <      break;
3438 <    }
3436 >  if (!RSA_check_key(ServerInfo.rsa_private_key))
3437 >  {
3438 >    RSA_free(ServerInfo.rsa_private_key);
3439 >    ServerInfo.rsa_private_key = NULL;
3440  
3441 <    /* require 2048 bit (256 byte) key */
3442 <    if (RSA_size(ServerInfo.rsa_private_key) != 256)
3443 <    {
3400 <      RSA_free(ServerInfo.rsa_private_key);
3401 <      ServerInfo.rsa_private_key = NULL;
3441 >    conf_error_report("Invalid key, ignoring");
3442 >    break;
3443 >  }
3444  
3445 <      yyerror("Not a 2048 bit key, ignoring");
3446 <    }
3445 >  /* require 2048 bit (256 byte) key */
3446 >  if (RSA_size(ServerInfo.rsa_private_key) != 256)
3447 >  {
3448 >    RSA_free(ServerInfo.rsa_private_key);
3449 >    ServerInfo.rsa_private_key = NULL;
3450 >
3451 >    conf_error_report("Not a 2048 bit key, ignoring");
3452    }
3453   #endif
3454   }
3455      break;
3456  
3457 <  case 79:
3457 >  case 84:
3458   /* Line 1787 of yacc.c  */
3459 < #line 566 "conf_parser.y"
3459 > #line 612 "conf_parser.y"
3460      {
3461   /* TBD - XXX: error reporting */
3462   #ifdef HAVE_LIBCRYPTO
# Line 3426 | Line 3473 | yyreduce:
3473        if (dh)
3474        {
3475          if (DH_size(dh) < 128)
3476 <          ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3476 >          conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3477          else
3478            SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3479  
# Line 3438 | Line 3485 | yyreduce:
3485   }
3486      break;
3487  
3488 <  case 80:
3488 >  case 85:
3489   /* Line 1787 of yacc.c  */
3490 < #line 594 "conf_parser.y"
3490 > #line 640 "conf_parser.y"
3491      {
3492   #ifdef HAVE_LIBCRYPTO
3493    if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
# Line 3449 | Line 3496 | yyreduce:
3496   }
3497      break;
3498  
3499 <  case 81:
3499 >  case 86:
3500   /* Line 1787 of yacc.c  */
3501 < #line 602 "conf_parser.y"
3501 > #line 648 "conf_parser.y"
3502      {
3503    /* this isn't rehashable */
3504    if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3505    {
3506      if (valid_servname(yylval.string))
3507 <      DupString(ServerInfo.name, yylval.string);
3507 >      ServerInfo.name = xstrdup(yylval.string);
3508      else
3509      {
3510 <      ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3510 >      conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3511        exit(0);
3512      }
3513    }
3514   }
3515      break;
3516  
3517 <  case 82:
3517 >  case 87:
3518   /* Line 1787 of yacc.c  */
3519 < #line 617 "conf_parser.y"
3519 > #line 663 "conf_parser.y"
3520      {
3521    /* this isn't rehashable */
3522    if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3523    {
3524      if (valid_sid(yylval.string))
3525 <      DupString(ServerInfo.sid, yylval.string);
3525 >      ServerInfo.sid = xstrdup(yylval.string);
3526      else
3527      {
3528 <      ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3528 >      conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3529        exit(0);
3530      }
3531    }
3532   }
3533      break;
3534  
3535 <  case 83:
3535 >  case 88:
3536   /* Line 1787 of yacc.c  */
3537 < #line 632 "conf_parser.y"
3537 > #line 678 "conf_parser.y"
3538      {
3539    if (conf_parser_ctx.pass == 2)
3540    {
3541      MyFree(ServerInfo.description);
3542 <    DupString(ServerInfo.description,yylval.string);
3542 >    ServerInfo.description = xstrdup(yylval.string);
3543    }
3544   }
3545      break;
3546  
3547 <  case 84:
3547 >  case 89:
3548   /* Line 1787 of yacc.c  */
3549 < #line 641 "conf_parser.y"
3549 > #line 687 "conf_parser.y"
3550      {
3551    if (conf_parser_ctx.pass == 2)
3552    {
# Line 3509 | Line 3556 | yyreduce:
3556        p = '\0';
3557  
3558      MyFree(ServerInfo.network_name);
3559 <    DupString(ServerInfo.network_name, yylval.string);
3559 >    ServerInfo.network_name = xstrdup(yylval.string);
3560    }
3561   }
3562      break;
3563  
3564 <  case 85:
3564 >  case 90:
3565   /* Line 1787 of yacc.c  */
3566 < #line 655 "conf_parser.y"
3566 > #line 701 "conf_parser.y"
3567      {
3568 <  if (conf_parser_ctx.pass == 2)
3569 <  {
3570 <    MyFree(ServerInfo.network_desc);
3571 <    DupString(ServerInfo.network_desc, yylval.string);
3572 <  }
3568 >  if (conf_parser_ctx.pass != 2)
3569 >    break;
3570 >
3571 >  MyFree(ServerInfo.network_desc);
3572 >  ServerInfo.network_desc = xstrdup(yylval.string);
3573   }
3574      break;
3575  
3576 <  case 86:
3576 >  case 91:
3577   /* Line 1787 of yacc.c  */
3578 < #line 664 "conf_parser.y"
3578 > #line 710 "conf_parser.y"
3579      {
3580    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3581    {
# Line 3557 | Line 3604 | yyreduce:
3604   }
3605      break;
3606  
3607 <  case 87:
3607 >  case 92:
3608   /* Line 1787 of yacc.c  */
3609 < #line 692 "conf_parser.y"
3609 > #line 738 "conf_parser.y"
3610      {
3611   #ifdef IPV6
3612    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
# Line 3590 | Line 3637 | yyreduce:
3637   }
3638      break;
3639  
3640 <  case 88:
3640 >  case 93:
3641   /* Line 1787 of yacc.c  */
3642 < #line 722 "conf_parser.y"
3642 > #line 768 "conf_parser.y"
3643      {
3644 <  if (conf_parser_ctx.pass == 2)
3644 >  if (conf_parser_ctx.pass != 2)
3645 >    break;
3646 >
3647 >  if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3648    {
3649 <    recalc_fdlimit(NULL);
3649 >    char buf[IRCD_BUFSIZE];
3650  
3651 <    if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3652 <    {
3653 <      char buf[IRCD_BUFSIZE];
3604 <      ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3605 <      yyerror(buf);
3606 <    }
3607 <    else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3608 <    {
3609 <      char buf[IRCD_BUFSIZE];
3610 <      ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3611 <      yyerror(buf);
3612 <    }
3613 <    else
3614 <      ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3651 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3652 >    conf_error_report(buf);
3653 >    ServerInfo.max_clients = MAXCLIENTS_MIN;
3654    }
3655 +  else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3656 +  {
3657 +    char buf[IRCD_BUFSIZE];
3658 +
3659 +    snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3660 +    conf_error_report(buf);
3661 +    ServerInfo.max_clients = MAXCLIENTS_MAX;
3662 +  }
3663 +  else
3664 +    ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3665   }
3666      break;
3667  
3668 <  case 89:
3668 >  case 94:
3669   /* Line 1787 of yacc.c  */
3670 < #line 745 "conf_parser.y"
3670 > #line 793 "conf_parser.y"
3671      {
3672 <  if (conf_parser_ctx.pass == 2)
3624 <    ServerInfo.hub = yylval.number;
3625 < }
3672 >  if (conf_parser_ctx.pass != 2)
3673      break;
3674  
3675 <  case 97:
3629 < /* Line 1787 of yacc.c  */
3630 < #line 760 "conf_parser.y"
3631 <    {
3632 <  if (conf_parser_ctx.pass == 2)
3675 >  if ((yyvsp[(3) - (4)].number) < 9)
3676    {
3677 <    MyFree(AdminInfo.name);
3678 <    DupString(AdminInfo.name, yylval.string);
3677 >    conf_error_report("max_nick_length too low, setting to 9");
3678 >    ServerInfo.max_nick_length = 9;
3679 >  }
3680 >  else if ((yyvsp[(3) - (4)].number) > NICKLEN)
3681 >  {
3682 >    char buf[IRCD_BUFSIZE];
3683 >
3684 >    snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3685 >    conf_error_report(buf);
3686 >    ServerInfo.max_nick_length = NICKLEN;
3687    }
3688 +  else
3689 +    ServerInfo.max_nick_length = (yyvsp[(3) - (4)].number);
3690   }
3691      break;
3692  
3693 <  case 98:
3693 >  case 95:
3694   /* Line 1787 of yacc.c  */
3695 < #line 769 "conf_parser.y"
3695 > #line 815 "conf_parser.y"
3696      {
3697 <  if (conf_parser_ctx.pass == 2)
3697 >  if (conf_parser_ctx.pass != 2)
3698 >    break;
3699 >
3700 >  if ((yyvsp[(3) - (4)].number) < 80)
3701    {
3702 <    MyFree(AdminInfo.email);
3703 <    DupString(AdminInfo.email, yylval.string);
3702 >    conf_error_report("max_topic_length too low, setting to 80");
3703 >    ServerInfo.max_topic_length = 80;
3704    }
3705 +  else if ((yyvsp[(3) - (4)].number) > TOPICLEN)
3706 +  {
3707 +    char buf[IRCD_BUFSIZE];
3708 +
3709 +    snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3710 +    conf_error_report(buf);
3711 +    ServerInfo.max_topic_length = TOPICLEN;
3712 +  }
3713 +  else
3714 +    ServerInfo.max_topic_length = (yyvsp[(3) - (4)].number);
3715   }
3716      break;
3717  
3718 <  case 99:
3718 >  case 96:
3719   /* Line 1787 of yacc.c  */
3720 < #line 778 "conf_parser.y"
3720 > #line 837 "conf_parser.y"
3721      {
3722    if (conf_parser_ctx.pass == 2)
3723 <  {
3658 <    MyFree(AdminInfo.description);
3659 <    DupString(AdminInfo.description, yylval.string);
3660 <  }
3723 >    ServerInfo.hub = yylval.number;
3724   }
3725      break;
3726  
3727 <  case 106:
3727 >  case 104:
3728   /* Line 1787 of yacc.c  */
3729 < #line 796 "conf_parser.y"
3729 > #line 852 "conf_parser.y"
3730      {
3731 <  if (conf_parser_ctx.pass == 2)
3732 <    ConfigLoggingEntry.use_logging = yylval.number;
3731 >  if (conf_parser_ctx.pass != 2)
3732 >    break;
3733 >
3734 >  MyFree(AdminInfo.name);
3735 >  AdminInfo.name = xstrdup(yylval.string);
3736   }
3737      break;
3738  
3739 <  case 107:
3739 >  case 105:
3740   /* Line 1787 of yacc.c  */
3741 < #line 802 "conf_parser.y"
3741 > #line 861 "conf_parser.y"
3742      {
3743 <  lfile[0] = '\0';
3744 <  ltype = 0;
3745 <  lsize = 0;
3743 >  if (conf_parser_ctx.pass != 2)
3744 >    break;
3745 >
3746 >  MyFree(AdminInfo.email);
3747 >  AdminInfo.email = xstrdup(yylval.string);
3748   }
3749      break;
3750  
3751 <  case 108:
3751 >  case 106:
3752   /* Line 1787 of yacc.c  */
3753 < #line 807 "conf_parser.y"
3753 > #line 870 "conf_parser.y"
3754      {
3755 <  if (conf_parser_ctx.pass == 2 && ltype > 0)
3756 <    log_add_file(ltype, lsize, lfile);
3755 >  if (conf_parser_ctx.pass != 2)
3756 >    break;
3757 >
3758 >  MyFree(AdminInfo.description);
3759 >  AdminInfo.description = xstrdup(yylval.string);
3760   }
3761      break;
3762  
3763 <  case 115:
3763 >  case 107:
3764   /* Line 1787 of yacc.c  */
3765 < #line 819 "conf_parser.y"
3765 > #line 882 "conf_parser.y"
3766      {
3767 <  strlcpy(lfile, yylval.string, sizeof(lfile));
3767 >  if (conf_parser_ctx.pass == 2)
3768 >    reset_block_state();
3769   }
3770      break;
3771  
3772 <  case 116:
3772 >  case 108:
3773   /* Line 1787 of yacc.c  */
3774 < #line 824 "conf_parser.y"
3774 > #line 886 "conf_parser.y"
3775      {
3776 <  lsize = (yyvsp[(3) - (4)].number);
3776 >  dlink_node *ptr = NULL;
3777 >
3778 >  if (conf_parser_ctx.pass != 2)
3779 >    break;
3780 >
3781 >  if (!block_state.file.buf[0])
3782 >    break;
3783 >
3784 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3785 >    motd_add(ptr->data, block_state.file.buf);
3786   }
3787      break;
3788  
3789 <  case 117:
3789 >  case 114:
3790   /* Line 1787 of yacc.c  */
3791 < #line 827 "conf_parser.y"
3791 > #line 903 "conf_parser.y"
3792      {
3793 <  lsize = 0;
3793 >  if (conf_parser_ctx.pass == 2)
3794 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3795   }
3796      break;
3797  
3798 <  case 118:
3798 >  case 115:
3799   /* Line 1787 of yacc.c  */
3800 < #line 832 "conf_parser.y"
3800 > #line 909 "conf_parser.y"
3801      {
3802    if (conf_parser_ctx.pass == 2)
3803 <    ltype = 0;
3803 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3804   }
3805      break;
3806  
3807    case 122:
3808   /* Line 1787 of yacc.c  */
3809 < #line 839 "conf_parser.y"
3809 > #line 924 "conf_parser.y"
3810      {
3811    if (conf_parser_ctx.pass == 2)
3812 <    ltype = LOG_TYPE_USER;
3812 >    ConfigLoggingEntry.use_logging = yylval.number;
3813   }
3814      break;
3815  
3816    case 123:
3817   /* Line 1787 of yacc.c  */
3818 < #line 843 "conf_parser.y"
3818 > #line 930 "conf_parser.y"
3819      {
3820    if (conf_parser_ctx.pass == 2)
3821 <    ltype = LOG_TYPE_OPER;
3821 >    reset_block_state();
3822   }
3823      break;
3824  
3825    case 124:
3826   /* Line 1787 of yacc.c  */
3827 < #line 847 "conf_parser.y"
3827 > #line 934 "conf_parser.y"
3828      {
3829 <  if (conf_parser_ctx.pass == 2)
3830 <    ltype = LOG_TYPE_GLINE;
3829 >  if (conf_parser_ctx.pass != 2)
3830 >    break;
3831 >
3832 >  if (block_state.type.value && block_state.file.buf[0])
3833 >    log_set_file(block_state.type.value, block_state.size.value,
3834 >                 block_state.file.buf);
3835 > }
3836 >    break;
3837 >
3838 >  case 131:
3839 > /* Line 1787 of yacc.c  */
3840 > #line 950 "conf_parser.y"
3841 >    {
3842 >  if (conf_parser_ctx.pass != 2)
3843 >    break;
3844 >
3845 >  strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3846 > }
3847 >    break;
3848 >
3849 >  case 132:
3850 > /* Line 1787 of yacc.c  */
3851 > #line 958 "conf_parser.y"
3852 >    {
3853 >  block_state.size.value = (yyvsp[(3) - (4)].number);
3854   }
3855      break;
3856  
3857 <  case 125:
3857 >  case 133:
3858   /* Line 1787 of yacc.c  */
3859 < #line 851 "conf_parser.y"
3859 > #line 961 "conf_parser.y"
3860 >    {
3861 >  block_state.size.value = 0;
3862 > }
3863 >    break;
3864 >
3865 >  case 134:
3866 > /* Line 1787 of yacc.c  */
3867 > #line 966 "conf_parser.y"
3868      {
3869    if (conf_parser_ctx.pass == 2)
3870 <    ltype = LOG_TYPE_DLINE;
3870 >    block_state.type.value = 0;
3871   }
3872      break;
3873  
3874 <  case 126:
3874 >  case 138:
3875   /* Line 1787 of yacc.c  */
3876 < #line 855 "conf_parser.y"
3876 > #line 973 "conf_parser.y"
3877      {
3878    if (conf_parser_ctx.pass == 2)
3879 <    ltype = LOG_TYPE_KLINE;
3879 >    block_state.type.value = LOG_TYPE_USER;
3880   }
3881      break;
3882  
3883 <  case 127:
3883 >  case 139:
3884   /* Line 1787 of yacc.c  */
3885 < #line 859 "conf_parser.y"
3885 > #line 977 "conf_parser.y"
3886      {
3887    if (conf_parser_ctx.pass == 2)
3888 <    ltype = LOG_TYPE_KILL;
3888 >    block_state.type.value = LOG_TYPE_OPER;
3889   }
3890      break;
3891  
3892 <  case 128:
3892 >  case 140:
3893   /* Line 1787 of yacc.c  */
3894 < #line 863 "conf_parser.y"
3894 > #line 981 "conf_parser.y"
3895      {
3896    if (conf_parser_ctx.pass == 2)
3897 <    ltype = LOG_TYPE_DEBUG;
3897 >    block_state.type.value = LOG_TYPE_GLINE;
3898   }
3899      break;
3900  
3901 <  case 129:
3901 >  case 141:
3902   /* Line 1787 of yacc.c  */
3903 < #line 873 "conf_parser.y"
3903 > #line 985 "conf_parser.y"
3904      {
3905    if (conf_parser_ctx.pass == 2)
3906 <  {
3794 <    yy_conf = make_conf_item(OPER_TYPE);
3795 <    yy_aconf = map_to_conf(yy_conf);
3796 <    SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
3797 <  }
3798 <  else
3799 <  {
3800 <    MyFree(class_name);
3801 <    class_name = NULL;
3802 <  }
3906 >    block_state.type.value = LOG_TYPE_DLINE;
3907   }
3908      break;
3909  
3910 <  case 130:
3910 >  case 142:
3911   /* Line 1787 of yacc.c  */
3912 < #line 886 "conf_parser.y"
3912 > #line 989 "conf_parser.y"
3913      {
3914    if (conf_parser_ctx.pass == 2)
3915 <  {
3916 <    struct CollectItem *yy_tmp;
3917 <    dlink_node *ptr;
3814 <    dlink_node *next_ptr;
3915 >    block_state.type.value = LOG_TYPE_KLINE;
3916 > }
3917 >    break;
3918  
3919 <    conf_add_class_to_conf(yy_conf, class_name);
3919 >  case 143:
3920 > /* Line 1787 of yacc.c  */
3921 > #line 993 "conf_parser.y"
3922 >    {
3923 >  if (conf_parser_ctx.pass == 2)
3924 >    block_state.type.value = LOG_TYPE_KILL;
3925 > }
3926 >    break;
3927  
3928 <    /* Now, make sure there is a copy of the "base" given oper
3929 <     * block in each of the collected copies
3930 <     */
3928 >  case 144:
3929 > /* Line 1787 of yacc.c  */
3930 > #line 997 "conf_parser.y"
3931 >    {
3932 >  if (conf_parser_ctx.pass == 2)
3933 >    block_state.type.value = LOG_TYPE_DEBUG;
3934 > }
3935 >    break;
3936  
3937 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3937 >  case 145:
3938 > /* Line 1787 of yacc.c  */
3939 > #line 1007 "conf_parser.y"
3940      {
3941 <      struct AccessItem *new_aconf;
3942 <      struct ConfItem *new_conf;
3826 <      yy_tmp = ptr->data;
3941 >  if (conf_parser_ctx.pass != 2)
3942 >    break;
3943  
3944 <      new_conf = make_conf_item(OPER_TYPE);
3945 <      new_aconf = (struct AccessItem *)map_to_conf(new_conf);
3944 >  reset_block_state();
3945 >  block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3946 > }
3947 >    break;
3948  
3949 <      new_aconf->flags = yy_aconf->flags;
3949 >  case 146:
3950 > /* Line 1787 of yacc.c  */
3951 > #line 1014 "conf_parser.y"
3952 >    {
3953 >  dlink_node *ptr = NULL;
3954  
3955 <      if (yy_conf->name != NULL)
3956 <        DupString(new_conf->name, yy_conf->name);
3835 <      if (yy_tmp->user != NULL)
3836 <        DupString(new_aconf->user, yy_tmp->user);
3837 <      else
3838 <        DupString(new_aconf->user, "*");
3839 <      if (yy_tmp->host != NULL)
3840 <        DupString(new_aconf->host, yy_tmp->host);
3841 <      else
3842 <        DupString(new_aconf->host, "*");
3955 >  if (conf_parser_ctx.pass != 2)
3956 >    break;
3957  
3958 <      new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->addr,
3959 <                                     &new_aconf->bits);
3958 >  if (!block_state.name.buf[0])
3959 >    break;
3960 > #ifdef HAVE_LIBCRYPTO
3961 >  if (!block_state.file.buf[0] &&
3962 >      !block_state.rpass.buf[0])
3963 >    break;
3964 > #else
3965 >  if (!block_state.rpass.buf[0])
3966 >    break;
3967 > #endif
3968  
3969 <      conf_add_class_to_conf(new_conf, class_name);
3970 <      if (yy_aconf->passwd != NULL)
3971 <        DupString(new_aconf->passwd, yy_aconf->passwd);
3969 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3970 >  {
3971 >    struct MaskItem *conf = NULL;
3972 >    struct split_nuh_item nuh;
3973  
3974 <      new_aconf->port = yy_aconf->port;
3975 < #ifdef HAVE_LIBCRYPTO
3976 <      if (yy_aconf->rsa_public_key_file != NULL)
3977 <      {
3978 <        BIO *file;
3974 >    nuh.nuhmask  = ptr->data;
3975 >    nuh.nickptr  = NULL;
3976 >    nuh.userptr  = block_state.user.buf;
3977 >    nuh.hostptr  = block_state.host.buf;
3978 >    nuh.nicksize = 0;
3979 >    nuh.usersize = sizeof(block_state.user.buf);
3980 >    nuh.hostsize = sizeof(block_state.host.buf);
3981 >    split_nuh(&nuh);
3982  
3983 <        DupString(new_aconf->rsa_public_key_file,
3984 <                  yy_aconf->rsa_public_key_file);
3983 >    conf         = conf_make(CONF_OPER);
3984 >    conf->name   = xstrdup(block_state.name.buf);
3985 >    conf->user   = xstrdup(block_state.user.buf);
3986 >    conf->host   = xstrdup(block_state.host.buf);
3987 >
3988 >    if (block_state.cert.buf[0])
3989 >      conf->certfp = xstrdup(block_state.cert.buf);
3990 >
3991 >    if (block_state.rpass.buf[0])
3992 >      conf->passwd = xstrdup(block_state.rpass.buf);
3993 >
3994 >    conf->flags = block_state.flags.value;
3995 >    conf->modes = block_state.modes.value;
3996 >    conf->port  = block_state.port.value;
3997 >    conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3998  
3999 <        file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
3861 <        new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
3862 <                                                           NULL, 0, NULL);
3863 <        BIO_set_close(file, BIO_CLOSE);
3864 <        BIO_free(file);
3865 <      }
3866 < #endif
3999 >    conf_add_class_to_conf(conf, block_state.class.buf);
4000  
4001   #ifdef HAVE_LIBCRYPTO
4002 <      if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4003 <          && yy_tmp->host)
4004 < #else
4005 <      if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4006 < #endif
4002 >    if (block_state.file.buf[0])
4003 >    {
4004 >      BIO *file = NULL;
4005 >      RSA *pkey = NULL;
4006 >
4007 >      if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
4008        {
4009 <        conf_add_class_to_conf(new_conf, class_name);
4010 <        if (yy_tmp->name != NULL)
3877 <          DupString(new_conf->name, yy_tmp->name);
4009 >        conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
4010 >        break;
4011        }
4012  
4013 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
4014 <      free_collect_item(yy_tmp);
3882 <    }
3883 <
3884 <    yy_conf = NULL;
3885 <    yy_aconf = NULL;
4013 >      if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
4014 >        conf_error_report("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4015  
4016 <
4017 <    MyFree(class_name);
4018 <    class_name = NULL;
4016 >      conf->rsa_public_key = pkey;
4017 >      BIO_set_close(file, BIO_CLOSE);
4018 >      BIO_free(file);
4019 >    }
4020 > #endif /* HAVE_LIBCRYPTO */
4021    }
4022   }
4023      break;
4024  
4025 <  case 142:
4025 >  case 159:
4026   /* Line 1787 of yacc.c  */
4027 < #line 976 "conf_parser.y"
4027 > #line 1093 "conf_parser.y"
4028      {
4029    if (conf_parser_ctx.pass == 2)
4030 <  {
3900 <    MyFree(yy_conf->name);
3901 <    DupString(yy_conf->name, yylval.string);
3902 <  }
4030 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4031   }
4032      break;
4033  
4034 <  case 143:
4034 >  case 160:
4035   /* Line 1787 of yacc.c  */
4036 < #line 985 "conf_parser.y"
4036 > #line 1099 "conf_parser.y"
4037      {
4038    if (conf_parser_ctx.pass == 2)
4039 <  {
4040 <    struct split_nuh_item nuh;
4041 <
3914 <    nuh.nuhmask  = yylval.string;
3915 <    nuh.nickptr  = NULL;
3916 <    nuh.userptr  = userbuf;
3917 <    nuh.hostptr  = hostbuf;
3918 <
3919 <    nuh.nicksize = 0;
3920 <    nuh.usersize = sizeof(userbuf);
3921 <    nuh.hostsize = sizeof(hostbuf);
3922 <
3923 <    split_nuh(&nuh);
4039 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4040 > }
4041 >    break;
4042  
4043 <    if (yy_aconf->user == NULL)
4043 >  case 161:
4044 > /* Line 1787 of yacc.c  */
4045 > #line 1105 "conf_parser.y"
4046      {
4047 <      DupString(yy_aconf->user, userbuf);
4048 <      DupString(yy_aconf->host, hostbuf);
4047 >  if (conf_parser_ctx.pass == 2)
4048 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4049 > }
4050 >    break;
4051  
4052 <      yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->addr,
4053 <                                    &yy_aconf->bits);
4054 <    }
3933 <    else
4052 >  case 162:
4053 > /* Line 1787 of yacc.c  */
4054 > #line 1111 "conf_parser.y"
4055      {
4056 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4057 <
3937 <      DupString(yy_tmp->user, userbuf);
3938 <      DupString(yy_tmp->host, hostbuf);
4056 >  if (conf_parser_ctx.pass != 2)
4057 >    break;
4058  
4059 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4060 <    }
4061 <  }
4059 >  if (yylval.number)
4060 >    block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4061 >  else
4062 >    block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4063   }
4064      break;
4065  
4066 <  case 144:
4066 >  case 163:
4067   /* Line 1787 of yacc.c  */
4068 < #line 1022 "conf_parser.y"
4068 > #line 1122 "conf_parser.y"
4069      {
4070    if (conf_parser_ctx.pass == 2)
4071 <  {
3952 <    if (yy_aconf->passwd != NULL)
3953 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
3954 <
3955 <    MyFree(yy_aconf->passwd);
3956 <    DupString(yy_aconf->passwd, yylval.string);
3957 <  }
4071 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
4072   }
4073      break;
4074  
4075 <  case 145:
4075 >  case 164:
4076   /* Line 1787 of yacc.c  */
4077 < #line 1034 "conf_parser.y"
4077 > #line 1128 "conf_parser.y"
4078      {
4079    if (conf_parser_ctx.pass == 2)
4080 <  {
3967 <    if (yylval.number)
3968 <      SetConfEncrypted(yy_aconf);
3969 <    else
3970 <      ClearConfEncrypted(yy_aconf);
3971 <  }
4080 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
4081   }
4082      break;
4083  
4084 <  case 146:
4084 >  case 165:
4085   /* Line 1787 of yacc.c  */
4086 < #line 1045 "conf_parser.y"
4086 > #line 1134 "conf_parser.y"
4087      {
3979 #ifdef HAVE_LIBCRYPTO
4088    if (conf_parser_ctx.pass == 2)
4089 <  {
4090 <    BIO *file;
4089 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4090 > }
4091 >    break;
4092  
4093 <    if (yy_aconf->rsa_public_key != NULL)
4093 >  case 166:
4094 > /* Line 1787 of yacc.c  */
4095 > #line 1140 "conf_parser.y"
4096      {
4097 <      RSA_free(yy_aconf->rsa_public_key);
4098 <      yy_aconf->rsa_public_key = NULL;
4099 <    }
4097 >  if (conf_parser_ctx.pass == 2)
4098 >    block_state.modes.value = 0;
4099 > }
4100 >    break;
4101  
4102 <    if (yy_aconf->rsa_public_key_file != NULL)
4102 >  case 170:
4103 > /* Line 1787 of yacc.c  */
4104 > #line 1147 "conf_parser.y"
4105      {
4106 <      MyFree(yy_aconf->rsa_public_key_file);
4107 <      yy_aconf->rsa_public_key_file = NULL;
4108 <    }
4109 <
3996 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
3997 <    file = BIO_new_file(yylval.string, "r");
4106 >  if (conf_parser_ctx.pass == 2)
4107 >    block_state.modes.value |= UMODE_BOTS;
4108 > }
4109 >    break;
4110  
4111 <    if (file == NULL)
4111 >  case 171:
4112 > /* Line 1787 of yacc.c  */
4113 > #line 1151 "conf_parser.y"
4114      {
4115 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4116 <      break;
4117 <    }
4118 <
4005 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4115 >  if (conf_parser_ctx.pass == 2)
4116 >    block_state.modes.value |= UMODE_CCONN;
4117 > }
4118 >    break;
4119  
4120 <    if (yy_aconf->rsa_public_key == NULL)
4120 >  case 172:
4121 > /* Line 1787 of yacc.c  */
4122 > #line 1155 "conf_parser.y"
4123      {
4124 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4125 <      break;
4011 <    }
4012 <
4013 <    BIO_set_close(file, BIO_CLOSE);
4014 <    BIO_free(file);
4015 <  }
4016 < #endif /* HAVE_LIBCRYPTO */
4124 >  if (conf_parser_ctx.pass == 2)
4125 >    block_state.modes.value |= UMODE_DEAF;
4126   }
4127      break;
4128  
4129 <  case 147:
4129 >  case 173:
4130   /* Line 1787 of yacc.c  */
4131 < #line 1087 "conf_parser.y"
4131 > #line 1159 "conf_parser.y"
4132      {
4133    if (conf_parser_ctx.pass == 2)
4134 <  {
4026 <    MyFree(class_name);
4027 <    DupString(class_name, yylval.string);
4028 <  }
4134 >    block_state.modes.value |= UMODE_DEBUG;
4135   }
4136      break;
4137  
4138 <  case 148:
4138 >  case 174:
4139   /* Line 1787 of yacc.c  */
4140 < #line 1096 "conf_parser.y"
4140 > #line 1163 "conf_parser.y"
4141      {
4142    if (conf_parser_ctx.pass == 2)
4143 <    yy_aconf->modes = 0;
4143 >    block_state.modes.value |= UMODE_FULL;
4144   }
4145      break;
4146  
4147 <  case 152:
4147 >  case 175:
4148   /* Line 1787 of yacc.c  */
4149 < #line 1103 "conf_parser.y"
4149 > #line 1167 "conf_parser.y"
4150      {
4151    if (conf_parser_ctx.pass == 2)
4152 <    yy_aconf->modes |= UMODE_BOTS;
4152 >    block_state.modes.value |= UMODE_HIDDEN;
4153   }
4154      break;
4155  
4156 <  case 153:
4156 >  case 176:
4157   /* Line 1787 of yacc.c  */
4158 < #line 1107 "conf_parser.y"
4158 > #line 1171 "conf_parser.y"
4159      {
4160    if (conf_parser_ctx.pass == 2)
4161 <    yy_aconf->modes |= UMODE_CCONN;
4161 >    block_state.modes.value |= UMODE_SKILL;
4162   }
4163      break;
4164  
4165 <  case 154:
4165 >  case 177:
4166   /* Line 1787 of yacc.c  */
4167 < #line 1111 "conf_parser.y"
4167 > #line 1175 "conf_parser.y"
4168      {
4169    if (conf_parser_ctx.pass == 2)
4170 <    yy_aconf->modes |= UMODE_CCONN_FULL;
4170 >    block_state.modes.value |= UMODE_NCHANGE;
4171   }
4172      break;
4173  
4174 <  case 155:
4174 >  case 178:
4175   /* Line 1787 of yacc.c  */
4176 < #line 1115 "conf_parser.y"
4176 > #line 1179 "conf_parser.y"
4177      {
4178    if (conf_parser_ctx.pass == 2)
4179 <    yy_aconf->modes |= UMODE_DEAF;
4179 >    block_state.modes.value |= UMODE_REJ;
4180   }
4181      break;
4182  
4183 <  case 156:
4183 >  case 179:
4184   /* Line 1787 of yacc.c  */
4185 < #line 1119 "conf_parser.y"
4185 > #line 1183 "conf_parser.y"
4186      {
4187    if (conf_parser_ctx.pass == 2)
4188 <    yy_aconf->modes |= UMODE_DEBUG;
4188 >    block_state.modes.value |= UMODE_UNAUTH;
4189   }
4190      break;
4191  
4192 <  case 157:
4192 >  case 180:
4193   /* Line 1787 of yacc.c  */
4194 < #line 1123 "conf_parser.y"
4194 > #line 1187 "conf_parser.y"
4195      {
4196    if (conf_parser_ctx.pass == 2)
4197 <    yy_aconf->modes |= UMODE_FULL;
4197 >    block_state.modes.value |= UMODE_SPY;
4198   }
4199      break;
4200  
4201 <  case 158:
4201 >  case 181:
4202   /* Line 1787 of yacc.c  */
4203 < #line 1127 "conf_parser.y"
4203 > #line 1191 "conf_parser.y"
4204      {
4205    if (conf_parser_ctx.pass == 2)
4206 <    yy_aconf->modes |= UMODE_HIDDEN;
4206 >    block_state.modes.value |= UMODE_EXTERNAL;
4207   }
4208      break;
4209  
4210 <  case 159:
4210 >  case 182:
4211   /* Line 1787 of yacc.c  */
4212 < #line 1131 "conf_parser.y"
4212 > #line 1195 "conf_parser.y"
4213      {
4214    if (conf_parser_ctx.pass == 2)
4215 <    yy_aconf->modes |= UMODE_SKILL;
4215 >    block_state.modes.value |= UMODE_OPERWALL;
4216   }
4217      break;
4218  
4219 <  case 160:
4219 >  case 183:
4220   /* Line 1787 of yacc.c  */
4221 < #line 1135 "conf_parser.y"
4221 > #line 1199 "conf_parser.y"
4222      {
4223    if (conf_parser_ctx.pass == 2)
4224 <    yy_aconf->modes |= UMODE_NCHANGE;
4224 >    block_state.modes.value |= UMODE_SERVNOTICE;
4225   }
4226      break;
4227  
4228 <  case 161:
4228 >  case 184:
4229   /* Line 1787 of yacc.c  */
4230 < #line 1139 "conf_parser.y"
4230 > #line 1203 "conf_parser.y"
4231      {
4232    if (conf_parser_ctx.pass == 2)
4233 <    yy_aconf->modes |= UMODE_REJ;
4233 >    block_state.modes.value |= UMODE_INVISIBLE;
4234   }
4235      break;
4236  
4237 <  case 162:
4237 >  case 185:
4238   /* Line 1787 of yacc.c  */
4239 < #line 1143 "conf_parser.y"
4239 > #line 1207 "conf_parser.y"
4240      {
4241    if (conf_parser_ctx.pass == 2)
4242 <    yy_aconf->modes |= UMODE_UNAUTH;
4242 >    block_state.modes.value |= UMODE_WALLOP;
4243   }
4244      break;
4245  
4246 <  case 163:
4246 >  case 186:
4247   /* Line 1787 of yacc.c  */
4248 < #line 1147 "conf_parser.y"
4248 > #line 1211 "conf_parser.y"
4249      {
4250    if (conf_parser_ctx.pass == 2)
4251 <    yy_aconf->modes |= UMODE_SPY;
4251 >    block_state.modes.value |= UMODE_SOFTCALLERID;
4252   }
4253      break;
4254  
4255 <  case 164:
4255 >  case 187:
4256   /* Line 1787 of yacc.c  */
4257 < #line 1151 "conf_parser.y"
4257 > #line 1215 "conf_parser.y"
4258      {
4259    if (conf_parser_ctx.pass == 2)
4260 <    yy_aconf->modes |= UMODE_EXTERNAL;
4260 >    block_state.modes.value |= UMODE_CALLERID;
4261   }
4262      break;
4263  
4264 <  case 165:
4264 >  case 188:
4265   /* Line 1787 of yacc.c  */
4266 < #line 1155 "conf_parser.y"
4266 > #line 1219 "conf_parser.y"
4267      {
4268    if (conf_parser_ctx.pass == 2)
4269 <    yy_aconf->modes |= UMODE_OPERWALL;
4269 >    block_state.modes.value |= UMODE_LOCOPS;
4270   }
4271      break;
4272  
4273 <  case 166:
4273 >  case 189:
4274   /* Line 1787 of yacc.c  */
4275 < #line 1159 "conf_parser.y"
4275 > #line 1223 "conf_parser.y"
4276      {
4277    if (conf_parser_ctx.pass == 2)
4278 <    yy_aconf->modes |= UMODE_SERVNOTICE;
4278 >    block_state.modes.value |= UMODE_REGONLY;
4279   }
4280      break;
4281  
4282 <  case 167:
4282 >  case 190:
4283   /* Line 1787 of yacc.c  */
4284 < #line 1163 "conf_parser.y"
4284 > #line 1227 "conf_parser.y"
4285      {
4286    if (conf_parser_ctx.pass == 2)
4287 <    yy_aconf->modes |= UMODE_INVISIBLE;
4287 >    block_state.modes.value |= UMODE_FARCONNECT;
4288   }
4289      break;
4290  
4291 <  case 168:
4291 >  case 191:
4292   /* Line 1787 of yacc.c  */
4293 < #line 1167 "conf_parser.y"
4293 > #line 1233 "conf_parser.y"
4294      {
4295    if (conf_parser_ctx.pass == 2)
4296 <    yy_aconf->modes |= UMODE_WALLOP;
4296 >    block_state.port.value = 0;
4297   }
4298      break;
4299  
4300 <  case 169:
4300 >  case 195:
4301   /* Line 1787 of yacc.c  */
4302 < #line 1171 "conf_parser.y"
4302 > #line 1240 "conf_parser.y"
4303      {
4304    if (conf_parser_ctx.pass == 2)
4305 <    yy_aconf->modes |= UMODE_SOFTCALLERID;
4305 >    block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4306   }
4307      break;
4308  
4309 <  case 170:
4309 >  case 196:
4310   /* Line 1787 of yacc.c  */
4311 < #line 1175 "conf_parser.y"
4311 > #line 1244 "conf_parser.y"
4312      {
4313    if (conf_parser_ctx.pass == 2)
4314 <    yy_aconf->modes |= UMODE_CALLERID;
4314 >    block_state.port.value |= OPER_FLAG_KILL;
4315   }
4316      break;
4317  
4318 <  case 171:
4318 >  case 197:
4319   /* Line 1787 of yacc.c  */
4320 < #line 1179 "conf_parser.y"
4320 > #line 1248 "conf_parser.y"
4321      {
4322    if (conf_parser_ctx.pass == 2)
4323 <    yy_aconf->modes |= UMODE_LOCOPS;
4323 >    block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4324   }
4325      break;
4326  
4327 <  case 172:
4327 >  case 198:
4328   /* Line 1787 of yacc.c  */
4329 < #line 1185 "conf_parser.y"
4329 > #line 1252 "conf_parser.y"
4330      {
4331    if (conf_parser_ctx.pass == 2)
4332 <    yy_aconf->port = 0;
4332 >    block_state.port.value |= OPER_FLAG_CONNECT;
4333   }
4334      break;
4335  
4336 <  case 176:
4336 >  case 199:
4337   /* Line 1787 of yacc.c  */
4338 < #line 1192 "conf_parser.y"
4338 > #line 1256 "conf_parser.y"
4339      {
4340    if (conf_parser_ctx.pass == 2)
4341 <    yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4341 >    block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4342   }
4343      break;
4344  
4345 <  case 177:
4345 >  case 200:
4346   /* Line 1787 of yacc.c  */
4347 < #line 1196 "conf_parser.y"
4347 > #line 1260 "conf_parser.y"
4348      {
4349    if (conf_parser_ctx.pass == 2)
4350 <    yy_aconf->port |= OPER_FLAG_REMOTE;
4350 >    block_state.port.value |= OPER_FLAG_SQUIT;
4351   }
4352      break;
4353  
4354 <  case 178:
4354 >  case 201:
4355   /* Line 1787 of yacc.c  */
4356 < #line 1200 "conf_parser.y"
4356 > #line 1264 "conf_parser.y"
4357      {
4358    if (conf_parser_ctx.pass == 2)
4359 <    yy_aconf->port |= OPER_FLAG_K;
4359 >    block_state.port.value |= OPER_FLAG_K;
4360   }
4361      break;
4362  
4363 <  case 179:
4363 >  case 202:
4364   /* Line 1787 of yacc.c  */
4365 < #line 1204 "conf_parser.y"
4365 > #line 1268 "conf_parser.y"
4366      {
4367    if (conf_parser_ctx.pass == 2)
4368 <    yy_aconf->port |= OPER_FLAG_UNKLINE;
4368 >    block_state.port.value |= OPER_FLAG_UNKLINE;
4369   }
4370      break;
4371  
4372 <  case 180:
4372 >  case 203:
4373   /* Line 1787 of yacc.c  */
4374 < #line 1208 "conf_parser.y"
4374 > #line 1272 "conf_parser.y"
4375      {
4376    if (conf_parser_ctx.pass == 2)
4377 <    yy_aconf->port |= OPER_FLAG_DLINE;
4377 >    block_state.port.value |= OPER_FLAG_DLINE;
4378   }
4379      break;
4380  
4381 <  case 181:
4381 >  case 204:
4382   /* Line 1787 of yacc.c  */
4383 < #line 1212 "conf_parser.y"
4383 > #line 1276 "conf_parser.y"
4384      {
4385    if (conf_parser_ctx.pass == 2)
4386 <    yy_aconf->port |= OPER_FLAG_UNDLINE;
4386 >    block_state.port.value |= OPER_FLAG_UNDLINE;
4387   }
4388      break;
4389  
4390 <  case 182:
4390 >  case 205:
4391   /* Line 1787 of yacc.c  */
4392 < #line 1216 "conf_parser.y"
4392 > #line 1280 "conf_parser.y"
4393      {
4394    if (conf_parser_ctx.pass == 2)
4395 <    yy_aconf->port |= OPER_FLAG_X;
4395 >    block_state.port.value |= OPER_FLAG_X;
4396   }
4397      break;
4398  
4399 <  case 183:
4399 >  case 206:
4400   /* Line 1787 of yacc.c  */
4401 < #line 1220 "conf_parser.y"
4401 > #line 1284 "conf_parser.y"
4402      {
4403    if (conf_parser_ctx.pass == 2)
4404 <    yy_aconf->port |= OPER_FLAG_GLINE;
4404 >    block_state.port.value |= OPER_FLAG_GLINE;
4405   }
4406      break;
4407  
4408 <  case 184:
4408 >  case 207:
4409   /* Line 1787 of yacc.c  */
4410 < #line 1224 "conf_parser.y"
4410 > #line 1288 "conf_parser.y"
4411      {
4412    if (conf_parser_ctx.pass == 2)
4413 <    yy_aconf->port |= OPER_FLAG_DIE;
4413 >    block_state.port.value |= OPER_FLAG_DIE;
4414   }
4415      break;
4416  
4417 <  case 185:
4417 >  case 208:
4418   /* Line 1787 of yacc.c  */
4419 < #line 1228 "conf_parser.y"
4419 > #line 1292 "conf_parser.y"
4420      {
4421    if (conf_parser_ctx.pass == 2)
4422 <    yy_aconf->port |= OPER_FLAG_RESTART;
4422 >    block_state.port.value |= OPER_FLAG_RESTART;
4423   }
4424      break;
4425  
4426 <  case 186:
4426 >  case 209:
4427   /* Line 1787 of yacc.c  */
4428 < #line 1232 "conf_parser.y"
4428 > #line 1296 "conf_parser.y"
4429      {
4430    if (conf_parser_ctx.pass == 2)
4431 <    yy_aconf->port |= OPER_FLAG_REHASH;
4431 >    block_state.port.value |= OPER_FLAG_REHASH;
4432   }
4433      break;
4434  
4435 <  case 187:
4435 >  case 210:
4436   /* Line 1787 of yacc.c  */
4437 < #line 1236 "conf_parser.y"
4437 > #line 1300 "conf_parser.y"
4438      {
4439    if (conf_parser_ctx.pass == 2)
4440 <    yy_aconf->port |= OPER_FLAG_ADMIN;
4440 >    block_state.port.value |= OPER_FLAG_ADMIN;
4441   }
4442      break;
4443  
4444 <  case 188:
4444 >  case 211:
4445   /* Line 1787 of yacc.c  */
4446 < #line 1240 "conf_parser.y"
4446 > #line 1304 "conf_parser.y"
4447      {
4448    if (conf_parser_ctx.pass == 2)
4449 <    yy_aconf->port |= OPER_FLAG_N;
4449 >    block_state.port.value |= OPER_FLAG_OPERWALL;
4450   }
4451      break;
4452  
4453 <  case 189:
4453 >  case 212:
4454   /* Line 1787 of yacc.c  */
4455 < #line 1244 "conf_parser.y"
4455 > #line 1308 "conf_parser.y"
4456      {
4457    if (conf_parser_ctx.pass == 2)
4458 <    yy_aconf->port |= OPER_FLAG_OPERWALL;
4458 >    block_state.port.value |= OPER_FLAG_GLOBOPS;
4459   }
4460      break;
4461  
4462 <  case 190:
4462 >  case 213:
4463   /* Line 1787 of yacc.c  */
4464 < #line 1248 "conf_parser.y"
4464 > #line 1312 "conf_parser.y"
4465      {
4466    if (conf_parser_ctx.pass == 2)
4467 <    yy_aconf->port |= OPER_FLAG_GLOBOPS;
4467 >    block_state.port.value |= OPER_FLAG_WALLOPS;
4468   }
4469      break;
4470  
4471 <  case 191:
4471 >  case 214:
4472   /* Line 1787 of yacc.c  */
4473 < #line 1252 "conf_parser.y"
4473 > #line 1316 "conf_parser.y"
4474      {
4475    if (conf_parser_ctx.pass == 2)
4476 <    yy_aconf->port |= OPER_FLAG_OPER_SPY;
4476 >    block_state.port.value |= OPER_FLAG_LOCOPS;
4477   }
4478      break;
4479  
4480 <  case 192:
4480 >  case 215:
4481   /* Line 1787 of yacc.c  */
4482 < #line 1256 "conf_parser.y"
4482 > #line 1320 "conf_parser.y"
4483      {
4484    if (conf_parser_ctx.pass == 2)
4485 <    yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4485 >    block_state.port.value |= OPER_FLAG_REMOTEBAN;
4486   }
4487      break;
4488  
4489 <  case 193:
4489 >  case 216:
4490   /* Line 1787 of yacc.c  */
4491 < #line 1260 "conf_parser.y"
4491 > #line 1324 "conf_parser.y"
4492      {
4493    if (conf_parser_ctx.pass == 2)
4494 <    yy_aconf->port |= OPER_FLAG_SET;
4494 >    block_state.port.value |= OPER_FLAG_SET;
4495   }
4496      break;
4497  
4498 <  case 194:
4498 >  case 217:
4499   /* Line 1787 of yacc.c  */
4500 < #line 1264 "conf_parser.y"
4500 > #line 1328 "conf_parser.y"
4501      {
4502    if (conf_parser_ctx.pass == 2)
4503 <    yy_aconf->port |= OPER_FLAG_MODULE;
4503 >    block_state.port.value |= OPER_FLAG_MODULE;
4504   }
4505      break;
4506  
4507 <  case 195:
4507 >  case 218:
4508   /* Line 1787 of yacc.c  */
4509 < #line 1274 "conf_parser.y"
4509 > #line 1338 "conf_parser.y"
4510      {
4511 <  if (conf_parser_ctx.pass == 1)
4512 <  {
4513 <    yy_conf = make_conf_item(CLASS_TYPE);
4514 <    yy_class = map_to_conf(yy_conf);
4515 <  }
4511 >  if (conf_parser_ctx.pass != 1)
4512 >    break;
4513 >
4514 >  reset_block_state();
4515 >
4516 >  block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4517 >  block_state.con_freq.value  = DEFAULT_CONNECTFREQUENCY;
4518 >  block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4519 >  block_state.max_sendq.value = DEFAULT_SENDQ;
4520 >  block_state.max_recvq.value = DEFAULT_RECVQ;
4521   }
4522      break;
4523  
4524 <  case 196:
4524 >  case 219:
4525   /* Line 1787 of yacc.c  */
4526 < #line 1281 "conf_parser.y"
4526 > #line 1350 "conf_parser.y"
4527      {
4528 <  if (conf_parser_ctx.pass == 1)
4418 <  {
4419 <    struct ConfItem *cconf = NULL;
4420 <    struct ClassItem *class = NULL;
4528 >  struct ClassItem *class = NULL;
4529  
4530 <    if (yy_class_name == NULL)
4531 <      delete_conf_item(yy_conf);
4424 <    else
4425 <    {
4426 <      cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
4530 >  if (conf_parser_ctx.pass != 1)
4531 >    break;
4532  
4533 <      if (cconf != NULL)                /* The class existed already */
4534 <      {
4430 <        int user_count = 0;
4533 >  if (!block_state.class.buf[0])
4534 >    break;
4535  
4536 <        rebuild_cidr_class(cconf, yy_class);
4536 >  if (!(class = class_find(block_state.class.buf, 0)))
4537 >    class = class_make();
4538  
4539 <        class = map_to_conf(cconf);
4539 >  class->active = 1;
4540 >  MyFree(class->name);
4541 >  class->name = xstrdup(block_state.class.buf);
4542 >  class->ping_freq = block_state.ping_freq.value;
4543 >  class->max_perip = block_state.max_perip.value;
4544 >  class->con_freq = block_state.con_freq.value;
4545 >  class->max_total = block_state.max_total.value;
4546 >  class->max_global = block_state.max_global.value;
4547 >  class->max_local = block_state.max_local.value;
4548 >  class->max_ident = block_state.max_ident.value;
4549 >  class->max_sendq = block_state.max_sendq.value;
4550 >  class->max_recvq = block_state.max_recvq.value;
4551  
4552 <        user_count = class->curr_user_count;
4553 <        memcpy(class, yy_class, sizeof(*class));
4554 <        class->curr_user_count = user_count;
4555 <        class->active = 1;
4552 >  if (block_state.min_idle.value > block_state.max_idle.value)
4553 >  {
4554 >    block_state.min_idle.value = 0;
4555 >    block_state.max_idle.value = 0;
4556 >    block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4557 >  }
4558  
4559 <        delete_conf_item(yy_conf);
4559 >  class->flags = block_state.flags.value;
4560 >  class->min_idle = block_state.min_idle.value;
4561 >  class->max_idle = block_state.max_idle.value;
4562  
4563 <        MyFree(cconf->name);            /* Allows case change of class name */
4564 <        cconf->name = yy_class_name;
4565 <      }
4566 <      else      /* Brand new class */
4567 <      {
4568 <        MyFree(yy_conf->name);          /* just in case it was allocated */
4449 <        yy_conf->name = yy_class_name;
4450 <        yy_class->active = 1;
4451 <      }
4452 <    }
4563 >  if (class->number_per_cidr && block_state.number_per_cidr.value)
4564 >    if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4565 >        (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4566 >      if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4567 >          (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4568 >        rebuild_cidr_list(class);
4569  
4570 <    yy_class_name = NULL;
4571 <  }
4570 >  class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4571 >  class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4572 >  class->number_per_cidr = block_state.number_per_cidr.value;
4573   }
4574      break;
4575  
4576 <  case 214:
4576 >  case 239:
4577   /* Line 1787 of yacc.c  */
4578 < #line 1339 "conf_parser.y"
4578 > #line 1416 "conf_parser.y"
4579      {
4580    if (conf_parser_ctx.pass == 1)
4581 <  {
4465 <    MyFree(yy_class_name);
4466 <    DupString(yy_class_name, yylval.string);
4467 <  }
4581 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4582   }
4583      break;
4584  
4585 <  case 215:
4585 >  case 240:
4586   /* Line 1787 of yacc.c  */
4587 < #line 1348 "conf_parser.y"
4587 > #line 1422 "conf_parser.y"
4588      {
4589    if (conf_parser_ctx.pass == 1)
4590 <    yy_class->ping_freq = (yyvsp[(3) - (4)].number);
4590 >    block_state.ping_freq.value = (yyvsp[(3) - (4)].number);
4591   }
4592      break;
4593  
4594 <  case 216:
4594 >  case 241:
4595   /* Line 1787 of yacc.c  */
4596 < #line 1354 "conf_parser.y"
4596 > #line 1428 "conf_parser.y"
4597      {
4598    if (conf_parser_ctx.pass == 1)
4599 <    yy_class->ping_warning = (yyvsp[(3) - (4)].number);
4599 >    block_state.max_perip.value = (yyvsp[(3) - (4)].number);
4600   }
4601      break;
4602  
4603 <  case 217:
4603 >  case 242:
4604   /* Line 1787 of yacc.c  */
4605 < #line 1360 "conf_parser.y"
4605 > #line 1434 "conf_parser.y"
4606      {
4607    if (conf_parser_ctx.pass == 1)
4608 <    yy_class->max_perip = (yyvsp[(3) - (4)].number);
4608 >    block_state.con_freq.value = (yyvsp[(3) - (4)].number);
4609   }
4610      break;
4611  
4612 <  case 218:
4612 >  case 243:
4613   /* Line 1787 of yacc.c  */
4614 < #line 1366 "conf_parser.y"
4614 > #line 1440 "conf_parser.y"
4615      {
4616    if (conf_parser_ctx.pass == 1)
4617 <    yy_class->con_freq = (yyvsp[(3) - (4)].number);
4617 >    block_state.max_total.value = (yyvsp[(3) - (4)].number);
4618   }
4619      break;
4620  
4621 <  case 219:
4621 >  case 244:
4622   /* Line 1787 of yacc.c  */
4623 < #line 1372 "conf_parser.y"
4623 > #line 1446 "conf_parser.y"
4624      {
4625    if (conf_parser_ctx.pass == 1)
4626 <    yy_class->max_total = (yyvsp[(3) - (4)].number);
4626 >    block_state.max_global.value = (yyvsp[(3) - (4)].number);
4627   }
4628      break;
4629  
4630 <  case 220:
4630 >  case 245:
4631   /* Line 1787 of yacc.c  */
4632 < #line 1378 "conf_parser.y"
4632 > #line 1452 "conf_parser.y"
4633      {
4634    if (conf_parser_ctx.pass == 1)
4635 <    yy_class->max_global = (yyvsp[(3) - (4)].number);
4635 >    block_state.max_local.value = (yyvsp[(3) - (4)].number);
4636   }
4637      break;
4638  
4639 <  case 221:
4639 >  case 246:
4640   /* Line 1787 of yacc.c  */
4641 < #line 1384 "conf_parser.y"
4641 > #line 1458 "conf_parser.y"
4642      {
4643    if (conf_parser_ctx.pass == 1)
4644 <    yy_class->max_local = (yyvsp[(3) - (4)].number);
4644 >    block_state.max_ident.value = (yyvsp[(3) - (4)].number);
4645   }
4646      break;
4647  
4648 <  case 222:
4648 >  case 247:
4649   /* Line 1787 of yacc.c  */
4650 < #line 1390 "conf_parser.y"
4650 > #line 1464 "conf_parser.y"
4651      {
4652    if (conf_parser_ctx.pass == 1)
4653 <    yy_class->max_ident = (yyvsp[(3) - (4)].number);
4653 >    block_state.max_sendq.value = (yyvsp[(3) - (4)].number);
4654   }
4655      break;
4656  
4657 <  case 223:
4657 >  case 248:
4658   /* Line 1787 of yacc.c  */
4659 < #line 1396 "conf_parser.y"
4659 > #line 1470 "conf_parser.y"
4660      {
4661    if (conf_parser_ctx.pass == 1)
4662 <    yy_class->max_sendq = (yyvsp[(3) - (4)].number);
4662 >    if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4663 >      block_state.max_recvq.value = (yyvsp[(3) - (4)].number);
4664   }
4665      break;
4666  
4667 <  case 224:
4667 >  case 249:
4668   /* Line 1787 of yacc.c  */
4669 < #line 1402 "conf_parser.y"
4669 > #line 1477 "conf_parser.y"
4670      {
4671    if (conf_parser_ctx.pass == 1)
4672 <    if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4558 <      yy_class->max_recvq = (yyvsp[(3) - (4)].number);
4672 >    block_state.cidr_bitlen_ipv4.value = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4673   }
4674      break;
4675  
4676 <  case 225:
4676 >  case 250:
4677   /* Line 1787 of yacc.c  */
4678 < #line 1409 "conf_parser.y"
4678 > #line 1483 "conf_parser.y"
4679      {
4680    if (conf_parser_ctx.pass == 1)
4681 <    yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4681 >    block_state.cidr_bitlen_ipv6.value = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4682   }
4683      break;
4684  
4685 <  case 226:
4685 >  case 251:
4686   /* Line 1787 of yacc.c  */
4687 < #line 1415 "conf_parser.y"
4687 > #line 1489 "conf_parser.y"
4688      {
4689    if (conf_parser_ctx.pass == 1)
4690 <    yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4690 >    block_state.number_per_cidr.value = (yyvsp[(3) - (4)].number);
4691   }
4692      break;
4693  
4694 <  case 227:
4694 >  case 252:
4695 > /* Line 1787 of yacc.c  */
4696 > #line 1495 "conf_parser.y"
4697 >    {
4698 >  if (conf_parser_ctx.pass != 1)
4699 >    break;
4700 >
4701 >  block_state.min_idle.value = (yyvsp[(3) - (4)].number);
4702 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4703 > }
4704 >    break;
4705 >
4706 >  case 253:
4707   /* Line 1787 of yacc.c  */
4708 < #line 1421 "conf_parser.y"
4708 > #line 1504 "conf_parser.y"
4709 >    {
4710 >  if (conf_parser_ctx.pass != 1)
4711 >    break;
4712 >
4713 >  block_state.max_idle.value = (yyvsp[(3) - (4)].number);
4714 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4715 > }
4716 >    break;
4717 >
4718 >  case 254:
4719 > /* Line 1787 of yacc.c  */
4720 > #line 1513 "conf_parser.y"
4721      {
4722    if (conf_parser_ctx.pass == 1)
4723 <    yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
4723 >    block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4724   }
4725      break;
4726  
4727 <  case 228:
4727 >  case 258:
4728   /* Line 1787 of yacc.c  */
4729 < #line 1430 "conf_parser.y"
4729 > #line 1520 "conf_parser.y"
4730      {
4731 <  if (conf_parser_ctx.pass == 2)
4732 <  {
4595 <    listener_address = NULL;
4596 <    listener_flags = 0;
4597 <  }
4731 >  if (conf_parser_ctx.pass == 1)
4732 >    block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4733   }
4734      break;
4735  
4736 <  case 229:
4736 >  case 259:
4737   /* Line 1787 of yacc.c  */
4738 < #line 1437 "conf_parser.y"
4738 > #line 1524 "conf_parser.y"
4739 >    {
4740 >  if (conf_parser_ctx.pass == 1)
4741 >    block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4742 > }
4743 >    break;
4744 >
4745 >  case 260:
4746 > /* Line 1787 of yacc.c  */
4747 > #line 1534 "conf_parser.y"
4748      {
4749    if (conf_parser_ctx.pass == 2)
4750 <  {
4607 <    MyFree(listener_address);
4608 <    listener_address = NULL;
4609 <  }
4750 >    reset_block_state();
4751   }
4752      break;
4753  
4754 <  case 230:
4754 >  case 262:
4755   /* Line 1787 of yacc.c  */
4756 < #line 1446 "conf_parser.y"
4756 > #line 1540 "conf_parser.y"
4757      {
4758 <  listener_flags = 0;
4758 >  block_state.flags.value = 0;
4759   }
4760      break;
4761  
4762 <  case 234:
4762 >  case 266:
4763   /* Line 1787 of yacc.c  */
4764 < #line 1452 "conf_parser.y"
4764 > #line 1546 "conf_parser.y"
4765      {
4766    if (conf_parser_ctx.pass == 2)
4767 <    listener_flags |= LISTENER_SSL;
4767 >    block_state.flags.value |= LISTENER_SSL;
4768   }
4769      break;
4770  
4771 <  case 235:
4771 >  case 267:
4772   /* Line 1787 of yacc.c  */
4773 < #line 1456 "conf_parser.y"
4773 > #line 1550 "conf_parser.y"
4774      {
4775    if (conf_parser_ctx.pass == 2)
4776 <    listener_flags |= LISTENER_HIDDEN;
4776 >    block_state.flags.value |= LISTENER_HIDDEN;
4777   }
4778      break;
4779  
4780 <  case 236:
4780 >  case 268:
4781   /* Line 1787 of yacc.c  */
4782 < #line 1460 "conf_parser.y"
4782 > #line 1554 "conf_parser.y"
4783      {
4784    if (conf_parser_ctx.pass == 2)
4785 <    listener_flags |= LISTENER_SERVER;
4785 >   block_state.flags.value |= LISTENER_SERVER;
4786   }
4787      break;
4788  
4789 <  case 244:
4789 >  case 276:
4790   /* Line 1787 of yacc.c  */
4791 < #line 1470 "conf_parser.y"
4792 <    { listener_flags = 0; }
4791 > #line 1562 "conf_parser.y"
4792 >    { block_state.flags.value = 0; }
4793      break;
4794  
4795 <  case 248:
4795 >  case 280:
4796   /* Line 1787 of yacc.c  */
4797 < #line 1475 "conf_parser.y"
4797 > #line 1567 "conf_parser.y"
4798      {
4799    if (conf_parser_ctx.pass == 2)
4800    {
4801 <    if ((listener_flags & LISTENER_SSL))
4801 >    if (block_state.flags.value & LISTENER_SSL)
4802   #ifdef HAVE_LIBCRYPTO
4803        if (!ServerInfo.server_ctx)
4804   #endif
4805        {
4806 <        yyerror("SSL not available - port closed");
4806 >        conf_error_report("SSL not available - port closed");
4807          break;
4808        }
4809 <    add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4809 >    add_listener((yyvsp[(1) - (1)].number), block_state.addr.buf, block_state.flags.value);
4810    }
4811   }
4812      break;
4813  
4814 <  case 249:
4814 >  case 281:
4815   /* Line 1787 of yacc.c  */
4816 < #line 1489 "conf_parser.y"
4816 > #line 1581 "conf_parser.y"
4817      {
4818    if (conf_parser_ctx.pass == 2)
4819    {
4820      int i;
4821  
4822 <    if ((listener_flags & LISTENER_SSL))
4822 >    if (block_state.flags.value & LISTENER_SSL)
4823   #ifdef HAVE_LIBCRYPTO
4824        if (!ServerInfo.server_ctx)
4825   #endif
4826        {
4827 <        yyerror("SSL not available - port closed");
4827 >        conf_error_report("SSL not available - port closed");
4828          break;
4829        }
4830  
4831      for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4832 <      add_listener(i, listener_address, listener_flags);
4832 >      add_listener(i, block_state.addr.buf, block_state.flags.value);
4833    }
4834   }
4835      break;
4836  
4837 <  case 250:
4837 >  case 282:
4838   /* Line 1787 of yacc.c  */
4839 < #line 1509 "conf_parser.y"
4839 > #line 1601 "conf_parser.y"
4840      {
4841    if (conf_parser_ctx.pass == 2)
4842 <  {
4702 <    MyFree(listener_address);
4703 <    DupString(listener_address, yylval.string);
4704 <  }
4842 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4843   }
4844      break;
4845  
4846 <  case 251:
4846 >  case 283:
4847   /* Line 1787 of yacc.c  */
4848 < #line 1518 "conf_parser.y"
4848 > #line 1607 "conf_parser.y"
4849      {
4850    if (conf_parser_ctx.pass == 2)
4851 <  {
4714 <    MyFree(listener_address);
4715 <    DupString(listener_address, yylval.string);
4716 <  }
4851 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4852   }
4853      break;
4854  
4855 <  case 252:
4855 >  case 284:
4856   /* Line 1787 of yacc.c  */
4857 < #line 1530 "conf_parser.y"
4857 > #line 1616 "conf_parser.y"
4858      {
4859    if (conf_parser_ctx.pass == 2)
4860 <  {
4726 <    yy_conf = make_conf_item(CLIENT_TYPE);
4727 <    yy_aconf = map_to_conf(yy_conf);
4728 <  }
4729 <  else
4730 <  {
4731 <    MyFree(class_name);
4732 <    class_name = NULL;
4733 <  }
4860 >    reset_block_state();
4861   }
4862      break;
4863  
4864 <  case 253:
4864 >  case 285:
4865   /* Line 1787 of yacc.c  */
4866 < #line 1542 "conf_parser.y"
4740 <    {
4741 <  if (conf_parser_ctx.pass == 2)
4742 <  {
4743 <    struct CollectItem *yy_tmp = NULL;
4744 <    dlink_node *ptr = NULL, *next_ptr = NULL;
4745 <
4746 <    if (yy_aconf->user && yy_aconf->host)
4747 <    {
4748 <      conf_add_class_to_conf(yy_conf, class_name);
4749 <      add_conf_by_address(CONF_CLIENT, yy_aconf);
4750 <    }
4751 <    else
4752 <      delete_conf_item(yy_conf);
4753 <
4754 <    /* copy over settings from first struct */
4755 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4866 > #line 1620 "conf_parser.y"
4867      {
4868 <      struct AccessItem *new_aconf;
4758 <      struct ConfItem *new_conf;
4759 <
4760 <      new_conf = make_conf_item(CLIENT_TYPE);
4761 <      new_aconf = map_to_conf(new_conf);
4762 <
4763 <      yy_tmp = ptr->data;
4764 <
4765 <      assert(yy_tmp->user && yy_tmp->host);
4868 >  dlink_node *ptr = NULL;
4869  
4870 <      if (yy_aconf->passwd != NULL)
4768 <        DupString(new_aconf->passwd, yy_aconf->passwd);
4769 <      if (yy_conf->name != NULL)
4770 <        DupString(new_conf->name, yy_conf->name);
4771 <      if (yy_aconf->passwd != NULL)
4772 <        DupString(new_aconf->passwd, yy_aconf->passwd);
4773 <
4774 <      new_aconf->flags = yy_aconf->flags;
4775 <      new_aconf->port  = yy_aconf->port;
4776 <
4777 <      DupString(new_aconf->user, yy_tmp->user);
4778 <      collapse(new_aconf->user);
4779 <
4780 <      DupString(new_aconf->host, yy_tmp->host);
4781 <      collapse(new_aconf->host);
4782 <
4783 <      conf_add_class_to_conf(new_conf, class_name);
4784 <      add_conf_by_address(CONF_CLIENT, new_aconf);
4785 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
4786 <      free_collect_item(yy_tmp);
4787 <    }
4788 <
4789 <    MyFree(class_name);
4790 <    class_name = NULL;
4791 <    yy_conf = NULL;
4792 <    yy_aconf = NULL;
4793 <  }
4794 < }
4870 >  if (conf_parser_ctx.pass != 2)
4871      break;
4872  
4873 <  case 265:
4798 < /* Line 1787 of yacc.c  */
4799 < #line 1604 "conf_parser.y"
4800 <    {
4801 <  if (conf_parser_ctx.pass == 2)
4873 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
4874    {
4875 <    struct CollectItem *yy_tmp = NULL;
4875 >    struct MaskItem *conf = NULL;
4876      struct split_nuh_item nuh;
4877  
4878 <    nuh.nuhmask  = yylval.string;
4878 >    nuh.nuhmask  = ptr->data;
4879      nuh.nickptr  = NULL;
4880 <    nuh.userptr  = userbuf;
4881 <    nuh.hostptr  = hostbuf;
4810 <
4880 >    nuh.userptr  = block_state.user.buf;
4881 >    nuh.hostptr  = block_state.host.buf;
4882      nuh.nicksize = 0;
4883 <    nuh.usersize = sizeof(userbuf);
4884 <    nuh.hostsize = sizeof(hostbuf);
4814 <
4883 >    nuh.usersize = sizeof(block_state.user.buf);
4884 >    nuh.hostsize = sizeof(block_state.host.buf);
4885      split_nuh(&nuh);
4886  
4887 <    if (yy_aconf->user == NULL)
4888 <    {
4889 <      DupString(yy_aconf->user, userbuf);
4820 <      DupString(yy_aconf->host, hostbuf);
4821 <    }
4822 <    else
4823 <    {
4824 <      yy_tmp = MyMalloc(sizeof(struct CollectItem));
4887 >    conf        = conf_make(CONF_CLIENT);
4888 >    conf->user  = xstrdup(block_state.user.buf);
4889 >    conf->host  = xstrdup(block_state.host.buf);
4890  
4891 <      DupString(yy_tmp->user, userbuf);
4892 <      DupString(yy_tmp->host, hostbuf);
4891 >    if (block_state.rpass.buf[0])
4892 >      conf->passwd = xstrdup(block_state.rpass.buf);
4893 >    if (block_state.name.buf[0])
4894 >      conf->name = xstrdup(block_state.name.buf);
4895  
4896 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4897 <    }
4896 >    conf->flags = block_state.flags.value;
4897 >    conf->port  = block_state.port.value;
4898 >
4899 >    conf_add_class_to_conf(conf, block_state.class.buf);
4900 >    add_conf_by_address(CONF_CLIENT, conf);
4901    }
4902   }
4903      break;
4904  
4905 <  case 266:
4905 >  case 297:
4906   /* Line 1787 of yacc.c  */
4907 < #line 1639 "conf_parser.y"
4907 > #line 1663 "conf_parser.y"
4908      {
4909    if (conf_parser_ctx.pass == 2)
4910 <  {
4911 <    /* be paranoid */
4912 <    if (yy_aconf->passwd != NULL)
4843 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4910 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4911 > }
4912 >    break;
4913  
4914 <    MyFree(yy_aconf->passwd);
4915 <    DupString(yy_aconf->passwd, yylval.string);
4916 <  }
4914 >  case 298:
4915 > /* Line 1787 of yacc.c  */
4916 > #line 1669 "conf_parser.y"
4917 >    {
4918 >  if (conf_parser_ctx.pass == 2)
4919 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4920   }
4921      break;
4922  
4923 <  case 267:
4923 >  case 299:
4924   /* Line 1787 of yacc.c  */
4925 < #line 1652 "conf_parser.y"
4925 > #line 1675 "conf_parser.y"
4926      {
4927    if (conf_parser_ctx.pass == 2)
4928 <  {
4857 <    MyFree(class_name);
4858 <    DupString(class_name, yylval.string);
4859 <  }
4928 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4929   }
4930      break;
4931  
4932 <  case 268:
4932 >  case 300:
4933   /* Line 1787 of yacc.c  */
4934 < #line 1661 "conf_parser.y"
4934 > #line 1681 "conf_parser.y"
4935      {
4936    if (conf_parser_ctx.pass == 2)
4937    {
4938      if (yylval.number)
4939 <      SetConfEncrypted(yy_aconf);
4939 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4940      else
4941 <      ClearConfEncrypted(yy_aconf);
4941 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4942    }
4943   }
4944      break;
4945  
4946 <  case 269:
4946 >  case 301:
4947   /* Line 1787 of yacc.c  */
4948 < #line 1672 "conf_parser.y"
4948 > #line 1692 "conf_parser.y"
4949      {
4950 +  if (conf_parser_ctx.pass == 2)
4951 +    block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4952   }
4953      break;
4954  
4955 <  case 273:
4955 >  case 305:
4956   /* Line 1787 of yacc.c  */
4957 < #line 1677 "conf_parser.y"
4957 > #line 1699 "conf_parser.y"
4958      {
4959    if (conf_parser_ctx.pass == 2)
4960 <    yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
4960 >    block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4961   }
4962      break;
4963  
4964 <  case 274:
4964 >  case 306:
4965   /* Line 1787 of yacc.c  */
4966 < #line 1681 "conf_parser.y"
4966 > #line 1703 "conf_parser.y"
4967      {
4968    if (conf_parser_ctx.pass == 2)
4969 <    yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
4969 >    block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4970   }
4971      break;
4972  
4973 <  case 275:
4973 >  case 307:
4974   /* Line 1787 of yacc.c  */
4975 < #line 1685 "conf_parser.y"
4975 > #line 1707 "conf_parser.y"
4976      {
4977    if (conf_parser_ctx.pass == 2)
4978 <    yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
4978 >    block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4979   }
4980      break;
4981  
4982 <  case 276:
4982 >  case 308:
4983   /* Line 1787 of yacc.c  */
4984 < #line 1689 "conf_parser.y"
4984 > #line 1711 "conf_parser.y"
4985      {
4986    if (conf_parser_ctx.pass == 2)
4987 <    yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
4987 >    block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4988   }
4989      break;
4990  
4991 <  case 277:
4991 >  case 309:
4992   /* Line 1787 of yacc.c  */
4993 < #line 1693 "conf_parser.y"
4993 > #line 1715 "conf_parser.y"
4994      {
4995    if (conf_parser_ctx.pass == 2)
4996 <    yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
4996 >    block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4997   }
4998      break;
4999  
5000 <  case 278:
5000 >  case 310:
5001   /* Line 1787 of yacc.c  */
5002 < #line 1697 "conf_parser.y"
5002 > #line 1719 "conf_parser.y"
5003      {
5004    if (conf_parser_ctx.pass == 2)
5005 <    yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5005 >    block_state.flags.value |= CONF_FLAGS_NO_TILDE;
5006   }
5007      break;
5008  
5009 <  case 279:
5009 >  case 311:
5010   /* Line 1787 of yacc.c  */
5011 < #line 1701 "conf_parser.y"
5011 > #line 1723 "conf_parser.y"
5012      {
5013    if (conf_parser_ctx.pass == 2)
5014 <    yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5014 >    block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
5015   }
5016      break;
5017  
5018 <  case 280:
5018 >  case 312:
5019   /* Line 1787 of yacc.c  */
5020 < #line 1705 "conf_parser.y"
5020 > #line 1727 "conf_parser.y"
5021      {
5022    if (conf_parser_ctx.pass == 2)
5023 <    yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5023 >    block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
5024   }
5025      break;
5026  
5027 <  case 281:
5027 >  case 313:
5028   /* Line 1787 of yacc.c  */
5029 < #line 1709 "conf_parser.y"
5029 > #line 1731 "conf_parser.y"
5030      {
5031    if (conf_parser_ctx.pass == 2)
5032 <    yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5032 >    block_state.flags.value |= CONF_FLAGS_WEBIRC;
5033   }
5034      break;
5035  
5036 <  case 282:
5036 >  case 314:
5037   /* Line 1787 of yacc.c  */
5038 < #line 1716 "conf_parser.y"
5038 > #line 1735 "conf_parser.y"
5039      {
5040    if (conf_parser_ctx.pass == 2)
5041 <  {
4971 <    MyFree(yy_conf->name);
4972 <
4973 <    if (strlen(yylval.string) < HOSTLEN)
4974 <    {    
4975 <      DupString(yy_conf->name, yylval.string);
4976 <      yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
4977 <    }
4978 <    else
4979 <    {
4980 <      ilog(LOG_TYPE_IRCD, "Spoofs must be less than %d..ignoring it", HOSTLEN);
4981 <      yy_conf->name = NULL;
4982 <    }
4983 <  }
5041 >    block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
5042   }
5043      break;
5044  
5045 <  case 283:
5045 >  case 315:
5046   /* Line 1787 of yacc.c  */
5047 < #line 1735 "conf_parser.y"
5047 > #line 1741 "conf_parser.y"
5048      {
5049 <  if (conf_parser_ctx.pass == 2)
5049 >  if (conf_parser_ctx.pass != 2)
5050 >    break;
5051 >
5052 >  if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
5053    {
5054 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5055 <    MyFree(yy_conf->name);
4995 <    DupString(yy_conf->name, yylval.string);
5054 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5055 >    block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
5056    }
5057 +  else
5058 +    ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
5059   }
5060      break;
5061  
5062 <  case 284:
5062 >  case 316:
5063   /* Line 1787 of yacc.c  */
5064 < #line 1745 "conf_parser.y"
5064 > #line 1755 "conf_parser.y"
5065      {
5066 <  if (conf_parser_ctx.pass == 2)
5067 <  {
5068 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5069 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5070 <  }
5066 >  if (conf_parser_ctx.pass != 2)
5067 >    break;
5068 >
5069 >  strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5070 >  block_state.flags.value |= CONF_FLAGS_REDIR;
5071   }
5072      break;
5073  
5074 <  case 285:
5074 >  case 317:
5075   /* Line 1787 of yacc.c  */
5076 < #line 1758 "conf_parser.y"
5076 > #line 1764 "conf_parser.y"
5077      {
5078 <  if (conf_parser_ctx.pass == 2)
5079 <  {
5080 <    MyFree(resv_reason);
5081 <    resv_reason = NULL;
5082 <  }
5078 >  if (conf_parser_ctx.pass != 2)
5079 >    break;
5080 >
5081 >  block_state.flags.value |= CONF_FLAGS_REDIR;
5082 >  block_state.port.value = (yyvsp[(3) - (4)].number);
5083   }
5084      break;
5085  
5086 <  case 286:
5086 >  case 318:
5087   /* Line 1787 of yacc.c  */
5088 < #line 1765 "conf_parser.y"
5088 > #line 1777 "conf_parser.y"
5089      {
5090 <  if (conf_parser_ctx.pass == 2)
5091 <  {
5092 <    MyFree(resv_reason);
5093 <    resv_reason = NULL;
5094 <  }
5090 >  if (conf_parser_ctx.pass != 2)
5091 >    break;
5092 >
5093 >  reset_block_state();
5094 >  strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
5095   }
5096      break;
5097  
5098 <  case 293:
5098 >  case 319:
5099   /* Line 1787 of yacc.c  */
5100 < #line 1777 "conf_parser.y"
5100 > #line 1784 "conf_parser.y"
5101      {
5102 <  if (conf_parser_ctx.pass == 2)
5103 <  {
5104 <    MyFree(resv_reason);
5105 <    DupString(resv_reason, yylval.string);
5044 <  }
5102 >  if (conf_parser_ctx.pass != 2)
5103 >    break;
5104 >
5105 >  create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
5106   }
5107      break;
5108  
5109 <  case 294:
5109 >  case 326:
5110   /* Line 1787 of yacc.c  */
5111 < #line 1786 "conf_parser.y"
5111 > #line 1795 "conf_parser.y"
5112      {
5113    if (conf_parser_ctx.pass == 2)
5114 <  {
5054 <    if (IsChanPrefix(*yylval.string))
5055 <    {
5056 <      char def_reason[] = "No reason";
5057 <
5058 <      create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5059 <    }
5060 <  }
5061 <  /* ignore it for now.. but we really should make a warning if
5062 <   * its an erroneous name --fl_ */
5114 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5115   }
5116      break;
5117  
5118 <  case 295:
5118 >  case 327:
5119   /* Line 1787 of yacc.c  */
5120   #line 1801 "conf_parser.y"
5121      {
5122    if (conf_parser_ctx.pass == 2)
5123 <  {
5072 <    char def_reason[] = "No reason";
5073 <
5074 <    create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5075 <  }
5123 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5124   }
5125      break;
5126  
5127 <  case 301:
5127 >  case 328:
5128   /* Line 1787 of yacc.c  */
5129 < #line 1819 "conf_parser.y"
5129 > #line 1807 "conf_parser.y"
5130      {
5131    if (conf_parser_ctx.pass == 2)
5132 <  {
5085 <    if (valid_servname(yylval.string))
5086 <    {
5087 <      yy_conf = make_conf_item(SERVICE_TYPE);
5088 <      DupString(yy_conf->name, yylval.string);
5089 <    }
5090 <  }
5132 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
5133   }
5134      break;
5135  
5136 <  case 302:
5136 >  case 334:
5137   /* Line 1787 of yacc.c  */
5138 < #line 1834 "conf_parser.y"
5138 > #line 1822 "conf_parser.y"
5139      {
5140 <  if (conf_parser_ctx.pass == 2)
5140 >  if (conf_parser_ctx.pass != 2)
5141 >    break;
5142 >
5143 >  if (valid_servname(yylval.string))
5144    {
5145 <    yy_conf = make_conf_item(ULINE_TYPE);
5146 <    yy_match_item = map_to_conf(yy_conf);
5102 <    yy_match_item->action = SHARED_ALL;
5145 >    struct MaskItem *conf = conf_make(CONF_SERVICE);
5146 >    conf->name = xstrdup(yylval.string);
5147    }
5148   }
5149      break;
5150  
5151 <  case 303:
5151 >  case 335:
5152   /* Line 1787 of yacc.c  */
5153 < #line 1842 "conf_parser.y"
5153 > #line 1837 "conf_parser.y"
5154      {
5155 <  if (conf_parser_ctx.pass == 2)
5156 <  {
5157 <    yy_conf = NULL;
5158 <  }
5155 >  if (conf_parser_ctx.pass != 2)
5156 >    break;
5157 >
5158 >  reset_block_state();
5159 >
5160 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5161 >  strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
5162 >  strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
5163 >  block_state.flags.value = SHARED_ALL;
5164   }
5165      break;
5166  
5167 <  case 310:
5167 >  case 336:
5168   /* Line 1787 of yacc.c  */
5169 < #line 1853 "conf_parser.y"
5169 > #line 1848 "conf_parser.y"
5170 >    {
5171 >  struct MaskItem *conf = NULL;
5172 >
5173 >  if (conf_parser_ctx.pass != 2)
5174 >    break;
5175 >
5176 >  conf = conf_make(CONF_ULINE);
5177 >  conf->flags = block_state.flags.value;
5178 >  conf->name = xstrdup(block_state.name.buf);
5179 >  conf->user = xstrdup(block_state.user.buf);
5180 >  conf->host = xstrdup(block_state.host.buf);
5181 > }
5182 >    break;
5183 >
5184 >  case 343:
5185 > /* Line 1787 of yacc.c  */
5186 > #line 1865 "conf_parser.y"
5187      {
5188    if (conf_parser_ctx.pass == 2)
5189 <  {
5124 <    MyFree(yy_conf->name);
5125 <    DupString(yy_conf->name, yylval.string);
5126 <  }
5189 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5190   }
5191      break;
5192  
5193 <  case 311:
5193 >  case 344:
5194   /* Line 1787 of yacc.c  */
5195 < #line 1862 "conf_parser.y"
5195 > #line 1871 "conf_parser.y"
5196      {
5197    if (conf_parser_ctx.pass == 2)
5198    {
# Line 5137 | Line 5200 | yyreduce:
5200  
5201      nuh.nuhmask  = yylval.string;
5202      nuh.nickptr  = NULL;
5203 <    nuh.userptr  = userbuf;
5204 <    nuh.hostptr  = hostbuf;
5203 >    nuh.userptr  = block_state.user.buf;
5204 >    nuh.hostptr  = block_state.host.buf;
5205  
5206      nuh.nicksize = 0;
5207 <    nuh.usersize = sizeof(userbuf);
5208 <    nuh.hostsize = sizeof(hostbuf);
5207 >    nuh.usersize = sizeof(block_state.user.buf);
5208 >    nuh.hostsize = sizeof(block_state.host.buf);
5209  
5210      split_nuh(&nuh);
5148
5149    DupString(yy_match_item->user, userbuf);
5150    DupString(yy_match_item->host, hostbuf);
5211    }
5212   }
5213      break;
5214  
5215 <  case 312:
5215 >  case 345:
5216   /* Line 1787 of yacc.c  */
5217 < #line 1884 "conf_parser.y"
5217 > #line 1890 "conf_parser.y"
5218      {
5219    if (conf_parser_ctx.pass == 2)
5220 <    yy_match_item->action = 0;
5220 >    block_state.flags.value = 0;
5221   }
5222      break;
5223  
5224 <  case 316:
5224 >  case 349:
5225   /* Line 1787 of yacc.c  */
5226 < #line 1891 "conf_parser.y"
5226 > #line 1897 "conf_parser.y"
5227      {
5228    if (conf_parser_ctx.pass == 2)
5229 <    yy_match_item->action |= SHARED_KLINE;
5229 >    block_state.flags.value |= SHARED_KLINE;
5230   }
5231      break;
5232  
5233 <  case 317:
5233 >  case 350:
5234   /* Line 1787 of yacc.c  */
5235 < #line 1895 "conf_parser.y"
5235 > #line 1901 "conf_parser.y"
5236      {
5237    if (conf_parser_ctx.pass == 2)
5238 <    yy_match_item->action |= SHARED_UNKLINE;
5238 >    block_state.flags.value |= SHARED_UNKLINE;
5239   }
5240      break;
5241  
5242 <  case 318:
5242 >  case 351:
5243   /* Line 1787 of yacc.c  */
5244 < #line 1899 "conf_parser.y"
5244 > #line 1905 "conf_parser.y"
5245      {
5246    if (conf_parser_ctx.pass == 2)
5247 <    yy_match_item->action |= SHARED_DLINE;
5247 >    block_state.flags.value |= SHARED_DLINE;
5248   }
5249      break;
5250  
5251 <  case 319:
5251 >  case 352:
5252   /* Line 1787 of yacc.c  */
5253 < #line 1903 "conf_parser.y"
5253 > #line 1909 "conf_parser.y"
5254      {
5255    if (conf_parser_ctx.pass == 2)
5256 <    yy_match_item->action |= SHARED_UNDLINE;
5256 >    block_state.flags.value |= SHARED_UNDLINE;
5257   }
5258      break;
5259  
5260 <  case 320:
5260 >  case 353:
5261   /* Line 1787 of yacc.c  */
5262 < #line 1907 "conf_parser.y"
5262 > #line 1913 "conf_parser.y"
5263      {
5264    if (conf_parser_ctx.pass == 2)
5265 <    yy_match_item->action |= SHARED_XLINE;
5265 >    block_state.flags.value |= SHARED_XLINE;
5266   }
5267      break;
5268  
5269 <  case 321:
5269 >  case 354:
5270   /* Line 1787 of yacc.c  */
5271 < #line 1911 "conf_parser.y"
5271 > #line 1917 "conf_parser.y"
5272      {
5273    if (conf_parser_ctx.pass == 2)
5274 <    yy_match_item->action |= SHARED_UNXLINE;
5274 >    block_state.flags.value |= SHARED_UNXLINE;
5275   }
5276      break;
5277  
5278 <  case 322:
5278 >  case 355:
5279   /* Line 1787 of yacc.c  */
5280 < #line 1915 "conf_parser.y"
5280 > #line 1921 "conf_parser.y"
5281      {
5282    if (conf_parser_ctx.pass == 2)
5283 <    yy_match_item->action |= SHARED_RESV;
5283 >    block_state.flags.value |= SHARED_RESV;
5284   }
5285      break;
5286  
5287 <  case 323:
5287 >  case 356:
5288   /* Line 1787 of yacc.c  */
5289 < #line 1919 "conf_parser.y"
5289 > #line 1925 "conf_parser.y"
5290      {
5291    if (conf_parser_ctx.pass == 2)
5292 <    yy_match_item->action |= SHARED_UNRESV;
5292 >    block_state.flags.value |= SHARED_UNRESV;
5293   }
5294      break;
5295  
5296 <  case 324:
5296 >  case 357:
5297   /* Line 1787 of yacc.c  */
5298 < #line 1923 "conf_parser.y"
5298 > #line 1929 "conf_parser.y"
5299      {
5300    if (conf_parser_ctx.pass == 2)
5301 <    yy_match_item->action |= SHARED_LOCOPS;
5301 >    block_state.flags.value |= SHARED_LOCOPS;
5302   }
5303      break;
5304  
5305 <  case 325:
5305 >  case 358:
5306   /* Line 1787 of yacc.c  */
5307 < #line 1927 "conf_parser.y"
5307 > #line 1933 "conf_parser.y"
5308      {
5309    if (conf_parser_ctx.pass == 2)
5310 <    yy_match_item->action = SHARED_ALL;
5310 >    block_state.flags.value = SHARED_ALL;
5311   }
5312      break;
5313  
5314 <  case 326:
5314 >  case 359:
5315   /* Line 1787 of yacc.c  */
5316 < #line 1936 "conf_parser.y"
5316 > #line 1942 "conf_parser.y"
5317      {
5318 <  if (conf_parser_ctx.pass == 2)
5319 <  {
5320 <    yy_conf = make_conf_item(CLUSTER_TYPE);
5321 <    yy_conf->flags = SHARED_ALL;
5322 <  }
5318 >  if (conf_parser_ctx.pass != 2)
5319 >    break;
5320 >
5321 >  reset_block_state();
5322 >
5323 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5324 >  block_state.flags.value = SHARED_ALL;
5325   }
5326      break;
5327  
5328 <  case 327:
5328 >  case 360:
5329   /* Line 1787 of yacc.c  */
5330 < #line 1943 "conf_parser.y"
5330 > #line 1951 "conf_parser.y"
5331      {
5332 <  if (conf_parser_ctx.pass == 2)
5333 <  {
5334 <    if (yy_conf->name == NULL)
5335 <      DupString(yy_conf->name, "*");
5336 <    yy_conf = NULL;
5337 <  }
5332 >  struct MaskItem *conf = NULL;
5333 >
5334 >  if (conf_parser_ctx.pass != 2)
5335 >    break;
5336 >
5337 >  conf = conf_make(CONF_CLUSTER);
5338 >  conf->flags = block_state.flags.value;
5339 >  conf->name = xstrdup(block_state.name.buf);
5340   }
5341      break;
5342  
5343 <  case 333:
5343 >  case 366:
5344   /* Line 1787 of yacc.c  */
5345 < #line 1956 "conf_parser.y"
5345 > #line 1966 "conf_parser.y"
5346      {
5347    if (conf_parser_ctx.pass == 2)
5348 <    DupString(yy_conf->name, yylval.string);
5348 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5349   }
5350      break;
5351  
5352 <  case 334:
5352 >  case 367:
5353   /* Line 1787 of yacc.c  */
5354 < #line 1962 "conf_parser.y"
5354 > #line 1972 "conf_parser.y"
5355      {
5356    if (conf_parser_ctx.pass == 2)
5357 <    yy_conf->flags = 0;
5357 >    block_state.flags.value = 0;
5358   }
5359      break;
5360  
5361 <  case 338:
5361 >  case 371:
5362   /* Line 1787 of yacc.c  */
5363 < #line 1969 "conf_parser.y"
5363 > #line 1979 "conf_parser.y"
5364      {
5365    if (conf_parser_ctx.pass == 2)
5366 <    yy_conf->flags |= SHARED_KLINE;
5366 >    block_state.flags.value |= SHARED_KLINE;
5367   }
5368      break;
5369  
5370 <  case 339:
5370 >  case 372:
5371   /* Line 1787 of yacc.c  */
5372 < #line 1973 "conf_parser.y"
5372 > #line 1983 "conf_parser.y"
5373      {
5374    if (conf_parser_ctx.pass == 2)
5375 <    yy_conf->flags |= SHARED_UNKLINE;
5375 >    block_state.flags.value |= SHARED_UNKLINE;
5376   }
5377      break;
5378  
5379 <  case 340:
5379 >  case 373:
5380   /* Line 1787 of yacc.c  */
5381 < #line 1977 "conf_parser.y"
5381 > #line 1987 "conf_parser.y"
5382      {
5383    if (conf_parser_ctx.pass == 2)
5384 <    yy_conf->flags |= SHARED_DLINE;
5384 >    block_state.flags.value |= SHARED_DLINE;
5385   }
5386      break;
5387  
5388 <  case 341:
5388 >  case 374:
5389   /* Line 1787 of yacc.c  */
5390 < #line 1981 "conf_parser.y"
5390 > #line 1991 "conf_parser.y"
5391      {
5392    if (conf_parser_ctx.pass == 2)
5393 <    yy_conf->flags |= SHARED_UNDLINE;
5393 >    block_state.flags.value |= SHARED_UNDLINE;
5394   }
5395      break;
5396  
5397 <  case 342:
5397 >  case 375:
5398   /* Line 1787 of yacc.c  */
5399 < #line 1985 "conf_parser.y"
5399 > #line 1995 "conf_parser.y"
5400      {
5401    if (conf_parser_ctx.pass == 2)
5402 <    yy_conf->flags |= SHARED_XLINE;
5402 >    block_state.flags.value |= SHARED_XLINE;
5403   }
5404      break;
5405  
5406 <  case 343:
5406 >  case 376:
5407   /* Line 1787 of yacc.c  */
5408 < #line 1989 "conf_parser.y"
5408 > #line 1999 "conf_parser.y"
5409      {
5410    if (conf_parser_ctx.pass == 2)
5411 <    yy_conf->flags |= SHARED_UNXLINE;
5411 >    block_state.flags.value |= SHARED_UNXLINE;
5412   }
5413      break;
5414  
5415 <  case 344:
5415 >  case 377:
5416   /* Line 1787 of yacc.c  */
5417 < #line 1993 "conf_parser.y"
5417 > #line 2003 "conf_parser.y"
5418      {
5419    if (conf_parser_ctx.pass == 2)
5420 <    yy_conf->flags |= SHARED_RESV;
5420 >    block_state.flags.value |= SHARED_RESV;
5421   }
5422      break;
5423  
5424 <  case 345:
5424 >  case 378:
5425   /* Line 1787 of yacc.c  */
5426 < #line 1997 "conf_parser.y"
5426 > #line 2007 "conf_parser.y"
5427      {
5428    if (conf_parser_ctx.pass == 2)
5429 <    yy_conf->flags |= SHARED_UNRESV;
5429 >    block_state.flags.value |= SHARED_UNRESV;
5430   }
5431      break;
5432  
5433 <  case 346:
5433 >  case 379:
5434   /* Line 1787 of yacc.c  */
5435 < #line 2001 "conf_parser.y"
5435 > #line 2011 "conf_parser.y"
5436      {
5437    if (conf_parser_ctx.pass == 2)
5438 <    yy_conf->flags |= SHARED_LOCOPS;
5438 >    block_state.flags.value |= SHARED_LOCOPS;
5439   }
5440      break;
5441  
5442 <  case 347:
5442 >  case 380:
5443   /* Line 1787 of yacc.c  */
5444 < #line 2005 "conf_parser.y"
5444 > #line 2015 "conf_parser.y"
5445      {
5446    if (conf_parser_ctx.pass == 2)
5447 <    yy_conf->flags = SHARED_ALL;
5447 >    block_state.flags.value = SHARED_ALL;
5448   }
5449      break;
5450  
5451 <  case 348:
5451 >  case 381:
5452   /* Line 1787 of yacc.c  */
5453 < #line 2014 "conf_parser.y"
5453 > #line 2024 "conf_parser.y"
5454      {
5391  if (conf_parser_ctx.pass == 2)
5392  {
5393    yy_conf = make_conf_item(SERVER_TYPE);
5394    yy_aconf = map_to_conf(yy_conf);
5455  
5456 <    /* defaults */
5457 <    yy_aconf->port = PORTNUM;
5458 <  }
5459 <  else
5460 <  {
5401 <    MyFree(class_name);
5402 <    class_name = NULL;
5403 <  }
5456 >  if (conf_parser_ctx.pass != 2)
5457 >    break;
5458 >
5459 >  reset_block_state();
5460 >  block_state.port.value = PORTNUM;
5461   }
5462      break;
5463  
5464 <  case 349:
5464 >  case 382:
5465   /* Line 1787 of yacc.c  */
5466 < #line 2029 "conf_parser.y"
5466 > #line 2032 "conf_parser.y"
5467      {
5468 <  if (conf_parser_ctx.pass == 2)
5468 >  struct MaskItem *conf = NULL;
5469 >  struct addrinfo hints, *res;
5470 >
5471 >  if (conf_parser_ctx.pass != 2)
5472 >    break;
5473 >
5474 >  if (!block_state.name.buf[0] ||
5475 >      !block_state.host.buf[0])
5476 >    break;
5477 >
5478 >  if (!block_state.rpass.buf[0] ||
5479 >      !block_state.spass.buf[0])
5480 >    break;
5481 >
5482 >  if (has_wildcards(block_state.name.buf) ||
5483 >      has_wildcards(block_state.host.buf))
5484 >    break;
5485 >
5486 >  conf = conf_make(CONF_SERVER);
5487 >  conf->port = block_state.port.value;
5488 >  conf->flags = block_state.flags.value;
5489 >  conf->aftype = block_state.aftype.value;
5490 >  conf->host = xstrdup(block_state.host.buf);
5491 >  conf->name = xstrdup(block_state.name.buf);
5492 >  conf->passwd = xstrdup(block_state.rpass.buf);
5493 >  conf->spasswd = xstrdup(block_state.spass.buf);
5494 >
5495 >  if (block_state.cert.buf[0])
5496 >    conf->certfp = xstrdup(block_state.cert.buf);
5497 >
5498 >  conf->cipher_list = xstrdup(block_state.ciph.buf);
5499 >
5500 >  dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5501 >  dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5502 >
5503 >  if (block_state.bind.buf[0])
5504    {
5505 <    if (yy_aconf->host && yy_aconf->passwd && yy_aconf->spasswd)
5506 <    {
5507 <      if (conf_add_server(yy_conf, class_name) == -1)
5508 <        delete_conf_item(yy_conf);
5509 <    }
5505 >    memset(&hints, 0, sizeof(hints));
5506 >
5507 >    hints.ai_family   = AF_UNSPEC;
5508 >    hints.ai_socktype = SOCK_STREAM;
5509 >    hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5510 >
5511 >    if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5512 >      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5513      else
5514      {
5515 <      if (yy_conf->name != NULL)
5421 <      {
5422 <        if (yy_aconf->host == NULL)
5423 <          yyerror("Ignoring connect block -- missing host");
5424 <        else if (!yy_aconf->passwd || !yy_aconf->spasswd)
5425 <          yyerror("Ignoring connect block -- missing password");
5426 <      }
5515 >      assert(res != NULL);
5516  
5517 <      /* XXX
5518 <       * This fixes a try_connections() core (caused by invalid class_ptr
5519 <       * pointers) reported by metalrock. That's an ugly fix, but there
5520 <       * is currently no better way. The entire config subsystem needs an
5432 <       * rewrite ASAP. make_conf_item() shouldn't really add things onto
5433 <       * a doubly linked list immediately without any sanity checks!  -Michael
5434 <       */
5435 <      delete_conf_item(yy_conf);
5517 >      memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5518 >      conf->bind.ss.ss_family = res->ai_family;
5519 >      conf->bind.ss_len = res->ai_addrlen;
5520 >      freeaddrinfo(res);
5521      }
5437
5438    MyFree(class_name);
5439    class_name = NULL;
5440    yy_conf = NULL;
5441    yy_aconf = NULL;
5522    }
5523 +
5524 +  conf_add_class_to_conf(conf, block_state.class.buf);
5525 +  lookup_confhost(conf);
5526   }
5527      break;
5528  
5529 <  case 366:
5529 >  case 400:
5530   /* Line 1787 of yacc.c  */
5531 < #line 2073 "conf_parser.y"
5531 > #line 2103 "conf_parser.y"
5532      {
5533    if (conf_parser_ctx.pass == 2)
5534 <  {
5452 <    MyFree(yy_conf->name);
5453 <    DupString(yy_conf->name, yylval.string);
5454 <  }
5534 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5535   }
5536      break;
5537  
5538 <  case 367:
5538 >  case 401:
5539   /* Line 1787 of yacc.c  */
5540 < #line 2082 "conf_parser.y"
5540 > #line 2109 "conf_parser.y"
5541      {
5542    if (conf_parser_ctx.pass == 2)
5543 <  {
5464 <    MyFree(yy_aconf->host);
5465 <    DupString(yy_aconf->host, yylval.string);
5466 <  }
5543 >    strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5544   }
5545      break;
5546  
5547 <  case 368:
5547 >  case 402:
5548   /* Line 1787 of yacc.c  */
5549 < #line 2091 "conf_parser.y"
5549 > #line 2115 "conf_parser.y"
5550      {
5551    if (conf_parser_ctx.pass == 2)
5552 <  {
5553 <    struct addrinfo hints, *res;
5554 <
5478 <    memset(&hints, 0, sizeof(hints));
5479 <
5480 <    hints.ai_family   = AF_UNSPEC;
5481 <    hints.ai_socktype = SOCK_STREAM;
5482 <    hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5552 >    strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5553 > }
5554 >    break;
5555  
5556 <    if (getaddrinfo(yylval.string, NULL, &hints, &res))
5557 <      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5558 <    else
5556 >  case 403:
5557 > /* Line 1787 of yacc.c  */
5558 > #line 2121 "conf_parser.y"
5559      {
5560 <      assert(res != NULL);
5560 >  if (conf_parser_ctx.pass != 2)
5561 >    break;
5562  
5563 <      memcpy(&yy_aconf->bind, res->ai_addr, res->ai_addrlen);
5564 <      yy_aconf->bind.ss.ss_family = res->ai_family;
5565 <      yy_aconf->bind.ss_len = res->ai_addrlen;
5566 <      freeaddrinfo(res);
5567 <    }
5568 <  }
5563 >  if ((yyvsp[(3) - (4)].string)[0] == ':')
5564 >    conf_error_report("Server passwords cannot begin with a colon");
5565 >  else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5566 >    conf_error_report("Server passwords cannot contain spaces");
5567 >  else
5568 >    strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5569   }
5570      break;
5571  
5572 <  case 369:
5572 >  case 404:
5573   /* Line 1787 of yacc.c  */
5574 < #line 2117 "conf_parser.y"
5574 > #line 2134 "conf_parser.y"
5575      {
5576 <  if (conf_parser_ctx.pass == 2)
5577 <  {
5505 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
5506 <      yyerror("Server passwords cannot begin with a colon");
5507 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5508 <      yyerror("Server passwords cannot contain spaces");
5509 <    else {
5510 <      if (yy_aconf->spasswd != NULL)
5511 <        memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5576 >  if (conf_parser_ctx.pass != 2)
5577 >    break;
5578  
5579 <      MyFree(yy_aconf->spasswd);
5580 <      DupString(yy_aconf->spasswd, yylval.string);
5581 <    }
5582 <  }
5579 >  if ((yyvsp[(3) - (4)].string)[0] == ':')
5580 >    conf_error_report("Server passwords cannot begin with a colon");
5581 >  else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5582 >    conf_error_report("Server passwords cannot contain spaces");
5583 >  else
5584 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5585   }
5586      break;
5587  
5588 <  case 370:
5588 >  case 405:
5589   /* Line 1787 of yacc.c  */
5590 < #line 2135 "conf_parser.y"
5590 > #line 2147 "conf_parser.y"
5591      {
5592    if (conf_parser_ctx.pass == 2)
5593 <  {
5526 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
5527 <      yyerror("Server passwords cannot begin with a colon");
5528 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5529 <      yyerror("Server passwords cannot contain spaces");
5530 <    else {
5531 <      if (yy_aconf->passwd != NULL)
5532 <        memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5533 <
5534 <      MyFree(yy_aconf->passwd);
5535 <      DupString(yy_aconf->passwd, yylval.string);
5536 <    }
5537 <  }
5593 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5594   }
5595      break;
5596  
5597 <  case 371:
5597 >  case 406:
5598   /* Line 1787 of yacc.c  */
5599   #line 2153 "conf_parser.y"
5600      {
5601    if (conf_parser_ctx.pass == 2)
5602 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5602 >    block_state.port.value = (yyvsp[(3) - (4)].number);
5603   }
5604      break;
5605  
5606 <  case 372:
5606 >  case 407:
5607   /* Line 1787 of yacc.c  */
5608   #line 2159 "conf_parser.y"
5609      {
5610    if (conf_parser_ctx.pass == 2)
5611 <    yy_aconf->aftype = AF_INET;
5611 >    block_state.aftype.value = AF_INET;
5612   }
5613      break;
5614  
5615 <  case 373:
5615 >  case 408:
5616   /* Line 1787 of yacc.c  */
5617   #line 2163 "conf_parser.y"
5618      {
5619   #ifdef IPV6
5620    if (conf_parser_ctx.pass == 2)
5621 <    yy_aconf->aftype = AF_INET6;
5621 >    block_state.aftype.value = AF_INET6;
5622   #endif
5623   }
5624      break;
5625  
5626 <  case 374:
5626 >  case 409:
5627   /* Line 1787 of yacc.c  */
5628   #line 2171 "conf_parser.y"
5629      {
5630 +  block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5631   }
5632      break;
5633  
5634 <  case 378:
5634 >  case 413:
5635   /* Line 1787 of yacc.c  */
5636 < #line 2176 "conf_parser.y"
5636 > #line 2177 "conf_parser.y"
5637      {
5638    if (conf_parser_ctx.pass == 2)
5639 <    SetConfAllowAutoConn(yy_aconf);
5639 >    block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5640   }
5641      break;
5642  
5643 <  case 379:
5643 >  case 414:
5644   /* Line 1787 of yacc.c  */
5645 < #line 2180 "conf_parser.y"
5645 > #line 2181 "conf_parser.y"
5646      {
5647    if (conf_parser_ctx.pass == 2)
5648 <    SetConfSSL(yy_aconf);
5648 >    block_state.flags.value |= CONF_FLAGS_SSL;
5649   }
5650      break;
5651  
5652 <  case 380:
5652 >  case 415:
5653   /* Line 1787 of yacc.c  */
5654 < #line 2186 "conf_parser.y"
5654 > #line 2187 "conf_parser.y"
5655      {
5656    if (conf_parser_ctx.pass == 2)
5657    {
5658      if (yylval.number)
5659 <      yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
5659 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5660      else
5661 <      yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
5661 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5662    }
5663   }
5664      break;
5665  
5666 <  case 381:
5666 >  case 416:
5667   /* Line 1787 of yacc.c  */
5668 < #line 2197 "conf_parser.y"
5668 > #line 2198 "conf_parser.y"
5669      {
5670    if (conf_parser_ctx.pass == 2)
5671 <  {
5615 <    char *mask;
5616 <
5617 <    DupString(mask, yylval.string);
5618 <    dlinkAdd(mask, make_dlink_node(), &yy_aconf->hub_list);
5619 <  }
5671 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5672   }
5673      break;
5674  
5675 <  case 382:
5675 >  case 417:
5676   /* Line 1787 of yacc.c  */
5677 < #line 2208 "conf_parser.y"
5677 > #line 2204 "conf_parser.y"
5678      {
5679    if (conf_parser_ctx.pass == 2)
5680 <  {
5629 <    char *mask;
5630 <
5631 <    DupString(mask, yylval.string);
5632 <    dlinkAdd(mask, make_dlink_node(), &yy_aconf->leaf_list);
5633 <  }
5680 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5681   }
5682      break;
5683  
5684 <  case 383:
5684 >  case 418:
5685   /* Line 1787 of yacc.c  */
5686 < #line 2219 "conf_parser.y"
5686 > #line 2210 "conf_parser.y"
5687      {
5688    if (conf_parser_ctx.pass == 2)
5689 <  {
5643 <    MyFree(class_name);
5644 <    DupString(class_name, yylval.string);
5645 <  }
5689 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5690   }
5691      break;
5692  
5693 <  case 384:
5693 >  case 419:
5694   /* Line 1787 of yacc.c  */
5695 < #line 2228 "conf_parser.y"
5695 > #line 2216 "conf_parser.y"
5696      {
5697   #ifdef HAVE_LIBCRYPTO
5698    if (conf_parser_ctx.pass == 2)
5699 <  {
5656 <    MyFree(yy_aconf->cipher_list);
5657 <    DupString(yy_aconf->cipher_list, yylval.string);
5658 <  }
5699 >    strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5700   #else
5701    if (conf_parser_ctx.pass == 2)
5702 <    yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5702 >    conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5703   #endif
5704   }
5705      break;
5706  
5707 <  case 385:
5707 >  case 420:
5708   /* Line 1787 of yacc.c  */
5709 < #line 2246 "conf_parser.y"
5709 > #line 2231 "conf_parser.y"
5710      {
5711    if (conf_parser_ctx.pass == 2)
5712 <  {
5672 <    userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
5673 <    regex_ban = 0;
5674 <  }
5712 >    reset_block_state();
5713   }
5714      break;
5715  
5716 <  case 386:
5716 >  case 421:
5717   /* Line 1787 of yacc.c  */
5718 < #line 2253 "conf_parser.y"
5718 > #line 2235 "conf_parser.y"
5719      {
5720 <  if (conf_parser_ctx.pass == 2)
5683 <  {
5684 <    if (userbuf[0] && hostbuf[0])
5685 <    {
5686 <      if (regex_ban)
5687 <      {
5688 < #ifdef HAVE_LIBPCRE
5689 <        void *exp_user = NULL;
5690 <        void *exp_host = NULL;
5691 <        const char *errptr = NULL;
5720 >  struct MaskItem *conf = NULL;
5721  
5722 <        if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
5694 <            !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
5695 <        {
5696 <          ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5697 <               errptr);
5698 <          break;
5699 <        }
5700 <
5701 <        yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
5702 <        yy_aconf->regexuser = exp_user;
5703 <        yy_aconf->regexhost = exp_host;
5704 <
5705 <        DupString(yy_aconf->user, userbuf);
5706 <        DupString(yy_aconf->host, hostbuf);
5707 <
5708 <        if (reasonbuf[0])
5709 <          DupString(yy_aconf->reason, reasonbuf);
5710 <        else
5711 <          DupString(yy_aconf->reason, "No reason");
5712 < #else
5713 <        ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5714 <        break;
5715 < #endif
5716 <      }
5717 <      else
5718 <      {
5719 <        find_and_delete_temporary(userbuf, hostbuf, CONF_KLINE);
5720 <
5721 <        yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
5722 <
5723 <        DupString(yy_aconf->user, userbuf);
5724 <        DupString(yy_aconf->host, hostbuf);
5725 <
5726 <        if (reasonbuf[0])
5727 <          DupString(yy_aconf->reason, reasonbuf);
5728 <        else
5729 <          DupString(yy_aconf->reason, "No reason");
5730 <        add_conf_by_address(CONF_KLINE, yy_aconf);
5731 <      }
5732 <    }
5733 <
5734 <    yy_aconf = NULL;
5735 <  }
5736 < }
5722 >  if (conf_parser_ctx.pass != 2)
5723      break;
5724  
5725 <  case 387:
5726 < /* Line 1787 of yacc.c  */
5741 < #line 2311 "conf_parser.y"
5742 <    {
5743 < }
5725 >  if (!block_state.user.buf[0] ||
5726 >      !block_state.host.buf[0])
5727      break;
5728  
5729 <  case 391:
5730 < /* Line 1787 of yacc.c  */
5731 < #line 2316 "conf_parser.y"
5732 <    {
5733 <  if (conf_parser_ctx.pass == 2)
5734 <    regex_ban = 1;
5729 >  conf = conf_make(CONF_KLINE);
5730 >  conf->user = xstrdup(block_state.user.buf);
5731 >  conf->host = xstrdup(block_state.host.buf);
5732 >
5733 >  if (block_state.rpass.buf[0])
5734 >    conf->reason = xstrdup(block_state.rpass.buf);
5735 >  else
5736 >    conf->reason = xstrdup(CONF_NOREASON);
5737 >  add_conf_by_address(CONF_KLINE, conf);
5738   }
5739      break;
5740  
5741 <  case 398:
5741 >  case 427:
5742   /* Line 1787 of yacc.c  */
5743 < #line 2325 "conf_parser.y"
5743 > #line 2260 "conf_parser.y"
5744      {
5745 +
5746    if (conf_parser_ctx.pass == 2)
5747    {
5748      struct split_nuh_item nuh;
5749  
5750      nuh.nuhmask  = yylval.string;
5751      nuh.nickptr  = NULL;
5752 <    nuh.userptr  = userbuf;
5753 <    nuh.hostptr  = hostbuf;
5752 >    nuh.userptr  = block_state.user.buf;
5753 >    nuh.hostptr  = block_state.host.buf;
5754  
5755      nuh.nicksize = 0;
5756 <    nuh.usersize = sizeof(userbuf);
5757 <    nuh.hostsize = sizeof(hostbuf);
5756 >    nuh.usersize = sizeof(block_state.user.buf);
5757 >    nuh.hostsize = sizeof(block_state.host.buf);
5758  
5759      split_nuh(&nuh);
5760    }
5761   }
5762      break;
5763  
5764 <  case 399:
5764 >  case 428:
5765   /* Line 1787 of yacc.c  */
5766 < #line 2344 "conf_parser.y"
5766 > #line 2280 "conf_parser.y"
5767      {
5768    if (conf_parser_ctx.pass == 2)
5769 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5769 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5770   }
5771      break;
5772  
5773 <  case 400:
5773 >  case 429:
5774   /* Line 1787 of yacc.c  */
5775 < #line 2353 "conf_parser.y"
5775 > #line 2289 "conf_parser.y"
5776      {
5777    if (conf_parser_ctx.pass == 2)
5778 <    hostbuf[0] = reasonbuf[0] = '\0';
5778 >    reset_block_state();
5779   }
5780      break;
5781  
5782 <  case 401:
5782 >  case 430:
5783   /* Line 1787 of yacc.c  */
5784 < #line 2357 "conf_parser.y"
5784 > #line 2293 "conf_parser.y"
5785      {
5786 <  if (conf_parser_ctx.pass == 2)
5800 <  {
5801 <    if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5802 <    {
5803 <      find_and_delete_temporary(NULL, hostbuf, CONF_DLINE);
5786 >  struct MaskItem *conf = NULL;
5787  
5788 <      yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
5789 <      DupString(yy_aconf->host, hostbuf);
5788 >  if (conf_parser_ctx.pass != 2)
5789 >    break;
5790  
5791 <      if (reasonbuf[0])
5792 <        DupString(yy_aconf->reason, reasonbuf);
5793 <      else
5794 <        DupString(yy_aconf->reason, "No reason");
5795 <      add_conf_by_address(CONF_DLINE, yy_aconf);
5796 <      yy_aconf = NULL;
5797 <    }
5791 >  if (!block_state.addr.buf[0])
5792 >    break;
5793 >
5794 >  if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5795 >  {
5796 >    conf = conf_make(CONF_DLINE);
5797 >    conf->host = xstrdup(block_state.addr.buf);
5798 >
5799 >    if (block_state.rpass.buf[0])
5800 >      conf->reason = xstrdup(block_state.rpass.buf);
5801 >    else
5802 >      conf->reason = xstrdup(CONF_NOREASON);
5803 >    add_conf_by_address(CONF_DLINE, conf);
5804    }
5805   }
5806      break;
5807  
5808 <  case 407:
5808 >  case 436:
5809   /* Line 1787 of yacc.c  */
5810 < #line 2381 "conf_parser.y"
5810 > #line 2319 "conf_parser.y"
5811      {
5812    if (conf_parser_ctx.pass == 2)
5813 <    strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
5813 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5814   }
5815      break;
5816  
5817 <  case 408:
5817 >  case 437:
5818   /* Line 1787 of yacc.c  */
5819 < #line 2387 "conf_parser.y"
5819 > #line 2325 "conf_parser.y"
5820      {
5821    if (conf_parser_ctx.pass == 2)
5822 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5822 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5823   }
5824      break;
5825  
5826 <  case 414:
5826 >  case 443:
5827   /* Line 1787 of yacc.c  */
5828 < #line 2401 "conf_parser.y"
5828 > #line 2339 "conf_parser.y"
5829      {
5830    if (conf_parser_ctx.pass == 2)
5831    {
5832      if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5833      {
5834 <      yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
5835 <      DupString(yy_aconf->host, yylval.string);
5834 >      struct MaskItem *conf = conf_make(CONF_EXEMPT);
5835 >      conf->host = xstrdup(yylval.string);
5836  
5837 <      add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
5849 <      yy_aconf = NULL;
5837 >      add_conf_by_address(CONF_EXEMPT, conf);
5838      }
5839    }
5840   }
5841      break;
5842  
5843 <  case 415:
5843 >  case 444:
5844   /* Line 1787 of yacc.c  */
5845 < #line 2419 "conf_parser.y"
5845 > #line 2356 "conf_parser.y"
5846      {
5847    if (conf_parser_ctx.pass == 2)
5848 <  {
5861 <    regex_ban = 0;
5862 <    reasonbuf[0] = gecos_name[0] = '\0';
5863 <  }
5848 >    reset_block_state();
5849   }
5850      break;
5851  
5852 <  case 416:
5852 >  case 445:
5853   /* Line 1787 of yacc.c  */
5854 < #line 2426 "conf_parser.y"
5870 <    {
5871 <  if (conf_parser_ctx.pass == 2)
5872 <  {
5873 <    if (gecos_name[0])
5854 > #line 2360 "conf_parser.y"
5855      {
5856 <      if (regex_ban)
5876 <      {
5877 < #ifdef HAVE_LIBPCRE
5878 <        void *exp_p = NULL;
5879 <        const char *errptr = NULL;
5880 <
5881 <        if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
5882 <        {
5883 <          ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5884 <               errptr);
5885 <          break;
5886 <        }
5856 >  struct MaskItem *conf = NULL;
5857  
5858 <        yy_conf = make_conf_item(RXLINE_TYPE);
5889 <        yy_conf->regexpname = exp_p;
5890 < #else
5891 <        ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5892 <        break;
5893 < #endif
5894 <      }
5895 <      else
5896 <        yy_conf = make_conf_item(XLINE_TYPE);
5897 <
5898 <      yy_match_item = map_to_conf(yy_conf);
5899 <      DupString(yy_conf->name, gecos_name);
5900 <
5901 <      if (reasonbuf[0])
5902 <        DupString(yy_match_item->reason, reasonbuf);
5903 <      else
5904 <        DupString(yy_match_item->reason, "No reason");
5905 <    }
5906 <  }
5907 < }
5858 >  if (conf_parser_ctx.pass != 2)
5859      break;
5860  
5861 <  case 417:
5911 < /* Line 1787 of yacc.c  */
5912 < #line 2466 "conf_parser.y"
5913 <    {
5914 < }
5861 >  if (!block_state.name.buf[0])
5862      break;
5863  
5864 <  case 421:
5865 < /* Line 1787 of yacc.c  */
5866 < #line 2471 "conf_parser.y"
5867 <    {
5868 <  if (conf_parser_ctx.pass == 2)
5869 <    regex_ban = 1;
5864 >  conf = conf_make(CONF_XLINE);
5865 >  conf->name = xstrdup(block_state.name.buf);
5866 >
5867 >  if (block_state.rpass.buf[0])
5868 >    conf->reason = xstrdup(block_state.rpass.buf);
5869 >  else
5870 >    conf->reason = xstrdup(CONF_NOREASON);
5871   }
5872      break;
5873  
5874 <  case 428:
5874 >  case 451:
5875   /* Line 1787 of yacc.c  */
5876 < #line 2480 "conf_parser.y"
5876 > #line 2382 "conf_parser.y"
5877      {
5878    if (conf_parser_ctx.pass == 2)
5879 <    strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
5879 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5880   }
5881      break;
5882  
5883 <  case 429:
5883 >  case 452:
5884   /* Line 1787 of yacc.c  */
5885 < #line 2486 "conf_parser.y"
5885 > #line 2388 "conf_parser.y"
5886      {
5887    if (conf_parser_ctx.pass == 2)
5888 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5888 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5889   }
5890      break;
5891  
5892 <  case 487:
5892 >  case 504:
5893   /* Line 1787 of yacc.c  */
5894 < #line 2531 "conf_parser.y"
5894 > #line 2431 "conf_parser.y"
5895      {
5896    ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5897   }
5898      break;
5899  
5900 <  case 488:
5900 >  case 505:
5901   /* Line 1787 of yacc.c  */
5902 < #line 2536 "conf_parser.y"
5902 > #line 2436 "conf_parser.y"
5903      {
5904    if (conf_parser_ctx.pass == 2)
5905      ConfigFileEntry.glines = yylval.number;
5906   }
5907      break;
5908  
5909 <  case 489:
5909 >  case 506:
5910   /* Line 1787 of yacc.c  */
5911 < #line 2542 "conf_parser.y"
5911 > #line 2442 "conf_parser.y"
5912      {
5913    if (conf_parser_ctx.pass == 2)
5914      ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5915   }
5916      break;
5917  
5918 <  case 490:
5918 >  case 507:
5919   /* Line 1787 of yacc.c  */
5920 < #line 2548 "conf_parser.y"
5920 > #line 2448 "conf_parser.y"
5921      {
5922    if (conf_parser_ctx.pass == 2)
5923      ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5924   }
5925      break;
5926  
5927 <  case 491:
5927 >  case 508:
5928   /* Line 1787 of yacc.c  */
5929 < #line 2554 "conf_parser.y"
5929 > #line 2454 "conf_parser.y"
5930      {
5931    ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5932   }
5933      break;
5934  
5935 <  case 492:
5935 >  case 509:
5936   /* Line 1787 of yacc.c  */
5937 < #line 2559 "conf_parser.y"
5937 > #line 2459 "conf_parser.y"
5938      {
5939    ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5940   }
5941      break;
5942  
5943 <  case 493:
5996 < /* Line 1787 of yacc.c  */
5997 < #line 2564 "conf_parser.y"
5998 <    {
5999 <  ConfigFileEntry.use_whois_actually = yylval.number;
6000 < }
6001 <    break;
6002 <
6003 <  case 494:
6004 < /* Line 1787 of yacc.c  */
6005 < #line 2569 "conf_parser.y"
6006 <    {
6007 <  GlobalSetOptions.rejecttime = yylval.number;
6008 < }
6009 <    break;
6010 <
6011 <  case 495:
5943 >  case 510:
5944   /* Line 1787 of yacc.c  */
5945 < #line 2574 "conf_parser.y"
5945 > #line 2464 "conf_parser.y"
5946      {
5947    ConfigFileEntry.tkline_expire_notices = yylval.number;
5948   }
5949      break;
5950  
5951 <  case 496:
5951 >  case 511:
5952   /* Line 1787 of yacc.c  */
5953 < #line 2579 "conf_parser.y"
5953 > #line 2469 "conf_parser.y"
5954      {
5955    ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5956   }
5957      break;
5958  
5959 <  case 497:
5959 >  case 512:
5960   /* Line 1787 of yacc.c  */
5961 < #line 2584 "conf_parser.y"
5961 > #line 2474 "conf_parser.y"
5962      {
5963    ConfigFileEntry.hide_spoof_ips = yylval.number;
5964   }
5965      break;
5966  
5967 <  case 498:
5967 >  case 513:
5968   /* Line 1787 of yacc.c  */
5969 < #line 2589 "conf_parser.y"
5969 > #line 2479 "conf_parser.y"
5970      {
5971    ConfigFileEntry.ignore_bogus_ts = yylval.number;
5972   }
5973      break;
5974  
5975 <  case 499:
6044 < /* Line 1787 of yacc.c  */
6045 < #line 2594 "conf_parser.y"
6046 <    {
6047 <  ConfigFileEntry.disable_remote = yylval.number;
6048 < }
6049 <    break;
6050 <
6051 <  case 500:
5975 >  case 514:
5976   /* Line 1787 of yacc.c  */
5977 < #line 2599 "conf_parser.y"
5977 > #line 2484 "conf_parser.y"
5978      {
5979    ConfigFileEntry.failed_oper_notice = yylval.number;
5980   }
5981      break;
5982  
5983 <  case 501:
5983 >  case 515:
5984   /* Line 1787 of yacc.c  */
5985 < #line 2604 "conf_parser.y"
5985 > #line 2489 "conf_parser.y"
5986      {
5987    ConfigFileEntry.anti_nick_flood = yylval.number;
5988   }
5989      break;
5990  
5991 <  case 502:
5991 >  case 516:
5992   /* Line 1787 of yacc.c  */
5993 < #line 2609 "conf_parser.y"
5993 > #line 2494 "conf_parser.y"
5994      {
5995    ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5996   }
5997      break;
5998  
5999 <  case 503:
5999 >  case 517:
6000   /* Line 1787 of yacc.c  */
6001 < #line 2614 "conf_parser.y"
6001 > #line 2499 "conf_parser.y"
6002      {
6003    ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6004   }
6005      break;
6006  
6007 <  case 504:
6007 >  case 518:
6008   /* Line 1787 of yacc.c  */
6009 < #line 2619 "conf_parser.y"
6009 > #line 2504 "conf_parser.y"
6010      {
6011    ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6012   }
6013      break;
6014  
6015 <  case 505:
6015 >  case 519:
6016   /* Line 1787 of yacc.c  */
6017 < #line 2624 "conf_parser.y"
6017 > #line 2509 "conf_parser.y"
6018      {
6019    ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6020   }
6021      break;
6022  
6023 <  case 506:
6023 >  case 520:
6024   /* Line 1787 of yacc.c  */
6025 < #line 2629 "conf_parser.y"
6025 > #line 2514 "conf_parser.y"
6026      {
6027    ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6028   }
6029      break;
6030  
6031 <  case 507:
6031 >  case 521:
6032   /* Line 1787 of yacc.c  */
6033 < #line 2634 "conf_parser.y"
6033 > #line 2519 "conf_parser.y"
6034      {
6035    if (conf_parser_ctx.pass == 2)
6036      ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6037   }
6038      break;
6039  
6040 <  case 508:
6040 >  case 522:
6041   /* Line 1787 of yacc.c  */
6042 < #line 2640 "conf_parser.y"
6042 > #line 2525 "conf_parser.y"
6043      {
6044    if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6045    {
# Line 6127 | Line 6051 | yyreduce:
6051   }
6052      break;
6053  
6054 <  case 509:
6131 < /* Line 1787 of yacc.c  */
6132 < #line 2651 "conf_parser.y"
6133 <    {
6134 <  ConfigFileEntry.kline_with_reason = yylval.number;
6135 < }
6136 <    break;
6137 <
6138 <  case 510:
6139 < /* Line 1787 of yacc.c  */
6140 < #line 2656 "conf_parser.y"
6141 <    {
6142 <  if (conf_parser_ctx.pass == 2)
6143 <  {
6144 <    MyFree(ConfigFileEntry.kline_reason);
6145 <    DupString(ConfigFileEntry.kline_reason, yylval.string);
6146 <  }
6147 < }
6148 <    break;
6149 <
6150 <  case 511:
6054 >  case 523:
6055   /* Line 1787 of yacc.c  */
6056 < #line 2665 "conf_parser.y"
6056 > #line 2536 "conf_parser.y"
6057      {
6058    ConfigFileEntry.invisible_on_connect = yylval.number;
6059   }
6060      break;
6061  
6062 <  case 512:
6062 >  case 524:
6063   /* Line 1787 of yacc.c  */
6064 < #line 2670 "conf_parser.y"
6064 > #line 2541 "conf_parser.y"
6065      {
6066    ConfigFileEntry.warn_no_nline = yylval.number;
6067   }
6068      break;
6069  
6070 <  case 513:
6070 >  case 525:
6071   /* Line 1787 of yacc.c  */
6072 < #line 2675 "conf_parser.y"
6072 > #line 2546 "conf_parser.y"
6073      {
6074    ConfigFileEntry.stats_e_disabled = yylval.number;
6075   }
6076      break;
6077  
6078 <  case 514:
6078 >  case 526:
6079   /* Line 1787 of yacc.c  */
6080 < #line 2680 "conf_parser.y"
6080 > #line 2551 "conf_parser.y"
6081      {
6082    ConfigFileEntry.stats_o_oper_only = yylval.number;
6083   }
6084      break;
6085  
6086 <  case 515:
6086 >  case 527:
6087   /* Line 1787 of yacc.c  */
6088 < #line 2685 "conf_parser.y"
6088 > #line 2556 "conf_parser.y"
6089      {
6090    ConfigFileEntry.stats_P_oper_only = yylval.number;
6091   }
6092      break;
6093  
6094 <  case 516:
6094 >  case 528:
6095   /* Line 1787 of yacc.c  */
6096 < #line 2690 "conf_parser.y"
6096 > #line 2561 "conf_parser.y"
6097      {
6098    ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6099   }
6100      break;
6101  
6102 <  case 517:
6102 >  case 529:
6103   /* Line 1787 of yacc.c  */
6104 < #line 2693 "conf_parser.y"
6104 > #line 2564 "conf_parser.y"
6105      {
6106    ConfigFileEntry.stats_k_oper_only = 1;
6107   }
6108      break;
6109  
6110 <  case 518:
6110 >  case 530:
6111   /* Line 1787 of yacc.c  */
6112 < #line 2698 "conf_parser.y"
6112 > #line 2569 "conf_parser.y"
6113      {
6114    ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6115   }
6116      break;
6117  
6118 <  case 519:
6118 >  case 531:
6119   /* Line 1787 of yacc.c  */
6120 < #line 2701 "conf_parser.y"
6120 > #line 2572 "conf_parser.y"
6121      {
6122    ConfigFileEntry.stats_i_oper_only = 1;
6123   }
6124      break;
6125  
6126 <  case 520:
6126 >  case 532:
6127   /* Line 1787 of yacc.c  */
6128 < #line 2706 "conf_parser.y"
6128 > #line 2577 "conf_parser.y"
6129      {
6130    ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6131   }
6132      break;
6133  
6134 <  case 521:
6134 >  case 533:
6135   /* Line 1787 of yacc.c  */
6136 < #line 2711 "conf_parser.y"
6136 > #line 2582 "conf_parser.y"
6137      {
6138    ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6139   }
6140      break;
6141  
6142 <  case 522:
6142 >  case 534:
6143   /* Line 1787 of yacc.c  */
6144 < #line 2716 "conf_parser.y"
6144 > #line 2587 "conf_parser.y"
6145      {
6146    ConfigFileEntry.opers_bypass_callerid = yylval.number;
6147   }
6148      break;
6149  
6150 <  case 523:
6150 >  case 535:
6151   /* Line 1787 of yacc.c  */
6152 < #line 2721 "conf_parser.y"
6152 > #line 2592 "conf_parser.y"
6153      {
6154    ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
6155   }
6156      break;
6157  
6158 <  case 524:
6158 >  case 536:
6159   /* Line 1787 of yacc.c  */
6160 < #line 2726 "conf_parser.y"
6160 > #line 2597 "conf_parser.y"
6161      {
6162    ConfigFileEntry.short_motd = yylval.number;
6163   }
6164      break;
6165  
6166 <  case 525:
6166 >  case 537:
6167   /* Line 1787 of yacc.c  */
6168 < #line 2731 "conf_parser.y"
6168 > #line 2602 "conf_parser.y"
6169      {
6170    ConfigFileEntry.no_oper_flood = yylval.number;
6171   }
6172      break;
6173  
6174 <  case 526:
6174 >  case 538:
6175   /* Line 1787 of yacc.c  */
6176 < #line 2736 "conf_parser.y"
6176 > #line 2607 "conf_parser.y"
6177      {
6178    ConfigFileEntry.true_no_oper_flood = yylval.number;
6179   }
6180      break;
6181  
6182 <  case 527:
6182 >  case 539:
6183   /* Line 1787 of yacc.c  */
6184 < #line 2741 "conf_parser.y"
6184 > #line 2612 "conf_parser.y"
6185      {
6186    ConfigFileEntry.oper_pass_resv = yylval.number;
6187   }
6188      break;
6189  
6190 <  case 528:
6190 >  case 540:
6191   /* Line 1787 of yacc.c  */
6192 < #line 2746 "conf_parser.y"
6289 <    {
6290 <  if (conf_parser_ctx.pass == 2)
6291 <  {
6292 <    if (strlen(yylval.string) > LOCALE_LENGTH-2)
6293 <      yylval.string[LOCALE_LENGTH-1] = '\0';
6294 <
6295 <    set_locale(yylval.string);
6296 <  }
6297 < }
6298 <    break;
6299 <
6300 <  case 529:
6301 < /* Line 1787 of yacc.c  */
6302 < #line 2757 "conf_parser.y"
6192 > #line 2617 "conf_parser.y"
6193      {
6194    ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6195   }
6196      break;
6197  
6198 <  case 530:
6198 >  case 541:
6199   /* Line 1787 of yacc.c  */
6200 < #line 2762 "conf_parser.y"
6200 > #line 2622 "conf_parser.y"
6201      {
6202    ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6203   }
6204      break;
6205  
6206 <  case 531:
6206 >  case 542:
6207   /* Line 1787 of yacc.c  */
6208 < #line 2767 "conf_parser.y"
6208 > #line 2627 "conf_parser.y"
6209      {
6210    ConfigFileEntry.use_egd = yylval.number;
6211   }
6212      break;
6213  
6214 <  case 532:
6214 >  case 543:
6215   /* Line 1787 of yacc.c  */
6216 < #line 2772 "conf_parser.y"
6216 > #line 2632 "conf_parser.y"
6217      {
6218    if (conf_parser_ctx.pass == 2)
6219    {
6220      MyFree(ConfigFileEntry.egdpool_path);
6221 <    DupString(ConfigFileEntry.egdpool_path, yylval.string);
6221 >    ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6222    }
6223   }
6224      break;
6225  
6226 <  case 533:
6226 >  case 544:
6227   /* Line 1787 of yacc.c  */
6228 < #line 2781 "conf_parser.y"
6228 > #line 2641 "conf_parser.y"
6229      {
6230    if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6231    {
6232      MyFree(ConfigFileEntry.service_name);
6233 <    DupString(ConfigFileEntry.service_name, yylval.string);
6233 >    ConfigFileEntry.service_name = xstrdup(yylval.string);
6234    }
6235   }
6236      break;
6237  
6238 <  case 534:
6238 >  case 545:
6239   /* Line 1787 of yacc.c  */
6240 < #line 2790 "conf_parser.y"
6240 > #line 2650 "conf_parser.y"
6241      {
6242    ConfigFileEntry.ping_cookie = yylval.number;
6243   }
6244      break;
6245  
6246 <  case 535:
6246 >  case 546:
6247   /* Line 1787 of yacc.c  */
6248 < #line 2795 "conf_parser.y"
6248 > #line 2655 "conf_parser.y"
6249      {
6250    ConfigFileEntry.disable_auth = yylval.number;
6251   }
6252      break;
6253  
6254 <  case 536:
6254 >  case 547:
6255   /* Line 1787 of yacc.c  */
6256 < #line 2800 "conf_parser.y"
6256 > #line 2660 "conf_parser.y"
6257      {
6258    ConfigFileEntry.throttle_time = yylval.number;
6259   }
6260      break;
6261  
6262 <  case 537:
6262 >  case 548:
6263   /* Line 1787 of yacc.c  */
6264 < #line 2805 "conf_parser.y"
6264 > #line 2665 "conf_parser.y"
6265      {
6266    ConfigFileEntry.oper_umodes = 0;
6267   }
6268      break;
6269  
6270 <  case 541:
6270 >  case 552:
6271   /* Line 1787 of yacc.c  */
6272 < #line 2811 "conf_parser.y"
6272 > #line 2671 "conf_parser.y"
6273      {
6274    ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6275   }
6276      break;
6277  
6278 <  case 542:
6278 >  case 553:
6279   /* Line 1787 of yacc.c  */
6280 < #line 2814 "conf_parser.y"
6280 > #line 2674 "conf_parser.y"
6281      {
6282    ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6283   }
6284      break;
6285  
6286 <  case 543:
6397 < /* Line 1787 of yacc.c  */
6398 < #line 2817 "conf_parser.y"
6399 <    {
6400 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6401 < }
6402 <    break;
6403 <
6404 <  case 544:
6286 >  case 554:
6287   /* Line 1787 of yacc.c  */
6288 < #line 2820 "conf_parser.y"
6288 > #line 2677 "conf_parser.y"
6289      {
6290    ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6291   }
6292      break;
6293  
6294 <  case 545:
6294 >  case 555:
6295   /* Line 1787 of yacc.c  */
6296 < #line 2823 "conf_parser.y"
6296 > #line 2680 "conf_parser.y"
6297      {
6298    ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6299   }
6300      break;
6301  
6302 <  case 546:
6302 >  case 556:
6303   /* Line 1787 of yacc.c  */
6304 < #line 2826 "conf_parser.y"
6304 > #line 2683 "conf_parser.y"
6305      {
6306    ConfigFileEntry.oper_umodes |= UMODE_FULL;
6307   }
6308      break;
6309  
6310 <  case 547:
6310 >  case 557:
6311   /* Line 1787 of yacc.c  */
6312 < #line 2829 "conf_parser.y"
6312 > #line 2686 "conf_parser.y"
6313      {
6314    ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6315   }
6316      break;
6317  
6318 <  case 548:
6318 >  case 558:
6319   /* Line 1787 of yacc.c  */
6320 < #line 2832 "conf_parser.y"
6320 > #line 2689 "conf_parser.y"
6321      {
6322    ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6323   }
6324      break;
6325  
6326 <  case 549:
6326 >  case 559:
6327   /* Line 1787 of yacc.c  */
6328 < #line 2835 "conf_parser.y"
6328 > #line 2692 "conf_parser.y"
6329      {
6330    ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6331   }
6332      break;
6333  
6334 <  case 550:
6334 >  case 560:
6335   /* Line 1787 of yacc.c  */
6336 < #line 2838 "conf_parser.y"
6336 > #line 2695 "conf_parser.y"
6337      {
6338    ConfigFileEntry.oper_umodes |= UMODE_REJ;
6339   }
6340      break;
6341  
6342 <  case 551:
6342 >  case 561:
6343   /* Line 1787 of yacc.c  */
6344 < #line 2841 "conf_parser.y"
6344 > #line 2698 "conf_parser.y"
6345      {
6346    ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6347   }
6348      break;
6349  
6350 <  case 552:
6350 >  case 562:
6351   /* Line 1787 of yacc.c  */
6352 < #line 2844 "conf_parser.y"
6352 > #line 2701 "conf_parser.y"
6353      {
6354    ConfigFileEntry.oper_umodes |= UMODE_SPY;
6355   }
6356      break;
6357  
6358 <  case 553:
6358 >  case 563:
6359   /* Line 1787 of yacc.c  */
6360 < #line 2847 "conf_parser.y"
6360 > #line 2704 "conf_parser.y"
6361      {
6362    ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6363   }
6364      break;
6365  
6366 <  case 554:
6366 >  case 564:
6367   /* Line 1787 of yacc.c  */
6368 < #line 2850 "conf_parser.y"
6368 > #line 2707 "conf_parser.y"
6369      {
6370    ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6371   }
6372      break;
6373  
6374 <  case 555:
6374 >  case 565:
6375   /* Line 1787 of yacc.c  */
6376 < #line 2853 "conf_parser.y"
6376 > #line 2710 "conf_parser.y"
6377      {
6378    ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6379   }
6380      break;
6381  
6382 <  case 556:
6382 >  case 566:
6383   /* Line 1787 of yacc.c  */
6384 < #line 2856 "conf_parser.y"
6384 > #line 2713 "conf_parser.y"
6385      {
6386    ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6387   }
6388      break;
6389  
6390 <  case 557:
6390 >  case 567:
6391   /* Line 1787 of yacc.c  */
6392 < #line 2859 "conf_parser.y"
6392 > #line 2716 "conf_parser.y"
6393      {
6394    ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6395   }
6396      break;
6397  
6398 <  case 558:
6398 >  case 568:
6399   /* Line 1787 of yacc.c  */
6400 < #line 2862 "conf_parser.y"
6400 > #line 2719 "conf_parser.y"
6401      {
6402    ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6403   }
6404      break;
6405  
6406 <  case 559:
6406 >  case 569:
6407   /* Line 1787 of yacc.c  */
6408 < #line 2865 "conf_parser.y"
6408 > #line 2722 "conf_parser.y"
6409      {
6410    ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6411   }
6412      break;
6413  
6414 <  case 560:
6414 >  case 570:
6415   /* Line 1787 of yacc.c  */
6416 < #line 2868 "conf_parser.y"
6416 > #line 2725 "conf_parser.y"
6417      {
6418    ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6419   }
6420      break;
6421  
6422 <  case 561:
6422 >  case 571:
6423   /* Line 1787 of yacc.c  */
6424 < #line 2873 "conf_parser.y"
6424 > #line 2728 "conf_parser.y"
6425      {
6426 <  ConfigFileEntry.oper_only_umodes = 0;
6426 >  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6427   }
6428      break;
6429  
6430 <  case 565:
6430 >  case 572:
6431   /* Line 1787 of yacc.c  */
6432 < #line 2879 "conf_parser.y"
6432 > #line 2731 "conf_parser.y"
6433      {
6434 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6434 >  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6435   }
6436      break;
6437  
6438 <  case 566:
6438 >  case 573:
6439   /* Line 1787 of yacc.c  */
6440 < #line 2882 "conf_parser.y"
6440 > #line 2736 "conf_parser.y"
6441      {
6442 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6442 >  ConfigFileEntry.oper_only_umodes = 0;
6443   }
6444      break;
6445  
6446 <  case 567:
6446 >  case 577:
6447   /* Line 1787 of yacc.c  */
6448 < #line 2885 "conf_parser.y"
6448 > #line 2742 "conf_parser.y"
6449 >    {
6450 >  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6451 > }
6452 >    break;
6453 >
6454 >  case 578:
6455 > /* Line 1787 of yacc.c  */
6456 > #line 2745 "conf_parser.y"
6457      {
6458 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6458 >  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6459   }
6460      break;
6461  
6462 <  case 568:
6462 >  case 579:
6463   /* Line 1787 of yacc.c  */
6464 < #line 2888 "conf_parser.y"
6464 > #line 2748 "conf_parser.y"
6465      {
6466    ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6467   }
6468      break;
6469  
6470 <  case 569:
6470 >  case 580:
6471   /* Line 1787 of yacc.c  */
6472 < #line 2891 "conf_parser.y"
6472 > #line 2751 "conf_parser.y"
6473      {
6474    ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6475   }
6476      break;
6477  
6478 <  case 570:
6478 >  case 581:
6479   /* Line 1787 of yacc.c  */
6480 < #line 2894 "conf_parser.y"
6480 > #line 2754 "conf_parser.y"
6481      {
6482    ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6483   }
6484      break;
6485  
6486 <  case 571:
6486 >  case 582:
6487   /* Line 1787 of yacc.c  */
6488 < #line 2897 "conf_parser.y"
6488 > #line 2757 "conf_parser.y"
6489      {
6490    ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6491   }
6492      break;
6493  
6494 <  case 572:
6494 >  case 583:
6495   /* Line 1787 of yacc.c  */
6496 < #line 2900 "conf_parser.y"
6496 > #line 2760 "conf_parser.y"
6497      {
6498    ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6499   }
6500      break;
6501  
6502 <  case 573:
6502 >  case 584:
6503   /* Line 1787 of yacc.c  */
6504 < #line 2903 "conf_parser.y"
6504 > #line 2763 "conf_parser.y"
6505      {
6506    ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6507   }
6508      break;
6509  
6510 <  case 574:
6510 >  case 585:
6511   /* Line 1787 of yacc.c  */
6512 < #line 2906 "conf_parser.y"
6512 > #line 2766 "conf_parser.y"
6513      {
6514    ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6515   }
6516      break;
6517  
6518 <  case 575:
6518 >  case 586:
6519   /* Line 1787 of yacc.c  */
6520 < #line 2909 "conf_parser.y"
6520 > #line 2769 "conf_parser.y"
6521      {
6522    ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6523   }
6524      break;
6525  
6526 <  case 576:
6526 >  case 587:
6527   /* Line 1787 of yacc.c  */
6528 < #line 2912 "conf_parser.y"
6528 > #line 2772 "conf_parser.y"
6529      {
6530    ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6531   }
6532      break;
6533  
6534 <  case 577:
6534 >  case 588:
6535   /* Line 1787 of yacc.c  */
6536 < #line 2915 "conf_parser.y"
6536 > #line 2775 "conf_parser.y"
6537      {
6538    ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6539   }
6540      break;
6541  
6542 <  case 578:
6542 >  case 589:
6543   /* Line 1787 of yacc.c  */
6544 < #line 2918 "conf_parser.y"
6544 > #line 2778 "conf_parser.y"
6545      {
6546    ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6547   }
6548      break;
6549  
6550 <  case 579:
6550 >  case 590:
6551   /* Line 1787 of yacc.c  */
6552 < #line 2921 "conf_parser.y"
6552 > #line 2781 "conf_parser.y"
6553      {
6554    ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6555   }
6556      break;
6557  
6558 <  case 580:
6558 >  case 591:
6559   /* Line 1787 of yacc.c  */
6560 < #line 2924 "conf_parser.y"
6560 > #line 2784 "conf_parser.y"
6561      {
6562    ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6563   }
6564      break;
6565  
6566 <  case 581:
6566 >  case 592:
6567   /* Line 1787 of yacc.c  */
6568 < #line 2927 "conf_parser.y"
6568 > #line 2787 "conf_parser.y"
6569      {
6570    ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6571   }
6572      break;
6573  
6574 <  case 582:
6574 >  case 593:
6575   /* Line 1787 of yacc.c  */
6576 < #line 2930 "conf_parser.y"
6576 > #line 2790 "conf_parser.y"
6577      {
6578    ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6579   }
6580      break;
6581  
6582 <  case 583:
6582 >  case 594:
6583   /* Line 1787 of yacc.c  */
6584 < #line 2933 "conf_parser.y"
6584 > #line 2793 "conf_parser.y"
6585      {
6586    ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6587   }
6588      break;
6589  
6590 <  case 584:
6590 >  case 595:
6591   /* Line 1787 of yacc.c  */
6592 < #line 2936 "conf_parser.y"
6592 > #line 2796 "conf_parser.y"
6593      {
6594    ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6595   }
6596      break;
6597  
6598 <  case 585:
6598 >  case 596:
6599   /* Line 1787 of yacc.c  */
6600 < #line 2941 "conf_parser.y"
6600 > #line 2799 "conf_parser.y"
6601      {
6602 <  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6602 >  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6603   }
6604      break;
6605  
6606 <  case 586:
6606 >  case 597:
6607   /* Line 1787 of yacc.c  */
6608 < #line 2946 "conf_parser.y"
6608 > #line 2802 "conf_parser.y"
6609      {
6610 <  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6610 >  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6611   }
6612      break;
6613  
6614 <  case 587:
6614 >  case 598:
6615   /* Line 1787 of yacc.c  */
6616 < #line 2951 "conf_parser.y"
6616 > #line 2807 "conf_parser.y"
6617      {
6618 <  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6618 >  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6619   }
6620      break;
6621  
6622 <  case 606:
6622 >  case 599:
6623   /* Line 1787 of yacc.c  */
6624 < #line 2974 "conf_parser.y"
6624 > #line 2812 "conf_parser.y"
6625      {
6626 <  ConfigChannel.disable_fake_channels = yylval.number;
6626 >  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6627   }
6628      break;
6629  
6630 <  case 607:
6630 >  case 600:
6631   /* Line 1787 of yacc.c  */
6632 < #line 2979 "conf_parser.y"
6632 > #line 2817 "conf_parser.y"
6633      {
6634 <  ConfigChannel.restrict_channels = yylval.number;
6634 >  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6635   }
6636      break;
6637  
6638 <  case 608:
6638 >  case 617:
6639   /* Line 1787 of yacc.c  */
6640 < #line 2984 "conf_parser.y"
6640 > #line 2840 "conf_parser.y"
6641      {
6642 <  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6642 >  ConfigChannel.disable_fake_channels = yylval.number;
6643   }
6644      break;
6645  
6646 <  case 609:
6646 >  case 618:
6647   /* Line 1787 of yacc.c  */
6648 < #line 2989 "conf_parser.y"
6648 > #line 2845 "conf_parser.y"
6649      {
6650 <  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6650 >  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6651   }
6652      break;
6653  
6654 <  case 610:
6654 >  case 619:
6655   /* Line 1787 of yacc.c  */
6656 < #line 2994 "conf_parser.y"
6656 > #line 2850 "conf_parser.y"
6657      {
6658 <  ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6658 >  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6659   }
6660      break;
6661  
6662 <  case 611:
6662 >  case 620:
6663   /* Line 1787 of yacc.c  */
6664 < #line 2999 "conf_parser.y"
6664 > #line 2855 "conf_parser.y"
6665      {
6666 <  ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6666 >  ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6667   }
6668      break;
6669  
6670 <  case 612:
6670 >  case 621:
6671   /* Line 1787 of yacc.c  */
6672 < #line 3004 "conf_parser.y"
6672 > #line 2860 "conf_parser.y"
6673      {
6674 <  ConfigChannel.quiet_on_ban = yylval.number;
6674 >  ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6675   }
6676      break;
6677  
6678 <  case 613:
6678 >  case 622:
6679   /* Line 1787 of yacc.c  */
6680 < #line 3009 "conf_parser.y"
6680 > #line 2865 "conf_parser.y"
6681      {
6682    ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6683   }
6684      break;
6685  
6686 <  case 614:
6686 >  case 623:
6687   /* Line 1787 of yacc.c  */
6688 < #line 3014 "conf_parser.y"
6688 > #line 2870 "conf_parser.y"
6689      {
6690    ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6691   }
6692      break;
6693  
6694 <  case 615:
6694 >  case 624:
6695   /* Line 1787 of yacc.c  */
6696 < #line 3019 "conf_parser.y"
6696 > #line 2875 "conf_parser.y"
6697      {
6698    ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6699   }
6700      break;
6701  
6702 <  case 616:
6702 >  case 625:
6703   /* Line 1787 of yacc.c  */
6704 < #line 3024 "conf_parser.y"
6704 > #line 2880 "conf_parser.y"
6705      {
6706    ConfigChannel.no_create_on_split = yylval.number;
6707   }
6708      break;
6709  
6710 <  case 617:
6710 >  case 626:
6711   /* Line 1787 of yacc.c  */
6712 < #line 3029 "conf_parser.y"
6712 > #line 2885 "conf_parser.y"
6713      {
6714    ConfigChannel.no_join_on_split = yylval.number;
6715   }
6716      break;
6717  
6718 <  case 618:
6718 >  case 627:
6719   /* Line 1787 of yacc.c  */
6720 < #line 3034 "conf_parser.y"
6720 > #line 2890 "conf_parser.y"
6721      {
6722    GlobalSetOptions.joinfloodcount = yylval.number;
6723   }
6724      break;
6725  
6726 <  case 619:
6726 >  case 628:
6727   /* Line 1787 of yacc.c  */
6728 < #line 3039 "conf_parser.y"
6728 > #line 2895 "conf_parser.y"
6729      {
6730    GlobalSetOptions.joinfloodtime = yylval.number;
6731   }
6732      break;
6733  
6734 <  case 630:
6734 >  case 641:
6735   /* Line 1787 of yacc.c  */
6736 < #line 3057 "conf_parser.y"
6736 > #line 2915 "conf_parser.y"
6737      {
6738    if (conf_parser_ctx.pass == 2)
6739      ConfigServerHide.flatten_links = yylval.number;
6740   }
6741      break;
6742  
6743 <  case 631:
6743 >  case 642:
6744 > /* Line 1787 of yacc.c  */
6745 > #line 2921 "conf_parser.y"
6746 >    {
6747 >  if (conf_parser_ctx.pass == 2)
6748 >    ConfigServerHide.disable_remote_commands = yylval.number;
6749 > }
6750 >    break;
6751 >
6752 >  case 643:
6753   /* Line 1787 of yacc.c  */
6754 < #line 3063 "conf_parser.y"
6754 > #line 2927 "conf_parser.y"
6755      {
6756    if (conf_parser_ctx.pass == 2)
6757      ConfigServerHide.hide_servers = yylval.number;
6758   }
6759      break;
6760  
6761 <  case 632:
6761 >  case 644:
6762 > /* Line 1787 of yacc.c  */
6763 > #line 2933 "conf_parser.y"
6764 >    {
6765 >  if (conf_parser_ctx.pass == 2)
6766 >    ConfigServerHide.hide_services = yylval.number;
6767 > }
6768 >    break;
6769 >
6770 >  case 645:
6771   /* Line 1787 of yacc.c  */
6772 < #line 3069 "conf_parser.y"
6772 > #line 2939 "conf_parser.y"
6773      {
6774    if (conf_parser_ctx.pass == 2)
6775    {
6776      MyFree(ConfigServerHide.hidden_name);
6777 <    DupString(ConfigServerHide.hidden_name, yylval.string);
6777 >    ConfigServerHide.hidden_name = xstrdup(yylval.string);
6778    }
6779   }
6780      break;
6781  
6782 <  case 633:
6782 >  case 646:
6783   /* Line 1787 of yacc.c  */
6784 < #line 3078 "conf_parser.y"
6784 > #line 2948 "conf_parser.y"
6785      {
6786    if (conf_parser_ctx.pass == 2)
6787    {
# Line 6888 | Line 6796 | yyreduce:
6796   }
6797      break;
6798  
6799 <  case 634:
6799 >  case 647:
6800   /* Line 1787 of yacc.c  */
6801 < #line 3092 "conf_parser.y"
6801 > #line 2962 "conf_parser.y"
6802      {
6803    if (conf_parser_ctx.pass == 2)
6804      ConfigServerHide.hidden = yylval.number;
6805   }
6806      break;
6807  
6808 <  case 635:
6808 >  case 648:
6809   /* Line 1787 of yacc.c  */
6810 < #line 3098 "conf_parser.y"
6810 > #line 2968 "conf_parser.y"
6811      {
6812    if (conf_parser_ctx.pass == 2)
6813      ConfigServerHide.hide_server_ips = yylval.number;
# Line 6908 | Line 6816 | yyreduce:
6816  
6817  
6818   /* Line 1787 of yacc.c  */
6819 < #line 6912 "conf_parser.c"
6819 > #line 6820 "conf_parser.c"
6820        default: break;
6821      }
6822    /* User semantic actions sometimes alter yychar, and that requires
# Line 7071 | Line 6979 | yyerrlab1:
6979        YY_STACK_PRINT (yyss, yyssp);
6980      }
6981  
6982 +  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6983    *++yyvsp = yylval;
6984 +  YY_IGNORE_MAYBE_UNINITIALIZED_END
6985  
6986  
6987    /* Shift the error token.  */

Comparing:
ircd-hybrid-8/src/conf_parser.c (property svn:keywords), Revision 1520 by michael, Wed Sep 5 15:50:02 2012 UTC vs.
ircd-hybrid/trunk/src/conf_parser.c (property svn:keywords), Revision 2244 by michael, Sat Jun 15 22:08:10 2013 UTC

# Line 0 | Line 1
1 + Id Revision

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)