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-7.3/src/ircd_parser.c (file contents), Revision 1119 by michael, Fri Jan 7 22:01:47 2011 UTC vs.
ircd-hybrid/trunk/src/conf_parser.c (file contents), Revision 3513 by michael, Mon May 12 16:28:29 2014 UTC

# Line 1 | Line 1
1 < /* A Bison parser, made by GNU Bison 2.4.3.  */
1 > /* A Bison parser, made by GNU Bison 3.0.2.  */
2 >
3 > /* Bison implementation for Yacc-like parsers in C
4 >
5 >   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6  
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4  
5      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6   2009, 2010 Free Software Foundation, Inc.
7  
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
9     the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11 <  
11 >
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16 <  
16 >
17     You should have received a copy of the GNU General Public License
18     along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19  
# Line 27 | Line 26
26     special exception, which will cause the skeleton and the resulting
27     Bison output files to be licensed under the GNU General Public
28     License without this special exception.
29 <  
29 >
30     This special exception was added by the Free Software Foundation in
31     version 2.2 of Bison.  */
32  
# Line 45 | Line 44
44   #define YYBISON 1
45  
46   /* Bison version.  */
47 < #define YYBISON_VERSION "2.4.3"
47 > #define YYBISON_VERSION "3.0.2"
48  
49   /* Skeleton name.  */
50   #define YYSKELETON_NAME "yacc.c"
# Line 59 | Line 58
58   /* Pull parsers.  */
59   #define YYPULL 1
60  
62 /* Using locations.  */
63 #define YYLSP_NEEDED 0
61  
62  
63  
64   /* Copy the first part of user declarations.  */
65 <
69 < /* Line 189 of yacc.c  */
70 < #line 25 "ircd_parser.y"
65 > #line 28 "conf_parser.y" /* yacc.c:339  */
66  
67  
68   #define YY_NO_UNPUT
# Line 78 | Line 73
73   #include "stdinc.h"
74   #include "ircd.h"
75   #include "list.h"
76 < #include "s_conf.h"
76 > #include "conf.h"
77 > #include "conf_class.h"
78   #include "event.h"
79 < #include "s_log.h"
79 > #include "log.h"
80   #include "client.h"     /* for UMODE_ALL only */
81   #include "irc_string.h"
86 #include "irc_getaddrinfo.h"
87 #include "sprintf_irc.h"
82   #include "memory.h"
83   #include "modules.h"
84 < #include "s_serv.h"
84 > #include "server.h"
85   #include "hostmask.h"
86   #include "send.h"
87   #include "listener.h"
88   #include "resv.h"
89   #include "numeric.h"
90 < #include "s_user.h"
90 > #include "user.h"
91 > #include "motd.h"
92  
93   #ifdef HAVE_LIBCRYPTO
94   #include <openssl/rsa.h>
95   #include <openssl/bio.h>
96   #include <openssl/pem.h>
97 + #include <openssl/dh.h>
98   #endif
99  
100 < static char *class_name = NULL;
105 < static struct ConfItem *yy_conf = NULL;
106 < static struct AccessItem *yy_aconf = NULL;
107 < static struct MatchItem *yy_match_item = NULL;
108 < static struct ClassItem *yy_class = NULL;
109 < static char *yy_class_name = NULL;
110 <
111 < static dlink_list col_conf_list  = { NULL, NULL, 0 };
112 < static dlink_list hub_conf_list  = { NULL, NULL, 0 };
113 < static dlink_list leaf_conf_list = { NULL, NULL, 0 };
114 < static unsigned int listener_flags = 0;
115 < static unsigned int regex_ban = 0;
116 < static char userbuf[IRCD_BUFSIZE];
117 < static char hostbuf[IRCD_BUFSIZE];
118 < static char reasonbuf[REASONLEN + 1];
119 < static char gecos_name[REALLEN * 4];
120 <
121 < static char *resv_reason = NULL;
122 < static char *listener_address = NULL;
123 < static int not_atom = 0;
100 > #include "rsa.h"
101  
102 < struct CollectItem
126 < {
127 <  dlink_node node;
128 <  char *name;
129 <  char *user;
130 <  char *host;
131 <  char *passwd;
132 <  int  port;
133 <  int  flags;
134 < #ifdef HAVE_LIBCRYPTO
135 <  char *rsa_public_key_file;
136 <  RSA *rsa_public_key;
137 < #endif
138 < };
102 > int yylex(void);
103  
104 < static void
141 < free_collect_item(struct CollectItem *item)
104 > static struct
105   {
106 <  MyFree(item->name);
107 <  MyFree(item->user);
108 <  MyFree(item->host);
109 <  MyFree(item->passwd);
110 < #ifdef HAVE_LIBCRYPTO
111 <  MyFree(item->rsa_public_key_file);
112 < #endif
113 <  MyFree(item);
114 < }
106 >  struct
107 >  {
108 >    dlink_list list;
109 >  } mask,
110 >    leaf,
111 >    hub;
112 >
113 >  struct
114 >  {
115 >    char buf[IRCD_BUFSIZE];
116 >  } name,
117 >    user,
118 >    host,
119 >    addr,
120 >    bind,
121 >    file,
122 >    ciph,
123 >    cert,
124 >    rpass,
125 >    spass,
126 >    class;
127 >
128 >  struct
129 >  {
130 >    unsigned int value;
131 >  } flags,
132 >    modes,
133 >    size,
134 >    type,
135 >    port,
136 >    aftype,
137 >    ping_freq,
138 >    max_perip,
139 >    con_freq,
140 >    min_idle,
141 >    max_idle,
142 >    max_total,
143 >    max_global,
144 >    max_local,
145 >    max_ident,
146 >    max_sendq,
147 >    max_recvq,
148 >    cidr_bitlen_ipv4,
149 >    cidr_bitlen_ipv6,
150 >    number_per_cidr;
151 > } block_state;
152  
153   static void
154 < unhook_hub_leaf_confs(void)
154 > reset_block_state(void)
155   {
156 <  dlink_node *ptr;
157 <  dlink_node *next_ptr;
158 <  struct CollectItem *yy_hconf;
159 <  struct CollectItem *yy_lconf;
156 >  dlink_node *ptr = NULL, *ptr_next = NULL;
157  
158 <  DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
158 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.mask.list.head)
159    {
160 <    yy_hconf = ptr->data;
161 <    dlinkDelete(&yy_hconf->node, &hub_conf_list);
162 <    free_collect_item(yy_hconf);
160 >    MyFree(ptr->data);
161 >    dlinkDelete(ptr, &block_state.mask.list);
162 >    free_dlink_node(ptr);
163    }
164  
165 <  DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
165 >  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.leaf.list.head)
166    {
167 <    yy_lconf = ptr->data;
168 <    dlinkDelete(&yy_lconf->node, &leaf_conf_list);
169 <    free_collect_item(yy_lconf);
167 >    MyFree(ptr->data);
168 >    dlinkDelete(ptr, &block_state.leaf.list);
169 >    free_dlink_node(ptr);
170    }
174 }
171  
172 +  DLINK_FOREACH_SAFE(ptr, ptr_next, block_state.hub.list.head)
173 +  {
174 +    MyFree(ptr->data);
175 +    dlinkDelete(ptr, &block_state.hub.list);
176 +    free_dlink_node(ptr);
177 +  }
178  
179 +  memset(&block_state, 0, sizeof(block_state));
180 + }
181  
178 /* Line 189 of yacc.c  */
179 #line 180 "ircd_parser.c"
182  
183 < /* Enabling traces.  */
184 < #ifndef YYDEBUG
185 < # define YYDEBUG 0
186 < #endif
183 > #line 184 "conf_parser.c" /* yacc.c:339  */
184 >
185 > # ifndef YY_NULLPTR
186 > #  if defined __cplusplus && 201103L <= __cplusplus
187 > #   define YY_NULLPTR nullptr
188 > #  else
189 > #   define YY_NULLPTR 0
190 > #  endif
191 > # endif
192  
193   /* Enabling verbose error messages.  */
194   #ifdef YYERROR_VERBOSE
# Line 191 | Line 198 | unhook_hub_leaf_confs(void)
198   # define YYERROR_VERBOSE 0
199   #endif
200  
201 < /* Enabling the token table.  */
202 < #ifndef YYTOKEN_TABLE
203 < # define YYTOKEN_TABLE 0
201 > /* In a future release of Bison, this section will be replaced
202 >   by #include "y.tab.h".  */
203 > #ifndef YY_YY_CONF_PARSER_H_INCLUDED
204 > # define YY_YY_CONF_PARSER_H_INCLUDED
205 > /* Debug traces.  */
206 > #ifndef YYDEBUG
207 > # define YYDEBUG 0
208 > #endif
209 > #if YYDEBUG
210 > extern int yydebug;
211   #endif
212  
213 <
200 < /* Tokens.  */
213 > /* Token type.  */
214   #ifndef YYTOKENTYPE
215   # define YYTOKENTYPE
216 <   /* Put the tokens into the symbol table, so that GDB and other debuggers
217 <      know about them.  */
218 <   enum yytokentype {
219 <     ACCEPT_PASSWORD = 258,
220 <     ACTION = 259,
221 <     ADMIN = 260,
222 <     AFTYPE = 261,
223 <     T_ALLOW = 262,
224 <     ANTI_NICK_FLOOD = 263,
225 <     ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
226 <     AUTOCONN = 265,
227 <     T_BLOCK = 266,
228 <     BURST_AWAY = 267,
229 <     BURST_TOPICWHO = 268,
230 <     BYTES = 269,
231 <     KBYTES = 270,
232 <     MBYTES = 271,
233 <     GBYTES = 272,
234 <     TBYTES = 273,
235 <     CALLER_ID_WAIT = 274,
236 <     CAN_FLOOD = 275,
237 <     CAN_IDLE = 276,
238 <     CHANNEL = 277,
239 <     CIDR_BITLEN_IPV4 = 278,
240 <     CIDR_BITLEN_IPV6 = 279,
241 <     CIPHER_PREFERENCE = 280,
242 <     CLASS = 281,
243 <     COMPRESSED = 282,
244 <     COMPRESSION_LEVEL = 283,
245 <     CONNECT = 284,
246 <     CONNECTFREQ = 285,
247 <     CRYPTLINK = 286,
248 <     DEFAULT_CIPHER_PREFERENCE = 287,
249 <     DEFAULT_FLOODCOUNT = 288,
250 <     DEFAULT_SPLIT_SERVER_COUNT = 289,
251 <     DEFAULT_SPLIT_USER_COUNT = 290,
252 <     DENY = 291,
253 <     DESCRIPTION = 292,
254 <     DIE = 293,
255 <     DISABLE_AUTH = 294,
256 <     DISABLE_FAKE_CHANNELS = 295,
257 <     DISABLE_HIDDEN = 296,
258 <     DISABLE_LOCAL_CHANNELS = 297,
259 <     DISABLE_REMOTE_COMMANDS = 298,
260 <     DOTS_IN_IDENT = 299,
261 <     DURATION = 300,
262 <     EGDPOOL_PATH = 301,
263 <     EMAIL = 302,
264 <     ENABLE = 303,
265 <     ENCRYPTED = 304,
266 <     EXCEED_LIMIT = 305,
267 <     EXEMPT = 306,
268 <     FAILED_OPER_NOTICE = 307,
269 <     IRCD_FLAGS = 308,
270 <     FLATTEN_LINKS = 309,
271 <     FFAILED_OPERLOG = 310,
272 <     FKILLLOG = 311,
273 <     FKLINELOG = 312,
274 <     FGLINELOG = 313,
275 <     FIOERRLOG = 314,
276 <     FOPERLOG = 315,
277 <     FOPERSPYLOG = 316,
278 <     FUSERLOG = 317,
279 <     GECOS = 318,
280 <     GENERAL = 319,
281 <     GLINE = 320,
282 <     GLINES = 321,
283 <     GLINE_EXEMPT = 322,
284 <     GLINE_LOG = 323,
285 <     GLINE_TIME = 324,
286 <     GLINE_MIN_CIDR = 325,
287 <     GLINE_MIN_CIDR6 = 326,
288 <     GLOBAL_KILL = 327,
289 <     IRCD_AUTH = 328,
290 <     NEED_IDENT = 329,
291 <     HAVENT_READ_CONF = 330,
292 <     HIDDEN = 331,
293 <     HIDDEN_ADMIN = 332,
294 <     HIDDEN_NAME = 333,
295 <     HIDDEN_OPER = 334,
296 <     HIDE_SERVER_IPS = 335,
297 <     HIDE_SERVERS = 336,
298 <     HIDE_SPOOF_IPS = 337,
299 <     HOST = 338,
300 <     HUB = 339,
301 <     HUB_MASK = 340,
302 <     IDLETIME = 341,
303 <     IGNORE_BOGUS_TS = 342,
304 <     INVISIBLE_ON_CONNECT = 343,
305 <     IP = 344,
306 <     KILL = 345,
307 <     KILL_CHASE_TIME_LIMIT = 346,
308 <     KLINE = 347,
309 <     KLINE_EXEMPT = 348,
310 <     KLINE_REASON = 349,
311 <     KLINE_WITH_REASON = 350,
312 <     KNOCK_DELAY = 351,
313 <     KNOCK_DELAY_CHANNEL = 352,
314 <     LEAF_MASK = 353,
315 <     LINKS_DELAY = 354,
316 <     LISTEN = 355,
317 <     T_LOG = 356,
318 <     LOGGING = 357,
319 <     LOG_LEVEL = 358,
320 <     MAX_ACCEPT = 359,
321 <     MAX_BANS = 360,
322 <     MAX_CHANS_PER_USER = 361,
323 <     MAX_GLOBAL = 362,
324 <     MAX_IDENT = 363,
325 <     MAX_LOCAL = 364,
326 <     MAX_NICK_CHANGES = 365,
327 <     MAX_NICK_TIME = 366,
328 <     MAX_NUMBER = 367,
329 <     MAX_TARGETS = 368,
330 <     MAX_WATCH = 369,
331 <     MESSAGE_LOCALE = 370,
332 <     MIN_NONWILDCARD = 371,
333 <     MIN_NONWILDCARD_SIMPLE = 372,
334 <     MODULE = 373,
335 <     MODULES = 374,
336 <     NAME = 375,
337 <     NEED_PASSWORD = 376,
338 <     NETWORK_DESC = 377,
339 <     NETWORK_NAME = 378,
340 <     NICK = 379,
341 <     NICK_CHANGES = 380,
342 <     NO_CREATE_ON_SPLIT = 381,
343 <     NO_JOIN_ON_SPLIT = 382,
344 <     NO_OPER_FLOOD = 383,
345 <     NO_TILDE = 384,
346 <     NOT = 385,
347 <     NUMBER = 386,
348 <     NUMBER_PER_IDENT = 387,
349 <     NUMBER_PER_CIDR = 388,
350 <     NUMBER_PER_IP = 389,
351 <     NUMBER_PER_IP_GLOBAL = 390,
352 <     OPERATOR = 391,
353 <     OPERS_BYPASS_CALLERID = 392,
354 <     OPER_LOG = 393,
355 <     OPER_ONLY_UMODES = 394,
356 <     OPER_PASS_RESV = 395,
357 <     OPER_SPY_T = 396,
358 <     OPER_UMODES = 397,
359 <     JOIN_FLOOD_COUNT = 398,
360 <     JOIN_FLOOD_TIME = 399,
361 <     PACE_WAIT = 400,
362 <     PACE_WAIT_SIMPLE = 401,
363 <     PASSWORD = 402,
364 <     PATH = 403,
365 <     PING_COOKIE = 404,
366 <     PING_TIME = 405,
367 <     PING_WARNING = 406,
368 <     PORT = 407,
369 <     QSTRING = 408,
370 <     QUIET_ON_BAN = 409,
371 <     REASON = 410,
372 <     REDIRPORT = 411,
373 <     REDIRSERV = 412,
374 <     REGEX_T = 413,
375 <     REHASH = 414,
376 <     TREJECT_HOLD_TIME = 415,
377 <     REMOTE = 416,
378 <     REMOTEBAN = 417,
379 <     RESTRICT_CHANNELS = 418,
380 <     RESTRICTED = 419,
381 <     RSA_PRIVATE_KEY_FILE = 420,
382 <     RSA_PUBLIC_KEY_FILE = 421,
383 <     SSL_CERTIFICATE_FILE = 422,
384 <     T_SSL_CONNECTION_METHOD = 423,
385 <     T_SSLV3 = 424,
386 <     T_TLSV1 = 425,
387 <     RESV = 426,
388 <     RESV_EXEMPT = 427,
389 <     SECONDS = 428,
390 <     MINUTES = 429,
391 <     HOURS = 430,
392 <     DAYS = 431,
393 <     WEEKS = 432,
394 <     SENDQ = 433,
395 <     SEND_PASSWORD = 434,
396 <     SERVERHIDE = 435,
397 <     SERVERINFO = 436,
398 <     SERVLINK_PATH = 437,
399 <     IRCD_SID = 438,
400 <     TKLINE_EXPIRE_NOTICES = 439,
401 <     T_SHARED = 440,
402 <     T_CLUSTER = 441,
403 <     TYPE = 442,
404 <     SHORT_MOTD = 443,
405 <     SILENT = 444,
406 <     SPOOF = 445,
407 <     SPOOF_NOTICE = 446,
408 <     STATS_E_DISABLED = 447,
409 <     STATS_I_OPER_ONLY = 448,
410 <     STATS_K_OPER_ONLY = 449,
411 <     STATS_O_OPER_ONLY = 450,
412 <     STATS_P_OPER_ONLY = 451,
413 <     TBOOL = 452,
414 <     TMASKED = 453,
415 <     T_REJECT = 454,
416 <     TS_MAX_DELTA = 455,
417 <     TS_WARN_DELTA = 456,
418 <     TWODOTS = 457,
419 <     T_ALL = 458,
420 <     T_BOTS = 459,
421 <     T_SOFTCALLERID = 460,
422 <     T_CALLERID = 461,
423 <     T_CCONN = 462,
424 <     T_CCONN_FULL = 463,
425 <     T_CLIENT_FLOOD = 464,
426 <     T_DEAF = 465,
427 <     T_DEBUG = 466,
428 <     T_DRONE = 467,
429 <     T_EXTERNAL = 468,
430 <     T_FULL = 469,
431 <     T_INVISIBLE = 470,
432 <     T_IPV4 = 471,
433 <     T_IPV6 = 472,
434 <     T_LOCOPS = 473,
435 <     T_LOGPATH = 474,
436 <     T_L_CRIT = 475,
437 <     T_L_DEBUG = 476,
438 <     T_L_ERROR = 477,
439 <     T_L_INFO = 478,
440 <     T_L_NOTICE = 479,
441 <     T_L_TRACE = 480,
442 <     T_L_WARN = 481,
443 <     T_MAX_CLIENTS = 482,
444 <     T_NCHANGE = 483,
432 <     T_OPERWALL = 484,
433 <     T_REJ = 485,
434 <     T_SERVER = 486,
435 <     T_SERVNOTICE = 487,
436 <     T_SKILL = 488,
437 <     T_SPY = 489,
438 <     T_SSL = 490,
439 <     T_UMODES = 491,
440 <     T_UNAUTH = 492,
441 <     T_UNRESV = 493,
442 <     T_UNXLINE = 494,
443 <     T_WALLOP = 495,
444 <     THROTTLE_TIME = 496,
445 <     TOPICBURST = 497,
446 <     TRUE_NO_OPER_FLOOD = 498,
447 <     TKLINE = 499,
448 <     TXLINE = 500,
449 <     TRESV = 501,
450 <     UNKLINE = 502,
451 <     USER = 503,
452 <     USE_EGD = 504,
453 <     USE_EXCEPT = 505,
454 <     USE_INVEX = 506,
455 <     USE_KNOCK = 507,
456 <     USE_LOGGING = 508,
457 <     USE_WHOIS_ACTUALLY = 509,
458 <     VHOST = 510,
459 <     VHOST6 = 511,
460 <     XLINE = 512,
461 <     WARN = 513,
462 <     WARN_NO_NLINE = 514
463 <   };
216 >  enum yytokentype
217 >  {
218 >    ACCEPT_PASSWORD = 258,
219 >    ADMIN = 259,
220 >    AFTYPE = 260,
221 >    ANTI_NICK_FLOOD = 261,
222 >    ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
223 >    AUTOCONN = 263,
224 >    BYTES = 264,
225 >    KBYTES = 265,
226 >    MBYTES = 266,
227 >    CALLER_ID_WAIT = 267,
228 >    CAN_FLOOD = 268,
229 >    CHANNEL = 269,
230 >    CIDR_BITLEN_IPV4 = 270,
231 >    CIDR_BITLEN_IPV6 = 271,
232 >    CLASS = 272,
233 >    CONNECT = 273,
234 >    CONNECTFREQ = 274,
235 >    CYCLE_ON_HOST_CHANGE = 275,
236 >    DEFAULT_FLOODCOUNT = 276,
237 >    DEFAULT_SPLIT_SERVER_COUNT = 277,
238 >    DEFAULT_SPLIT_USER_COUNT = 278,
239 >    DENY = 279,
240 >    DESCRIPTION = 280,
241 >    DIE = 281,
242 >    DISABLE_AUTH = 282,
243 >    DISABLE_FAKE_CHANNELS = 283,
244 >    DISABLE_REMOTE_COMMANDS = 284,
245 >    DOTS_IN_IDENT = 285,
246 >    EGDPOOL_PATH = 286,
247 >    EMAIL = 287,
248 >    ENCRYPTED = 288,
249 >    EXCEED_LIMIT = 289,
250 >    EXEMPT = 290,
251 >    FAILED_OPER_NOTICE = 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_MIN_CIDR = 299,
260 >    GLINE_MIN_CIDR6 = 300,
261 >    GLINE_REQUEST_DURATION = 301,
262 >    GLOBAL_KILL = 302,
263 >    HAVENT_READ_CONF = 303,
264 >    HIDDEN = 304,
265 >    HIDDEN_NAME = 305,
266 >    HIDE_CHANS = 306,
267 >    HIDE_IDLE = 307,
268 >    HIDE_IDLE_FROM_OPERS = 308,
269 >    HIDE_SERVER_IPS = 309,
270 >    HIDE_SERVERS = 310,
271 >    HIDE_SERVICES = 311,
272 >    HIDE_SPOOF_IPS = 312,
273 >    HOST = 313,
274 >    HUB = 314,
275 >    HUB_MASK = 315,
276 >    IGNORE_BOGUS_TS = 316,
277 >    INVISIBLE_ON_CONNECT = 317,
278 >    IP = 318,
279 >    IRCD_AUTH = 319,
280 >    IRCD_FLAGS = 320,
281 >    IRCD_SID = 321,
282 >    JOIN_FLOOD_COUNT = 322,
283 >    JOIN_FLOOD_TIME = 323,
284 >    KILL = 324,
285 >    KILL_CHASE_TIME_LIMIT = 325,
286 >    KLINE = 326,
287 >    KLINE_EXEMPT = 327,
288 >    KNOCK_DELAY = 328,
289 >    KNOCK_DELAY_CHANNEL = 329,
290 >    LEAF_MASK = 330,
291 >    LINKS_DELAY = 331,
292 >    LISTEN = 332,
293 >    MASK = 333,
294 >    MAX_ACCEPT = 334,
295 >    MAX_BANS = 335,
296 >    MAX_CHANS_PER_OPER = 336,
297 >    MAX_CHANS_PER_USER = 337,
298 >    MAX_GLOBAL = 338,
299 >    MAX_IDENT = 339,
300 >    MAX_IDLE = 340,
301 >    MAX_LOCAL = 341,
302 >    MAX_NICK_CHANGES = 342,
303 >    MAX_NICK_LENGTH = 343,
304 >    MAX_NICK_TIME = 344,
305 >    MAX_NUMBER = 345,
306 >    MAX_TARGETS = 346,
307 >    MAX_TOPIC_LENGTH = 347,
308 >    MAX_WATCH = 348,
309 >    MIN_IDLE = 349,
310 >    MIN_NONWILDCARD = 350,
311 >    MIN_NONWILDCARD_SIMPLE = 351,
312 >    MODULE = 352,
313 >    MODULES = 353,
314 >    MOTD = 354,
315 >    NAME = 355,
316 >    NEED_IDENT = 356,
317 >    NEED_PASSWORD = 357,
318 >    NETWORK_DESC = 358,
319 >    NETWORK_NAME = 359,
320 >    NICK = 360,
321 >    NO_CREATE_ON_SPLIT = 361,
322 >    NO_JOIN_ON_SPLIT = 362,
323 >    NO_OPER_FLOOD = 363,
324 >    NO_TILDE = 364,
325 >    NUMBER = 365,
326 >    NUMBER_PER_CIDR = 366,
327 >    NUMBER_PER_IP = 367,
328 >    OPER_ONLY_UMODES = 368,
329 >    OPER_PASS_RESV = 369,
330 >    OPER_UMODES = 370,
331 >    OPERATOR = 371,
332 >    OPERS_BYPASS_CALLERID = 372,
333 >    PACE_WAIT = 373,
334 >    PACE_WAIT_SIMPLE = 374,
335 >    PASSWORD = 375,
336 >    PATH = 376,
337 >    PING_COOKIE = 377,
338 >    PING_TIME = 378,
339 >    PORT = 379,
340 >    QSTRING = 380,
341 >    RANDOM_IDLE = 381,
342 >    REASON = 382,
343 >    REDIRPORT = 383,
344 >    REDIRSERV = 384,
345 >    REHASH = 385,
346 >    REMOTE = 386,
347 >    REMOTEBAN = 387,
348 >    RESV = 388,
349 >    RESV_EXEMPT = 389,
350 >    RSA_PRIVATE_KEY_FILE = 390,
351 >    RSA_PUBLIC_KEY_FILE = 391,
352 >    SECONDS = 392,
353 >    MINUTES = 393,
354 >    HOURS = 394,
355 >    DAYS = 395,
356 >    WEEKS = 396,
357 >    MONTHS = 397,
358 >    YEARS = 398,
359 >    SEND_PASSWORD = 399,
360 >    SENDQ = 400,
361 >    SERVERHIDE = 401,
362 >    SERVERINFO = 402,
363 >    SHORT_MOTD = 403,
364 >    SPOOF = 404,
365 >    SPOOF_NOTICE = 405,
366 >    SQUIT = 406,
367 >    SSL_CERTIFICATE_FILE = 407,
368 >    SSL_CERTIFICATE_FINGERPRINT = 408,
369 >    SSL_CONNECTION_REQUIRED = 409,
370 >    SSL_DH_PARAM_FILE = 410,
371 >    STATS_E_DISABLED = 411,
372 >    STATS_I_OPER_ONLY = 412,
373 >    STATS_K_OPER_ONLY = 413,
374 >    STATS_O_OPER_ONLY = 414,
375 >    STATS_P_OPER_ONLY = 415,
376 >    STATS_U_OPER_ONLY = 416,
377 >    T_ALL = 417,
378 >    T_BOTS = 418,
379 >    T_CALLERID = 419,
380 >    T_CCONN = 420,
381 >    T_CLUSTER = 421,
382 >    T_DEAF = 422,
383 >    T_DEBUG = 423,
384 >    T_DLINE = 424,
385 >    T_EXTERNAL = 425,
386 >    T_FARCONNECT = 426,
387 >    T_FILE = 427,
388 >    T_FULL = 428,
389 >    T_GLOBOPS = 429,
390 >    T_INVISIBLE = 430,
391 >    T_IPV4 = 431,
392 >    T_IPV6 = 432,
393 >    T_LOCOPS = 433,
394 >    T_LOG = 434,
395 >    T_MAX_CLIENTS = 435,
396 >    T_NCHANGE = 436,
397 >    T_NONONREG = 437,
398 >    T_OPERWALL = 438,
399 >    T_RECVQ = 439,
400 >    T_REJ = 440,
401 >    T_RESTART = 441,
402 >    T_SERVER = 442,
403 >    T_SERVICE = 443,
404 >    T_SERVICES_NAME = 444,
405 >    T_SERVNOTICE = 445,
406 >    T_SET = 446,
407 >    T_SHARED = 447,
408 >    T_SIZE = 448,
409 >    T_SKILL = 449,
410 >    T_SOFTCALLERID = 450,
411 >    T_SPY = 451,
412 >    T_SSL = 452,
413 >    T_SSL_CIPHER_LIST = 453,
414 >    T_SSL_CLIENT_METHOD = 454,
415 >    T_SSL_SERVER_METHOD = 455,
416 >    T_SSLV3 = 456,
417 >    T_TLSV1 = 457,
418 >    T_UMODES = 458,
419 >    T_UNAUTH = 459,
420 >    T_UNDLINE = 460,
421 >    T_UNLIMITED = 461,
422 >    T_UNRESV = 462,
423 >    T_UNXLINE = 463,
424 >    T_WALLOP = 464,
425 >    T_WALLOPS = 465,
426 >    T_WEBIRC = 466,
427 >    TBOOL = 467,
428 >    THROTTLE_TIME = 468,
429 >    TKLINE_EXPIRE_NOTICES = 469,
430 >    TMASKED = 470,
431 >    TRUE_NO_OPER_FLOOD = 471,
432 >    TS_MAX_DELTA = 472,
433 >    TS_WARN_DELTA = 473,
434 >    TWODOTS = 474,
435 >    TYPE = 475,
436 >    UNKLINE = 476,
437 >    USE_EGD = 477,
438 >    USE_LOGGING = 478,
439 >    USER = 479,
440 >    VHOST = 480,
441 >    VHOST6 = 481,
442 >    WARN_NO_CONNECT_BLOCK = 482,
443 >    XLINE = 483
444 >  };
445   #endif
446   /* Tokens.  */
447   #define ACCEPT_PASSWORD 258
448 < #define ACTION 259
449 < #define ADMIN 260
450 < #define AFTYPE 261
451 < #define T_ALLOW 262
452 < #define ANTI_NICK_FLOOD 263
453 < #define ANTI_SPAM_EXIT_MESSAGE_TIME 264
454 < #define AUTOCONN 265
455 < #define T_BLOCK 266
456 < #define BURST_AWAY 267
457 < #define BURST_TOPICWHO 268
458 < #define BYTES 269
459 < #define KBYTES 270
460 < #define MBYTES 271
461 < #define GBYTES 272
462 < #define TBYTES 273
463 < #define CALLER_ID_WAIT 274
464 < #define CAN_FLOOD 275
465 < #define CAN_IDLE 276
466 < #define CHANNEL 277
467 < #define CIDR_BITLEN_IPV4 278
468 < #define CIDR_BITLEN_IPV6 279
469 < #define CIPHER_PREFERENCE 280
470 < #define CLASS 281
471 < #define COMPRESSED 282
472 < #define COMPRESSION_LEVEL 283
473 < #define CONNECT 284
474 < #define CONNECTFREQ 285
475 < #define CRYPTLINK 286
476 < #define DEFAULT_CIPHER_PREFERENCE 287
477 < #define DEFAULT_FLOODCOUNT 288
478 < #define DEFAULT_SPLIT_SERVER_COUNT 289
479 < #define DEFAULT_SPLIT_USER_COUNT 290
480 < #define DENY 291
481 < #define DESCRIPTION 292
482 < #define DIE 293
483 < #define DISABLE_AUTH 294
484 < #define DISABLE_FAKE_CHANNELS 295
485 < #define DISABLE_HIDDEN 296
486 < #define DISABLE_LOCAL_CHANNELS 297
487 < #define DISABLE_REMOTE_COMMANDS 298
488 < #define DOTS_IN_IDENT 299
489 < #define DURATION 300
490 < #define EGDPOOL_PATH 301
491 < #define EMAIL 302
492 < #define ENABLE 303
493 < #define ENCRYPTED 304
494 < #define EXCEED_LIMIT 305
495 < #define EXEMPT 306
496 < #define FAILED_OPER_NOTICE 307
497 < #define IRCD_FLAGS 308
498 < #define FLATTEN_LINKS 309
499 < #define FFAILED_OPERLOG 310
500 < #define FKILLLOG 311
501 < #define FKLINELOG 312
502 < #define FGLINELOG 313
503 < #define FIOERRLOG 314
504 < #define FOPERLOG 315
505 < #define FOPERSPYLOG 316
506 < #define FUSERLOG 317
507 < #define GECOS 318
508 < #define GENERAL 319
509 < #define GLINE 320
510 < #define GLINES 321
511 < #define GLINE_EXEMPT 322
512 < #define GLINE_LOG 323
513 < #define GLINE_TIME 324
514 < #define GLINE_MIN_CIDR 325
515 < #define GLINE_MIN_CIDR6 326
516 < #define GLOBAL_KILL 327
517 < #define IRCD_AUTH 328
518 < #define NEED_IDENT 329
519 < #define HAVENT_READ_CONF 330
520 < #define HIDDEN 331
521 < #define HIDDEN_ADMIN 332
522 < #define HIDDEN_NAME 333
523 < #define HIDDEN_OPER 334
524 < #define HIDE_SERVER_IPS 335
525 < #define HIDE_SERVERS 336
526 < #define HIDE_SPOOF_IPS 337
527 < #define HOST 338
528 < #define HUB 339
529 < #define HUB_MASK 340
530 < #define IDLETIME 341
531 < #define IGNORE_BOGUS_TS 342
532 < #define INVISIBLE_ON_CONNECT 343
533 < #define IP 344
534 < #define KILL 345
535 < #define KILL_CHASE_TIME_LIMIT 346
536 < #define KLINE 347
537 < #define KLINE_EXEMPT 348
538 < #define KLINE_REASON 349
539 < #define KLINE_WITH_REASON 350
540 < #define KNOCK_DELAY 351
541 < #define KNOCK_DELAY_CHANNEL 352
542 < #define LEAF_MASK 353
543 < #define LINKS_DELAY 354
544 < #define LISTEN 355
545 < #define T_LOG 356
546 < #define LOGGING 357
547 < #define LOG_LEVEL 358
548 < #define MAX_ACCEPT 359
549 < #define MAX_BANS 360
550 < #define MAX_CHANS_PER_USER 361
551 < #define MAX_GLOBAL 362
552 < #define MAX_IDENT 363
553 < #define MAX_LOCAL 364
554 < #define MAX_NICK_CHANGES 365
555 < #define MAX_NICK_TIME 366
556 < #define MAX_NUMBER 367
557 < #define MAX_TARGETS 368
558 < #define MAX_WATCH 369
559 < #define MESSAGE_LOCALE 370
560 < #define MIN_NONWILDCARD 371
561 < #define MIN_NONWILDCARD_SIMPLE 372
562 < #define MODULE 373
563 < #define MODULES 374
564 < #define NAME 375
565 < #define NEED_PASSWORD 376
566 < #define NETWORK_DESC 377
567 < #define NETWORK_NAME 378
568 < #define NICK 379
569 < #define NICK_CHANGES 380
570 < #define NO_CREATE_ON_SPLIT 381
571 < #define NO_JOIN_ON_SPLIT 382
572 < #define NO_OPER_FLOOD 383
573 < #define NO_TILDE 384
574 < #define NOT 385
575 < #define NUMBER 386
576 < #define NUMBER_PER_IDENT 387
577 < #define NUMBER_PER_CIDR 388
578 < #define NUMBER_PER_IP 389
579 < #define NUMBER_PER_IP_GLOBAL 390
580 < #define OPERATOR 391
581 < #define OPERS_BYPASS_CALLERID 392
582 < #define OPER_LOG 393
583 < #define OPER_ONLY_UMODES 394
584 < #define OPER_PASS_RESV 395
585 < #define OPER_SPY_T 396
586 < #define OPER_UMODES 397
587 < #define JOIN_FLOOD_COUNT 398
588 < #define JOIN_FLOOD_TIME 399
589 < #define PACE_WAIT 400
590 < #define PACE_WAIT_SIMPLE 401
591 < #define PASSWORD 402
592 < #define PATH 403
593 < #define PING_COOKIE 404
594 < #define PING_TIME 405
595 < #define PING_WARNING 406
596 < #define PORT 407
597 < #define QSTRING 408
598 < #define QUIET_ON_BAN 409
599 < #define REASON 410
600 < #define REDIRPORT 411
601 < #define REDIRSERV 412
602 < #define REGEX_T 413
603 < #define REHASH 414
604 < #define TREJECT_HOLD_TIME 415
605 < #define REMOTE 416
606 < #define REMOTEBAN 417
607 < #define RESTRICT_CHANNELS 418
608 < #define RESTRICTED 419
609 < #define RSA_PRIVATE_KEY_FILE 420
610 < #define RSA_PUBLIC_KEY_FILE 421
611 < #define SSL_CERTIFICATE_FILE 422
612 < #define T_SSL_CONNECTION_METHOD 423
613 < #define T_SSLV3 424
614 < #define T_TLSV1 425
615 < #define RESV 426
616 < #define RESV_EXEMPT 427
617 < #define SECONDS 428
618 < #define MINUTES 429
619 < #define HOURS 430
620 < #define DAYS 431
621 < #define WEEKS 432
622 < #define SENDQ 433
623 < #define SEND_PASSWORD 434
624 < #define SERVERHIDE 435
625 < #define SERVERINFO 436
626 < #define SERVLINK_PATH 437
627 < #define IRCD_SID 438
628 < #define TKLINE_EXPIRE_NOTICES 439
629 < #define T_SHARED 440
630 < #define T_CLUSTER 441
631 < #define TYPE 442
632 < #define SHORT_MOTD 443
633 < #define SILENT 444
634 < #define SPOOF 445
635 < #define SPOOF_NOTICE 446
636 < #define STATS_E_DISABLED 447
637 < #define STATS_I_OPER_ONLY 448
638 < #define STATS_K_OPER_ONLY 449
639 < #define STATS_O_OPER_ONLY 450
640 < #define STATS_P_OPER_ONLY 451
641 < #define TBOOL 452
642 < #define TMASKED 453
643 < #define T_REJECT 454
644 < #define TS_MAX_DELTA 455
645 < #define TS_WARN_DELTA 456
646 < #define TWODOTS 457
647 < #define T_ALL 458
648 < #define T_BOTS 459
649 < #define T_SOFTCALLERID 460
650 < #define T_CALLERID 461
651 < #define T_CCONN 462
652 < #define T_CCONN_FULL 463
653 < #define T_CLIENT_FLOOD 464
654 < #define T_DEAF 465
655 < #define T_DEBUG 466
656 < #define T_DRONE 467
657 < #define T_EXTERNAL 468
658 < #define T_FULL 469
659 < #define T_INVISIBLE 470
660 < #define T_IPV4 471
661 < #define T_IPV6 472
662 < #define T_LOCOPS 473
663 < #define T_LOGPATH 474
664 < #define T_L_CRIT 475
665 < #define T_L_DEBUG 476
666 < #define T_L_ERROR 477
667 < #define T_L_INFO 478
668 < #define T_L_NOTICE 479
669 < #define T_L_TRACE 480
670 < #define T_L_WARN 481
671 < #define T_MAX_CLIENTS 482
672 < #define T_NCHANGE 483
692 < #define T_OPERWALL 484
693 < #define T_REJ 485
694 < #define T_SERVER 486
695 < #define T_SERVNOTICE 487
696 < #define T_SKILL 488
697 < #define T_SPY 489
698 < #define T_SSL 490
699 < #define T_UMODES 491
700 < #define T_UNAUTH 492
701 < #define T_UNRESV 493
702 < #define T_UNXLINE 494
703 < #define T_WALLOP 495
704 < #define THROTTLE_TIME 496
705 < #define TOPICBURST 497
706 < #define TRUE_NO_OPER_FLOOD 498
707 < #define TKLINE 499
708 < #define TXLINE 500
709 < #define TRESV 501
710 < #define UNKLINE 502
711 < #define USER 503
712 < #define USE_EGD 504
713 < #define USE_EXCEPT 505
714 < #define USE_INVEX 506
715 < #define USE_KNOCK 507
716 < #define USE_LOGGING 508
717 < #define USE_WHOIS_ACTUALLY 509
718 < #define VHOST 510
719 < #define VHOST6 511
720 < #define XLINE 512
721 < #define WARN 513
722 < #define WARN_NO_NLINE 514
723 <
724 <
725 <
448 > #define ADMIN 259
449 > #define AFTYPE 260
450 > #define ANTI_NICK_FLOOD 261
451 > #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
452 > #define AUTOCONN 263
453 > #define BYTES 264
454 > #define KBYTES 265
455 > #define MBYTES 266
456 > #define CALLER_ID_WAIT 267
457 > #define CAN_FLOOD 268
458 > #define CHANNEL 269
459 > #define CIDR_BITLEN_IPV4 270
460 > #define CIDR_BITLEN_IPV6 271
461 > #define CLASS 272
462 > #define CONNECT 273
463 > #define CONNECTFREQ 274
464 > #define CYCLE_ON_HOST_CHANGE 275
465 > #define DEFAULT_FLOODCOUNT 276
466 > #define DEFAULT_SPLIT_SERVER_COUNT 277
467 > #define DEFAULT_SPLIT_USER_COUNT 278
468 > #define DENY 279
469 > #define DESCRIPTION 280
470 > #define DIE 281
471 > #define DISABLE_AUTH 282
472 > #define DISABLE_FAKE_CHANNELS 283
473 > #define DISABLE_REMOTE_COMMANDS 284
474 > #define DOTS_IN_IDENT 285
475 > #define EGDPOOL_PATH 286
476 > #define EMAIL 287
477 > #define ENCRYPTED 288
478 > #define EXCEED_LIMIT 289
479 > #define EXEMPT 290
480 > #define FAILED_OPER_NOTICE 291
481 > #define FLATTEN_LINKS 292
482 > #define GECOS 293
483 > #define GENERAL 294
484 > #define GLINE 295
485 > #define GLINE_DURATION 296
486 > #define GLINE_ENABLE 297
487 > #define GLINE_EXEMPT 298
488 > #define GLINE_MIN_CIDR 299
489 > #define GLINE_MIN_CIDR6 300
490 > #define GLINE_REQUEST_DURATION 301
491 > #define GLOBAL_KILL 302
492 > #define HAVENT_READ_CONF 303
493 > #define HIDDEN 304
494 > #define HIDDEN_NAME 305
495 > #define HIDE_CHANS 306
496 > #define HIDE_IDLE 307
497 > #define HIDE_IDLE_FROM_OPERS 308
498 > #define HIDE_SERVER_IPS 309
499 > #define HIDE_SERVERS 310
500 > #define HIDE_SERVICES 311
501 > #define HIDE_SPOOF_IPS 312
502 > #define HOST 313
503 > #define HUB 314
504 > #define HUB_MASK 315
505 > #define IGNORE_BOGUS_TS 316
506 > #define INVISIBLE_ON_CONNECT 317
507 > #define IP 318
508 > #define IRCD_AUTH 319
509 > #define IRCD_FLAGS 320
510 > #define IRCD_SID 321
511 > #define JOIN_FLOOD_COUNT 322
512 > #define JOIN_FLOOD_TIME 323
513 > #define KILL 324
514 > #define KILL_CHASE_TIME_LIMIT 325
515 > #define KLINE 326
516 > #define KLINE_EXEMPT 327
517 > #define KNOCK_DELAY 328
518 > #define KNOCK_DELAY_CHANNEL 329
519 > #define LEAF_MASK 330
520 > #define LINKS_DELAY 331
521 > #define LISTEN 332
522 > #define MASK 333
523 > #define MAX_ACCEPT 334
524 > #define MAX_BANS 335
525 > #define MAX_CHANS_PER_OPER 336
526 > #define MAX_CHANS_PER_USER 337
527 > #define MAX_GLOBAL 338
528 > #define MAX_IDENT 339
529 > #define MAX_IDLE 340
530 > #define MAX_LOCAL 341
531 > #define MAX_NICK_CHANGES 342
532 > #define MAX_NICK_LENGTH 343
533 > #define MAX_NICK_TIME 344
534 > #define MAX_NUMBER 345
535 > #define MAX_TARGETS 346
536 > #define MAX_TOPIC_LENGTH 347
537 > #define MAX_WATCH 348
538 > #define MIN_IDLE 349
539 > #define MIN_NONWILDCARD 350
540 > #define MIN_NONWILDCARD_SIMPLE 351
541 > #define MODULE 352
542 > #define MODULES 353
543 > #define MOTD 354
544 > #define NAME 355
545 > #define NEED_IDENT 356
546 > #define NEED_PASSWORD 357
547 > #define NETWORK_DESC 358
548 > #define NETWORK_NAME 359
549 > #define NICK 360
550 > #define NO_CREATE_ON_SPLIT 361
551 > #define NO_JOIN_ON_SPLIT 362
552 > #define NO_OPER_FLOOD 363
553 > #define NO_TILDE 364
554 > #define NUMBER 365
555 > #define NUMBER_PER_CIDR 366
556 > #define NUMBER_PER_IP 367
557 > #define OPER_ONLY_UMODES 368
558 > #define OPER_PASS_RESV 369
559 > #define OPER_UMODES 370
560 > #define OPERATOR 371
561 > #define OPERS_BYPASS_CALLERID 372
562 > #define PACE_WAIT 373
563 > #define PACE_WAIT_SIMPLE 374
564 > #define PASSWORD 375
565 > #define PATH 376
566 > #define PING_COOKIE 377
567 > #define PING_TIME 378
568 > #define PORT 379
569 > #define QSTRING 380
570 > #define RANDOM_IDLE 381
571 > #define REASON 382
572 > #define REDIRPORT 383
573 > #define REDIRSERV 384
574 > #define REHASH 385
575 > #define REMOTE 386
576 > #define REMOTEBAN 387
577 > #define RESV 388
578 > #define RESV_EXEMPT 389
579 > #define RSA_PRIVATE_KEY_FILE 390
580 > #define RSA_PUBLIC_KEY_FILE 391
581 > #define SECONDS 392
582 > #define MINUTES 393
583 > #define HOURS 394
584 > #define DAYS 395
585 > #define WEEKS 396
586 > #define MONTHS 397
587 > #define YEARS 398
588 > #define SEND_PASSWORD 399
589 > #define SENDQ 400
590 > #define SERVERHIDE 401
591 > #define SERVERINFO 402
592 > #define SHORT_MOTD 403
593 > #define SPOOF 404
594 > #define SPOOF_NOTICE 405
595 > #define SQUIT 406
596 > #define SSL_CERTIFICATE_FILE 407
597 > #define SSL_CERTIFICATE_FINGERPRINT 408
598 > #define SSL_CONNECTION_REQUIRED 409
599 > #define SSL_DH_PARAM_FILE 410
600 > #define STATS_E_DISABLED 411
601 > #define STATS_I_OPER_ONLY 412
602 > #define STATS_K_OPER_ONLY 413
603 > #define STATS_O_OPER_ONLY 414
604 > #define STATS_P_OPER_ONLY 415
605 > #define STATS_U_OPER_ONLY 416
606 > #define T_ALL 417
607 > #define T_BOTS 418
608 > #define T_CALLERID 419
609 > #define T_CCONN 420
610 > #define T_CLUSTER 421
611 > #define T_DEAF 422
612 > #define T_DEBUG 423
613 > #define T_DLINE 424
614 > #define T_EXTERNAL 425
615 > #define T_FARCONNECT 426
616 > #define T_FILE 427
617 > #define T_FULL 428
618 > #define T_GLOBOPS 429
619 > #define T_INVISIBLE 430
620 > #define T_IPV4 431
621 > #define T_IPV6 432
622 > #define T_LOCOPS 433
623 > #define T_LOG 434
624 > #define T_MAX_CLIENTS 435
625 > #define T_NCHANGE 436
626 > #define T_NONONREG 437
627 > #define T_OPERWALL 438
628 > #define T_RECVQ 439
629 > #define T_REJ 440
630 > #define T_RESTART 441
631 > #define T_SERVER 442
632 > #define T_SERVICE 443
633 > #define T_SERVICES_NAME 444
634 > #define T_SERVNOTICE 445
635 > #define T_SET 446
636 > #define T_SHARED 447
637 > #define T_SIZE 448
638 > #define T_SKILL 449
639 > #define T_SOFTCALLERID 450
640 > #define T_SPY 451
641 > #define T_SSL 452
642 > #define T_SSL_CIPHER_LIST 453
643 > #define T_SSL_CLIENT_METHOD 454
644 > #define T_SSL_SERVER_METHOD 455
645 > #define T_SSLV3 456
646 > #define T_TLSV1 457
647 > #define T_UMODES 458
648 > #define T_UNAUTH 459
649 > #define T_UNDLINE 460
650 > #define T_UNLIMITED 461
651 > #define T_UNRESV 462
652 > #define T_UNXLINE 463
653 > #define T_WALLOP 464
654 > #define T_WALLOPS 465
655 > #define T_WEBIRC 466
656 > #define TBOOL 467
657 > #define THROTTLE_TIME 468
658 > #define TKLINE_EXPIRE_NOTICES 469
659 > #define TMASKED 470
660 > #define TRUE_NO_OPER_FLOOD 471
661 > #define TS_MAX_DELTA 472
662 > #define TS_WARN_DELTA 473
663 > #define TWODOTS 474
664 > #define TYPE 475
665 > #define UNKLINE 476
666 > #define USE_EGD 477
667 > #define USE_LOGGING 478
668 > #define USER 479
669 > #define VHOST 480
670 > #define VHOST6 481
671 > #define WARN_NO_CONNECT_BLOCK 482
672 > #define XLINE 483
673  
674 + /* Value type.  */
675   #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
676 < typedef union YYSTYPE
676 > typedef union YYSTYPE YYSTYPE;
677 > union YYSTYPE
678   {
679 <
731 < /* Line 214 of yacc.c  */
732 < #line 132 "ircd_parser.y"
679 > #line 146 "conf_parser.y" /* yacc.c:355  */
680  
681    int number;
682    char *string;
683  
684 <
685 <
739 < /* Line 214 of yacc.c  */
740 < #line 741 "ircd_parser.c"
741 < } YYSTYPE;
684 > #line 685 "conf_parser.c" /* yacc.c:355  */
685 > };
686   # define YYSTYPE_IS_TRIVIAL 1
743 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
687   # define YYSTYPE_IS_DECLARED 1
688   #endif
689  
690  
691 < /* Copy the second part of user declarations.  */
691 > extern YYSTYPE yylval;
692  
693 + int yyparse (void);
694 +
695 + #endif /* !YY_YY_CONF_PARSER_H_INCLUDED  */
696 +
697 + /* Copy the second part of user declarations.  */
698  
699 < /* Line 264 of yacc.c  */
752 < #line 753 "ircd_parser.c"
699 > #line 700 "conf_parser.c" /* yacc.c:358  */
700  
701   #ifdef short
702   # undef short
# Line 763 | Line 710 | typedef unsigned char yytype_uint8;
710  
711   #ifdef YYTYPE_INT8
712   typedef YYTYPE_INT8 yytype_int8;
766 #elif (defined __STDC__ || defined __C99__FUNC__ \
767     || defined __cplusplus || defined _MSC_VER)
768 typedef signed char yytype_int8;
713   #else
714 < typedef short int yytype_int8;
714 > typedef signed char yytype_int8;
715   #endif
716  
717   #ifdef YYTYPE_UINT16
# Line 787 | Line 731 | typedef short int yytype_int16;
731   #  define YYSIZE_T __SIZE_TYPE__
732   # elif defined size_t
733   #  define YYSIZE_T size_t
734 < # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
791 <     || defined __cplusplus || defined _MSC_VER)
734 > # elif ! defined YYSIZE_T
735   #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
736   #  define YYSIZE_T size_t
737   # else
# Line 802 | Line 745 | typedef short int yytype_int16;
745   # if defined YYENABLE_NLS && YYENABLE_NLS
746   #  if ENABLE_NLS
747   #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
748 < #   define YY_(msgid) dgettext ("bison-runtime", msgid)
748 > #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
749   #  endif
750   # endif
751   # ifndef YY_
752 < #  define YY_(msgid) msgid
752 > #  define YY_(Msgid) Msgid
753 > # endif
754 > #endif
755 >
756 > #ifndef YY_ATTRIBUTE
757 > # if (defined __GNUC__                                               \
758 >      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
759 >     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
760 > #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
761 > # else
762 > #  define YY_ATTRIBUTE(Spec) /* empty */
763 > # endif
764 > #endif
765 >
766 > #ifndef YY_ATTRIBUTE_PURE
767 > # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
768 > #endif
769 >
770 > #ifndef YY_ATTRIBUTE_UNUSED
771 > # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
772 > #endif
773 >
774 > #if !defined _Noreturn \
775 >     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
776 > # if defined _MSC_VER && 1200 <= _MSC_VER
777 > #  define _Noreturn __declspec (noreturn)
778 > # else
779 > #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
780   # endif
781   #endif
782  
783   /* Suppress unused-variable warnings by "using" E.  */
784   #if ! defined lint || defined __GNUC__
785 < # define YYUSE(e) ((void) (e))
785 > # define YYUSE(E) ((void) (E))
786   #else
787 < # define YYUSE(e) /* empty */
787 > # define YYUSE(E) /* empty */
788   #endif
789  
790 < /* Identity function, used to suppress warnings about constant conditions.  */
791 < #ifndef lint
792 < # define YYID(n) (n)
790 > #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
791 > /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
792 > # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
793 >    _Pragma ("GCC diagnostic push") \
794 >    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
795 >    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
796 > # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
797 >    _Pragma ("GCC diagnostic pop")
798   #else
799 < #if (defined __STDC__ || defined __C99__FUNC__ \
825 <     || defined __cplusplus || defined _MSC_VER)
826 < static int
827 < YYID (int yyi)
828 < #else
829 < static int
830 < YYID (yyi)
831 <    int yyi;
799 > # define YY_INITIAL_VALUE(Value) Value
800   #endif
801 < {
802 <  return yyi;
803 < }
801 > #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
802 > # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
803 > # define YY_IGNORE_MAYBE_UNINITIALIZED_END
804 > #endif
805 > #ifndef YY_INITIAL_VALUE
806 > # define YY_INITIAL_VALUE(Value) /* Nothing. */
807   #endif
808  
809 +
810   #if ! defined yyoverflow || YYERROR_VERBOSE
811  
812   /* The parser invokes alloca or malloc; define the necessary symbols.  */
# Line 852 | Line 824 | YYID (yyi)
824   #    define alloca _alloca
825   #   else
826   #    define YYSTACK_ALLOC alloca
827 < #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
856 <     || defined __cplusplus || defined _MSC_VER)
827 > #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
828   #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
829 < #     ifndef _STDLIB_H
830 < #      define _STDLIB_H 1
829 >      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
830 > #     ifndef EXIT_SUCCESS
831 > #      define EXIT_SUCCESS 0
832   #     endif
833   #    endif
834   #   endif
# Line 864 | Line 836 | YYID (yyi)
836   # endif
837  
838   # ifdef YYSTACK_ALLOC
839 <   /* Pacify GCC's `empty if-body' warning.  */
840 < #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
839 >   /* Pacify GCC's 'empty if-body' warning.  */
840 > #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
841   #  ifndef YYSTACK_ALLOC_MAXIMUM
842      /* The OS might guarantee only one guard page at the bottom of the stack,
843         and a page size can be as small as 4096 bytes.  So we cannot safely
# Line 879 | Line 851 | YYID (yyi)
851   #  ifndef YYSTACK_ALLOC_MAXIMUM
852   #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
853   #  endif
854 < #  if (defined __cplusplus && ! defined _STDLIB_H \
854 > #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
855         && ! ((defined YYMALLOC || defined malloc) \
856 <             && (defined YYFREE || defined free)))
856 >             && (defined YYFREE || defined free)))
857   #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
858 < #   ifndef _STDLIB_H
859 < #    define _STDLIB_H 1
858 > #   ifndef EXIT_SUCCESS
859 > #    define EXIT_SUCCESS 0
860   #   endif
861   #  endif
862   #  ifndef YYMALLOC
863   #   define YYMALLOC malloc
864 < #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
893 <     || defined __cplusplus || defined _MSC_VER)
864 > #   if ! defined malloc && ! defined EXIT_SUCCESS
865   void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
866   #   endif
867   #  endif
868   #  ifndef YYFREE
869   #   define YYFREE free
870 < #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
900 <     || defined __cplusplus || defined _MSC_VER)
870 > #   if ! defined free && ! defined EXIT_SUCCESS
871   void free (void *); /* INFRINGES ON USER NAME SPACE */
872   #   endif
873   #  endif
# Line 907 | Line 877 | void free (void *); /* INFRINGES ON USER
877  
878   #if (! defined yyoverflow \
879       && (! defined __cplusplus \
880 <         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
880 >         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
881  
882   /* A type that is properly aligned for any stack member.  */
883   union yyalloc
# Line 925 | Line 895 | union yyalloc
895       ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
896        + YYSTACK_GAP_MAXIMUM)
897  
898 < /* Copy COUNT objects from FROM to TO.  The source and destination do
929 <   not overlap.  */
930 < # ifndef YYCOPY
931 < #  if defined __GNUC__ && 1 < __GNUC__
932 < #   define YYCOPY(To, From, Count) \
933 <      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
934 < #  else
935 < #   define YYCOPY(To, From, Count)              \
936 <      do                                        \
937 <        {                                       \
938 <          YYSIZE_T yyi;                         \
939 <          for (yyi = 0; yyi < (Count); yyi++)   \
940 <            (To)[yyi] = (From)[yyi];            \
941 <        }                                       \
942 <      while (YYID (0))
943 < #  endif
944 < # endif
898 > # define YYCOPY_NEEDED 1
899  
900   /* Relocate STACK from its old location to the new one.  The
901     local variables YYSIZE and YYSTACKSIZE give the old and new number of
902     elements in the stack, and YYPTR gives the new location of the
903     stack.  Advance YYPTR to a properly aligned location for the next
904     stack.  */
905 < # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
906 <    do                                                                  \
907 <      {                                                                 \
908 <        YYSIZE_T yynewbytes;                                            \
909 <        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
910 <        Stack = &yyptr->Stack_alloc;                                    \
911 <        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
912 <        yyptr += yynewbytes / sizeof (*yyptr);                          \
913 <      }                                                                 \
914 <    while (YYID (0))
905 > # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
906 >    do                                                                  \
907 >      {                                                                 \
908 >        YYSIZE_T yynewbytes;                                            \
909 >        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
910 >        Stack = &yyptr->Stack_alloc;                                    \
911 >        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
912 >        yyptr += yynewbytes / sizeof (*yyptr);                          \
913 >      }                                                                 \
914 >    while (0)
915  
916   #endif
917  
918 + #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
919 + /* Copy COUNT objects from SRC to DST.  The source and destination do
920 +   not overlap.  */
921 + # ifndef YYCOPY
922 + #  if defined __GNUC__ && 1 < __GNUC__
923 + #   define YYCOPY(Dst, Src, Count) \
924 +      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
925 + #  else
926 + #   define YYCOPY(Dst, Src, Count)              \
927 +      do                                        \
928 +        {                                       \
929 +          YYSIZE_T yyi;                         \
930 +          for (yyi = 0; yyi < (Count); yyi++)   \
931 +            (Dst)[yyi] = (Src)[yyi];            \
932 +        }                                       \
933 +      while (0)
934 + #  endif
935 + # endif
936 + #endif /* !YYCOPY_NEEDED */
937 +
938   /* YYFINAL -- State number of the termination state.  */
939   #define YYFINAL  2
940   /* YYLAST -- Last index in YYTABLE.  */
941 < #define YYLAST   1258
941 > #define YYLAST   1239
942  
943   /* YYNTOKENS -- Number of terminals.  */
944 < #define YYNTOKENS  265
944 > #define YYNTOKENS  235
945   /* YYNNTS -- Number of nonterminals.  */
946 < #define YYNNTS  318
946 > #define YYNNTS  291
947   /* YYNRULES -- Number of rules.  */
948 < #define YYNRULES  687
949 < /* YYNRULES -- Number of states.  */
950 < #define YYNSTATES  1354
948 > #define YYNRULES  661
949 > /* YYNSTATES -- Number of states.  */
950 > #define YYNSTATES  1292
951  
952 < /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
952 > /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
953 >   by yylex, with out-of-bounds checking.  */
954   #define YYUNDEFTOK  2
955 < #define YYMAXUTOK   514
955 > #define YYMAXUTOK   483
956  
957 < #define YYTRANSLATE(YYX)                                                \
957 > #define YYTRANSLATE(YYX)                                                \
958    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
959  
960 < /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
961 < static const yytype_uint16 yytranslate[] =
960 > /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
961 >   as returned by yylex, without out-of-bounds checking.  */
962 > static const yytype_uint8 yytranslate[] =
963   {
964         0,     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,     2,     2,     2,     2,     2,     2,     2,
968 <       2,     2,     2,     2,   264,     2,     2,     2,     2,     2,
969 <       2,     2,     2,     2,     2,     2,     2,     2,     2,   260,
970 <       2,   263,     2,     2,     2,     2,     2,     2,     2,     2,
968 >       2,     2,     2,     2,   233,     2,     2,     2,     2,     2,
969 >       2,     2,     2,     2,     2,     2,     2,     2,   234,   229,
970 >       2,   232,     2,     2,     2,     2,     2,     2,     2,     2,
971         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
972         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
973         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
974         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
975         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
976 <       2,     2,     2,   262,     2,   261,     2,     2,     2,     2,
976 >       2,     2,     2,   231,     2,   230,     2,     2,     2,     2,
977         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
978         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
979         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
# Line 1033 | Line 1009 | static const yytype_uint16 yytranslate[]
1009       195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
1010       205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
1011       215,   216,   217,   218,   219,   220,   221,   222,   223,   224,
1012 <     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
1037 <     235,   236,   237,   238,   239,   240,   241,   242,   243,   244,
1038 <     245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
1039 <     255,   256,   257,   258,   259
1012 >     225,   226,   227,   228
1013   };
1014  
1015   #if YYDEBUG
1016 < /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1044 <   YYRHS.  */
1045 < static const yytype_uint16 yyprhs[] =
1046 < {
1047 <       0,     0,     3,     4,     7,     9,    11,    13,    15,    17,
1048 <      19,    21,    23,    25,    27,    29,    31,    33,    35,    37,
1049 <      39,    41,    43,    45,    47,    50,    53,    54,    56,    59,
1050 <      63,    67,    71,    75,    79,    80,    82,    85,    89,    93,
1051 <      97,   103,   106,   108,   110,   112,   115,   120,   125,   131,
1052 <     134,   136,   138,   140,   142,   144,   146,   148,   150,   152,
1053 <     154,   156,   158,   160,   163,   164,   170,   174,   176,   178,
1054 <     180,   185,   190,   195,   200,   205,   210,   215,   220,   225,
1055 <     230,   235,   241,   244,   246,   248,   250,   252,   255,   260,
1056 <     265,   270,   276,   279,   281,   283,   285,   287,   289,   291,
1057 <     293,   295,   297,   299,   301,   303,   305,   308,   313,   318,
1058 <     323,   328,   333,   338,   343,   348,   353,   358,   363,   368,
1059 <     373,   378,   383,   388,   393,   398,   399,   407,   408,   410,
1060 <     413,   415,   417,   419,   421,   423,   425,   427,   429,   431,
1061 <     434,   439,   441,   446,   451,   456,   461,   466,   467,   473,
1062 <     477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
1063 <     497,   499,   501,   503,   505,   507,   509,   511,   513,   515,
1064 <     517,   518,   524,   528,   530,   531,   535,   536,   539,   541,
1065 <     543,   545,   547,   549,   551,   553,   555,   557,   559,   561,
1066 <     563,   565,   567,   569,   571,   572,   580,   581,   583,   586,
1067 <     588,   590,   592,   594,   596,   598,   600,   602,   604,   606,
1068 <     608,   610,   612,   614,   617,   622,   624,   629,   634,   639,
1069 <     644,   649,   654,   659,   664,   669,   674,   679,   684,   685,
1070 <     692,   693,   699,   703,   705,   707,   709,   711,   714,   716,
1071 <     718,   720,   722,   724,   727,   728,   734,   738,   740,   742,
1072 <     746,   751,   756,   757,   764,   767,   769,   771,   773,   775,
1073 <     777,   779,   781,   783,   785,   788,   793,   798,   803,   808,
1074 <     809,   815,   819,   821,   822,   826,   827,   830,   832,   834,
1075 <     836,   838,   840,   842,   844,   846,   848,   850,   855,   860,
1076 <     865,   866,   873,   876,   878,   880,   882,   884,   887,   892,
1077 <     897,   902,   903,   910,   913,   915,   917,   919,   921,   924,
1078 <     929,   934,   935,   941,   945,   947,   949,   951,   953,   955,
1079 <     957,   959,   961,   963,   965,   967,   969,   970,   977,   980,
1080 <     982,   984,   986,   989,   994,   995,  1001,  1005,  1007,  1009,
1081 <    1011,  1013,  1015,  1017,  1019,  1021,  1023,  1025,  1027,  1029,
1082 <    1030,  1038,  1039,  1041,  1044,  1046,  1048,  1050,  1052,  1054,
1083 <    1056,  1058,  1060,  1062,  1064,  1066,  1068,  1070,  1072,  1074,
1084 <    1077,  1082,  1084,  1089,  1094,  1099,  1104,  1109,  1114,  1119,
1085 <    1120,  1126,  1130,  1132,  1133,  1137,  1138,  1141,  1143,  1145,
1086 <    1147,  1149,  1151,  1156,  1161,  1166,  1171,  1176,  1181,  1182,
1087 <    1189,  1190,  1196,  1200,  1202,  1204,  1207,  1209,  1211,  1213,
1088 <    1215,  1217,  1222,  1227,  1228,  1235,  1238,  1240,  1242,  1244,
1089 <    1246,  1251,  1256,  1262,  1265,  1267,  1269,  1271,  1276,  1277,
1090 <    1284,  1285,  1291,  1295,  1297,  1299,  1302,  1304,  1306,  1308,
1091 <    1310,  1312,  1317,  1322,  1328,  1331,  1333,  1335,  1337,  1339,
1092 <    1341,  1343,  1345,  1347,  1349,  1351,  1353,  1355,  1357,  1359,
1093 <    1361,  1363,  1365,  1367,  1369,  1371,  1373,  1375,  1377,  1379,
1094 <    1381,  1383,  1385,  1387,  1389,  1391,  1393,  1395,  1397,  1399,
1095 <    1401,  1403,  1405,  1407,  1409,  1411,  1413,  1415,  1417,  1419,
1096 <    1421,  1423,  1425,  1427,  1429,  1431,  1433,  1435,  1437,  1439,
1097 <    1441,  1443,  1445,  1450,  1455,  1460,  1465,  1470,  1475,  1480,
1098 <    1485,  1490,  1495,  1500,  1505,  1510,  1515,  1520,  1525,  1530,
1099 <    1535,  1540,  1545,  1550,  1555,  1560,  1565,  1570,  1575,  1580,
1100 <    1585,  1590,  1595,  1600,  1605,  1610,  1615,  1620,  1625,  1630,
1101 <    1635,  1640,  1645,  1650,  1655,  1660,  1665,  1670,  1675,  1680,
1102 <    1685,  1690,  1695,  1700,  1701,  1707,  1711,  1713,  1715,  1717,
1103 <    1719,  1721,  1723,  1725,  1727,  1729,  1731,  1733,  1735,  1737,
1104 <    1739,  1741,  1743,  1745,  1747,  1749,  1751,  1752,  1758,  1762,
1105 <    1764,  1766,  1768,  1770,  1772,  1774,  1776,  1778,  1780,  1782,
1106 <    1784,  1786,  1788,  1790,  1792,  1794,  1796,  1798,  1800,  1802,
1107 <    1807,  1812,  1817,  1822,  1823,  1830,  1833,  1835,  1837,  1839,
1108 <    1841,  1843,  1845,  1847,  1849,  1854,  1859,  1860,  1866,  1870,
1109 <    1872,  1874,  1876,  1881,  1886,  1887,  1893,  1897,  1899,  1901,
1110 <    1903,  1909,  1912,  1914,  1916,  1918,  1920,  1922,  1924,  1926,
1111 <    1928,  1930,  1932,  1934,  1936,  1938,  1940,  1942,  1944,  1946,
1112 <    1948,  1950,  1952,  1957,  1962,  1967,  1972,  1977,  1982,  1987,
1113 <    1992,  1997,  2002,  2007,  2012,  2017,  2022,  2027,  2032,  2037,
1114 <    2042,  2048,  2051,  2053,  2055,  2057,  2059,  2061,  2063,  2065,
1115 <    2067,  2069,  2074,  2079,  2084,  2089,  2094,  2099
1116 < };
1117 <
1118 < /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1119 < static const yytype_int16 yyrhs[] =
1120 < {
1121 <     266,     0,    -1,    -1,   266,   267,    -1,   295,    -1,   301,
1122 <      -1,   316,    -1,   552,    -1,   339,    -1,   358,    -1,   372,
1123 <      -1,   277,    -1,   573,    -1,   390,    -1,   397,    -1,   407,
1124 <      -1,   416,    -1,   442,    -1,   452,    -1,   458,    -1,   472,
1125 <      -1,   536,    -1,   462,    -1,   272,    -1,     1,   260,    -1,
1126 <       1,   261,    -1,    -1,   269,    -1,   131,   268,    -1,   131,
1127 <     173,   268,    -1,   131,   174,   268,    -1,   131,   175,   268,
1128 <      -1,   131,   176,   268,    -1,   131,   177,   268,    -1,    -1,
1129 <     271,    -1,   131,   270,    -1,   131,    14,   270,    -1,   131,
1130 <      15,   270,    -1,   131,    16,   270,    -1,   119,   262,   273,
1131 <     261,   260,    -1,   273,   274,    -1,   274,    -1,   275,    -1,
1132 <     276,    -1,     1,   260,    -1,   118,   263,   153,   260,    -1,
1133 <     148,   263,   153,   260,    -1,   181,   262,   278,   261,   260,
1134 <      -1,   278,   279,    -1,   279,    -1,   286,    -1,   291,    -1,
1135 <     294,    -1,   288,    -1,   289,    -1,   290,    -1,   293,    -1,
1136 <     285,    -1,   292,    -1,   287,    -1,   284,    -1,   280,    -1,
1137 <       1,   260,    -1,    -1,   168,   281,   263,   282,   260,    -1,
1138 <     282,   264,   283,    -1,   283,    -1,   169,    -1,   170,    -1,
1139 <     167,   263,   153,   260,    -1,   165,   263,   153,   260,    -1,
1140 <     120,   263,   153,   260,    -1,   183,   263,   153,   260,    -1,
1141 <      37,   263,   153,   260,    -1,   123,   263,   153,   260,    -1,
1142 <     122,   263,   153,   260,    -1,   255,   263,   153,   260,    -1,
1143 <     256,   263,   153,   260,    -1,   227,   263,   131,   260,    -1,
1144 <      84,   263,   197,   260,    -1,     5,   262,   296,   261,   260,
1145 <      -1,   296,   297,    -1,   297,    -1,   298,    -1,   300,    -1,
1146 <     299,    -1,     1,   260,    -1,   120,   263,   153,   260,    -1,
1147 <      47,   263,   153,   260,    -1,    37,   263,   153,   260,    -1,
1148 <     102,   262,   302,   261,   260,    -1,   302,   303,    -1,   303,
1149 <      -1,   304,    -1,   305,    -1,   314,    -1,   315,    -1,   306,
1150 <      -1,   308,    -1,   310,    -1,   311,    -1,   313,    -1,   309,
1151 <      -1,   312,    -1,   307,    -1,     1,   260,    -1,   219,   263,
1152 <     153,   260,    -1,   138,   263,   153,   260,    -1,    62,   263,
1153 <     153,   260,    -1,    55,   263,   153,   260,    -1,    60,   263,
1154 <     153,   260,    -1,    61,   263,   153,   260,    -1,    58,   263,
1155 <     153,   260,    -1,    57,   263,   153,   260,    -1,    59,   263,
1156 <     153,   260,    -1,    56,   263,   153,   260,    -1,   103,   263,
1157 <     220,   260,    -1,   103,   263,   222,   260,    -1,   103,   263,
1158 <     226,   260,    -1,   103,   263,   224,   260,    -1,   103,   263,
1159 <     225,   260,    -1,   103,   263,   223,   260,    -1,   103,   263,
1160 <     221,   260,    -1,   253,   263,   197,   260,    -1,    -1,   136,
1161 <     317,   318,   262,   319,   261,   260,    -1,    -1,   322,    -1,
1162 <     319,   320,    -1,   320,    -1,   321,    -1,   323,    -1,   324,
1163 <      -1,   328,    -1,   327,    -1,   325,    -1,   326,    -1,   332,
1164 <      -1,     1,   260,    -1,   120,   263,   153,   260,    -1,   153,
1165 <      -1,   248,   263,   153,   260,    -1,   147,   263,   153,   260,
1166 <      -1,    49,   263,   197,   260,    -1,   166,   263,   153,   260,
1167 <      -1,    26,   263,   153,   260,    -1,    -1,   236,   329,   263,
1168 <     330,   260,    -1,   330,   264,   331,    -1,   331,    -1,   204,
1169 <      -1,   207,    -1,   208,    -1,   210,    -1,   211,    -1,   214,
1170 <      -1,   233,    -1,   228,    -1,   230,    -1,   237,    -1,   234,
1171 <      -1,   213,    -1,   229,    -1,   232,    -1,   215,    -1,   240,
1172 <      -1,   205,    -1,   206,    -1,   218,    -1,    -1,    53,   333,
1173 <     263,   334,   260,    -1,   334,   264,   335,    -1,   335,    -1,
1174 <      -1,   130,   336,   338,    -1,    -1,   337,   338,    -1,    72,
1175 <      -1,   161,    -1,    92,    -1,   247,    -1,   257,    -1,    65,
1176 <      -1,    38,    -1,   159,    -1,     5,    -1,    77,    -1,   125,
1177 <      -1,   229,    -1,   141,    -1,    79,    -1,   162,    -1,    49,
1178 <      -1,    -1,    26,   340,   341,   262,   342,   261,   260,    -1,
1179 <      -1,   345,    -1,   342,   343,    -1,   343,    -1,   344,    -1,
1180 <     355,    -1,   356,    -1,   346,    -1,   347,    -1,   357,    -1,
1181 <     348,    -1,   349,    -1,   350,    -1,   351,    -1,   352,    -1,
1182 <     353,    -1,   354,    -1,     1,   260,    -1,   120,   263,   153,
1183 <     260,    -1,   153,    -1,   150,   263,   269,   260,    -1,   151,
1184 <     263,   269,   260,    -1,   134,   263,   131,   260,    -1,    30,
1185 <     263,   269,   260,    -1,   112,   263,   131,   260,    -1,   107,
1186 <     263,   131,   260,    -1,   109,   263,   131,   260,    -1,   108,
1187 <     263,   131,   260,    -1,   178,   263,   271,   260,    -1,    23,
1188 <     263,   131,   260,    -1,    24,   263,   131,   260,    -1,   133,
1189 <     263,   131,   260,    -1,    -1,   100,   359,   262,   364,   261,
1190 <     260,    -1,    -1,    53,   361,   263,   362,   260,    -1,   362,
1191 <     264,   363,    -1,   363,    -1,   235,    -1,    76,    -1,   231,
1192 <      -1,   364,   365,    -1,   365,    -1,   366,    -1,   360,    -1,
1193 <     370,    -1,   371,    -1,     1,   260,    -1,    -1,   152,   263,
1194 <     368,   367,   260,    -1,   368,   264,   369,    -1,   369,    -1,
1195 <     131,    -1,   131,   202,   131,    -1,    89,   263,   153,   260,
1196 <      -1,    83,   263,   153,   260,    -1,    -1,    73,   373,   262,
1197 <     374,   261,   260,    -1,   374,   375,    -1,   375,    -1,   376,
1198 <      -1,   377,    -1,   378,    -1,   380,    -1,   387,    -1,   388,
1199 <      -1,   389,    -1,   379,    -1,     1,   260,    -1,   248,   263,
1200 <     153,   260,    -1,   147,   263,   153,   260,    -1,    26,   263,
1201 <     153,   260,    -1,    49,   263,   197,   260,    -1,    -1,    53,
1202 <     381,   263,   382,   260,    -1,   382,   264,   383,    -1,   383,
1203 <      -1,    -1,   130,   384,   386,    -1,    -1,   385,   386,    -1,
1204 <     191,    -1,    50,    -1,    93,    -1,    74,    -1,    20,    -1,
1205 <      21,    -1,   129,    -1,    67,    -1,   172,    -1,   121,    -1,
1206 <     190,   263,   153,   260,    -1,   157,   263,   153,   260,    -1,
1207 <     156,   263,   131,   260,    -1,    -1,   171,   391,   262,   392,
1208 <     261,   260,    -1,   392,   393,    -1,   393,    -1,   394,    -1,
1209 <     395,    -1,   396,    -1,     1,   260,    -1,   155,   263,   153,
1210 <     260,    -1,    22,   263,   153,   260,    -1,   124,   263,   153,
1211 <     260,    -1,    -1,   185,   398,   262,   399,   261,   260,    -1,
1212 <     399,   400,    -1,   400,    -1,   401,    -1,   402,    -1,   403,
1213 <      -1,     1,   260,    -1,   120,   263,   153,   260,    -1,   248,
1214 <     263,   153,   260,    -1,    -1,   187,   404,   263,   405,   260,
1215 <      -1,   405,   264,   406,    -1,   406,    -1,    92,    -1,   244,
1216 <      -1,   247,    -1,   257,    -1,   245,    -1,   239,    -1,   171,
1217 <      -1,   246,    -1,   238,    -1,   218,    -1,   203,    -1,    -1,
1218 <     186,   408,   262,   409,   261,   260,    -1,   409,   410,    -1,
1219 <     410,    -1,   411,    -1,   412,    -1,     1,   260,    -1,   120,
1220 <     263,   153,   260,    -1,    -1,   187,   413,   263,   414,   260,
1221 <      -1,   414,   264,   415,    -1,   415,    -1,    92,    -1,   244,
1222 <      -1,   247,    -1,   257,    -1,   245,    -1,   239,    -1,   171,
1223 <      -1,   246,    -1,   238,    -1,   218,    -1,   203,    -1,    -1,
1224 <      29,   417,   418,   262,   419,   261,   260,    -1,    -1,   422,
1225 <      -1,   419,   420,    -1,   420,    -1,   421,    -1,   423,    -1,
1226 <     424,    -1,   425,    -1,   426,    -1,   428,    -1,   427,    -1,
1227 <     429,    -1,   438,    -1,   439,    -1,   440,    -1,   437,    -1,
1228 <     436,    -1,   441,    -1,     1,   260,    -1,   120,   263,   153,
1229 <     260,    -1,   153,    -1,    83,   263,   153,   260,    -1,   255,
1230 <     263,   153,   260,    -1,   179,   263,   153,   260,    -1,     3,
1231 <     263,   153,   260,    -1,   152,   263,   131,   260,    -1,     6,
1232 <     263,   216,   260,    -1,     6,   263,   217,   260,    -1,    -1,
1233 <      53,   430,   263,   431,   260,    -1,   431,   264,   432,    -1,
1234 <     432,    -1,    -1,   130,   433,   435,    -1,    -1,   434,   435,
1235 <      -1,    27,    -1,    31,    -1,    10,    -1,    12,    -1,   242,
1236 <      -1,   166,   263,   153,   260,    -1,    49,   263,   197,   260,
1237 <      -1,    85,   263,   153,   260,    -1,    98,   263,   153,   260,
1238 <      -1,    26,   263,   153,   260,    -1,    25,   263,   153,   260,
1239 <      -1,    -1,    90,   443,   262,   448,   261,   260,    -1,    -1,
1240 <     187,   445,   263,   446,   260,    -1,   446,   264,   447,    -1,
1241 <     447,    -1,   158,    -1,   448,   449,    -1,   449,    -1,   450,
1242 <      -1,   451,    -1,   444,    -1,     1,    -1,   248,   263,   153,
1243 <     260,    -1,   155,   263,   153,   260,    -1,    -1,    36,   453,
1244 <     262,   454,   261,   260,    -1,   454,   455,    -1,   455,    -1,
1245 <     456,    -1,   457,    -1,     1,    -1,    89,   263,   153,   260,
1246 <      -1,   155,   263,   153,   260,    -1,    51,   262,   459,   261,
1247 <     260,    -1,   459,   460,    -1,   460,    -1,   461,    -1,     1,
1248 <      -1,    89,   263,   153,   260,    -1,    -1,    63,   463,   262,
1249 <     468,   261,   260,    -1,    -1,   187,   465,   263,   466,   260,
1250 <      -1,   466,   264,   467,    -1,   467,    -1,   158,    -1,   468,
1251 <     469,    -1,   469,    -1,   470,    -1,   471,    -1,   464,    -1,
1252 <       1,    -1,   120,   263,   153,   260,    -1,   155,   263,   153,
1253 <     260,    -1,    64,   262,   473,   261,   260,    -1,   473,   474,
1254 <      -1,   474,    -1,   483,    -1,   484,    -1,   486,    -1,   487,
1255 <      -1,   488,    -1,   489,    -1,   490,    -1,   491,    -1,   492,
1256 <      -1,   493,    -1,   482,    -1,   495,    -1,   496,    -1,   497,
1257 <      -1,   498,    -1,   514,    -1,   500,    -1,   502,    -1,   504,
1258 <      -1,   503,    -1,   507,    -1,   501,    -1,   508,    -1,   509,
1259 <      -1,   510,    -1,   511,    -1,   513,    -1,   512,    -1,   528,
1260 <      -1,   515,    -1,   519,    -1,   520,    -1,   524,    -1,   505,
1261 <      -1,   506,    -1,   534,    -1,   532,    -1,   533,    -1,   516,
1262 <      -1,   485,    -1,   517,    -1,   518,    -1,   535,    -1,   523,
1263 <      -1,   494,    -1,   521,    -1,   522,    -1,   478,    -1,   481,
1264 <      -1,   476,    -1,   477,    -1,   479,    -1,   480,    -1,   499,
1265 <      -1,   475,    -1,     1,    -1,   114,   263,   131,   260,    -1,
1266 <      70,   263,   131,   260,    -1,    71,   263,   131,   260,    -1,
1267 <      12,   263,   197,   260,    -1,   254,   263,   197,   260,    -1,
1268 <     160,   263,   269,   260,    -1,   184,   263,   197,   260,    -1,
1269 <      91,   263,   269,   260,    -1,    82,   263,   197,   260,    -1,
1270 <      87,   263,   197,   260,    -1,    43,   263,   197,   260,    -1,
1271 <      52,   263,   197,   260,    -1,     8,   263,   197,   260,    -1,
1272 <     111,   263,   269,   260,    -1,   110,   263,   131,   260,    -1,
1273 <     104,   263,   131,   260,    -1,     9,   263,   269,   260,    -1,
1274 <     201,   263,   269,   260,    -1,   200,   263,   269,   260,    -1,
1275 <      75,   263,   131,   260,    -1,    95,   263,   197,   260,    -1,
1276 <      94,   263,   153,   260,    -1,    88,   263,   197,   260,    -1,
1277 <     259,   263,   197,   260,    -1,   192,   263,   197,   260,    -1,
1278 <     195,   263,   197,   260,    -1,   196,   263,   197,   260,    -1,
1279 <     194,   263,   197,   260,    -1,   194,   263,   198,   260,    -1,
1280 <     193,   263,   197,   260,    -1,   193,   263,   198,   260,    -1,
1281 <     145,   263,   269,   260,    -1,    19,   263,   269,   260,    -1,
1282 <     137,   263,   197,   260,    -1,   146,   263,   269,   260,    -1,
1283 <     188,   263,   197,   260,    -1,   128,   263,   197,   260,    -1,
1284 <     243,   263,   197,   260,    -1,   140,   263,   197,   260,    -1,
1285 <     115,   263,   153,   260,    -1,    86,   263,   269,   260,    -1,
1286 <      44,   263,   131,   260,    -1,   113,   263,   131,   260,    -1,
1287 <     182,   263,   153,   260,    -1,    32,   263,   153,   260,    -1,
1288 <      28,   263,   131,   260,    -1,   249,   263,   197,   260,    -1,
1289 <      46,   263,   153,   260,    -1,   149,   263,   197,   260,    -1,
1290 <      39,   263,   197,   260,    -1,   241,   263,   269,   260,    -1,
1291 <      -1,   142,   525,   263,   526,   260,    -1,   526,   264,   527,
1292 <      -1,   527,    -1,   204,    -1,   207,    -1,   208,    -1,   210,
1293 <      -1,   211,    -1,   214,    -1,   233,    -1,   228,    -1,   230,
1294 <      -1,   237,    -1,   234,    -1,   213,    -1,   229,    -1,   232,
1295 <      -1,   215,    -1,   240,    -1,   205,    -1,   206,    -1,   218,
1296 <      -1,    -1,   139,   529,   263,   530,   260,    -1,   530,   264,
1297 <     531,    -1,   531,    -1,   204,    -1,   207,    -1,   208,    -1,
1298 <     210,    -1,   211,    -1,   214,    -1,   233,    -1,   228,    -1,
1299 <     230,    -1,   237,    -1,   234,    -1,   213,    -1,   229,    -1,
1300 <     232,    -1,   215,    -1,   240,    -1,   205,    -1,   206,    -1,
1301 <     218,    -1,   116,   263,   131,   260,    -1,   117,   263,   131,
1302 <     260,    -1,    33,   263,   131,   260,    -1,   209,   263,   271,
1303 <     260,    -1,    -1,    66,   537,   262,   538,   261,   260,    -1,
1304 <     538,   539,    -1,   539,    -1,   540,    -1,   541,    -1,   542,
1305 <      -1,   546,    -1,   547,    -1,   548,    -1,     1,    -1,    48,
1306 <     263,   197,   260,    -1,    45,   263,   269,   260,    -1,    -1,
1307 <     102,   543,   263,   544,   260,    -1,   544,   264,   545,    -1,
1308 <     545,    -1,   199,    -1,    11,    -1,   248,   263,   153,   260,
1309 <      -1,   120,   263,   153,   260,    -1,    -1,     4,   549,   263,
1310 <     550,   260,    -1,   550,   264,   551,    -1,   551,    -1,   199,
1311 <      -1,    11,    -1,    22,   262,   553,   261,   260,    -1,   553,
1312 <     554,    -1,   554,    -1,   557,    -1,   558,    -1,   559,    -1,
1313 <     560,    -1,   565,    -1,   561,    -1,   562,    -1,   563,    -1,
1314 <     564,    -1,   566,    -1,   567,    -1,   568,    -1,   556,    -1,
1315 <     569,    -1,   570,    -1,   571,    -1,   572,    -1,   555,    -1,
1316 <       1,    -1,    40,   263,   197,   260,    -1,   163,   263,   197,
1317 <     260,    -1,    42,   263,   197,   260,    -1,   250,   263,   197,
1318 <     260,    -1,   251,   263,   197,   260,    -1,   252,   263,   197,
1319 <     260,    -1,    96,   263,   269,   260,    -1,    97,   263,   269,
1320 <     260,    -1,   106,   263,   131,   260,    -1,   154,   263,   197,
1321 <     260,    -1,   105,   263,   131,   260,    -1,    35,   263,   131,
1322 <     260,    -1,    34,   263,   131,   260,    -1,   126,   263,   197,
1323 <     260,    -1,   127,   263,   197,   260,    -1,    13,   263,   197,
1324 <     260,    -1,   143,   263,   131,   260,    -1,   144,   263,   269,
1325 <     260,    -1,   180,   262,   574,   261,   260,    -1,   574,   575,
1326 <      -1,   575,    -1,   576,    -1,   577,    -1,   579,    -1,   581,
1327 <      -1,   580,    -1,   578,    -1,   582,    -1,     1,    -1,    54,
1328 <     263,   197,   260,    -1,    81,   263,   197,   260,    -1,    78,
1329 <     263,   153,   260,    -1,    99,   263,   269,   260,    -1,    76,
1330 <     263,   197,   260,    -1,    41,   263,   197,   260,    -1,    80,
1331 <     263,   197,   260,    -1
1332 < };
1333 <
1334 < /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1016 >  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
1017   static const yytype_uint16 yyrline[] =
1018   {
1019 <       0,   395,   395,   396,   399,   400,   401,   402,   403,   404,
1020 <     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
1021 <     415,   416,   417,   418,   419,   420,   424,   424,   425,   429,
1022 <     433,   437,   441,   445,   451,   451,   452,   453,   454,   455,
1023 <     462,   465,   465,   466,   466,   466,   468,   476,   485,   487,
1024 <     487,   488,   488,   489,   489,   490,   490,   491,   492,   492,
1025 <     493,   493,   494,   495,   499,   498,   517,   517,   518,   524,
1026 <     532,   566,   626,   641,   656,   665,   679,   688,   716,   746,
1027 <     769,   778,   780,   780,   781,   781,   782,   782,   784,   793,
1028 <     802,   815,   817,   818,   820,   820,   821,   822,   822,   823,
1029 <     823,   824,   824,   825,   825,   826,   827,   829,   833,   837,
1030 <     844,   851,   858,   865,   872,   879,   886,   893,   897,   901,
1031 <     905,   909,   913,   917,   923,   933,   932,  1026,  1026,  1027,
1032 <    1027,  1028,  1028,  1028,  1029,  1029,  1029,  1030,  1030,  1030,
1033 <    1032,  1044,  1056,  1090,  1102,  1113,  1155,  1165,  1164,  1170,
1034 <    1170,  1171,  1175,  1179,  1183,  1187,  1191,  1195,  1199,  1203,
1035 <    1207,  1211,  1215,  1219,  1223,  1227,  1231,  1235,  1239,  1243,
1036 <    1250,  1249,  1253,  1253,  1254,  1254,  1255,  1255,  1257,  1264,
1037 <    1271,  1278,  1285,  1292,  1299,  1306,  1313,  1320,  1327,  1334,
1038 <    1341,  1348,  1355,  1362,  1376,  1375,  1425,  1425,  1427,  1427,
1039 <    1428,  1429,  1429,  1430,  1431,  1432,  1433,  1434,  1435,  1436,
1040 <    1437,  1438,  1439,  1440,  1442,  1451,  1460,  1466,  1472,  1478,
1041 <    1484,  1490,  1496,  1502,  1508,  1514,  1520,  1526,  1536,  1535,
1042 <    1552,  1551,  1556,  1556,  1557,  1561,  1565,  1573,  1573,  1574,
1043 <    1574,  1574,  1574,  1574,  1576,  1576,  1578,  1578,  1580,  1594,
1044 <    1614,  1623,  1636,  1635,  1704,  1704,  1705,  1705,  1705,  1705,
1045 <    1706,  1706,  1706,  1707,  1707,  1709,  1746,  1759,  1768,  1780,
1046 <    1779,  1783,  1783,  1784,  1784,  1785,  1785,  1787,  1794,  1801,
1047 <    1808,  1815,  1822,  1829,  1836,  1843,  1850,  1860,  1879,  1889,
1048 <    1903,  1902,  1918,  1918,  1919,  1919,  1919,  1919,  1921,  1930,
1049 <    1945,  1959,  1958,  1974,  1974,  1975,  1975,  1975,  1975,  1977,
1050 <    1986,  2009,  2008,  2014,  2014,  2015,  2019,  2023,  2027,  2031,
1051 <    2035,  2039,  2043,  2047,  2051,  2055,  2065,  2064,  2081,  2081,
1052 <    2082,  2082,  2082,  2084,  2091,  2090,  2096,  2096,  2097,  2101,
1053 <    2105,  2109,  2113,  2117,  2121,  2125,  2129,  2133,  2137,  2147,
1054 <    2146,  2292,  2292,  2293,  2293,  2294,  2294,  2294,  2295,  2295,
1055 <    2296,  2296,  2297,  2297,  2297,  2298,  2298,  2299,  2299,  2300,
1056 <    2302,  2314,  2326,  2335,  2361,  2379,  2397,  2403,  2407,  2416,
1057 <    2415,  2419,  2419,  2420,  2420,  2421,  2421,  2423,  2434,  2441,
1058 <    2448,  2455,  2465,  2506,  2517,  2530,  2543,  2552,  2588,  2587,
1059 <    2651,  2650,  2654,  2654,  2655,  2661,  2661,  2662,  2662,  2662,
1060 <    2662,  2664,  2683,  2693,  2692,  2715,  2715,  2716,  2716,  2716,
1061 <    2718,  2724,  2733,  2735,  2735,  2736,  2736,  2738,  2757,  2756,
1062 <    2804,  2803,  2807,  2807,  2808,  2814,  2814,  2815,  2815,  2815,
1063 <    2815,  2817,  2823,  2832,  2835,  2835,  2836,  2836,  2837,  2837,
1064 <    2838,  2838,  2839,  2839,  2840,  2840,  2841,  2841,  2842,  2842,
1065 <    2843,  2843,  2844,  2844,  2845,  2845,  2846,  2846,  2847,  2847,
1066 <    2848,  2848,  2849,  2849,  2850,  2850,  2851,  2851,  2852,  2852,
1067 <    2853,  2853,  2854,  2854,  2855,  2855,  2856,  2857,  2857,  2858,
1068 <    2858,  2859,  2860,  2860,  2861,  2861,  2862,  2862,  2863,  2863,
1069 <    2864,  2865,  2868,  2873,  2878,  2883,  2888,  2893,  2898,  2903,
1070 <    2908,  2913,  2918,  2923,  2928,  2933,  2938,  2943,  2948,  2953,
1071 <    2958,  2964,  2975,  2980,  2989,  2994,  2999,  3004,  3009,  3014,
1072 <    3017,  3022,  3025,  3030,  3035,  3040,  3045,  3050,  3055,  3060,
1073 <    3065,  3070,  3081,  3086,  3091,  3096,  3105,  3137,  3155,  3160,
1074 <    3169,  3174,  3179,  3185,  3184,  3189,  3189,  3190,  3193,  3196,
1075 <    3199,  3202,  3205,  3208,  3211,  3214,  3217,  3220,  3223,  3226,
1076 <    3229,  3232,  3235,  3238,  3241,  3244,  3250,  3249,  3254,  3254,
1077 <    3255,  3258,  3261,  3264,  3267,  3270,  3273,  3276,  3279,  3282,
1078 <    3285,  3288,  3291,  3294,  3297,  3300,  3303,  3306,  3309,  3314,
1079 <    3319,  3324,  3329,  3339,  3338,  3362,  3362,  3363,  3364,  3365,
1080 <    3366,  3367,  3368,  3369,  3371,  3377,  3384,  3383,  3388,  3388,
1081 <    3389,  3393,  3399,  3433,  3443,  3442,  3492,  3492,  3493,  3497,
1082 <    3506,  3509,  3509,  3510,  3510,  3511,  3511,  3512,  3512,  3513,
1083 <    3513,  3514,  3514,  3515,  3516,  3516,  3517,  3517,  3518,  3518,
1084 <    3519,  3519,  3521,  3526,  3531,  3536,  3541,  3546,  3551,  3556,
1085 <    3561,  3566,  3571,  3576,  3581,  3586,  3591,  3596,  3601,  3606,
1404 <    3614,  3617,  3617,  3618,  3618,  3619,  3620,  3621,  3621,  3622,
1405 <    3623,  3625,  3631,  3637,  3646,  3660,  3666,  3672
1019 >       0,   378,   378,   379,   382,   383,   384,   385,   386,   387,
1020 >     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
1021 >     398,   399,   400,   401,   402,   403,   404,   408,   408,   409,
1022 >     410,   411,   412,   413,   414,   415,   416,   419,   419,   420,
1023 >     421,   422,   423,   430,   433,   433,   434,   434,   434,   436,
1024 >     442,   449,   451,   451,   452,   453,   454,   455,   456,   457,
1025 >     458,   459,   460,   461,   462,   463,   464,   465,   466,   467,
1026 >     468,   469,   472,   473,   475,   475,   476,   482,   490,   490,
1027 >     491,   497,   505,   547,   605,   633,   641,   656,   671,   680,
1028 >     694,   703,   731,   761,   786,   808,   830,   839,   841,   841,
1029 >     842,   843,   844,   845,   847,   856,   865,   878,   877,   895,
1030 >     895,   896,   896,   896,   898,   904,   913,   914,   914,   916,
1031 >     916,   917,   919,   926,   926,   939,   940,   942,   942,   943,
1032 >     943,   945,   953,   956,   962,   961,   967,   967,   968,   972,
1033 >     976,   980,   984,   988,   992,   996,  1000,  1011,  1010,  1090,
1034 >    1090,  1091,  1092,  1093,  1094,  1095,  1096,  1097,  1098,  1099,
1035 >    1100,  1101,  1103,  1109,  1115,  1121,  1132,  1138,  1144,  1155,
1036 >    1162,  1161,  1167,  1167,  1168,  1172,  1176,  1180,  1184,  1188,
1037 >    1192,  1196,  1200,  1204,  1208,  1212,  1216,  1220,  1224,  1228,
1038 >    1232,  1236,  1240,  1244,  1248,  1252,  1256,  1263,  1262,  1268,
1039 >    1268,  1269,  1273,  1277,  1281,  1285,  1289,  1293,  1297,  1301,
1040 >    1305,  1309,  1313,  1317,  1321,  1325,  1329,  1333,  1337,  1341,
1041 >    1345,  1349,  1353,  1357,  1361,  1372,  1371,  1432,  1432,  1433,
1042 >    1434,  1435,  1436,  1437,  1438,  1439,  1440,  1441,  1442,  1443,
1043 >    1444,  1444,  1445,  1446,  1447,  1448,  1450,  1456,  1462,  1468,
1044 >    1474,  1480,  1486,  1492,  1498,  1504,  1511,  1517,  1523,  1529,
1045 >    1538,  1548,  1547,  1553,  1553,  1554,  1558,  1569,  1568,  1575,
1046 >    1574,  1579,  1579,  1580,  1584,  1588,  1594,  1594,  1595,  1595,
1047 >    1595,  1595,  1595,  1597,  1597,  1599,  1599,  1601,  1615,  1633,
1048 >    1639,  1649,  1648,  1690,  1690,  1691,  1692,  1693,  1694,  1695,
1049 >    1696,  1697,  1698,  1699,  1701,  1707,  1713,  1719,  1731,  1730,
1050 >    1736,  1736,  1737,  1741,  1745,  1749,  1753,  1757,  1761,  1765,
1051 >    1769,  1773,  1779,  1793,  1802,  1816,  1815,  1830,  1830,  1831,
1052 >    1831,  1831,  1831,  1833,  1839,  1845,  1855,  1857,  1857,  1858,
1053 >    1858,  1860,  1876,  1875,  1900,  1900,  1901,  1901,  1901,  1901,
1054 >    1903,  1909,  1929,  1928,  1934,  1934,  1935,  1939,  1943,  1947,
1055 >    1951,  1955,  1959,  1963,  1967,  1971,  1981,  1980,  2001,  2001,
1056 >    2002,  2002,  2002,  2004,  2011,  2010,  2016,  2016,  2017,  2021,
1057 >    2025,  2029,  2033,  2037,  2041,  2045,  2049,  2053,  2063,  2062,
1058 >    2134,  2134,  2135,  2136,  2137,  2138,  2139,  2140,  2141,  2142,
1059 >    2143,  2144,  2145,  2146,  2147,  2148,  2149,  2151,  2157,  2163,
1060 >    2169,  2182,  2195,  2201,  2207,  2211,  2220,  2219,  2224,  2224,
1061 >    2225,  2229,  2235,  2246,  2252,  2258,  2264,  2280,  2279,  2305,
1062 >    2305,  2306,  2306,  2306,  2308,  2328,  2338,  2337,  2364,  2364,
1063 >    2365,  2365,  2365,  2367,  2373,  2382,  2384,  2384,  2385,  2385,
1064 >    2387,  2405,  2404,  2427,  2427,  2428,  2428,  2428,  2430,  2436,
1065 >    2445,  2448,  2448,  2449,  2450,  2451,  2452,  2453,  2454,  2455,
1066 >    2456,  2457,  2458,  2459,  2460,  2461,  2462,  2463,  2464,  2465,
1067 >    2466,  2467,  2468,  2469,  2470,  2471,  2472,  2473,  2474,  2475,
1068 >    2476,  2477,  2478,  2479,  2480,  2481,  2482,  2483,  2484,  2485,
1069 >    2486,  2487,  2488,  2489,  2490,  2491,  2492,  2493,  2494,  2495,
1070 >    2496,  2497,  2498,  2501,  2506,  2512,  2518,  2524,  2530,  2535,
1071 >    2540,  2545,  2550,  2555,  2560,  2565,  2570,  2575,  2580,  2585,
1072 >    2590,  2595,  2601,  2612,  2617,  2622,  2627,  2632,  2637,  2642,
1073 >    2645,  2650,  2653,  2658,  2663,  2668,  2673,  2678,  2683,  2688,
1074 >    2693,  2698,  2703,  2708,  2713,  2722,  2731,  2736,  2741,  2747,
1075 >    2746,  2751,  2751,  2752,  2755,  2758,  2761,  2764,  2767,  2770,
1076 >    2773,  2776,  2779,  2782,  2785,  2788,  2791,  2794,  2797,  2800,
1077 >    2803,  2806,  2809,  2812,  2815,  2818,  2824,  2823,  2828,  2828,
1078 >    2829,  2832,  2835,  2838,  2841,  2844,  2847,  2850,  2853,  2856,
1079 >    2859,  2862,  2865,  2868,  2871,  2874,  2877,  2880,  2883,  2886,
1080 >    2889,  2894,  2899,  2904,  2913,  2916,  2916,  2917,  2918,  2919,
1081 >    2920,  2921,  2922,  2923,  2924,  2925,  2926,  2927,  2928,  2929,
1082 >    2931,  2936,  2941,  2946,  2951,  2956,  2961,  2966,  2971,  2976,
1083 >    2981,  2986,  2994,  2997,  2997,  2998,  2999,  3000,  3001,  3002,
1084 >    3003,  3004,  3005,  3006,  3008,  3014,  3020,  3026,  3032,  3041,
1085 >    3055,  3061
1086   };
1087   #endif
1088  
1089 < #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1089 > #if YYDEBUG || YYERROR_VERBOSE || 0
1090   /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1091     First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1092   static const char *const yytname[] =
1093   {
1094 <  "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
1095 <  "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
1096 <  "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
1097 <  "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
1098 <  "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
1419 <  "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1420 <  "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
1094 >  "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1095 >  "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN", "BYTES",
1096 >  "KBYTES", "MBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CHANNEL",
1097 >  "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS", "CONNECT",
1098 >  "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE", "DEFAULT_FLOODCOUNT",
1099    "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1100    "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1101 <  "DISABLE_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1424 <  "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL", "ENABLE",
1101 >  "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT", "EGDPOOL_PATH", "EMAIL",
1102    "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1103 <  "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1104 <  "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1105 <  "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1106 <  "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1107 <  "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1108 <  "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1109 <  "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1110 <  "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1111 <  "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1112 <  "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1113 <  "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1114 <  "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1115 <  "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1116 <  "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1117 <  "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1118 <  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1119 <  "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1120 <  "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
1121 <  "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
1122 <  "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
1123 <  "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
1124 <  "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
1125 <  "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
1126 <  "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
1127 <  "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
1128 <  "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "T_SSL_CONNECTION_METHOD",
1129 <  "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1130 <  "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1131 <  "SERVERINFO", "SERVLINK_PATH", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1132 <  "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SILENT", "SPOOF",
1133 <  "SPOOF_NOTICE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1134 <  "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL",
1135 <  "TMASKED", "T_REJECT", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS",
1136 <  "T_ALL", "T_BOTS", "T_SOFTCALLERID", "T_CALLERID", "T_CCONN",
1137 <  "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF", "T_DEBUG", "T_DRONE",
1138 <  "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS",
1139 <  "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR", "T_L_INFO",
1140 <  "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS", "T_NCHANGE",
1141 <  "T_OPERWALL", "T_REJ", "T_SERVER", "T_SERVNOTICE", "T_SKILL", "T_SPY",
1142 <  "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
1143 <  "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
1144 <  "TRESV", "UNKLINE", "USER", "USE_EGD", "USE_EXCEPT", "USE_INVEX",
1145 <  "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6",
1146 <  "XLINE", "WARN", "WARN_NO_NLINE", "';'", "'}'", "'{'", "'='", "','",
1147 <  "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1148 <  "sizespec", "modules_entry", "modules_items", "modules_item",
1149 <  "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
1150 <  "serverinfo_item", "serverinfo_ssl_connection_method", "$@1",
1151 <  "method_types", "method_type_item", "serverinfo_ssl_certificate_file",
1152 <  "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
1103 >  "FLATTEN_LINKS", "GECOS", "GENERAL", "GLINE", "GLINE_DURATION",
1104 >  "GLINE_ENABLE", "GLINE_EXEMPT", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1105 >  "GLINE_REQUEST_DURATION", "GLOBAL_KILL", "HAVENT_READ_CONF", "HIDDEN",
1106 >  "HIDDEN_NAME", "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS",
1107 >  "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SERVICES", "HIDE_SPOOF_IPS",
1108 >  "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
1109 >  "IP", "IRCD_AUTH", "IRCD_FLAGS", "IRCD_SID", "JOIN_FLOOD_COUNT",
1110 >  "JOIN_FLOOD_TIME", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE",
1111 >  "KLINE_EXEMPT", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1112 >  "LINKS_DELAY", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS",
1113 >  "MAX_CHANS_PER_OPER", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT",
1114 >  "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES", "MAX_NICK_LENGTH",
1115 >  "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS", "MAX_TOPIC_LENGTH",
1116 >  "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD", "MIN_NONWILDCARD_SIMPLE",
1117 >  "MODULE", "MODULES", "MOTD", "NAME", "NEED_IDENT", "NEED_PASSWORD",
1118 >  "NETWORK_DESC", "NETWORK_NAME", "NICK", "NO_CREATE_ON_SPLIT",
1119 >  "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE", "NUMBER",
1120 >  "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPER_ONLY_UMODES", "OPER_PASS_RESV",
1121 >  "OPER_UMODES", "OPERATOR", "OPERS_BYPASS_CALLERID", "PACE_WAIT",
1122 >  "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME",
1123 >  "PORT", "QSTRING", "RANDOM_IDLE", "REASON", "REDIRPORT", "REDIRSERV",
1124 >  "REHASH", "REMOTE", "REMOTEBAN", "RESV", "RESV_EXEMPT",
1125 >  "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE", "SECONDS", "MINUTES",
1126 >  "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1127 >  "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1128 >  "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1129 >  "SSL_CONNECTION_REQUIRED", "SSL_DH_PARAM_FILE", "STATS_E_DISABLED",
1130 >  "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY",
1131 >  "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS",
1132 >  "T_CALLERID", "T_CCONN", "T_CLUSTER", "T_DEAF", "T_DEBUG", "T_DLINE",
1133 >  "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1134 >  "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_MAX_CLIENTS",
1135 >  "T_NCHANGE", "T_NONONREG", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_RESTART",
1136 >  "T_SERVER", "T_SERVICE", "T_SERVICES_NAME", "T_SERVNOTICE", "T_SET",
1137 >  "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1138 >  "T_SSL_CIPHER_LIST", "T_SSL_CLIENT_METHOD", "T_SSL_SERVER_METHOD",
1139 >  "T_SSLV3", "T_TLSV1", "T_UMODES", "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED",
1140 >  "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS", "T_WEBIRC", "TBOOL",
1141 >  "THROTTLE_TIME", "TKLINE_EXPIRE_NOTICES", "TMASKED",
1142 >  "TRUE_NO_OPER_FLOOD", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "TYPE",
1143 >  "UNKLINE", "USE_EGD", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1144 >  "WARN_NO_CONNECT_BLOCK", "XLINE", "';'", "'}'", "'{'", "'='", "','",
1145 >  "':'", "$accept", "conf", "conf_item", "timespec_", "timespec",
1146 >  "sizespec_", "sizespec", "modules_entry", "modules_items",
1147 >  "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1148 >  "serverinfo_items", "serverinfo_item", "serverinfo_ssl_client_method",
1149 >  "serverinfo_ssl_server_method", "client_method_types",
1150 >  "client_method_type_item", "server_method_types",
1151 >  "server_method_type_item", "serverinfo_ssl_certificate_file",
1152 >  "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1153 >  "serverinfo_ssl_cipher_list", "serverinfo_name", "serverinfo_sid",
1154    "serverinfo_description", "serverinfo_network_name",
1155    "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1156 <  "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1157 <  "admin_item", "admin_name", "admin_email", "admin_description",
1158 <  "logging_entry", "logging_items", "logging_item", "logging_path",
1159 <  "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
1160 <  "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
1161 <  "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
1162 <  "logging_log_level", "logging_use_logging", "oper_entry", "$@2",
1163 <  "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
1164 <  "oper_user", "oper_password", "oper_encrypted",
1165 <  "oper_rsa_public_key_file", "oper_class", "oper_umodes", "$@3",
1166 <  "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@4",
1167 <  "oper_flags_items", "oper_flags_item", "$@5", "$@6",
1168 <  "oper_flags_item_atom", "class_entry", "$@7", "class_name_b",
1169 <  "class_items", "class_item", "class_name", "class_name_t",
1170 <  "class_ping_time", "class_ping_warning", "class_number_per_ip",
1156 >  "serverinfo_max_clients", "serverinfo_max_nick_length",
1157 >  "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1158 >  "admin_items", "admin_item", "admin_name", "admin_email",
1159 >  "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1160 >  "motd_mask", "motd_file", "logging_entry", "logging_items",
1161 >  "logging_item", "logging_use_logging", "logging_file_entry", "$@2",
1162 >  "logging_file_items", "logging_file_item", "logging_file_name",
1163 >  "logging_file_size", "logging_file_type", "$@3",
1164 >  "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@4",
1165 >  "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
1166 >  "oper_encrypted", "oper_rsa_public_key_file",
1167 >  "oper_ssl_certificate_fingerprint", "oper_ssl_connection_required",
1168 >  "oper_class", "oper_umodes", "$@5", "oper_umodes_items",
1169 >  "oper_umodes_item", "oper_flags", "$@6", "oper_flags_items",
1170 >  "oper_flags_item", "class_entry", "$@7", "class_items", "class_item",
1171 >  "class_name", "class_ping_time", "class_number_per_ip",
1172    "class_connectfreq", "class_max_number", "class_max_global",
1173 <  "class_max_local", "class_max_ident", "class_sendq",
1173 >  "class_max_local", "class_max_ident", "class_sendq", "class_recvq",
1174    "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1175 <  "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1176 <  "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1177 <  "listen_port", "$@10", "port_items", "port_item", "listen_address",
1178 <  "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1179 <  "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1180 <  "$@12", "auth_flags_items", "auth_flags_item", "$@13", "$@14",
1181 <  "auth_flags_item_atom", "auth_spoof", "auth_redir_serv",
1182 <  "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1183 <  "resv_creason", "resv_channel", "resv_nick", "shared_entry", "$@16",
1175 >  "class_number_per_cidr", "class_min_idle", "class_max_idle",
1176 >  "class_flags", "$@8", "class_flags_items", "class_flags_item",
1177 >  "listen_entry", "$@9", "listen_flags", "$@10", "listen_flags_items",
1178 >  "listen_flags_item", "listen_items", "listen_item", "listen_port",
1179 >  "$@11", "port_items", "port_item", "listen_address", "listen_host",
1180 >  "auth_entry", "$@12", "auth_items", "auth_item", "auth_user",
1181 >  "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@13",
1182 >  "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1183 >  "auth_redir_port", "resv_entry", "$@14", "resv_items", "resv_item",
1184 >  "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1185 >  "service_items", "service_item", "service_name", "shared_entry", "$@15",
1186    "shared_items", "shared_item", "shared_name", "shared_user",
1187 <  "shared_type", "$@17", "shared_types", "shared_type_item",
1188 <  "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1189 <  "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1190 <  "connect_entry", "$@20", "connect_name_b", "connect_items",
1191 <  "connect_item", "connect_name", "connect_name_t", "connect_host",
1192 <  "connect_vhost", "connect_send_password", "connect_accept_password",
1193 <  "connect_port", "connect_aftype", "connect_flags", "$@21",
1194 <  "connect_flags_items", "connect_flags_item", "$@22", "$@23",
1195 <  "connect_flags_item_atom", "connect_rsa_public_key_file",
1196 <  "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1197 <  "connect_class", "connect_cipher_preference", "kill_entry", "$@24",
1517 <  "kill_type", "$@25", "kill_type_items", "kill_type_item", "kill_items",
1518 <  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@26",
1187 >  "shared_type", "$@16", "shared_types", "shared_type_item",
1188 >  "cluster_entry", "$@17", "cluster_items", "cluster_item", "cluster_name",
1189 >  "cluster_type", "$@18", "cluster_types", "cluster_type_item",
1190 >  "connect_entry", "$@19", "connect_items", "connect_item", "connect_name",
1191 >  "connect_host", "connect_vhost", "connect_send_password",
1192 >  "connect_accept_password", "connect_ssl_certificate_fingerprint",
1193 >  "connect_port", "connect_aftype", "connect_flags", "$@20",
1194 >  "connect_flags_items", "connect_flags_item", "connect_encrypted",
1195 >  "connect_hub_mask", "connect_leaf_mask", "connect_class",
1196 >  "connect_ssl_cipher_list", "kill_entry", "$@21", "kill_items",
1197 >  "kill_item", "kill_user", "kill_reason", "deny_entry", "$@22",
1198    "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1199 <  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@27",
1521 <  "gecos_flags", "$@28", "gecos_flags_items", "gecos_flags_item",
1199 >  "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@23",
1200    "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1201    "general_entry", "general_items", "general_item", "general_max_watch",
1202 +  "general_cycle_on_host_change", "general_gline_enable",
1203 +  "general_gline_duration", "general_gline_request_duration",
1204    "general_gline_min_cidr", "general_gline_min_cidr6",
1205 <  "general_burst_away", "general_use_whois_actually",
1206 <  "general_reject_hold_time", "general_tkline_expire_notices",
1527 <  "general_kill_chase_time_limit", "general_hide_spoof_ips",
1528 <  "general_ignore_bogus_ts", "general_disable_remote_commands",
1205 >  "general_tkline_expire_notices", "general_kill_chase_time_limit",
1206 >  "general_hide_spoof_ips", "general_ignore_bogus_ts",
1207    "general_failed_oper_notice", "general_anti_nick_flood",
1208    "general_max_nick_time", "general_max_nick_changes",
1209    "general_max_accept", "general_anti_spam_exit_message_time",
1210    "general_ts_warn_delta", "general_ts_max_delta",
1211 <  "general_havent_read_conf", "general_kline_with_reason",
1212 <  "general_kline_reason", "general_invisible_on_connect",
1535 <  "general_warn_no_nline", "general_stats_e_disabled",
1211 >  "general_havent_read_conf", "general_invisible_on_connect",
1212 >  "general_warn_no_connect_block", "general_stats_e_disabled",
1213    "general_stats_o_oper_only", "general_stats_P_oper_only",
1214 <  "general_stats_k_oper_only", "general_stats_i_oper_only",
1215 <  "general_pace_wait", "general_caller_id_wait",
1216 <  "general_opers_bypass_callerid", "general_pace_wait_simple",
1217 <  "general_short_motd", "general_no_oper_flood",
1218 <  "general_true_no_oper_flood", "general_oper_pass_resv",
1219 <  "general_message_locale", "general_idletime", "general_dots_in_ident",
1220 <  "general_max_targets", "general_servlink_path",
1221 <  "general_default_cipher_preference", "general_compression_level",
1222 <  "general_use_egd", "general_egdpool_path", "general_ping_cookie",
1223 <  "general_disable_auth", "general_throttle_time", "general_oper_umodes",
1224 <  "$@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1225 <  "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
1226 <  "general_min_nonwildcard_simple", "general_default_floodcount",
1550 <  "general_client_flood", "gline_entry", "$@31", "gline_items",
1551 <  "gline_item", "gline_enable", "gline_duration", "gline_logging", "$@32",
1552 <  "gline_logging_types", "gline_logging_type_item", "gline_user",
1553 <  "gline_server", "gline_action", "$@33", "gdeny_types", "gdeny_type_item",
1554 <  "channel_entry", "channel_items", "channel_item",
1555 <  "channel_disable_fake_channels", "channel_restrict_channels",
1556 <  "channel_disable_local_channels", "channel_use_except",
1557 <  "channel_use_invex", "channel_use_knock", "channel_knock_delay",
1214 >  "general_stats_u_oper_only", "general_stats_k_oper_only",
1215 >  "general_stats_i_oper_only", "general_pace_wait",
1216 >  "general_caller_id_wait", "general_opers_bypass_callerid",
1217 >  "general_pace_wait_simple", "general_short_motd",
1218 >  "general_no_oper_flood", "general_true_no_oper_flood",
1219 >  "general_oper_pass_resv", "general_dots_in_ident", "general_max_targets",
1220 >  "general_use_egd", "general_egdpool_path", "general_services_name",
1221 >  "general_ping_cookie", "general_disable_auth", "general_throttle_time",
1222 >  "general_oper_umodes", "$@24", "umode_oitems", "umode_oitem",
1223 >  "general_oper_only_umodes", "$@25", "umode_items", "umode_item",
1224 >  "general_min_nonwildcard", "general_min_nonwildcard_simple",
1225 >  "general_default_floodcount", "channel_entry", "channel_items",
1226 >  "channel_item", "channel_disable_fake_channels", "channel_knock_delay",
1227    "channel_knock_delay_channel", "channel_max_chans_per_user",
1228 <  "channel_quiet_on_ban", "channel_max_bans",
1228 >  "channel_max_chans_per_oper", "channel_max_bans",
1229    "channel_default_split_user_count", "channel_default_split_server_count",
1230    "channel_no_create_on_split", "channel_no_join_on_split",
1231 <  "channel_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
1232 <  "serverhide_entry", "serverhide_items", "serverhide_item",
1233 <  "serverhide_flatten_links", "serverhide_hide_servers",
1234 <  "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
1235 <  "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
1231 >  "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
1232 >  "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1233 >  "serverhide_disable_remote_commands", "serverhide_hide_servers",
1234 >  "serverhide_hide_services", "serverhide_hidden_name",
1235 >  "serverhide_links_delay", "serverhide_hidden",
1236 >  "serverhide_hide_server_ips", YY_NULLPTR
1237   };
1238   #endif
1239  
1240   # ifdef YYPRINT
1241 < /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1242 <   token YYLEX-NUM.  */
1241 > /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1242 >   (internal) symbol number NUM (which must be that of a token).  */
1243   static const yytype_uint16 yytoknum[] =
1244   {
1245         0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
# Line 1594 | Line 1264 | static const yytype_uint16 yytoknum[] =
1264       445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
1265       455,   456,   457,   458,   459,   460,   461,   462,   463,   464,
1266       465,   466,   467,   468,   469,   470,   471,   472,   473,   474,
1267 <     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
1268 <     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
1599 <     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
1600 <     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
1601 <      59,   125,   123,    61,    44
1267 >     475,   476,   477,   478,   479,   480,   481,   482,   483,    59,
1268 >     125,   123,    61,    44,    58
1269   };
1270   # endif
1271  
1272 < /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1606 < static const yytype_uint16 yyr1[] =
1607 < {
1608 <       0,   265,   266,   266,   267,   267,   267,   267,   267,   267,
1609 <     267,   267,   267,   267,   267,   267,   267,   267,   267,   267,
1610 <     267,   267,   267,   267,   267,   267,   268,   268,   269,   269,
1611 <     269,   269,   269,   269,   270,   270,   271,   271,   271,   271,
1612 <     272,   273,   273,   274,   274,   274,   275,   276,   277,   278,
1613 <     278,   279,   279,   279,   279,   279,   279,   279,   279,   279,
1614 <     279,   279,   279,   279,   281,   280,   282,   282,   283,   283,
1615 <     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
1616 <     294,   295,   296,   296,   297,   297,   297,   297,   298,   299,
1617 <     300,   301,   302,   302,   303,   303,   303,   303,   303,   303,
1618 <     303,   303,   303,   303,   303,   303,   303,   304,   305,   306,
1619 <     307,   308,   309,   310,   311,   312,   313,   314,   314,   314,
1620 <     314,   314,   314,   314,   315,   317,   316,   318,   318,   319,
1621 <     319,   320,   320,   320,   320,   320,   320,   320,   320,   320,
1622 <     321,   322,   323,   324,   325,   326,   327,   329,   328,   330,
1623 <     330,   331,   331,   331,   331,   331,   331,   331,   331,   331,
1624 <     331,   331,   331,   331,   331,   331,   331,   331,   331,   331,
1625 <     333,   332,   334,   334,   336,   335,   337,   335,   338,   338,
1626 <     338,   338,   338,   338,   338,   338,   338,   338,   338,   338,
1627 <     338,   338,   338,   338,   340,   339,   341,   341,   342,   342,
1628 <     343,   343,   343,   343,   343,   343,   343,   343,   343,   343,
1629 <     343,   343,   343,   343,   344,   345,   346,   347,   348,   349,
1630 <     350,   351,   352,   353,   354,   355,   356,   357,   359,   358,
1631 <     361,   360,   362,   362,   363,   363,   363,   364,   364,   365,
1632 <     365,   365,   365,   365,   367,   366,   368,   368,   369,   369,
1633 <     370,   371,   373,   372,   374,   374,   375,   375,   375,   375,
1634 <     375,   375,   375,   375,   375,   376,   377,   378,   379,   381,
1635 <     380,   382,   382,   384,   383,   385,   383,   386,   386,   386,
1636 <     386,   386,   386,   386,   386,   386,   386,   387,   388,   389,
1637 <     391,   390,   392,   392,   393,   393,   393,   393,   394,   395,
1638 <     396,   398,   397,   399,   399,   400,   400,   400,   400,   401,
1639 <     402,   404,   403,   405,   405,   406,   406,   406,   406,   406,
1640 <     406,   406,   406,   406,   406,   406,   408,   407,   409,   409,
1641 <     410,   410,   410,   411,   413,   412,   414,   414,   415,   415,
1642 <     415,   415,   415,   415,   415,   415,   415,   415,   415,   417,
1643 <     416,   418,   418,   419,   419,   420,   420,   420,   420,   420,
1644 <     420,   420,   420,   420,   420,   420,   420,   420,   420,   420,
1645 <     421,   422,   423,   424,   425,   426,   427,   428,   428,   430,
1646 <     429,   431,   431,   433,   432,   434,   432,   435,   435,   435,
1647 <     435,   435,   436,   437,   438,   439,   440,   441,   443,   442,
1648 <     445,   444,   446,   446,   447,   448,   448,   449,   449,   449,
1649 <     449,   450,   451,   453,   452,   454,   454,   455,   455,   455,
1650 <     456,   457,   458,   459,   459,   460,   460,   461,   463,   462,
1651 <     465,   464,   466,   466,   467,   468,   468,   469,   469,   469,
1652 <     469,   470,   471,   472,   473,   473,   474,   474,   474,   474,
1653 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1654 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1655 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1656 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1657 <     474,   474,   474,   474,   474,   474,   474,   474,   474,   474,
1658 <     474,   474,   475,   476,   477,   478,   479,   480,   481,   482,
1659 <     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
1660 <     493,   494,   495,   496,   497,   498,   499,   500,   501,   502,
1661 <     502,   503,   503,   504,   505,   506,   507,   508,   509,   510,
1662 <     511,   512,   513,   514,   515,   516,   517,   518,   519,   520,
1663 <     521,   522,   523,   525,   524,   526,   526,   527,   527,   527,
1664 <     527,   527,   527,   527,   527,   527,   527,   527,   527,   527,
1665 <     527,   527,   527,   527,   527,   527,   529,   528,   530,   530,
1666 <     531,   531,   531,   531,   531,   531,   531,   531,   531,   531,
1667 <     531,   531,   531,   531,   531,   531,   531,   531,   531,   532,
1668 <     533,   534,   535,   537,   536,   538,   538,   539,   539,   539,
1669 <     539,   539,   539,   539,   540,   541,   543,   542,   544,   544,
1670 <     545,   545,   546,   547,   549,   548,   550,   550,   551,   551,
1671 <     552,   553,   553,   554,   554,   554,   554,   554,   554,   554,
1672 <     554,   554,   554,   554,   554,   554,   554,   554,   554,   554,
1673 <     554,   554,   555,   556,   557,   558,   559,   560,   561,   562,
1674 <     563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
1675 <     573,   574,   574,   575,   575,   575,   575,   575,   575,   575,
1676 <     575,   576,   577,   578,   579,   580,   581,   582
1677 < };
1272 > #define YYPACT_NINF -1020
1273  
1274 < /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1275 < static const yytype_uint8 yyr2[] =
1274 > #define yypact_value_is_default(Yystate) \
1275 >  (!!((Yystate) == (-1020)))
1276 >
1277 > #define YYTABLE_NINF -124
1278 >
1279 > #define yytable_value_is_error(Yytable_value) \
1280 >  0
1281 >
1282 >  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1283 >     STATE-NUM.  */
1284 > static const yytype_int16 yypact[] =
1285   {
1286 <       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
1287 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1288 <       1,     1,     1,     1,     2,     2,     0,     1,     2,     3,
1289 <       3,     3,     3,     3,     0,     1,     2,     3,     3,     3,
1290 <       5,     2,     1,     1,     1,     2,     4,     4,     5,     2,
1291 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1292 <       1,     1,     1,     2,     0,     5,     3,     1,     1,     1,
1293 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1294 <       4,     5,     2,     1,     1,     1,     1,     2,     4,     4,
1295 <       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
1296 <       1,     1,     1,     1,     1,     1,     2,     4,     4,     4,
1297 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1298 <       4,     4,     4,     4,     4,     0,     7,     0,     1,     2,
1299 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1300 <       4,     1,     4,     4,     4,     4,     4,     0,     5,     3,
1301 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1302 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1303 <       0,     5,     3,     1,     0,     3,     0,     2,     1,     1,
1304 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1305 <       1,     1,     1,     1,     0,     7,     0,     1,     2,     1,
1306 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1307 <       1,     1,     1,     2,     4,     1,     4,     4,     4,     4,
1308 <       4,     4,     4,     4,     4,     4,     4,     4,     0,     6,
1309 <       0,     5,     3,     1,     1,     1,     1,     2,     1,     1,
1310 <       1,     1,     1,     2,     0,     5,     3,     1,     1,     3,
1311 <       4,     4,     0,     6,     2,     1,     1,     1,     1,     1,
1312 <       1,     1,     1,     1,     2,     4,     4,     4,     4,     0,
1313 <       5,     3,     1,     0,     3,     0,     2,     1,     1,     1,
1314 <       1,     1,     1,     1,     1,     1,     1,     4,     4,     4,
1315 <       0,     6,     2,     1,     1,     1,     1,     2,     4,     4,
1316 <       4,     0,     6,     2,     1,     1,     1,     1,     2,     4,
1317 <       4,     0,     5,     3,     1,     1,     1,     1,     1,     1,
1318 <       1,     1,     1,     1,     1,     1,     0,     6,     2,     1,
1319 <       1,     1,     2,     4,     0,     5,     3,     1,     1,     1,
1320 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
1321 <       7,     0,     1,     2,     1,     1,     1,     1,     1,     1,
1322 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
1323 <       4,     1,     4,     4,     4,     4,     4,     4,     4,     0,
1324 <       5,     3,     1,     0,     3,     0,     2,     1,     1,     1,
1325 <       1,     1,     4,     4,     4,     4,     4,     4,     0,     6,
1326 <       0,     5,     3,     1,     1,     2,     1,     1,     1,     1,
1327 <       1,     4,     4,     0,     6,     2,     1,     1,     1,     1,
1328 <       4,     4,     5,     2,     1,     1,     1,     4,     0,     6,
1329 <       0,     5,     3,     1,     1,     2,     1,     1,     1,     1,
1330 <       1,     4,     4,     5,     2,     1,     1,     1,     1,     1,
1331 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1332 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1333 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1334 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1335 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1336 <       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
1337 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1338 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1339 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1340 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1341 <       4,     4,     4,     0,     5,     3,     1,     1,     1,     1,
1342 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1343 <       1,     1,     1,     1,     1,     1,     0,     5,     3,     1,
1344 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1345 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     4,
1346 <       4,     4,     4,     0,     6,     2,     1,     1,     1,     1,
1347 <       1,     1,     1,     1,     4,     4,     0,     5,     3,     1,
1348 <       1,     1,     4,     4,     0,     5,     3,     1,     1,     1,
1349 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1350 <       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1351 <       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
1352 <       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
1353 <       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
1354 <       1,     4,     4,     4,     4,     4,     4,     4
1286 >   -1020,   742, -1020,  -200,  -226,  -218, -1020, -1020, -1020,  -210,
1287 >   -1020,  -193, -1020, -1020, -1020,  -191, -1020, -1020, -1020,  -131,
1288 >    -129, -1020,   -98,   -60, -1020, -1020, -1020, -1020, -1020, -1020,
1289 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1290 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,   333,
1291 >     309,   -43,   -41,   -35,    25,   -21,   449,   -19,   -11,    -2,
1292 >      46,    48,    51,    52,   646,   488,    61,   118,    24,    69,
1293 >     -38,   -25,    30,    39,    17, -1020, -1020, -1020, -1020, -1020,
1294 >      41,    82,    85,    87,   101,   107,   110,   112,   117,   119,
1295 >     121,   122,     5, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1296 >   -1020, -1020, -1020, -1020, -1020, -1020,   748,   536,    18, -1020,
1297 >     125,    40, -1020, -1020,    21, -1020,   127,   128,   129,   131,
1298 >     132,   134,   137,   138,   140,   143,   148,   149,   152,   156,
1299 >     160,   161,   162,   165,   166,   169,   171,   172,   174,   176,
1300 >     177,   179,   180, -1020,   181, -1020,   182,   185,   188,   189,
1301 >     194,   195,   196,   197,   198,   202,   203,   204,   205,   208,
1302 >     210,   211,   212,   216,   221,   108, -1020, -1020, -1020, -1020,
1303 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1304 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1305 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1306 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1307 >   -1020, -1020, -1020, -1020, -1020, -1020,   303,     9,    36,    76,
1308 >     222,   225,    13, -1020, -1020, -1020,    14,   450,    97, -1020,
1309 >     226,   227,   228,   230,   231,   233,   234,   239,     7, -1020,
1310 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,    86,   240,
1311 >     242,   245,   246,   249,   250,   252,   254,   255,   256,   264,
1312 >     266,   269,   271,   272,   273,   275,    59, -1020, -1020, -1020,
1313 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1314 >   -1020, -1020, -1020, -1020, -1020,    73,   111,   276,     8, -1020,
1315 >   -1020, -1020,    78, -1020,   277,    23, -1020, -1020,    74, -1020,
1316 >     324,   350,   387,   287, -1020,   144,   407,   306,   411,   412,
1317 >     412,   412,   413,   414,   415,   314,   334,   319, -1020,   320,
1318 >     311,   326,   328, -1020,   329,   340,   342,   343,   345,   346,
1319 >     347,   349,   351,   352,   353,   357,   262, -1020, -1020, -1020,
1320 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1321 >   -1020, -1020, -1020, -1020,   323,   358,   363,   366,   367,   368,
1322 >     370, -1020,   380,   381,   382,   383,   385,   388,   389,   243,
1323 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1324 >   -1020, -1020, -1020, -1020, -1020, -1020,   390,   399,    19, -1020,
1325 >   -1020, -1020,   431,   403, -1020, -1020,   401,   402,    57, -1020,
1326 >   -1020, -1020,   423,   412,   412,   425,   472,   427,   509,   516,
1327 >     430,   412,   433,   539,   540,   412,   541,   434,   440,   442,
1328 >     412,   545,   546,   412,   548,   549,   551,   554,   445,   438,
1329 >     460,   441,   469,   412,   412,   470,   473,   478,  -147,   -54,
1330 >     479,   480,   481,   559,   412,   482,   485,   412,   412,   487,
1331 >     491,   475, -1020,   476,   474,   477, -1020,   483,   486,   492,
1332 >     494,   495,   290, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1333 >   -1020, -1020, -1020,   496,   497,    50, -1020, -1020, -1020,   490,
1334 >     499,   500, -1020,   503, -1020,     6, -1020, -1020, -1020, -1020,
1335 >   -1020,   583,   585,   510, -1020,   511,   513,   515,    11, -1020,
1336 >   -1020, -1020,   512,   518,   519, -1020,   521,   522,   530,   533,
1337 >     538, -1020,   542,   175, -1020, -1020, -1020, -1020, -1020, -1020,
1338 >   -1020, -1020, -1020, -1020, -1020,   543,   544,   550,   552,    15,
1339 >   -1020, -1020, -1020, -1020,   505,   508,   561,   586,   566,   567,
1340 >     571,   412,   557, -1020, -1020,   587,   575,   598,   638,   661,
1341 >     663,   664,   665,   666,   667,   668,   684,   670,  -156,  -125,
1342 >     671,   672,   569, -1020,   570,   568, -1020,    66, -1020, -1020,
1343 >   -1020, -1020,   589,   573, -1020,   572,   679,   576, -1020,   578,
1344 >     577, -1020,   580,    31, -1020, -1020, -1020, -1020,   579,   581,
1345 >     588, -1020,   591,   593,   596,   597,   392,   599,   600,   601,
1346 >     606,   607,   608,   610,   614, -1020, -1020,   704,   705,   412,
1347 >     584,   708,   717,   412,   734,   735,   412,   722,   739,   740,
1348 >     412,   741,   741,   623, -1020, -1020,   728,    42,   729,   643,
1349 >     731,   732,   629,   737,   738,   758,   744,   745,   753,   756,
1350 >     654, -1020,   760,   761,   669, -1020,   673, -1020,   770,   771,
1351 >     677, -1020,   678,   680,   681,   682,   683,   685,   686,   687,
1352 >     688,   690,   691,   693,   694,   695,   696,   697,   699,   700,
1353 >     702,   712,   715,   719,   720,   723,   730,   736,   746,   709,
1354 >     755,   772,   762,   763,   765,   766,   774,   775,   777,   778,
1355 >     779,   783,   784,   785,   787,   788,   789,   791,   792,   796,
1356 >     797,   798,   799, -1020, -1020,   776,   721,   706,   821,   790,
1357 >     826,   833,   835,   800, -1020,   836,   839,   801, -1020, -1020,
1358 >     844,   845,   757,   861,   802, -1020,   803,   804, -1020, -1020,
1359 >     848,   849,   805, -1020, -1020,   852,   811,   806,   862,   910,
1360 >     911,   912,   827,   808,   916,   813, -1020, -1020,   918,   919,
1361 >     920,   817, -1020,   818,   819,   820,   822,   823,   824,   825,
1362 >     828, -1020,   829,   830,   831,   832,   834,   837,   838,   840,
1363 >     841,   842,   843,   846,   847, -1020, -1020,  -198, -1020, -1020,
1364 >   -1020,  -190, -1020,   850,   851, -1020, -1020,   925,   853,   854,
1365 >   -1020,   855, -1020,    79,   857, -1020, -1020,   930,   856,   931,
1366 >     858, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,   412,
1367 >     412,   412,   412,   412,   412,   412, -1020, -1020, -1020, -1020,
1368 >   -1020, -1020, -1020, -1020, -1020, -1020,   860,   863,   864,   -36,
1369 >     865,   866,   867,   868,   869,   870,   871,   872,   873,   874,
1370 >      96,   875,   876, -1020,   877,   878,   879,   880,   881,   882,
1371 >     883,     3,   884,   885,   886,   887,   888,   889,   890, -1020,
1372 >     891,   892, -1020, -1020,   893,   894, -1020, -1020, -1020, -1020,
1373 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1374 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1375 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1376 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1377 >   -1020, -1020, -1020, -1020, -1020,  -181, -1020, -1020, -1020, -1020,
1378 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1379 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1380 >   -1020,  -163, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1381 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1382 >   -1020, -1020, -1020, -1020,   895,   896,   635,   897,   898,   899,
1383 >     900,   901, -1020,   902,   903, -1020,   904,   905,   -15,   859,
1384 >     906, -1020, -1020, -1020, -1020,   907,   908, -1020,   909,   913,
1385 >     547,   914,   915,   917,   921,   922,   815,   923, -1020,   924,
1386 >     926,   927, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1387 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1388 >   -1020, -1020, -1020, -1020, -1020,  -156, -1020,  -125, -1020, -1020,
1389 >     928,   217, -1020, -1020,   929,   932,   933, -1020,    22, -1020,
1390 >   -1020, -1020, -1020, -1020,   934,   794,   937, -1020, -1020, -1020,
1391 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1392 >    -138, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1393 >   -1020, -1020,   741,   741,   741, -1020, -1020, -1020, -1020, -1020,
1394 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,   -65, -1020,
1395 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1396 >   -1020, -1020,   709, -1020,   772, -1020, -1020, -1020, -1020, -1020,
1397 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020,   -48, -1020, -1020,
1398 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1399 >   -1020,   -40, -1020,   952,   861,   938, -1020, -1020, -1020, -1020,
1400 >   -1020,   935, -1020, -1020,   936, -1020, -1020, -1020, -1020,   939,
1401 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1402 >   -1020,   -31, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1403 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1404 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1405 >   -1020,   -24, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1406 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1407 >     -16, -1020, -1020,   940,   -51,   942,   943, -1020, -1020, -1020,
1408 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,    -1,
1409 >   -1020, -1020, -1020,   -36, -1020, -1020, -1020, -1020,     3, -1020,
1410 >   -1020, -1020,   635, -1020,   -15, -1020, -1020, -1020,   946,   950,
1411 >     951, -1020,   547, -1020,   815, -1020,   217,   947,   948,   949,
1412 >     331, -1020, -1020,   794, -1020, -1020, -1020, -1020, -1020, -1020,
1413 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1414 >   -1020, -1020, -1020, -1020, -1020, -1020,    83, -1020, -1020, -1020,
1415 >     331, -1020
1416   };
1417  
1418 < /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1419 <   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
1420 <   means the default is an error.  */
1418 >  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1419 >     Performed when YYTABLE does not specify something else to do.  Zero
1420 >     means the default is an error.  */
1421   static const yytype_uint16 yydefact[] =
1422   {
1423 <       2,     0,     1,     0,     0,     0,   194,   349,   413,     0,
1424 <     428,     0,   603,   252,   398,   228,     0,     0,   125,   290,
1425 <       0,     0,   301,   326,     3,    23,    11,     4,     5,     6,
1426 <       8,     9,    10,    13,    14,    15,    16,    17,    18,    19,
1427 <      22,    20,    21,     7,    12,    24,    25,     0,     0,   196,
1763 <     351,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1764 <       0,   127,     0,     0,     0,     0,     0,     0,     0,     0,
1765 <       0,     0,    83,    84,    86,    85,   651,     0,     0,     0,
1423 >       2,     0,     1,     0,     0,     0,   225,   388,   436,     0,
1424 >     451,     0,   291,   427,   267,     0,   107,   147,   325,     0,
1425 >       0,   366,     0,     0,   342,     3,    23,    11,     4,    24,
1426 >       5,     6,     8,     9,    10,    13,    14,    15,    16,    17,
1427 >      18,    19,    20,    22,    21,     7,    12,    25,    26,     0,
1428         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1767       0,     0,     0,     0,     0,     0,   632,   650,   645,   633,
1768     634,   635,   636,   638,   639,   640,   641,   637,   642,   643,
1769     644,   646,   647,   648,   649,   215,     0,   197,   371,     0,
1770     352,     0,   426,     0,     0,   424,   425,     0,   501,     0,
1429         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1430 +       0,     0,     0,     0,     0,    99,   100,   102,   101,   629,
1431         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1432 +       0,     0,     0,   616,   628,   618,   619,   620,   621,   617,
1433 +     622,   623,   624,   625,   626,   627,     0,     0,     0,   449,
1434 +       0,     0,   447,   448,     0,   512,     0,     0,     0,     0,
1435         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1774       0,   576,     0,   553,     0,     0,     0,     0,     0,     0,
1436         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1437 <       0,     0,     0,     0,     0,   445,   500,   495,   496,   493,
1777 <     497,   498,   494,   456,   446,   447,   485,   448,   449,   450,
1778 <     451,   452,   453,   454,   455,   490,   457,   458,   459,   460,
1779 <     499,   462,   467,   463,   465,   464,   479,   480,   466,   468,
1780 <     469,   470,   471,   473,   472,   461,   475,   484,   486,   487,
1781 <     476,   477,   491,   492,   489,   478,   474,   482,   483,   481,
1782 <     488,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1783 <       0,     0,     0,     0,     0,     0,     0,     0,     0,    93,
1784 <      94,    95,    98,   105,    99,   103,   100,   101,   104,   102,
1785 <      96,    97,     0,     0,     0,     0,    42,    43,    44,   141,
1786 <       0,   128,     0,   680,     0,     0,     0,     0,     0,     0,
1787 <       0,     0,   672,   673,   674,   678,   675,   677,   676,   679,
1788 <       0,     0,     0,     0,     0,     0,     0,     0,    64,     0,
1789 <       0,     0,     0,     0,    50,    62,    61,    58,    51,    60,
1790 <      54,    55,    56,    52,    59,    57,    53,     0,     0,    87,
1791 <       0,     0,     0,     0,    82,     0,     0,     0,     0,     0,
1437 >       0,     0,     0,   586,     0,   559,     0,     0,     0,     0,
1438         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1439 <       0,     0,     0,     0,   631,     0,     0,   419,     0,     0,
1440 <       0,   416,   417,   418,     0,     0,   423,   440,     0,     0,
1441 <     430,   439,     0,   436,   437,   438,     0,     0,     0,     0,
1439 >       0,     0,     0,     0,     0,     0,   462,   509,   511,   503,
1440 >     504,   505,   506,   507,   502,   473,   463,   464,   465,   466,
1441 >     467,   468,   469,   470,   471,   472,   499,   474,   475,   508,
1442 >     477,   482,   483,   478,   480,   479,   493,   494,   481,   484,
1443 >     485,   486,   487,   476,   489,   490,   491,   510,   500,   501,
1444 >     498,   492,   488,   496,   497,   495,     0,     0,     0,     0,
1445 >       0,     0,     0,    45,    46,    47,     0,     0,     0,   653,
1446 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   644,
1447 >     645,   646,   647,   648,   651,   649,   650,   652,     0,     0,
1448         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1449 +       0,     0,     0,     0,     0,     0,     0,    53,    68,    69,
1450 +      67,    64,    63,    70,    54,    66,    57,    58,    59,    55,
1451 +      65,    60,    61,    62,    56,     0,     0,     0,     0,   118,
1452 +     119,   120,     0,   340,     0,     0,   338,   339,     0,   103,
1453 +       0,     0,     0,     0,    98,     0,     0,     0,     0,     0,
1454 +       0,     0,     0,     0,     0,     0,     0,     0,   615,     0,
1455 +       0,     0,     0,   261,     0,     0,     0,     0,     0,     0,
1456 +       0,     0,     0,     0,     0,     0,     0,   228,   229,   232,
1457 +     234,   235,   236,   237,   238,   239,   240,   241,   230,   231,
1458 +     233,   242,   243,   244,     0,     0,     0,     0,     0,     0,
1459 +       0,   416,     0,     0,     0,     0,     0,     0,     0,     0,
1460 +     391,   392,   393,   394,   395,   396,   397,   399,   398,   401,
1461 +     405,   402,   403,   404,   400,   442,     0,     0,     0,   439,
1462 +     440,   441,     0,     0,   446,   457,     0,     0,     0,   454,
1463 +     455,   456,     0,     0,     0,     0,     0,     0,     0,     0,
1464         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1465         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1466         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1467         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1468 <       0,     0,   444,   613,   624,     0,     0,   616,     0,     0,
1469 <       0,   606,   607,   608,   609,   610,   611,   612,     0,     0,
1470 <       0,   269,     0,     0,     0,     0,     0,     0,   255,   256,
1471 <     257,   258,   263,   259,   260,   261,   262,   410,     0,   400,
1472 <       0,   409,     0,   406,   407,   408,     0,   230,     0,     0,
1473 <       0,   240,     0,   238,   239,   241,   242,   106,     0,     0,
1468 >       0,     0,   461,     0,     0,     0,   308,     0,     0,     0,
1469 >       0,     0,     0,   294,   295,   296,   297,   302,   298,   299,
1470 >     300,   301,   433,     0,     0,     0,   430,   431,   432,     0,
1471 >       0,     0,   269,     0,   279,     0,   277,   278,   280,   281,
1472 >      48,     0,     0,     0,    44,     0,     0,     0,     0,   110,
1473 >     111,   112,     0,     0,     0,   197,     0,     0,     0,     0,
1474 >       0,   170,     0,     0,   150,   151,   152,   153,   156,   157,
1475 >     158,   159,   155,   154,   160,     0,     0,     0,     0,     0,
1476 >     328,   329,   330,   331,     0,     0,     0,     0,     0,     0,
1477 >       0,     0,     0,   643,    71,     0,     0,     0,     0,     0,
1478         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1479 <       0,    92,    45,     0,     0,     0,    41,     0,     0,     0,
1480 <       0,     0,     0,   293,   294,   295,   296,     0,     0,     0,
1481 <       0,     0,     0,     0,     0,   671,    63,     0,     0,     0,
1479 >       0,     0,     0,    52,     0,     0,   374,     0,   369,   370,
1480 >     371,   121,     0,     0,   117,     0,     0,     0,   337,     0,
1481 >       0,   352,     0,     0,   345,   346,   347,   348,     0,     0,
1482 >       0,    97,     0,     0,     0,     0,    27,     0,     0,     0,
1483 >       0,     0,     0,     0,     0,   614,   245,     0,     0,     0,
1484         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1485 <      49,     0,     0,   311,     0,     0,   304,   305,   306,   307,
1813 <       0,     0,   334,     0,   329,   330,   331,     0,     0,     0,
1814 <      81,     0,     0,     0,     0,     0,    26,     0,     0,     0,
1485 >       0,     0,     0,     0,   227,   406,     0,     0,     0,     0,
1486         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1487 <     630,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1488 <       0,     0,     0,     0,     0,     0,   199,   200,   203,   204,
1818 <     206,   207,   208,   209,   210,   211,   212,   201,   202,   205,
1819 <       0,     0,     0,     0,     0,     0,   379,     0,     0,     0,
1820 <       0,     0,     0,     0,     0,     0,   354,   355,   356,   357,
1821 <     358,   359,   361,   360,   362,   367,   366,   363,   364,   365,
1822 <     368,     0,     0,     0,   415,     0,   422,     0,     0,     0,
1823 <       0,   435,     0,     0,     0,     0,     0,     0,     0,     0,
1487 >       0,   390,     0,     0,     0,   438,     0,   445,     0,     0,
1488 >       0,   453,     0,     0,     0,     0,     0,     0,     0,     0,
1489         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1490         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1491         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1492         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1493 <       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
1494 <     443,     0,     0,     0,     0,     0,     0,     0,   605,   264,
1495 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   254,
1496 <       0,     0,     0,     0,   405,   243,     0,     0,     0,     0,
1497 <       0,   237,     0,     0,     0,     0,     0,     0,     0,     0,
1493 >       0,     0,     0,   460,   303,     0,     0,     0,     0,     0,
1494 >       0,     0,     0,     0,   293,     0,     0,     0,   429,   282,
1495 >       0,     0,     0,     0,     0,   276,     0,     0,    43,   113,
1496 >       0,     0,     0,   109,   161,     0,     0,     0,     0,     0,
1497 >       0,     0,     0,     0,     0,     0,   149,   332,     0,     0,
1498 >       0,     0,   327,     0,     0,     0,     0,     0,     0,     0,
1499 >       0,   642,     0,     0,     0,     0,     0,     0,     0,     0,
1500 >       0,     0,     0,     0,     0,    76,    77,     0,    75,    80,
1501 >      81,     0,    79,     0,     0,    51,   372,     0,     0,     0,
1502 >     368,     0,   116,     0,     0,   336,   349,     0,     0,     0,
1503 >       0,   344,   106,   105,   104,   637,   636,   630,   640,    27,
1504 >      27,    27,    27,    27,    27,    27,    29,    28,   641,   631,
1505 >     632,   635,   634,   633,   638,   639,     0,     0,     0,     0,
1506         0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1507 <      91,     0,     0,    40,     0,     0,     0,   170,     0,     0,
1508 <       0,   147,     0,     0,   130,   131,   132,   133,   136,   137,
1509 <     135,   134,   138,   297,     0,     0,     0,     0,   292,     0,
1510 <       0,     0,     0,     0,     0,     0,   670,     0,     0,     0,
1511 <       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
1512 <     308,     0,     0,     0,     0,   303,   332,     0,     0,     0,
1513 <     328,    90,    89,    88,   667,   664,   663,   652,   654,    26,
1514 <      26,    26,    26,    26,    28,    27,   658,   659,   662,   660,
1515 <     665,   666,   668,   669,   661,   653,   655,   656,   657,   213,
1516 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1517 <       0,     0,     0,     0,   198,   369,     0,     0,     0,     0,
1518 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1519 <       0,   353,     0,     0,   414,   427,     0,     0,     0,   429,
1520 <     514,   518,   505,   534,   547,   546,   601,   551,   512,   543,
1521 <     549,   513,   503,   504,   521,   510,   542,   511,   524,   509,
1522 <     523,   522,   517,   516,   515,   544,   502,   541,   599,   600,
1523 <     538,   535,   580,   596,   597,   581,   582,   583,   584,   591,
1524 <     585,   594,   598,   587,   592,   588,   593,   586,   590,   589,
1525 <     595,     0,   579,   540,   557,   573,   574,   558,   559,   560,
1526 <     561,   568,   562,   571,   575,   564,   569,   565,   570,   563,
1527 <     567,   566,   572,     0,   556,   533,   536,   550,   507,   545,
1528 <     508,   537,   526,   531,   532,   529,   530,   527,   528,   520,
1529 <     519,    34,    34,    34,    36,    35,   602,   552,   539,   548,
1530 <     506,   525,     0,     0,     0,     0,     0,     0,   604,     0,
1531 <       0,   275,     0,     0,     0,     0,     0,   253,     0,     0,
1532 <       0,   399,     0,     0,     0,   248,   244,   247,   229,   110,
1533 <     116,   114,   113,   115,   111,   112,   109,   117,   123,   118,
1534 <     122,   120,   121,   119,   108,   107,   124,    46,    47,   139,
1535 <       0,     0,     0,     0,     0,     0,     0,     0,     0,   129,
1536 <       0,     0,     0,   291,   686,   681,   685,   683,   687,   682,
1537 <     684,    74,    80,    72,    76,    75,    71,    70,    68,    69,
1538 <       0,    67,    73,    79,    77,    78,     0,     0,     0,   302,
1539 <       0,     0,   327,    29,    30,    31,    32,    33,     0,     0,
1540 <       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1541 <       0,   195,     0,     0,     0,     0,     0,     0,   385,     0,
1542 <       0,     0,     0,     0,     0,     0,     0,   350,   420,   421,
1543 <     441,   442,   434,     0,   433,   577,     0,   554,     0,    37,
1544 <      38,    39,   629,   628,     0,   627,   615,   614,   621,   620,
1545 <       0,   619,   623,   622,   267,   268,   273,     0,   272,     0,
1546 <     266,   289,   288,   287,   265,   412,   404,     0,   403,   411,
1547 <     235,   236,   234,     0,   233,   251,   250,     0,     0,     0,
1548 <       0,     0,   176,     0,     0,     0,     0,     0,   126,   299,
1549 <     300,   298,    65,     0,   309,   315,   321,   325,   324,   323,
1550 <     320,   316,   319,   322,   317,   318,     0,   314,   310,   333,
1551 <     338,   344,   348,   347,   346,   343,   339,   342,   345,   340,
1552 <     341,     0,   337,   225,   226,   219,   221,   223,   222,   220,
1880 <     214,   227,   218,   216,   217,   224,   375,   377,   378,   397,
1881 <     396,   393,   383,     0,   382,     0,   372,   394,   395,   370,
1882 <     376,   392,   374,   373,   431,     0,   578,   555,   625,     0,
1883 <     617,     0,     0,   270,   275,   281,   282,   278,   284,   280,
1884 <     279,   286,   283,   285,   277,   276,   401,     0,   231,     0,
1885 <     249,   246,   245,   146,   144,   174,     0,   173,     0,   140,
1886 <     143,   145,   151,   167,   168,   152,   153,   154,   155,   162,
1887 <     156,   165,   169,   158,   163,   159,   164,   157,   161,   160,
1888 <     166,     0,   150,   142,    66,   312,     0,   335,     0,     0,
1889 <     380,   385,   389,   390,   387,   388,   391,   386,   432,   626,
1890 <     618,   274,   271,   402,   232,     0,   171,   176,   186,   184,
1891 <     193,   183,   178,   187,   191,   180,   188,   190,   185,   179,
1892 <     192,   189,   181,   182,   177,   148,     0,   313,   336,   384,
1893 <     381,   175,   172,   149
1894 < };
1895 <
1896 < /* YYDEFGOTO[NTERM-NUM].  */
1897 < static const yytype_int16 yydefgoto[] =
1898 < {
1899 <      -1,     1,    24,   834,   835,   984,   985,    25,   275,   276,
1900 <     277,   278,    26,   313,   314,   315,   534,  1070,  1071,   316,
1901 <     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
1902 <      27,    71,    72,    73,    74,    75,    28,   258,   259,   260,
1903 <     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
1904 <     271,    29,    61,   280,   773,   774,   775,   281,   776,   777,
1905 <     778,   779,   780,   781,  1046,  1301,  1302,   782,  1042,  1276,
1906 <    1277,  1325,  1278,  1344,    30,    49,   116,   595,   596,   597,
1907 <     117,   598,   599,   600,   601,   602,   603,   604,   605,   606,
1908 <     607,   608,   609,    31,    58,   481,   736,  1163,  1164,   482,
1909 <     483,   484,  1169,  1016,  1017,   485,   486,    32,    56,   457,
1910 <     458,   459,   460,   461,   462,   463,   722,  1147,  1148,  1252,
1911 <    1149,  1265,   464,   465,   466,    33,    62,   512,   513,   514,
1912 <     515,   516,    34,    65,   545,   546,   547,   548,   549,   812,
1913 <    1196,  1197,    35,    66,   553,   554,   555,   556,   818,  1211,
1914 <    1212,    36,    50,   119,   625,   626,   627,   120,   628,   629,
1915 <     630,   631,   632,   633,   634,   871,  1233,  1234,  1309,  1235,
1916 <    1317,   635,   636,   637,   638,   639,   640,    37,    57,   471,
1917 <     731,  1157,  1158,   472,   473,   474,   475,    38,    51,   360,
1918 <     361,   362,   363,    39,   124,   125,   126,    40,    53,   371,
1919 <     649,  1123,  1124,   372,   373,   374,   375,    41,   184,   185,
1920 <     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
1921 <     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1922 <     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
1923 <     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
1924 <     226,   227,   228,   229,   230,   231,   232,   233,   234,   235,
1925 <     410,   963,   964,   236,   408,   941,   942,   237,   238,   239,
1926 <     240,    42,    55,   440,   441,   442,   443,   444,   714,  1140,
1927 <    1141,   445,   446,   447,   711,  1134,  1135,    43,    95,    96,
1928 <      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
1929 <     107,   108,   109,   110,   111,   112,   113,   114,    44,   291,
1930 <     292,   293,   294,   295,   296,   297,   298,   299
1507 >      37,     0,     0,   226,     0,     0,     0,     0,     0,     0,
1508 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   389,
1509 >       0,     0,   437,   450,     0,     0,   452,   525,   529,   544,
1510 >     514,   613,   557,   551,   554,   524,   516,   515,   518,   519,
1511 >     517,   532,   522,   523,   533,   521,   528,   527,   526,   552,
1512 >     513,   611,   612,   548,   596,   590,   607,   591,   592,   593,
1513 >     601,   610,   594,   604,   608,   597,   609,   602,   598,   603,
1514 >     595,   606,   600,   599,   605,     0,   589,   550,   568,   569,
1515 >     570,   563,   582,   564,   565,   566,   576,   585,   567,   579,
1516 >     583,   572,   584,   577,   573,   578,   571,   581,   575,   574,
1517 >     580,     0,   562,   545,   543,   546,   556,   547,   535,   541,
1518 >     542,   539,   540,   536,   537,   538,   555,   558,   520,   549,
1519 >     531,   530,   553,   534,     0,     0,     0,     0,     0,     0,
1520 >       0,     0,   292,     0,     0,   428,     0,     0,     0,   287,
1521 >     283,   286,   268,    49,    50,     0,     0,   108,     0,     0,
1522 >       0,     0,     0,     0,     0,     0,     0,     0,   148,     0,
1523 >       0,     0,   326,   655,   654,   660,   658,   661,   656,   657,
1524 >     659,    88,    96,    87,    94,    95,    86,    90,    89,    83,
1525 >      82,    84,    93,    85,    72,     0,    73,     0,    91,    92,
1526 >       0,     0,   367,   122,     0,     0,     0,   134,     0,   126,
1527 >     127,   129,   128,   341,     0,     0,     0,   343,    30,    31,
1528 >      32,    33,    34,    35,    36,   256,   257,   249,   266,   265,
1529 >       0,   264,   251,   253,   260,   252,   250,   259,   246,   258,
1530 >     248,   247,    37,    37,    37,    39,    38,   254,   255,   411,
1531 >     414,   415,   425,   422,   408,   423,   420,   421,     0,   419,
1532 >     424,   407,   413,   410,   412,   426,   409,   443,   444,   458,
1533 >     459,   587,     0,   560,     0,   306,   307,   316,   313,   318,
1534 >     314,   315,   321,   317,   319,   312,   320,     0,   311,   305,
1535 >     324,   323,   322,   304,   435,   434,   290,   289,   274,   275,
1536 >     273,     0,   272,     0,     0,     0,   114,   115,   169,   165,
1537 >     217,   204,   214,   213,   202,   207,   224,   216,   222,   206,
1538 >     209,   219,   221,   218,   215,   223,   210,   212,   220,   208,
1539 >     211,     0,   200,   162,   164,   166,   167,   168,   179,   180,
1540 >     181,   174,   193,   175,   176,   177,   187,   196,   178,   190,
1541 >     194,   183,   195,   188,   184,   189,   182,   192,   186,   185,
1542 >     191,     0,   173,   163,   335,   333,   334,    74,    78,   373,
1543 >     378,   384,   387,   380,   386,   381,   385,   383,   379,   382,
1544 >       0,   377,   130,     0,     0,     0,     0,   125,   350,   356,
1545 >     362,   365,   358,   364,   359,   363,   361,   357,   360,     0,
1546 >     355,   351,   262,     0,    40,    41,    42,   417,     0,   588,
1547 >     561,   309,     0,   270,     0,   288,   285,   284,     0,     0,
1548 >       0,   198,     0,   171,     0,   375,     0,     0,     0,     0,
1549 >       0,   124,   353,     0,   263,   418,   310,   271,   203,   201,
1550 >     205,   199,   172,   376,   131,   133,   132,   140,   145,   144,
1551 >     139,   142,   146,   143,   138,   141,     0,   137,   354,   135,
1552 >       0,   136
1553   };
1554  
1555 < /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1556 <   STATE-NUM.  */
1935 < #define YYPACT_NINF -949
1936 < static const yytype_int16 yypact[] =
1555 >  /* YYPGOTO[NTERM-NUM].  */
1556 > static const yytype_int16 yypgoto[] =
1557   {
1558 <    -949,   670,  -949,  -256,  -248,  -245,  -949,  -949,  -949,  -212,
1559 <    -949,  -205,  -949,  -949,  -949,  -949,  -189,  -183,  -949,  -949,
1560 <    -154,  -152,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1561 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1562 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,    22,   642,  -127,
1563 <     -31,  -132,     5,  -125,   415,  -119,   -98,   -89,   -86,   578,
1564 <      14,    -8,   -75,   664,   313,   -74,   -61,   -45,   -46,   -37,
1565 <     -23,    31,  -949,  -949,  -949,  -949,  -949,   -22,    15,    30,
1566 <      33,    41,    42,    47,    48,    50,    61,    62,    70,    78,
1567 <      79,    80,    86,    90,    93,    94,  -949,  -949,  -949,  -949,
1568 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1569 <    -949,  -949,  -949,  -949,  -949,  -949,   -44,  -949,  -949,    89,
1570 <    -949,    20,  -949,    99,     2,  -949,  -949,   140,  -949,   100,
1571 <     104,   106,   111,   113,   115,   122,   123,   126,   127,   128,
1572 <     129,   131,   133,   135,   136,   137,   145,   147,   148,   151,
1573 <     155,   156,   157,   159,   163,   165,   167,   169,   174,   175,
1574 <     177,  -949,   178,  -949,   186,   187,   188,   193,   194,   197,
1575 <     199,   200,   205,   206,   209,   210,   211,   212,   213,   214,
1576 <     219,   220,   225,   228,    10,  -949,  -949,  -949,  -949,  -949,
1577 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1578 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1579 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1580 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1581 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1582 <    -949,   364,   308,    92,   318,    17,   229,   230,   231,   232,
1583 <     236,   237,   241,   242,   244,   245,   248,   250,   226,  -949,
1584 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1585 <    -949,  -949,    63,   251,   252,    60,  -949,  -949,  -949,  -949,
1586 <     182,  -949,    24,  -949,   253,   254,   255,   260,   270,   271,
1587 <     272,   192,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1968 <      72,   273,   274,   275,   276,   279,   281,   282,  -949,   285,
1969 <     286,   287,   288,   132,  -949,  -949,  -949,  -949,  -949,  -949,
1970 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,   183,   102,  -949,
1971 <     222,   293,   336,   299,  -949,   198,   431,   432,   368,   369,
1972 <     436,   436,   440,   441,   376,   379,   446,   436,   381,   390,
1973 <     391,   392,   393,   332,  -949,   726,   521,  -949,   330,   331,
1974 <      76,  -949,  -949,  -949,   442,   338,  -949,  -949,   333,   337,
1975 <    -949,  -949,    57,  -949,  -949,  -949,   404,   436,   408,   436,
1976 <     482,   461,   486,   423,   424,   491,   470,   429,   496,   497,
1977 <     498,   434,   436,   445,   447,   436,   493,   450,   517,   518,
1978 <     436,   522,   523,   499,   526,   528,   463,   464,   400,   469,
1979 <     405,   436,   436,   475,   436,   514,   488,   489,   492,  -131,
1980 <    -110,   494,   501,   436,   436,   548,   436,   504,   505,   506,
1981 <     510,   428,  -949,  -949,  -949,   420,   427,  -949,   430,   448,
1982 <     112,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   435,   454,
1983 <     457,  -949,   459,   462,   465,   466,   467,   118,  -949,  -949,
1984 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   468,  -949,
1985 <     472,  -949,    74,  -949,  -949,  -949,   449,  -949,   474,   483,
1986 <     490,  -949,    29,  -949,  -949,  -949,  -949,  -949,   555,   557,
1987 <     560,   571,   573,   579,   599,   601,   360,   602,   604,   561,
1988 <     502,  -949,  -949,   608,   611,   507,  -949,   305,   511,   503,
1989 <     512,   515,   152,  -949,  -949,  -949,  -949,   568,   577,   580,
1990 <     626,   583,   584,   436,   524,  -949,  -949,   634,   586,   637,
1991 <     638,   639,   640,   641,   532,   646,   672,   648,   651,   547,
1992 <    -949,   551,   549,  -949,   550,    69,  -949,  -949,  -949,  -949,
1993 <     558,   556,  -949,    75,  -949,  -949,  -949,   562,   563,   564,
1994 <    -949,   565,   566,   569,   572,   576,   207,   582,   587,   588,
1995 <     589,   592,   593,   594,   597,   598,   603,   607,   609,   610,
1996 <    -949,   615,   574,   581,   605,   616,   617,   618,   619,   620,
1997 <     622,   623,   624,   625,   628,   116,  -949,  -949,  -949,  -949,
1998 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1999 <     629,   632,   645,   649,   650,   652,  -949,   653,   654,   655,
2000 <     656,   660,   665,   667,   668,   160,  -949,  -949,  -949,  -949,
2001 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2002 <    -949,   675,   686,   678,  -949,   681,  -949,   687,   690,   682,
2003 <     688,  -949,   689,   691,   693,   694,   695,   696,   700,   704,
2004 <     705,   707,   708,   715,   718,   722,   723,   725,   727,   728,
2005 <     730,   731,   732,   733,   737,   741,   742,   744,   745,   747,
2006 <     748,   749,   750,   751,   692,   752,   729,   753,   754,   755,
2007 <     756,   757,   758,   759,   760,   761,   762,   763,   764,   765,
2008 <     767,   768,   769,    49,   770,   771,   772,   773,   774,   775,
2009 <    -949,   683,   436,   712,   776,   709,   711,   777,  -949,  -949,
2010 <     797,   714,   778,   799,   783,   833,   836,   873,   780,  -949,
2011 <     883,   779,   885,   784,  -949,  -949,   782,   890,   893,   796,
2012 <     787,  -949,   788,   789,   790,   791,   792,   793,   794,   795,
2013 <     798,   800,   801,   802,   803,   804,   805,   806,   807,   808,
2014 <    -949,   809,   810,  -949,   811,   812,   813,  -949,   814,   815,
2015 <     816,  -949,   817,   181,  -949,  -949,  -949,  -949,  -949,  -949,
2016 <    -949,  -949,  -949,  -949,   903,   904,   906,   821,  -949,   822,
2017 <     823,   824,   825,   826,   827,   828,  -949,   829,   830,   831,
2018 <     832,   834,   835,   837,   -80,   838,   839,   840,   841,  -949,
2019 <    -949,   919,   842,   920,   843,  -949,  -949,   921,   844,   846,
2020 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   436,
2021 <     436,   436,   436,   436,  -949,  -949,  -949,  -949,  -949,  -949,
2022 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2023 <     962,   965,   436,   971,   973,   977,   978,   957,   980,   981,
2024 <     436,   436,   548,   853,  -949,  -949,   961,  -117,   963,   964,
2025 <     918,   855,   966,   967,   968,   969,   992,   972,   974,   975,
2026 <     864,  -949,   866,   869,  -949,  -949,   870,   871,   662,  -949,
2027 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2028 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2029 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2030 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2031 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2032 <    -949,  -244,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2033 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2034 <    -949,  -949,  -949,  -236,  -949,  -949,  -949,  -949,  -949,  -949,
2035 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2036 <    -949,   548,   548,   548,  -949,  -949,  -949,  -949,  -949,  -949,
2037 <    -949,  -949,    -3,   872,   874,    -2,   875,   876,  -949,   877,
2038 <     878,  1003,   879,   880,   881,   882,   884,  -949,   886,   703,
2039 <     887,  -949,   -63,   888,   889,   676,   891,  -949,  -949,  -949,
2040 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2041 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2042 <     990,   948,   894,   997,   998,   999,   895,  1000,   896,  -949,
2043 <     899,   900,   901,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2044 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2045 <    -224,  -949,  -949,  -949,  -949,  -949,   902,   570,   905,  -949,
2046 <     907,   627,  -949,  -949,  -949,  -949,  -949,  -949,   908,   909,
2047 <     910,   911,   912,   913,   914,   915,   916,   917,   922,   923,
2048 <     924,  -949,   925,   926,   927,   928,   929,   930,  1024,   931,
2049 <     932,   933,   934,   935,   936,   937,   938,  -949,  -949,  -949,
2050 <    -949,  -949,  -949,  -219,  -949,  -949,   692,  -949,   729,  -949,
2051 <    -949,  -949,  -949,  -949,  -216,  -949,  -949,  -949,  -949,  -949,
2052 <    -213,  -949,  -949,  -949,  -949,  -949,  -949,  -158,  -949,   630,
2053 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -149,  -949,  -949,
2054 <    -949,  -949,  -949,  -129,  -949,  -949,  -949,  1032,   796,   939,
2055 <     940,   941,  1034,   942,   943,   944,   766,   945,  -949,  -949,
2056 <    -949,  -949,  -949,   -80,  -949,  -949,  -949,  -949,  -949,  -949,
2057 <    -949,  -949,  -949,  -949,  -949,  -949,  -106,  -949,  -949,  -949,
2058 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2059 <    -949,   -25,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2060 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2061 <    -949,  -949,  -949,    38,  -949,     0,  -949,  -949,  -949,  -949,
2062 <    -949,  -949,  -949,  -949,  -949,   662,  -949,  -949,  -949,    -3,
2063 <    -949,    -2,   630,  -949,  1003,  -949,  -949,  -949,  -949,  -949,
2064 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,   703,  -949,   -63,
2065 <    -949,  -949,  -949,  -949,  -949,  -949,    56,  -949,   553,  -949,
2066 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2067 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2068 <    -949,    88,  -949,  -949,  -949,  -949,   570,  -949,   627,     0,
2069 <    -949,  1024,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2070 <    -949,  -949,  -949,  -949,  -949,   553,  -949,  1034,  -949,  -949,
2071 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2072 <    -949,  -949,  -949,  -949,  -949,  -949,   766,  -949,  -949,  -949,
2073 <    -949,  -949,  -949,  -949
1558 >   -1020, -1020, -1020,  -185,  -307, -1019,  -621, -1020, -1020,   675,
1559 >   -1020, -1020, -1020, -1020,   807, -1020, -1020, -1020,    43, -1020,
1560 >      37, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1561 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,  1000, -1020,
1562 >   -1020, -1020, -1020, -1020, -1020,   592, -1020, -1020, -1020, -1020,
1563 >     941, -1020, -1020, -1020, -1020,    53, -1020, -1020, -1020, -1020,
1564 >   -1020,  -155, -1020, -1020, -1020,   627, -1020, -1020, -1020, -1020,
1565 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020,  -113, -1020, -1020,
1566 >   -1020,  -107, -1020, -1020, -1020,   812, -1020, -1020, -1020, -1020,
1567 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1568 >   -1020, -1020, -1020, -1020,   -86, -1020, -1020, -1020, -1020, -1020,
1569 >     -95, -1020,   674, -1020, -1020, -1020,    20, -1020, -1020, -1020,
1570 >   -1020, -1020,   698, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1571 >     -81, -1020, -1020, -1020, -1020, -1020, -1020,   633, -1020, -1020,
1572 >   -1020, -1020, -1020,   944, -1020, -1020, -1020, -1020,   602, -1020,
1573 >   -1020, -1020, -1020, -1020,   -92, -1020, -1020, -1020,   612, -1020,
1574 >   -1020, -1020, -1020,   -88, -1020, -1020, -1020,   814, -1020, -1020,
1575 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,   -63,
1576 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,   707, -1020,
1577 >   -1020, -1020, -1020, -1020,   793, -1020, -1020, -1020, -1020,  1069,
1578 >   -1020, -1020, -1020, -1020,   786, -1020, -1020, -1020, -1020,  1021,
1579 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1580 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1581 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1582 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1583 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020,    84, -1020, -1020,
1584 >   -1020,    88, -1020, -1020, -1020, -1020, -1020,  1095, -1020, -1020,
1585 >   -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1586 >   -1020, -1020,   953, -1020, -1020, -1020, -1020, -1020, -1020, -1020,
1587 >   -1020
1588   };
1589  
1590 < /* YYPGOTO[NTERM-NUM].  */
1591 < static const yytype_int16 yypgoto[] =
1590 >  /* YYDEFGOTO[NTERM-NUM].  */
1591 > static const yytype_int16 yydefgoto[] =
1592   {
1593 <    -949,  -949,  -949,  -427,  -340,  -948,  -423,  -949,  -949,   946,
1594 <    -949,  -949,  -949,  -949,   865,  -949,  -949,  -949,  -293,  -949,
1595 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1596 <    -949,  -949,  1095,  -949,  -949,  -949,  -949,  -949,   643,  -949,
1597 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1598 <    -949,  -949,  -949,  -949,  -949,   406,  -949,  -949,  -949,  -949,
1599 <    -949,  -949,  -949,  -949,  -949,  -949,  -166,  -949,  -949,  -949,
1600 <    -146,  -949,  -949,  -118,  -949,  -949,  -949,  -949,   613,  -949,
1601 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1602 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   -60,  -949,
1603 <     724,  -949,  -949,  -949,    43,  -949,  -949,  -949,  -949,  -949,
1604 <     781,  -949,  -949,  -949,  -949,  -949,  -949,  -949,   -42,  -949,
1605 <    -949,   -39,  -949,  -949,  -949,  -949,  -949,  -949,   698,  -949,
1606 <    -949,  -949,  -949,  -949,  -949,   669,  -949,  -949,  -949,  -949,
1607 <    -949,   -91,  -949,  -949,  -949,   663,  -949,  -949,  -949,  -949,
1608 <     -90,  -949,  -949,  -949,  -949,   595,  -949,  -949,  -949,  -949,
1609 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,   -94,  -949,  -949,
1610 <     -87,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1611 <    -949,  -949,   -48,  -949,   785,  -949,  -949,  -949,  -949,  -949,
1612 <     863,  -949,  -949,  -949,  -949,  1100,  -949,  -949,  -949,  -949,
1613 <    -949,  -949,   -20,  -949,   854,  -949,  -949,  -949,  -949,  1043,
1614 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1615 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1616 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1617 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1618 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
1619 <    -949,  -949,   101,  -949,  -949,  -949,   105,  -949,  -949,  -949,
1620 <    -949,  -949,  -949,  -949,   818,  -949,  -949,  -949,  -949,  -949,
1621 <     -21,  -949,  -949,  -949,  -949,  -949,   -17,  -949,  -949,  1133,
1622 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2109 <    -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,  -949,
2110 <     949,  -949,  -949,  -949,  -949,  -949,  -949,  -949
1593 >      -1,     1,    25,   816,   817,  1075,  1076,    26,   222,   223,
1594 >     224,   225,    27,   266,   267,   268,   269,   777,   778,   781,
1595 >     782,   270,   271,   272,   273,   274,   275,   276,   277,   278,
1596 >     279,   280,   281,   282,   283,   284,    28,    74,    75,    76,
1597 >      77,    78,    29,    61,   498,   499,   500,   501,    30,   288,
1598 >     289,   290,   291,   292,  1038,  1039,  1040,  1041,  1042,  1215,
1599 >    1286,  1287,    31,    62,   513,   514,   515,   516,   517,   518,
1600 >     519,   520,   521,   522,   523,   743,  1191,  1192,   524,   737,
1601 >    1161,  1162,    32,    51,   336,   337,   338,   339,   340,   341,
1602 >     342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
1603 >     352,   353,   610,  1060,  1061,    33,    59,   484,   722,  1131,
1604 >    1132,   485,   486,   487,  1135,   980,   981,   488,   489,    34,
1605 >      57,   462,   463,   464,   465,   466,   467,   468,   707,  1117,
1606 >    1118,   469,   470,   471,    35,    63,   529,   530,   531,   532,
1607 >     533,    36,   295,   296,   297,    37,    69,   583,   584,   585,
1608 >     586,   587,   798,  1229,  1230,    38,    66,   567,   568,   569,
1609 >     570,   788,  1210,  1211,    39,    52,   369,   370,   371,   372,
1610 >     373,   374,   375,   376,   377,   378,   379,   632,  1088,  1089,
1611 >     380,   381,   382,   383,   384,    40,    58,   475,   476,   477,
1612 >     478,    41,    53,   388,   389,   390,   391,    42,   111,   112,
1613 >     113,    43,    55,   398,   399,   400,   401,    44,   165,   166,
1614 >     167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
1615 >     177,   178,   179,   180,   181,   182,   183,   184,   185,   186,
1616 >     187,   188,   189,   190,   191,   192,   193,   194,   195,   196,
1617 >     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
1618 >     207,   208,   209,   210,   211,   431,   941,   942,   212,   429,
1619 >     915,   916,   213,   214,   215,    45,    92,    93,    94,    95,
1620 >      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
1621 >      46,   238,   239,   240,   241,   242,   243,   244,   245,   246,
1622 >     247
1623   };
1624  
1625 < /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1626 <   positive, shift that token.  If negative, reduce the rule which
1627 <   number is the opposite.  If zero, do what YYDEFACT says.
1628 <   If YYTABLE_NINF, syntax error.  */
2117 < #define YYTABLE_NINF -1
2118 < static const yytype_uint16 yytable[] =
1625 >  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1626 >     positive, shift that token.  If negative, reduce the rule whose
1627 >     number is the opposite.  If YYTABLE_NINF, syntax error.  */
1628 > static const yytype_int16 yytable[] =
1629   {
1630 <     567,   568,   704,   122,    45,    46,   122,   574,  1132,  1138,
1631 <    1312,   128,  1313,  1160,    47,   272,  1125,    48,   129,   130,
1632 <    1126,   357,   131,    67,  1127,   508,   115,  1314,  1128,   132,
1633 <     476,  1315,    67,  1129,  1130,  1131,  1182,   653,   133,   655,
1634 <    1183,  1244,   134,   135,  1248,  1245,   509,  1250,  1249,   136,
1635 <      52,  1251,   668,   137,   138,   671,   139,    54,   367,    68,
1636 <     676,   272,   140,   981,   982,   983,   695,   696,    68,    69,
1637 <     541,   687,   688,    59,   690,   467,   550,   357,    69,    60,
1638 <     141,   142,   477,   701,   702,   143,   705,   697,   698,  1068,
1639 <    1069,   123,   144,   467,   123,    76,   145,   146,   147,  1103,
1640 <    1104,   148,  1253,   550,   149,   150,  1254,    77,    63,   358,
1641 <      64,  1266,   478,   433,   151,  1267,   434,   581,   479,   448,
1642 <     152,   153,   118,   154,   155,   156,   157,   158,    78,    79,
1643 <     121,  1268,   273,   300,    80,  1269,    81,   127,   159,   582,
1644 <     583,   367,    70,   241,   449,   279,   584,   160,   510,   161,
1645 <     162,    70,   163,   508,  1305,   164,   165,   435,  1306,   166,
1646 <     436,   610,   274,   611,   242,   358,   612,   450,  1161,   301,
1647 <     167,   451,  1162,   243,   509,   359,   244,   368,   273,   511,
1648 <     703,   480,   764,   795,   541,   613,   614,   282,   327,   542,
1649 <      82,    83,   168,   283,   169,   551,  1133,  1139,   170,    84,
1650 <      85,   328,   171,   172,   173,   174,   175,   765,   274,   615,
1651 <     176,   177,   369,   616,   437,   329,   302,   330,   355,   178,
1652 <      86,    87,   551,   585,   586,   587,   331,   245,   588,   468,
1653 <     766,   359,   438,   284,   767,  1307,   589,    88,    89,  1308,
1654 <     332,   335,  1316,   617,   370,   618,   285,   468,    90,   590,
1655 <     591,   179,   303,   180,   304,   305,   543,    91,   619,   181,
1656 <     368,   469,   552,   365,   182,   452,   592,   593,   286,   183,
1657 <     287,   431,   288,   289,   453,   454,   510,   487,   336,   469,
1658 <     620,   246,   247,   248,   249,   250,   251,   252,   253,   552,
1659 <     740,   290,   333,   337,   594,   369,   338,   306,  1310,   307,
1660 <     308,   768,  1311,   542,   339,   340,   764,   511,   455,   448,
1661 <     341,   342,   621,   343,   300,   309,  1326,   544,   650,   476,
1662 <    1327,   505,   470,   502,   344,   345,   622,   370,   769,   254,
1663 <     814,   765,   526,   346,   449,   733,   819,   643,   566,   623,
1664 <     470,   347,   348,   349,    92,    93,    94,   770,  1345,   350,
1665 <     301,   356,  1346,   351,   766,   353,   352,   450,   767,   310,
1666 <     439,   451,   364,   376,   255,   433,   456,   377,   434,   378,
1667 <     543,   477,   993,   717,   379,   557,   380,   863,   381,   728,
1668 <     829,   830,   831,   832,   833,   382,   383,   311,   312,   384,
1669 <     385,   386,   387,   539,   388,   561,   389,   302,   390,   391,
1670 <     392,   478,  1083,  1084,  1085,  1086,  1087,   479,   393,   435,
1671 <     394,   395,   436,   787,   396,   624,   128,   771,   397,   398,
1672 <     399,   880,   400,   129,   130,   768,   401,   131,   402,   772,
1673 <     403,   544,   404,   303,   132,   304,   305,   405,   406,  1100,
1674 <     407,   409,  1048,   133,   507,   256,   558,   134,   135,   411,
1675 <     412,   413,   769,   524,   136,   452,   414,   415,   137,   138,
1676 <     416,   139,   417,   418,   453,   454,   437,   140,   419,   420,
1677 <     480,   770,   421,   422,   423,   424,   425,   426,   306,   257,
1678 <     307,   308,   427,   428,   438,   141,   142,   500,   429,   559,
1679 <     143,   430,   488,   489,   490,   491,   309,   144,   455,   492,
1680 <     493,   145,   146,   147,   494,   495,   148,   496,   497,   149,
1681 <     150,   498,  1090,   499,   503,   504,   517,   518,   519,   151,
1682 <    1098,  1099,   610,   520,   611,   152,   153,   612,   154,   155,
1683 <     156,   157,   158,   521,   522,   523,   527,   528,   529,   530,
1684 <     310,   771,   531,   159,   532,   533,   613,   614,   535,   536,
1685 <     537,   538,   160,   772,   161,   162,   456,   163,  1328,   560,
1686 <     164,   165,   562,   563,   166,   564,   565,   566,   311,   312,
1687 <     615,   569,   570,   571,   616,   167,   572,   573,   575,   245,
1688 <     750,   751,   752,   753,   754,   755,   756,   576,   577,   578,
1689 <     579,  1329,   580,   641,   642,   645,   647,   168,   646,   169,
1690 <     648,   652,  1330,   170,   617,   654,   618,   171,   172,   173,
1691 <     174,   175,   439,   656,   657,   176,   177,   658,  1331,   619,
1692 <     659,   660,   661,   662,   178,  1332,   663,   664,   665,   666,
1693 <    1333,   667,  1334,   246,   247,   248,   249,   250,   251,   252,
1694 <     253,   620,   669,    76,   670,  1335,   672,   673,   674,   675,
1695 <    1255,  1256,   679,   677,   678,    77,   179,   680,   180,   681,
1696 <     682,   683,  1185,   684,   181,   283,   685,   691,   686,   182,
1697 <       2,     3,   689,   621,   183,     4,    78,    79,  1336,   703,
1698 <    1257,   254,    80,   712,    81,   692,   693,   622,   710,   694,
1699 <     713,   699,     5,   715,  1337,   719,     6,  1258,   700,     7,
1700 <     623,   706,   707,   708,  1259,   284,     8,   709,   742,   735,
1701 <     743,   716,  1338,   744,  1339,  1340,   255,   720,   285,  1200,
1702 <     721,     9,   723,  1260,   745,   724,   746,   581,   725,   726,
1703 <     727,   730,   747,    10,    11,   732,    12,   737,    82,    83,
1704 <     286,  1186,   287,    13,   288,   289,   738,    84,    85,   582,
1705 <     583,  1261,   748,   739,   749,   757,   584,   758,   759,  1262,
1706 <      14,   761,   760,   290,   762,   789,   784,   763,    86,    87,
1707 <      15,   783,    16,  1187,   790,   785,   624,   791,   786,   792,
1708 <     793,   794,  1341,   798,   796,    88,    89,   797,  1188,    17,
1709 <     799,   800,   801,   802,   803,   804,    90,   256,  1201,   805,
1710 <    1342,   807,  1263,   806,   808,    91,    18,   809,  1189,  1190,
1711 <    1343,   810,   811,   813,  1191,  1192,  1193,  1194,   816,   817,
1712 <    1122,  1264,   821,   822,   823,   824,   825,  1195,   882,   826,
1713 <    1202,   257,   827,   585,   586,   587,   828,   850,   588,   883,
1714 <     886,    19,   836,   887,   851,  1203,   589,   837,   838,   839,
1715 <      20,    21,   840,   841,   842,    22,    23,   843,   844,   590,
1716 <     591,  1156,   996,   845,   997,  1204,  1205,   846,   852,   847,
1717 <     848,  1206,  1207,  1208,  1209,   849,   592,   593,  1167,   853,
1718 <     854,   855,   856,   857,  1210,   858,   859,   860,   861,   865,
1719 <    1304,   862,    92,    93,    94,   866,   922,   923,   924,   925,
1720 <     926,   501,   927,   928,   594,   929,   930,   931,   867,   994,
1721 <     932,  1000,   868,   869,  1003,   870,   872,   873,   874,   875,
1722 <     933,   934,   935,   876,   936,   937,   938,  1015,   877,   939,
1723 <     878,   879,   940,   944,   945,   946,   947,   948,   884,   949,
1724 <     950,   885,   951,   952,   953,   888,   992,   954,   889,   890,
1725 <     999,   891,  1002,   892,   893,   894,   895,   955,   956,   957,
1726 <     896,   958,   959,   960,   897,   898,   961,   899,   900,   962,
1727 <    1282,  1283,  1284,  1285,  1286,   901,  1287,  1288,   902,  1289,
1728 <    1290,  1291,   903,   904,  1292,   905,  1004,   906,   907,  1005,
1729 <     908,   909,   910,   911,  1293,  1294,  1295,   912,  1296,  1297,
1730 <    1298,   913,   914,  1299,   915,   916,  1300,   917,   918,   919,
1731 <     920,   921,   943,   965,   966,   967,   968,   969,   970,   971,
1732 <     972,   973,   974,   975,   976,   977,  1006,   978,   979,   980,
1733 <     986,   987,   988,   989,   990,   991,  1008,   998,  1010,   995,
1734 <    1007,  1001,  1009,  1013,  1011,  1012,  1014,  1018,  1019,  1020,
1735 <    1021,  1022,  1023,  1024,  1025,  1026,  1050,  1051,  1027,  1052,
1736 <    1028,  1029,  1030,  1031,  1032,  1033,  1034,  1035,  1036,  1037,
1737 <    1038,  1039,  1076,  1078,  1080,  1040,  1041,  1043,  1044,  1045,
1738 <    1047,  1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1061,
1739 <    1062,  1063,  1064,  1088,  1065,  1066,  1089,  1067,  1072,  1073,
1740 <    1074,  1075,  1091,  1079,  1092,  1077,  1082,  1081,  1093,  1094,
1741 <    1095,  1096,  1097,  1101,  1102,  1107,  1105,  1106,  1108,  1109,
1742 <    1110,  1111,  1112,  1113,  1117,  1114,  1118,  1115,  1116,  1119,
1743 <    1120,  1121,  1136,  1146,  1137,  1142,  1143,  1144,  1145,  1150,
1744 <    1151,  1152,  1153,  1170,  1154,  1171,  1155,  1159,  1165,  1166,
1745 <    1173,  1174,  1175,  1177,  1232,  1168,  1178,  1172,  1176,  1179,
1746 <    1180,  1181,  1184,  1270,  1275,  1198,   334,  1199,  1213,  1214,
1747 <    1215,  1216,  1217,  1218,  1219,  1220,  1221,  1222,   540,  1049,
1748 <    1353,  1352,  1223,  1224,  1225,  1226,  1227,  1228,  1229,  1230,
1749 <    1231,  1236,  1237,  1238,  1239,  1240,  1241,  1242,  1243,  1272,
1750 <    1273,  1274,  1279,  1280,  1281,  1303,   741,  1351,   864,  1324,
1751 <     788,  1271,  1322,  1321,   815,  1347,   820,  1350,  1348,  1323,
1752 <     881,   506,  1349,   644,   366,  1318,   651,   432,   354,  1247,
1753 <    1320,  1246,  1319,     0,     0,     0,     0,     0,   729,     0,
2244 <     525,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2245 <       0,     0,     0,     0,     0,     0,     0,   734,   718
1630 >     841,   842,   597,   598,   599,    49,    79,   479,   229,   286,
1631 >     472,  1086,   495,    50,   219,   495,   525,  1058,    70,   385,
1632 >     385,    54,   395,  1034,   293,   293,   109,    80,    81,    47,
1633 >      48,  1024,   579,    82,  1128,  1025,   230,   479,    56,  1026,
1634 >      60,   109,    71,  1027,   231,   775,   776,   219,  1101,    72,
1635 >     526,   472,  1102,  1234,  1235,  1236,   232,   233,   395,   840,
1636 >     248,   234,   235,   236,   480,   688,  1103,   564,   689,   481,
1637 >    1104,   482,    83,    84,   564,   579,   779,   780,    85,    86,
1638 >    1034,   386,   386,   237,   249,    87,    88,    89,   110,   496,
1639 >    1059,  1232,   496,   527,   480,  1233,   653,   654,   525,   481,
1640 >      64,   482,    65,   110,   661,  1072,  1073,  1074,   665,   115,
1641 >     220,    90,    91,   670,   116,   117,   673,    73,   250,   286,
1642 >     118,   396,  1035,   294,   294,   251,   683,   684,   119,   120,
1643 >     483,   580,   526,    67,   221,   121,   473,   696,   122,   123,
1644 >     699,   700,   528,   220,   124,   387,   387,   252,   397,   125,
1645 >     126,   253,   127,   128,   129,  1258,   130,   396,   690,   254,
1646 >     483,   691,   255,   256,  1237,   131,   565,   221,  1238,   132,
1647 >     133,    68,  1129,   565,   580,   527,   502,   473,   134,  1035,
1648 >    -123,  1241,  1130,   497,   397,  1242,   497,   135,   106,  1243,
1649 >     107,   299,   503,  1244,   257,   136,   108,   137,  1251,   138,
1650 >    1087,   139,  1252,   140,   141,  1253,   840,   300,   504,  1254,
1651 >     114,   258,   216,  1255,   259,  1036,   142,  1256,   845,   846,
1652 >     217,   143,   144,   145,   528,   146,   147,   148,  1262,   218,
1653 >     149,   287,  1263,   474,   760,   317,   724,   542,   573,   260,
1654 >     505,   732,  1037,   493,   354,   751,   355,   303,   356,   644,
1655 >     575,   581,  1216,   577,   592,   582,   150,   261,   262,   263,
1656 >     357,   800,   301,   319,   151,   152,   153,   154,   155,   156,
1657 >     393,   302,  1036,   305,   474,   506,   358,   320,   321,   226,
1658 >     717,   322,   227,   228,   264,   265,   566,   650,  1200,   562,
1659 >    -123,   453,   285,   566,   581,   507,   789,   157,   582,  1037,
1660 >     298,   359,   828,   360,   453,   490,   832,   454,   361,   835,
1661 >      79,   508,  1289,   839,   306,   544,  1290,   307,   362,   308,
1662 >     454,   158,   159,   455,   160,   161,   162,   323,   509,   510,
1663 >     163,    80,    81,   309,    70,   164,   455,    82,   451,   310,
1664 >     571,   287,   311,   363,   312,   324,   325,   326,   327,   313,
1665 >    1201,   314,   328,   315,   316,   456,   329,   392,    71,   402,
1666 >     403,   404,   330,   405,   406,    72,   407,   364,   456,   408,
1667 >     409,  1277,   410,   331,   332,   411,    83,    84,   511,  1202,
1668 >     412,   413,    85,    86,   414,   333,  1203,   365,   415,    87,
1669 >      88,    89,   416,   417,   418,  1204,   366,   419,   420,   512,
1670 >    1278,   421,  1279,   422,   423,   745,   424,   334,   425,   426,
1671 >     457,   427,   428,   430,   432,    90,    91,   433,   458,   459,
1672 >     434,   435,  1205,   457,  1206,  1207,   436,   437,   438,   439,
1673 >     440,   458,   459,    73,   441,   442,   443,   444,  1208,   460,
1674 >     445,   367,   446,   447,   448,  1209,   335,  1280,   449,   588,
1675 >     115,   502,   460,   450,   491,   116,   117,   492,   534,   535,
1676 >     536,   118,   537,   538,  1281,   539,   540,   503,   368,   119,
1677 >     120,   541,   545,   640,   546,   589,   121,   547,   548,   122,
1678 >     123,   549,   550,   504,   551,   124,   552,   553,   554,   248,
1679 >     125,   126,   623,   127,   128,   129,   555,   130,   556,  1282,
1680 >    1283,   557,   596,   558,   559,   560,   131,   561,   572,   576,
1681 >     132,   133,   590,   249,   461,   505,   591,   593,   594,   134,
1682 >     713,   595,   596,   600,   601,   602,   603,   461,   135,   809,
1683 >     810,   811,   812,   813,   814,   815,   136,   354,   137,   355,
1684 >     138,   356,   139,   607,   140,   141,   604,   250,   605,   606,
1685 >     506,  1140,   625,   357,   251,  1284,   646,   142,   608,  1285,
1686 >     609,   611,   143,   144,   145,  1141,   146,   147,   148,   358,
1687 >     507,   149,   612,  1142,   613,   614,   252,   615,   616,   617,
1688 >     253,   618,   656,   619,   620,   621,   508,  1143,   254,   622,
1689 >     626,   255,   256,  1259,   359,   627,   360,   150,   628,   629,
1690 >     630,   361,   631,   509,   510,   151,   152,   153,   154,   155,
1691 >     156,   362,   633,   634,   635,   636,  1144,   637,  1145,   658,
1692 >     638,   639,   642,   257,  1048,  1049,  1050,  1051,  1052,  1053,
1693 >    1054,   643,   647,   648,   649,   652,   363,   655,   157,   657,
1694 >     258,   659,   660,   259,  1146,   662,   667,   229,  1107,   663,
1695 >     664,   666,   668,   511,   669,   671,   672,   678,   674,   675,
1696 >     364,   676,   158,   159,   677,   160,   161,   162,   260,  1108,
1697 >     679,   163,   680,   681,   512,   230,   164,  1147,  1109,  1148,
1698 >     365,   682,   685,   231,   695,   686,   261,   262,   263,   366,
1699 >     687,   692,   693,   694,   697,   232,   233,   698,  1149,   701,
1700 >     234,   235,   236,   702,   703,   704,   705,  1110,   726,   706,
1701 >     727,   756,   762,   264,   265,   708,  1150,   753,   709,   719,
1702 >     754,  1151,   237,   764,   710,  1152,   711,   712,   715,   716,
1703 >    1153,   720,   721,  1154,   367,   723,  1111,  1112,  1155,   728,
1704 >     729,   734,     2,     3,  1113,   730,     4,   731,   765,   319,
1705 >     735,   736,  1156,   738,   739,  1157,     5,  1158,   894,     6,
1706 >       7,   368,   740,   320,   321,   741,     8,   322,  1159,  1114,
1707 >     742,   766,   747,   755,   744,  1160,   748,     9,   757,   758,
1708 >      10,    11,   749,   759,   750,  1115,   761,   763,   767,   768,
1709 >     769,   770,   771,   772,   773,   774,   783,   784,   785,   786,
1710 >     787,   791,   792,   793,   794,   795,    12,   796,   802,   797,
1711 >     803,    13,   799,   323,   826,   827,   829,   804,   830,    14,
1712 >     805,   918,   806,   919,   920,   807,   808,   831,   818,   819,
1713 >     820,   324,   325,   326,   327,   821,   822,   823,   328,   824,
1714 >      15,    16,   329,   825,   833,   834,  1116,   836,   330,   837,
1715 >     838,   840,   843,   844,   847,   848,   849,   850,    17,   331,
1716 >     332,   851,   852,   853,  1168,  1219,  1169,  1170,   854,   855,
1717 >     856,   333,   895,   896,   897,    18,   898,   899,   857,   900,
1718 >     901,   858,   902,   859,   903,   860,   861,   904,    19,    20,
1719 >     905,   906,   907,   334,   908,   864,   865,   494,   862,   909,
1720 >     968,   964,   863,   910,   911,   912,   866,   867,    21,   868,
1721 >     869,   870,   871,   913,   872,   873,   874,   875,   914,   876,
1722 >     877,    22,   878,   879,   880,   881,   882,  1220,   883,   884,
1723 >      23,   885,   335,   965,    24,   921,   922,   923,   966,   924,
1724 >     925,   886,   926,   927,   887,   928,   967,   929,   888,   889,
1725 >     930,   969,   890,   931,   932,   933,  1221,   934,   970,   891,
1726 >     971,   973,   935,  1222,   974,   892,   936,   937,   938,   976,
1727 >     977,   979,  1223,   985,   986,   893,   939,   988,  1171,  1172,
1728 >    1173,   940,  1174,  1175,   917,  1176,  1177,   991,  1178,   978,
1729 >    1179,   943,   944,  1180,   945,   946,  1181,  1182,  1183,  1224,
1730 >    1184,  1225,  1226,   947,   948,  1185,   949,   950,   951,  1186,
1731 >    1187,  1188,   952,   953,   954,  1227,   955,   956,   957,  1189,
1732 >     958,   959,  1228,   989,  1190,   960,   961,   962,   963,   972,
1733 >     975,   982,   983,   984,   987,   992,   993,   994,   990,   995,
1734 >     996,   997,   998,   999,  1000,  1001,  1002,  1003,  1004,  1005,
1735 >    1030,  1006,  1007,  1008,  1009,  1044,  1046,  1010,  1011,  1012,
1736 >    1013,  1014,  1245,  1015,  1198,  1257,  1016,  1017,  1197,  1018,
1737 >    1019,  1020,  1021,   563,   304,  1022,  1023,  1268,  1133,  1028,
1738 >    1029,  1269,  1270,  1032,  1033,  1031,  1043,  1047,  1045,  1055,
1739 >     733,  1217,  1056,  1057,  1062,  1063,  1064,  1065,  1066,  1067,
1740 >    1068,  1069,  1070,  1071,  1077,  1078,  1079,  1080,  1081,  1082,
1741 >    1083,  1084,  1085,  1090,  1091,  1092,  1093,  1094,  1095,  1096,
1742 >    1097,  1098,  1099,  1100,  1105,  1106,  1119,  1120,  1121,  1122,
1743 >    1123,  1124,  1125,  1126,  1127,  1291,  1136,  1137,  1138,  1134,
1744 >     746,  1272,  1139,  1163,  1164,  1271,  1165,  1264,   624,  1267,
1745 >    1166,  1167,  1193,  1194,  1246,  1195,  1196,  1199,  1212,   725,
1746 >     714,  1266,   752,  1218,  1213,  1214,  1231,  1247,  1273,  1248,
1747 >    1249,  1288,  1261,  1250,  1260,  1265,  1274,  1275,  1276,   790,
1748 >     394,   645,   718,   641,   651,   801,   452,   318,  1240,     0,
1749 >    1239,   543,     0,     0,     0,     0,     0,     0,     0,     0,
1750 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1751 >       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1752 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   574,
1753 >       0,     0,     0,     0,     0,     0,     0,     0,     0,   578
1754   };
1755  
1756   static const yytype_int16 yycheck[] =
1757   {
1758 <     340,   341,   425,     1,   260,   261,     1,   347,    11,    11,
1759 <      10,     1,    12,    76,   262,     1,   260,   262,     8,     9,
1760 <     264,     1,    12,     1,   260,     1,   153,    27,   264,    19,
1761 <       1,    31,     1,   981,   982,   983,   260,   377,    28,   379,
1762 <     264,   260,    32,    33,   260,   264,    22,   260,   264,    39,
1763 <     262,   264,   392,    43,    44,   395,    46,   262,     1,    37,
1764 <     400,     1,    52,    14,    15,    16,   197,   198,    37,    47,
1765 <       1,   411,   412,   262,   414,     1,     1,     1,    47,   262,
1766 <      70,    71,    53,   423,   424,    75,   426,   197,   198,   169,
1767 <     170,    89,    82,     1,    89,     1,    86,    87,    88,   216,
1768 <     217,    91,   260,     1,    94,    95,   264,    13,   262,    89,
1769 <     262,   260,    83,     1,   104,   264,     4,     1,    89,     1,
1770 <     110,   111,   153,   113,   114,   115,   116,   117,    34,    35,
1771 <     262,   260,   118,     1,    40,   264,    42,   262,   128,    23,
1772 <      24,     1,   120,   262,    26,   153,    30,   137,   124,   139,
1773 <     140,   120,   142,     1,   260,   145,   146,    45,   264,   149,
1774 <      48,     1,   148,     3,   262,    89,     6,    49,   231,    37,
1775 <     160,    53,   235,   262,    22,   155,   262,   120,   118,   155,
1776 <     131,   152,     1,   523,     1,    25,    26,   262,   262,   120,
1777 <      96,    97,   182,     1,   184,   120,   199,   199,   188,   105,
1778 <     106,   262,   192,   193,   194,   195,   196,    26,   148,    49,
1779 <     200,   201,   155,    53,   102,   260,    84,   263,   262,   209,
1780 <     126,   127,   120,   107,   108,   109,   263,     1,   112,   155,
1781 <      49,   155,   120,    41,    53,   260,   120,   143,   144,   264,
1782 <     263,   263,   242,    83,   187,    85,    54,   155,   154,   133,
1783 <     134,   241,   120,   243,   122,   123,   187,   163,    98,   249,
1784 <     120,   187,   187,   261,   254,   147,   150,   151,    76,   259,
1785 <      78,   261,    80,    81,   156,   157,   124,   260,   263,   187,
1786 <     120,    55,    56,    57,    58,    59,    60,    61,    62,   187,
1787 <     261,    99,   261,   263,   178,   155,   263,   165,   260,   167,
1788 <     168,   120,   264,   120,   263,   263,     1,   155,   190,     1,
1789 <     263,   263,   152,   263,     1,   183,   260,   248,   261,     1,
1790 <     264,   261,   248,   260,   263,   263,   166,   187,   147,   103,
1791 <     261,    26,   260,   263,    26,   261,   261,   261,   131,   179,
1792 <     248,   263,   263,   263,   250,   251,   252,   166,   260,   263,
1793 <      37,   262,   264,   263,    49,   261,   263,    49,    53,   227,
1794 <     248,    53,   263,   263,   138,     1,   248,   263,     4,   263,
1795 <     187,    53,   712,   261,   263,   153,   263,   261,   263,   261,
1796 <     173,   174,   175,   176,   177,   263,   263,   255,   256,   263,
1797 <     263,   263,   263,   261,   263,   197,   263,    84,   263,   263,
1798 <     263,    83,   829,   830,   831,   832,   833,    89,   263,    45,
1799 <     263,   263,    48,   261,   263,   255,     1,   236,   263,   263,
1800 <     263,   261,   263,     8,     9,   120,   263,    12,   263,   248,
1801 <     263,   248,   263,   120,    19,   122,   123,   263,   263,   862,
1802 <     263,   263,   261,    28,   262,   219,   153,    32,    33,   263,
1803 <     263,   263,   147,   261,    39,   147,   263,   263,    43,    44,
1804 <     263,    46,   263,   263,   156,   157,   102,    52,   263,   263,
1805 <     152,   166,   263,   263,   263,   263,   263,   263,   165,   253,
1806 <     167,   168,   263,   263,   120,    70,    71,   261,   263,   153,
1807 <      75,   263,   263,   263,   263,   263,   183,    82,   190,   263,
1808 <     263,    86,    87,    88,   263,   263,    91,   263,   263,    94,
1809 <      95,   263,   852,   263,   263,   263,   263,   263,   263,   104,
1810 <     860,   861,     1,   263,     3,   110,   111,     6,   113,   114,
1811 <     115,   116,   117,   263,   263,   263,   263,   263,   263,   263,
1812 <     227,   236,   263,   128,   263,   263,    25,    26,   263,   263,
1813 <     263,   263,   137,   248,   139,   140,   248,   142,     5,   260,
1814 <     145,   146,   131,   131,   149,   197,   197,   131,   255,   256,
1815 <      49,   131,   131,   197,    53,   160,   197,   131,   197,     1,
1816 <     220,   221,   222,   223,   224,   225,   226,   197,   197,   197,
1817 <     197,    38,   260,   263,   263,   153,   263,   182,   260,   184,
1818 <     263,   197,    49,   188,    83,   197,    85,   192,   193,   194,
1819 <     195,   196,   248,   131,   153,   200,   201,   131,    65,    98,
1820 <     197,   197,   131,   153,   209,    72,   197,   131,   131,   131,
1821 <      77,   197,    79,    55,    56,    57,    58,    59,    60,    61,
1822 <      62,   120,   197,     1,   197,    92,   153,   197,   131,   131,
1823 <      20,    21,   153,   131,   131,    13,   241,   131,   243,   131,
1824 <     197,   197,    92,   263,   249,     1,   197,   153,   263,   254,
1825 <       0,     1,   197,   152,   259,     5,    34,    35,   125,   131,
1826 <      50,   103,    40,   263,    42,   197,   197,   166,   260,   197,
1827 <     263,   197,    22,   263,   141,   260,    26,    67,   197,    29,
1828 <     179,   197,   197,   197,    74,    41,    36,   197,   153,   260,
1829 <     153,   263,   159,   153,   161,   162,   138,   263,    54,    92,
1830 <     263,    51,   263,    93,   153,   263,   153,     1,   263,   263,
1831 <     263,   263,   153,    63,    64,   263,    66,   263,    96,    97,
1832 <      76,   171,    78,    73,    80,    81,   263,   105,   106,    23,
1833 <      24,   121,   153,   263,   153,   153,    30,   153,   197,   129,
1834 <      90,   153,   260,    99,   153,   197,   263,   260,   126,   127,
1835 <     100,   260,   102,   203,   197,   263,   255,   197,   263,   153,
1836 <     197,   197,   229,   197,   260,   143,   144,   153,   218,   119,
1837 <     153,   153,   153,   153,   153,   263,   154,   219,   171,   153,
1838 <     247,   153,   172,   131,   153,   163,   136,   260,   238,   239,
1839 <     257,   260,   263,   263,   244,   245,   246,   247,   260,   263,
1840 <     158,   191,   260,   260,   260,   260,   260,   257,   153,   260,
1841 <     203,   253,   260,   107,   108,   109,   260,   263,   112,   153,
1842 <     153,   171,   260,   153,   263,   218,   120,   260,   260,   260,
1843 <     180,   181,   260,   260,   260,   185,   186,   260,   260,   133,
1844 <     134,   158,   153,   260,   153,   238,   239,   260,   263,   260,
1845 <     260,   244,   245,   246,   247,   260,   150,   151,   202,   263,
1846 <     263,   263,   263,   263,   257,   263,   263,   263,   263,   260,
1847 <    1183,   263,   250,   251,   252,   263,   204,   205,   206,   207,
1848 <     208,   258,   210,   211,   178,   213,   214,   215,   263,   197,
1849 <     218,   197,   263,   263,   131,   263,   263,   263,   263,   263,
1850 <     228,   229,   230,   263,   232,   233,   234,   131,   263,   237,
1851 <     263,   263,   240,   204,   205,   206,   207,   208,   260,   210,
1852 <     211,   260,   213,   214,   215,   263,   263,   218,   260,   260,
1853 <     153,   260,   153,   260,   260,   260,   260,   228,   229,   230,
1854 <     260,   232,   233,   234,   260,   260,   237,   260,   260,   240,
1855 <     204,   205,   206,   207,   208,   260,   210,   211,   260,   213,
1856 <     214,   215,   260,   260,   218,   260,   153,   260,   260,   153,
1857 <     260,   260,   260,   260,   228,   229,   230,   260,   232,   233,
1858 <     234,   260,   260,   237,   260,   260,   240,   260,   260,   260,
1859 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1860 <     260,   260,   260,   260,   260,   260,   153,   260,   260,   260,
1861 <     260,   260,   260,   260,   260,   260,   153,   260,   153,   263,
1862 <     260,   263,   263,   153,   260,   263,   153,   260,   260,   260,
1863 <     260,   260,   260,   260,   260,   260,   153,   153,   260,   153,
1864 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1865 <     260,   260,   153,   153,   153,   263,   263,   263,   263,   263,
1866 <     263,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1867 <     260,   260,   260,   131,   260,   260,   131,   260,   260,   260,
1868 <     260,   260,   131,   260,   131,   263,   260,   263,   131,   131,
1869 <     153,   131,   131,   260,   153,   197,   153,   153,   263,   153,
1870 <     153,   153,   153,   131,   260,   153,   260,   153,   153,   260,
1871 <     260,   260,   260,   130,   260,   260,   260,   260,   260,   260,
1872 <     260,   260,   260,   153,   260,   197,   260,   260,   260,   260,
1873 <     153,   153,   153,   153,   130,   264,   260,   263,   263,   260,
1874 <     260,   260,   260,   131,   130,   260,    71,   260,   260,   260,
1875 <     260,   260,   260,   260,   260,   260,   260,   260,   313,   773,
1876 <    1346,  1327,   260,   260,   260,   260,   260,   260,   260,   260,
1877 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1878 <     260,   260,   260,   260,   260,   260,   482,  1325,   595,  1269,
1879 <     512,  1168,  1254,  1252,   545,  1306,   553,  1311,  1308,  1267,
1880 <     625,   275,  1309,   360,   124,  1245,   372,   184,    95,  1128,
1881 <    1251,  1126,  1249,    -1,    -1,    -1,    -1,    -1,   457,    -1,
2374 <     291,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2375 <      -1,    -1,    -1,    -1,    -1,    -1,    -1,   472,   440
1758 >     621,   622,   309,   310,   311,   231,     1,     1,     1,     1,
1759 >       1,     8,     1,   231,     1,     1,     1,    53,     1,     1,
1760 >       1,   231,     1,     1,     1,     1,     1,    22,    23,   229,
1761 >     230,   229,     1,    28,    49,   233,    29,     1,   231,   229,
1762 >     231,     1,    25,   233,    37,   201,   202,     1,   229,    32,
1763 >      35,     1,   233,  1072,  1073,  1074,    49,    50,     1,   110,
1764 >       1,    54,    55,    56,    58,   212,   229,     1,   215,    63,
1765 >     233,    65,    67,    68,     1,     1,   201,   202,    73,    74,
1766 >       1,    63,    63,    76,    25,    80,    81,    82,    63,    78,
1767 >     126,   229,    78,    78,    58,   233,   403,   404,     1,    63,
1768 >     231,    65,   231,    63,   411,     9,    10,    11,   415,     1,
1769 >      97,   106,   107,   420,     6,     7,   423,   100,    59,     1,
1770 >      12,   100,   100,   100,   100,    66,   433,   434,    20,    21,
1771 >     124,   100,    35,   231,   121,    27,   127,   444,    30,    31,
1772 >     447,   448,   127,    97,    36,   127,   127,    88,   127,    41,
1773 >      42,    92,    44,    45,    46,   206,    48,   100,   212,   100,
1774 >     124,   215,   103,   104,   229,    57,   100,   121,   233,    61,
1775 >      62,   231,   187,   100,   100,    78,     1,   127,    70,   100,
1776 >     172,   229,   197,   172,   127,   233,   172,    79,   231,   229,
1777 >     231,   229,    17,   233,   135,    87,   231,    89,   229,    91,
1778 >     197,    93,   233,    95,    96,   229,   110,   232,    33,   233,
1779 >     231,   152,   231,   229,   155,   193,   108,   233,   176,   177,
1780 >     231,   113,   114,   115,   127,   117,   118,   119,   229,   231,
1781 >     122,   223,   233,   224,   541,   230,   230,   230,   230,   180,
1782 >      65,   230,   220,   230,     1,   230,     3,   230,     5,   230,
1783 >     172,   220,   230,   230,   110,   224,   148,   198,   199,   200,
1784 >      17,   230,   232,     1,   156,   157,   158,   159,   160,   161,
1785 >     230,   232,   193,   232,   224,   100,    33,    15,    16,   231,
1786 >     230,    19,   231,   231,   225,   226,   220,   230,    71,   230,
1787 >     172,     1,   231,   220,   220,   120,   230,   189,   224,   220,
1788 >     231,    58,   609,    60,     1,   229,   613,    17,    65,   616,
1789 >       1,   136,   229,   620,   232,   229,   233,   232,    75,   232,
1790 >      17,   213,   214,    33,   216,   217,   218,    65,   153,   154,
1791 >     222,    22,    23,   232,     1,   227,    33,    28,   230,   232,
1792 >     229,   223,   232,   100,   232,    83,    84,    85,    86,   232,
1793 >     133,   232,    90,   232,   232,    65,    94,   232,    25,   232,
1794 >     232,   232,   100,   232,   232,    32,   232,   124,    65,   232,
1795 >     232,    40,   232,   111,   112,   232,    67,    68,   203,   162,
1796 >     232,   232,    73,    74,   232,   123,   169,   144,   232,    80,
1797 >      81,    82,   232,   232,   232,   178,   153,   232,   232,   224,
1798 >      69,   232,    71,   232,   232,   230,   232,   145,   232,   232,
1799 >     120,   232,   232,   232,   232,   106,   107,   232,   128,   129,
1800 >     232,   232,   205,   120,   207,   208,   232,   232,   232,   232,
1801 >     232,   128,   129,   100,   232,   232,   232,   232,   221,   149,
1802 >     232,   198,   232,   232,   232,   228,   184,   116,   232,   125,
1803 >       1,     1,   149,   232,   232,     6,     7,   232,   232,   232,
1804 >     232,    12,   232,   232,   133,   232,   232,    17,   225,    20,
1805 >      21,   232,   232,   230,   232,   125,    27,   232,   232,    30,
1806 >      31,   232,   232,    33,   232,    36,   232,   232,   232,     1,
1807 >      41,    42,   230,    44,    45,    46,   232,    48,   232,   168,
1808 >     169,   232,   110,   232,   232,   232,    57,   232,   232,   232,
1809 >      61,    62,   125,    25,   224,    65,   229,   110,   212,    70,
1810 >     230,   110,   110,   110,   110,   110,   212,   224,    79,   137,
1811 >     138,   139,   140,   141,   142,   143,    87,     1,    89,     3,
1812 >      91,     5,    93,   232,    95,    96,   212,    59,   229,   229,
1813 >     100,     4,   229,    17,    66,   224,   125,   108,   232,   228,
1814 >     232,   232,   113,   114,   115,    18,   117,   118,   119,    33,
1815 >     120,   122,   232,    26,   232,   232,    88,   232,   232,   232,
1816 >      92,   232,   110,   232,   232,   232,   136,    40,   100,   232,
1817 >     232,   103,   104,  1214,    58,   232,    60,   148,   232,   232,
1818 >     232,    65,   232,   153,   154,   156,   157,   158,   159,   160,
1819 >     161,    75,   232,   232,   232,   232,    69,   232,    71,   110,
1820 >     232,   232,   232,   135,   809,   810,   811,   812,   813,   814,
1821 >     815,   232,   229,   232,   232,   212,   100,   212,   189,   212,
1822 >     152,   125,   212,   155,    97,   212,   212,     1,    13,   110,
1823 >     110,   110,   212,   203,   212,   110,   110,   212,   110,   110,
1824 >     124,   110,   213,   214,   110,   216,   217,   218,   180,    34,
1825 >     232,   222,   212,   232,   224,    29,   227,   130,    43,   132,
1826 >     144,   212,   212,    37,   125,   212,   198,   199,   200,   153,
1827 >     212,   212,   212,   212,   212,    49,    50,   212,   151,   212,
1828 >      54,    55,    56,   212,   229,   229,   232,    72,   125,   232,
1829 >     125,   125,   125,   225,   226,   232,   169,   212,   232,   229,
1830 >     212,   174,    76,   125,   232,   178,   232,   232,   232,   232,
1831 >     183,   232,   232,   186,   198,   232,   101,   102,   191,   229,
1832 >     229,   229,     0,     1,   109,   232,     4,   232,   110,     1,
1833 >     232,   232,   205,   232,   232,   208,    14,   210,    49,    17,
1834 >      18,   225,   232,    15,    16,   232,    24,    19,   221,   134,
1835 >     232,   110,   229,   212,   232,   228,   232,    35,   212,   212,
1836 >      38,    39,   232,   212,   232,   150,   229,   212,   125,   125,
1837 >     125,   125,   125,   125,   110,   125,   125,   125,   229,   229,
1838 >     232,   212,   229,   231,   125,   229,    64,   229,   229,   232,
1839 >     229,    69,   232,    65,   110,   110,   232,   229,   110,    77,
1840 >     229,    49,   229,    51,    52,   229,   229,   110,   229,   229,
1841 >     229,    83,    84,    85,    86,   229,   229,   229,    90,   229,
1842 >      98,    99,    94,   229,   110,   110,   211,   125,   100,   110,
1843 >     110,   110,   229,   125,   125,   212,   125,   125,   116,   111,
1844 >     112,   232,   125,   125,    49,    71,    51,    52,   110,   125,
1845 >     125,   123,   163,   164,   165,   133,   167,   168,   125,   170,
1846 >     171,   125,   173,   229,   175,   125,   125,   178,   146,   147,
1847 >     181,   182,   183,   145,   185,   125,   125,   222,   229,   190,
1848 >     110,   125,   229,   194,   195,   196,   229,   229,   166,   229,
1849 >     229,   229,   229,   204,   229,   229,   229,   229,   209,   229,
1850 >     229,   179,   229,   229,   229,   229,   229,   133,   229,   229,
1851 >     188,   229,   184,   212,   192,   163,   164,   165,   232,   167,
1852 >     168,   229,   170,   171,   229,   173,   125,   175,   229,   229,
1853 >     178,   125,   229,   181,   182,   183,   162,   185,   125,   229,
1854 >     125,   125,   190,   169,   125,   229,   194,   195,   196,   125,
1855 >     125,   110,   178,   125,   125,   229,   204,   125,   163,   164,
1856 >     165,   209,   167,   168,   229,   170,   171,   125,   173,   232,
1857 >     175,   229,   229,   178,   229,   229,   181,   182,   183,   205,
1858 >     185,   207,   208,   229,   229,   190,   229,   229,   229,   194,
1859 >     195,   196,   229,   229,   229,   221,   229,   229,   229,   204,
1860 >     229,   229,   228,   212,   209,   229,   229,   229,   229,   229,
1861 >     229,   229,   229,   229,   229,   125,   125,   125,   232,   212,
1862 >     232,   125,   229,   125,   125,   125,   229,   229,   229,   229,
1863 >     125,   229,   229,   229,   229,   125,   125,   229,   229,   229,
1864 >     229,   229,   110,   229,  1027,   125,   229,   229,  1025,   229,
1865 >     229,   229,   229,   266,    74,   229,   229,   131,   219,   229,
1866 >     229,   131,   131,   229,   229,   232,   229,   229,   232,   229,
1867 >     498,  1038,   229,   229,   229,   229,   229,   229,   229,   229,
1868 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1869 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1870 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1871 >     229,   229,   229,   229,   229,  1290,   229,   229,   229,   233,
1872 >     513,  1254,   229,   229,   229,  1252,   229,  1233,   336,  1244,
1873 >     229,   229,   229,   229,  1134,   229,   229,   229,   229,   485,
1874 >     462,  1242,   529,   229,   232,   232,   229,   229,  1256,   234,
1875 >     234,  1263,   229,   234,   232,  1238,   229,   229,   229,   567,
1876 >     111,   388,   475,   369,   398,   583,   165,    92,  1104,    -1,
1877 >    1102,   238,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1878 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1879 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1880 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   288,
1881 >      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   295
1882   };
1883  
1884 < /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1885 <   symbol of state STATE-NUM.  */
1884 >  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1885 >     symbol of state STATE-NUM.  */
1886   static const yytype_uint16 yystos[] =
1887   {
1888 <       0,   266,     0,     1,     5,    22,    26,    29,    36,    51,
1889 <      63,    64,    66,    73,    90,   100,   102,   119,   136,   171,
1890 <     180,   181,   185,   186,   267,   272,   277,   295,   301,   316,
1891 <     339,   358,   372,   390,   397,   407,   416,   442,   452,   458,
1892 <     462,   472,   536,   552,   573,   260,   261,   262,   262,   340,
1893 <     417,   453,   262,   463,   262,   537,   373,   443,   359,   262,
1894 <     262,   317,   391,   262,   262,   398,   408,     1,    37,    47,
1895 <     120,   296,   297,   298,   299,   300,     1,    13,    34,    35,
1896 <      40,    42,    96,    97,   105,   106,   126,   127,   143,   144,
1897 <     154,   163,   250,   251,   252,   553,   554,   555,   556,   557,
1898 <     558,   559,   560,   561,   562,   563,   564,   565,   566,   567,
1899 <     568,   569,   570,   571,   572,   153,   341,   345,   153,   418,
1900 <     422,   262,     1,    89,   459,   460,   461,   262,     1,     8,
1901 <       9,    12,    19,    28,    32,    33,    39,    43,    44,    46,
1902 <      52,    70,    71,    75,    82,    86,    87,    88,    91,    94,
1903 <      95,   104,   110,   111,   113,   114,   115,   116,   117,   128,
1904 <     137,   139,   140,   142,   145,   146,   149,   160,   182,   184,
1905 <     188,   192,   193,   194,   195,   196,   200,   201,   209,   241,
1906 <     243,   249,   254,   259,   473,   474,   475,   476,   477,   478,
1907 <     479,   480,   481,   482,   483,   484,   485,   486,   487,   488,
1908 <     489,   490,   491,   492,   493,   494,   495,   496,   497,   498,
1909 <     499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
1910 <     509,   510,   511,   512,   513,   514,   515,   516,   517,   518,
1911 <     519,   520,   521,   522,   523,   524,   528,   532,   533,   534,
1912 <     535,   262,   262,   262,   262,     1,    55,    56,    57,    58,
1913 <      59,    60,    61,    62,   103,   138,   219,   253,   302,   303,
1914 <     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
1915 <     314,   315,     1,   118,   148,   273,   274,   275,   276,   153,
1916 <     318,   322,   262,     1,    41,    54,    76,    78,    80,    81,
1917 <      99,   574,   575,   576,   577,   578,   579,   580,   581,   582,
1918 <       1,    37,    84,   120,   122,   123,   165,   167,   168,   183,
1919 <     227,   255,   256,   278,   279,   280,   284,   285,   286,   287,
1920 <     288,   289,   290,   291,   292,   293,   294,   262,   262,   260,
1921 <     263,   263,   263,   261,   297,   263,   263,   263,   263,   263,
1922 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1923 <     263,   263,   263,   261,   554,   262,   262,     1,    89,   155,
1924 <     454,   455,   456,   457,   263,   261,   460,     1,   120,   155,
1925 <     187,   464,   468,   469,   470,   471,   263,   263,   263,   263,
1926 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1927 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1928 <     263,   263,   263,   263,   263,   263,   263,   263,   529,   263,
1929 <     525,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1930 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1931 <     263,   261,   474,     1,     4,    45,    48,   102,   120,   248,
1932 <     538,   539,   540,   541,   542,   546,   547,   548,     1,    26,
1933 <      49,    53,   147,   156,   157,   190,   248,   374,   375,   376,
1934 <     377,   378,   379,   380,   387,   388,   389,     1,   155,   187,
1935 <     248,   444,   448,   449,   450,   451,     1,    53,    83,    89,
1936 <     152,   360,   364,   365,   366,   370,   371,   260,   263,   263,
1937 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1938 <     261,   303,   260,   263,   263,   261,   274,   262,     1,    22,
1939 <     124,   155,   392,   393,   394,   395,   396,   263,   263,   263,
1940 <     263,   263,   263,   263,   261,   575,   260,   263,   263,   263,
1941 <     263,   263,   263,   263,   281,   263,   263,   263,   263,   261,
1942 <     279,     1,   120,   187,   248,   399,   400,   401,   402,   403,
1943 <       1,   120,   187,   409,   410,   411,   412,   153,   153,   153,
1944 <     260,   197,   131,   131,   197,   197,   131,   269,   269,   131,
1945 <     131,   197,   197,   131,   269,   197,   197,   197,   197,   197,
1946 <     260,     1,    23,    24,    30,   107,   108,   109,   112,   120,
1947 <     133,   134,   150,   151,   178,   342,   343,   344,   346,   347,
1948 <     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
1949 <       1,     3,     6,    25,    26,    49,    53,    83,    85,    98,
1950 <     120,   152,   166,   179,   255,   419,   420,   421,   423,   424,
1951 <     425,   426,   427,   428,   429,   436,   437,   438,   439,   440,
1952 <     441,   263,   263,   261,   455,   153,   260,   263,   263,   465,
1953 <     261,   469,   197,   269,   197,   269,   131,   153,   131,   197,
1954 <     197,   131,   153,   197,   131,   131,   131,   197,   269,   197,
1955 <     197,   269,   153,   197,   131,   131,   269,   131,   131,   153,
1956 <     131,   131,   197,   197,   263,   197,   263,   269,   269,   197,
1957 <     269,   153,   197,   197,   197,   197,   198,   197,   198,   197,
1958 <     197,   269,   269,   131,   271,   269,   197,   197,   197,   197,
1959 <     260,   549,   263,   263,   543,   263,   263,   261,   539,   260,
1960 <     263,   263,   381,   263,   263,   263,   263,   263,   261,   375,
1961 <     263,   445,   263,   261,   449,   260,   361,   263,   263,   263,
1962 <     261,   365,   153,   153,   153,   153,   153,   153,   153,   153,
1963 <     220,   221,   222,   223,   224,   225,   226,   153,   153,   197,
1964 <     260,   153,   153,   260,     1,    26,    49,    53,   120,   147,
1965 <     166,   236,   248,   319,   320,   321,   323,   324,   325,   326,
1966 <     327,   328,   332,   260,   263,   263,   263,   261,   393,   197,
1967 <     197,   197,   153,   197,   197,   269,   260,   153,   197,   153,
1968 <     153,   153,   153,   153,   263,   153,   131,   153,   153,   260,
1969 <     260,   263,   404,   263,   261,   400,   260,   263,   413,   261,
1970 <     410,   260,   260,   260,   260,   260,   260,   260,   260,   173,
1971 <     174,   175,   176,   177,   268,   269,   260,   260,   260,   260,
1972 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1973 <     263,   263,   263,   263,   263,   263,   263,   263,   263,   263,
1974 <     263,   263,   263,   261,   343,   260,   263,   263,   263,   263,
1975 <     263,   430,   263,   263,   263,   263,   263,   263,   263,   263,
1976 <     261,   420,   153,   153,   260,   260,   153,   153,   263,   260,
1977 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1978 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1979 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1980 <     260,   260,   204,   205,   206,   207,   208,   210,   211,   213,
1981 <     214,   215,   218,   228,   229,   230,   232,   233,   234,   237,
1982 <     240,   530,   531,   260,   204,   205,   206,   207,   208,   210,
1983 <     211,   213,   214,   215,   218,   228,   229,   230,   232,   233,
1984 <     234,   237,   240,   526,   527,   260,   260,   260,   260,   260,
1985 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1986 <     260,    14,    15,    16,   270,   271,   260,   260,   260,   260,
1987 <     260,   260,   263,   269,   197,   263,   153,   153,   260,   153,
1988 <     197,   263,   153,   131,   153,   153,   153,   260,   153,   263,
1989 <     153,   260,   263,   153,   153,   131,   368,   369,   260,   260,
1990 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1991 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
1992 <     263,   263,   333,   263,   263,   263,   329,   263,   261,   320,
1993 <     153,   153,   153,   260,   260,   260,   260,   260,   260,   260,
1994 <     260,   260,   260,   260,   260,   260,   260,   260,   169,   170,
1995 <     282,   283,   260,   260,   260,   260,   153,   263,   153,   260,
1996 <     153,   263,   260,   268,   268,   268,   268,   268,   131,   131,
1997 <     269,   131,   131,   131,   131,   153,   131,   131,   269,   269,
1998 <     271,   260,   153,   216,   217,   153,   153,   197,   263,   153,
1999 <     153,   153,   153,   131,   153,   153,   153,   260,   260,   260,
2000 <     260,   260,   158,   466,   467,   260,   264,   260,   264,   270,
2001 <     270,   270,    11,   199,   550,   551,   260,   260,    11,   199,
2002 <     544,   545,   260,   260,   260,   260,   130,   382,   383,   385,
2003 <     260,   260,   260,   260,   260,   260,   158,   446,   447,   260,
2004 <      76,   231,   235,   362,   363,   260,   260,   202,   264,   367,
2005 <     153,   197,   263,   153,   153,   153,   263,   153,   260,   260,
2006 <     260,   260,   260,   264,   260,    92,   171,   203,   218,   238,
2007 <     239,   244,   245,   246,   247,   257,   405,   406,   260,   260,
2008 <      92,   171,   203,   218,   238,   239,   244,   245,   246,   247,
2009 <     257,   414,   415,   260,   260,   260,   260,   260,   260,   260,
2010 <     260,   260,   260,   260,   260,   260,   260,   260,   260,   260,
2011 <     260,   260,   130,   431,   432,   434,   260,   260,   260,   260,
2012 <     260,   260,   260,   260,   260,   264,   531,   527,   260,   264,
2013 <     260,   264,   384,   260,   264,    20,    21,    50,    67,    74,
2014 <      93,   121,   129,   172,   191,   386,   260,   264,   260,   264,
2015 <     131,   369,   260,   260,   260,   130,   334,   335,   337,   260,
2016 <     260,   260,   204,   205,   206,   207,   208,   210,   211,   213,
2017 <     214,   215,   218,   228,   229,   230,   232,   233,   234,   237,
2512 <     240,   330,   331,   260,   283,   260,   264,   260,   264,   433,
2513 <     260,   264,    10,    12,    27,    31,   242,   435,   467,   551,
2514 <     545,   386,   383,   447,   363,   336,   260,   264,     5,    38,
2515 <      49,    65,    72,    77,    79,    92,   125,   141,   159,   161,
2516 <     162,   229,   247,   257,   338,   260,   264,   406,   415,   435,
2517 <     432,   338,   335,   331
1888 >       0,   236,     0,     1,     4,    14,    17,    18,    24,    35,
1889 >      38,    39,    64,    69,    77,    98,    99,   116,   133,   146,
1890 >     147,   166,   179,   188,   192,   237,   242,   247,   271,   277,
1891 >     283,   297,   317,   340,   354,   369,   376,   380,   390,   399,
1892 >     420,   426,   432,   436,   442,   500,   515,   229,   230,   231,
1893 >     231,   318,   400,   427,   231,   437,   231,   355,   421,   341,
1894 >     231,   278,   298,   370,   231,   231,   391,   231,   231,   381,
1895 >       1,    25,    32,   100,   272,   273,   274,   275,   276,     1,
1896 >      22,    23,    28,    67,    68,    73,    74,    80,    81,    82,
1897 >     106,   107,   501,   502,   503,   504,   505,   506,   507,   508,
1898 >     509,   510,   511,   512,   513,   514,   231,   231,   231,     1,
1899 >      63,   433,   434,   435,   231,     1,     6,     7,    12,    20,
1900 >      21,    27,    30,    31,    36,    41,    42,    44,    45,    46,
1901 >      48,    57,    61,    62,    70,    79,    87,    89,    91,    93,
1902 >      95,    96,   108,   113,   114,   115,   117,   118,   119,   122,
1903 >     148,   156,   157,   158,   159,   160,   161,   189,   213,   214,
1904 >     216,   217,   218,   222,   227,   443,   444,   445,   446,   447,
1905 >     448,   449,   450,   451,   452,   453,   454,   455,   456,   457,
1906 >     458,   459,   460,   461,   462,   463,   464,   465,   466,   467,
1907 >     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
1908 >     478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
1909 >     488,   489,   493,   497,   498,   499,   231,   231,   231,     1,
1910 >      97,   121,   243,   244,   245,   246,   231,   231,   231,     1,
1911 >      29,    37,    49,    50,    54,    55,    56,    76,   516,   517,
1912 >     518,   519,   520,   521,   522,   523,   524,   525,     1,    25,
1913 >      59,    66,    88,    92,   100,   103,   104,   135,   152,   155,
1914 >     180,   198,   199,   200,   225,   226,   248,   249,   250,   251,
1915 >     256,   257,   258,   259,   260,   261,   262,   263,   264,   265,
1916 >     266,   267,   268,   269,   270,   231,     1,   223,   284,   285,
1917 >     286,   287,   288,     1,   100,   377,   378,   379,   231,   229,
1918 >     232,   232,   232,   230,   273,   232,   232,   232,   232,   232,
1919 >     232,   232,   232,   232,   232,   232,   232,   230,   502,     1,
1920 >      15,    16,    19,    65,    83,    84,    85,    86,    90,    94,
1921 >     100,   111,   112,   123,   145,   184,   319,   320,   321,   322,
1922 >     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
1923 >     333,   334,   335,   336,     1,     3,     5,    17,    33,    58,
1924 >      60,    65,    75,   100,   124,   144,   153,   198,   225,   401,
1925 >     402,   403,   404,   405,   406,   407,   408,   409,   410,   411,
1926 >     415,   416,   417,   418,   419,     1,    63,   127,   428,   429,
1927 >     430,   431,   232,   230,   434,     1,   100,   127,   438,   439,
1928 >     440,   441,   232,   232,   232,   232,   232,   232,   232,   232,
1929 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1930 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   494,
1931 >     232,   490,   232,   232,   232,   232,   232,   232,   232,   232,
1932 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1933 >     232,   230,   444,     1,    17,    33,    65,   120,   128,   129,
1934 >     149,   224,   356,   357,   358,   359,   360,   361,   362,   366,
1935 >     367,   368,     1,   127,   224,   422,   423,   424,   425,     1,
1936 >      58,    63,    65,   124,   342,   346,   347,   348,   352,   353,
1937 >     229,   232,   232,   230,   244,     1,    78,   172,   279,   280,
1938 >     281,   282,     1,    17,    33,    65,   100,   120,   136,   153,
1939 >     154,   203,   224,   299,   300,   301,   302,   303,   304,   305,
1940 >     306,   307,   308,   309,   313,     1,    35,    78,   127,   371,
1941 >     372,   373,   374,   375,   232,   232,   232,   232,   232,   232,
1942 >     232,   232,   230,   517,   229,   232,   232,   232,   232,   232,
1943 >     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1944 >     232,   232,   230,   249,     1,   100,   220,   392,   393,   394,
1945 >     395,   229,   232,   230,   285,   172,   232,   230,   378,     1,
1946 >     100,   220,   224,   382,   383,   384,   385,   386,   125,   125,
1947 >     125,   229,   110,   110,   212,   110,   110,   239,   239,   239,
1948 >     110,   110,   110,   212,   212,   229,   229,   232,   232,   232,
1949 >     337,   232,   232,   232,   232,   232,   232,   232,   232,   232,
1950 >     232,   232,   232,   230,   320,   229,   232,   232,   232,   232,
1951 >     232,   232,   412,   232,   232,   232,   232,   232,   232,   232,
1952 >     230,   402,   232,   232,   230,   429,   125,   229,   232,   232,
1953 >     230,   439,   212,   239,   239,   212,   110,   212,   110,   125,
1954 >     212,   239,   212,   110,   110,   239,   110,   212,   212,   212,
1955 >     239,   110,   110,   239,   110,   110,   110,   110,   212,   232,
1956 >     212,   232,   212,   239,   239,   212,   212,   212,   212,   215,
1957 >     212,   215,   212,   212,   212,   125,   239,   212,   212,   239,
1958 >     239,   212,   212,   229,   229,   232,   232,   363,   232,   232,
1959 >     232,   232,   232,   230,   357,   232,   232,   230,   423,   229,
1960 >     232,   232,   343,   232,   230,   347,   125,   125,   229,   229,
1961 >     232,   232,   230,   280,   229,   232,   232,   314,   232,   232,
1962 >     232,   232,   232,   310,   232,   230,   300,   229,   232,   232,
1963 >     232,   230,   372,   212,   212,   212,   125,   212,   212,   212,
1964 >     239,   229,   125,   212,   125,   110,   110,   125,   125,   125,
1965 >     125,   125,   125,   110,   125,   201,   202,   252,   253,   201,
1966 >     202,   254,   255,   125,   125,   229,   229,   232,   396,   230,
1967 >     393,   212,   229,   231,   125,   229,   229,   232,   387,   232,
1968 >     230,   383,   229,   229,   229,   229,   229,   229,   229,   137,
1969 >     138,   139,   140,   141,   142,   143,   238,   239,   229,   229,
1970 >     229,   229,   229,   229,   229,   229,   110,   110,   239,   232,
1971 >     110,   110,   239,   110,   110,   239,   125,   110,   110,   239,
1972 >     110,   241,   241,   229,   125,   176,   177,   125,   212,   125,
1973 >     125,   232,   125,   125,   110,   125,   125,   125,   125,   229,
1974 >     125,   125,   229,   229,   125,   125,   229,   229,   229,   229,
1975 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1976 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1977 >     229,   229,   229,   229,    49,   163,   164,   165,   167,   168,
1978 >     170,   171,   173,   175,   178,   181,   182,   183,   185,   190,
1979 >     194,   195,   196,   204,   209,   495,   496,   229,    49,    51,
1980 >      52,   163,   164,   165,   167,   168,   170,   171,   173,   175,
1981 >     178,   181,   182,   183,   185,   190,   194,   195,   196,   204,
1982 >     209,   491,   492,   229,   229,   229,   229,   229,   229,   229,
1983 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1984 >     229,   229,   229,   229,   125,   212,   232,   125,   110,   125,
1985 >     125,   125,   229,   125,   125,   229,   125,   125,   232,   110,
1986 >     350,   351,   229,   229,   229,   125,   125,   229,   125,   212,
1987 >     232,   125,   125,   125,   125,   212,   232,   125,   229,   125,
1988 >     125,   125,   229,   229,   229,   229,   229,   229,   229,   229,
1989 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1990 >     229,   229,   229,   229,   229,   233,   229,   233,   229,   229,
1991 >     125,   232,   229,   229,     1,   100,   193,   220,   289,   290,
1992 >     291,   292,   293,   229,   125,   232,   125,   229,   238,   238,
1993 >     238,   238,   238,   238,   238,   229,   229,   229,    53,   126,
1994 >     338,   339,   229,   229,   229,   229,   229,   229,   229,   229,
1995 >     229,   229,     9,    10,    11,   240,   241,   229,   229,   229,
1996 >     229,   229,   229,   229,   229,   229,     8,   197,   413,   414,
1997 >     229,   229,   229,   229,   229,   229,   229,   229,   229,   229,
1998 >     229,   229,   233,   229,   233,   229,   229,    13,    34,    43,
1999 >      72,   101,   102,   109,   134,   150,   211,   364,   365,   229,
2000 >     229,   229,   229,   229,   229,   229,   229,   229,    49,   187,
2001 >     197,   344,   345,   219,   233,   349,   229,   229,   229,   229,
2002 >       4,    18,    26,    40,    69,    71,    97,   130,   132,   151,
2003 >     169,   174,   178,   183,   186,   191,   205,   208,   210,   221,
2004 >     228,   315,   316,   229,   229,   229,   229,   229,    49,    51,
2005 >      52,   163,   164,   165,   167,   168,   170,   171,   173,   175,
2006 >     178,   181,   182,   183,   185,   190,   194,   195,   196,   204,
2007 >     209,   311,   312,   229,   229,   229,   229,   253,   255,   229,
2008 >      71,   133,   162,   169,   178,   205,   207,   208,   221,   228,
2009 >     397,   398,   229,   232,   232,   294,   230,   290,   229,    71,
2010 >     133,   162,   169,   178,   205,   207,   208,   221,   228,   388,
2011 >     389,   229,   229,   233,   240,   240,   240,   229,   233,   496,
2012 >     492,   229,   233,   229,   233,   110,   351,   229,   234,   234,
2013 >     234,   229,   233,   229,   233,   229,   233,   125,   206,   241,
2014 >     232,   229,   229,   233,   339,   414,   365,   345,   131,   131,
2015 >     131,   316,   312,   398,   229,   229,   229,    40,    69,    71,
2016 >     116,   133,   168,   169,   224,   228,   295,   296,   389,   229,
2017 >     233,   296
2018   };
2019  
2020 < #define yyerrok         (yyerrstatus = 0)
2021 < #define yyclearin       (yychar = YYEMPTY)
2022 < #define YYEMPTY         (-2)
2023 < #define YYEOF           0
2024 <
2025 < #define YYACCEPT        goto yyacceptlab
2026 < #define YYABORT         goto yyabortlab
2027 < #define YYERROR         goto yyerrorlab
2028 <
2029 <
2030 < /* Like YYERROR except do call yyerror.  This remains here temporarily
2031 <   to ease the transition to the new meaning of YYERROR, for GCC.
2032 <   Once GCC version 2 has supplanted version 1, this can go.  However,
2033 <   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
2034 <   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
2035 <   discussed.  */
2036 <
2037 < #define YYFAIL          goto yyerrlab
2038 < #if defined YYFAIL
2039 <  /* This is here to suppress warnings from the GCC cpp's
2040 <     -Wunused-macros.  Normally we don't worry about that warning, but
2041 <     some users do, and we want to make it easy for users to remove
2042 <     YYFAIL uses, which will produce warnings from Bison 2.5.  */
2043 < #endif
2020 >  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2021 > static const yytype_uint16 yyr1[] =
2022 > {
2023 >       0,   235,   236,   236,   237,   237,   237,   237,   237,   237,
2024 >     237,   237,   237,   237,   237,   237,   237,   237,   237,   237,
2025 >     237,   237,   237,   237,   237,   237,   237,   238,   238,   239,
2026 >     239,   239,   239,   239,   239,   239,   239,   240,   240,   241,
2027 >     241,   241,   241,   242,   243,   243,   244,   244,   244,   245,
2028 >     246,   247,   248,   248,   249,   249,   249,   249,   249,   249,
2029 >     249,   249,   249,   249,   249,   249,   249,   249,   249,   249,
2030 >     249,   249,   250,   251,   252,   252,   253,   253,   254,   254,
2031 >     255,   255,   256,   257,   258,   259,   260,   261,   262,   263,
2032 >     264,   265,   266,   267,   268,   269,   270,   271,   272,   272,
2033 >     273,   273,   273,   273,   274,   275,   276,   278,   277,   279,
2034 >     279,   280,   280,   280,   281,   282,   283,   284,   284,   285,
2035 >     285,   285,   286,   288,   287,   289,   289,   290,   290,   290,
2036 >     290,   291,   292,   292,   294,   293,   295,   295,   296,   296,
2037 >     296,   296,   296,   296,   296,   296,   296,   298,   297,   299,
2038 >     299,   300,   300,   300,   300,   300,   300,   300,   300,   300,
2039 >     300,   300,   301,   302,   303,   304,   305,   306,   307,   308,
2040 >     310,   309,   311,   311,   312,   312,   312,   312,   312,   312,
2041 >     312,   312,   312,   312,   312,   312,   312,   312,   312,   312,
2042 >     312,   312,   312,   312,   312,   312,   312,   314,   313,   315,
2043 >     315,   316,   316,   316,   316,   316,   316,   316,   316,   316,
2044 >     316,   316,   316,   316,   316,   316,   316,   316,   316,   316,
2045 >     316,   316,   316,   316,   316,   318,   317,   319,   319,   320,
2046 >     320,   320,   320,   320,   320,   320,   320,   320,   320,   320,
2047 >     320,   320,   320,   320,   320,   320,   321,   322,   323,   324,
2048 >     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
2049 >     335,   337,   336,   338,   338,   339,   339,   341,   340,   343,
2050 >     342,   344,   344,   345,   345,   345,   346,   346,   347,   347,
2051 >     347,   347,   347,   349,   348,   350,   350,   351,   351,   352,
2052 >     353,   355,   354,   356,   356,   357,   357,   357,   357,   357,
2053 >     357,   357,   357,   357,   358,   359,   360,   361,   363,   362,
2054 >     364,   364,   365,   365,   365,   365,   365,   365,   365,   365,
2055 >     365,   365,   366,   367,   368,   370,   369,   371,   371,   372,
2056 >     372,   372,   372,   373,   374,   375,   376,   377,   377,   378,
2057 >     378,   379,   381,   380,   382,   382,   383,   383,   383,   383,
2058 >     384,   385,   387,   386,   388,   388,   389,   389,   389,   389,
2059 >     389,   389,   389,   389,   389,   389,   391,   390,   392,   392,
2060 >     393,   393,   393,   394,   396,   395,   397,   397,   398,   398,
2061 >     398,   398,   398,   398,   398,   398,   398,   398,   400,   399,
2062 >     401,   401,   402,   402,   402,   402,   402,   402,   402,   402,
2063 >     402,   402,   402,   402,   402,   402,   402,   403,   404,   405,
2064 >     406,   407,   408,   409,   410,   410,   412,   411,   413,   413,
2065 >     414,   414,   415,   416,   417,   418,   419,   421,   420,   422,
2066 >     422,   423,   423,   423,   424,   425,   427,   426,   428,   428,
2067 >     429,   429,   429,   430,   431,   432,   433,   433,   434,   434,
2068 >     435,   437,   436,   438,   438,   439,   439,   439,   440,   441,
2069 >     442,   443,   443,   444,   444,   444,   444,   444,   444,   444,
2070 >     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
2071 >     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
2072 >     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
2073 >     444,   444,   444,   444,   444,   444,   444,   444,   444,   444,
2074 >     444,   444,   444,   445,   446,   447,   448,   449,   450,   451,
2075 >     452,   453,   454,   455,   456,   457,   458,   459,   460,   461,
2076 >     462,   463,   464,   465,   466,   467,   468,   469,   470,   471,
2077 >     471,   472,   472,   473,   474,   475,   476,   477,   478,   479,
2078 >     480,   481,   482,   483,   484,   485,   486,   487,   488,   490,
2079 >     489,   491,   491,   492,   492,   492,   492,   492,   492,   492,
2080 >     492,   492,   492,   492,   492,   492,   492,   492,   492,   492,
2081 >     492,   492,   492,   492,   492,   492,   494,   493,   495,   495,
2082 >     496,   496,   496,   496,   496,   496,   496,   496,   496,   496,
2083 >     496,   496,   496,   496,   496,   496,   496,   496,   496,   496,
2084 >     496,   497,   498,   499,   500,   501,   501,   502,   502,   502,
2085 >     502,   502,   502,   502,   502,   502,   502,   502,   502,   502,
2086 >     503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
2087 >     513,   514,   515,   516,   516,   517,   517,   517,   517,   517,
2088 >     517,   517,   517,   517,   518,   519,   520,   521,   522,   523,
2089 >     524,   525
2090 > };
2091  
2092 < #define YYRECOVERING()  (!!yyerrstatus)
2092 >  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
2093 > static const yytype_uint8 yyr2[] =
2094 > {
2095 >       0,     2,     0,     2,     1,     1,     1,     1,     1,     1,
2096 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2097 >       1,     1,     1,     1,     1,     2,     2,     0,     1,     2,
2098 >       3,     3,     3,     3,     3,     3,     3,     0,     1,     2,
2099 >       3,     3,     3,     5,     2,     1,     1,     1,     2,     4,
2100 >       4,     5,     2,     1,     1,     1,     1,     1,     1,     1,
2101 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2102 >       1,     2,     4,     4,     3,     1,     1,     1,     3,     1,
2103 >       1,     1,     4,     4,     4,     4,     4,     4,     4,     4,
2104 >       4,     4,     4,     4,     4,     4,     4,     5,     2,     1,
2105 >       1,     1,     1,     2,     4,     4,     4,     0,     6,     2,
2106 >       1,     1,     1,     2,     4,     4,     5,     2,     1,     1,
2107 >       1,     2,     4,     0,     6,     2,     1,     1,     1,     1,
2108 >       2,     4,     4,     4,     0,     5,     3,     1,     1,     1,
2109 >       1,     1,     1,     1,     1,     1,     1,     0,     6,     2,
2110 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2111 >       1,     2,     4,     4,     4,     4,     4,     4,     4,     4,
2112 >       0,     5,     3,     1,     1,     1,     1,     1,     1,     1,
2113 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2114 >       1,     1,     1,     1,     1,     1,     1,     0,     5,     3,
2115 >       1,     3,     1,     3,     1,     3,     1,     1,     1,     1,
2116 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2117 >       1,     1,     1,     1,     1,     0,     6,     2,     1,     1,
2118 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2119 >       1,     1,     1,     1,     1,     2,     4,     4,     4,     4,
2120 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2121 >       4,     0,     5,     3,     1,     1,     1,     0,     6,     0,
2122 >       5,     3,     1,     1,     1,     1,     2,     1,     1,     1,
2123 >       1,     1,     2,     0,     5,     3,     1,     1,     3,     4,
2124 >       4,     0,     6,     2,     1,     1,     1,     1,     1,     1,
2125 >       1,     1,     1,     2,     4,     4,     4,     4,     0,     5,
2126 >       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2127 >       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
2128 >       1,     1,     2,     4,     4,     4,     5,     2,     1,     1,
2129 >       1,     4,     0,     6,     2,     1,     1,     1,     1,     2,
2130 >       4,     4,     0,     5,     3,     1,     1,     1,     1,     1,
2131 >       1,     1,     1,     1,     1,     1,     0,     6,     2,     1,
2132 >       1,     1,     2,     4,     0,     5,     3,     1,     1,     1,
2133 >       1,     1,     1,     1,     1,     1,     1,     1,     0,     6,
2134 >       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2135 >       1,     1,     1,     1,     1,     1,     2,     4,     4,     4,
2136 >       4,     4,     4,     4,     4,     4,     0,     5,     3,     1,
2137 >       1,     1,     4,     4,     4,     4,     4,     0,     6,     2,
2138 >       1,     1,     1,     1,     4,     4,     0,     6,     2,     1,
2139 >       1,     1,     1,     4,     4,     5,     2,     1,     1,     1,
2140 >       4,     0,     6,     2,     1,     1,     1,     1,     4,     4,
2141 >       5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
2142 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2143 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2144 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2145 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2146 >       1,     1,     1,     4,     4,     4,     4,     4,     4,     4,
2147 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2148 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2149 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2150 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     0,
2151 >       5,     3,     1,     1,     1,     1,     1,     1,     1,     1,
2152 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2153 >       1,     1,     1,     1,     1,     1,     0,     5,     3,     1,
2154 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2155 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2156 >       1,     4,     4,     4,     5,     2,     1,     1,     1,     1,
2157 >       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2158 >       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
2159 >       4,     4,     5,     2,     1,     1,     1,     1,     1,     1,
2160 >       1,     1,     1,     1,     4,     4,     4,     4,     4,     4,
2161 >       4,     4
2162 > };
2163  
2547 #define YYBACKUP(Token, Value)                                  \
2548 do                                                              \
2549  if (yychar == YYEMPTY && yylen == 1)                          \
2550    {                                                           \
2551      yychar = (Token);                                         \
2552      yylval = (Value);                                         \
2553      yytoken = YYTRANSLATE (yychar);                           \
2554      YYPOPSTACK (1);                                           \
2555      goto yybackup;                                            \
2556    }                                                           \
2557  else                                                          \
2558    {                                                           \
2559      yyerror (YY_("syntax error: cannot back up")); \
2560      YYERROR;                                                  \
2561    }                                                           \
2562 while (YYID (0))
2563
2564
2565 #define YYTERROR        1
2566 #define YYERRCODE       256
2567
2568
2569 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2570   If N is 0, then set CURRENT to the empty location which ends
2571   the previous symbol: RHS[0] (always defined).  */
2572
2573 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2574 #ifndef YYLLOC_DEFAULT
2575 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
2576    do                                                                  \
2577      if (YYID (N))                                                    \
2578        {                                                               \
2579          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
2580          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
2581          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
2582          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
2583        }                                                               \
2584      else                                                              \
2585        {                                                               \
2586          (Current).first_line   = (Current).last_line   =              \
2587            YYRHSLOC (Rhs, 0).last_line;                                \
2588          (Current).first_column = (Current).last_column =              \
2589            YYRHSLOC (Rhs, 0).last_column;                              \
2590        }                                                               \
2591    while (YYID (0))
2592 #endif
2164  
2165 + #define yyerrok         (yyerrstatus = 0)
2166 + #define yyclearin       (yychar = YYEMPTY)
2167 + #define YYEMPTY         (-2)
2168 + #define YYEOF           0
2169 +
2170 + #define YYACCEPT        goto yyacceptlab
2171 + #define YYABORT         goto yyabortlab
2172 + #define YYERROR         goto yyerrorlab
2173  
2595 /* YY_LOCATION_PRINT -- Print the location on the stream.
2596   This macro was not mandated originally: define only if we know
2597   we won't break user code: when these are the locations we know.  */
2174  
2175 < #ifndef YY_LOCATION_PRINT
2600 < # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2601 < #  define YY_LOCATION_PRINT(File, Loc)                  \
2602 <     fprintf (File, "%d.%d-%d.%d",                      \
2603 <              (Loc).first_line, (Loc).first_column,     \
2604 <              (Loc).last_line,  (Loc).last_column)
2605 < # else
2606 < #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2607 < # endif
2608 < #endif
2175 > #define YYRECOVERING()  (!!yyerrstatus)
2176  
2177 + #define YYBACKUP(Token, Value)                                  \
2178 + do                                                              \
2179 +  if (yychar == YYEMPTY)                                        \
2180 +    {                                                           \
2181 +      yychar = (Token);                                         \
2182 +      yylval = (Value);                                         \
2183 +      YYPOPSTACK (yylen);                                       \
2184 +      yystate = *yyssp;                                         \
2185 +      goto yybackup;                                            \
2186 +    }                                                           \
2187 +  else                                                          \
2188 +    {                                                           \
2189 +      yyerror (YY_("syntax error: cannot back up")); \
2190 +      YYERROR;                                                  \
2191 +    }                                                           \
2192 + while (0)
2193 +
2194 + /* Error token number */
2195 + #define YYTERROR        1
2196 + #define YYERRCODE       256
2197  
2611 /* YYLEX -- calling `yylex' with the right arguments.  */
2198  
2613 #ifdef YYLEX_PARAM
2614 # define YYLEX yylex (YYLEX_PARAM)
2615 #else
2616 # define YYLEX yylex ()
2617 #endif
2199  
2200   /* Enable debugging if requested.  */
2201   #if YYDEBUG
# Line 2624 | Line 2205 | while (YYID (0))
2205   #  define YYFPRINTF fprintf
2206   # endif
2207  
2208 < # define YYDPRINTF(Args)                        \
2209 < do {                                            \
2210 <  if (yydebug)                                  \
2211 <    YYFPRINTF Args;                             \
2212 < } while (YYID (0))
2632 <
2633 < # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2634 < do {                                                                      \
2635 <  if (yydebug)                                                            \
2636 <    {                                                                     \
2637 <      YYFPRINTF (stderr, "%s ", Title);                                   \
2638 <      yy_symbol_print (stderr,                                            \
2639 <                  Type, Value); \
2640 <      YYFPRINTF (stderr, "\n");                                           \
2641 <    }                                                                     \
2642 < } while (YYID (0))
2208 > # define YYDPRINTF(Args)                        \
2209 > do {                                            \
2210 >  if (yydebug)                                  \
2211 >    YYFPRINTF Args;                             \
2212 > } while (0)
2213  
2214 + /* This macro is provided for backward compatibility. */
2215 + #ifndef YY_LOCATION_PRINT
2216 + # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2217 + #endif
2218  
2645 /*--------------------------------.
2646 | Print this symbol on YYOUTPUT.  |
2647 `--------------------------------*/
2219  
2220 < /*ARGSUSED*/
2221 < #if (defined __STDC__ || defined __C99__FUNC__ \
2222 <     || defined __cplusplus || defined _MSC_VER)
2220 > # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
2221 > do {                                                                      \
2222 >  if (yydebug)                                                            \
2223 >    {                                                                     \
2224 >      YYFPRINTF (stderr, "%s ", Title);                                   \
2225 >      yy_symbol_print (stderr,                                            \
2226 >                  Type, Value); \
2227 >      YYFPRINTF (stderr, "\n");                                           \
2228 >    }                                                                     \
2229 > } while (0)
2230 >
2231 >
2232 > /*----------------------------------------.
2233 > | Print this symbol's value on YYOUTPUT.  |
2234 > `----------------------------------------*/
2235 >
2236   static void
2237   yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2654 #else
2655 static void
2656 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2657    FILE *yyoutput;
2658    int yytype;
2659    YYSTYPE const * const yyvaluep;
2660 #endif
2238   {
2239 +  FILE *yyo = yyoutput;
2240 +  YYUSE (yyo);
2241    if (!yyvaluep)
2242      return;
2243   # ifdef YYPRINT
2244    if (yytype < YYNTOKENS)
2245      YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2667 # else
2668  YYUSE (yyoutput);
2246   # endif
2247 <  switch (yytype)
2671 <    {
2672 <      default:
2673 <        break;
2674 <    }
2247 >  YYUSE (yytype);
2248   }
2249  
2250  
# Line 2679 | Line 2252 | yy_symbol_value_print (yyoutput, yytype,
2252   | Print this symbol on YYOUTPUT.  |
2253   `--------------------------------*/
2254  
2682 #if (defined __STDC__ || defined __C99__FUNC__ \
2683     || defined __cplusplus || defined _MSC_VER)
2255   static void
2256   yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2686 #else
2687 static void
2688 yy_symbol_print (yyoutput, yytype, yyvaluep)
2689    FILE *yyoutput;
2690    int yytype;
2691    YYSTYPE const * const yyvaluep;
2692 #endif
2257   {
2258 <  if (yytype < YYNTOKENS)
2259 <    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2696 <  else
2697 <    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2258 >  YYFPRINTF (yyoutput, "%s %s (",
2259 >             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2260  
2261    yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2262    YYFPRINTF (yyoutput, ")");
# Line 2705 | Line 2267 | yy_symbol_print (yyoutput, yytype, yyval
2267   | TOP (included).                                                   |
2268   `------------------------------------------------------------------*/
2269  
2708 #if (defined __STDC__ || defined __C99__FUNC__ \
2709     || defined __cplusplus || defined _MSC_VER)
2270   static void
2271   yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2712 #else
2713 static void
2714 yy_stack_print (yybottom, yytop)
2715    yytype_int16 *yybottom;
2716    yytype_int16 *yytop;
2717 #endif
2272   {
2273    YYFPRINTF (stderr, "Stack now");
2274    for (; yybottom <= yytop; yybottom++)
# Line 2725 | Line 2279 | yy_stack_print (yybottom, yytop)
2279    YYFPRINTF (stderr, "\n");
2280   }
2281  
2282 < # define YY_STACK_PRINT(Bottom, Top)                            \
2283 < do {                                                            \
2284 <  if (yydebug)                                                  \
2285 <    yy_stack_print ((Bottom), (Top));                           \
2286 < } while (YYID (0))
2282 > # define YY_STACK_PRINT(Bottom, Top)                            \
2283 > do {                                                            \
2284 >  if (yydebug)                                                  \
2285 >    yy_stack_print ((Bottom), (Top));                           \
2286 > } while (0)
2287  
2288  
2289   /*------------------------------------------------.
2290   | Report that the YYRULE is going to be reduced.  |
2291   `------------------------------------------------*/
2292  
2739 #if (defined __STDC__ || defined __C99__FUNC__ \
2740     || defined __cplusplus || defined _MSC_VER)
2741 static void
2742 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2743 #else
2293   static void
2294 < yy_reduce_print (yyvsp, yyrule)
2746 <    YYSTYPE *yyvsp;
2747 <    int yyrule;
2748 < #endif
2294 > yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2295   {
2296 +  unsigned long int yylno = yyrline[yyrule];
2297    int yynrhs = yyr2[yyrule];
2298    int yyi;
2752  unsigned long int yylno = yyrline[yyrule];
2299    YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2300 <             yyrule - 1, yylno);
2300 >             yyrule - 1, yylno);
2301    /* The symbols being reduced.  */
2302    for (yyi = 0; yyi < yynrhs; yyi++)
2303      {
2304        YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2305 <      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2306 <                       &(yyvsp[(yyi + 1) - (yynrhs)])
2307 <                                       );
2305 >      yy_symbol_print (stderr,
2306 >                       yystos[yyssp[yyi + 1 - yynrhs]],
2307 >                       &(yyvsp[(yyi + 1) - (yynrhs)])
2308 >                                              );
2309        YYFPRINTF (stderr, "\n");
2310      }
2311   }
2312  
2313 < # define YY_REDUCE_PRINT(Rule)          \
2314 < do {                                    \
2315 <  if (yydebug)                          \
2316 <    yy_reduce_print (yyvsp, Rule); \
2317 < } while (YYID (0))
2313 > # define YY_REDUCE_PRINT(Rule)          \
2314 > do {                                    \
2315 >  if (yydebug)                          \
2316 >    yy_reduce_print (yyssp, yyvsp, Rule); \
2317 > } while (0)
2318  
2319   /* Nonzero means print parse trace.  It is left uninitialized so that
2320     multiple parsers can coexist.  */
# Line 2781 | Line 2328 | int yydebug;
2328  
2329  
2330   /* YYINITDEPTH -- initial size of the parser's stacks.  */
2331 < #ifndef YYINITDEPTH
2331 > #ifndef YYINITDEPTH
2332   # define YYINITDEPTH 200
2333   #endif
2334  
# Line 2796 | Line 2343 | int yydebug;
2343   # define YYMAXDEPTH 10000
2344   #endif
2345  
2799
2346  
2347   #if YYERROR_VERBOSE
2348  
# Line 2805 | Line 2351 | int yydebug;
2351   #   define yystrlen strlen
2352   #  else
2353   /* Return the length of YYSTR.  */
2808 #if (defined __STDC__ || defined __C99__FUNC__ \
2809     || defined __cplusplus || defined _MSC_VER)
2354   static YYSIZE_T
2355   yystrlen (const char *yystr)
2812 #else
2813 static YYSIZE_T
2814 yystrlen (yystr)
2815    const char *yystr;
2816 #endif
2356   {
2357    YYSIZE_T yylen;
2358    for (yylen = 0; yystr[yylen]; yylen++)
# Line 2829 | Line 2368 | yystrlen (yystr)
2368   #  else
2369   /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2370     YYDEST.  */
2832 #if (defined __STDC__ || defined __C99__FUNC__ \
2833     || defined __cplusplus || defined _MSC_VER)
2371   static char *
2372   yystpcpy (char *yydest, const char *yysrc)
2836 #else
2837 static char *
2838 yystpcpy (yydest, yysrc)
2839    char *yydest;
2840    const char *yysrc;
2841 #endif
2373   {
2374    char *yyd = yydest;
2375    const char *yys = yysrc;
# Line 2868 | Line 2399 | yytnamerr (char *yyres, const char *yyst
2399        char const *yyp = yystr;
2400  
2401        for (;;)
2402 <        switch (*++yyp)
2403 <          {
2404 <          case '\'':
2405 <          case ',':
2406 <            goto do_not_strip_quotes;
2407 <
2408 <          case '\\':
2409 <            if (*++yyp != '\\')
2410 <              goto do_not_strip_quotes;
2411 <            /* Fall through.  */
2412 <          default:
2413 <            if (yyres)
2414 <              yyres[yyn] = *yyp;
2415 <            yyn++;
2416 <            break;
2417 <
2418 <          case '"':
2419 <            if (yyres)
2420 <              yyres[yyn] = '\0';
2421 <            return yyn;
2422 <          }
2402 >        switch (*++yyp)
2403 >          {
2404 >          case '\'':
2405 >          case ',':
2406 >            goto do_not_strip_quotes;
2407 >
2408 >          case '\\':
2409 >            if (*++yyp != '\\')
2410 >              goto do_not_strip_quotes;
2411 >            /* Fall through.  */
2412 >          default:
2413 >            if (yyres)
2414 >              yyres[yyn] = *yyp;
2415 >            yyn++;
2416 >            break;
2417 >
2418 >          case '"':
2419 >            if (yyres)
2420 >              yyres[yyn] = '\0';
2421 >            return yyn;
2422 >          }
2423      do_not_strip_quotes: ;
2424      }
2425  
# Line 2899 | Line 2430 | yytnamerr (char *yyres, const char *yyst
2430   }
2431   # endif
2432  
2433 < /* Copy into YYRESULT an error message about the unexpected token
2434 <   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
2435 <   including the terminating null byte.  If YYRESULT is null, do not
2436 <   copy anything; just return the number of bytes that would be
2437 <   copied.  As a special case, return 0 if an ordinary "syntax error"
2438 <   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
2439 <   size calculation.  */
2440 < static YYSIZE_T
2441 < yysyntax_error (char *yyresult, int yystate, int yychar)
2433 > /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2434 >   about the unexpected token YYTOKEN for the state stack whose top is
2435 >   YYSSP.
2436 >
2437 >   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
2438 >   not large enough to hold the message.  In that case, also set
2439 >   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
2440 >   required number of bytes is too large to store.  */
2441 > static int
2442 > yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2443 >                yytype_int16 *yyssp, int yytoken)
2444   {
2445 <  int yyn = yypact[yystate];
2445 >  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2446 >  YYSIZE_T yysize = yysize0;
2447 >  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2448 >  /* Internationalized format string. */
2449 >  const char *yyformat = YY_NULLPTR;
2450 >  /* Arguments of yyformat. */
2451 >  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2452 >  /* Number of reported tokens (one for the "unexpected", one per
2453 >     "expected"). */
2454 >  int yycount = 0;
2455 >
2456 >  /* There are many possibilities here to consider:
2457 >     - If this state is a consistent state with a default action, then
2458 >       the only way this function was invoked is if the default action
2459 >       is an error action.  In that case, don't check for expected
2460 >       tokens because there are none.
2461 >     - The only way there can be no lookahead present (in yychar) is if
2462 >       this state is a consistent state with a default action.  Thus,
2463 >       detecting the absence of a lookahead is sufficient to determine
2464 >       that there is no unexpected or expected token to report.  In that
2465 >       case, just report a simple "syntax error".
2466 >     - Don't assume there isn't a lookahead just because this state is a
2467 >       consistent state with a default action.  There might have been a
2468 >       previous inconsistent state, consistent state with a non-default
2469 >       action, or user semantic action that manipulated yychar.
2470 >     - Of course, the expected token list depends on states to have
2471 >       correct lookahead information, and it depends on the parser not
2472 >       to perform extra reductions after fetching a lookahead from the
2473 >       scanner and before detecting a syntax error.  Thus, state merging
2474 >       (from LALR or IELR) and default reductions corrupt the expected
2475 >       token list.  However, the list is correct for canonical LR with
2476 >       one exception: it will still contain any token that will not be
2477 >       accepted due to an error action in a later state.
2478 >  */
2479 >  if (yytoken != YYEMPTY)
2480 >    {
2481 >      int yyn = yypact[*yyssp];
2482 >      yyarg[yycount++] = yytname[yytoken];
2483 >      if (!yypact_value_is_default (yyn))
2484 >        {
2485 >          /* Start YYX at -YYN if negative to avoid negative indexes in
2486 >             YYCHECK.  In other words, skip the first -YYN actions for
2487 >             this state because they are default actions.  */
2488 >          int yyxbegin = yyn < 0 ? -yyn : 0;
2489 >          /* Stay within bounds of both yycheck and yytname.  */
2490 >          int yychecklim = YYLAST - yyn + 1;
2491 >          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2492 >          int yyx;
2493 >
2494 >          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2495 >            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2496 >                && !yytable_value_is_error (yytable[yyx + yyn]))
2497 >              {
2498 >                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2499 >                  {
2500 >                    yycount = 1;
2501 >                    yysize = yysize0;
2502 >                    break;
2503 >                  }
2504 >                yyarg[yycount++] = yytname[yyx];
2505 >                {
2506 >                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2507 >                  if (! (yysize <= yysize1
2508 >                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2509 >                    return 2;
2510 >                  yysize = yysize1;
2511 >                }
2512 >              }
2513 >        }
2514 >    }
2515  
2516 <  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
2915 <    return 0;
2916 <  else
2516 >  switch (yycount)
2517      {
2518 <      int yytype = YYTRANSLATE (yychar);
2519 <      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2520 <      YYSIZE_T yysize = yysize0;
2521 <      YYSIZE_T yysize1;
2522 <      int yysize_overflow = 0;
2523 <      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2524 <      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2525 <      int yyx;
2526 <
2527 < # if 0
2528 <      /* This is so xgettext sees the translatable formats that are
2529 <         constructed on the fly.  */
2530 <      YY_("syntax error, unexpected %s");
2531 <      YY_("syntax error, unexpected %s, expecting %s");
2532 <      YY_("syntax error, unexpected %s, expecting %s or %s");
2533 <      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2534 <      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2535 < # endif
2536 <      char *yyfmt;
2537 <      char const *yyf;
2538 <      static char const yyunexpected[] = "syntax error, unexpected %s";
2539 <      static char const yyexpecting[] = ", expecting %s";
2540 <      static char const yyor[] = " or %s";
2541 <      char yyformat[sizeof yyunexpected
2542 <                    + sizeof yyexpecting - 1
2543 <                    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2544 <                       * (sizeof yyor - 1))];
2945 <      char const *yyprefix = yyexpecting;
2946 <
2947 <      /* Start YYX at -YYN if negative to avoid negative indexes in
2948 <         YYCHECK.  */
2949 <      int yyxbegin = yyn < 0 ? -yyn : 0;
2950 <
2951 <      /* Stay within bounds of both yycheck and yytname.  */
2952 <      int yychecklim = YYLAST - yyn + 1;
2953 <      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2954 <      int yycount = 1;
2955 <
2956 <      yyarg[0] = yytname[yytype];
2957 <      yyfmt = yystpcpy (yyformat, yyunexpected);
2958 <
2959 <      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2960 <        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2961 <          {
2962 <            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2963 <              {
2964 <                yycount = 1;
2965 <                yysize = yysize0;
2966 <                yyformat[sizeof yyunexpected - 1] = '\0';
2967 <                break;
2968 <              }
2969 <            yyarg[yycount++] = yytname[yyx];
2970 <            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2971 <            yysize_overflow |= (yysize1 < yysize);
2972 <            yysize = yysize1;
2973 <            yyfmt = yystpcpy (yyfmt, yyprefix);
2974 <            yyprefix = yyor;
2975 <          }
2976 <
2977 <      yyf = YY_(yyformat);
2978 <      yysize1 = yysize + yystrlen (yyf);
2979 <      yysize_overflow |= (yysize1 < yysize);
2980 <      yysize = yysize1;
2981 <
2982 <      if (yysize_overflow)
2983 <        return YYSIZE_MAXIMUM;
2984 <
2985 <      if (yyresult)
2986 <        {
2987 <          /* Avoid sprintf, as that infringes on the user's name space.
2988 <             Don't have undefined behavior even if the translation
2989 <             produced a string with the wrong number of "%s"s.  */
2990 <          char *yyp = yyresult;
2991 <          int yyi = 0;
2992 <          while ((*yyp = *yyf) != '\0')
2993 <            {
2994 <              if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2995 <                {
2996 <                  yyp += yytnamerr (yyp, yyarg[yyi++]);
2997 <                  yyf += 2;
2998 <                }
2999 <              else
3000 <                {
3001 <                  yyp++;
3002 <                  yyf++;
3003 <                }
3004 <            }
3005 <        }
3006 <      return yysize;
2518 > # define YYCASE_(N, S)                      \
2519 >      case N:                               \
2520 >        yyformat = S;                       \
2521 >      break
2522 >      YYCASE_(0, YY_("syntax error"));
2523 >      YYCASE_(1, YY_("syntax error, unexpected %s"));
2524 >      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2525 >      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2526 >      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2527 >      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2528 > # undef YYCASE_
2529 >    }
2530 >
2531 >  {
2532 >    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2533 >    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2534 >      return 2;
2535 >    yysize = yysize1;
2536 >  }
2537 >
2538 >  if (*yymsg_alloc < yysize)
2539 >    {
2540 >      *yymsg_alloc = 2 * yysize;
2541 >      if (! (yysize <= *yymsg_alloc
2542 >             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2543 >        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2544 >      return 1;
2545      }
2546 +
2547 +  /* Avoid sprintf, as that infringes on the user's name space.
2548 +     Don't have undefined behavior even if the translation
2549 +     produced a string with the wrong number of "%s"s.  */
2550 +  {
2551 +    char *yyp = *yymsg;
2552 +    int yyi = 0;
2553 +    while ((*yyp = *yyformat) != '\0')
2554 +      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2555 +        {
2556 +          yyp += yytnamerr (yyp, yyarg[yyi++]);
2557 +          yyformat += 2;
2558 +        }
2559 +      else
2560 +        {
2561 +          yyp++;
2562 +          yyformat++;
2563 +        }
2564 +  }
2565 +  return 0;
2566   }
2567   #endif /* YYERROR_VERBOSE */
3010
2568  
2569   /*-----------------------------------------------.
2570   | Release the memory associated to this symbol.  |
2571   `-----------------------------------------------*/
2572  
3016 /*ARGSUSED*/
3017 #if (defined __STDC__ || defined __C99__FUNC__ \
3018     || defined __cplusplus || defined _MSC_VER)
2573   static void
2574   yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3021 #else
3022 static void
3023 yydestruct (yymsg, yytype, yyvaluep)
3024    const char *yymsg;
3025    int yytype;
3026    YYSTYPE *yyvaluep;
3027 #endif
2575   {
2576    YYUSE (yyvaluep);
3030
2577    if (!yymsg)
2578      yymsg = "Deleting";
2579    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2580  
2581 <  switch (yytype)
2582 <    {
2583 <
3038 <      default:
3039 <        break;
3040 <    }
2581 >  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2582 >  YYUSE (yytype);
2583 >  YY_IGNORE_MAYBE_UNINITIALIZED_END
2584   }
2585  
2586 < /* Prevent warnings from -Wmissing-prototypes.  */
3044 < #ifdef YYPARSE_PARAM
3045 < #if defined __STDC__ || defined __cplusplus
3046 < int yyparse (void *YYPARSE_PARAM);
3047 < #else
3048 < int yyparse ();
3049 < #endif
3050 < #else /* ! YYPARSE_PARAM */
3051 < #if defined __STDC__ || defined __cplusplus
3052 < int yyparse (void);
3053 < #else
3054 < int yyparse ();
3055 < #endif
3056 < #endif /* ! YYPARSE_PARAM */
2586 >
2587  
2588  
2589   /* The lookahead symbol.  */
# Line 3061 | Line 2591 | int yychar;
2591  
2592   /* The semantic value of the lookahead symbol.  */
2593   YYSTYPE yylval;
3064
2594   /* Number of syntax errors so far.  */
2595   int yynerrs;
2596  
2597  
2598 + /*----------.
2599 + | yyparse.  |
2600 + `----------*/
2601  
3070 /*-------------------------.
3071 | yyparse or yypush_parse.  |
3072 `-------------------------*/
3073
3074 #ifdef YYPARSE_PARAM
3075 #if (defined __STDC__ || defined __C99__FUNC__ \
3076     || defined __cplusplus || defined _MSC_VER)
3077 int
3078 yyparse (void *YYPARSE_PARAM)
3079 #else
3080 int
3081 yyparse (YYPARSE_PARAM)
3082    void *YYPARSE_PARAM;
3083 #endif
3084 #else /* ! YYPARSE_PARAM */
3085 #if (defined __STDC__ || defined __C99__FUNC__ \
3086     || defined __cplusplus || defined _MSC_VER)
2602   int
2603   yyparse (void)
3089 #else
3090 int
3091 yyparse ()
3092
3093 #endif
3094 #endif
2604   {
3096
3097
2605      int yystate;
2606      /* Number of tokens to shift before error messages enabled.  */
2607      int yyerrstatus;
2608  
2609      /* The stacks and their tools:
2610 <       `yyss': related to states.
2611 <       `yyvs': related to semantic values.
2610 >       'yyss': related to states.
2611 >       'yyvs': related to semantic values.
2612  
2613 <       Refer to the stacks thru separate pointers, to allow yyoverflow
2613 >       Refer to the stacks through separate pointers, to allow yyoverflow
2614         to reallocate them elsewhere.  */
2615  
2616      /* The state stack.  */
# Line 3121 | Line 2628 | yyparse ()
2628    int yyn;
2629    int yyresult;
2630    /* Lookahead token as an internal (translated) token number.  */
2631 <  int yytoken;
2631 >  int yytoken = 0;
2632    /* The variables used to return semantic value and location from the
2633       action routines.  */
2634    YYSTYPE yyval;
# Line 3139 | Line 2646 | yyparse ()
2646       Keep to zero when no symbol should be popped.  */
2647    int yylen = 0;
2648  
2649 <  yytoken = 0;
2650 <  yyss = yyssa;
3144 <  yyvs = yyvsa;
2649 >  yyssp = yyss = yyssa;
2650 >  yyvsp = yyvs = yyvsa;
2651    yystacksize = YYINITDEPTH;
2652  
2653    YYDPRINTF ((stderr, "Starting parse\n"));
# Line 3150 | Line 2656 | yyparse ()
2656    yyerrstatus = 0;
2657    yynerrs = 0;
2658    yychar = YYEMPTY; /* Cause a token to be read.  */
3153
3154  /* Initialize stack pointers.
3155     Waste one element of value and location stack
3156     so that they stay on the same level as the state stack.
3157     The wasted elements are never initialized.  */
3158  yyssp = yyss;
3159  yyvsp = yyvs;
3160
2659    goto yysetstate;
2660  
2661   /*------------------------------------------------------------.
# Line 3178 | Line 2676 | yyparse ()
2676  
2677   #ifdef yyoverflow
2678        {
2679 <        /* Give user a chance to reallocate the stack.  Use copies of
2680 <           these so that the &'s don't force the real ones into
2681 <           memory.  */
2682 <        YYSTYPE *yyvs1 = yyvs;
2683 <        yytype_int16 *yyss1 = yyss;
2684 <
2685 <        /* Each stack pointer address is followed by the size of the
2686 <           data in use in that stack, in bytes.  This used to be a
2687 <           conditional around just the two extra args, but that might
2688 <           be undefined if yyoverflow is a macro.  */
2689 <        yyoverflow (YY_("memory exhausted"),
2690 <                    &yyss1, yysize * sizeof (*yyssp),
2691 <                    &yyvs1, yysize * sizeof (*yyvsp),
2692 <                    &yystacksize);
2679 >        /* Give user a chance to reallocate the stack.  Use copies of
2680 >           these so that the &'s don't force the real ones into
2681 >           memory.  */
2682 >        YYSTYPE *yyvs1 = yyvs;
2683 >        yytype_int16 *yyss1 = yyss;
2684 >
2685 >        /* Each stack pointer address is followed by the size of the
2686 >           data in use in that stack, in bytes.  This used to be a
2687 >           conditional around just the two extra args, but that might
2688 >           be undefined if yyoverflow is a macro.  */
2689 >        yyoverflow (YY_("memory exhausted"),
2690 >                    &yyss1, yysize * sizeof (*yyssp),
2691 >                    &yyvs1, yysize * sizeof (*yyvsp),
2692 >                    &yystacksize);
2693  
2694 <        yyss = yyss1;
2695 <        yyvs = yyvs1;
2694 >        yyss = yyss1;
2695 >        yyvs = yyvs1;
2696        }
2697   #else /* no yyoverflow */
2698   # ifndef YYSTACK_RELOCATE
# Line 3202 | Line 2700 | yyparse ()
2700   # else
2701        /* Extend the stack our own way.  */
2702        if (YYMAXDEPTH <= yystacksize)
2703 <        goto yyexhaustedlab;
2703 >        goto yyexhaustedlab;
2704        yystacksize *= 2;
2705        if (YYMAXDEPTH < yystacksize)
2706 <        yystacksize = YYMAXDEPTH;
2706 >        yystacksize = YYMAXDEPTH;
2707  
2708        {
2709 <        yytype_int16 *yyss1 = yyss;
2710 <        union yyalloc *yyptr =
2711 <          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2712 <        if (! yyptr)
2713 <          goto yyexhaustedlab;
2714 <        YYSTACK_RELOCATE (yyss_alloc, yyss);
2715 <        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2709 >        yytype_int16 *yyss1 = yyss;
2710 >        union yyalloc *yyptr =
2711 >          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2712 >        if (! yyptr)
2713 >          goto yyexhaustedlab;
2714 >        YYSTACK_RELOCATE (yyss_alloc, yyss);
2715 >        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2716   #  undef YYSTACK_RELOCATE
2717 <        if (yyss1 != yyssa)
2718 <          YYSTACK_FREE (yyss1);
2717 >        if (yyss1 != yyssa)
2718 >          YYSTACK_FREE (yyss1);
2719        }
2720   # endif
2721   #endif /* no yyoverflow */
# Line 3226 | Line 2724 | yyparse ()
2724        yyvsp = yyvs + yysize - 1;
2725  
2726        YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2727 <                  (unsigned long int) yystacksize));
2727 >                  (unsigned long int) yystacksize));
2728  
2729        if (yyss + yystacksize - 1 <= yyssp)
2730 <        YYABORT;
2730 >        YYABORT;
2731      }
2732  
2733    YYDPRINTF ((stderr, "Entering state %d\n", yystate));
# Line 3249 | Line 2747 | yybackup:
2747  
2748    /* First try to decide what to do without reference to lookahead token.  */
2749    yyn = yypact[yystate];
2750 <  if (yyn == YYPACT_NINF)
2750 >  if (yypact_value_is_default (yyn))
2751      goto yydefault;
2752  
2753    /* Not known => get a lookahead token if don't already have one.  */
# Line 3258 | Line 2756 | yybackup:
2756    if (yychar == YYEMPTY)
2757      {
2758        YYDPRINTF ((stderr, "Reading a token: "));
2759 <      yychar = YYLEX;
2759 >      yychar = yylex ();
2760      }
2761  
2762    if (yychar <= YYEOF)
# Line 3280 | Line 2778 | yybackup:
2778    yyn = yytable[yyn];
2779    if (yyn <= 0)
2780      {
2781 <      if (yyn == 0 || yyn == YYTABLE_NINF)
2782 <        goto yyerrlab;
2781 >      if (yytable_value_is_error (yyn))
2782 >        goto yyerrlab;
2783        yyn = -yyn;
2784        goto yyreduce;
2785      }
# Line 3298 | Line 2796 | yybackup:
2796    yychar = YYEMPTY;
2797  
2798    yystate = yyn;
2799 +  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2800    *++yyvsp = yylval;
2801 +  YY_IGNORE_MAYBE_UNINITIALIZED_END
2802  
2803    goto yynewstate;
2804  
# Line 3321 | Line 2821 | yyreduce:
2821    yylen = yyr2[yyn];
2822  
2823    /* If YYLEN is nonzero, implement the default value of the action:
2824 <     `$$ = $1'.
2824 >     '$$ = $1'.
2825  
2826       Otherwise, the following line sets YYVAL to garbage.
2827       This behavior is undocumented and Bison
# Line 3334 | Line 2834 | yyreduce:
2834    YY_REDUCE_PRINT (yyn);
2835    switch (yyn)
2836      {
2837 <        case 26:
2838 <
3339 < /* Line 1464 of yacc.c  */
3340 < #line 424 "ircd_parser.y"
2837 >        case 27:
2838 > #line 408 "conf_parser.y" /* yacc.c:1646  */
2839      { (yyval.number) = 0; }
2840 <    break;
3343 <
3344 <  case 28:
3345 <
3346 < /* Line 1464 of yacc.c  */
3347 < #line 426 "ircd_parser.y"
3348 <    {
3349 <                        (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3350 <                }
2840 > #line 2841 "conf_parser.c" /* yacc.c:1646  */
2841      break;
2842  
2843    case 29:
2844 <
2845 < /* Line 1464 of yacc.c  */
2846 < #line 430 "ircd_parser.y"
3357 <    {
3358 <                        (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3359 <                }
2844 > #line 409 "conf_parser.y" /* yacc.c:1646  */
2845 >    { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2846 > #line 2847 "conf_parser.c" /* yacc.c:1646  */
2847      break;
2848  
2849    case 30:
2850 <
2851 < /* Line 1464 of yacc.c  */
2852 < #line 434 "ircd_parser.y"
3366 <    {
3367 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3368 <                }
2850 > #line 410 "conf_parser.y" /* yacc.c:1646  */
2851 >    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2852 > #line 2853 "conf_parser.c" /* yacc.c:1646  */
2853      break;
2854  
2855    case 31:
2856 <
2857 < /* Line 1464 of yacc.c  */
2858 < #line 438 "ircd_parser.y"
3375 <    {
3376 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3377 <                }
2856 > #line 411 "conf_parser.y" /* yacc.c:1646  */
2857 >    { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2858 > #line 2859 "conf_parser.c" /* yacc.c:1646  */
2859      break;
2860  
2861    case 32:
2862 <
2863 < /* Line 1464 of yacc.c  */
2864 < #line 442 "ircd_parser.y"
3384 <    {
3385 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3386 <                }
2862 > #line 412 "conf_parser.y" /* yacc.c:1646  */
2863 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2864 > #line 2865 "conf_parser.c" /* yacc.c:1646  */
2865      break;
2866  
2867    case 33:
2868 <
2869 < /* Line 1464 of yacc.c  */
2870 < #line 446 "ircd_parser.y"
3393 <    {
3394 <                        (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3395 <                }
2868 > #line 413 "conf_parser.y" /* yacc.c:1646  */
2869 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2870 > #line 2871 "conf_parser.c" /* yacc.c:1646  */
2871      break;
2872  
2873    case 34:
2874 + #line 414 "conf_parser.y" /* yacc.c:1646  */
2875 +    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2876 + #line 2877 "conf_parser.c" /* yacc.c:1646  */
2877 +    break;
2878  
2879 < /* Line 1464 of yacc.c  */
2880 < #line 451 "ircd_parser.y"
2881 <    { (yyval.number) = 0; }
2879 >  case 35:
2880 > #line 415 "conf_parser.y" /* yacc.c:1646  */
2881 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2882 > #line 2883 "conf_parser.c" /* yacc.c:1646  */
2883      break;
2884  
2885    case 36:
2886 <
2887 < /* Line 1464 of yacc.c  */
2888 < #line 452 "ircd_parser.y"
3409 <    { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
2886 > #line 416 "conf_parser.y" /* yacc.c:1646  */
2887 >    { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2888 > #line 2889 "conf_parser.c" /* yacc.c:1646  */
2889      break;
2890  
2891    case 37:
2892 <
2893 < /* Line 1464 of yacc.c  */
2894 < #line 453 "ircd_parser.y"
3416 <    { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
2892 > #line 419 "conf_parser.y" /* yacc.c:1646  */
2893 >    { (yyval.number) = 0; }
2894 > #line 2895 "conf_parser.c" /* yacc.c:1646  */
2895      break;
2896  
2897 <  case 38:
2898 <
2899 < /* Line 1464 of yacc.c  */
2900 < #line 454 "ircd_parser.y"
3423 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
2897 >  case 39:
2898 > #line 420 "conf_parser.y" /* yacc.c:1646  */
2899 >    { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2900 > #line 2901 "conf_parser.c" /* yacc.c:1646  */
2901      break;
2902  
2903 <  case 39:
2903 >  case 40:
2904 > #line 421 "conf_parser.y" /* yacc.c:1646  */
2905 >    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2906 > #line 2907 "conf_parser.c" /* yacc.c:1646  */
2907 >    break;
2908  
2909 < /* Line 1464 of yacc.c  */
2910 < #line 455 "ircd_parser.y"
2911 <    { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
2909 >  case 41:
2910 > #line 422 "conf_parser.y" /* yacc.c:1646  */
2911 >    { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2912 > #line 2913 "conf_parser.c" /* yacc.c:1646  */
2913      break;
2914  
2915 <  case 46:
2915 >  case 42:
2916 > #line 423 "conf_parser.y" /* yacc.c:1646  */
2917 >    { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2918 > #line 2919 "conf_parser.c" /* yacc.c:1646  */
2919 >    break;
2920  
2921 < /* Line 1464 of yacc.c  */
2922 < #line 469 "ircd_parser.y"
2921 >  case 49:
2922 > #line 437 "conf_parser.y" /* yacc.c:1646  */
2923      {
3438 #ifndef STATIC_MODULES /* NOOP in the static case */
2924    if (conf_parser_ctx.pass == 2)
2925      add_conf_module(libio_basename(yylval.string));
3441 #endif
2926   }
2927 + #line 2928 "conf_parser.c" /* yacc.c:1646  */
2928      break;
2929  
2930 <  case 47:
2931 <
3447 < /* Line 1464 of yacc.c  */
3448 < #line 477 "ircd_parser.y"
2930 >  case 50:
2931 > #line 443 "conf_parser.y" /* yacc.c:1646  */
2932      {
3450 #ifndef STATIC_MODULES
2933    if (conf_parser_ctx.pass == 2)
2934      mod_add_path(yylval.string);
3453 #endif
2935   }
2936 + #line 2937 "conf_parser.c" /* yacc.c:1646  */
2937      break;
2938  
2939 <  case 64:
2940 <
3459 < /* Line 1464 of yacc.c  */
3460 < #line 499 "ircd_parser.y"
2939 >  case 76:
2940 > #line 477 "conf_parser.y" /* yacc.c:1646  */
2941      {
2942   #ifdef HAVE_LIBCRYPTO
2943 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2944 <    ServerInfo.tls_version = 0;
2943 >  if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
2944 >    SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
2945   #endif
2946   }
2947 + #line 2948 "conf_parser.c" /* yacc.c:1646  */
2948      break;
2949  
2950 <  case 65:
2951 <
3471 < /* Line 1464 of yacc.c  */
3472 < #line 505 "ircd_parser.y"
2950 >  case 77:
2951 > #line 483 "conf_parser.y" /* yacc.c:1646  */
2952      {
2953   #ifdef HAVE_LIBCRYPTO
2954 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2955 <  {
3477 <    if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3478 <      SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3479 <    if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3480 <      SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3481 <  }
2954 >  if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
2955 >    SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
2956   #endif
2957   }
2958 + #line 2959 "conf_parser.c" /* yacc.c:1646  */
2959      break;
2960  
2961 <  case 68:
2962 <
3488 < /* Line 1464 of yacc.c  */
3489 < #line 519 "ircd_parser.y"
2961 >  case 80:
2962 > #line 492 "conf_parser.y" /* yacc.c:1646  */
2963      {
2964   #ifdef HAVE_LIBCRYPTO
2965 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2966 <    ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
2965 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
2966 >    SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
2967   #endif
2968   }
2969 + #line 2970 "conf_parser.c" /* yacc.c:1646  */
2970      break;
2971  
2972 <  case 69:
2973 <
3500 < /* Line 1464 of yacc.c  */
3501 < #line 525 "ircd_parser.y"
2972 >  case 81:
2973 > #line 498 "conf_parser.y" /* yacc.c:1646  */
2974      {
2975   #ifdef HAVE_LIBCRYPTO
2976 <  if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
2977 <    ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
2976 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
2977 >    SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
2978   #endif
2979   }
2980 + #line 2981 "conf_parser.c" /* yacc.c:1646  */
2981      break;
2982  
2983 <  case 70:
2984 <
3512 < /* Line 1464 of yacc.c  */
3513 < #line 533 "ircd_parser.y"
2983 >  case 82:
2984 > #line 506 "conf_parser.y" /* yacc.c:1646  */
2985      {
2986   #ifdef HAVE_LIBCRYPTO
2987 <  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
2987 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
2988    {
2989      if (!ServerInfo.rsa_private_key_file)
2990      {
2991 <      yyerror("No rsa_private_key_file specified, SSL disabled");
2991 >      conf_error_report("No rsa_private_key_file specified, SSL disabled");
2992        break;
2993      }
2994  
2995      if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
2996 +                                     SSL_FILETYPE_PEM) <= 0 ||
2997 +        SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
2998                                       SSL_FILETYPE_PEM) <= 0)
2999      {
3000 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3000 >      report_crypto_errors();
3001 >      conf_error_report("Could not open/read certificate file");
3002        break;
3003      }
3004  
3005      if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3006 +                                    SSL_FILETYPE_PEM) <= 0 ||
3007 +        SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3008                                      SSL_FILETYPE_PEM) <= 0)
3009      {
3010 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3010 >      report_crypto_errors();
3011 >      conf_error_report("Could not read RSA private key");
3012        break;
3013      }
3014  
3015 <    if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3015 >    if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3016 >        !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3017      {
3018 <      yyerror(ERR_lib_error_string(ERR_get_error()));
3018 >      report_crypto_errors();
3019 >      conf_error_report("Could not read RSA private key");
3020        break;
3021      }
3022    }
3023   #endif
3024   }
3025 + #line 3026 "conf_parser.c" /* yacc.c:1646  */
3026      break;
3027  
3028 <  case 71:
3029 <
3550 < /* Line 1464 of yacc.c  */
3551 < #line 567 "ircd_parser.y"
3028 >  case 83:
3029 > #line 548 "conf_parser.y" /* yacc.c:1646  */
3030      {
3031   #ifdef HAVE_LIBCRYPTO
3032 <  if (conf_parser_ctx.pass == 1)
3032 >  BIO *file = NULL;
3033 >
3034 >  if (conf_parser_ctx.pass != 1)
3035 >    break;
3036 >
3037 >  if (ServerInfo.rsa_private_key)
3038    {
3039 <    BIO *file;
3039 >    RSA_free(ServerInfo.rsa_private_key);
3040 >    ServerInfo.rsa_private_key = NULL;
3041 >  }
3042  
3043 <    if (ServerInfo.rsa_private_key)
3044 <    {
3045 <      RSA_free(ServerInfo.rsa_private_key);
3046 <      ServerInfo.rsa_private_key = NULL;
3047 <    }
3043 >  if (ServerInfo.rsa_private_key_file)
3044 >  {
3045 >    MyFree(ServerInfo.rsa_private_key_file);
3046 >    ServerInfo.rsa_private_key_file = NULL;
3047 >  }
3048  
3049 <    if (ServerInfo.rsa_private_key_file)
3565 <    {
3566 <      MyFree(ServerInfo.rsa_private_key_file);
3567 <      ServerInfo.rsa_private_key_file = NULL;
3568 <    }
3049 >  ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3050  
3051 <    DupString(ServerInfo.rsa_private_key_file, yylval.string);
3051 >  if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3052 >  {
3053 >    conf_error_report("File open failed, ignoring");
3054 >    break;
3055 >  }
3056  
3057 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3573 <    {
3574 <      yyerror("File open failed, ignoring");
3575 <      break;
3576 <    }
3057 >  ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3058  
3059 <    ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3060 <      0, NULL);
3059 >  BIO_set_close(file, BIO_CLOSE);
3060 >  BIO_free(file);
3061 >
3062 >  if (ServerInfo.rsa_private_key == NULL)
3063 >  {
3064 >    conf_error_report("Couldn't extract key, ignoring");
3065 >    break;
3066 >  }
3067  
3068 <    BIO_set_close(file, BIO_CLOSE);
3069 <    BIO_free(file);
3068 >  if (!RSA_check_key(ServerInfo.rsa_private_key))
3069 >  {
3070 >    RSA_free(ServerInfo.rsa_private_key);
3071 >    ServerInfo.rsa_private_key = NULL;
3072  
3073 <    if (ServerInfo.rsa_private_key == NULL)
3073 >    conf_error_report("Invalid key, ignoring");
3074 >    break;
3075 >  }
3076 >
3077 >  if (RSA_size(ServerInfo.rsa_private_key) < 128)
3078 >  {
3079 >    RSA_free(ServerInfo.rsa_private_key);
3080 >    ServerInfo.rsa_private_key = NULL;
3081 >
3082 >    conf_error_report("Ignoring serverinfo::rsa_private_key_file -- need at least a 1024 bit key size");
3083 >  }
3084 > #endif
3085 > }
3086 > #line 3087 "conf_parser.c" /* yacc.c:1646  */
3087 >    break;
3088 >
3089 >  case 84:
3090 > #line 606 "conf_parser.y" /* yacc.c:1646  */
3091      {
3092 <      yyerror("Couldn't extract key, ignoring");
3093 <      break;
3094 <    }
3092 > /* TBD - XXX: error reporting */
3093 > #ifdef HAVE_LIBCRYPTO
3094 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3095 >  {
3096 >    BIO *file = BIO_new_file(yylval.string, "r");
3097  
3098 <    if (!RSA_check_key(ServerInfo.rsa_private_key))
3098 >    if (file)
3099      {
3100 <      RSA_free(ServerInfo.rsa_private_key);
3593 <      ServerInfo.rsa_private_key = NULL;
3100 >      DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3101  
3102 <      yyerror("Invalid key, ignoring");
3596 <      break;
3597 <    }
3102 >      BIO_free(file);
3103  
3104 <    /* require 2048 bit (256 byte) key */
3105 <    if (RSA_size(ServerInfo.rsa_private_key) != 256)
3106 <    {
3107 <      RSA_free(ServerInfo.rsa_private_key);
3108 <      ServerInfo.rsa_private_key = NULL;
3104 >      if (dh)
3105 >      {
3106 >        if (DH_size(dh) < 128)
3107 >          conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3108 >        else
3109 >          SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3110  
3111 <      yyerror("Not a 2048 bit key, ignoring");
3111 >        DH_free(dh);
3112 >      }
3113      }
3114    }
3115   #endif
3116   }
3117 + #line 3118 "conf_parser.c" /* yacc.c:1646  */
3118      break;
3119  
3120 <  case 72:
3120 >  case 85:
3121 > #line 634 "conf_parser.y" /* yacc.c:1646  */
3122 >    {
3123 > #ifdef HAVE_LIBCRYPTO
3124 >  if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3125 >    SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3126 > #endif
3127 > }
3128 > #line 3129 "conf_parser.c" /* yacc.c:1646  */
3129 >    break;
3130  
3131 < /* Line 1464 of yacc.c  */
3132 < #line 627 "ircd_parser.y"
3131 >  case 86:
3132 > #line 642 "conf_parser.y" /* yacc.c:1646  */
3133      {
3134    /* this isn't rehashable */
3135    if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3136    {
3137      if (valid_servname(yylval.string))
3138 <      DupString(ServerInfo.name, yylval.string);
3138 >      ServerInfo.name = xstrdup(yylval.string);
3139      else
3140      {
3141 <      ilog(L_ERROR, "Ignoring serverinfo::name -- invalid name. Aborting.");
3141 >      conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3142        exit(0);
3143      }
3144    }
3145   }
3146 + #line 3147 "conf_parser.c" /* yacc.c:1646  */
3147      break;
3148  
3149 <  case 73:
3150 <
3633 < /* Line 1464 of yacc.c  */
3634 < #line 642 "ircd_parser.y"
3149 >  case 87:
3150 > #line 657 "conf_parser.y" /* yacc.c:1646  */
3151      {
3152    /* this isn't rehashable */
3153    if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3154    {
3155      if (valid_sid(yylval.string))
3156 <      DupString(ServerInfo.sid, yylval.string);
3156 >      ServerInfo.sid = xstrdup(yylval.string);
3157      else
3158      {
3159 <      ilog(L_ERROR, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3159 >      conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3160        exit(0);
3161      }
3162    }
3163   }
3164 + #line 3165 "conf_parser.c" /* yacc.c:1646  */
3165      break;
3166  
3167 <  case 74:
3168 <
3652 < /* Line 1464 of yacc.c  */
3653 < #line 657 "ircd_parser.y"
3167 >  case 88:
3168 > #line 672 "conf_parser.y" /* yacc.c:1646  */
3169      {
3170    if (conf_parser_ctx.pass == 2)
3171    {
3172      MyFree(ServerInfo.description);
3173 <    DupString(ServerInfo.description,yylval.string);
3173 >    ServerInfo.description = xstrdup(yylval.string);
3174    }
3175   }
3176 + #line 3177 "conf_parser.c" /* yacc.c:1646  */
3177      break;
3178  
3179 <  case 75:
3180 <
3665 < /* Line 1464 of yacc.c  */
3666 < #line 666 "ircd_parser.y"
3179 >  case 89:
3180 > #line 681 "conf_parser.y" /* yacc.c:1646  */
3181      {
3182    if (conf_parser_ctx.pass == 2)
3183    {
3184      char *p;
3185  
3186 <    if ((p = strchr(yylval.string, ' ')) != NULL)
3186 >    if ((p = strchr(yylval.string, ' ')))
3187        p = '\0';
3188  
3189      MyFree(ServerInfo.network_name);
3190 <    DupString(ServerInfo.network_name, yylval.string);
3190 >    ServerInfo.network_name = xstrdup(yylval.string);
3191    }
3192   }
3193 + #line 3194 "conf_parser.c" /* yacc.c:1646  */
3194      break;
3195  
3196 <  case 76:
3197 <
3683 < /* Line 1464 of yacc.c  */
3684 < #line 680 "ircd_parser.y"
3196 >  case 90:
3197 > #line 695 "conf_parser.y" /* yacc.c:1646  */
3198      {
3199 <  if (conf_parser_ctx.pass == 2)
3687 <  {
3688 <    MyFree(ServerInfo.network_desc);
3689 <    DupString(ServerInfo.network_desc, yylval.string);
3690 <  }
3691 < }
3199 >  if (conf_parser_ctx.pass != 2)
3200      break;
3201  
3202 <  case 77:
3202 >  MyFree(ServerInfo.network_desc);
3203 >  ServerInfo.network_desc = xstrdup(yylval.string);
3204 > }
3205 > #line 3206 "conf_parser.c" /* yacc.c:1646  */
3206 >    break;
3207  
3208 < /* Line 1464 of yacc.c  */
3209 < #line 689 "ircd_parser.y"
3208 >  case 91:
3209 > #line 704 "conf_parser.y" /* yacc.c:1646  */
3210      {
3211    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3212    {
# Line 3706 | Line 3218 | yyreduce:
3218      hints.ai_socktype = SOCK_STREAM;
3219      hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
3220  
3221 <    if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3222 <      ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3221 >    if (getaddrinfo(yylval.string, NULL, &hints, &res))
3222 >      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3223      else
3224      {
3225 <      assert(res != NULL);
3225 >      assert(res);
3226  
3227        memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3228        ServerInfo.ip.ss.ss_family = res->ai_family;
3229        ServerInfo.ip.ss_len = res->ai_addrlen;
3230 <      irc_freeaddrinfo(res);
3230 >      freeaddrinfo(res);
3231  
3232        ServerInfo.specific_ipv4_vhost = 1;
3233      }
3234    }
3235   }
3236 + #line 3237 "conf_parser.c" /* yacc.c:1646  */
3237      break;
3238  
3239 <  case 78:
3240 <
3728 < /* Line 1464 of yacc.c  */
3729 < #line 717 "ircd_parser.y"
3239 >  case 92:
3240 > #line 732 "conf_parser.y" /* yacc.c:1646  */
3241      {
3242   #ifdef IPV6
3243    if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
# Line 3739 | Line 3250 | yyreduce:
3250      hints.ai_socktype = SOCK_STREAM;
3251      hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
3252  
3253 <    if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3254 <      ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3253 >    if (getaddrinfo(yylval.string, NULL, &hints, &res))
3254 >      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3255      else
3256      {
3257 <      assert(res != NULL);
3257 >      assert(res);
3258  
3259        memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3260        ServerInfo.ip6.ss.ss_family = res->ai_family;
3261        ServerInfo.ip6.ss_len = res->ai_addrlen;
3262 <      irc_freeaddrinfo(res);
3262 >      freeaddrinfo(res);
3263  
3264        ServerInfo.specific_ipv6_vhost = 1;
3265      }
3266    }
3267   #endif
3268   }
3269 + #line 3270 "conf_parser.c" /* yacc.c:1646  */
3270      break;
3271  
3272 <  case 79:
3273 <
3762 < /* Line 1464 of yacc.c  */
3763 < #line 747 "ircd_parser.y"
3272 >  case 93:
3273 > #line 762 "conf_parser.y" /* yacc.c:1646  */
3274      {
3275 <  if (conf_parser_ctx.pass == 2)
3275 >  if (conf_parser_ctx.pass != 2)
3276 >    break;
3277 >
3278 >  if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3279    {
3280 <    recalc_fdlimit(NULL);
3280 >    char buf[IRCD_BUFSIZE] = "";
3281  
3282 <    if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3283 <    {
3284 <      char buf[IRCD_BUFSIZE];
3285 <      ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3286 <      yyerror(buf);
3287 <    }
3288 <    else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3289 <    {
3290 <      char buf[IRCD_BUFSIZE];
3291 <      ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3292 <      yyerror(buf);
3780 <    }
3781 <    else
3782 <      ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3282 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3283 >    conf_error_report(buf);
3284 >    ServerInfo.max_clients = MAXCLIENTS_MIN;
3285 >  }
3286 >  else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3287 >  {
3288 >    char buf[IRCD_BUFSIZE] = "";
3289 >
3290 >    snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3291 >    conf_error_report(buf);
3292 >    ServerInfo.max_clients = MAXCLIENTS_MAX;
3293    }
3294 +  else
3295 +    ServerInfo.max_clients = (yyvsp[-1].number);
3296   }
3297 + #line 3298 "conf_parser.c" /* yacc.c:1646  */
3298      break;
3299  
3300 <  case 80:
3301 <
3789 < /* Line 1464 of yacc.c  */
3790 < #line 770 "ircd_parser.y"
3300 >  case 94:
3301 > #line 787 "conf_parser.y" /* yacc.c:1646  */
3302      {
3303 <  if (conf_parser_ctx.pass == 2)
3793 <    ServerInfo.hub = yylval.number;
3794 < }
3303 >  if (conf_parser_ctx.pass != 2)
3304      break;
3305  
3306 <  case 88:
3798 <
3799 < /* Line 1464 of yacc.c  */
3800 < #line 785 "ircd_parser.y"
3801 <    {
3802 <  if (conf_parser_ctx.pass == 2)
3306 >  if ((yyvsp[-1].number) < 9)
3307    {
3308 <    MyFree(AdminInfo.name);
3309 <    DupString(AdminInfo.name, yylval.string);
3308 >    conf_error_report("max_nick_length too low, setting to 9");
3309 >    ServerInfo.max_nick_length = 9;
3310 >  }
3311 >  else if ((yyvsp[-1].number) > NICKLEN)
3312 >  {
3313 >    char buf[IRCD_BUFSIZE] = "";
3314 >
3315 >    snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3316 >    conf_error_report(buf);
3317 >    ServerInfo.max_nick_length = NICKLEN;
3318    }
3319 +  else
3320 +    ServerInfo.max_nick_length = (yyvsp[-1].number);
3321   }
3322 + #line 3323 "conf_parser.c" /* yacc.c:1646  */
3323      break;
3324  
3325 <  case 89:
3326 <
3812 < /* Line 1464 of yacc.c  */
3813 < #line 794 "ircd_parser.y"
3325 >  case 95:
3326 > #line 809 "conf_parser.y" /* yacc.c:1646  */
3327      {
3328 <  if (conf_parser_ctx.pass == 2)
3328 >  if (conf_parser_ctx.pass != 2)
3329 >    break;
3330 >
3331 >  if ((yyvsp[-1].number) < 80)
3332 >  {
3333 >    conf_error_report("max_topic_length too low, setting to 80");
3334 >    ServerInfo.max_topic_length = 80;
3335 >  }
3336 >  else if ((yyvsp[-1].number) > TOPICLEN)
3337    {
3338 <    MyFree(AdminInfo.email);
3339 <    DupString(AdminInfo.email, yylval.string);
3338 >    char buf[IRCD_BUFSIZE] = "";
3339 >
3340 >    snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3341 >    conf_error_report(buf);
3342 >    ServerInfo.max_topic_length = TOPICLEN;
3343    }
3344 +  else
3345 +    ServerInfo.max_topic_length = (yyvsp[-1].number);
3346   }
3347 + #line 3348 "conf_parser.c" /* yacc.c:1646  */
3348      break;
3349  
3350 <  case 90:
3351 <
3825 < /* Line 1464 of yacc.c  */
3826 < #line 803 "ircd_parser.y"
3350 >  case 96:
3351 > #line 831 "conf_parser.y" /* yacc.c:1646  */
3352      {
3353    if (conf_parser_ctx.pass == 2)
3354 <  {
3830 <    MyFree(AdminInfo.description);
3831 <    DupString(AdminInfo.description, yylval.string);
3832 <  }
3354 >    ServerInfo.hub = yylval.number;
3355   }
3356 + #line 3357 "conf_parser.c" /* yacc.c:1646  */
3357      break;
3358  
3359 <  case 107:
3360 <
3838 < /* Line 1464 of yacc.c  */
3839 < #line 830 "ircd_parser.y"
3359 >  case 104:
3360 > #line 848 "conf_parser.y" /* yacc.c:1646  */
3361      {
3362 <                        }
3362 >  if (conf_parser_ctx.pass != 2)
3363      break;
3364  
3365 <  case 108:
3365 >  MyFree(AdminInfo.name);
3366 >  AdminInfo.name = xstrdup(yylval.string);
3367 > }
3368 > #line 3369 "conf_parser.c" /* yacc.c:1646  */
3369 >    break;
3370  
3371 < /* Line 1464 of yacc.c  */
3372 < #line 834 "ircd_parser.y"
3371 >  case 105:
3372 > #line 857 "conf_parser.y" /* yacc.c:1646  */
3373      {
3374 <                        }
3374 >  if (conf_parser_ctx.pass != 2)
3375      break;
3376  
3377 <  case 109:
3377 >  MyFree(AdminInfo.email);
3378 >  AdminInfo.email = xstrdup(yylval.string);
3379 > }
3380 > #line 3381 "conf_parser.c" /* yacc.c:1646  */
3381 >    break;
3382  
3383 < /* Line 1464 of yacc.c  */
3384 < #line 838 "ircd_parser.y"
3383 >  case 106:
3384 > #line 866 "conf_parser.y" /* yacc.c:1646  */
3385      {
3386 <  if (conf_parser_ctx.pass == 2)
3858 <    strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3859 <            sizeof(ConfigLoggingEntry.userlog));
3860 < }
3386 >  if (conf_parser_ctx.pass != 2)
3387      break;
3388  
3389 <  case 110:
3389 >  MyFree(AdminInfo.description);
3390 >  AdminInfo.description = xstrdup(yylval.string);
3391 > }
3392 > #line 3393 "conf_parser.c" /* yacc.c:1646  */
3393 >    break;
3394  
3395 < /* Line 1464 of yacc.c  */
3396 < #line 845 "ircd_parser.y"
3395 >  case 107:
3396 > #line 878 "conf_parser.y" /* yacc.c:1646  */
3397      {
3398    if (conf_parser_ctx.pass == 2)
3399 <    strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
3870 <            sizeof(ConfigLoggingEntry.failed_operlog));
3399 >    reset_block_state();
3400   }
3401 + #line 3402 "conf_parser.c" /* yacc.c:1646  */
3402      break;
3403  
3404 <  case 111:
3404 >  case 108:
3405 > #line 882 "conf_parser.y" /* yacc.c:1646  */
3406 >    {
3407 >  dlink_node *ptr = NULL;
3408  
3409 < /* Line 1464 of yacc.c  */
3410 < #line 852 "ircd_parser.y"
3409 >  if (conf_parser_ctx.pass != 2)
3410 >    break;
3411 >
3412 >  if (!block_state.file.buf[0])
3413 >    break;
3414 >
3415 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3416 >    motd_add(ptr->data, block_state.file.buf);
3417 > }
3418 > #line 3419 "conf_parser.c" /* yacc.c:1646  */
3419 >    break;
3420 >
3421 >  case 114:
3422 > #line 899 "conf_parser.y" /* yacc.c:1646  */
3423      {
3424    if (conf_parser_ctx.pass == 2)
3425 <    strlcpy(ConfigLoggingEntry.operlog, yylval.string,
3881 <            sizeof(ConfigLoggingEntry.operlog));
3425 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3426   }
3427 + #line 3428 "conf_parser.c" /* yacc.c:1646  */
3428      break;
3429  
3430 <  case 112:
3431 <
3887 < /* Line 1464 of yacc.c  */
3888 < #line 859 "ircd_parser.y"
3430 >  case 115:
3431 > #line 905 "conf_parser.y" /* yacc.c:1646  */
3432      {
3433    if (conf_parser_ctx.pass == 2)
3434 <    strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
3892 <            sizeof(ConfigLoggingEntry.operspylog));
3434 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3435   }
3436 + #line 3437 "conf_parser.c" /* yacc.c:1646  */
3437      break;
3438  
3439 <  case 113:
3440 <
3898 < /* Line 1464 of yacc.c  */
3899 < #line 866 "ircd_parser.y"
3439 >  case 122:
3440 > #line 920 "conf_parser.y" /* yacc.c:1646  */
3441      {
3442    if (conf_parser_ctx.pass == 2)
3443 <    strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
3903 <            sizeof(ConfigLoggingEntry.glinelog));
3443 >    ConfigLoggingEntry.use_logging = yylval.number;
3444   }
3445 + #line 3446 "conf_parser.c" /* yacc.c:1646  */
3446      break;
3447  
3448 <  case 114:
3449 <
3909 < /* Line 1464 of yacc.c  */
3910 < #line 873 "ircd_parser.y"
3448 >  case 123:
3449 > #line 926 "conf_parser.y" /* yacc.c:1646  */
3450      {
3451    if (conf_parser_ctx.pass == 2)
3452 <    strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
3914 <            sizeof(ConfigLoggingEntry.klinelog));
3452 >    reset_block_state();
3453   }
3454 + #line 3455 "conf_parser.c" /* yacc.c:1646  */
3455      break;
3456  
3457 <  case 115:
3458 <
3920 < /* Line 1464 of yacc.c  */
3921 < #line 880 "ircd_parser.y"
3457 >  case 124:
3458 > #line 930 "conf_parser.y" /* yacc.c:1646  */
3459      {
3460 <  if (conf_parser_ctx.pass == 2)
3461 <    strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
3462 <            sizeof(ConfigLoggingEntry.ioerrlog));
3460 >  if (conf_parser_ctx.pass != 2)
3461 >    break;
3462 >
3463 >  if (block_state.type.value && block_state.file.buf[0])
3464 >    log_set_file(block_state.type.value, block_state.size.value,
3465 >                 block_state.file.buf);
3466   }
3467 + #line 3468 "conf_parser.c" /* yacc.c:1646  */
3468      break;
3469  
3470 <  case 116:
3470 >  case 131:
3471 > #line 946 "conf_parser.y" /* yacc.c:1646  */
3472 >    {
3473 >  if (conf_parser_ctx.pass != 2)
3474 >    break;
3475  
3476 < /* Line 1464 of yacc.c  */
3477 < #line 887 "ircd_parser.y"
3476 >  strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3477 > }
3478 > #line 3479 "conf_parser.c" /* yacc.c:1646  */
3479 >    break;
3480 >
3481 >  case 132:
3482 > #line 954 "conf_parser.y" /* yacc.c:1646  */
3483      {
3484 <  if (conf_parser_ctx.pass == 2)
3935 <    strlcpy(ConfigLoggingEntry.killlog, yylval.string,
3936 <            sizeof(ConfigLoggingEntry.killlog));
3484 >  block_state.size.value = (yyvsp[-1].number);
3485   }
3486 + #line 3487 "conf_parser.c" /* yacc.c:1646  */
3487      break;
3488  
3489 <  case 117:
3489 >  case 133:
3490 > #line 957 "conf_parser.y" /* yacc.c:1646  */
3491 >    {
3492 >  block_state.size.value = 0;
3493 > }
3494 > #line 3495 "conf_parser.c" /* yacc.c:1646  */
3495 >    break;
3496  
3497 < /* Line 1464 of yacc.c  */
3498 < #line 894 "ircd_parser.y"
3499 <    {
3497 >  case 134:
3498 > #line 962 "conf_parser.y" /* yacc.c:1646  */
3499 >    {
3500    if (conf_parser_ctx.pass == 2)
3501 <    set_log_level(L_CRIT);
3501 >    block_state.type.value = 0;
3502   }
3503 + #line 3504 "conf_parser.c" /* yacc.c:1646  */
3504      break;
3505  
3506 <  case 118:
3507 <
3952 < /* Line 1464 of yacc.c  */
3953 < #line 898 "ircd_parser.y"
3506 >  case 138:
3507 > #line 969 "conf_parser.y" /* yacc.c:1646  */
3508      {
3509    if (conf_parser_ctx.pass == 2)
3510 <    set_log_level(L_ERROR);
3510 >    block_state.type.value = LOG_TYPE_USER;
3511   }
3512 + #line 3513 "conf_parser.c" /* yacc.c:1646  */
3513      break;
3514  
3515 <  case 119:
3516 <
3962 < /* Line 1464 of yacc.c  */
3963 < #line 902 "ircd_parser.y"
3515 >  case 139:
3516 > #line 973 "conf_parser.y" /* yacc.c:1646  */
3517      {
3518    if (conf_parser_ctx.pass == 2)
3519 <    set_log_level(L_WARN);
3519 >    block_state.type.value = LOG_TYPE_OPER;
3520   }
3521 + #line 3522 "conf_parser.c" /* yacc.c:1646  */
3522      break;
3523  
3524 <  case 120:
3525 <
3972 < /* Line 1464 of yacc.c  */
3973 < #line 906 "ircd_parser.y"
3524 >  case 140:
3525 > #line 977 "conf_parser.y" /* yacc.c:1646  */
3526      {
3527    if (conf_parser_ctx.pass == 2)
3528 <    set_log_level(L_NOTICE);
3528 >    block_state.type.value = LOG_TYPE_GLINE;
3529   }
3530 + #line 3531 "conf_parser.c" /* yacc.c:1646  */
3531      break;
3532  
3533 <  case 121:
3534 <
3982 < /* Line 1464 of yacc.c  */
3983 < #line 910 "ircd_parser.y"
3533 >  case 141:
3534 > #line 981 "conf_parser.y" /* yacc.c:1646  */
3535      {
3536    if (conf_parser_ctx.pass == 2)
3537 <    set_log_level(L_TRACE);
3537 >    block_state.type.value = LOG_TYPE_XLINE;
3538   }
3539 + #line 3540 "conf_parser.c" /* yacc.c:1646  */
3540      break;
3541  
3542 <  case 122:
3543 <
3992 < /* Line 1464 of yacc.c  */
3993 < #line 914 "ircd_parser.y"
3542 >  case 142:
3543 > #line 985 "conf_parser.y" /* yacc.c:1646  */
3544      {
3545    if (conf_parser_ctx.pass == 2)
3546 <    set_log_level(L_INFO);
3546 >    block_state.type.value = LOG_TYPE_RESV;
3547   }
3548 + #line 3549 "conf_parser.c" /* yacc.c:1646  */
3549      break;
3550  
3551 <  case 123:
3552 <
4002 < /* Line 1464 of yacc.c  */
4003 < #line 918 "ircd_parser.y"
3551 >  case 143:
3552 > #line 989 "conf_parser.y" /* yacc.c:1646  */
3553      {
3554    if (conf_parser_ctx.pass == 2)
3555 <    set_log_level(L_DEBUG);
3555 >    block_state.type.value = LOG_TYPE_DLINE;
3556   }
3557 + #line 3558 "conf_parser.c" /* yacc.c:1646  */
3558      break;
3559  
3560 <  case 124:
3561 <
4012 < /* Line 1464 of yacc.c  */
4013 < #line 924 "ircd_parser.y"
3560 >  case 144:
3561 > #line 993 "conf_parser.y" /* yacc.c:1646  */
3562      {
3563    if (conf_parser_ctx.pass == 2)
3564 <    ConfigLoggingEntry.use_logging = yylval.number;
3564 >    block_state.type.value = LOG_TYPE_KLINE;
3565   }
3566 + #line 3567 "conf_parser.c" /* yacc.c:1646  */
3567      break;
3568  
3569 <  case 125:
3570 <
4022 < /* Line 1464 of yacc.c  */
4023 < #line 933 "ircd_parser.y"
3569 >  case 145:
3570 > #line 997 "conf_parser.y" /* yacc.c:1646  */
3571      {
3572    if (conf_parser_ctx.pass == 2)
3573 <  {
4027 <    yy_conf = make_conf_item(OPER_TYPE);
4028 <    yy_aconf = map_to_conf(yy_conf);
4029 <    SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4030 <  }
4031 <  else
4032 <  {
4033 <    MyFree(class_name);
4034 <    class_name = NULL;
4035 <  }
3573 >    block_state.type.value = LOG_TYPE_KILL;
3574   }
3575 + #line 3576 "conf_parser.c" /* yacc.c:1646  */
3576      break;
3577  
3578 <  case 126:
3579 <
4041 < /* Line 1464 of yacc.c  */
4042 < #line 946 "ircd_parser.y"
3578 >  case 146:
3579 > #line 1001 "conf_parser.y" /* yacc.c:1646  */
3580      {
3581    if (conf_parser_ctx.pass == 2)
3582 <  {
3583 <    struct CollectItem *yy_tmp;
3584 <    dlink_node *ptr;
3585 <    dlink_node *next_ptr;
3582 >    block_state.type.value = LOG_TYPE_DEBUG;
3583 > }
3584 > #line 3585 "conf_parser.c" /* yacc.c:1646  */
3585 >    break;
3586  
3587 <    conf_add_class_to_conf(yy_conf, class_name);
3587 >  case 147:
3588 > #line 1011 "conf_parser.y" /* yacc.c:1646  */
3589 >    {
3590 >  if (conf_parser_ctx.pass != 2)
3591 >    break;
3592  
3593 <    /* Now, make sure there is a copy of the "base" given oper
3594 <     * block in each of the collected copies
3595 <     */
3593 >  reset_block_state();
3594 >  block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3595 > }
3596 > #line 3597 "conf_parser.c" /* yacc.c:1646  */
3597 >    break;
3598  
3599 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3599 >  case 148:
3600 > #line 1018 "conf_parser.y" /* yacc.c:1646  */
3601      {
3602 <      struct AccessItem *new_aconf;
4059 <      struct ConfItem *new_conf;
4060 <      yy_tmp = ptr->data;
3602 >  dlink_node *ptr = NULL;
3603  
3604 <      new_conf = make_conf_item(OPER_TYPE);
3605 <      new_aconf = (struct AccessItem *)map_to_conf(new_conf);
3604 >  if (conf_parser_ctx.pass != 2)
3605 >    break;
3606  
3607 <      new_aconf->flags = yy_aconf->flags;
3607 >  if (!block_state.name.buf[0])
3608 >    break;
3609 > #ifdef HAVE_LIBCRYPTO
3610 >  if (!block_state.file.buf[0] &&
3611 >      !block_state.rpass.buf[0])
3612 >    break;
3613 > #else
3614 >  if (!block_state.rpass.buf[0])
3615 >    break;
3616 > #endif
3617  
3618 <      if (yy_conf->name != NULL)
3619 <        DupString(new_conf->name, yy_conf->name);
3620 <      if (yy_tmp->user != NULL)
3621 <        DupString(new_aconf->user, yy_tmp->user);
4071 <      else
4072 <        DupString(new_aconf->user, "*");
4073 <      if (yy_tmp->host != NULL)
4074 <        DupString(new_aconf->host, yy_tmp->host);
4075 <      else
4076 <        DupString(new_aconf->host, "*");
4077 <      conf_add_class_to_conf(new_conf, class_name);
4078 <      if (yy_aconf->passwd != NULL)
4079 <        DupString(new_aconf->passwd, yy_aconf->passwd);
3618 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
3619 >  {
3620 >    struct MaskItem *conf = NULL;
3621 >    struct split_nuh_item nuh;
3622  
3623 <      new_aconf->port = yy_aconf->port;
3624 < #ifdef HAVE_LIBCRYPTO
3625 <      if (yy_aconf->rsa_public_key_file != NULL)
3626 <      {
3627 <        BIO *file;
3623 >    nuh.nuhmask  = ptr->data;
3624 >    nuh.nickptr  = NULL;
3625 >    nuh.userptr  = block_state.user.buf;
3626 >    nuh.hostptr  = block_state.host.buf;
3627 >    nuh.nicksize = 0;
3628 >    nuh.usersize = sizeof(block_state.user.buf);
3629 >    nuh.hostsize = sizeof(block_state.host.buf);
3630 >    split_nuh(&nuh);
3631  
3632 <        DupString(new_aconf->rsa_public_key_file,
3633 <                  yy_aconf->rsa_public_key_file);
3632 >    conf         = conf_make(CONF_OPER);
3633 >    conf->name   = xstrdup(block_state.name.buf);
3634 >    conf->user   = xstrdup(block_state.user.buf);
3635 >    conf->host   = xstrdup(block_state.host.buf);
3636 >
3637 >    if (block_state.cert.buf[0])
3638 >      conf->certfp = xstrdup(block_state.cert.buf);
3639 >
3640 >    if (block_state.rpass.buf[0])
3641 >      conf->passwd = xstrdup(block_state.rpass.buf);
3642 >
3643 >    conf->flags = block_state.flags.value;
3644 >    conf->modes = block_state.modes.value;
3645 >    conf->port  = block_state.port.value;
3646 >    conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3647  
3648 <        file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4091 <        new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4092 <                                                           NULL, 0, NULL);
4093 <        BIO_set_close(file, BIO_CLOSE);
4094 <        BIO_free(file);
4095 <      }
4096 < #endif
3648 >    conf_add_class_to_conf(conf, block_state.class.buf);
3649  
3650   #ifdef HAVE_LIBCRYPTO
3651 <      if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
3652 <          && yy_tmp->host)
3653 < #else
3654 <      if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
3655 < #endif
3651 >    if (block_state.file.buf[0])
3652 >    {
3653 >      BIO *file = NULL;
3654 >      RSA *pkey = NULL;
3655 >
3656 >      if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3657        {
3658 <        conf_add_class_to_conf(new_conf, class_name);
3659 <        if (yy_tmp->name != NULL)
4107 <          DupString(new_conf->name, yy_tmp->name);
3658 >        conf_error_report("Ignoring rsa_public_key_file -- file doesn't exist");
3659 >        break;
3660        }
3661  
3662 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
3663 <      free_collect_item(yy_tmp);
4112 <    }
4113 <
4114 <    yy_conf = NULL;
4115 <    yy_aconf = NULL;
3662 >      if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3663 >        conf_error_report("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3664  
3665 <
3666 <    MyFree(class_name);
3667 <    class_name = NULL;
3665 >      conf->rsa_public_key = pkey;
3666 >      BIO_set_close(file, BIO_CLOSE);
3667 >      BIO_free(file);
3668 >    }
3669 > #endif /* HAVE_LIBCRYPTO */
3670    }
3671   }
3672 + #line 3673 "conf_parser.c" /* yacc.c:1646  */
3673      break;
3674  
3675 <  case 140:
3676 <
4126 < /* Line 1464 of yacc.c  */
4127 < #line 1033 "ircd_parser.y"
3675 >  case 162:
3676 > #line 1104 "conf_parser.y" /* yacc.c:1646  */
3677      {
3678    if (conf_parser_ctx.pass == 2)
3679 <  {
4131 <    if (strlen(yylval.string) > OPERNICKLEN)
4132 <      yylval.string[OPERNICKLEN] = '\0';
4133 <
4134 <    MyFree(yy_conf->name);
4135 <    DupString(yy_conf->name, yylval.string);
4136 <  }
3679 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3680   }
3681 + #line 3682 "conf_parser.c" /* yacc.c:1646  */
3682      break;
3683  
3684 <  case 141:
3685 <
4142 < /* Line 1464 of yacc.c  */
4143 < #line 1045 "ircd_parser.y"
3684 >  case 163:
3685 > #line 1110 "conf_parser.y" /* yacc.c:1646  */
3686      {
3687    if (conf_parser_ctx.pass == 2)
3688 <  {
4147 <    if (strlen(yylval.string) > OPERNICKLEN)
4148 <      yylval.string[OPERNICKLEN] = '\0';
4149 <
4150 <    MyFree(yy_conf->name);
4151 <    DupString(yy_conf->name, yylval.string);
4152 <  }
3688 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3689   }
3690 + #line 3691 "conf_parser.c" /* yacc.c:1646  */
3691      break;
3692  
3693 <  case 142:
3694 <
4158 < /* Line 1464 of yacc.c  */
4159 < #line 1057 "ircd_parser.y"
3693 >  case 164:
3694 > #line 1116 "conf_parser.y" /* yacc.c:1646  */
3695      {
3696    if (conf_parser_ctx.pass == 2)
3697 <  {
3698 <    struct split_nuh_item nuh;
3699 <
3700 <    nuh.nuhmask  = yylval.string;
4166 <    nuh.nickptr  = NULL;
4167 <    nuh.userptr  = userbuf;
4168 <    nuh.hostptr  = hostbuf;
3697 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3698 > }
3699 > #line 3700 "conf_parser.c" /* yacc.c:1646  */
3700 >    break;
3701  
3702 <    nuh.nicksize = 0;
3703 <    nuh.usersize = sizeof(userbuf);
3704 <    nuh.hostsize = sizeof(hostbuf);
3702 >  case 165:
3703 > #line 1122 "conf_parser.y" /* yacc.c:1646  */
3704 >    {
3705 >  if (conf_parser_ctx.pass != 2)
3706 >    break;
3707  
3708 <    split_nuh(&nuh);
3708 >  if (yylval.number)
3709 >    block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3710 >  else
3711 >    block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3712 > }
3713 > #line 3714 "conf_parser.c" /* yacc.c:1646  */
3714 >    break;
3715  
3716 <    if (yy_aconf->user == NULL)
3716 >  case 166:
3717 > #line 1133 "conf_parser.y" /* yacc.c:1646  */
3718      {
3719 <      DupString(yy_aconf->user, userbuf);
3720 <      DupString(yy_aconf->host, hostbuf);
3721 <    }
3722 <    else
3719 >  if (conf_parser_ctx.pass == 2)
3720 >    strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3721 > }
3722 > #line 3723 "conf_parser.c" /* yacc.c:1646  */
3723 >    break;
3724 >
3725 >  case 167:
3726 > #line 1139 "conf_parser.y" /* yacc.c:1646  */
3727      {
3728 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
3728 >  if (conf_parser_ctx.pass == 2)
3729 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3730 > }
3731 > #line 3732 "conf_parser.c" /* yacc.c:1646  */
3732 >    break;
3733  
3734 <      DupString(yy_tmp->user, userbuf);
3735 <      DupString(yy_tmp->host, hostbuf);
3734 >  case 168:
3735 > #line 1145 "conf_parser.y" /* yacc.c:1646  */
3736 >    {
3737 >  if (conf_parser_ctx.pass != 2)
3738 >    break;
3739  
3740 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3741 <    }
3742 <  }
3740 >  if (yylval.number)
3741 >    block_state.flags.value |= CONF_FLAGS_SSL;
3742 >  else
3743 >    block_state.flags.value &= ~CONF_FLAGS_SSL;
3744   }
3745 + #line 3746 "conf_parser.c" /* yacc.c:1646  */
3746      break;
3747  
3748 <  case 143:
3749 <
4196 < /* Line 1464 of yacc.c  */
4197 < #line 1091 "ircd_parser.y"
3748 >  case 169:
3749 > #line 1156 "conf_parser.y" /* yacc.c:1646  */
3750      {
3751    if (conf_parser_ctx.pass == 2)
3752 <  {
4201 <    if (yy_aconf->passwd != NULL)
4202 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4203 <
4204 <    MyFree(yy_aconf->passwd);
4205 <    DupString(yy_aconf->passwd, yylval.string);
4206 <  }
3752 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3753   }
3754 + #line 3755 "conf_parser.c" /* yacc.c:1646  */
3755      break;
3756  
3757 <  case 144:
3758 <
4212 < /* Line 1464 of yacc.c  */
4213 < #line 1103 "ircd_parser.y"
3757 >  case 170:
3758 > #line 1162 "conf_parser.y" /* yacc.c:1646  */
3759      {
3760    if (conf_parser_ctx.pass == 2)
3761 <  {
4217 <    if (yylval.number)
4218 <      SetConfEncrypted(yy_aconf);
4219 <    else
4220 <      ClearConfEncrypted(yy_aconf);
4221 <  }
3761 >    block_state.modes.value = 0;
3762   }
3763 + #line 3764 "conf_parser.c" /* yacc.c:1646  */
3764      break;
3765  
3766 <  case 145:
3767 <
4227 < /* Line 1464 of yacc.c  */
4228 < #line 1114 "ircd_parser.y"
3766 >  case 174:
3767 > #line 1169 "conf_parser.y" /* yacc.c:1646  */
3768      {
4230 #ifdef HAVE_LIBCRYPTO
3769    if (conf_parser_ctx.pass == 2)
3770 <  {
3771 <    BIO *file;
3770 >    block_state.modes.value |= UMODE_BOTS;
3771 > }
3772 > #line 3773 "conf_parser.c" /* yacc.c:1646  */
3773 >    break;
3774  
3775 <    if (yy_aconf->rsa_public_key != NULL)
3775 >  case 175:
3776 > #line 1173 "conf_parser.y" /* yacc.c:1646  */
3777      {
3778 <      RSA_free(yy_aconf->rsa_public_key);
3779 <      yy_aconf->rsa_public_key = NULL;
3780 <    }
3778 >  if (conf_parser_ctx.pass == 2)
3779 >    block_state.modes.value |= UMODE_CCONN;
3780 > }
3781 > #line 3782 "conf_parser.c" /* yacc.c:1646  */
3782 >    break;
3783  
3784 <    if (yy_aconf->rsa_public_key_file != NULL)
3784 >  case 176:
3785 > #line 1177 "conf_parser.y" /* yacc.c:1646  */
3786      {
3787 <      MyFree(yy_aconf->rsa_public_key_file);
3788 <      yy_aconf->rsa_public_key_file = NULL;
3789 <    }
3790 <
3791 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
4248 <    file = BIO_new_file(yylval.string, "r");
3787 >  if (conf_parser_ctx.pass == 2)
3788 >    block_state.modes.value |= UMODE_DEAF;
3789 > }
3790 > #line 3791 "conf_parser.c" /* yacc.c:1646  */
3791 >    break;
3792  
3793 <    if (file == NULL)
3793 >  case 177:
3794 > #line 1181 "conf_parser.y" /* yacc.c:1646  */
3795      {
3796 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3797 <      break;
3798 <    }
3799 <
3800 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
3796 >  if (conf_parser_ctx.pass == 2)
3797 >    block_state.modes.value |= UMODE_DEBUG;
3798 > }
3799 > #line 3800 "conf_parser.c" /* yacc.c:1646  */
3800 >    break;
3801  
3802 <    if (yy_aconf->rsa_public_key == NULL)
3802 >  case 178:
3803 > #line 1185 "conf_parser.y" /* yacc.c:1646  */
3804      {
3805 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3806 <      break;
4262 <    }
4263 <
4264 <    BIO_set_close(file, BIO_CLOSE);
4265 <    BIO_free(file);
4266 <  }
4267 < #endif /* HAVE_LIBCRYPTO */
3805 >  if (conf_parser_ctx.pass == 2)
3806 >    block_state.modes.value |= UMODE_FULL;
3807   }
3808 + #line 3809 "conf_parser.c" /* yacc.c:1646  */
3809      break;
3810  
3811 <  case 146:
3812 <
4273 < /* Line 1464 of yacc.c  */
4274 < #line 1156 "ircd_parser.y"
3811 >  case 179:
3812 > #line 1189 "conf_parser.y" /* yacc.c:1646  */
3813      {
3814    if (conf_parser_ctx.pass == 2)
3815 <  {
4278 <    MyFree(class_name);
4279 <    DupString(class_name, yylval.string);
4280 <  }
3815 >    block_state.modes.value |= UMODE_HIDDEN;
3816   }
3817 + #line 3818 "conf_parser.c" /* yacc.c:1646  */
3818      break;
3819  
3820 <  case 147:
3821 <
4286 < /* Line 1464 of yacc.c  */
4287 < #line 1165 "ircd_parser.y"
3820 >  case 180:
3821 > #line 1193 "conf_parser.y" /* yacc.c:1646  */
3822      {
3823    if (conf_parser_ctx.pass == 2)
3824 <    yy_aconf->modes = 0;
3824 >    block_state.modes.value |= UMODE_HIDECHANS;
3825   }
3826 + #line 3827 "conf_parser.c" /* yacc.c:1646  */
3827      break;
3828  
3829 <  case 151:
3830 <
4296 < /* Line 1464 of yacc.c  */
4297 < #line 1172 "ircd_parser.y"
3829 >  case 181:
3830 > #line 1197 "conf_parser.y" /* yacc.c:1646  */
3831      {
3832    if (conf_parser_ctx.pass == 2)
3833 <    yy_aconf->modes |= UMODE_BOTS;
3833 >    block_state.modes.value |= UMODE_HIDEIDLE;
3834   }
3835 + #line 3836 "conf_parser.c" /* yacc.c:1646  */
3836      break;
3837  
3838 <  case 152:
3839 <
4306 < /* Line 1464 of yacc.c  */
4307 < #line 1176 "ircd_parser.y"
3838 >  case 182:
3839 > #line 1201 "conf_parser.y" /* yacc.c:1646  */
3840      {
3841    if (conf_parser_ctx.pass == 2)
3842 <    yy_aconf->modes |= UMODE_CCONN;
3842 >    block_state.modes.value |= UMODE_SKILL;
3843   }
3844 + #line 3845 "conf_parser.c" /* yacc.c:1646  */
3845      break;
3846  
3847 <  case 153:
3848 <
4316 < /* Line 1464 of yacc.c  */
4317 < #line 1180 "ircd_parser.y"
3847 >  case 183:
3848 > #line 1205 "conf_parser.y" /* yacc.c:1646  */
3849      {
3850    if (conf_parser_ctx.pass == 2)
3851 <    yy_aconf->modes |= UMODE_CCONN_FULL;
3851 >    block_state.modes.value |= UMODE_NCHANGE;
3852   }
3853 + #line 3854 "conf_parser.c" /* yacc.c:1646  */
3854      break;
3855  
3856 <  case 154:
3857 <
4326 < /* Line 1464 of yacc.c  */
4327 < #line 1184 "ircd_parser.y"
3856 >  case 184:
3857 > #line 1209 "conf_parser.y" /* yacc.c:1646  */
3858      {
3859    if (conf_parser_ctx.pass == 2)
3860 <    yy_aconf->modes |= UMODE_DEAF;
3860 >    block_state.modes.value |= UMODE_REJ;
3861   }
3862 + #line 3863 "conf_parser.c" /* yacc.c:1646  */
3863      break;
3864  
3865 <  case 155:
3866 <
4336 < /* Line 1464 of yacc.c  */
4337 < #line 1188 "ircd_parser.y"
3865 >  case 185:
3866 > #line 1213 "conf_parser.y" /* yacc.c:1646  */
3867      {
3868    if (conf_parser_ctx.pass == 2)
3869 <    yy_aconf->modes |= UMODE_DEBUG;
3869 >    block_state.modes.value |= UMODE_UNAUTH;
3870   }
3871 + #line 3872 "conf_parser.c" /* yacc.c:1646  */
3872      break;
3873  
3874 <  case 156:
3875 <
4346 < /* Line 1464 of yacc.c  */
4347 < #line 1192 "ircd_parser.y"
3874 >  case 186:
3875 > #line 1217 "conf_parser.y" /* yacc.c:1646  */
3876      {
3877    if (conf_parser_ctx.pass == 2)
3878 <    yy_aconf->modes |= UMODE_FULL;
3878 >    block_state.modes.value |= UMODE_SPY;
3879   }
3880 + #line 3881 "conf_parser.c" /* yacc.c:1646  */
3881      break;
3882  
3883 <  case 157:
3884 <
4356 < /* Line 1464 of yacc.c  */
4357 < #line 1196 "ircd_parser.y"
3883 >  case 187:
3884 > #line 1221 "conf_parser.y" /* yacc.c:1646  */
3885      {
3886    if (conf_parser_ctx.pass == 2)
3887 <    yy_aconf->modes |= UMODE_SKILL;
3887 >    block_state.modes.value |= UMODE_EXTERNAL;
3888   }
3889 + #line 3890 "conf_parser.c" /* yacc.c:1646  */
3890      break;
3891  
3892 <  case 158:
3893 <
4366 < /* Line 1464 of yacc.c  */
4367 < #line 1200 "ircd_parser.y"
3892 >  case 188:
3893 > #line 1225 "conf_parser.y" /* yacc.c:1646  */
3894      {
3895    if (conf_parser_ctx.pass == 2)
3896 <    yy_aconf->modes |= UMODE_NCHANGE;
3896 >    block_state.modes.value |= UMODE_OPERWALL;
3897   }
3898 + #line 3899 "conf_parser.c" /* yacc.c:1646  */
3899      break;
3900  
3901 <  case 159:
3902 <
4376 < /* Line 1464 of yacc.c  */
4377 < #line 1204 "ircd_parser.y"
3901 >  case 189:
3902 > #line 1229 "conf_parser.y" /* yacc.c:1646  */
3903      {
3904    if (conf_parser_ctx.pass == 2)
3905 <    yy_aconf->modes |= UMODE_REJ;
3905 >    block_state.modes.value |= UMODE_SERVNOTICE;
3906   }
3907 + #line 3908 "conf_parser.c" /* yacc.c:1646  */
3908      break;
3909  
3910 <  case 160:
3911 <
4386 < /* Line 1464 of yacc.c  */
4387 < #line 1208 "ircd_parser.y"
3910 >  case 190:
3911 > #line 1233 "conf_parser.y" /* yacc.c:1646  */
3912      {
3913    if (conf_parser_ctx.pass == 2)
3914 <    yy_aconf->modes |= UMODE_UNAUTH;
3914 >    block_state.modes.value |= UMODE_INVISIBLE;
3915   }
3916 + #line 3917 "conf_parser.c" /* yacc.c:1646  */
3917      break;
3918  
3919 <  case 161:
3920 <
4396 < /* Line 1464 of yacc.c  */
4397 < #line 1212 "ircd_parser.y"
3919 >  case 191:
3920 > #line 1237 "conf_parser.y" /* yacc.c:1646  */
3921      {
3922    if (conf_parser_ctx.pass == 2)
3923 <    yy_aconf->modes |= UMODE_SPY;
3923 >    block_state.modes.value |= UMODE_WALLOP;
3924   }
3925 + #line 3926 "conf_parser.c" /* yacc.c:1646  */
3926      break;
3927  
3928 <  case 162:
3929 <
4406 < /* Line 1464 of yacc.c  */
4407 < #line 1216 "ircd_parser.y"
3928 >  case 192:
3929 > #line 1241 "conf_parser.y" /* yacc.c:1646  */
3930      {
3931    if (conf_parser_ctx.pass == 2)
3932 <    yy_aconf->modes |= UMODE_EXTERNAL;
3932 >    block_state.modes.value |= UMODE_SOFTCALLERID;
3933   }
3934 + #line 3935 "conf_parser.c" /* yacc.c:1646  */
3935      break;
3936  
3937 <  case 163:
3938 <
4416 < /* Line 1464 of yacc.c  */
4417 < #line 1220 "ircd_parser.y"
3937 >  case 193:
3938 > #line 1245 "conf_parser.y" /* yacc.c:1646  */
3939      {
3940    if (conf_parser_ctx.pass == 2)
3941 <    yy_aconf->modes |= UMODE_OPERWALL;
3941 >    block_state.modes.value |= UMODE_CALLERID;
3942   }
3943 + #line 3944 "conf_parser.c" /* yacc.c:1646  */
3944      break;
3945  
3946 <  case 164:
3947 <
4426 < /* Line 1464 of yacc.c  */
4427 < #line 1224 "ircd_parser.y"
3946 >  case 194:
3947 > #line 1249 "conf_parser.y" /* yacc.c:1646  */
3948      {
3949    if (conf_parser_ctx.pass == 2)
3950 <    yy_aconf->modes |= UMODE_SERVNOTICE;
3950 >    block_state.modes.value |= UMODE_LOCOPS;
3951   }
3952 + #line 3953 "conf_parser.c" /* yacc.c:1646  */
3953      break;
3954  
3955 <  case 165:
3956 <
4436 < /* Line 1464 of yacc.c  */
4437 < #line 1228 "ircd_parser.y"
3955 >  case 195:
3956 > #line 1253 "conf_parser.y" /* yacc.c:1646  */
3957      {
3958    if (conf_parser_ctx.pass == 2)
3959 <    yy_aconf->modes |= UMODE_INVISIBLE;
3959 >    block_state.modes.value |= UMODE_REGONLY;
3960   }
3961 + #line 3962 "conf_parser.c" /* yacc.c:1646  */
3962      break;
3963  
3964 <  case 166:
3965 <
4446 < /* Line 1464 of yacc.c  */
4447 < #line 1232 "ircd_parser.y"
3964 >  case 196:
3965 > #line 1257 "conf_parser.y" /* yacc.c:1646  */
3966      {
3967    if (conf_parser_ctx.pass == 2)
3968 <    yy_aconf->modes |= UMODE_WALLOP;
3968 >    block_state.modes.value |= UMODE_FARCONNECT;
3969   }
3970 + #line 3971 "conf_parser.c" /* yacc.c:1646  */
3971      break;
3972  
3973 <  case 167:
3974 <
4456 < /* Line 1464 of yacc.c  */
4457 < #line 1236 "ircd_parser.y"
3973 >  case 197:
3974 > #line 1263 "conf_parser.y" /* yacc.c:1646  */
3975      {
3976    if (conf_parser_ctx.pass == 2)
3977 <    yy_aconf->modes |= UMODE_SOFTCALLERID;
3977 >    block_state.port.value = 0;
3978   }
3979 + #line 3980 "conf_parser.c" /* yacc.c:1646  */
3980      break;
3981  
3982 <  case 168:
3983 <
4466 < /* Line 1464 of yacc.c  */
4467 < #line 1240 "ircd_parser.y"
3982 >  case 201:
3983 > #line 1270 "conf_parser.y" /* yacc.c:1646  */
3984      {
3985    if (conf_parser_ctx.pass == 2)
3986 <    yy_aconf->modes |= UMODE_CALLERID;
3986 >    block_state.port.value |= OPER_FLAG_KILL_REMOTE;
3987   }
3988 + #line 3989 "conf_parser.c" /* yacc.c:1646  */
3989      break;
3990  
3991 <  case 169:
3992 <
4476 < /* Line 1464 of yacc.c  */
4477 < #line 1244 "ircd_parser.y"
3991 >  case 202:
3992 > #line 1274 "conf_parser.y" /* yacc.c:1646  */
3993      {
3994    if (conf_parser_ctx.pass == 2)
3995 <    yy_aconf->modes |= UMODE_LOCOPS;
3995 >    block_state.port.value |= OPER_FLAG_KILL;
3996   }
3997 + #line 3998 "conf_parser.c" /* yacc.c:1646  */
3998      break;
3999  
4000 <  case 170:
4001 <
4486 < /* Line 1464 of yacc.c  */
4487 < #line 1250 "ircd_parser.y"
4000 >  case 203:
4001 > #line 1278 "conf_parser.y" /* yacc.c:1646  */
4002      {
4003 +  if (conf_parser_ctx.pass == 2)
4004 +    block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4005   }
4006 + #line 4007 "conf_parser.c" /* yacc.c:1646  */
4007      break;
4008  
4009 <  case 174:
4010 <
4011 < /* Line 1464 of yacc.c  */
4012 < #line 1254 "ircd_parser.y"
4013 <    { not_atom = 1; }
4009 >  case 204:
4010 > #line 1282 "conf_parser.y" /* yacc.c:1646  */
4011 >    {
4012 >  if (conf_parser_ctx.pass == 2)
4013 >    block_state.port.value |= OPER_FLAG_CONNECT;
4014 > }
4015 > #line 4016 "conf_parser.c" /* yacc.c:1646  */
4016      break;
4017  
4018 <  case 176:
4019 <
4020 < /* Line 1464 of yacc.c  */
4021 < #line 1255 "ircd_parser.y"
4022 <    { not_atom = 0; }
4018 >  case 205:
4019 > #line 1286 "conf_parser.y" /* yacc.c:1646  */
4020 >    {
4021 >  if (conf_parser_ctx.pass == 2)
4022 >    block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4023 > }
4024 > #line 4025 "conf_parser.c" /* yacc.c:1646  */
4025      break;
4026  
4027 <  case 178:
4028 <
4508 < /* Line 1464 of yacc.c  */
4509 < #line 1258 "ircd_parser.y"
4027 >  case 206:
4028 > #line 1290 "conf_parser.y" /* yacc.c:1646  */
4029      {
4030    if (conf_parser_ctx.pass == 2)
4031 <  {
4513 <    if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4514 <    else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4515 <  }
4031 >    block_state.port.value |= OPER_FLAG_SQUIT;
4032   }
4033 + #line 4034 "conf_parser.c" /* yacc.c:1646  */
4034      break;
4035  
4036 <  case 179:
4037 <
4521 < /* Line 1464 of yacc.c  */
4522 < #line 1265 "ircd_parser.y"
4036 >  case 207:
4037 > #line 1294 "conf_parser.y" /* yacc.c:1646  */
4038      {
4039    if (conf_parser_ctx.pass == 2)
4040 <  {
4526 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4527 <    else yy_aconf->port |= OPER_FLAG_REMOTE;
4528 <  }
4040 >    block_state.port.value |= OPER_FLAG_K;
4041   }
4042 + #line 4043 "conf_parser.c" /* yacc.c:1646  */
4043      break;
4044  
4045 <  case 180:
4046 <
4534 < /* Line 1464 of yacc.c  */
4535 < #line 1272 "ircd_parser.y"
4045 >  case 208:
4046 > #line 1298 "conf_parser.y" /* yacc.c:1646  */
4047      {
4048    if (conf_parser_ctx.pass == 2)
4049 <  {
4539 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4540 <    else yy_aconf->port |= OPER_FLAG_K;
4541 <  }
4049 >    block_state.port.value |= OPER_FLAG_UNKLINE;
4050   }
4051 + #line 4052 "conf_parser.c" /* yacc.c:1646  */
4052      break;
4053  
4054 <  case 181:
4055 <
4547 < /* Line 1464 of yacc.c  */
4548 < #line 1279 "ircd_parser.y"
4054 >  case 209:
4055 > #line 1302 "conf_parser.y" /* yacc.c:1646  */
4056      {
4057    if (conf_parser_ctx.pass == 2)
4058 <  {
4552 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4553 <    else yy_aconf->port |= OPER_FLAG_UNKLINE;
4554 <  }
4058 >    block_state.port.value |= OPER_FLAG_DLINE;
4059   }
4060 + #line 4061 "conf_parser.c" /* yacc.c:1646  */
4061      break;
4062  
4063 <  case 182:
4064 <
4560 < /* Line 1464 of yacc.c  */
4561 < #line 1286 "ircd_parser.y"
4063 >  case 210:
4064 > #line 1306 "conf_parser.y" /* yacc.c:1646  */
4065      {
4066    if (conf_parser_ctx.pass == 2)
4067 <  {
4565 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4566 <    else yy_aconf->port |= OPER_FLAG_X;
4567 <  }
4067 >    block_state.port.value |= OPER_FLAG_UNDLINE;
4068   }
4069 + #line 4070 "conf_parser.c" /* yacc.c:1646  */
4070      break;
4071  
4072 <  case 183:
4073 <
4573 < /* Line 1464 of yacc.c  */
4574 < #line 1293 "ircd_parser.y"
4072 >  case 211:
4073 > #line 1310 "conf_parser.y" /* yacc.c:1646  */
4074      {
4075    if (conf_parser_ctx.pass == 2)
4076 <  {
4578 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4579 <    else yy_aconf->port |= OPER_FLAG_GLINE;
4580 <  }
4076 >    block_state.port.value |= OPER_FLAG_XLINE;
4077   }
4078 + #line 4079 "conf_parser.c" /* yacc.c:1646  */
4079      break;
4080  
4081 <  case 184:
4082 <
4586 < /* Line 1464 of yacc.c  */
4587 < #line 1300 "ircd_parser.y"
4081 >  case 212:
4082 > #line 1314 "conf_parser.y" /* yacc.c:1646  */
4083      {
4084    if (conf_parser_ctx.pass == 2)
4085 <  {
4591 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4592 <    else yy_aconf->port |= OPER_FLAG_DIE;
4593 <  }
4085 >    block_state.port.value |= OPER_FLAG_UNXLINE;
4086   }
4087 + #line 4088 "conf_parser.c" /* yacc.c:1646  */
4088      break;
4089  
4090 <  case 185:
4091 <
4599 < /* Line 1464 of yacc.c  */
4600 < #line 1307 "ircd_parser.y"
4090 >  case 213:
4091 > #line 1318 "conf_parser.y" /* yacc.c:1646  */
4092      {
4093    if (conf_parser_ctx.pass == 2)
4094 <  {
4604 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4605 <    else yy_aconf->port |= OPER_FLAG_REHASH;
4606 <  }
4094 >    block_state.port.value |= OPER_FLAG_GLINE;
4095   }
4096 + #line 4097 "conf_parser.c" /* yacc.c:1646  */
4097      break;
4098  
4099 <  case 186:
4100 <
4612 < /* Line 1464 of yacc.c  */
4613 < #line 1314 "ircd_parser.y"
4099 >  case 214:
4100 > #line 1322 "conf_parser.y" /* yacc.c:1646  */
4101      {
4102    if (conf_parser_ctx.pass == 2)
4103 <  {
4617 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4618 <    else yy_aconf->port |= OPER_FLAG_ADMIN;
4619 <  }
4103 >    block_state.port.value |= OPER_FLAG_DIE;
4104   }
4105 + #line 4106 "conf_parser.c" /* yacc.c:1646  */
4106      break;
4107  
4108 <  case 187:
4109 <
4625 < /* Line 1464 of yacc.c  */
4626 < #line 1321 "ircd_parser.y"
4108 >  case 215:
4109 > #line 1326 "conf_parser.y" /* yacc.c:1646  */
4110      {
4111    if (conf_parser_ctx.pass == 2)
4112 <  {
4630 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4631 <    else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4632 <  }
4112 >    block_state.port.value |= OPER_FLAG_RESTART;
4113   }
4114 + #line 4115 "conf_parser.c" /* yacc.c:1646  */
4115      break;
4116  
4117 <  case 188:
4118 <
4638 < /* Line 1464 of yacc.c  */
4639 < #line 1328 "ircd_parser.y"
4117 >  case 216:
4118 > #line 1330 "conf_parser.y" /* yacc.c:1646  */
4119      {
4120    if (conf_parser_ctx.pass == 2)
4121 <  {
4643 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4644 <    else yy_aconf->port |= OPER_FLAG_N;
4645 <  }
4121 >    block_state.port.value |= OPER_FLAG_REHASH;
4122   }
4123 + #line 4124 "conf_parser.c" /* yacc.c:1646  */
4124      break;
4125  
4126 <  case 189:
4127 <
4651 < /* Line 1464 of yacc.c  */
4652 < #line 1335 "ircd_parser.y"
4126 >  case 217:
4127 > #line 1334 "conf_parser.y" /* yacc.c:1646  */
4128      {
4129    if (conf_parser_ctx.pass == 2)
4130 <  {
4656 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4657 <    else yy_aconf->port |= OPER_FLAG_OPERWALL;
4658 <  }
4130 >    block_state.port.value |= OPER_FLAG_ADMIN;
4131   }
4132 + #line 4133 "conf_parser.c" /* yacc.c:1646  */
4133      break;
4134  
4135 <  case 190:
4136 <
4664 < /* Line 1464 of yacc.c  */
4665 < #line 1342 "ircd_parser.y"
4135 >  case 218:
4136 > #line 1338 "conf_parser.y" /* yacc.c:1646  */
4137      {
4138    if (conf_parser_ctx.pass == 2)
4139 <  {
4669 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
4670 <    else yy_aconf->port |= OPER_FLAG_OPER_SPY;
4671 <  }
4139 >    block_state.port.value |= OPER_FLAG_OPERWALL;
4140   }
4141 + #line 4142 "conf_parser.c" /* yacc.c:1646  */
4142      break;
4143  
4144 <  case 191:
4145 <
4677 < /* Line 1464 of yacc.c  */
4678 < #line 1349 "ircd_parser.y"
4144 >  case 219:
4145 > #line 1342 "conf_parser.y" /* yacc.c:1646  */
4146      {
4147    if (conf_parser_ctx.pass == 2)
4148 <  {
4682 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4683 <    else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4684 <  }
4148 >    block_state.port.value |= OPER_FLAG_GLOBOPS;
4149   }
4150 + #line 4151 "conf_parser.c" /* yacc.c:1646  */
4151      break;
4152  
4153 <  case 192:
4154 <
4690 < /* Line 1464 of yacc.c  */
4691 < #line 1356 "ircd_parser.y"
4153 >  case 220:
4154 > #line 1346 "conf_parser.y" /* yacc.c:1646  */
4155      {
4156    if (conf_parser_ctx.pass == 2)
4157 <  {
4695 <    if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4696 <    else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4697 <  }
4157 >    block_state.port.value |= OPER_FLAG_WALLOPS;
4158   }
4159 + #line 4160 "conf_parser.c" /* yacc.c:1646  */
4160      break;
4161  
4162 <  case 193:
4163 <
4703 < /* Line 1464 of yacc.c  */
4704 < #line 1363 "ircd_parser.y"
4162 >  case 221:
4163 > #line 1350 "conf_parser.y" /* yacc.c:1646  */
4164      {
4165    if (conf_parser_ctx.pass == 2)
4166 <  {
4708 <    if (not_atom) ClearConfEncrypted(yy_aconf);
4709 <    else SetConfEncrypted(yy_aconf);
4710 <  }
4166 >    block_state.port.value |= OPER_FLAG_LOCOPS;
4167   }
4168 + #line 4169 "conf_parser.c" /* yacc.c:1646  */
4169      break;
4170  
4171 <  case 194:
4172 <
4716 < /* Line 1464 of yacc.c  */
4717 < #line 1376 "ircd_parser.y"
4171 >  case 222:
4172 > #line 1354 "conf_parser.y" /* yacc.c:1646  */
4173      {
4174 <  if (conf_parser_ctx.pass == 1)
4175 <  {
4721 <    yy_conf = make_conf_item(CLASS_TYPE);
4722 <    yy_class = map_to_conf(yy_conf);
4723 <  }
4174 >  if (conf_parser_ctx.pass == 2)
4175 >    block_state.port.value |= OPER_FLAG_REMOTEBAN;
4176   }
4177 + #line 4178 "conf_parser.c" /* yacc.c:1646  */
4178      break;
4179  
4180 <  case 195:
4180 >  case 223:
4181 > #line 1358 "conf_parser.y" /* yacc.c:1646  */
4182 >    {
4183 >  if (conf_parser_ctx.pass == 2)
4184 >    block_state.port.value |= OPER_FLAG_SET;
4185 > }
4186 > #line 4187 "conf_parser.c" /* yacc.c:1646  */
4187 >    break;
4188  
4189 < /* Line 1464 of yacc.c  */
4190 < #line 1383 "ircd_parser.y"
4189 >  case 224:
4190 > #line 1362 "conf_parser.y" /* yacc.c:1646  */
4191      {
4192 <  if (conf_parser_ctx.pass == 1)
4193 <  {
4194 <    struct ConfItem *cconf = NULL;
4195 <    struct ClassItem *class = NULL;
4192 >  if (conf_parser_ctx.pass == 2)
4193 >    block_state.port.value |= OPER_FLAG_MODULE;
4194 > }
4195 > #line 4196 "conf_parser.c" /* yacc.c:1646  */
4196 >    break;
4197  
4198 <    if (yy_class_name == NULL)
4199 <      delete_conf_item(yy_conf);
4739 <    else
4198 >  case 225:
4199 > #line 1372 "conf_parser.y" /* yacc.c:1646  */
4200      {
4201 <      cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
4201 >  if (conf_parser_ctx.pass != 1)
4202 >    break;
4203  
4204 <      if (cconf != NULL)                /* The class existed already */
4744 <      {
4745 <        int user_count = 0;
4204 >  reset_block_state();
4205  
4206 <        rebuild_cidr_class(cconf, yy_class);
4206 >  block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4207 >  block_state.con_freq.value  = DEFAULT_CONNECTFREQUENCY;
4208 >  block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4209 >  block_state.max_sendq.value = DEFAULT_SENDQ;
4210 >  block_state.max_recvq.value = DEFAULT_RECVQ;
4211 > }
4212 > #line 4213 "conf_parser.c" /* yacc.c:1646  */
4213 >    break;
4214  
4215 <        class = map_to_conf(cconf);
4215 >  case 226:
4216 > #line 1384 "conf_parser.y" /* yacc.c:1646  */
4217 >    {
4218 >  struct ClassItem *class = NULL;
4219  
4220 <        user_count = class->curr_user_count;
4221 <        memcpy(class, yy_class, sizeof(*class));
4753 <        class->curr_user_count = user_count;
4754 <        class->active = 1;
4220 >  if (conf_parser_ctx.pass != 1)
4221 >    break;
4222  
4223 <        delete_conf_item(yy_conf);
4223 >  if (!block_state.class.buf[0])
4224 >    break;
4225  
4226 <        MyFree(cconf->name);            /* Allows case change of class name */
4227 <        cconf->name = yy_class_name;
4228 <      }
4229 <      else      /* Brand new class */
4230 <      {
4231 <        MyFree(yy_conf->name);          /* just in case it was allocated */
4232 <        yy_conf->name = yy_class_name;
4233 <        yy_class->active = 1;
4234 <      }
4235 <    }
4226 >  if (!(class = class_find(block_state.class.buf, 0)))
4227 >    class = class_make();
4228 >
4229 >  class->active = 1;
4230 >  MyFree(class->name);
4231 >  class->name = xstrdup(block_state.class.buf);
4232 >  class->ping_freq = block_state.ping_freq.value;
4233 >  class->max_perip = block_state.max_perip.value;
4234 >  class->con_freq = block_state.con_freq.value;
4235 >  class->max_total = block_state.max_total.value;
4236 >  class->max_global = block_state.max_global.value;
4237 >  class->max_local = block_state.max_local.value;
4238 >  class->max_ident = block_state.max_ident.value;
4239 >  class->max_sendq = block_state.max_sendq.value;
4240 >  class->max_recvq = block_state.max_recvq.value;
4241  
4242 <    yy_class_name = NULL;
4242 >  if (block_state.min_idle.value > block_state.max_idle.value)
4243 >  {
4244 >    block_state.min_idle.value = 0;
4245 >    block_state.max_idle.value = 0;
4246 >    block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4247    }
4248 +
4249 +  class->flags = block_state.flags.value;
4250 +  class->min_idle = block_state.min_idle.value;
4251 +  class->max_idle = block_state.max_idle.value;
4252 +
4253 +  if (class->number_per_cidr && block_state.number_per_cidr.value)
4254 +    if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4255 +        (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4256 +      if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4257 +          (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4258 +        rebuild_cidr_list(class);
4259 +
4260 +  class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4261 +  class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4262 +  class->number_per_cidr = block_state.number_per_cidr.value;
4263   }
4264 + #line 4265 "conf_parser.c" /* yacc.c:1646  */
4265      break;
4266  
4267 <  case 214:
4268 <
4776 < /* Line 1464 of yacc.c  */
4777 < #line 1443 "ircd_parser.y"
4267 >  case 246:
4268 > #line 1451 "conf_parser.y" /* yacc.c:1646  */
4269      {
4270    if (conf_parser_ctx.pass == 1)
4271 <  {
4781 <    MyFree(yy_class_name);
4782 <    DupString(yy_class_name, yylval.string);
4783 <  }
4271 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4272   }
4273 + #line 4274 "conf_parser.c" /* yacc.c:1646  */
4274      break;
4275  
4276 <  case 215:
4277 <
4789 < /* Line 1464 of yacc.c  */
4790 < #line 1452 "ircd_parser.y"
4276 >  case 247:
4277 > #line 1457 "conf_parser.y" /* yacc.c:1646  */
4278      {
4279    if (conf_parser_ctx.pass == 1)
4280 <  {
4794 <    MyFree(yy_class_name);
4795 <    DupString(yy_class_name, yylval.string);
4796 <  }
4280 >    block_state.ping_freq.value = (yyvsp[-1].number);
4281   }
4282 + #line 4283 "conf_parser.c" /* yacc.c:1646  */
4283      break;
4284  
4285 <  case 216:
4286 <
4802 < /* Line 1464 of yacc.c  */
4803 < #line 1461 "ircd_parser.y"
4285 >  case 248:
4286 > #line 1463 "conf_parser.y" /* yacc.c:1646  */
4287      {
4288    if (conf_parser_ctx.pass == 1)
4289 <    PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
4289 >    block_state.max_perip.value = (yyvsp[-1].number);
4290   }
4291 + #line 4292 "conf_parser.c" /* yacc.c:1646  */
4292      break;
4293  
4294 <  case 217:
4295 <
4812 < /* Line 1464 of yacc.c  */
4813 < #line 1467 "ircd_parser.y"
4294 >  case 249:
4295 > #line 1469 "conf_parser.y" /* yacc.c:1646  */
4296      {
4297    if (conf_parser_ctx.pass == 1)
4298 <    PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
4298 >    block_state.con_freq.value = (yyvsp[-1].number);
4299   }
4300 + #line 4301 "conf_parser.c" /* yacc.c:1646  */
4301      break;
4302  
4303 <  case 218:
4304 <
4822 < /* Line 1464 of yacc.c  */
4823 < #line 1473 "ircd_parser.y"
4303 >  case 250:
4304 > #line 1475 "conf_parser.y" /* yacc.c:1646  */
4305      {
4306    if (conf_parser_ctx.pass == 1)
4307 <    MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
4307 >    block_state.max_total.value = (yyvsp[-1].number);
4308   }
4309 + #line 4310 "conf_parser.c" /* yacc.c:1646  */
4310      break;
4311  
4312 <  case 219:
4313 <
4832 < /* Line 1464 of yacc.c  */
4833 < #line 1479 "ircd_parser.y"
4312 >  case 251:
4313 > #line 1481 "conf_parser.y" /* yacc.c:1646  */
4314      {
4315    if (conf_parser_ctx.pass == 1)
4316 <    ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
4316 >    block_state.max_global.value = (yyvsp[-1].number);
4317   }
4318 + #line 4319 "conf_parser.c" /* yacc.c:1646  */
4319      break;
4320  
4321 <  case 220:
4322 <
4842 < /* Line 1464 of yacc.c  */
4843 < #line 1485 "ircd_parser.y"
4321 >  case 252:
4322 > #line 1487 "conf_parser.y" /* yacc.c:1646  */
4323      {
4324    if (conf_parser_ctx.pass == 1)
4325 <    MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
4325 >    block_state.max_local.value = (yyvsp[-1].number);
4326   }
4327 + #line 4328 "conf_parser.c" /* yacc.c:1646  */
4328      break;
4329  
4330 <  case 221:
4331 <
4852 < /* Line 1464 of yacc.c  */
4853 < #line 1491 "ircd_parser.y"
4330 >  case 253:
4331 > #line 1493 "conf_parser.y" /* yacc.c:1646  */
4332      {
4333    if (conf_parser_ctx.pass == 1)
4334 <    MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
4334 >    block_state.max_ident.value = (yyvsp[-1].number);
4335   }
4336 + #line 4337 "conf_parser.c" /* yacc.c:1646  */
4337      break;
4338  
4339 <  case 222:
4340 <
4862 < /* Line 1464 of yacc.c  */
4863 < #line 1497 "ircd_parser.y"
4339 >  case 254:
4340 > #line 1499 "conf_parser.y" /* yacc.c:1646  */
4341      {
4342    if (conf_parser_ctx.pass == 1)
4343 <    MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
4343 >    block_state.max_sendq.value = (yyvsp[-1].number);
4344   }
4345 + #line 4346 "conf_parser.c" /* yacc.c:1646  */
4346      break;
4347  
4348 <  case 223:
4349 <
4872 < /* Line 1464 of yacc.c  */
4873 < #line 1503 "ircd_parser.y"
4348 >  case 255:
4349 > #line 1505 "conf_parser.y" /* yacc.c:1646  */
4350      {
4351    if (conf_parser_ctx.pass == 1)
4352 <    MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
4352 >    if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4353 >      block_state.max_recvq.value = (yyvsp[-1].number);
4354   }
4355 + #line 4356 "conf_parser.c" /* yacc.c:1646  */
4356      break;
4357  
4358 <  case 224:
4359 <
4882 < /* Line 1464 of yacc.c  */
4883 < #line 1509 "ircd_parser.y"
4358 >  case 256:
4359 > #line 1512 "conf_parser.y" /* yacc.c:1646  */
4360      {
4361    if (conf_parser_ctx.pass == 1)
4362 <    MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
4362 >    block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4363   }
4364 + #line 4365 "conf_parser.c" /* yacc.c:1646  */
4365      break;
4366  
4367 <  case 225:
4368 <
4892 < /* Line 1464 of yacc.c  */
4893 < #line 1515 "ircd_parser.y"
4367 >  case 257:
4368 > #line 1518 "conf_parser.y" /* yacc.c:1646  */
4369      {
4370    if (conf_parser_ctx.pass == 1)
4371 <    CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
4371 >    block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4372   }
4373 + #line 4374 "conf_parser.c" /* yacc.c:1646  */
4374      break;
4375  
4376 <  case 226:
4377 <
4902 < /* Line 1464 of yacc.c  */
4903 < #line 1521 "ircd_parser.y"
4376 >  case 258:
4377 > #line 1524 "conf_parser.y" /* yacc.c:1646  */
4378      {
4379    if (conf_parser_ctx.pass == 1)
4380 <    CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
4380 >    block_state.number_per_cidr.value = (yyvsp[-1].number);
4381 > }
4382 > #line 4383 "conf_parser.c" /* yacc.c:1646  */
4383 >    break;
4384 >
4385 >  case 259:
4386 > #line 1530 "conf_parser.y" /* yacc.c:1646  */
4387 >    {
4388 >  if (conf_parser_ctx.pass != 1)
4389 >    break;
4390 >
4391 >  block_state.min_idle.value = (yyvsp[-1].number);
4392 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4393   }
4394 + #line 4395 "conf_parser.c" /* yacc.c:1646  */
4395      break;
4396  
4397 <  case 227:
4397 >  case 260:
4398 > #line 1539 "conf_parser.y" /* yacc.c:1646  */
4399 >    {
4400 >  if (conf_parser_ctx.pass != 1)
4401 >    break;
4402  
4403 < /* Line 1464 of yacc.c  */
4404 < #line 1527 "ircd_parser.y"
4403 >  block_state.max_idle.value = (yyvsp[-1].number);
4404 >  block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4405 > }
4406 > #line 4407 "conf_parser.c" /* yacc.c:1646  */
4407 >    break;
4408 >
4409 >  case 261:
4410 > #line 1548 "conf_parser.y" /* yacc.c:1646  */
4411      {
4412    if (conf_parser_ctx.pass == 1)
4413 <    NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
4413 >    block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4414   }
4415 + #line 4416 "conf_parser.c" /* yacc.c:1646  */
4416      break;
4417  
4418 <  case 228:
4419 <
4922 < /* Line 1464 of yacc.c  */
4923 < #line 1536 "ircd_parser.y"
4418 >  case 265:
4419 > #line 1555 "conf_parser.y" /* yacc.c:1646  */
4420      {
4421 <  if (conf_parser_ctx.pass == 2)
4422 <  {
4927 <    listener_address = NULL;
4928 <    listener_flags = 0;
4929 <  }
4421 >  if (conf_parser_ctx.pass == 1)
4422 >    block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4423   }
4424 + #line 4425 "conf_parser.c" /* yacc.c:1646  */
4425      break;
4426  
4427 <  case 229:
4427 >  case 266:
4428 > #line 1559 "conf_parser.y" /* yacc.c:1646  */
4429 >    {
4430 >  if (conf_parser_ctx.pass == 1)
4431 >    block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4432 > }
4433 > #line 4434 "conf_parser.c" /* yacc.c:1646  */
4434 >    break;
4435  
4436 < /* Line 1464 of yacc.c  */
4437 < #line 1543 "ircd_parser.y"
4436 >  case 267:
4437 > #line 1569 "conf_parser.y" /* yacc.c:1646  */
4438      {
4439    if (conf_parser_ctx.pass == 2)
4440 <  {
4940 <    MyFree(listener_address);
4941 <    listener_address = NULL;
4942 <  }
4440 >    reset_block_state();
4441   }
4442 + #line 4443 "conf_parser.c" /* yacc.c:1646  */
4443      break;
4444  
4445 <  case 230:
4446 <
4948 < /* Line 1464 of yacc.c  */
4949 < #line 1552 "ircd_parser.y"
4445 >  case 269:
4446 > #line 1575 "conf_parser.y" /* yacc.c:1646  */
4447      {
4448 <  listener_flags = 0;
4448 >  block_state.flags.value = 0;
4449   }
4450 + #line 4451 "conf_parser.c" /* yacc.c:1646  */
4451      break;
4452  
4453 <  case 234:
4454 <
4957 < /* Line 1464 of yacc.c  */
4958 < #line 1558 "ircd_parser.y"
4453 >  case 273:
4454 > #line 1581 "conf_parser.y" /* yacc.c:1646  */
4455      {
4456    if (conf_parser_ctx.pass == 2)
4457 <    listener_flags |= LISTENER_SSL;
4457 >    block_state.flags.value |= LISTENER_SSL;
4458   }
4459 + #line 4460 "conf_parser.c" /* yacc.c:1646  */
4460      break;
4461  
4462 <  case 235:
4463 <
4967 < /* Line 1464 of yacc.c  */
4968 < #line 1562 "ircd_parser.y"
4462 >  case 274:
4463 > #line 1585 "conf_parser.y" /* yacc.c:1646  */
4464      {
4465    if (conf_parser_ctx.pass == 2)
4466 <    listener_flags |= LISTENER_HIDDEN;
4466 >    block_state.flags.value |= LISTENER_HIDDEN;
4467   }
4468 + #line 4469 "conf_parser.c" /* yacc.c:1646  */
4469      break;
4470  
4471 <  case 236:
4472 <
4977 < /* Line 1464 of yacc.c  */
4978 < #line 1566 "ircd_parser.y"
4471 >  case 275:
4472 > #line 1589 "conf_parser.y" /* yacc.c:1646  */
4473      {
4474    if (conf_parser_ctx.pass == 2)
4475 <    listener_flags |= LISTENER_SERVER;
4475 >   block_state.flags.value |= LISTENER_SERVER;
4476   }
4477 + #line 4478 "conf_parser.c" /* yacc.c:1646  */
4478      break;
4479  
4480 <  case 244:
4481 <
4482 < /* Line 1464 of yacc.c  */
4483 < #line 1576 "ircd_parser.y"
4989 <    { listener_flags = 0; }
4480 >  case 283:
4481 > #line 1597 "conf_parser.y" /* yacc.c:1646  */
4482 >    { block_state.flags.value = 0; }
4483 > #line 4484 "conf_parser.c" /* yacc.c:1646  */
4484      break;
4485  
4486 <  case 248:
4487 <
4994 < /* Line 1464 of yacc.c  */
4995 < #line 1581 "ircd_parser.y"
4486 >  case 287:
4487 > #line 1602 "conf_parser.y" /* yacc.c:1646  */
4488      {
4489    if (conf_parser_ctx.pass == 2)
4490    {
4491 <    if ((listener_flags & LISTENER_SSL))
4491 >    if (block_state.flags.value & LISTENER_SSL)
4492   #ifdef HAVE_LIBCRYPTO
4493        if (!ServerInfo.server_ctx)
4494   #endif
4495        {
4496 <        yyerror("SSL not available - port closed");
4497 <        break;
4496 >        conf_error_report("SSL not available - port closed");
4497 >        break;
4498        }
4499 <    add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4499 >    add_listener((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4500    }
4501   }
4502 + #line 4503 "conf_parser.c" /* yacc.c:1646  */
4503      break;
4504  
4505 <  case 249:
4506 <
5014 < /* Line 1464 of yacc.c  */
5015 < #line 1595 "ircd_parser.y"
4505 >  case 288:
4506 > #line 1616 "conf_parser.y" /* yacc.c:1646  */
4507      {
4508    if (conf_parser_ctx.pass == 2)
4509    {
4510 <    int i;
5020 <
5021 <    if ((listener_flags & LISTENER_SSL))
4510 >    if (block_state.flags.value & LISTENER_SSL)
4511   #ifdef HAVE_LIBCRYPTO
4512        if (!ServerInfo.server_ctx)
4513   #endif
4514        {
4515 <        yyerror("SSL not available - port closed");
4516 <        break;
4515 >        conf_error_report("SSL not available - port closed");
4516 >        break;
4517        }
4518  
4519 <    for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4520 <      add_listener(i, listener_address, listener_flags);
4519 >    for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4520 >      add_listener(i, block_state.addr.buf, block_state.flags.value);
4521    }
4522   }
4523 + #line 4524 "conf_parser.c" /* yacc.c:1646  */
4524      break;
4525  
4526 <  case 250:
4527 <
5038 < /* Line 1464 of yacc.c  */
5039 < #line 1615 "ircd_parser.y"
4526 >  case 289:
4527 > #line 1634 "conf_parser.y" /* yacc.c:1646  */
4528      {
4529    if (conf_parser_ctx.pass == 2)
4530 <  {
5043 <    MyFree(listener_address);
5044 <    DupString(listener_address, yylval.string);
5045 <  }
4530 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4531   }
4532 + #line 4533 "conf_parser.c" /* yacc.c:1646  */
4533      break;
4534  
4535 <  case 251:
4536 <
5051 < /* Line 1464 of yacc.c  */
5052 < #line 1624 "ircd_parser.y"
4535 >  case 290:
4536 > #line 1640 "conf_parser.y" /* yacc.c:1646  */
4537      {
4538    if (conf_parser_ctx.pass == 2)
4539 <  {
5056 <    MyFree(listener_address);
5057 <    DupString(listener_address, yylval.string);
5058 <  }
4539 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4540   }
4541 + #line 4542 "conf_parser.c" /* yacc.c:1646  */
4542      break;
4543  
4544 <  case 252:
4545 <
5064 < /* Line 1464 of yacc.c  */
5065 < #line 1636 "ircd_parser.y"
4544 >  case 291:
4545 > #line 1649 "conf_parser.y" /* yacc.c:1646  */
4546      {
4547    if (conf_parser_ctx.pass == 2)
4548 <  {
5069 <    yy_conf = make_conf_item(CLIENT_TYPE);
5070 <    yy_aconf = map_to_conf(yy_conf);
5071 <  }
5072 <  else
5073 <  {
5074 <    MyFree(class_name);
5075 <    class_name = NULL;
5076 <  }
4548 >    reset_block_state();
4549   }
4550 + #line 4551 "conf_parser.c" /* yacc.c:1646  */
4551      break;
4552  
4553 <  case 253:
4554 <
5082 < /* Line 1464 of yacc.c  */
5083 < #line 1648 "ircd_parser.y"
5084 <    {
5085 <  if (conf_parser_ctx.pass == 2)
5086 <  {
5087 <    struct CollectItem *yy_tmp = NULL;
5088 <    dlink_node *ptr = NULL, *next_ptr = NULL;
5089 <
5090 <    if (yy_aconf->user && yy_aconf->host)
4553 >  case 292:
4554 > #line 1653 "conf_parser.y" /* yacc.c:1646  */
4555      {
4556 <      conf_add_class_to_conf(yy_conf, class_name);
5093 <      add_conf_by_address(CONF_CLIENT, yy_aconf);
5094 <    }
5095 <    else
5096 <      delete_conf_item(yy_conf);
5097 <
5098 <    /* copy over settings from first struct */
5099 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5100 <    {
5101 <      struct AccessItem *new_aconf;
5102 <      struct ConfItem *new_conf;
5103 <
5104 <      new_conf = make_conf_item(CLIENT_TYPE);
5105 <      new_aconf = map_to_conf(new_conf);
5106 <
5107 <      yy_tmp = ptr->data;
5108 <
5109 <      assert(yy_tmp->user && yy_tmp->host);
4556 >  dlink_node *ptr = NULL;
4557  
4558 <      if (yy_aconf->passwd != NULL)
5112 <        DupString(new_aconf->passwd, yy_aconf->passwd);
5113 <      if (yy_conf->name != NULL)
5114 <        DupString(new_conf->name, yy_conf->name);
5115 <      if (yy_aconf->passwd != NULL)
5116 <        DupString(new_aconf->passwd, yy_aconf->passwd);
5117 <
5118 <      new_aconf->flags = yy_aconf->flags;
5119 <      new_aconf->port  = yy_aconf->port;
5120 <
5121 <      DupString(new_aconf->user, yy_tmp->user);
5122 <      collapse(new_aconf->user);
5123 <
5124 <      DupString(new_aconf->host, yy_tmp->host);
5125 <      collapse(new_aconf->host);
5126 <
5127 <      conf_add_class_to_conf(new_conf, class_name);
5128 <      add_conf_by_address(CONF_CLIENT, new_aconf);
5129 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
5130 <      free_collect_item(yy_tmp);
5131 <    }
5132 <
5133 <    MyFree(class_name);
5134 <    class_name = NULL;
5135 <    yy_conf = NULL;
5136 <    yy_aconf = NULL;
5137 <  }
5138 < }
4558 >  if (conf_parser_ctx.pass != 2)
4559      break;
4560  
4561 <  case 265:
5142 <
5143 < /* Line 1464 of yacc.c  */
5144 < #line 1710 "ircd_parser.y"
5145 <    {
5146 <  if (conf_parser_ctx.pass == 2)
4561 >  DLINK_FOREACH(ptr, block_state.mask.list.head)
4562    {
4563 <    struct CollectItem *yy_tmp = NULL;
4563 >    struct MaskItem *conf = NULL;
4564      struct split_nuh_item nuh;
4565  
4566 <    nuh.nuhmask  = yylval.string;
4566 >    nuh.nuhmask  = ptr->data;
4567      nuh.nickptr  = NULL;
4568 <    nuh.userptr  = userbuf;
4569 <    nuh.hostptr  = hostbuf;
5155 <
4568 >    nuh.userptr  = block_state.user.buf;
4569 >    nuh.hostptr  = block_state.host.buf;
4570      nuh.nicksize = 0;
4571 <    nuh.usersize = sizeof(userbuf);
4572 <    nuh.hostsize = sizeof(hostbuf);
5159 <
4571 >    nuh.usersize = sizeof(block_state.user.buf);
4572 >    nuh.hostsize = sizeof(block_state.host.buf);
4573      split_nuh(&nuh);
4574  
4575 <    if (yy_aconf->user == NULL)
4576 <    {
4577 <      DupString(yy_aconf->user, userbuf);
5165 <      DupString(yy_aconf->host, hostbuf);
5166 <    }
5167 <    else
5168 <    {
5169 <      yy_tmp = MyMalloc(sizeof(struct CollectItem));
4575 >    conf        = conf_make(CONF_CLIENT);
4576 >    conf->user  = xstrdup(block_state.user.buf);
4577 >    conf->host  = xstrdup(block_state.host.buf);
4578  
4579 <      DupString(yy_tmp->user, userbuf);
4580 <      DupString(yy_tmp->host, hostbuf);
4579 >    if (block_state.rpass.buf[0])
4580 >      conf->passwd = xstrdup(block_state.rpass.buf);
4581 >    if (block_state.name.buf[0])
4582 >      conf->name = xstrdup(block_state.name.buf);
4583  
4584 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4585 <    }
4584 >    conf->flags = block_state.flags.value;
4585 >    conf->port  = block_state.port.value;
4586 >
4587 >    conf_add_class_to_conf(conf, block_state.class.buf);
4588 >    add_conf_by_address(CONF_CLIENT, conf);
4589    }
4590   }
4591 + #line 4592 "conf_parser.c" /* yacc.c:1646  */
4592      break;
4593  
4594 <  case 266:
4595 <
5182 < /* Line 1464 of yacc.c  */
5183 < #line 1747 "ircd_parser.y"
4594 >  case 304:
4595 > #line 1702 "conf_parser.y" /* yacc.c:1646  */
4596      {
4597    if (conf_parser_ctx.pass == 2)
4598 <  {
5187 <    /* be paranoid */
5188 <    if (yy_aconf->passwd != NULL)
5189 <      memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5190 <
5191 <    MyFree(yy_aconf->passwd);
5192 <    DupString(yy_aconf->passwd, yylval.string);
5193 <  }
4598 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4599   }
4600 + #line 4601 "conf_parser.c" /* yacc.c:1646  */
4601      break;
4602  
4603 <  case 267:
4604 <
5199 < /* Line 1464 of yacc.c  */
5200 < #line 1760 "ircd_parser.y"
4603 >  case 305:
4604 > #line 1708 "conf_parser.y" /* yacc.c:1646  */
4605      {
4606    if (conf_parser_ctx.pass == 2)
4607 <  {
5204 <    MyFree(class_name);
5205 <    DupString(class_name, yylval.string);
5206 <  }
4607 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4608   }
4609 + #line 4610 "conf_parser.c" /* yacc.c:1646  */
4610      break;
4611  
4612 <  case 268:
4612 >  case 306:
4613 > #line 1714 "conf_parser.y" /* yacc.c:1646  */
4614 >    {
4615 >  if (conf_parser_ctx.pass == 2)
4616 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4617 > }
4618 > #line 4619 "conf_parser.c" /* yacc.c:1646  */
4619 >    break;
4620  
4621 < /* Line 1464 of yacc.c  */
4622 < #line 1769 "ircd_parser.y"
4621 >  case 307:
4622 > #line 1720 "conf_parser.y" /* yacc.c:1646  */
4623      {
4624    if (conf_parser_ctx.pass == 2)
4625    {
4626      if (yylval.number)
4627 <      SetConfEncrypted(yy_aconf);
4627 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4628      else
4629 <      ClearConfEncrypted(yy_aconf);
4629 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4630    }
4631   }
4632 + #line 4633 "conf_parser.c" /* yacc.c:1646  */
4633      break;
4634  
4635 <  case 269:
4636 <
5227 < /* Line 1464 of yacc.c  */
5228 < #line 1780 "ircd_parser.y"
4635 >  case 308:
4636 > #line 1731 "conf_parser.y" /* yacc.c:1646  */
4637      {
4638 +  if (conf_parser_ctx.pass == 2)
4639 +    block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4640   }
4641 + #line 4642 "conf_parser.c" /* yacc.c:1646  */
4642      break;
4643  
4644 <  case 273:
4645 <
4646 < /* Line 1464 of yacc.c  */
4647 < #line 1784 "ircd_parser.y"
4648 <    { not_atom = 1; }
4649 <    break;
4650 <
5240 <  case 275:
5241 <
5242 < /* Line 1464 of yacc.c  */
5243 < #line 1785 "ircd_parser.y"
5244 <    { not_atom = 0; }
4644 >  case 312:
4645 > #line 1738 "conf_parser.y" /* yacc.c:1646  */
4646 >    {
4647 >  if (conf_parser_ctx.pass == 2)
4648 >    block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4649 > }
4650 > #line 4651 "conf_parser.c" /* yacc.c:1646  */
4651      break;
4652  
4653 <  case 277:
4654 <
5249 < /* Line 1464 of yacc.c  */
5250 < #line 1788 "ircd_parser.y"
4653 >  case 313:
4654 > #line 1742 "conf_parser.y" /* yacc.c:1646  */
4655      {
4656    if (conf_parser_ctx.pass == 2)
4657 <  {
5254 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5255 <    else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5256 <  }
4657 >    block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4658   }
4659 + #line 4660 "conf_parser.c" /* yacc.c:1646  */
4660      break;
4661  
4662 <  case 278:
4663 <
5262 < /* Line 1464 of yacc.c  */
5263 < #line 1795 "ircd_parser.y"
4662 >  case 314:
4663 > #line 1746 "conf_parser.y" /* yacc.c:1646  */
4664      {
4665    if (conf_parser_ctx.pass == 2)
4666 <  {
5267 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5268 <    else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5269 <  }
4666 >    block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4667   }
4668 + #line 4669 "conf_parser.c" /* yacc.c:1646  */
4669      break;
4670  
4671 <  case 279:
4672 <
5275 < /* Line 1464 of yacc.c  */
5276 < #line 1802 "ircd_parser.y"
4671 >  case 315:
4672 > #line 1750 "conf_parser.y" /* yacc.c:1646  */
4673      {
4674    if (conf_parser_ctx.pass == 2)
4675 <  {
5280 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5281 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5282 <  }
4675 >    block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4676   }
4677 + #line 4678 "conf_parser.c" /* yacc.c:1646  */
4678      break;
4679  
4680 <  case 280:
4681 <
5288 < /* Line 1464 of yacc.c  */
5289 < #line 1809 "ircd_parser.y"
4680 >  case 316:
4681 > #line 1754 "conf_parser.y" /* yacc.c:1646  */
4682      {
4683    if (conf_parser_ctx.pass == 2)
4684 <  {
5293 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5294 <    else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5295 <  }
4684 >    block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4685   }
4686 + #line 4687 "conf_parser.c" /* yacc.c:1646  */
4687      break;
4688  
4689 <  case 281:
4690 <
5301 < /* Line 1464 of yacc.c  */
5302 < #line 1816 "ircd_parser.y"
4689 >  case 317:
4690 > #line 1758 "conf_parser.y" /* yacc.c:1646  */
4691      {
4692    if (conf_parser_ctx.pass == 2)
4693 <  {
5306 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5307 <    else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5308 <  }
4693 >    block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4694   }
4695 + #line 4696 "conf_parser.c" /* yacc.c:1646  */
4696      break;
4697  
4698 <  case 282:
4699 <
5314 < /* Line 1464 of yacc.c  */
5315 < #line 1823 "ircd_parser.y"
4698 >  case 318:
4699 > #line 1762 "conf_parser.y" /* yacc.c:1646  */
4700      {
4701    if (conf_parser_ctx.pass == 2)
4702 <  {
5319 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5320 <    else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5321 <  }
4702 >    block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4703   }
4704 + #line 4705 "conf_parser.c" /* yacc.c:1646  */
4705      break;
4706  
4707 <  case 283:
4708 <
5327 < /* Line 1464 of yacc.c  */
5328 < #line 1830 "ircd_parser.y"
4707 >  case 319:
4708 > #line 1766 "conf_parser.y" /* yacc.c:1646  */
4709      {
4710    if (conf_parser_ctx.pass == 2)
4711 <  {
5332 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5333 <    else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5334 <  }
4711 >    block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4712   }
4713 + #line 4714 "conf_parser.c" /* yacc.c:1646  */
4714      break;
4715  
4716 <  case 284:
4717 <
5340 < /* Line 1464 of yacc.c  */
5341 < #line 1837 "ircd_parser.y"
4716 >  case 320:
4717 > #line 1770 "conf_parser.y" /* yacc.c:1646  */
4718      {
4719    if (conf_parser_ctx.pass == 2)
4720 <  {
5345 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5346 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5347 <  }
4720 >    block_state.flags.value |= CONF_FLAGS_WEBIRC;
4721   }
4722 + #line 4723 "conf_parser.c" /* yacc.c:1646  */
4723      break;
4724  
4725 <  case 285:
4726 <
5353 < /* Line 1464 of yacc.c  */
5354 < #line 1844 "ircd_parser.y"
4725 >  case 321:
4726 > #line 1774 "conf_parser.y" /* yacc.c:1646  */
4727      {
4728    if (conf_parser_ctx.pass == 2)
4729 <  {
5358 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5359 <    else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5360 <  }
4729 >    block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4730   }
4731 + #line 4732 "conf_parser.c" /* yacc.c:1646  */
4732      break;
4733  
4734 <  case 286:
4735 <
5366 < /* Line 1464 of yacc.c  */
5367 < #line 1851 "ircd_parser.y"
4734 >  case 322:
4735 > #line 1780 "conf_parser.y" /* yacc.c:1646  */
4736      {
4737 <  if (conf_parser_ctx.pass == 2)
4737 >  if (conf_parser_ctx.pass != 2)
4738 >    break;
4739 >
4740 >  if (valid_hostname(yylval.string))
4741    {
4742 <    if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
4743 <    else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
4742 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4743 >    block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4744    }
4745 +  else
4746 +    ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4747   }
4748 + #line 4749 "conf_parser.c" /* yacc.c:1646  */
4749      break;
4750  
4751 <  case 287:
4752 <
5379 < /* Line 1464 of yacc.c  */
5380 < #line 1861 "ircd_parser.y"
4751 >  case 323:
4752 > #line 1794 "conf_parser.y" /* yacc.c:1646  */
4753      {
4754 <  if (conf_parser_ctx.pass == 2)
4755 <  {
5384 <    MyFree(yy_conf->name);
4754 >  if (conf_parser_ctx.pass != 2)
4755 >    break;
4756  
4757 <    if (strlen(yylval.string) < HOSTLEN)
4758 <    {    
5388 <      DupString(yy_conf->name, yylval.string);
5389 <      yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5390 <    }
5391 <    else
5392 <    {
5393 <      ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5394 <      yy_conf->name = NULL;
5395 <    }
5396 <  }
4757 >  strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4758 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4759   }
4760 + #line 4761 "conf_parser.c" /* yacc.c:1646  */
4761      break;
4762  
4763 <  case 288:
4764 <
5402 < /* Line 1464 of yacc.c  */
5403 < #line 1880 "ircd_parser.y"
4763 >  case 324:
4764 > #line 1803 "conf_parser.y" /* yacc.c:1646  */
4765      {
4766 <  if (conf_parser_ctx.pass == 2)
5406 <  {
5407 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5408 <    MyFree(yy_conf->name);
5409 <    DupString(yy_conf->name, yylval.string);
5410 <  }
5411 < }
4766 >  if (conf_parser_ctx.pass != 2)
4767      break;
4768  
4769 <  case 289:
4769 >  block_state.flags.value |= CONF_FLAGS_REDIR;
4770 >  block_state.port.value = (yyvsp[-1].number);
4771 > }
4772 > #line 4773 "conf_parser.c" /* yacc.c:1646  */
4773 >    break;
4774  
4775 < /* Line 1464 of yacc.c  */
4776 < #line 1890 "ircd_parser.y"
4775 >  case 325:
4776 > #line 1816 "conf_parser.y" /* yacc.c:1646  */
4777      {
4778 <  if (conf_parser_ctx.pass == 2)
5420 <  {
5421 <    yy_aconf->flags |= CONF_FLAGS_REDIR;
5422 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5423 <  }
5424 < }
4778 >  if (conf_parser_ctx.pass != 2)
4779      break;
4780  
4781 <  case 290:
4781 >  reset_block_state();
4782 >  strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4783 > }
4784 > #line 4785 "conf_parser.c" /* yacc.c:1646  */
4785 >    break;
4786  
4787 < /* Line 1464 of yacc.c  */
4788 < #line 1903 "ircd_parser.y"
4787 >  case 326:
4788 > #line 1823 "conf_parser.y" /* yacc.c:1646  */
4789      {
4790 <  if (conf_parser_ctx.pass == 2)
5433 <  {
5434 <    MyFree(resv_reason);
5435 <    resv_reason = NULL;
5436 <  }
5437 < }
4790 >  if (conf_parser_ctx.pass != 2)
4791      break;
4792  
4793 <  case 291:
4793 >  create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4794 > }
4795 > #line 4796 "conf_parser.c" /* yacc.c:1646  */
4796 >    break;
4797  
4798 < /* Line 1464 of yacc.c  */
4799 < #line 1910 "ircd_parser.y"
4798 >  case 333:
4799 > #line 1834 "conf_parser.y" /* yacc.c:1646  */
4800      {
4801    if (conf_parser_ctx.pass == 2)
4802 <  {
5447 <    MyFree(resv_reason);
5448 <    resv_reason = NULL;
5449 <  }
4802 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4803   }
4804 + #line 4805 "conf_parser.c" /* yacc.c:1646  */
4805      break;
4806  
4807 <  case 298:
4808 <
5455 < /* Line 1464 of yacc.c  */
5456 < #line 1922 "ircd_parser.y"
4807 >  case 334:
4808 > #line 1840 "conf_parser.y" /* yacc.c:1646  */
4809      {
4810    if (conf_parser_ctx.pass == 2)
4811 <  {
5460 <    MyFree(resv_reason);
5461 <    DupString(resv_reason, yylval.string);
5462 <  }
4811 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4812   }
4813 + #line 4814 "conf_parser.c" /* yacc.c:1646  */
4814      break;
4815  
4816 <  case 299:
4817 <
5468 < /* Line 1464 of yacc.c  */
5469 < #line 1931 "ircd_parser.y"
4816 >  case 335:
4817 > #line 1846 "conf_parser.y" /* yacc.c:1646  */
4818      {
4819    if (conf_parser_ctx.pass == 2)
4820 <  {
5473 <    if (IsChanPrefix(*yylval.string))
5474 <    {
5475 <      char def_reason[] = "No reason";
5476 <
5477 <      create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5478 <    }
5479 <  }
5480 <  /* ignore it for now.. but we really should make a warning if
5481 <   * its an erroneous name --fl_ */
4820 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4821   }
4822 + #line 4823 "conf_parser.c" /* yacc.c:1646  */
4823      break;
4824  
4825 <  case 300:
4826 <
5487 < /* Line 1464 of yacc.c  */
5488 < #line 1946 "ircd_parser.y"
4825 >  case 341:
4826 > #line 1861 "conf_parser.y" /* yacc.c:1646  */
4827      {
4828 <  if (conf_parser_ctx.pass == 2)
4829 <  {
5492 <    char def_reason[] = "No reason";
4828 >  if (conf_parser_ctx.pass != 2)
4829 >    break;
4830  
4831 <    create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
4831 >  if (valid_servname(yylval.string))
4832 >  {
4833 >    struct MaskItem *conf = conf_make(CONF_SERVICE);
4834 >    conf->name = xstrdup(yylval.string);
4835    }
4836   }
4837 + #line 4838 "conf_parser.c" /* yacc.c:1646  */
4838      break;
4839  
4840 <  case 301:
4841 <
5501 < /* Line 1464 of yacc.c  */
5502 < #line 1959 "ircd_parser.y"
4840 >  case 342:
4841 > #line 1876 "conf_parser.y" /* yacc.c:1646  */
4842      {
4843 <  if (conf_parser_ctx.pass == 2)
5505 <  {
5506 <    yy_conf = make_conf_item(ULINE_TYPE);
5507 <    yy_match_item = map_to_conf(yy_conf);
5508 <    yy_match_item->action = SHARED_ALL;
5509 <  }
5510 < }
4843 >  if (conf_parser_ctx.pass != 2)
4844      break;
4845  
4846 <  case 302:
4846 >  reset_block_state();
4847  
4848 < /* Line 1464 of yacc.c  */
4849 < #line 1967 "ircd_parser.y"
4850 <    {
4851 <  if (conf_parser_ctx.pass == 2)
5519 <  {
5520 <    yy_conf = NULL;
5521 <  }
4848 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4849 >  strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4850 >  strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4851 >  block_state.flags.value = SHARED_ALL;
4852   }
4853 + #line 4854 "conf_parser.c" /* yacc.c:1646  */
4854 +    break;
4855 +
4856 +  case 343:
4857 + #line 1887 "conf_parser.y" /* yacc.c:1646  */
4858 +    {
4859 +  struct MaskItem *conf = NULL;
4860 +
4861 +  if (conf_parser_ctx.pass != 2)
4862      break;
4863  
4864 <  case 309:
4864 >  conf = conf_make(CONF_ULINE);
4865 >  conf->flags = block_state.flags.value;
4866 >  conf->name = xstrdup(block_state.name.buf);
4867 >  conf->user = xstrdup(block_state.user.buf);
4868 >  conf->host = xstrdup(block_state.host.buf);
4869 > }
4870 > #line 4871 "conf_parser.c" /* yacc.c:1646  */
4871 >    break;
4872  
4873 < /* Line 1464 of yacc.c  */
4874 < #line 1978 "ircd_parser.y"
4873 >  case 350:
4874 > #line 1904 "conf_parser.y" /* yacc.c:1646  */
4875      {
4876    if (conf_parser_ctx.pass == 2)
4877 <  {
5532 <    MyFree(yy_conf->name);
5533 <    DupString(yy_conf->name, yylval.string);
5534 <  }
4877 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4878   }
4879 + #line 4880 "conf_parser.c" /* yacc.c:1646  */
4880      break;
4881  
4882 <  case 310:
4883 <
5540 < /* Line 1464 of yacc.c  */
5541 < #line 1987 "ircd_parser.y"
4882 >  case 351:
4883 > #line 1910 "conf_parser.y" /* yacc.c:1646  */
4884      {
4885    if (conf_parser_ctx.pass == 2)
4886    {
# Line 5546 | Line 4888 | yyreduce:
4888  
4889      nuh.nuhmask  = yylval.string;
4890      nuh.nickptr  = NULL;
4891 <    nuh.userptr  = userbuf;
4892 <    nuh.hostptr  = hostbuf;
4891 >    nuh.userptr  = block_state.user.buf;
4892 >    nuh.hostptr  = block_state.host.buf;
4893  
4894      nuh.nicksize = 0;
4895 <    nuh.usersize = sizeof(userbuf);
4896 <    nuh.hostsize = sizeof(hostbuf);
4895 >    nuh.usersize = sizeof(block_state.user.buf);
4896 >    nuh.hostsize = sizeof(block_state.host.buf);
4897  
4898      split_nuh(&nuh);
5557
5558    DupString(yy_match_item->user, userbuf);
5559    DupString(yy_match_item->host, hostbuf);
4899    }
4900   }
4901 + #line 4902 "conf_parser.c" /* yacc.c:1646  */
4902      break;
4903  
4904 <  case 311:
4905 <
5566 < /* Line 1464 of yacc.c  */
5567 < #line 2009 "ircd_parser.y"
4904 >  case 352:
4905 > #line 1929 "conf_parser.y" /* yacc.c:1646  */
4906      {
4907    if (conf_parser_ctx.pass == 2)
4908 <    yy_match_item->action = 0;
4908 >    block_state.flags.value = 0;
4909   }
4910 + #line 4911 "conf_parser.c" /* yacc.c:1646  */
4911      break;
4912  
4913 <  case 315:
4914 <
5576 < /* Line 1464 of yacc.c  */
5577 < #line 2016 "ircd_parser.y"
4913 >  case 356:
4914 > #line 1936 "conf_parser.y" /* yacc.c:1646  */
4915      {
4916    if (conf_parser_ctx.pass == 2)
4917 <    yy_match_item->action |= SHARED_KLINE;
4917 >    block_state.flags.value |= SHARED_KLINE;
4918   }
4919 + #line 4920 "conf_parser.c" /* yacc.c:1646  */
4920      break;
4921  
4922 <  case 316:
4923 <
5586 < /* Line 1464 of yacc.c  */
5587 < #line 2020 "ircd_parser.y"
4922 >  case 357:
4923 > #line 1940 "conf_parser.y" /* yacc.c:1646  */
4924      {
4925    if (conf_parser_ctx.pass == 2)
4926 <    yy_match_item->action |= SHARED_TKLINE;
4926 >    block_state.flags.value |= SHARED_UNKLINE;
4927   }
4928 + #line 4929 "conf_parser.c" /* yacc.c:1646  */
4929      break;
4930  
4931 <  case 317:
4932 <
5596 < /* Line 1464 of yacc.c  */
5597 < #line 2024 "ircd_parser.y"
4931 >  case 358:
4932 > #line 1944 "conf_parser.y" /* yacc.c:1646  */
4933      {
4934    if (conf_parser_ctx.pass == 2)
4935 <    yy_match_item->action |= SHARED_UNKLINE;
4935 >    block_state.flags.value |= SHARED_DLINE;
4936   }
4937 + #line 4938 "conf_parser.c" /* yacc.c:1646  */
4938      break;
4939  
4940 <  case 318:
4941 <
5606 < /* Line 1464 of yacc.c  */
5607 < #line 2028 "ircd_parser.y"
4940 >  case 359:
4941 > #line 1948 "conf_parser.y" /* yacc.c:1646  */
4942      {
4943    if (conf_parser_ctx.pass == 2)
4944 <    yy_match_item->action |= SHARED_XLINE;
4944 >    block_state.flags.value |= SHARED_UNDLINE;
4945   }
4946 + #line 4947 "conf_parser.c" /* yacc.c:1646  */
4947      break;
4948  
4949 <  case 319:
4950 <
5616 < /* Line 1464 of yacc.c  */
5617 < #line 2032 "ircd_parser.y"
4949 >  case 360:
4950 > #line 1952 "conf_parser.y" /* yacc.c:1646  */
4951      {
4952    if (conf_parser_ctx.pass == 2)
4953 <    yy_match_item->action |= SHARED_TXLINE;
4953 >    block_state.flags.value |= SHARED_XLINE;
4954   }
4955 + #line 4956 "conf_parser.c" /* yacc.c:1646  */
4956      break;
4957  
4958 <  case 320:
4959 <
5626 < /* Line 1464 of yacc.c  */
5627 < #line 2036 "ircd_parser.y"
4958 >  case 361:
4959 > #line 1956 "conf_parser.y" /* yacc.c:1646  */
4960      {
4961    if (conf_parser_ctx.pass == 2)
4962 <    yy_match_item->action |= SHARED_UNXLINE;
4962 >    block_state.flags.value |= SHARED_UNXLINE;
4963   }
4964 + #line 4965 "conf_parser.c" /* yacc.c:1646  */
4965      break;
4966  
4967 <  case 321:
4968 <
5636 < /* Line 1464 of yacc.c  */
5637 < #line 2040 "ircd_parser.y"
4967 >  case 362:
4968 > #line 1960 "conf_parser.y" /* yacc.c:1646  */
4969      {
4970    if (conf_parser_ctx.pass == 2)
4971 <    yy_match_item->action |= SHARED_RESV;
4971 >    block_state.flags.value |= SHARED_RESV;
4972   }
4973 + #line 4974 "conf_parser.c" /* yacc.c:1646  */
4974      break;
4975  
4976 <  case 322:
4977 <
5646 < /* Line 1464 of yacc.c  */
5647 < #line 2044 "ircd_parser.y"
4976 >  case 363:
4977 > #line 1964 "conf_parser.y" /* yacc.c:1646  */
4978      {
4979    if (conf_parser_ctx.pass == 2)
4980 <    yy_match_item->action |= SHARED_TRESV;
4980 >    block_state.flags.value |= SHARED_UNRESV;
4981   }
4982 + #line 4983 "conf_parser.c" /* yacc.c:1646  */
4983      break;
4984  
4985 <  case 323:
4986 <
5656 < /* Line 1464 of yacc.c  */
5657 < #line 2048 "ircd_parser.y"
4985 >  case 364:
4986 > #line 1968 "conf_parser.y" /* yacc.c:1646  */
4987      {
4988    if (conf_parser_ctx.pass == 2)
4989 <    yy_match_item->action |= SHARED_UNRESV;
4989 >    block_state.flags.value |= SHARED_LOCOPS;
4990   }
4991 + #line 4992 "conf_parser.c" /* yacc.c:1646  */
4992      break;
4993  
4994 <  case 324:
4995 <
5666 < /* Line 1464 of yacc.c  */
5667 < #line 2052 "ircd_parser.y"
4994 >  case 365:
4995 > #line 1972 "conf_parser.y" /* yacc.c:1646  */
4996      {
4997    if (conf_parser_ctx.pass == 2)
4998 <    yy_match_item->action |= SHARED_LOCOPS;
4998 >    block_state.flags.value = SHARED_ALL;
4999   }
5000 + #line 5001 "conf_parser.c" /* yacc.c:1646  */
5001      break;
5002  
5003 <  case 325:
5004 <
5676 < /* Line 1464 of yacc.c  */
5677 < #line 2056 "ircd_parser.y"
5003 >  case 366:
5004 > #line 1981 "conf_parser.y" /* yacc.c:1646  */
5005      {
5006 <  if (conf_parser_ctx.pass == 2)
5680 <    yy_match_item->action = SHARED_ALL;
5681 < }
5006 >  if (conf_parser_ctx.pass != 2)
5007      break;
5008  
5009 <  case 326:
5009 >  reset_block_state();
5010  
5011 < /* Line 1464 of yacc.c  */
5012 < #line 2065 "ircd_parser.y"
5688 <    {
5689 <  if (conf_parser_ctx.pass == 2)
5690 <  {
5691 <    yy_conf = make_conf_item(CLUSTER_TYPE);
5692 <    yy_conf->flags = SHARED_ALL;
5693 <  }
5011 >  strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5012 >  block_state.flags.value = SHARED_ALL;
5013   }
5014 + #line 5015 "conf_parser.c" /* yacc.c:1646  */
5015      break;
5016  
5017 <  case 327:
5018 <
5699 < /* Line 1464 of yacc.c  */
5700 < #line 2072 "ircd_parser.y"
5017 >  case 367:
5018 > #line 1990 "conf_parser.y" /* yacc.c:1646  */
5019      {
5020 <  if (conf_parser_ctx.pass == 2)
5703 <  {
5704 <    if (yy_conf->name == NULL)
5705 <      DupString(yy_conf->name, "*");
5706 <    yy_conf = NULL;
5707 <  }
5708 < }
5709 <    break;
5710 <
5711 <  case 333:
5020 >  struct MaskItem *conf = NULL;
5021  
5022 < /* Line 1464 of yacc.c  */
5714 < #line 2085 "ircd_parser.y"
5715 <    {
5716 <  if (conf_parser_ctx.pass == 2)
5717 <    DupString(yy_conf->name, yylval.string);
5718 < }
5022 >  if (conf_parser_ctx.pass != 2)
5023      break;
5024  
5025 <  case 334:
5026 <
5027 < /* Line 1464 of yacc.c  */
5724 < #line 2091 "ircd_parser.y"
5725 <    {
5726 <  if (conf_parser_ctx.pass == 2)
5727 <    yy_conf->flags = 0;
5025 >  conf = conf_make(CONF_CLUSTER);
5026 >  conf->flags = block_state.flags.value;
5027 >  conf->name = xstrdup(block_state.name.buf);
5028   }
5029 + #line 5030 "conf_parser.c" /* yacc.c:1646  */
5030      break;
5031  
5032 <  case 338:
5033 <
5733 < /* Line 1464 of yacc.c  */
5734 < #line 2098 "ircd_parser.y"
5032 >  case 373:
5033 > #line 2005 "conf_parser.y" /* yacc.c:1646  */
5034      {
5035    if (conf_parser_ctx.pass == 2)
5036 <    yy_conf->flags |= SHARED_KLINE;
5036 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5037   }
5038 + #line 5039 "conf_parser.c" /* yacc.c:1646  */
5039      break;
5040  
5041 <  case 339:
5042 <
5743 < /* Line 1464 of yacc.c  */
5744 < #line 2102 "ircd_parser.y"
5041 >  case 374:
5042 > #line 2011 "conf_parser.y" /* yacc.c:1646  */
5043      {
5044    if (conf_parser_ctx.pass == 2)
5045 <    yy_conf->flags |= SHARED_TKLINE;
5045 >    block_state.flags.value = 0;
5046   }
5047 + #line 5048 "conf_parser.c" /* yacc.c:1646  */
5048      break;
5049  
5050 <  case 340:
5051 <
5753 < /* Line 1464 of yacc.c  */
5754 < #line 2106 "ircd_parser.y"
5050 >  case 378:
5051 > #line 2018 "conf_parser.y" /* yacc.c:1646  */
5052      {
5053    if (conf_parser_ctx.pass == 2)
5054 <    yy_conf->flags |= SHARED_UNKLINE;
5054 >    block_state.flags.value |= SHARED_KLINE;
5055   }
5056 + #line 5057 "conf_parser.c" /* yacc.c:1646  */
5057      break;
5058  
5059 <  case 341:
5060 <
5763 < /* Line 1464 of yacc.c  */
5764 < #line 2110 "ircd_parser.y"
5059 >  case 379:
5060 > #line 2022 "conf_parser.y" /* yacc.c:1646  */
5061      {
5062    if (conf_parser_ctx.pass == 2)
5063 <    yy_conf->flags |= SHARED_XLINE;
5063 >    block_state.flags.value |= SHARED_UNKLINE;
5064   }
5065 + #line 5066 "conf_parser.c" /* yacc.c:1646  */
5066      break;
5067  
5068 <  case 342:
5069 <
5773 < /* Line 1464 of yacc.c  */
5774 < #line 2114 "ircd_parser.y"
5068 >  case 380:
5069 > #line 2026 "conf_parser.y" /* yacc.c:1646  */
5070      {
5071    if (conf_parser_ctx.pass == 2)
5072 <    yy_conf->flags |= SHARED_TXLINE;
5072 >    block_state.flags.value |= SHARED_DLINE;
5073   }
5074 + #line 5075 "conf_parser.c" /* yacc.c:1646  */
5075      break;
5076  
5077 <  case 343:
5078 <
5783 < /* Line 1464 of yacc.c  */
5784 < #line 2118 "ircd_parser.y"
5077 >  case 381:
5078 > #line 2030 "conf_parser.y" /* yacc.c:1646  */
5079      {
5080    if (conf_parser_ctx.pass == 2)
5081 <    yy_conf->flags |= SHARED_UNXLINE;
5081 >    block_state.flags.value |= SHARED_UNDLINE;
5082   }
5083 + #line 5084 "conf_parser.c" /* yacc.c:1646  */
5084      break;
5085  
5086 <  case 344:
5087 <
5793 < /* Line 1464 of yacc.c  */
5794 < #line 2122 "ircd_parser.y"
5086 >  case 382:
5087 > #line 2034 "conf_parser.y" /* yacc.c:1646  */
5088      {
5089    if (conf_parser_ctx.pass == 2)
5090 <    yy_conf->flags |= SHARED_RESV;
5090 >    block_state.flags.value |= SHARED_XLINE;
5091   }
5092 + #line 5093 "conf_parser.c" /* yacc.c:1646  */
5093      break;
5094  
5095 <  case 345:
5096 <
5803 < /* Line 1464 of yacc.c  */
5804 < #line 2126 "ircd_parser.y"
5095 >  case 383:
5096 > #line 2038 "conf_parser.y" /* yacc.c:1646  */
5097      {
5098    if (conf_parser_ctx.pass == 2)
5099 <    yy_conf->flags |= SHARED_TRESV;
5099 >    block_state.flags.value |= SHARED_UNXLINE;
5100   }
5101 + #line 5102 "conf_parser.c" /* yacc.c:1646  */
5102      break;
5103  
5104 <  case 346:
5105 <
5813 < /* Line 1464 of yacc.c  */
5814 < #line 2130 "ircd_parser.y"
5104 >  case 384:
5105 > #line 2042 "conf_parser.y" /* yacc.c:1646  */
5106      {
5107    if (conf_parser_ctx.pass == 2)
5108 <    yy_conf->flags |= SHARED_UNRESV;
5108 >    block_state.flags.value |= SHARED_RESV;
5109   }
5110 + #line 5111 "conf_parser.c" /* yacc.c:1646  */
5111      break;
5112  
5113 <  case 347:
5114 <
5823 < /* Line 1464 of yacc.c  */
5824 < #line 2134 "ircd_parser.y"
5113 >  case 385:
5114 > #line 2046 "conf_parser.y" /* yacc.c:1646  */
5115      {
5116    if (conf_parser_ctx.pass == 2)
5117 <    yy_conf->flags |= SHARED_LOCOPS;
5117 >    block_state.flags.value |= SHARED_UNRESV;
5118   }
5119 + #line 5120 "conf_parser.c" /* yacc.c:1646  */
5120      break;
5121  
5122 <  case 348:
5123 <
5833 < /* Line 1464 of yacc.c  */
5834 < #line 2138 "ircd_parser.y"
5122 >  case 386:
5123 > #line 2050 "conf_parser.y" /* yacc.c:1646  */
5124      {
5125    if (conf_parser_ctx.pass == 2)
5126 <    yy_conf->flags = SHARED_ALL;
5126 >    block_state.flags.value |= SHARED_LOCOPS;
5127   }
5128 + #line 5129 "conf_parser.c" /* yacc.c:1646  */
5129      break;
5130  
5131 <  case 349:
5132 <
5843 < /* Line 1464 of yacc.c  */
5844 < #line 2147 "ircd_parser.y"
5131 >  case 387:
5132 > #line 2054 "conf_parser.y" /* yacc.c:1646  */
5133      {
5134    if (conf_parser_ctx.pass == 2)
5135 <  {
5848 <    yy_conf = make_conf_item(SERVER_TYPE);
5849 <    yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
5850 <    yy_aconf->passwd = NULL;
5851 <    /* defaults */
5852 <    yy_aconf->port = PORTNUM;
5853 <
5854 <    if (ConfigFileEntry.burst_away)
5855 <      yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
5856 <  }
5857 <  else
5858 <  {
5859 <    MyFree(class_name);
5860 <    class_name = NULL;
5861 <  }
5135 >    block_state.flags.value = SHARED_ALL;
5136   }
5137 + #line 5138 "conf_parser.c" /* yacc.c:1646  */
5138      break;
5139  
5140 <  case 350:
5141 <
5867 < /* Line 1464 of yacc.c  */
5868 < #line 2165 "ircd_parser.y"
5140 >  case 388:
5141 > #line 2063 "conf_parser.y" /* yacc.c:1646  */
5142      {
5870  if (conf_parser_ctx.pass == 2)
5871  {
5872    struct CollectItem *yy_hconf=NULL;
5873    struct CollectItem *yy_lconf=NULL;
5874    dlink_node *ptr;
5875    dlink_node *next_ptr;
5876 #ifdef HAVE_LIBCRYPTO
5877    if (yy_aconf->host &&
5878        ((yy_aconf->passwd && yy_aconf->spasswd) ||
5879         (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
5880 #else /* !HAVE_LIBCRYPTO */
5881      if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
5882          yy_aconf->passwd && yy_aconf->spasswd)
5883 #endif /* !HAVE_LIBCRYPTO */
5884        {
5885          if (conf_add_server(yy_conf, class_name) == -1)
5886          {
5887            delete_conf_item(yy_conf);
5888            yy_conf = NULL;
5889            yy_aconf = NULL;
5890          }
5891        }
5892        else
5893        {
5894          /* Even if yy_conf ->name is NULL
5895           * should still unhook any hub/leaf confs still pending
5896           */
5897          unhook_hub_leaf_confs();
5898
5899          if (yy_conf->name != NULL)
5900          {
5901 #ifndef HAVE_LIBCRYPTO
5902            if (IsConfCryptLink(yy_aconf))
5903              yyerror("Ignoring connect block -- no OpenSSL support");
5904 #else
5905            if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
5906              yyerror("Ignoring connect block -- missing key");
5907 #endif
5908            if (yy_aconf->host == NULL)
5909              yyerror("Ignoring connect block -- missing host");
5910            else if (!IsConfCryptLink(yy_aconf) &&
5911                    (!yy_aconf->passwd || !yy_aconf->spasswd))
5912              yyerror("Ignoring connect block -- missing password");
5913          }
5914
5915
5916          /* XXX
5917           * This fixes a try_connections() core (caused by invalid class_ptr
5918           * pointers) reported by metalrock. That's an ugly fix, but there
5919           * is currently no better way. The entire config subsystem needs an
5920           * rewrite ASAP. make_conf_item() shouldn't really add things onto
5921           * a doubly linked list immediately without any sanity checks!  -Michael
5922           */
5923          delete_conf_item(yy_conf);
5924
5925          yy_aconf = NULL;
5926          yy_conf = NULL;
5927        }
5928
5929      /*
5930       * yy_conf is still pointing at the server that is having
5931       * a connect block built for it. This means, y_aconf->name
5932       * points to the actual irc name this server will be known as.
5933       * Now this new server has a set or even just one hub_mask (or leaf_mask)
5934       * given in the link list at yy_hconf. Fill in the HUB confs
5935       * from this link list now.
5936       */        
5937      DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5938      {
5939        struct ConfItem *new_hub_conf;
5940        struct MatchItem *match_item;
5941
5942        yy_hconf = ptr->data;
5943
5944        /* yy_conf == NULL is a fatal error for this connect block! */
5945        if ((yy_conf != NULL) && (yy_conf->name != NULL))
5946        {
5947          new_hub_conf = make_conf_item(HUB_TYPE);
5948          match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5949          DupString(new_hub_conf->name, yy_conf->name);
5950          if (yy_hconf->user != NULL)
5951            DupString(match_item->user, yy_hconf->user);
5952          else
5953            DupString(match_item->user, "*");
5954          if (yy_hconf->host != NULL)
5955            DupString(match_item->host, yy_hconf->host);
5956          else
5957            DupString(match_item->host, "*");
5958        }
5959        dlinkDelete(&yy_hconf->node, &hub_conf_list);
5960        free_collect_item(yy_hconf);
5961      }
5143  
5144 <      /* Ditto for the LEAF confs */
5145 <
5965 <      DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5966 <      {
5967 <        struct ConfItem *new_leaf_conf;
5968 <        struct MatchItem *match_item;
5969 <
5970 <        yy_lconf = ptr->data;
5144 >  if (conf_parser_ctx.pass != 2)
5145 >    break;
5146  
5147 <        if ((yy_conf != NULL) && (yy_conf->name != NULL))
5148 <        {
5149 <          new_leaf_conf = make_conf_item(LEAF_TYPE);
5975 <          match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5976 <          DupString(new_leaf_conf->name, yy_conf->name);
5977 <          if (yy_lconf->user != NULL)
5978 <            DupString(match_item->user, yy_lconf->user);
5979 <          else
5980 <            DupString(match_item->user, "*");
5981 <          if (yy_lconf->host != NULL)
5982 <            DupString(match_item->host, yy_lconf->host);
5983 <          else
5984 <            DupString(match_item->host, "*");
5985 <        }
5986 <        dlinkDelete(&yy_lconf->node, &leaf_conf_list);
5987 <        free_collect_item(yy_lconf);
5988 <      }
5989 <      MyFree(class_name);
5990 <      class_name = NULL;
5991 <      yy_conf = NULL;
5992 <      yy_aconf = NULL;
5993 <  }
5147 >  reset_block_state();
5148 >  block_state.aftype.value = AF_INET;
5149 >  block_state.port.value = PORTNUM;
5150   }
5151 + #line 5152 "conf_parser.c" /* yacc.c:1646  */
5152      break;
5153  
5154 <  case 370:
5155 <
5999 < /* Line 1464 of yacc.c  */
6000 < #line 2303 "ircd_parser.y"
5154 >  case 389:
5155 > #line 2072 "conf_parser.y" /* yacc.c:1646  */
5156      {
5157 <  if (conf_parser_ctx.pass == 2)
5158 <  {
6004 <    if (yy_conf->name != NULL)
6005 <      yyerror("Multiple connect name entry");
5157 >  struct MaskItem *conf = NULL;
5158 >  struct addrinfo hints, *res;
5159  
5160 <    MyFree(yy_conf->name);
6008 <    DupString(yy_conf->name, yylval.string);
6009 <  }
6010 < }
5160 >  if (conf_parser_ctx.pass != 2)
5161      break;
5162  
5163 <  case 371:
5163 >  if (!block_state.name.buf[0] ||
5164 >      !block_state.host.buf[0])
5165 >    break;
5166  
5167 < /* Line 1464 of yacc.c  */
5168 < #line 2315 "ircd_parser.y"
5169 <    {
6018 <  if (conf_parser_ctx.pass == 2)
6019 <  {
6020 <    if (yy_conf->name != NULL)
6021 <      yyerror("Multiple connect name entry");
5167 >  if (!block_state.rpass.buf[0] ||
5168 >      !block_state.spass.buf[0])
5169 >    break;
5170  
5171 <    MyFree(yy_conf->name);
5172 <    DupString(yy_conf->name, yylval.string);
6025 <  }
6026 < }
5171 >  if (has_wildcards(block_state.name.buf) ||
5172 >      has_wildcards(block_state.host.buf))
5173      break;
5174  
5175 <  case 372:
5175 >  conf = conf_make(CONF_SERVER);
5176 >  conf->port = block_state.port.value;
5177 >  conf->flags = block_state.flags.value;
5178 >  conf->aftype = block_state.aftype.value;
5179 >  conf->host = xstrdup(block_state.host.buf);
5180 >  conf->name = xstrdup(block_state.name.buf);
5181 >  conf->passwd = xstrdup(block_state.rpass.buf);
5182 >  conf->spasswd = xstrdup(block_state.spass.buf);
5183  
5184 < /* Line 1464 of yacc.c  */
5185 < #line 2327 "ircd_parser.y"
6033 <    {
6034 <  if (conf_parser_ctx.pass == 2)
6035 <  {
6036 <    MyFree(yy_aconf->host);
6037 <    DupString(yy_aconf->host, yylval.string);
6038 <  }
6039 < }
6040 <    break;
5184 >  if (block_state.cert.buf[0])
5185 >    conf->certfp = xstrdup(block_state.cert.buf);
5186  
5187 <  case 373:
5187 >  if (block_state.ciph.buf[0])
5188 >    conf->cipher_list = xstrdup(block_state.ciph.buf);
5189  
5190 < /* Line 1464 of yacc.c  */
5191 < #line 2336 "ircd_parser.y"
6046 <    {
6047 <  if (conf_parser_ctx.pass == 2)
6048 <  {
6049 <    struct addrinfo hints, *res;
5190 >  dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5191 >  dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5192  
5193 +  if (block_state.bind.buf[0])
5194 +  {
5195      memset(&hints, 0, sizeof(hints));
5196  
5197      hints.ai_family   = AF_UNSPEC;
5198      hints.ai_socktype = SOCK_STREAM;
5199      hints.ai_flags    = AI_PASSIVE | AI_NUMERICHOST;
5200  
5201 <    if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
5202 <      ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
5201 >    if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5202 >      ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5203      else
5204      {
5205 <      assert(res != NULL);
5205 >      assert(res);
5206  
5207 <      memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
5208 <      yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
5209 <      yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
5210 <      irc_freeaddrinfo(res);
5207 >      memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5208 >      conf->bind.ss.ss_family = res->ai_family;
5209 >      conf->bind.ss_len = res->ai_addrlen;
5210 >      freeaddrinfo(res);
5211      }
5212    }
6069 }
6070    break;
5213  
5214 <  case 374:
5215 <
6074 < /* Line 1464 of yacc.c  */
6075 < #line 2362 "ircd_parser.y"
6076 <    {
6077 <  if (conf_parser_ctx.pass == 2)
6078 <  {
6079 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
6080 <      yyerror("Server passwords cannot begin with a colon");
6081 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6082 <      yyerror("Server passwords cannot contain spaces");
6083 <    else {
6084 <      if (yy_aconf->spasswd != NULL)
6085 <        memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6086 <
6087 <      MyFree(yy_aconf->spasswd);
6088 <      DupString(yy_aconf->spasswd, yylval.string);
6089 <    }
6090 <  }
5214 >  conf_add_class_to_conf(conf, block_state.class.buf);
5215 >  lookup_confhost(conf);
5216   }
5217 + #line 5218 "conf_parser.c" /* yacc.c:1646  */
5218      break;
5219  
5220 <  case 375:
5221 <
6096 < /* Line 1464 of yacc.c  */
6097 < #line 2380 "ircd_parser.y"
5220 >  case 407:
5221 > #line 2152 "conf_parser.y" /* yacc.c:1646  */
5222      {
5223    if (conf_parser_ctx.pass == 2)
5224 <  {
6101 <    if ((yyvsp[(3) - (4)].string)[0] == ':')
6102 <      yyerror("Server passwords cannot begin with a colon");
6103 <    else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6104 <      yyerror("Server passwords cannot contain spaces");
6105 <    else {
6106 <      if (yy_aconf->passwd != NULL)
6107 <        memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6108 <
6109 <      MyFree(yy_aconf->passwd);
6110 <      DupString(yy_aconf->passwd, yylval.string);
6111 <    }
6112 <  }
5224 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5225   }
5226 + #line 5227 "conf_parser.c" /* yacc.c:1646  */
5227      break;
5228  
5229 <  case 376:
5230 <
6118 < /* Line 1464 of yacc.c  */
6119 < #line 2398 "ircd_parser.y"
5229 >  case 408:
5230 > #line 2158 "conf_parser.y" /* yacc.c:1646  */
5231      {
5232    if (conf_parser_ctx.pass == 2)
5233 <    yy_aconf->port = (yyvsp[(3) - (4)].number);
5233 >    strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5234   }
5235 + #line 5236 "conf_parser.c" /* yacc.c:1646  */
5236      break;
5237  
5238 <  case 377:
5239 <
6128 < /* Line 1464 of yacc.c  */
6129 < #line 2404 "ircd_parser.y"
5238 >  case 409:
5239 > #line 2164 "conf_parser.y" /* yacc.c:1646  */
5240      {
5241    if (conf_parser_ctx.pass == 2)
5242 <    yy_aconf->aftype = AF_INET;
5242 >    strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5243   }
5244 + #line 5245 "conf_parser.c" /* yacc.c:1646  */
5245      break;
5246  
5247 <  case 378:
5248 <
6138 < /* Line 1464 of yacc.c  */
6139 < #line 2408 "ircd_parser.y"
5247 >  case 410:
5248 > #line 2170 "conf_parser.y" /* yacc.c:1646  */
5249      {
5250 < #ifdef IPV6
6142 <  if (conf_parser_ctx.pass == 2)
6143 <    yy_aconf->aftype = AF_INET6;
6144 < #endif
6145 < }
5250 >  if (conf_parser_ctx.pass != 2)
5251      break;
5252  
5253 <  case 379:
5254 <
5255 < /* Line 1464 of yacc.c  */
5256 < #line 2416 "ircd_parser.y"
5257 <    {
5253 >  if ((yyvsp[-1].string)[0] == ':')
5254 >    conf_error_report("Server passwords cannot begin with a colon");
5255 >  else if (strchr((yyvsp[-1].string), ' '))
5256 >    conf_error_report("Server passwords cannot contain spaces");
5257 >  else
5258 >    strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5259   }
5260 + #line 5261 "conf_parser.c" /* yacc.c:1646  */
5261      break;
5262  
5263 <  case 383:
5264 <
5265 < /* Line 1464 of yacc.c  */
5266 < #line 2420 "ircd_parser.y"
6160 <    { not_atom = 1; }
5263 >  case 411:
5264 > #line 2183 "conf_parser.y" /* yacc.c:1646  */
5265 >    {
5266 >  if (conf_parser_ctx.pass != 2)
5267      break;
5268  
5269 <  case 385:
5270 <
5271 < /* Line 1464 of yacc.c  */
5272 < #line 2421 "ircd_parser.y"
5273 <    { not_atom = 0; }
5269 >  if ((yyvsp[-1].string)[0] == ':')
5270 >    conf_error_report("Server passwords cannot begin with a colon");
5271 >  else if (strchr((yyvsp[-1].string), ' '))
5272 >    conf_error_report("Server passwords cannot contain spaces");
5273 >  else
5274 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5275 > }
5276 > #line 5277 "conf_parser.c" /* yacc.c:1646  */
5277      break;
5278  
5279 <  case 387:
5280 <
6172 < /* Line 1464 of yacc.c  */
6173 < #line 2424 "ircd_parser.y"
5279 >  case 412:
5280 > #line 2196 "conf_parser.y" /* yacc.c:1646  */
5281      {
5282    if (conf_parser_ctx.pass == 2)
5283 < #ifndef HAVE_LIBZ
6177 <    yyerror("Ignoring flags = compressed; -- no zlib support");
6178 < #else
6179 < {
6180 <   if (not_atom)ClearConfCompressed(yy_aconf);
6181 <   else SetConfCompressed(yy_aconf);
6182 < }
6183 < #endif
5283 >    strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5284   }
5285 + #line 5286 "conf_parser.c" /* yacc.c:1646  */
5286      break;
5287  
5288 <  case 388:
5289 <
6189 < /* Line 1464 of yacc.c  */
6190 < #line 2435 "ircd_parser.y"
5288 >  case 413:
5289 > #line 2202 "conf_parser.y" /* yacc.c:1646  */
5290      {
5291    if (conf_parser_ctx.pass == 2)
5292 <  {
6194 <    if (not_atom)ClearConfCryptLink(yy_aconf);
6195 <    else SetConfCryptLink(yy_aconf);
6196 <  }
5292 >    block_state.port.value = (yyvsp[-1].number);
5293   }
5294 + #line 5295 "conf_parser.c" /* yacc.c:1646  */
5295      break;
5296  
5297 <  case 389:
5298 <
6202 < /* Line 1464 of yacc.c  */
6203 < #line 2442 "ircd_parser.y"
5297 >  case 414:
5298 > #line 2208 "conf_parser.y" /* yacc.c:1646  */
5299      {
5300    if (conf_parser_ctx.pass == 2)
5301 <  {
6207 <    if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6208 <    else SetConfAllowAutoConn(yy_aconf);
6209 <  }
5301 >    block_state.aftype.value = AF_INET;
5302   }
5303 + #line 5304 "conf_parser.c" /* yacc.c:1646  */
5304      break;
5305  
5306 <  case 390:
5307 <
6215 < /* Line 1464 of yacc.c  */
6216 < #line 2449 "ircd_parser.y"
5306 >  case 415:
5307 > #line 2212 "conf_parser.y" /* yacc.c:1646  */
5308      {
5309 + #ifdef IPV6
5310    if (conf_parser_ctx.pass == 2)
5311 <  {
5312 <    if (not_atom)ClearConfAwayBurst(yy_aconf);
6221 <    else SetConfAwayBurst(yy_aconf);
6222 <  }
5311 >    block_state.aftype.value = AF_INET6;
5312 > #endif
5313   }
5314 + #line 5315 "conf_parser.c" /* yacc.c:1646  */
5315      break;
5316  
5317 <  case 391:
5318 <
6228 < /* Line 1464 of yacc.c  */
6229 < #line 2456 "ircd_parser.y"
5317 >  case 416:
5318 > #line 2220 "conf_parser.y" /* yacc.c:1646  */
5319      {
5320 <  if (conf_parser_ctx.pass == 2)
6232 <  {
6233 <    if (not_atom)ClearConfTopicBurst(yy_aconf);
6234 <    else SetConfTopicBurst(yy_aconf);
6235 <  }
5320 >  block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5321   }
5322 + #line 5323 "conf_parser.c" /* yacc.c:1646  */
5323      break;
5324  
5325 <  case 392:
5326 <
6241 < /* Line 1464 of yacc.c  */
6242 < #line 2466 "ircd_parser.y"
5325 >  case 420:
5326 > #line 2226 "conf_parser.y" /* yacc.c:1646  */
5327      {
6244 #ifdef HAVE_LIBCRYPTO
5328    if (conf_parser_ctx.pass == 2)
5329 <  {
5330 <    BIO *file;
5331 <
5332 <    if (yy_aconf->rsa_public_key != NULL)
6250 <    {
6251 <      RSA_free(yy_aconf->rsa_public_key);
6252 <      yy_aconf->rsa_public_key = NULL;
6253 <    }
6254 <
6255 <    if (yy_aconf->rsa_public_key_file != NULL)
6256 <    {
6257 <      MyFree(yy_aconf->rsa_public_key_file);
6258 <      yy_aconf->rsa_public_key_file = NULL;
6259 <    }
6260 <
6261 <    DupString(yy_aconf->rsa_public_key_file, yylval.string);
6262 <
6263 <    if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6264 <    {
6265 <      yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6266 <      break;
6267 <    }
6268 <
6269 <    yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
5329 >    block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5330 > }
5331 > #line 5332 "conf_parser.c" /* yacc.c:1646  */
5332 >    break;
5333  
5334 <    if (yy_aconf->rsa_public_key == NULL)
5334 >  case 421:
5335 > #line 2230 "conf_parser.y" /* yacc.c:1646  */
5336      {
5337 <      yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
5338 <      break;
6275 <    }
6276 <      
6277 <    BIO_set_close(file, BIO_CLOSE);
6278 <    BIO_free(file);
6279 <  }
6280 < #endif /* HAVE_LIBCRYPTO */
5337 >  if (conf_parser_ctx.pass == 2)
5338 >    block_state.flags.value |= CONF_FLAGS_SSL;
5339   }
5340 + #line 5341 "conf_parser.c" /* yacc.c:1646  */
5341      break;
5342  
5343 <  case 393:
5344 <
6286 < /* Line 1464 of yacc.c  */
6287 < #line 2507 "ircd_parser.y"
5343 >  case 422:
5344 > #line 2236 "conf_parser.y" /* yacc.c:1646  */
5345      {
5346    if (conf_parser_ctx.pass == 2)
5347    {
5348      if (yylval.number)
5349 <      yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
5349 >      block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5350      else
5351 <      yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
5351 >      block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5352    }
5353   }
5354 + #line 5355 "conf_parser.c" /* yacc.c:1646  */
5355      break;
5356  
5357 <  case 394:
5358 <
6301 < /* Line 1464 of yacc.c  */
6302 < #line 2518 "ircd_parser.y"
5357 >  case 423:
5358 > #line 2247 "conf_parser.y" /* yacc.c:1646  */
5359      {
5360    if (conf_parser_ctx.pass == 2)
5361 <  {
6306 <    struct CollectItem *yy_tmp;
6307 <
6308 <    yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6309 <    DupString(yy_tmp->host, yylval.string);
6310 <    DupString(yy_tmp->user, "*");
6311 <    dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6312 <  }
5361 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5362   }
5363 + #line 5364 "conf_parser.c" /* yacc.c:1646  */
5364      break;
5365  
5366 <  case 395:
5367 <
6318 < /* Line 1464 of yacc.c  */
6319 < #line 2531 "ircd_parser.y"
5366 >  case 424:
5367 > #line 2253 "conf_parser.y" /* yacc.c:1646  */
5368      {
5369    if (conf_parser_ctx.pass == 2)
5370 <  {
6323 <    struct CollectItem *yy_tmp;
6324 <
6325 <    yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6326 <    DupString(yy_tmp->host, yylval.string);
6327 <    DupString(yy_tmp->user, "*");
6328 <    dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6329 <  }
5370 >    dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5371   }
5372 + #line 5373 "conf_parser.c" /* yacc.c:1646  */
5373      break;
5374  
5375 <  case 396:
5376 <
6335 < /* Line 1464 of yacc.c  */
6336 < #line 2544 "ircd_parser.y"
5375 >  case 425:
5376 > #line 2259 "conf_parser.y" /* yacc.c:1646  */
5377      {
5378    if (conf_parser_ctx.pass == 2)
5379 <  {
6340 <    MyFree(class_name);
6341 <    DupString(class_name, yylval.string);
6342 <  }
5379 >    strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5380   }
5381 + #line 5382 "conf_parser.c" /* yacc.c:1646  */
5382      break;
5383  
5384 <  case 397:
5385 <
6348 < /* Line 1464 of yacc.c  */
6349 < #line 2553 "ircd_parser.y"
5384 >  case 426:
5385 > #line 2265 "conf_parser.y" /* yacc.c:1646  */
5386      {
5387   #ifdef HAVE_LIBCRYPTO
5388    if (conf_parser_ctx.pass == 2)
5389 <  {
6354 <    struct EncCapability *ecap;
6355 <    const char *cipher_name;
6356 <    int found = 0;
6357 <
6358 <    yy_aconf->cipher_preference = NULL;
6359 <    cipher_name = yylval.string;
6360 <
6361 <    for (ecap = CipherTable; ecap->name; ecap++)
6362 <    {
6363 <      if ((irccmp(ecap->name, cipher_name) == 0) &&
6364 <          (ecap->cap & CAP_ENC_MASK))
6365 <      {
6366 <        yy_aconf->cipher_preference = ecap;
6367 <        found = 1;
6368 <        break;
6369 <      }
6370 <    }
6371 <
6372 <    if (!found)
6373 <      yyerror("Invalid cipher");
6374 <  }
5389 >    strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5390   #else
5391    if (conf_parser_ctx.pass == 2)
5392 <    yyerror("Ignoring cipher_preference -- no OpenSSL support");
5392 >    conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5393   #endif
5394   }
5395 + #line 5396 "conf_parser.c" /* yacc.c:1646  */
5396      break;
5397  
5398 <  case 398:
5399 <
6384 < /* Line 1464 of yacc.c  */
6385 < #line 2588 "ircd_parser.y"
5398 >  case 427:
5399 > #line 2280 "conf_parser.y" /* yacc.c:1646  */
5400      {
5401    if (conf_parser_ctx.pass == 2)
5402 <  {
6389 <    userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6390 <    regex_ban = 0;
6391 <  }
5402 >    reset_block_state();
5403   }
5404 + #line 5405 "conf_parser.c" /* yacc.c:1646  */
5405      break;
5406  
5407 <  case 399:
5408 <
6397 < /* Line 1464 of yacc.c  */
6398 < #line 2595 "ircd_parser.y"
6399 <    {
6400 <  if (conf_parser_ctx.pass == 2)
6401 <  {
6402 <    if (userbuf[0] && hostbuf[0])
5407 >  case 428:
5408 > #line 2284 "conf_parser.y" /* yacc.c:1646  */
5409      {
5410 <      if (regex_ban)
6405 <      {
6406 < #ifdef HAVE_LIBPCRE
6407 <        void *exp_user = NULL;
6408 <        void *exp_host = NULL;
6409 <        const char *errptr = NULL;
6410 <
6411 <        if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6412 <            !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6413 <        {
6414 <          ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6415 <               errptr);
6416 <          break;
6417 <        }
6418 <
6419 <        yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6420 <        yy_aconf->regexuser = exp_user;
6421 <        yy_aconf->regexhost = exp_host;
6422 <
6423 <        DupString(yy_aconf->user, userbuf);
6424 <        DupString(yy_aconf->host, hostbuf);
6425 <
6426 <        if (reasonbuf[0])
6427 <          DupString(yy_aconf->reason, reasonbuf);
6428 <        else
6429 <          DupString(yy_aconf->reason, "No reason");
6430 < #else
6431 <        ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6432 <        break;
6433 < #endif
6434 <      }
6435 <      else
6436 <      {
6437 <        yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
5410 >  struct MaskItem *conf = NULL;
5411  
5412 <        DupString(yy_aconf->user, userbuf);
6440 <        DupString(yy_aconf->host, hostbuf);
6441 <
6442 <        if (reasonbuf[0])
6443 <          DupString(yy_aconf->reason, reasonbuf);
6444 <        else
6445 <          DupString(yy_aconf->reason, "No reason");
6446 <        add_conf_by_address(CONF_KILL, yy_aconf);
6447 <      }
6448 <    }
6449 <
6450 <    yy_aconf = NULL;
6451 <  }
6452 < }
5412 >  if (conf_parser_ctx.pass != 2)
5413      break;
5414  
5415 <  case 400:
5416 <
6457 < /* Line 1464 of yacc.c  */
6458 < #line 2651 "ircd_parser.y"
6459 <    {
6460 < }
5415 >  if (!block_state.user.buf[0] ||
5416 >      !block_state.host.buf[0])
5417      break;
5418  
5419 <  case 404:
5419 >  conf = conf_make(CONF_KLINE);
5420 >  conf->user = xstrdup(block_state.user.buf);
5421 >  conf->host = xstrdup(block_state.host.buf);
5422  
5423 < /* Line 1464 of yacc.c  */
5424 < #line 2656 "ircd_parser.y"
5425 <    {
5426 <  if (conf_parser_ctx.pass == 2)
5427 <    regex_ban = 1;
5423 >  if (block_state.rpass.buf[0])
5424 >    conf->reason = xstrdup(block_state.rpass.buf);
5425 >  else
5426 >    conf->reason = xstrdup(CONF_NOREASON);
5427 >  add_conf_by_address(CONF_KLINE, conf);
5428   }
5429 + #line 5430 "conf_parser.c" /* yacc.c:1646  */
5430      break;
5431  
5432 <  case 411:
5433 <
6475 < /* Line 1464 of yacc.c  */
6476 < #line 2665 "ircd_parser.y"
5432 >  case 434:
5433 > #line 2309 "conf_parser.y" /* yacc.c:1646  */
5434      {
5435 +
5436    if (conf_parser_ctx.pass == 2)
5437    {
5438      struct split_nuh_item nuh;
5439  
5440      nuh.nuhmask  = yylval.string;
5441      nuh.nickptr  = NULL;
5442 <    nuh.userptr  = userbuf;
5443 <    nuh.hostptr  = hostbuf;
5442 >    nuh.userptr  = block_state.user.buf;
5443 >    nuh.hostptr  = block_state.host.buf;
5444  
5445      nuh.nicksize = 0;
5446 <    nuh.usersize = sizeof(userbuf);
5447 <    nuh.hostsize = sizeof(hostbuf);
5446 >    nuh.usersize = sizeof(block_state.user.buf);
5447 >    nuh.hostsize = sizeof(block_state.host.buf);
5448  
5449      split_nuh(&nuh);
5450    }
5451   }
5452 + #line 5453 "conf_parser.c" /* yacc.c:1646  */
5453      break;
5454  
5455 <  case 412:
5456 <
6498 < /* Line 1464 of yacc.c  */
6499 < #line 2684 "ircd_parser.y"
5455 >  case 435:
5456 > #line 2329 "conf_parser.y" /* yacc.c:1646  */
5457      {
5458    if (conf_parser_ctx.pass == 2)
5459 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5459 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5460   }
5461 + #line 5462 "conf_parser.c" /* yacc.c:1646  */
5462      break;
5463  
5464 <  case 413:
5465 <
6508 < /* Line 1464 of yacc.c  */
6509 < #line 2693 "ircd_parser.y"
5464 >  case 436:
5465 > #line 2338 "conf_parser.y" /* yacc.c:1646  */
5466      {
5467    if (conf_parser_ctx.pass == 2)
5468 <    hostbuf[0] = reasonbuf[0] = '\0';
5468 >    reset_block_state();
5469   }
5470 + #line 5471 "conf_parser.c" /* yacc.c:1646  */
5471      break;
5472  
5473 <  case 414:
5474 <
6518 < /* Line 1464 of yacc.c  */
6519 < #line 2697 "ircd_parser.y"
6520 <    {
6521 <  if (conf_parser_ctx.pass == 2)
6522 <  {
6523 <    if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5473 >  case 437:
5474 > #line 2342 "conf_parser.y" /* yacc.c:1646  */
5475      {
5476 <      yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6526 <      DupString(yy_aconf->host, hostbuf);
5476 >  struct MaskItem *conf = NULL;
5477  
5478 <      if (reasonbuf[0])
6529 <        DupString(yy_aconf->reason, reasonbuf);
6530 <      else
6531 <        DupString(yy_aconf->reason, "No reason");
6532 <      add_conf_by_address(CONF_DLINE, yy_aconf);
6533 <      yy_aconf = NULL;
6534 <    }
6535 <  }
6536 < }
5478 >  if (conf_parser_ctx.pass != 2)
5479      break;
5480  
5481 <  case 420:
6540 <
6541 < /* Line 1464 of yacc.c  */
6542 < #line 2719 "ircd_parser.y"
6543 <    {
6544 <  if (conf_parser_ctx.pass == 2)
6545 <    strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6546 < }
5481 >  if (!block_state.addr.buf[0])
5482      break;
5483  
5484 <  case 421:
5484 >  if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5485 >  {
5486 >    conf = conf_make(CONF_DLINE);
5487 >    conf->host = xstrdup(block_state.addr.buf);
5488  
5489 < /* Line 1464 of yacc.c  */
5490 < #line 2725 "ircd_parser.y"
5491 <    {
5492 <  if (conf_parser_ctx.pass == 2)
5493 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5489 >    if (block_state.rpass.buf[0])
5490 >      conf->reason = xstrdup(block_state.rpass.buf);
5491 >    else
5492 >      conf->reason = xstrdup(CONF_NOREASON);
5493 >    add_conf_by_address(CONF_DLINE, conf);
5494 >  }
5495   }
5496 + #line 5497 "conf_parser.c" /* yacc.c:1646  */
5497      break;
5498  
5499 <  case 427:
5500 <
6561 < /* Line 1464 of yacc.c  */
6562 < #line 2739 "ircd_parser.y"
5499 >  case 443:
5500 > #line 2368 "conf_parser.y" /* yacc.c:1646  */
5501      {
5502    if (conf_parser_ctx.pass == 2)
5503 <  {
6566 <    if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6567 <    {
6568 <      yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6569 <      DupString(yy_aconf->host, yylval.string);
6570 <
6571 <      add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6572 <      yy_aconf = NULL;
6573 <    }
6574 <  }
5503 >    strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5504   }
5505 + #line 5506 "conf_parser.c" /* yacc.c:1646  */
5506      break;
5507  
5508 <  case 428:
5509 <
6580 < /* Line 1464 of yacc.c  */
6581 < #line 2757 "ircd_parser.y"
5508 >  case 444:
5509 > #line 2374 "conf_parser.y" /* yacc.c:1646  */
5510      {
5511    if (conf_parser_ctx.pass == 2)
5512 <  {
6585 <    regex_ban = 0;
6586 <    reasonbuf[0] = gecos_name[0] = '\0';
6587 <  }
5512 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5513   }
5514 + #line 5515 "conf_parser.c" /* yacc.c:1646  */
5515      break;
5516  
5517 <  case 429:
5518 <
6593 < /* Line 1464 of yacc.c  */
6594 < #line 2764 "ircd_parser.y"
5517 >  case 450:
5518 > #line 2388 "conf_parser.y" /* yacc.c:1646  */
5519      {
5520    if (conf_parser_ctx.pass == 2)
5521    {
5522 <    if (gecos_name[0])
5522 >    if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5523      {
5524 <      if (regex_ban)
5525 <      {
6602 < #ifdef HAVE_LIBPCRE
6603 <        void *exp_p = NULL;
6604 <        const char *errptr = NULL;
5524 >      struct MaskItem *conf = conf_make(CONF_EXEMPT);
5525 >      conf->host = xstrdup(yylval.string);
5526  
5527 <        if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6607 <        {
6608 <          ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
6609 <               errptr);
6610 <          break;
6611 <        }
6612 <
6613 <        yy_conf = make_conf_item(RXLINE_TYPE);
6614 <        yy_conf->regexpname = exp_p;
6615 < #else
6616 <        ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
6617 <        break;
6618 < #endif
6619 <      }
6620 <      else
6621 <        yy_conf = make_conf_item(XLINE_TYPE);
6622 <
6623 <      yy_match_item = map_to_conf(yy_conf);
6624 <      DupString(yy_conf->name, gecos_name);
6625 <
6626 <      if (reasonbuf[0])
6627 <        DupString(yy_match_item->reason, reasonbuf);
6628 <      else
6629 <        DupString(yy_match_item->reason, "No reason");
5527 >      add_conf_by_address(CONF_EXEMPT, conf);
5528      }
5529    }
5530   }
5531 + #line 5532 "conf_parser.c" /* yacc.c:1646  */
5532      break;
5533  
5534 <  case 430:
5535 <
6637 < /* Line 1464 of yacc.c  */
6638 < #line 2804 "ircd_parser.y"
6639 <    {
6640 < }
6641 <    break;
6642 <
6643 <  case 434:
6644 <
6645 < /* Line 1464 of yacc.c  */
6646 < #line 2809 "ircd_parser.y"
5534 >  case 451:
5535 > #line 2405 "conf_parser.y" /* yacc.c:1646  */
5536      {
5537    if (conf_parser_ctx.pass == 2)
5538 <    regex_ban = 1;
5538 >    reset_block_state();
5539   }
5540 + #line 5541 "conf_parser.c" /* yacc.c:1646  */
5541      break;
5542  
5543 <  case 441:
5544 <
6655 < /* Line 1464 of yacc.c  */
6656 < #line 2818 "ircd_parser.y"
5543 >  case 452:
5544 > #line 2409 "conf_parser.y" /* yacc.c:1646  */
5545      {
5546 <  if (conf_parser_ctx.pass == 2)
6659 <    strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6660 < }
6661 <    break;
5546 >  struct MaskItem *conf = NULL;
5547  
5548 <  case 442:
6664 <
6665 < /* Line 1464 of yacc.c  */
6666 < #line 2824 "ircd_parser.y"
6667 <    {
6668 <  if (conf_parser_ctx.pass == 2)
6669 <    strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6670 < }
5548 >  if (conf_parser_ctx.pass != 2)
5549      break;
5550  
5551 <  case 502:
6674 <
6675 < /* Line 1464 of yacc.c  */
6676 < #line 2869 "ircd_parser.y"
6677 <    {
6678 <  ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6679 < }
5551 >  if (!block_state.name.buf[0])
5552      break;
5553  
5554 <  case 503:
5554 >  conf = conf_make(CONF_XLINE);
5555 >  conf->name = xstrdup(block_state.name.buf);
5556  
5557 < /* Line 1464 of yacc.c  */
5558 < #line 2874 "ircd_parser.y"
5559 <    {
5560 <  ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6688 < }
6689 <    break;
6690 <
6691 <  case 504:
6692 <
6693 < /* Line 1464 of yacc.c  */
6694 < #line 2879 "ircd_parser.y"
6695 <    {
6696 <  ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6697 < }
6698 <    break;
6699 <
6700 <  case 505:
6701 <
6702 < /* Line 1464 of yacc.c  */
6703 < #line 2884 "ircd_parser.y"
6704 <    {
6705 <  ConfigFileEntry.burst_away = yylval.number;
6706 < }
6707 <    break;
6708 <
6709 <  case 506:
6710 <
6711 < /* Line 1464 of yacc.c  */
6712 < #line 2889 "ircd_parser.y"
6713 <    {
6714 <  ConfigFileEntry.use_whois_actually = yylval.number;
6715 < }
6716 <    break;
6717 <
6718 <  case 507:
6719 <
6720 < /* Line 1464 of yacc.c  */
6721 < #line 2894 "ircd_parser.y"
6722 <    {
6723 <  GlobalSetOptions.rejecttime = yylval.number;
6724 < }
6725 <    break;
6726 <
6727 <  case 508:
6728 <
6729 < /* Line 1464 of yacc.c  */
6730 < #line 2899 "ircd_parser.y"
6731 <    {
6732 <  ConfigFileEntry.tkline_expire_notices = yylval.number;
6733 < }
6734 <    break;
6735 <
6736 <  case 509:
6737 <
6738 < /* Line 1464 of yacc.c  */
6739 < #line 2904 "ircd_parser.y"
6740 <    {
6741 <  ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6742 < }
6743 <    break;
6744 <
6745 <  case 510:
6746 <
6747 < /* Line 1464 of yacc.c  */
6748 < #line 2909 "ircd_parser.y"
6749 <    {
6750 <  ConfigFileEntry.hide_spoof_ips = yylval.number;
5557 >  if (block_state.rpass.buf[0])
5558 >    conf->reason = xstrdup(block_state.rpass.buf);
5559 >  else
5560 >    conf->reason = xstrdup(CONF_NOREASON);
5561   }
5562 + #line 5563 "conf_parser.c" /* yacc.c:1646  */
5563      break;
5564  
5565 <  case 511:
5566 <
6756 < /* Line 1464 of yacc.c  */
6757 < #line 2914 "ircd_parser.y"
5565 >  case 458:
5566 > #line 2431 "conf_parser.y" /* yacc.c:1646  */
5567      {
5568 <  ConfigFileEntry.ignore_bogus_ts = yylval.number;
5568 >  if (conf_parser_ctx.pass == 2)
5569 >    strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5570   }
5571 + #line 5572 "conf_parser.c" /* yacc.c:1646  */
5572      break;
5573  
5574 <  case 512:
5575 <
6765 < /* Line 1464 of yacc.c  */
6766 < #line 2919 "ircd_parser.y"
5574 >  case 459:
5575 > #line 2437 "conf_parser.y" /* yacc.c:1646  */
5576      {
5577 <  ConfigFileEntry.disable_remote = yylval.number;
5577 >  if (conf_parser_ctx.pass == 2)
5578 >    strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5579   }
5580 + #line 5581 "conf_parser.c" /* yacc.c:1646  */
5581      break;
5582  
5583    case 513:
5584 <
6774 < /* Line 1464 of yacc.c  */
6775 < #line 2924 "ircd_parser.y"
5584 > #line 2502 "conf_parser.y" /* yacc.c:1646  */
5585      {
5586 <  ConfigFileEntry.failed_oper_notice = yylval.number;
5586 >  ConfigFileEntry.max_watch = (yyvsp[-1].number);
5587   }
5588 + #line 5589 "conf_parser.c" /* yacc.c:1646  */
5589      break;
5590  
5591    case 514:
5592 <
6783 < /* Line 1464 of yacc.c  */
6784 < #line 2929 "ircd_parser.y"
5592 > #line 2507 "conf_parser.y" /* yacc.c:1646  */
5593      {
5594 <  ConfigFileEntry.anti_nick_flood = yylval.number;
5594 >  if (conf_parser_ctx.pass == 2)
5595 >    ConfigFileEntry.cycle_on_host_change = yylval.number;
5596   }
5597 + #line 5598 "conf_parser.c" /* yacc.c:1646  */
5598      break;
5599  
5600    case 515:
5601 <
6792 < /* Line 1464 of yacc.c  */
6793 < #line 2934 "ircd_parser.y"
5601 > #line 2513 "conf_parser.y" /* yacc.c:1646  */
5602      {
5603 <  ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5603 >  if (conf_parser_ctx.pass == 2)
5604 >    ConfigFileEntry.glines = yylval.number;
5605   }
5606 + #line 5607 "conf_parser.c" /* yacc.c:1646  */
5607      break;
5608  
5609    case 516:
5610 <
6801 < /* Line 1464 of yacc.c  */
6802 < #line 2939 "ircd_parser.y"
5610 > #line 2519 "conf_parser.y" /* yacc.c:1646  */
5611      {
5612 <  ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5612 >  if (conf_parser_ctx.pass == 2)
5613 >    ConfigFileEntry.gline_time = (yyvsp[-1].number);
5614   }
5615 + #line 5616 "conf_parser.c" /* yacc.c:1646  */
5616      break;
5617  
5618    case 517:
5619 <
6810 < /* Line 1464 of yacc.c  */
6811 < #line 2944 "ircd_parser.y"
5619 > #line 2525 "conf_parser.y" /* yacc.c:1646  */
5620      {
5621 <  ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5621 >  if (conf_parser_ctx.pass == 2)
5622 >    ConfigFileEntry.gline_request_time = (yyvsp[-1].number);
5623   }
5624 + #line 5625 "conf_parser.c" /* yacc.c:1646  */
5625      break;
5626  
5627    case 518:
5628 <
6819 < /* Line 1464 of yacc.c  */
6820 < #line 2949 "ircd_parser.y"
5628 > #line 2531 "conf_parser.y" /* yacc.c:1646  */
5629      {
5630 <  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5630 >  ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5631   }
5632 + #line 5633 "conf_parser.c" /* yacc.c:1646  */
5633      break;
5634  
5635    case 519:
5636 <
6828 < /* Line 1464 of yacc.c  */
6829 < #line 2954 "ircd_parser.y"
5636 > #line 2536 "conf_parser.y" /* yacc.c:1646  */
5637      {
5638 <  ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5638 >  ConfigFileEntry.gline_min_cidr6 = (yyvsp[-1].number);
5639   }
5640 + #line 5641 "conf_parser.c" /* yacc.c:1646  */
5641      break;
5642  
5643    case 520:
5644 <
6837 < /* Line 1464 of yacc.c  */
6838 < #line 2959 "ircd_parser.y"
5644 > #line 2541 "conf_parser.y" /* yacc.c:1646  */
5645      {
5646 <  if (conf_parser_ctx.pass == 2)
6841 <    ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5646 >  ConfigFileEntry.tkline_expire_notices = yylval.number;
5647   }
5648 + #line 5649 "conf_parser.c" /* yacc.c:1646  */
5649      break;
5650  
5651    case 521:
5652 <
6847 < /* Line 1464 of yacc.c  */
6848 < #line 2965 "ircd_parser.y"
5652 > #line 2546 "conf_parser.y" /* yacc.c:1646  */
5653      {
5654 <  if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6851 <  {
6852 <    ilog(L_CRIT, "You haven't read your config file properly.");
6853 <    ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
6854 <    ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
6855 <    exit(0);
6856 <  }
5654 >  ConfigFileEntry.kill_chase_time_limit = (yyvsp[-1].number);
5655   }
5656 + #line 5657 "conf_parser.c" /* yacc.c:1646  */
5657      break;
5658  
5659    case 522:
5660 <
6862 < /* Line 1464 of yacc.c  */
6863 < #line 2976 "ircd_parser.y"
5660 > #line 2551 "conf_parser.y" /* yacc.c:1646  */
5661      {
5662 <  ConfigFileEntry.kline_with_reason = yylval.number;
5662 >  ConfigFileEntry.hide_spoof_ips = yylval.number;
5663   }
5664 + #line 5665 "conf_parser.c" /* yacc.c:1646  */
5665      break;
5666  
5667    case 523:
5668 <
6871 < /* Line 1464 of yacc.c  */
6872 < #line 2981 "ircd_parser.y"
5668 > #line 2556 "conf_parser.y" /* yacc.c:1646  */
5669      {
5670 <  if (conf_parser_ctx.pass == 2)
6875 <  {
6876 <    MyFree(ConfigFileEntry.kline_reason);
6877 <    DupString(ConfigFileEntry.kline_reason, yylval.string);
6878 <  }
5670 >  ConfigFileEntry.ignore_bogus_ts = yylval.number;
5671   }
5672 + #line 5673 "conf_parser.c" /* yacc.c:1646  */
5673      break;
5674  
5675    case 524:
5676 <
6884 < /* Line 1464 of yacc.c  */
6885 < #line 2990 "ircd_parser.y"
5676 > #line 2561 "conf_parser.y" /* yacc.c:1646  */
5677      {
5678 <  ConfigFileEntry.invisible_on_connect = yylval.number;
5678 >  ConfigFileEntry.failed_oper_notice = yylval.number;
5679   }
5680 + #line 5681 "conf_parser.c" /* yacc.c:1646  */
5681      break;
5682  
5683    case 525:
5684 <
6893 < /* Line 1464 of yacc.c  */
6894 < #line 2995 "ircd_parser.y"
5684 > #line 2566 "conf_parser.y" /* yacc.c:1646  */
5685      {
5686 <  ConfigFileEntry.warn_no_nline = yylval.number;
5686 >  ConfigFileEntry.anti_nick_flood = yylval.number;
5687   }
5688 + #line 5689 "conf_parser.c" /* yacc.c:1646  */
5689      break;
5690  
5691    case 526:
5692 <
6902 < /* Line 1464 of yacc.c  */
6903 < #line 3000 "ircd_parser.y"
5692 > #line 2571 "conf_parser.y" /* yacc.c:1646  */
5693      {
5694 <  ConfigFileEntry.stats_e_disabled = yylval.number;
5694 >  ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5695   }
5696 + #line 5697 "conf_parser.c" /* yacc.c:1646  */
5697      break;
5698  
5699    case 527:
5700 <
6911 < /* Line 1464 of yacc.c  */
6912 < #line 3005 "ircd_parser.y"
5700 > #line 2576 "conf_parser.y" /* yacc.c:1646  */
5701      {
5702 <  ConfigFileEntry.stats_o_oper_only = yylval.number;
5702 >  ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5703   }
5704 + #line 5705 "conf_parser.c" /* yacc.c:1646  */
5705      break;
5706  
5707    case 528:
5708 <
6920 < /* Line 1464 of yacc.c  */
6921 < #line 3010 "ircd_parser.y"
5708 > #line 2581 "conf_parser.y" /* yacc.c:1646  */
5709      {
5710 <  ConfigFileEntry.stats_P_oper_only = yylval.number;
5710 >  ConfigFileEntry.max_accept = (yyvsp[-1].number);
5711   }
5712 + #line 5713 "conf_parser.c" /* yacc.c:1646  */
5713      break;
5714  
5715    case 529:
5716 <
6929 < /* Line 1464 of yacc.c  */
6930 < #line 3015 "ircd_parser.y"
5716 > #line 2586 "conf_parser.y" /* yacc.c:1646  */
5717      {
5718 <  ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5718 >  ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[-1].number);
5719   }
5720 + #line 5721 "conf_parser.c" /* yacc.c:1646  */
5721      break;
5722  
5723    case 530:
5724 <
6938 < /* Line 1464 of yacc.c  */
6939 < #line 3018 "ircd_parser.y"
5724 > #line 2591 "conf_parser.y" /* yacc.c:1646  */
5725      {
5726 <  ConfigFileEntry.stats_k_oper_only = 1;
5726 >  ConfigFileEntry.ts_warn_delta = (yyvsp[-1].number);
5727   }
5728 + #line 5729 "conf_parser.c" /* yacc.c:1646  */
5729      break;
5730  
5731    case 531:
5732 <
6947 < /* Line 1464 of yacc.c  */
6948 < #line 3023 "ircd_parser.y"
5732 > #line 2596 "conf_parser.y" /* yacc.c:1646  */
5733      {
5734 <  ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5734 >  if (conf_parser_ctx.pass == 2)
5735 >    ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5736   }
5737 + #line 5738 "conf_parser.c" /* yacc.c:1646  */
5738      break;
5739  
5740    case 532:
5741 <
6956 < /* Line 1464 of yacc.c  */
6957 < #line 3026 "ircd_parser.y"
5741 > #line 2602 "conf_parser.y" /* yacc.c:1646  */
5742      {
5743 <  ConfigFileEntry.stats_i_oper_only = 1;
5743 >  if (((yyvsp[-1].number) > 0) && conf_parser_ctx.pass == 1)
5744 >  {
5745 >    ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5746 >    ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5747 >    ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5748 >    exit(0);
5749 >  }
5750   }
5751 + #line 5752 "conf_parser.c" /* yacc.c:1646  */
5752      break;
5753  
5754    case 533:
5755 <
6965 < /* Line 1464 of yacc.c  */
6966 < #line 3031 "ircd_parser.y"
5755 > #line 2613 "conf_parser.y" /* yacc.c:1646  */
5756      {
5757 <  ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5757 >  ConfigFileEntry.invisible_on_connect = yylval.number;
5758   }
5759 + #line 5760 "conf_parser.c" /* yacc.c:1646  */
5760      break;
5761  
5762    case 534:
5763 <
6974 < /* Line 1464 of yacc.c  */
6975 < #line 3036 "ircd_parser.y"
5763 > #line 2618 "conf_parser.y" /* yacc.c:1646  */
5764      {
5765 <  ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5765 >  ConfigFileEntry.warn_no_connect_block = yylval.number;
5766   }
5767 + #line 5768 "conf_parser.c" /* yacc.c:1646  */
5768      break;
5769  
5770    case 535:
5771 <
6983 < /* Line 1464 of yacc.c  */
6984 < #line 3041 "ircd_parser.y"
5771 > #line 2623 "conf_parser.y" /* yacc.c:1646  */
5772      {
5773 <  ConfigFileEntry.opers_bypass_callerid = yylval.number;
5773 >  ConfigFileEntry.stats_e_disabled = yylval.number;
5774   }
5775 + #line 5776 "conf_parser.c" /* yacc.c:1646  */
5776      break;
5777  
5778    case 536:
5779 <
6992 < /* Line 1464 of yacc.c  */
6993 < #line 3046 "ircd_parser.y"
5779 > #line 2628 "conf_parser.y" /* yacc.c:1646  */
5780      {
5781 <  ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5781 >  ConfigFileEntry.stats_o_oper_only = yylval.number;
5782   }
5783 + #line 5784 "conf_parser.c" /* yacc.c:1646  */
5784      break;
5785  
5786    case 537:
5787 <
7001 < /* Line 1464 of yacc.c  */
7002 < #line 3051 "ircd_parser.y"
5787 > #line 2633 "conf_parser.y" /* yacc.c:1646  */
5788      {
5789 <  ConfigFileEntry.short_motd = yylval.number;
5789 >  ConfigFileEntry.stats_P_oper_only = yylval.number;
5790   }
5791 + #line 5792 "conf_parser.c" /* yacc.c:1646  */
5792      break;
5793  
5794    case 538:
5795 <
7010 < /* Line 1464 of yacc.c  */
7011 < #line 3056 "ircd_parser.y"
5795 > #line 2638 "conf_parser.y" /* yacc.c:1646  */
5796      {
5797 <  ConfigFileEntry.no_oper_flood = yylval.number;
5797 >  ConfigFileEntry.stats_u_oper_only = yylval.number;
5798   }
5799 + #line 5800 "conf_parser.c" /* yacc.c:1646  */
5800      break;
5801  
5802    case 539:
5803 <
7019 < /* Line 1464 of yacc.c  */
7020 < #line 3061 "ircd_parser.y"
5803 > #line 2643 "conf_parser.y" /* yacc.c:1646  */
5804      {
5805 <  ConfigFileEntry.true_no_oper_flood = yylval.number;
5805 >  ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5806   }
5807 + #line 5808 "conf_parser.c" /* yacc.c:1646  */
5808      break;
5809  
5810    case 540:
5811 <
7028 < /* Line 1464 of yacc.c  */
7029 < #line 3066 "ircd_parser.y"
5811 > #line 2646 "conf_parser.y" /* yacc.c:1646  */
5812      {
5813 <  ConfigFileEntry.oper_pass_resv = yylval.number;
5813 >  ConfigFileEntry.stats_k_oper_only = 1;
5814   }
5815 + #line 5816 "conf_parser.c" /* yacc.c:1646  */
5816      break;
5817  
5818    case 541:
5819 <
7037 < /* Line 1464 of yacc.c  */
7038 < #line 3071 "ircd_parser.y"
5819 > #line 2651 "conf_parser.y" /* yacc.c:1646  */
5820      {
5821 <  if (conf_parser_ctx.pass == 2)
7041 <  {
7042 <    if (strlen(yylval.string) > LOCALE_LENGTH-2)
7043 <      yylval.string[LOCALE_LENGTH-1] = '\0';
7044 <
7045 <    set_locale(yylval.string);
7046 <  }
5821 >  ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5822   }
5823 + #line 5824 "conf_parser.c" /* yacc.c:1646  */
5824      break;
5825  
5826    case 542:
5827 <
7052 < /* Line 1464 of yacc.c  */
7053 < #line 3082 "ircd_parser.y"
5827 > #line 2654 "conf_parser.y" /* yacc.c:1646  */
5828      {
5829 <  ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
5829 >  ConfigFileEntry.stats_i_oper_only = 1;
5830   }
5831 + #line 5832 "conf_parser.c" /* yacc.c:1646  */
5832      break;
5833  
5834    case 543:
5835 <
7061 < /* Line 1464 of yacc.c  */
7062 < #line 3087 "ircd_parser.y"
5835 > #line 2659 "conf_parser.y" /* yacc.c:1646  */
5836      {
5837 <  ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
5837 >  ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5838   }
5839 + #line 5840 "conf_parser.c" /* yacc.c:1646  */
5840      break;
5841  
5842    case 544:
5843 <
7070 < /* Line 1464 of yacc.c  */
7071 < #line 3092 "ircd_parser.y"
5843 > #line 2664 "conf_parser.y" /* yacc.c:1646  */
5844      {
5845 <  ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5845 >  ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5846   }
5847 + #line 5848 "conf_parser.c" /* yacc.c:1646  */
5848      break;
5849  
5850    case 545:
5851 <
7079 < /* Line 1464 of yacc.c  */
7080 < #line 3097 "ircd_parser.y"
5851 > #line 2669 "conf_parser.y" /* yacc.c:1646  */
5852      {
5853 <  if (conf_parser_ctx.pass == 2)
7083 <  {
7084 <    MyFree(ConfigFileEntry.servlink_path);
7085 <    DupString(ConfigFileEntry.servlink_path, yylval.string);
7086 <  }
5853 >  ConfigFileEntry.opers_bypass_callerid = yylval.number;
5854   }
5855 + #line 5856 "conf_parser.c" /* yacc.c:1646  */
5856      break;
5857  
5858    case 546:
5859 <
7092 < /* Line 1464 of yacc.c  */
7093 < #line 3106 "ircd_parser.y"
7094 <    {
7095 < #ifdef HAVE_LIBCRYPTO
7096 <  if (conf_parser_ctx.pass == 2)
7097 <  {
7098 <    struct EncCapability *ecap;
7099 <    const char *cipher_name;
7100 <    int found = 0;
7101 <
7102 <    ConfigFileEntry.default_cipher_preference = NULL;
7103 <    cipher_name = yylval.string;
7104 <
7105 <    for (ecap = CipherTable; ecap->name; ecap++)
5859 > #line 2674 "conf_parser.y" /* yacc.c:1646  */
5860      {
5861 <      if ((irccmp(ecap->name, cipher_name) == 0) &&
7108 <          (ecap->cap & CAP_ENC_MASK))
7109 <      {
7110 <        ConfigFileEntry.default_cipher_preference = ecap;
7111 <        found = 1;
7112 <        break;
7113 <      }
7114 <    }
7115 <
7116 <    if (!found)
7117 <      yyerror("Invalid cipher");
7118 <  }
7119 < #else
7120 <  if (conf_parser_ctx.pass == 2)
7121 <    yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7122 < #endif
5861 >  ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5862   }
5863 + #line 5864 "conf_parser.c" /* yacc.c:1646  */
5864      break;
5865  
5866    case 547:
5867 <
7128 < /* Line 1464 of yacc.c  */
7129 < #line 3138 "ircd_parser.y"
5867 > #line 2679 "conf_parser.y" /* yacc.c:1646  */
5868      {
5869 <  if (conf_parser_ctx.pass == 2)
7132 <  {
7133 <    ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7134 < #ifndef HAVE_LIBZ
7135 <    yyerror("Ignoring compression_level -- no zlib support");
7136 < #else
7137 <    if ((ConfigFileEntry.compression_level < 1) ||
7138 <        (ConfigFileEntry.compression_level > 9))
7139 <    {
7140 <      yyerror("Ignoring invalid compression_level, using default");
7141 <      ConfigFileEntry.compression_level = 0;
7142 <    }
7143 < #endif
7144 <  }
5869 >  ConfigFileEntry.short_motd = yylval.number;
5870   }
5871 + #line 5872 "conf_parser.c" /* yacc.c:1646  */
5872      break;
5873  
5874    case 548:
5875 <
7150 < /* Line 1464 of yacc.c  */
7151 < #line 3156 "ircd_parser.y"
5875 > #line 2684 "conf_parser.y" /* yacc.c:1646  */
5876      {
5877 <  ConfigFileEntry.use_egd = yylval.number;
5877 >  ConfigFileEntry.no_oper_flood = yylval.number;
5878   }
5879 + #line 5880 "conf_parser.c" /* yacc.c:1646  */
5880      break;
5881  
5882    case 549:
5883 <
7159 < /* Line 1464 of yacc.c  */
7160 < #line 3161 "ircd_parser.y"
5883 > #line 2689 "conf_parser.y" /* yacc.c:1646  */
5884      {
5885 <  if (conf_parser_ctx.pass == 2)
7163 <  {
7164 <    MyFree(ConfigFileEntry.egdpool_path);
7165 <    DupString(ConfigFileEntry.egdpool_path, yylval.string);
7166 <  }
5885 >  ConfigFileEntry.true_no_oper_flood = yylval.number;
5886   }
5887 + #line 5888 "conf_parser.c" /* yacc.c:1646  */
5888      break;
5889  
5890    case 550:
5891 <
7172 < /* Line 1464 of yacc.c  */
7173 < #line 3170 "ircd_parser.y"
5891 > #line 2694 "conf_parser.y" /* yacc.c:1646  */
5892      {
5893 <  ConfigFileEntry.ping_cookie = yylval.number;
5893 >  ConfigFileEntry.oper_pass_resv = yylval.number;
5894   }
5895 + #line 5896 "conf_parser.c" /* yacc.c:1646  */
5896      break;
5897  
5898    case 551:
5899 <
7181 < /* Line 1464 of yacc.c  */
7182 < #line 3175 "ircd_parser.y"
5899 > #line 2699 "conf_parser.y" /* yacc.c:1646  */
5900      {
5901 <  ConfigFileEntry.disable_auth = yylval.number;
5901 >  ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5902   }
5903 + #line 5904 "conf_parser.c" /* yacc.c:1646  */
5904      break;
5905  
5906    case 552:
5907 <
7190 < /* Line 1464 of yacc.c  */
7191 < #line 3180 "ircd_parser.y"
5907 > #line 2704 "conf_parser.y" /* yacc.c:1646  */
5908      {
5909 <  ConfigFileEntry.throttle_time = yylval.number;
5909 >  ConfigFileEntry.max_targets = (yyvsp[-1].number);
5910   }
5911 + #line 5912 "conf_parser.c" /* yacc.c:1646  */
5912      break;
5913  
5914    case 553:
5915 <
7199 < /* Line 1464 of yacc.c  */
7200 < #line 3185 "ircd_parser.y"
5915 > #line 2709 "conf_parser.y" /* yacc.c:1646  */
5916      {
5917 <  ConfigFileEntry.oper_umodes = 0;
5917 >  ConfigFileEntry.use_egd = yylval.number;
5918   }
5919 + #line 5920 "conf_parser.c" /* yacc.c:1646  */
5920      break;
5921  
5922 <  case 557:
5923 <
7208 < /* Line 1464 of yacc.c  */
7209 < #line 3191 "ircd_parser.y"
5922 >  case 554:
5923 > #line 2714 "conf_parser.y" /* yacc.c:1646  */
5924      {
5925 <  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
5925 >  if (conf_parser_ctx.pass == 2)
5926 >  {
5927 >    MyFree(ConfigFileEntry.egdpool_path);
5928 >    ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
5929 >  }
5930   }
5931 + #line 5932 "conf_parser.c" /* yacc.c:1646  */
5932      break;
5933  
5934 <  case 558:
5935 <
7217 < /* Line 1464 of yacc.c  */
7218 < #line 3194 "ircd_parser.y"
5934 >  case 555:
5935 > #line 2723 "conf_parser.y" /* yacc.c:1646  */
5936      {
5937 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
5937 >  if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
5938 >  {
5939 >    MyFree(ConfigFileEntry.service_name);
5940 >    ConfigFileEntry.service_name = xstrdup(yylval.string);
5941 >  }
5942   }
5943 + #line 5944 "conf_parser.c" /* yacc.c:1646  */
5944      break;
5945  
5946 <  case 559:
5947 <
7226 < /* Line 1464 of yacc.c  */
7227 < #line 3197 "ircd_parser.y"
5946 >  case 556:
5947 > #line 2732 "conf_parser.y" /* yacc.c:1646  */
5948      {
5949 <  ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
5949 >  ConfigFileEntry.ping_cookie = yylval.number;
5950   }
5951 + #line 5952 "conf_parser.c" /* yacc.c:1646  */
5952      break;
5953  
5954 <  case 560:
5955 <
7235 < /* Line 1464 of yacc.c  */
7236 < #line 3200 "ircd_parser.y"
5954 >  case 557:
5955 > #line 2737 "conf_parser.y" /* yacc.c:1646  */
5956      {
5957 <  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
5957 >  ConfigFileEntry.disable_auth = yylval.number;
5958   }
5959 + #line 5960 "conf_parser.c" /* yacc.c:1646  */
5960      break;
5961  
5962 <  case 561:
5963 <
7244 < /* Line 1464 of yacc.c  */
7245 < #line 3203 "ircd_parser.y"
5962 >  case 558:
5963 > #line 2742 "conf_parser.y" /* yacc.c:1646  */
5964      {
5965 <  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
5965 >  ConfigFileEntry.throttle_time = (yyvsp[-1].number);
5966   }
5967 + #line 5968 "conf_parser.c" /* yacc.c:1646  */
5968      break;
5969  
5970 <  case 562:
5971 <
7253 < /* Line 1464 of yacc.c  */
7254 < #line 3206 "ircd_parser.y"
5970 >  case 559:
5971 > #line 2747 "conf_parser.y" /* yacc.c:1646  */
5972      {
5973 <  ConfigFileEntry.oper_umodes |= UMODE_FULL;
5973 >  ConfigFileEntry.oper_umodes = 0;
5974   }
5975 + #line 5976 "conf_parser.c" /* yacc.c:1646  */
5976      break;
5977  
5978    case 563:
5979 <
7262 < /* Line 1464 of yacc.c  */
7263 < #line 3209 "ircd_parser.y"
5979 > #line 2753 "conf_parser.y" /* yacc.c:1646  */
5980      {
5981 <  ConfigFileEntry.oper_umodes |= UMODE_SKILL;
5981 >  ConfigFileEntry.oper_umodes |= UMODE_BOTS;
5982   }
5983 + #line 5984 "conf_parser.c" /* yacc.c:1646  */
5984      break;
5985  
5986    case 564:
5987 <
7271 < /* Line 1464 of yacc.c  */
7272 < #line 3212 "ircd_parser.y"
5987 > #line 2756 "conf_parser.y" /* yacc.c:1646  */
5988      {
5989 <  ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
5989 >  ConfigFileEntry.oper_umodes |= UMODE_CCONN;
5990   }
5991 + #line 5992 "conf_parser.c" /* yacc.c:1646  */
5992      break;
5993  
5994    case 565:
5995 <
7280 < /* Line 1464 of yacc.c  */
7281 < #line 3215 "ircd_parser.y"
5995 > #line 2759 "conf_parser.y" /* yacc.c:1646  */
5996      {
5997 <  ConfigFileEntry.oper_umodes |= UMODE_REJ;
5997 >  ConfigFileEntry.oper_umodes |= UMODE_DEAF;
5998   }
5999 + #line 6000 "conf_parser.c" /* yacc.c:1646  */
6000      break;
6001  
6002    case 566:
6003 <
7289 < /* Line 1464 of yacc.c  */
7290 < #line 3218 "ircd_parser.y"
6003 > #line 2762 "conf_parser.y" /* yacc.c:1646  */
6004      {
6005 <  ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6005 >  ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6006   }
6007 + #line 6008 "conf_parser.c" /* yacc.c:1646  */
6008      break;
6009  
6010    case 567:
6011 <
7298 < /* Line 1464 of yacc.c  */
7299 < #line 3221 "ircd_parser.y"
6011 > #line 2765 "conf_parser.y" /* yacc.c:1646  */
6012      {
6013 <  ConfigFileEntry.oper_umodes |= UMODE_SPY;
6013 >  ConfigFileEntry.oper_umodes |= UMODE_FULL;
6014   }
6015 + #line 6016 "conf_parser.c" /* yacc.c:1646  */
6016      break;
6017  
6018    case 568:
6019 <
7307 < /* Line 1464 of yacc.c  */
7308 < #line 3224 "ircd_parser.y"
6019 > #line 2768 "conf_parser.y" /* yacc.c:1646  */
6020      {
6021 <  ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6021 >  ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6022   }
6023 + #line 6024 "conf_parser.c" /* yacc.c:1646  */
6024      break;
6025  
6026    case 569:
6027 <
7316 < /* Line 1464 of yacc.c  */
7317 < #line 3227 "ircd_parser.y"
6027 > #line 2771 "conf_parser.y" /* yacc.c:1646  */
6028      {
6029 <  ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6029 >  ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6030   }
6031 + #line 6032 "conf_parser.c" /* yacc.c:1646  */
6032      break;
6033  
6034    case 570:
6035 <
7325 < /* Line 1464 of yacc.c  */
7326 < #line 3230 "ircd_parser.y"
6035 > #line 2774 "conf_parser.y" /* yacc.c:1646  */
6036      {
6037 <  ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6037 >  ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6038   }
6039 + #line 6040 "conf_parser.c" /* yacc.c:1646  */
6040      break;
6041  
6042    case 571:
6043 <
7334 < /* Line 1464 of yacc.c  */
7335 < #line 3233 "ircd_parser.y"
6043 > #line 2777 "conf_parser.y" /* yacc.c:1646  */
6044      {
6045 <  ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6045 >  ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6046   }
6047 + #line 6048 "conf_parser.c" /* yacc.c:1646  */
6048      break;
6049  
6050    case 572:
6051 <
7343 < /* Line 1464 of yacc.c  */
7344 < #line 3236 "ircd_parser.y"
6051 > #line 2780 "conf_parser.y" /* yacc.c:1646  */
6052      {
6053 <  ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6053 >  ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6054   }
6055 + #line 6056 "conf_parser.c" /* yacc.c:1646  */
6056      break;
6057  
6058    case 573:
6059 <
7352 < /* Line 1464 of yacc.c  */
7353 < #line 3239 "ircd_parser.y"
6059 > #line 2783 "conf_parser.y" /* yacc.c:1646  */
6060      {
6061 <  ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6061 >  ConfigFileEntry.oper_umodes |= UMODE_REJ;
6062   }
6063 + #line 6064 "conf_parser.c" /* yacc.c:1646  */
6064      break;
6065  
6066    case 574:
6067 <
7361 < /* Line 1464 of yacc.c  */
7362 < #line 3242 "ircd_parser.y"
6067 > #line 2786 "conf_parser.y" /* yacc.c:1646  */
6068      {
6069 <  ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6069 >  ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6070   }
6071 + #line 6072 "conf_parser.c" /* yacc.c:1646  */
6072      break;
6073  
6074    case 575:
6075 <
7370 < /* Line 1464 of yacc.c  */
7371 < #line 3245 "ircd_parser.y"
6075 > #line 2789 "conf_parser.y" /* yacc.c:1646  */
6076      {
6077 <  ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6077 >  ConfigFileEntry.oper_umodes |= UMODE_SPY;
6078   }
6079 + #line 6080 "conf_parser.c" /* yacc.c:1646  */
6080      break;
6081  
6082    case 576:
6083 <
7379 < /* Line 1464 of yacc.c  */
7380 < #line 3250 "ircd_parser.y"
6083 > #line 2792 "conf_parser.y" /* yacc.c:1646  */
6084      {
6085 <  ConfigFileEntry.oper_only_umodes = 0;
6085 >  ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6086   }
6087 + #line 6088 "conf_parser.c" /* yacc.c:1646  */
6088      break;
6089  
6090 <  case 580:
6091 <
7388 < /* Line 1464 of yacc.c  */
7389 < #line 3256 "ircd_parser.y"
6090 >  case 577:
6091 > #line 2795 "conf_parser.y" /* yacc.c:1646  */
6092      {
6093 <  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6093 >  ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6094   }
6095 + #line 6096 "conf_parser.c" /* yacc.c:1646  */
6096      break;
6097  
6098 <  case 581:
6099 <
7397 < /* Line 1464 of yacc.c  */
7398 < #line 3259 "ircd_parser.y"
6098 >  case 578:
6099 > #line 2798 "conf_parser.y" /* yacc.c:1646  */
6100      {
6101 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6101 >  ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6102   }
6103 + #line 6104 "conf_parser.c" /* yacc.c:1646  */
6104      break;
6105  
6106 <  case 582:
6107 <
7406 < /* Line 1464 of yacc.c  */
7407 < #line 3262 "ircd_parser.y"
6106 >  case 579:
6107 > #line 2801 "conf_parser.y" /* yacc.c:1646  */
6108      {
6109 <  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6109 >  ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6110   }
6111 + #line 6112 "conf_parser.c" /* yacc.c:1646  */
6112      break;
6113  
6114 <  case 583:
6115 <
7415 < /* Line 1464 of yacc.c  */
7416 < #line 3265 "ircd_parser.y"
6114 >  case 580:
6115 > #line 2804 "conf_parser.y" /* yacc.c:1646  */
6116      {
6117 <  ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6117 >  ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6118   }
6119 + #line 6120 "conf_parser.c" /* yacc.c:1646  */
6120      break;
6121  
6122 <  case 584:
6123 <
7424 < /* Line 1464 of yacc.c  */
7425 < #line 3268 "ircd_parser.y"
6122 >  case 581:
6123 > #line 2807 "conf_parser.y" /* yacc.c:1646  */
6124      {
6125 <  ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6125 >  ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6126   }
6127 + #line 6128 "conf_parser.c" /* yacc.c:1646  */
6128      break;
6129  
6130 <  case 585:
6131 <
6132 < /* Line 1464 of yacc.c  */
6133 < #line 3271 "ircd_parser.y"
7435 <    {
7436 <  ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6130 >  case 582:
6131 > #line 2810 "conf_parser.y" /* yacc.c:1646  */
6132 >    {
6133 >  ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6134   }
6135 + #line 6136 "conf_parser.c" /* yacc.c:1646  */
6136      break;
6137  
6138 <  case 586:
6139 <
7442 < /* Line 1464 of yacc.c  */
7443 < #line 3274 "ircd_parser.y"
6138 >  case 583:
6139 > #line 2813 "conf_parser.y" /* yacc.c:1646  */
6140      {
6141 <  ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6141 >  ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6142   }
6143 + #line 6144 "conf_parser.c" /* yacc.c:1646  */
6144      break;
6145  
6146 <  case 587:
6147 <
7451 < /* Line 1464 of yacc.c  */
7452 < #line 3277 "ircd_parser.y"
6146 >  case 584:
6147 > #line 2816 "conf_parser.y" /* yacc.c:1646  */
6148      {
6149 <  ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6149 >  ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6150   }
6151 + #line 6152 "conf_parser.c" /* yacc.c:1646  */
6152      break;
6153  
6154 <  case 588:
6155 <
7460 < /* Line 1464 of yacc.c  */
7461 < #line 3280 "ircd_parser.y"
6154 >  case 585:
6155 > #line 2819 "conf_parser.y" /* yacc.c:1646  */
6156      {
6157 <  ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6157 >  ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6158   }
6159 + #line 6160 "conf_parser.c" /* yacc.c:1646  */
6160      break;
6161  
6162 <  case 589:
6163 <
7469 < /* Line 1464 of yacc.c  */
7470 < #line 3283 "ircd_parser.y"
6162 >  case 586:
6163 > #line 2824 "conf_parser.y" /* yacc.c:1646  */
6164      {
6165 <  ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6165 >  ConfigFileEntry.oper_only_umodes = 0;
6166   }
6167 + #line 6168 "conf_parser.c" /* yacc.c:1646  */
6168      break;
6169  
6170    case 590:
6171 <
7478 < /* Line 1464 of yacc.c  */
7479 < #line 3286 "ircd_parser.y"
6171 > #line 2830 "conf_parser.y" /* yacc.c:1646  */
6172      {
6173 <  ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6173 >  ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6174   }
6175 + #line 6176 "conf_parser.c" /* yacc.c:1646  */
6176      break;
6177  
6178    case 591:
6179 <
7487 < /* Line 1464 of yacc.c  */
7488 < #line 3289 "ircd_parser.y"
6179 > #line 2833 "conf_parser.y" /* yacc.c:1646  */
6180      {
6181 <  ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6181 >  ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6182   }
6183 + #line 6184 "conf_parser.c" /* yacc.c:1646  */
6184      break;
6185  
6186    case 592:
6187 <
7496 < /* Line 1464 of yacc.c  */
7497 < #line 3292 "ircd_parser.y"
6187 > #line 2836 "conf_parser.y" /* yacc.c:1646  */
6188      {
6189 <  ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6189 >  ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6190   }
6191 + #line 6192 "conf_parser.c" /* yacc.c:1646  */
6192      break;
6193  
6194    case 593:
6195 <
7505 < /* Line 1464 of yacc.c  */
7506 < #line 3295 "ircd_parser.y"
6195 > #line 2839 "conf_parser.y" /* yacc.c:1646  */
6196      {
6197 <  ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6197 >  ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6198   }
6199 + #line 6200 "conf_parser.c" /* yacc.c:1646  */
6200      break;
6201  
6202    case 594:
6203 <
7514 < /* Line 1464 of yacc.c  */
7515 < #line 3298 "ircd_parser.y"
6203 > #line 2842 "conf_parser.y" /* yacc.c:1646  */
6204      {
6205 <  ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6205 >  ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6206   }
6207 + #line 6208 "conf_parser.c" /* yacc.c:1646  */
6208      break;
6209  
6210    case 595:
6211 <
7523 < /* Line 1464 of yacc.c  */
7524 < #line 3301 "ircd_parser.y"
6211 > #line 2845 "conf_parser.y" /* yacc.c:1646  */
6212      {
6213 <  ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6213 >  ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6214   }
6215 + #line 6216 "conf_parser.c" /* yacc.c:1646  */
6216      break;
6217  
6218    case 596:
6219 <
7532 < /* Line 1464 of yacc.c  */
7533 < #line 3304 "ircd_parser.y"
6219 > #line 2848 "conf_parser.y" /* yacc.c:1646  */
6220      {
6221 <  ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6221 >  ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6222   }
6223 + #line 6224 "conf_parser.c" /* yacc.c:1646  */
6224      break;
6225  
6226    case 597:
6227 <
7541 < /* Line 1464 of yacc.c  */
7542 < #line 3307 "ircd_parser.y"
6227 > #line 2851 "conf_parser.y" /* yacc.c:1646  */
6228      {
6229 <  ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6229 >  ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6230   }
6231 + #line 6232 "conf_parser.c" /* yacc.c:1646  */
6232      break;
6233  
6234    case 598:
6235 <
7550 < /* Line 1464 of yacc.c  */
7551 < #line 3310 "ircd_parser.y"
6235 > #line 2854 "conf_parser.y" /* yacc.c:1646  */
6236      {
6237 <  ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6237 >  ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6238   }
6239 + #line 6240 "conf_parser.c" /* yacc.c:1646  */
6240      break;
6241  
6242    case 599:
6243 <
7559 < /* Line 1464 of yacc.c  */
7560 < #line 3315 "ircd_parser.y"
6243 > #line 2857 "conf_parser.y" /* yacc.c:1646  */
6244      {
6245 <  ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6245 >  ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6246   }
6247 + #line 6248 "conf_parser.c" /* yacc.c:1646  */
6248      break;
6249  
6250    case 600:
6251 <
7568 < /* Line 1464 of yacc.c  */
7569 < #line 3320 "ircd_parser.y"
6251 > #line 2860 "conf_parser.y" /* yacc.c:1646  */
6252      {
6253 <  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6253 >  ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6254   }
6255 + #line 6256 "conf_parser.c" /* yacc.c:1646  */
6256      break;
6257  
6258    case 601:
6259 <
7577 < /* Line 1464 of yacc.c  */
7578 < #line 3325 "ircd_parser.y"
6259 > #line 2863 "conf_parser.y" /* yacc.c:1646  */
6260      {
6261 <  ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6261 >  ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6262   }
6263 + #line 6264 "conf_parser.c" /* yacc.c:1646  */
6264      break;
6265  
6266    case 602:
6267 <
7586 < /* Line 1464 of yacc.c  */
7587 < #line 3330 "ircd_parser.y"
6267 > #line 2866 "conf_parser.y" /* yacc.c:1646  */
6268      {
6269 <  ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
6269 >  ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6270   }
6271 + #line 6272 "conf_parser.c" /* yacc.c:1646  */
6272      break;
6273  
6274    case 603:
6275 <
7595 < /* Line 1464 of yacc.c  */
7596 < #line 3339 "ircd_parser.y"
6275 > #line 2869 "conf_parser.y" /* yacc.c:1646  */
6276      {
6277 <  if (conf_parser_ctx.pass == 2)
7599 <  {
7600 <    yy_conf = make_conf_item(GDENY_TYPE);
7601 <    yy_aconf = map_to_conf(yy_conf);
7602 <  }
6277 >  ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6278   }
6279 + #line 6280 "conf_parser.c" /* yacc.c:1646  */
6280      break;
6281  
6282    case 604:
6283 <
7608 < /* Line 1464 of yacc.c  */
7609 < #line 3346 "ircd_parser.y"
7610 <    {
7611 <  if (conf_parser_ctx.pass == 2)
7612 <  {
7613 <    /*
7614 <     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7615 <     * end we will have one extra, so we should free it.
7616 <     */
7617 <    if (yy_conf->name == NULL || yy_aconf->user == NULL)
7618 <    {
7619 <      delete_conf_item(yy_conf);
7620 <      yy_conf = NULL;
7621 <      yy_aconf = NULL;
7622 <    }
7623 <  }
7624 < }
7625 <    break;
7626 <
7627 <  case 614:
7628 <
7629 < /* Line 1464 of yacc.c  */
7630 < #line 3372 "ircd_parser.y"
7631 <    {
7632 <  if (conf_parser_ctx.pass == 2)
7633 <    ConfigFileEntry.glines = yylval.number;
7634 < }
7635 <    break;
7636 <
7637 <  case 615:
7638 <
7639 < /* Line 1464 of yacc.c  */
7640 < #line 3378 "ircd_parser.y"
6283 > #line 2872 "conf_parser.y" /* yacc.c:1646  */
6284      {
6285 <  if (conf_parser_ctx.pass == 2)
7643 <    ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
6285 >  ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6286   }
6287 + #line 6288 "conf_parser.c" /* yacc.c:1646  */
6288      break;
6289  
6290 <  case 616:
6291 <
7649 < /* Line 1464 of yacc.c  */
7650 < #line 3384 "ircd_parser.y"
6290 >  case 605:
6291 > #line 2875 "conf_parser.y" /* yacc.c:1646  */
6292      {
6293 <  if (conf_parser_ctx.pass == 2)
7653 <    ConfigFileEntry.gline_logging = 0;
6293 >  ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6294   }
6295 + #line 6296 "conf_parser.c" /* yacc.c:1646  */
6296      break;
6297  
6298 <  case 620:
6299 <
7659 < /* Line 1464 of yacc.c  */
7660 < #line 3390 "ircd_parser.y"
6298 >  case 606:
6299 > #line 2878 "conf_parser.y" /* yacc.c:1646  */
6300      {
6301 <  if (conf_parser_ctx.pass == 2)
7663 <    ConfigFileEntry.gline_logging |= GDENY_REJECT;
6301 >  ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6302   }
6303 + #line 6304 "conf_parser.c" /* yacc.c:1646  */
6304      break;
6305  
6306 <  case 621:
6307 <
7669 < /* Line 1464 of yacc.c  */
7670 < #line 3394 "ircd_parser.y"
6306 >  case 607:
6307 > #line 2881 "conf_parser.y" /* yacc.c:1646  */
6308      {
6309 <  if (conf_parser_ctx.pass == 2)
7673 <    ConfigFileEntry.gline_logging |= GDENY_BLOCK;
6309 >  ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6310   }
6311 + #line 6312 "conf_parser.c" /* yacc.c:1646  */
6312      break;
6313  
6314 <  case 622:
6315 <
7679 < /* Line 1464 of yacc.c  */
7680 < #line 3400 "ircd_parser.y"
6314 >  case 608:
6315 > #line 2884 "conf_parser.y" /* yacc.c:1646  */
6316      {
6317 <  if (conf_parser_ctx.pass == 2)
7683 <  {
7684 <    struct split_nuh_item nuh;
7685 <
7686 <    nuh.nuhmask  = yylval.string;
7687 <    nuh.nickptr  = NULL;
7688 <    nuh.userptr  = userbuf;
7689 <    nuh.hostptr  = hostbuf;
7690 <
7691 <    nuh.nicksize = 0;
7692 <    nuh.usersize = sizeof(userbuf);
7693 <    nuh.hostsize = sizeof(hostbuf);
7694 <
7695 <    split_nuh(&nuh);
7696 <
7697 <    if (yy_aconf->user == NULL)
7698 <    {
7699 <      DupString(yy_aconf->user, userbuf);
7700 <      DupString(yy_aconf->host, hostbuf);
7701 <    }
7702 <    else
7703 <    {
7704 <      struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7705 <
7706 <      DupString(yy_tmp->user, userbuf);
7707 <      DupString(yy_tmp->host, hostbuf);
7708 <
7709 <      dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7710 <    }
7711 <  }
6317 >  ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6318   }
6319 + #line 6320 "conf_parser.c" /* yacc.c:1646  */
6320      break;
6321  
6322 <  case 623:
6323 <
7717 < /* Line 1464 of yacc.c  */
7718 < #line 3434 "ircd_parser.y"
6322 >  case 609:
6323 > #line 2887 "conf_parser.y" /* yacc.c:1646  */
6324      {
6325 <  if (conf_parser_ctx.pass == 2)  
7721 <  {
7722 <    MyFree(yy_conf->name);
7723 <    DupString(yy_conf->name, yylval.string);
7724 <  }
6325 >  ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6326   }
6327 + #line 6328 "conf_parser.c" /* yacc.c:1646  */
6328      break;
6329  
6330 <  case 624:
6331 <
7730 < /* Line 1464 of yacc.c  */
7731 < #line 3443 "ircd_parser.y"
6330 >  case 610:
6331 > #line 2890 "conf_parser.y" /* yacc.c:1646  */
6332      {
6333 <  if (conf_parser_ctx.pass == 2)
7734 <    yy_aconf->flags = 0;
6333 >  ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6334   }
6335 + #line 6336 "conf_parser.c" /* yacc.c:1646  */
6336      break;
6337  
6338 <  case 625:
6339 <
7740 < /* Line 1464 of yacc.c  */
7741 < #line 3447 "ircd_parser.y"
6338 >  case 611:
6339 > #line 2895 "conf_parser.y" /* yacc.c:1646  */
6340      {
6341 <  if (conf_parser_ctx.pass == 2)
7744 <  {
7745 <    struct CollectItem *yy_tmp = NULL;
7746 <    dlink_node *ptr, *next_ptr;
7747 <
7748 <    DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7749 <    {
7750 <      struct AccessItem *new_aconf;
7751 <      struct ConfItem *new_conf;
7752 <
7753 <      yy_tmp = ptr->data;
7754 <      new_conf = make_conf_item(GDENY_TYPE);
7755 <      new_aconf = map_to_conf(new_conf);
7756 <
7757 <      new_aconf->flags = yy_aconf->flags;
7758 <
7759 <      if (yy_conf->name != NULL)
7760 <        DupString(new_conf->name, yy_conf->name);
7761 <      else
7762 <        DupString(new_conf->name, "*");
7763 <      if (yy_aconf->user != NULL)
7764 <         DupString(new_aconf->user, yy_tmp->user);
7765 <      else  
7766 <        DupString(new_aconf->user, "*");
7767 <      if (yy_aconf->host != NULL)
7768 <        DupString(new_aconf->host, yy_tmp->host);
7769 <      else
7770 <        DupString(new_aconf->host, "*");
7771 <
7772 <      dlinkDelete(&yy_tmp->node, &col_conf_list);
7773 <    }
7774 <
7775 <    /*
7776 <     * In case someone has fed us with more than one action= after user/name
7777 <     * which would leak memory  -Michael
7778 <     */
7779 <    if (yy_conf->name == NULL || yy_aconf->user == NULL)
7780 <      delete_conf_item(yy_conf);
7781 <
7782 <    yy_conf = make_conf_item(GDENY_TYPE);
7783 <    yy_aconf = map_to_conf(yy_conf);
7784 <  }
6341 >  ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6342   }
6343 + #line 6344 "conf_parser.c" /* yacc.c:1646  */
6344      break;
6345  
6346 <  case 628:
6347 <
7790 < /* Line 1464 of yacc.c  */
7791 < #line 3494 "ircd_parser.y"
6346 >  case 612:
6347 > #line 2900 "conf_parser.y" /* yacc.c:1646  */
6348      {
6349 <  if (conf_parser_ctx.pass == 2)
7794 <    yy_aconf->flags |= GDENY_REJECT;
6349 >  ConfigFileEntry.min_nonwildcard_simple = (yyvsp[-1].number);
6350   }
6351 + #line 6352 "conf_parser.c" /* yacc.c:1646  */
6352      break;
6353  
6354 <  case 629:
6355 <
7800 < /* Line 1464 of yacc.c  */
7801 < #line 3498 "ircd_parser.y"
6354 >  case 613:
6355 > #line 2905 "conf_parser.y" /* yacc.c:1646  */
6356      {
6357 <  if (conf_parser_ctx.pass == 2)
7804 <    yy_aconf->flags |= GDENY_BLOCK;
6357 >  ConfigFileEntry.default_floodcount = (yyvsp[-1].number);
6358   }
6359 + #line 6360 "conf_parser.c" /* yacc.c:1646  */
6360      break;
6361  
6362 <  case 652:
6363 <
7810 < /* Line 1464 of yacc.c  */
7811 < #line 3522 "ircd_parser.y"
6362 >  case 630:
6363 > #line 2932 "conf_parser.y" /* yacc.c:1646  */
6364      {
6365    ConfigChannel.disable_fake_channels = yylval.number;
6366   }
6367 + #line 6368 "conf_parser.c" /* yacc.c:1646  */
6368      break;
6369  
6370 <  case 653:
6371 <
7819 < /* Line 1464 of yacc.c  */
7820 < #line 3527 "ircd_parser.y"
7821 <    {
7822 <  ConfigChannel.restrict_channels = yylval.number;
7823 < }
7824 <    break;
7825 <
7826 <  case 654:
7827 <
7828 < /* Line 1464 of yacc.c  */
7829 < #line 3532 "ircd_parser.y"
7830 <    {
7831 <  ConfigChannel.disable_local_channels = yylval.number;
7832 < }
7833 <    break;
7834 <
7835 <  case 655:
7836 <
7837 < /* Line 1464 of yacc.c  */
7838 < #line 3537 "ircd_parser.y"
7839 <    {
7840 <  ConfigChannel.use_except = yylval.number;
7841 < }
7842 <    break;
7843 <
7844 <  case 656:
7845 <
7846 < /* Line 1464 of yacc.c  */
7847 < #line 3542 "ircd_parser.y"
7848 <    {
7849 <  ConfigChannel.use_invex = yylval.number;
7850 < }
7851 <    break;
7852 <
7853 <  case 657:
7854 <
7855 < /* Line 1464 of yacc.c  */
7856 < #line 3547 "ircd_parser.y"
7857 <    {
7858 <  ConfigChannel.use_knock = yylval.number;
7859 < }
7860 <    break;
7861 <
7862 <  case 658:
7863 <
7864 < /* Line 1464 of yacc.c  */
7865 < #line 3552 "ircd_parser.y"
6370 >  case 631:
6371 > #line 2937 "conf_parser.y" /* yacc.c:1646  */
6372      {
6373 <  ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6373 >  ConfigChannel.knock_delay = (yyvsp[-1].number);
6374   }
6375 + #line 6376 "conf_parser.c" /* yacc.c:1646  */
6376      break;
6377  
6378 <  case 659:
6379 <
7873 < /* Line 1464 of yacc.c  */
7874 < #line 3557 "ircd_parser.y"
6378 >  case 632:
6379 > #line 2942 "conf_parser.y" /* yacc.c:1646  */
6380      {
6381 <  ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6381 >  ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6382   }
6383 + #line 6384 "conf_parser.c" /* yacc.c:1646  */
6384      break;
6385  
6386 <  case 660:
6387 <
7882 < /* Line 1464 of yacc.c  */
7883 < #line 3562 "ircd_parser.y"
6386 >  case 633:
6387 > #line 2947 "conf_parser.y" /* yacc.c:1646  */
6388      {
6389 <  ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6389 >  ConfigChannel.max_chans_per_user = (yyvsp[-1].number);
6390   }
6391 + #line 6392 "conf_parser.c" /* yacc.c:1646  */
6392      break;
6393  
6394 <  case 661:
6395 <
7891 < /* Line 1464 of yacc.c  */
7892 < #line 3567 "ircd_parser.y"
6394 >  case 634:
6395 > #line 2952 "conf_parser.y" /* yacc.c:1646  */
6396      {
6397 <  ConfigChannel.quiet_on_ban = yylval.number;
6397 >  ConfigChannel.max_chans_per_oper = (yyvsp[-1].number);
6398   }
6399 + #line 6400 "conf_parser.c" /* yacc.c:1646  */
6400      break;
6401  
6402 <  case 662:
6403 <
7900 < /* Line 1464 of yacc.c  */
7901 < #line 3572 "ircd_parser.y"
6402 >  case 635:
6403 > #line 2957 "conf_parser.y" /* yacc.c:1646  */
6404      {
6405 <  ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6405 >  ConfigChannel.max_bans = (yyvsp[-1].number);
6406   }
6407 + #line 6408 "conf_parser.c" /* yacc.c:1646  */
6408      break;
6409  
6410 <  case 663:
6411 <
7909 < /* Line 1464 of yacc.c  */
7910 < #line 3577 "ircd_parser.y"
6410 >  case 636:
6411 > #line 2962 "conf_parser.y" /* yacc.c:1646  */
6412      {
6413 <  ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6413 >  ConfigChannel.default_split_user_count = (yyvsp[-1].number);
6414   }
6415 + #line 6416 "conf_parser.c" /* yacc.c:1646  */
6416      break;
6417  
6418 <  case 664:
6419 <
7918 < /* Line 1464 of yacc.c  */
7919 < #line 3582 "ircd_parser.y"
6418 >  case 637:
6419 > #line 2967 "conf_parser.y" /* yacc.c:1646  */
6420      {
6421 <  ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6421 >  ConfigChannel.default_split_server_count = (yyvsp[-1].number);
6422   }
6423 + #line 6424 "conf_parser.c" /* yacc.c:1646  */
6424      break;
6425  
6426 <  case 665:
6427 <
7927 < /* Line 1464 of yacc.c  */
7928 < #line 3587 "ircd_parser.y"
6426 >  case 638:
6427 > #line 2972 "conf_parser.y" /* yacc.c:1646  */
6428      {
6429    ConfigChannel.no_create_on_split = yylval.number;
6430   }
6431 + #line 6432 "conf_parser.c" /* yacc.c:1646  */
6432      break;
6433  
6434 <  case 666:
6435 <
7936 < /* Line 1464 of yacc.c  */
7937 < #line 3592 "ircd_parser.y"
6434 >  case 639:
6435 > #line 2977 "conf_parser.y" /* yacc.c:1646  */
6436      {
6437    ConfigChannel.no_join_on_split = yylval.number;
6438   }
6439 + #line 6440 "conf_parser.c" /* yacc.c:1646  */
6440      break;
6441  
6442 <  case 667:
6443 <
7945 < /* Line 1464 of yacc.c  */
7946 < #line 3597 "ircd_parser.y"
6442 >  case 640:
6443 > #line 2982 "conf_parser.y" /* yacc.c:1646  */
6444      {
6445 <  ConfigChannel.burst_topicwho = yylval.number;
6445 >  GlobalSetOptions.joinfloodcount = yylval.number;
6446   }
6447 + #line 6448 "conf_parser.c" /* yacc.c:1646  */
6448      break;
6449  
6450 <  case 668:
6451 <
7954 < /* Line 1464 of yacc.c  */
7955 < #line 3602 "ircd_parser.y"
6450 >  case 641:
6451 > #line 2987 "conf_parser.y" /* yacc.c:1646  */
6452      {
6453 <  GlobalSetOptions.joinfloodcount = yylval.number;
6453 >  GlobalSetOptions.joinfloodtime = (yyvsp[-1].number);
6454   }
6455 + #line 6456 "conf_parser.c" /* yacc.c:1646  */
6456      break;
6457  
6458 <  case 669:
6459 <
7963 < /* Line 1464 of yacc.c  */
7964 < #line 3607 "ircd_parser.y"
6458 >  case 654:
6459 > #line 3009 "conf_parser.y" /* yacc.c:1646  */
6460      {
6461 <  GlobalSetOptions.joinfloodtime = yylval.number;
6461 >  if (conf_parser_ctx.pass == 2)
6462 >    ConfigServerHide.flatten_links = yylval.number;
6463   }
6464 + #line 6465 "conf_parser.c" /* yacc.c:1646  */
6465      break;
6466  
6467 <  case 681:
6468 <
7972 < /* Line 1464 of yacc.c  */
7973 < #line 3626 "ircd_parser.y"
6467 >  case 655:
6468 > #line 3015 "conf_parser.y" /* yacc.c:1646  */
6469      {
6470    if (conf_parser_ctx.pass == 2)
6471 <    ConfigServerHide.flatten_links = yylval.number;
6471 >    ConfigServerHide.disable_remote_commands = yylval.number;
6472   }
6473 + #line 6474 "conf_parser.c" /* yacc.c:1646  */
6474      break;
6475  
6476 <  case 682:
6477 <
7982 < /* Line 1464 of yacc.c  */
7983 < #line 3632 "ircd_parser.y"
6476 >  case 656:
6477 > #line 3021 "conf_parser.y" /* yacc.c:1646  */
6478      {
6479    if (conf_parser_ctx.pass == 2)
6480      ConfigServerHide.hide_servers = yylval.number;
6481   }
6482 + #line 6483 "conf_parser.c" /* yacc.c:1646  */
6483      break;
6484  
6485 <  case 683:
6485 >  case 657:
6486 > #line 3027 "conf_parser.y" /* yacc.c:1646  */
6487 >    {
6488 >  if (conf_parser_ctx.pass == 2)
6489 >    ConfigServerHide.hide_services = yylval.number;
6490 > }
6491 > #line 6492 "conf_parser.c" /* yacc.c:1646  */
6492 >    break;
6493  
6494 < /* Line 1464 of yacc.c  */
6495 < #line 3638 "ircd_parser.y"
6494 >  case 658:
6495 > #line 3033 "conf_parser.y" /* yacc.c:1646  */
6496      {
6497    if (conf_parser_ctx.pass == 2)
6498    {
6499      MyFree(ConfigServerHide.hidden_name);
6500 <    DupString(ConfigServerHide.hidden_name, yylval.string);
6500 >    ConfigServerHide.hidden_name = xstrdup(yylval.string);
6501    }
6502   }
6503 + #line 6504 "conf_parser.c" /* yacc.c:1646  */
6504      break;
6505  
6506 <  case 684:
6507 <
8005 < /* Line 1464 of yacc.c  */
8006 < #line 3647 "ircd_parser.y"
6506 >  case 659:
6507 > #line 3042 "conf_parser.y" /* yacc.c:1646  */
6508      {
6509    if (conf_parser_ctx.pass == 2)
6510    {
6511 <    if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6511 >    if (((yyvsp[-1].number) > 0) && ConfigServerHide.links_disabled == 1)
6512      {
6513 <      eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6513 >      eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[-1].number));
6514        ConfigServerHide.links_disabled = 0;
6515      }
6516  
6517 <    ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6517 >    ConfigServerHide.links_delay = (yyvsp[-1].number);
6518    }
6519   }
6520 + #line 6521 "conf_parser.c" /* yacc.c:1646  */
6521      break;
6522  
6523 <  case 685:
6524 <
8023 < /* Line 1464 of yacc.c  */
8024 < #line 3661 "ircd_parser.y"
6523 >  case 660:
6524 > #line 3056 "conf_parser.y" /* yacc.c:1646  */
6525      {
6526    if (conf_parser_ctx.pass == 2)
6527      ConfigServerHide.hidden = yylval.number;
6528   }
6529 + #line 6530 "conf_parser.c" /* yacc.c:1646  */
6530      break;
6531  
6532 <  case 686:
6533 <
8033 < /* Line 1464 of yacc.c  */
8034 < #line 3667 "ircd_parser.y"
8035 <    {
8036 <  if (conf_parser_ctx.pass == 2)
8037 <    ConfigServerHide.disable_hidden = yylval.number;
8038 < }
8039 <    break;
8040 <
8041 <  case 687:
8042 <
8043 < /* Line 1464 of yacc.c  */
8044 < #line 3673 "ircd_parser.y"
6532 >  case 661:
6533 > #line 3062 "conf_parser.y" /* yacc.c:1646  */
6534      {
6535    if (conf_parser_ctx.pass == 2)
6536      ConfigServerHide.hide_server_ips = yylval.number;
6537   }
6538 + #line 6539 "conf_parser.c" /* yacc.c:1646  */
6539      break;
6540  
6541  
6542 <
8053 < /* Line 1464 of yacc.c  */
8054 < #line 8055 "ircd_parser.c"
6542 > #line 6543 "conf_parser.c" /* yacc.c:1646  */
6543        default: break;
6544      }
6545 +  /* User semantic actions sometimes alter yychar, and that requires
6546 +     that yytoken be updated with the new translation.  We take the
6547 +     approach of translating immediately before every use of yytoken.
6548 +     One alternative is translating here after every semantic action,
6549 +     but that translation would be missed if the semantic action invokes
6550 +     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6551 +     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
6552 +     incorrect destructor might then be invoked immediately.  In the
6553 +     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6554 +     to an incorrect destructor call or verbose syntax error message
6555 +     before the lookahead is translated.  */
6556    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6557  
6558    YYPOPSTACK (yylen);
# Line 8062 | Line 6561 | yyreduce:
6561  
6562    *++yyvsp = yyval;
6563  
6564 <  /* Now `shift' the result of the reduction.  Determine what state
6564 >  /* Now 'shift' the result of the reduction.  Determine what state
6565       that goes to, based on the state we popped back to and the rule
6566       number reduced by.  */
6567  
# Line 8077 | Line 6576 | yyreduce:
6576    goto yynewstate;
6577  
6578  
6579 < /*------------------------------------.
6580 < | yyerrlab -- here on detecting error |
6581 < `------------------------------------*/
6579 > /*--------------------------------------.
6580 > | yyerrlab -- here on detecting error.  |
6581 > `--------------------------------------*/
6582   yyerrlab:
6583 +  /* Make sure we have latest lookahead translation.  See comments at
6584 +     user semantic actions for why this is necessary.  */
6585 +  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6586 +
6587    /* If not already recovering from an error, report this error.  */
6588    if (!yyerrstatus)
6589      {
# Line 8088 | Line 6591 | yyerrlab:
6591   #if ! YYERROR_VERBOSE
6592        yyerror (YY_("syntax error"));
6593   #else
6594 + # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6595 +                                        yyssp, yytoken)
6596        {
6597 <        YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
6598 <        if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
6599 <          {
6600 <            YYSIZE_T yyalloc = 2 * yysize;
6601 <            if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
6602 <              yyalloc = YYSTACK_ALLOC_MAXIMUM;
6603 <            if (yymsg != yymsgbuf)
6604 <              YYSTACK_FREE (yymsg);
6605 <            yymsg = (char *) YYSTACK_ALLOC (yyalloc);
6606 <            if (yymsg)
6607 <              yymsg_alloc = yyalloc;
6608 <            else
6609 <              {
6610 <                yymsg = yymsgbuf;
6611 <                yymsg_alloc = sizeof yymsgbuf;
6612 <              }
6613 <          }
6614 <
6615 <        if (0 < yysize && yysize <= yymsg_alloc)
6616 <          {
6617 <            (void) yysyntax_error (yymsg, yystate, yychar);
6618 <            yyerror (yymsg);
6619 <          }
6620 <        else
6621 <          {
8117 <            yyerror (YY_("syntax error"));
8118 <            if (yysize != 0)
8119 <              goto yyexhaustedlab;
8120 <          }
6597 >        char const *yymsgp = YY_("syntax error");
6598 >        int yysyntax_error_status;
6599 >        yysyntax_error_status = YYSYNTAX_ERROR;
6600 >        if (yysyntax_error_status == 0)
6601 >          yymsgp = yymsg;
6602 >        else if (yysyntax_error_status == 1)
6603 >          {
6604 >            if (yymsg != yymsgbuf)
6605 >              YYSTACK_FREE (yymsg);
6606 >            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6607 >            if (!yymsg)
6608 >              {
6609 >                yymsg = yymsgbuf;
6610 >                yymsg_alloc = sizeof yymsgbuf;
6611 >                yysyntax_error_status = 2;
6612 >              }
6613 >            else
6614 >              {
6615 >                yysyntax_error_status = YYSYNTAX_ERROR;
6616 >                yymsgp = yymsg;
6617 >              }
6618 >          }
6619 >        yyerror (yymsgp);
6620 >        if (yysyntax_error_status == 2)
6621 >          goto yyexhaustedlab;
6622        }
6623 + # undef YYSYNTAX_ERROR
6624   #endif
6625      }
6626  
# Line 8127 | Line 6629 | yyerrlab:
6629    if (yyerrstatus == 3)
6630      {
6631        /* If just tried and failed to reuse lookahead token after an
6632 <         error, discard it.  */
6632 >         error, discard it.  */
6633  
6634        if (yychar <= YYEOF)
6635 <        {
6636 <          /* Return failure if at end of input.  */
6637 <          if (yychar == YYEOF)
6638 <            YYABORT;
6639 <        }
6635 >        {
6636 >          /* Return failure if at end of input.  */
6637 >          if (yychar == YYEOF)
6638 >            YYABORT;
6639 >        }
6640        else
6641 <        {
6642 <          yydestruct ("Error: discarding",
6643 <                      yytoken, &yylval);
6644 <          yychar = YYEMPTY;
6645 <        }
6641 >        {
6642 >          yydestruct ("Error: discarding",
6643 >                      yytoken, &yylval);
6644 >          yychar = YYEMPTY;
6645 >        }
6646      }
6647  
6648    /* Else will try to reuse lookahead token after shifting the error
# Line 8159 | Line 6661 | yyerrorlab:
6661    if (/*CONSTCOND*/ 0)
6662       goto yyerrorlab;
6663  
6664 <  /* Do not reclaim the symbols of the rule which action triggered
6664 >  /* Do not reclaim the symbols of the rule whose action triggered
6665       this YYERROR.  */
6666    YYPOPSTACK (yylen);
6667    yylen = 0;
# Line 8172 | Line 6674 | yyerrorlab:
6674   | yyerrlab1 -- common code for both syntax error and YYERROR.  |
6675   `-------------------------------------------------------------*/
6676   yyerrlab1:
6677 <  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6677 >  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
6678  
6679    for (;;)
6680      {
6681        yyn = yypact[yystate];
6682 <      if (yyn != YYPACT_NINF)
6683 <        {
6684 <          yyn += YYTERROR;
6685 <          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6686 <            {
6687 <              yyn = yytable[yyn];
6688 <              if (0 < yyn)
6689 <                break;
6690 <            }
6691 <        }
6682 >      if (!yypact_value_is_default (yyn))
6683 >        {
6684 >          yyn += YYTERROR;
6685 >          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6686 >            {
6687 >              yyn = yytable[yyn];
6688 >              if (0 < yyn)
6689 >                break;
6690 >            }
6691 >        }
6692  
6693        /* Pop the current state because it cannot handle the error token.  */
6694        if (yyssp == yyss)
6695 <        YYABORT;
6695 >        YYABORT;
6696  
6697  
6698        yydestruct ("Error: popping",
6699 <                  yystos[yystate], yyvsp);
6699 >                  yystos[yystate], yyvsp);
6700        YYPOPSTACK (1);
6701        yystate = *yyssp;
6702        YY_STACK_PRINT (yyss, yyssp);
6703      }
6704  
6705 +  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6706    *++yyvsp = yylval;
6707 +  YY_IGNORE_MAYBE_UNINITIALIZED_END
6708  
6709  
6710    /* Shift the error token.  */
# Line 8224 | Line 6728 | yyabortlab:
6728    yyresult = 1;
6729    goto yyreturn;
6730  
6731 < #if !defined(yyoverflow) || YYERROR_VERBOSE
6731 > #if !defined yyoverflow || YYERROR_VERBOSE
6732   /*-------------------------------------------------.
6733   | yyexhaustedlab -- memory exhaustion comes here.  |
6734   `-------------------------------------------------*/
# Line 8236 | Line 6740 | yyexhaustedlab:
6740  
6741   yyreturn:
6742    if (yychar != YYEMPTY)
6743 <     yydestruct ("Cleanup: discarding lookahead",
6744 <                 yytoken, &yylval);
6745 <  /* Do not reclaim the symbols of the rule which action triggered
6743 >    {
6744 >      /* Make sure we have latest lookahead translation.  See comments at
6745 >         user semantic actions for why this is necessary.  */
6746 >      yytoken = YYTRANSLATE (yychar);
6747 >      yydestruct ("Cleanup: discarding lookahead",
6748 >                  yytoken, &yylval);
6749 >    }
6750 >  /* Do not reclaim the symbols of the rule whose action triggered
6751       this YYABORT or YYACCEPT.  */
6752    YYPOPSTACK (yylen);
6753    YY_STACK_PRINT (yyss, yyssp);
6754    while (yyssp != yyss)
6755      {
6756        yydestruct ("Cleanup: popping",
6757 <                  yystos[*yyssp], yyvsp);
6757 >                  yystos[*yyssp], yyvsp);
6758        YYPOPSTACK (1);
6759      }
6760   #ifndef yyoverflow
# Line 8256 | Line 6765 | yyreturn:
6765    if (yymsg != yymsgbuf)
6766      YYSTACK_FREE (yymsg);
6767   #endif
6768 <  /* Make sure YYID is used.  */
8260 <  return YYID (yyresult);
6768 >  return yyresult;
6769   }
8262
8263
8264

Comparing:
ircd-hybrid-7.3/src/ircd_parser.c (property svn:keywords), Revision 1119 by michael, Fri Jan 7 22:01:47 2011 UTC vs.
ircd-hybrid/trunk/src/conf_parser.c (property svn:keywords), Revision 3513 by michael, Mon May 12 16:28:29 2014 UTC

# Line 0 | Line 1
1 + Id Revision

Diff Legend

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