ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1628
Committed: Thu Nov 1 21:08:56 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 221418 byte(s)
Log Message:
- flesh out new *line database handling
- simplify temporary bans

File Contents

# Content
1 /* A Bison parser, made by GNU Bison 2.6.2.33-cc5a9. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
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
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
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
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
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "2.6.2.33-cc5a9"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 /* Line 358 of yacc.c */
66 #line 25 "conf_parser.y"
67
68
69 #define YY_NO_UNPUT
70 #include <sys/types.h>
71 #include <string.h>
72
73 #include "config.h"
74 #include "stdinc.h"
75 #include "ircd.h"
76 #include "list.h"
77 #include "conf.h"
78 #include "event.h"
79 #include "log.h"
80 #include "client.h" /* for UMODE_ALL only */
81 #include "irc_string.h"
82 #include "sprintf_irc.h"
83 #include "memory.h"
84 #include "modules.h"
85 #include "s_serv.h"
86 #include "hostmask.h"
87 #include "send.h"
88 #include "listener.h"
89 #include "resv.h"
90 #include "numeric.h"
91 #include "s_user.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 int yylex(void);
101
102 static char *class_name = NULL;
103 static struct ConfItem *yy_conf = NULL;
104 static struct AccessItem *yy_aconf = NULL;
105 static struct MatchItem *yy_match_item = NULL;
106 static struct ClassItem *yy_class = NULL;
107 static char *yy_class_name = NULL;
108
109 static dlink_list col_conf_list = { NULL, NULL, 0 };
110 static unsigned int listener_flags = 0;
111 static unsigned int regex_ban = 0;
112 static char userbuf[IRCD_BUFSIZE];
113 static char hostbuf[IRCD_BUFSIZE];
114 static char reasonbuf[REASONLEN + 1];
115 static char gecos_name[REALLEN * 4];
116 static char lfile[IRCD_BUFSIZE];
117 static unsigned int ltype = 0;
118 static unsigned int lsize = 0;
119 static char *resv_reason = NULL;
120 static char *listener_address = NULL;
121
122 struct CollectItem
123 {
124 dlink_node node;
125 char *name;
126 char *user;
127 char *host;
128 char *passwd;
129 int port;
130 int flags;
131 #ifdef HAVE_LIBCRYPTO
132 char *rsa_public_key_file;
133 RSA *rsa_public_key;
134 #endif
135 };
136
137 static void
138 free_collect_item(struct CollectItem *item)
139 {
140 MyFree(item->name);
141 MyFree(item->user);
142 MyFree(item->host);
143 MyFree(item->passwd);
144 #ifdef HAVE_LIBCRYPTO
145 MyFree(item->rsa_public_key_file);
146 #endif
147 MyFree(item);
148 }
149
150
151 /* Line 358 of yacc.c */
152 #line 153 "conf_parser.c"
153
154 # ifndef YY_NULL
155 # if defined __cplusplus && 201103L <= __cplusplus
156 # define YY_NULL nullptr
157 # else
158 # define YY_NULL 0
159 # endif
160 # endif
161
162 /* Enabling verbose error messages. */
163 #ifdef YYERROR_VERBOSE
164 # undef YYERROR_VERBOSE
165 # define YYERROR_VERBOSE 1
166 #else
167 # define YYERROR_VERBOSE 0
168 #endif
169
170 /* In a future release of Bison, this section will be replaced
171 by #include "y.tab.h". */
172 #ifndef YY_YY_Y_TAB_H_INCLUDED
173 # define YY_YY_Y_TAB_H_INCLUDED
174 /* Enabling traces. */
175 #ifndef YYDEBUG
176 # define YYDEBUG 0
177 #endif
178 #if YYDEBUG
179 extern int yydebug;
180 #endif
181
182 /* Tokens. */
183 #ifndef YYTOKENTYPE
184 # define YYTOKENTYPE
185 /* Put the tokens into the symbol table, so that GDB and other debuggers
186 know about them. */
187 enum yytokentype {
188 ACCEPT_PASSWORD = 258,
189 ADMIN = 259,
190 AFTYPE = 260,
191 ANTI_NICK_FLOOD = 261,
192 ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
193 AUTOCONN = 263,
194 BYTES = 264,
195 KBYTES = 265,
196 MBYTES = 266,
197 CALLER_ID_WAIT = 267,
198 CAN_FLOOD = 268,
199 CHANNEL = 269,
200 CIDR_BITLEN_IPV4 = 270,
201 CIDR_BITLEN_IPV6 = 271,
202 CLASS = 272,
203 CONNECT = 273,
204 CONNECTFREQ = 274,
205 DEFAULT_FLOODCOUNT = 275,
206 DEFAULT_SPLIT_SERVER_COUNT = 276,
207 DEFAULT_SPLIT_USER_COUNT = 277,
208 DENY = 278,
209 DESCRIPTION = 279,
210 DIE = 280,
211 DISABLE_AUTH = 281,
212 DISABLE_FAKE_CHANNELS = 282,
213 DISABLE_REMOTE_COMMANDS = 283,
214 DOTS_IN_IDENT = 284,
215 EGDPOOL_PATH = 285,
216 EMAIL = 286,
217 ENCRYPTED = 287,
218 EXCEED_LIMIT = 288,
219 EXEMPT = 289,
220 FAILED_OPER_NOTICE = 290,
221 IRCD_FLAGS = 291,
222 FLATTEN_LINKS = 292,
223 GECOS = 293,
224 GENERAL = 294,
225 GLINE = 295,
226 GLINE_DURATION = 296,
227 GLINE_ENABLE = 297,
228 GLINE_EXEMPT = 298,
229 GLINE_REQUEST_DURATION = 299,
230 GLINE_MIN_CIDR = 300,
231 GLINE_MIN_CIDR6 = 301,
232 GLOBAL_KILL = 302,
233 IRCD_AUTH = 303,
234 NEED_IDENT = 304,
235 HAVENT_READ_CONF = 305,
236 HIDDEN = 306,
237 HIDDEN_NAME = 307,
238 HIDE_SERVER_IPS = 308,
239 HIDE_SERVERS = 309,
240 HIDE_SPOOF_IPS = 310,
241 HOST = 311,
242 HUB = 312,
243 HUB_MASK = 313,
244 IGNORE_BOGUS_TS = 314,
245 INVISIBLE_ON_CONNECT = 315,
246 IP = 316,
247 KILL = 317,
248 KILL_CHASE_TIME_LIMIT = 318,
249 KLINE = 319,
250 KLINE_EXEMPT = 320,
251 KNOCK_DELAY = 321,
252 KNOCK_DELAY_CHANNEL = 322,
253 LEAF_MASK = 323,
254 LINKS_DELAY = 324,
255 LISTEN = 325,
256 T_LOG = 326,
257 MAX_ACCEPT = 327,
258 MAX_BANS = 328,
259 MAX_CHANS_PER_OPER = 329,
260 MAX_CHANS_PER_USER = 330,
261 MAX_GLOBAL = 331,
262 MAX_IDENT = 332,
263 MAX_LOCAL = 333,
264 MAX_NICK_CHANGES = 334,
265 MAX_NICK_TIME = 335,
266 MAX_NUMBER = 336,
267 MAX_TARGETS = 337,
268 MAX_WATCH = 338,
269 MESSAGE_LOCALE = 339,
270 MIN_NONWILDCARD = 340,
271 MIN_NONWILDCARD_SIMPLE = 341,
272 MODULE = 342,
273 MODULES = 343,
274 NAME = 344,
275 NEED_PASSWORD = 345,
276 NETWORK_DESC = 346,
277 NETWORK_NAME = 347,
278 NICK = 348,
279 NICK_CHANGES = 349,
280 NO_CREATE_ON_SPLIT = 350,
281 NO_JOIN_ON_SPLIT = 351,
282 NO_OPER_FLOOD = 352,
283 NO_TILDE = 353,
284 NUMBER = 354,
285 NUMBER_PER_CIDR = 355,
286 NUMBER_PER_IP = 356,
287 OPERATOR = 357,
288 OPERS_BYPASS_CALLERID = 358,
289 OPER_ONLY_UMODES = 359,
290 OPER_PASS_RESV = 360,
291 OPER_SPY_T = 361,
292 OPER_UMODES = 362,
293 JOIN_FLOOD_COUNT = 363,
294 JOIN_FLOOD_TIME = 364,
295 PACE_WAIT = 365,
296 PACE_WAIT_SIMPLE = 366,
297 PASSWORD = 367,
298 PATH = 368,
299 PING_COOKIE = 369,
300 PING_TIME = 370,
301 PING_WARNING = 371,
302 PORT = 372,
303 QSTRING = 373,
304 QUIET_ON_BAN = 374,
305 REASON = 375,
306 REDIRPORT = 376,
307 REDIRSERV = 377,
308 REGEX_T = 378,
309 REHASH = 379,
310 REMOTE = 380,
311 REMOTEBAN = 381,
312 RESTRICT_CHANNELS = 382,
313 RSA_PRIVATE_KEY_FILE = 383,
314 RSA_PUBLIC_KEY_FILE = 384,
315 SSL_CERTIFICATE_FILE = 385,
316 SSL_DH_PARAM_FILE = 386,
317 T_SSL_CLIENT_METHOD = 387,
318 T_SSL_SERVER_METHOD = 388,
319 T_SSLV3 = 389,
320 T_TLSV1 = 390,
321 RESV = 391,
322 RESV_EXEMPT = 392,
323 SECONDS = 393,
324 MINUTES = 394,
325 HOURS = 395,
326 DAYS = 396,
327 WEEKS = 397,
328 SENDQ = 398,
329 SEND_PASSWORD = 399,
330 SERVERHIDE = 400,
331 SERVERINFO = 401,
332 IRCD_SID = 402,
333 TKLINE_EXPIRE_NOTICES = 403,
334 T_SHARED = 404,
335 T_CLUSTER = 405,
336 TYPE = 406,
337 SHORT_MOTD = 407,
338 SPOOF = 408,
339 SPOOF_NOTICE = 409,
340 STATS_E_DISABLED = 410,
341 STATS_I_OPER_ONLY = 411,
342 STATS_K_OPER_ONLY = 412,
343 STATS_O_OPER_ONLY = 413,
344 STATS_P_OPER_ONLY = 414,
345 TBOOL = 415,
346 TMASKED = 416,
347 TS_MAX_DELTA = 417,
348 TS_WARN_DELTA = 418,
349 TWODOTS = 419,
350 T_ALL = 420,
351 T_BOTS = 421,
352 T_SOFTCALLERID = 422,
353 T_CALLERID = 423,
354 T_CCONN = 424,
355 T_CCONN_FULL = 425,
356 T_SSL_CIPHER_LIST = 426,
357 T_DEAF = 427,
358 T_DEBUG = 428,
359 T_DLINE = 429,
360 T_EXTERNAL = 430,
361 T_FULL = 431,
362 T_INVISIBLE = 432,
363 T_IPV4 = 433,
364 T_IPV6 = 434,
365 T_LOCOPS = 435,
366 T_MAX_CLIENTS = 436,
367 T_NCHANGE = 437,
368 T_OPERWALL = 438,
369 T_RECVQ = 439,
370 T_REJ = 440,
371 T_SERVER = 441,
372 T_SERVNOTICE = 442,
373 T_SET = 443,
374 T_SKILL = 444,
375 T_SPY = 445,
376 T_SSL = 446,
377 T_UMODES = 447,
378 T_UNAUTH = 448,
379 T_UNDLINE = 449,
380 T_UNLIMITED = 450,
381 T_UNRESV = 451,
382 T_UNXLINE = 452,
383 T_GLOBOPS = 453,
384 T_WALLOP = 454,
385 T_RESTART = 455,
386 T_SERVICE = 456,
387 T_SERVICES_NAME = 457,
388 THROTTLE_TIME = 458,
389 TRUE_NO_OPER_FLOOD = 459,
390 UNKLINE = 460,
391 USER = 461,
392 USE_EGD = 462,
393 USE_LOGGING = 463,
394 VHOST = 464,
395 VHOST6 = 465,
396 XLINE = 466,
397 WARN_NO_NLINE = 467,
398 T_SIZE = 468,
399 T_FILE = 469
400 };
401 #endif
402 /* Tokens. */
403 #define ACCEPT_PASSWORD 258
404 #define ADMIN 259
405 #define AFTYPE 260
406 #define ANTI_NICK_FLOOD 261
407 #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
408 #define AUTOCONN 263
409 #define BYTES 264
410 #define KBYTES 265
411 #define MBYTES 266
412 #define CALLER_ID_WAIT 267
413 #define CAN_FLOOD 268
414 #define CHANNEL 269
415 #define CIDR_BITLEN_IPV4 270
416 #define CIDR_BITLEN_IPV6 271
417 #define CLASS 272
418 #define CONNECT 273
419 #define CONNECTFREQ 274
420 #define DEFAULT_FLOODCOUNT 275
421 #define DEFAULT_SPLIT_SERVER_COUNT 276
422 #define DEFAULT_SPLIT_USER_COUNT 277
423 #define DENY 278
424 #define DESCRIPTION 279
425 #define DIE 280
426 #define DISABLE_AUTH 281
427 #define DISABLE_FAKE_CHANNELS 282
428 #define DISABLE_REMOTE_COMMANDS 283
429 #define DOTS_IN_IDENT 284
430 #define EGDPOOL_PATH 285
431 #define EMAIL 286
432 #define ENCRYPTED 287
433 #define EXCEED_LIMIT 288
434 #define EXEMPT 289
435 #define FAILED_OPER_NOTICE 290
436 #define IRCD_FLAGS 291
437 #define FLATTEN_LINKS 292
438 #define GECOS 293
439 #define GENERAL 294
440 #define GLINE 295
441 #define GLINE_DURATION 296
442 #define GLINE_ENABLE 297
443 #define GLINE_EXEMPT 298
444 #define GLINE_REQUEST_DURATION 299
445 #define GLINE_MIN_CIDR 300
446 #define GLINE_MIN_CIDR6 301
447 #define GLOBAL_KILL 302
448 #define IRCD_AUTH 303
449 #define NEED_IDENT 304
450 #define HAVENT_READ_CONF 305
451 #define HIDDEN 306
452 #define HIDDEN_NAME 307
453 #define HIDE_SERVER_IPS 308
454 #define HIDE_SERVERS 309
455 #define HIDE_SPOOF_IPS 310
456 #define HOST 311
457 #define HUB 312
458 #define HUB_MASK 313
459 #define IGNORE_BOGUS_TS 314
460 #define INVISIBLE_ON_CONNECT 315
461 #define IP 316
462 #define KILL 317
463 #define KILL_CHASE_TIME_LIMIT 318
464 #define KLINE 319
465 #define KLINE_EXEMPT 320
466 #define KNOCK_DELAY 321
467 #define KNOCK_DELAY_CHANNEL 322
468 #define LEAF_MASK 323
469 #define LINKS_DELAY 324
470 #define LISTEN 325
471 #define T_LOG 326
472 #define MAX_ACCEPT 327
473 #define MAX_BANS 328
474 #define MAX_CHANS_PER_OPER 329
475 #define MAX_CHANS_PER_USER 330
476 #define MAX_GLOBAL 331
477 #define MAX_IDENT 332
478 #define MAX_LOCAL 333
479 #define MAX_NICK_CHANGES 334
480 #define MAX_NICK_TIME 335
481 #define MAX_NUMBER 336
482 #define MAX_TARGETS 337
483 #define MAX_WATCH 338
484 #define MESSAGE_LOCALE 339
485 #define MIN_NONWILDCARD 340
486 #define MIN_NONWILDCARD_SIMPLE 341
487 #define MODULE 342
488 #define MODULES 343
489 #define NAME 344
490 #define NEED_PASSWORD 345
491 #define NETWORK_DESC 346
492 #define NETWORK_NAME 347
493 #define NICK 348
494 #define NICK_CHANGES 349
495 #define NO_CREATE_ON_SPLIT 350
496 #define NO_JOIN_ON_SPLIT 351
497 #define NO_OPER_FLOOD 352
498 #define NO_TILDE 353
499 #define NUMBER 354
500 #define NUMBER_PER_CIDR 355
501 #define NUMBER_PER_IP 356
502 #define OPERATOR 357
503 #define OPERS_BYPASS_CALLERID 358
504 #define OPER_ONLY_UMODES 359
505 #define OPER_PASS_RESV 360
506 #define OPER_SPY_T 361
507 #define OPER_UMODES 362
508 #define JOIN_FLOOD_COUNT 363
509 #define JOIN_FLOOD_TIME 364
510 #define PACE_WAIT 365
511 #define PACE_WAIT_SIMPLE 366
512 #define PASSWORD 367
513 #define PATH 368
514 #define PING_COOKIE 369
515 #define PING_TIME 370
516 #define PING_WARNING 371
517 #define PORT 372
518 #define QSTRING 373
519 #define QUIET_ON_BAN 374
520 #define REASON 375
521 #define REDIRPORT 376
522 #define REDIRSERV 377
523 #define REGEX_T 378
524 #define REHASH 379
525 #define REMOTE 380
526 #define REMOTEBAN 381
527 #define RESTRICT_CHANNELS 382
528 #define RSA_PRIVATE_KEY_FILE 383
529 #define RSA_PUBLIC_KEY_FILE 384
530 #define SSL_CERTIFICATE_FILE 385
531 #define SSL_DH_PARAM_FILE 386
532 #define T_SSL_CLIENT_METHOD 387
533 #define T_SSL_SERVER_METHOD 388
534 #define T_SSLV3 389
535 #define T_TLSV1 390
536 #define RESV 391
537 #define RESV_EXEMPT 392
538 #define SECONDS 393
539 #define MINUTES 394
540 #define HOURS 395
541 #define DAYS 396
542 #define WEEKS 397
543 #define SENDQ 398
544 #define SEND_PASSWORD 399
545 #define SERVERHIDE 400
546 #define SERVERINFO 401
547 #define IRCD_SID 402
548 #define TKLINE_EXPIRE_NOTICES 403
549 #define T_SHARED 404
550 #define T_CLUSTER 405
551 #define TYPE 406
552 #define SHORT_MOTD 407
553 #define SPOOF 408
554 #define SPOOF_NOTICE 409
555 #define STATS_E_DISABLED 410
556 #define STATS_I_OPER_ONLY 411
557 #define STATS_K_OPER_ONLY 412
558 #define STATS_O_OPER_ONLY 413
559 #define STATS_P_OPER_ONLY 414
560 #define TBOOL 415
561 #define TMASKED 416
562 #define TS_MAX_DELTA 417
563 #define TS_WARN_DELTA 418
564 #define TWODOTS 419
565 #define T_ALL 420
566 #define T_BOTS 421
567 #define T_SOFTCALLERID 422
568 #define T_CALLERID 423
569 #define T_CCONN 424
570 #define T_CCONN_FULL 425
571 #define T_SSL_CIPHER_LIST 426
572 #define T_DEAF 427
573 #define T_DEBUG 428
574 #define T_DLINE 429
575 #define T_EXTERNAL 430
576 #define T_FULL 431
577 #define T_INVISIBLE 432
578 #define T_IPV4 433
579 #define T_IPV6 434
580 #define T_LOCOPS 435
581 #define T_MAX_CLIENTS 436
582 #define T_NCHANGE 437
583 #define T_OPERWALL 438
584 #define T_RECVQ 439
585 #define T_REJ 440
586 #define T_SERVER 441
587 #define T_SERVNOTICE 442
588 #define T_SET 443
589 #define T_SKILL 444
590 #define T_SPY 445
591 #define T_SSL 446
592 #define T_UMODES 447
593 #define T_UNAUTH 448
594 #define T_UNDLINE 449
595 #define T_UNLIMITED 450
596 #define T_UNRESV 451
597 #define T_UNXLINE 452
598 #define T_GLOBOPS 453
599 #define T_WALLOP 454
600 #define T_RESTART 455
601 #define T_SERVICE 456
602 #define T_SERVICES_NAME 457
603 #define THROTTLE_TIME 458
604 #define TRUE_NO_OPER_FLOOD 459
605 #define UNKLINE 460
606 #define USER 461
607 #define USE_EGD 462
608 #define USE_LOGGING 463
609 #define VHOST 464
610 #define VHOST6 465
611 #define XLINE 466
612 #define WARN_NO_NLINE 467
613 #define T_SIZE 468
614 #define T_FILE 469
615
616
617
618 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
619 typedef union YYSTYPE
620 {
621 /* Line 374 of yacc.c */
622 #line 110 "conf_parser.y"
623
624 int number;
625 char *string;
626
627
628 /* Line 374 of yacc.c */
629 #line 630 "conf_parser.c"
630 } YYSTYPE;
631 # define YYSTYPE_IS_TRIVIAL 1
632 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
633 # define YYSTYPE_IS_DECLARED 1
634 #endif
635
636 extern YYSTYPE yylval;
637
638 #ifdef YYPARSE_PARAM
639 #if defined __STDC__ || defined __cplusplus
640 int yyparse (void *YYPARSE_PARAM);
641 #else
642 int yyparse ();
643 #endif
644 #else /* ! YYPARSE_PARAM */
645 #if defined __STDC__ || defined __cplusplus
646 int yyparse (void);
647 #else
648 int yyparse ();
649 #endif
650 #endif /* ! YYPARSE_PARAM */
651
652 #endif /* !YY_YY_Y_TAB_H_INCLUDED */
653
654 /* Copy the second part of user declarations. */
655
656 /* Line 377 of yacc.c */
657 #line 658 "conf_parser.c"
658
659 #ifdef short
660 # undef short
661 #endif
662
663 #ifdef YYTYPE_UINT8
664 typedef YYTYPE_UINT8 yytype_uint8;
665 #else
666 typedef unsigned char yytype_uint8;
667 #endif
668
669 #ifdef YYTYPE_INT8
670 typedef YYTYPE_INT8 yytype_int8;
671 #elif (defined __STDC__ || defined __C99__FUNC__ \
672 || defined __cplusplus || defined _MSC_VER)
673 typedef signed char yytype_int8;
674 #else
675 typedef short int yytype_int8;
676 #endif
677
678 #ifdef YYTYPE_UINT16
679 typedef YYTYPE_UINT16 yytype_uint16;
680 #else
681 typedef unsigned short int yytype_uint16;
682 #endif
683
684 #ifdef YYTYPE_INT16
685 typedef YYTYPE_INT16 yytype_int16;
686 #else
687 typedef short int yytype_int16;
688 #endif
689
690 #ifndef YYSIZE_T
691 # ifdef __SIZE_TYPE__
692 # define YYSIZE_T __SIZE_TYPE__
693 # elif defined size_t
694 # define YYSIZE_T size_t
695 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
696 || defined __cplusplus || defined _MSC_VER)
697 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
698 # define YYSIZE_T size_t
699 # else
700 # define YYSIZE_T unsigned int
701 # endif
702 #endif
703
704 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
705
706 #ifndef YY_
707 # if defined YYENABLE_NLS && YYENABLE_NLS
708 # if ENABLE_NLS
709 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
710 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
711 # endif
712 # endif
713 # ifndef YY_
714 # define YY_(Msgid) Msgid
715 # endif
716 #endif
717
718 /* Suppress unused-variable warnings by "using" E. */
719 #if ! defined lint || defined __GNUC__
720 # define YYUSE(E) ((void) (E))
721 #else
722 # define YYUSE(E) /* empty */
723 #endif
724
725 /* Identity function, used to suppress warnings about constant conditions. */
726 #ifndef lint
727 # define YYID(N) (N)
728 #else
729 #if (defined __STDC__ || defined __C99__FUNC__ \
730 || defined __cplusplus || defined _MSC_VER)
731 static int
732 YYID (int yyi)
733 #else
734 static int
735 YYID (yyi)
736 int yyi;
737 #endif
738 {
739 return yyi;
740 }
741 #endif
742
743 #if ! defined yyoverflow || YYERROR_VERBOSE
744
745 /* The parser invokes alloca or malloc; define the necessary symbols. */
746
747 # ifdef YYSTACK_USE_ALLOCA
748 # if YYSTACK_USE_ALLOCA
749 # ifdef __GNUC__
750 # define YYSTACK_ALLOC __builtin_alloca
751 # elif defined __BUILTIN_VA_ARG_INCR
752 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
753 # elif defined _AIX
754 # define YYSTACK_ALLOC __alloca
755 # elif defined _MSC_VER
756 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
757 # define alloca _alloca
758 # else
759 # define YYSTACK_ALLOC alloca
760 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
761 || defined __cplusplus || defined _MSC_VER)
762 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
763 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
764 # ifndef EXIT_SUCCESS
765 # define EXIT_SUCCESS 0
766 # endif
767 # endif
768 # endif
769 # endif
770 # endif
771
772 # ifdef YYSTACK_ALLOC
773 /* Pacify GCC's `empty if-body' warning. */
774 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
775 # ifndef YYSTACK_ALLOC_MAXIMUM
776 /* The OS might guarantee only one guard page at the bottom of the stack,
777 and a page size can be as small as 4096 bytes. So we cannot safely
778 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
779 to allow for a few compiler-allocated temporary stack slots. */
780 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
781 # endif
782 # else
783 # define YYSTACK_ALLOC YYMALLOC
784 # define YYSTACK_FREE YYFREE
785 # ifndef YYSTACK_ALLOC_MAXIMUM
786 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
787 # endif
788 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
789 && ! ((defined YYMALLOC || defined malloc) \
790 && (defined YYFREE || defined free)))
791 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
792 # ifndef EXIT_SUCCESS
793 # define EXIT_SUCCESS 0
794 # endif
795 # endif
796 # ifndef YYMALLOC
797 # define YYMALLOC malloc
798 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
799 || defined __cplusplus || defined _MSC_VER)
800 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
801 # endif
802 # endif
803 # ifndef YYFREE
804 # define YYFREE free
805 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
806 || defined __cplusplus || defined _MSC_VER)
807 void free (void *); /* INFRINGES ON USER NAME SPACE */
808 # endif
809 # endif
810 # endif
811 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
812
813
814 #if (! defined yyoverflow \
815 && (! defined __cplusplus \
816 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
817
818 /* A type that is properly aligned for any stack member. */
819 union yyalloc
820 {
821 yytype_int16 yyss_alloc;
822 YYSTYPE yyvs_alloc;
823 };
824
825 /* The size of the maximum gap between one aligned stack and the next. */
826 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
827
828 /* The size of an array large to enough to hold all stacks, each with
829 N elements. */
830 # define YYSTACK_BYTES(N) \
831 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
832 + YYSTACK_GAP_MAXIMUM)
833
834 # define YYCOPY_NEEDED 1
835
836 /* Relocate STACK from its old location to the new one. The
837 local variables YYSIZE and YYSTACKSIZE give the old and new number of
838 elements in the stack, and YYPTR gives the new location of the
839 stack. Advance YYPTR to a properly aligned location for the next
840 stack. */
841 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
842 do \
843 { \
844 YYSIZE_T yynewbytes; \
845 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
846 Stack = &yyptr->Stack_alloc; \
847 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
848 yyptr += yynewbytes / sizeof (*yyptr); \
849 } \
850 while (YYID (0))
851
852 #endif
853
854 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
855 /* Copy COUNT objects from SRC to DST. The source and destination do
856 not overlap. */
857 # ifndef YYCOPY
858 # if defined __GNUC__ && 1 < __GNUC__
859 # define YYCOPY(Dst, Src, Count) \
860 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
861 # else
862 # define YYCOPY(Dst, Src, Count) \
863 do \
864 { \
865 YYSIZE_T yyi; \
866 for (yyi = 0; yyi < (Count); yyi++) \
867 (Dst)[yyi] = (Src)[yyi]; \
868 } \
869 while (YYID (0))
870 # endif
871 # endif
872 #endif /* !YYCOPY_NEEDED */
873
874 /* YYFINAL -- State number of the termination state. */
875 #define YYFINAL 2
876 /* YYLAST -- Last index in YYTABLE. */
877 #define YYLAST 1206
878
879 /* YYNTOKENS -- Number of terminals. */
880 #define YYNTOKENS 220
881 /* YYNNTS -- Number of nonterminals. */
882 #define YYNNTS 283
883 /* YYNRULES -- Number of rules. */
884 #define YYNRULES 627
885 /* YYNRULES -- Number of states. */
886 #define YYNSTATES 1228
887
888 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
889 #define YYUNDEFTOK 2
890 #define YYMAXUTOK 469
891
892 #define YYTRANSLATE(YYX) \
893 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
894
895 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
896 static const yytype_uint8 yytranslate[] =
897 {
898 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
899 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
900 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
901 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
902 2, 2, 2, 2, 219, 2, 2, 2, 2, 2,
903 2, 2, 2, 2, 2, 2, 2, 2, 2, 215,
904 2, 218, 2, 2, 2, 2, 2, 2, 2, 2,
905 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
906 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
907 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
908 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
909 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
910 2, 2, 2, 217, 2, 216, 2, 2, 2, 2,
911 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
912 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
914 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
915 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
916 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
917 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
918 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
919 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
920 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
921 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
922 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
923 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
924 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
925 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
926 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
927 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
928 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
929 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
930 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
931 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
932 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
933 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
934 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
935 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
936 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
937 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
938 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
939 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
940 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
941 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
942 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
943 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
944 205, 206, 207, 208, 209, 210, 211, 212, 213, 214
945 };
946
947 #if YYDEBUG
948 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
949 YYRHS. */
950 static const yytype_uint16 yyprhs[] =
951 {
952 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
953 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
954 39, 41, 43, 45, 47, 50, 53, 54, 56, 59,
955 63, 67, 71, 75, 79, 80, 82, 85, 89, 93,
956 97, 103, 106, 108, 110, 112, 115, 120, 125, 131,
957 134, 136, 138, 140, 142, 144, 146, 148, 150, 152,
958 154, 156, 158, 160, 162, 164, 166, 169, 174, 179,
959 183, 185, 187, 189, 193, 195, 197, 199, 204, 209,
960 214, 219, 224, 229, 234, 239, 244, 249, 254, 259,
961 264, 270, 273, 275, 277, 279, 281, 284, 289, 294,
962 299, 305, 308, 310, 312, 314, 317, 322, 323, 330,
963 333, 335, 337, 339, 341, 344, 349, 354, 359, 360,
964 366, 370, 372, 374, 376, 378, 380, 382, 384, 386,
965 387, 394, 397, 399, 401, 403, 405, 407, 409, 411,
966 413, 415, 418, 423, 428, 433, 438, 443, 448, 449,
967 455, 459, 461, 463, 465, 467, 469, 471, 473, 475,
968 477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
969 497, 499, 501, 502, 508, 512, 514, 516, 518, 520,
970 522, 524, 526, 528, 530, 532, 534, 536, 538, 540,
971 542, 544, 546, 548, 550, 552, 553, 560, 563, 565,
972 567, 569, 571, 573, 575, 577, 579, 581, 583, 585,
973 587, 589, 591, 593, 596, 601, 606, 611, 616, 621,
974 626, 631, 636, 641, 646, 651, 656, 661, 666, 667,
975 674, 675, 681, 685, 687, 689, 691, 693, 696, 698,
976 700, 702, 704, 706, 709, 710, 716, 720, 722, 724,
977 728, 733, 738, 739, 746, 749, 751, 753, 755, 757,
978 759, 761, 763, 765, 767, 770, 775, 780, 785, 790,
979 791, 797, 801, 803, 805, 807, 809, 811, 813, 815,
980 817, 819, 821, 826, 831, 836, 837, 844, 847, 849,
981 851, 853, 855, 858, 863, 868, 873, 879, 882, 884,
982 886, 888, 893, 894, 901, 904, 906, 908, 910, 912,
983 915, 920, 925, 926, 932, 936, 938, 940, 942, 944,
984 946, 948, 950, 952, 954, 956, 958, 959, 966, 969,
985 971, 973, 975, 978, 983, 984, 990, 994, 996, 998,
986 1000, 1002, 1004, 1006, 1008, 1010, 1012, 1014, 1016, 1017,
987 1024, 1027, 1029, 1031, 1033, 1035, 1037, 1039, 1041, 1043,
988 1045, 1047, 1049, 1051, 1053, 1055, 1058, 1063, 1068, 1073,
989 1078, 1083, 1088, 1093, 1098, 1099, 1105, 1109, 1111, 1113,
990 1115, 1120, 1125, 1130, 1135, 1140, 1141, 1148, 1149, 1155,
991 1159, 1161, 1163, 1166, 1168, 1170, 1172, 1174, 1176, 1181,
992 1186, 1187, 1194, 1197, 1199, 1201, 1203, 1205, 1210, 1215,
993 1221, 1224, 1226, 1228, 1230, 1235, 1236, 1243, 1244, 1250,
994 1254, 1256, 1258, 1261, 1263, 1265, 1267, 1269, 1271, 1276,
995 1281, 1287, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304,
996 1306, 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1324,
997 1326, 1328, 1330, 1332, 1334, 1336, 1338, 1340, 1342, 1344,
998 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364,
999 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1380, 1382, 1384,
1000 1386, 1388, 1390, 1392, 1397, 1402, 1407, 1412, 1417, 1422,
1001 1427, 1432, 1437, 1442, 1447, 1452, 1457, 1462, 1467, 1472,
1002 1477, 1482, 1487, 1492, 1497, 1502, 1507, 1512, 1517, 1522,
1003 1527, 1532, 1537, 1542, 1547, 1552, 1557, 1562, 1567, 1572,
1004 1577, 1582, 1587, 1592, 1597, 1602, 1607, 1612, 1617, 1622,
1005 1623, 1629, 1633, 1635, 1637, 1639, 1641, 1643, 1645, 1647,
1006 1649, 1651, 1653, 1655, 1657, 1659, 1661, 1663, 1665, 1667,
1007 1669, 1671, 1673, 1675, 1676, 1682, 1686, 1688, 1690, 1692,
1008 1694, 1696, 1698, 1700, 1702, 1704, 1706, 1708, 1710, 1712,
1009 1714, 1716, 1718, 1720, 1722, 1724, 1726, 1728, 1733, 1738,
1010 1743, 1749, 1752, 1754, 1756, 1758, 1760, 1762, 1764, 1766,
1011 1768, 1770, 1772, 1774, 1776, 1778, 1780, 1782, 1784, 1789,
1012 1794, 1799, 1804, 1809, 1814, 1819, 1824, 1829, 1834, 1839,
1013 1844, 1849, 1854, 1860, 1863, 1865, 1867, 1869, 1871, 1873,
1014 1875, 1877, 1879, 1884, 1889, 1894, 1899, 1904
1015 };
1016
1017 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1018 static const yytype_int16 yyrhs[] =
1019 {
1020 221, 0, -1, -1, 221, 222, -1, 254, -1, 260,
1021 -1, 274, -1, 477, -1, 292, -1, 310, -1, 324,
1022 -1, 232, -1, 494, -1, 339, -1, 346, -1, 350,
1023 -1, 360, -1, 369, -1, 389, -1, 399, -1, 405,
1024 -1, 419, -1, 409, -1, 227, -1, 1, 215, -1,
1025 1, 216, -1, -1, 224, -1, 99, 223, -1, 99,
1026 138, 223, -1, 99, 139, 223, -1, 99, 140, 223,
1027 -1, 99, 141, 223, -1, 99, 142, 223, -1, -1,
1028 226, -1, 99, 225, -1, 99, 9, 225, -1, 99,
1029 10, 225, -1, 99, 11, 225, -1, 88, 217, 228,
1030 216, 215, -1, 228, 229, -1, 229, -1, 230, -1,
1031 231, -1, 1, 215, -1, 87, 218, 118, 215, -1,
1032 113, 218, 118, 215, -1, 146, 217, 233, 216, 215,
1033 -1, 233, 234, -1, 234, -1, 245, -1, 250, -1,
1034 253, -1, 247, -1, 248, -1, 249, -1, 252, -1,
1035 243, -1, 242, -1, 251, -1, 246, -1, 241, -1,
1036 235, -1, 236, -1, 244, -1, 1, 215, -1, 132,
1037 218, 237, 215, -1, 133, 218, 239, 215, -1, 237,
1038 219, 238, -1, 238, -1, 134, -1, 135, -1, 239,
1039 219, 240, -1, 240, -1, 134, -1, 135, -1, 130,
1040 218, 118, 215, -1, 128, 218, 118, 215, -1, 131,
1041 218, 118, 215, -1, 171, 218, 118, 215, -1, 89,
1042 218, 118, 215, -1, 147, 218, 118, 215, -1, 24,
1043 218, 118, 215, -1, 92, 218, 118, 215, -1, 91,
1044 218, 118, 215, -1, 209, 218, 118, 215, -1, 210,
1045 218, 118, 215, -1, 181, 218, 99, 215, -1, 57,
1046 218, 160, 215, -1, 4, 217, 255, 216, 215, -1,
1047 255, 256, -1, 256, -1, 257, -1, 259, -1, 258,
1048 -1, 1, 215, -1, 89, 218, 118, 215, -1, 31,
1049 218, 118, 215, -1, 24, 218, 118, 215, -1, 71,
1050 217, 261, 216, 215, -1, 261, 262, -1, 262, -1,
1051 263, -1, 264, -1, 1, 215, -1, 208, 218, 160,
1052 215, -1, -1, 265, 214, 217, 266, 216, 215, -1,
1053 266, 267, -1, 267, -1, 268, -1, 270, -1, 269,
1054 -1, 1, 215, -1, 89, 218, 118, 215, -1, 213,
1055 218, 226, 215, -1, 213, 218, 195, 215, -1, -1,
1056 151, 271, 218, 272, 215, -1, 272, 219, 273, -1,
1057 273, -1, 206, -1, 102, -1, 40, -1, 174, -1,
1058 64, -1, 62, -1, 173, -1, -1, 102, 275, 217,
1059 276, 216, 215, -1, 276, 277, -1, 277, -1, 278,
1060 -1, 279, -1, 280, -1, 284, -1, 283, -1, 281,
1061 -1, 282, -1, 288, -1, 1, 215, -1, 89, 218,
1062 118, 215, -1, 206, 218, 118, 215, -1, 112, 218,
1063 118, 215, -1, 32, 218, 160, 215, -1, 129, 218,
1064 118, 215, -1, 17, 218, 118, 215, -1, -1, 192,
1065 285, 218, 286, 215, -1, 286, 219, 287, -1, 287,
1066 -1, 166, -1, 169, -1, 170, -1, 172, -1, 173,
1067 -1, 176, -1, 51, -1, 189, -1, 182, -1, 185,
1068 -1, 193, -1, 190, -1, 175, -1, 183, -1, 187,
1069 -1, 177, -1, 199, -1, 167, -1, 168, -1, 180,
1070 -1, -1, 36, 289, 218, 290, 215, -1, 290, 219,
1071 291, -1, 291, -1, 47, -1, 125, -1, 64, -1,
1072 205, -1, 174, -1, 194, -1, 211, -1, 40, -1,
1073 25, -1, 200, -1, 124, -1, 4, -1, 94, -1,
1074 183, -1, 198, -1, 106, -1, 126, -1, 188, -1,
1075 87, -1, -1, 17, 293, 217, 294, 216, 215, -1,
1076 294, 295, -1, 295, -1, 296, -1, 307, -1, 308,
1077 -1, 297, -1, 298, -1, 309, -1, 299, -1, 300,
1078 -1, 301, -1, 302, -1, 303, -1, 304, -1, 305,
1079 -1, 306, -1, 1, 215, -1, 89, 218, 118, 215,
1080 -1, 115, 218, 224, 215, -1, 116, 218, 224, 215,
1081 -1, 101, 218, 99, 215, -1, 19, 218, 224, 215,
1082 -1, 81, 218, 99, 215, -1, 76, 218, 99, 215,
1083 -1, 78, 218, 99, 215, -1, 77, 218, 99, 215,
1084 -1, 143, 218, 226, 215, -1, 184, 218, 226, 215,
1085 -1, 15, 218, 99, 215, -1, 16, 218, 99, 215,
1086 -1, 100, 218, 99, 215, -1, -1, 70, 311, 217,
1087 316, 216, 215, -1, -1, 36, 313, 218, 314, 215,
1088 -1, 314, 219, 315, -1, 315, -1, 191, -1, 51,
1089 -1, 186, -1, 316, 317, -1, 317, -1, 318, -1,
1090 312, -1, 322, -1, 323, -1, 1, 215, -1, -1,
1091 117, 218, 320, 319, 215, -1, 320, 219, 321, -1,
1092 321, -1, 99, -1, 99, 164, 99, -1, 61, 218,
1093 118, 215, -1, 56, 218, 118, 215, -1, -1, 48,
1094 325, 217, 326, 216, 215, -1, 326, 327, -1, 327,
1095 -1, 328, -1, 329, -1, 330, -1, 332, -1, 336,
1096 -1, 337, -1, 338, -1, 331, -1, 1, 215, -1,
1097 206, 218, 118, 215, -1, 112, 218, 118, 215, -1,
1098 17, 218, 118, 215, -1, 32, 218, 160, 215, -1,
1099 -1, 36, 333, 218, 334, 215, -1, 334, 219, 335,
1100 -1, 335, -1, 154, -1, 33, -1, 65, -1, 49,
1101 -1, 13, -1, 98, -1, 43, -1, 137, -1, 90,
1102 -1, 153, 218, 118, 215, -1, 122, 218, 118, 215,
1103 -1, 121, 218, 99, 215, -1, -1, 136, 340, 217,
1104 341, 216, 215, -1, 341, 342, -1, 342, -1, 343,
1105 -1, 344, -1, 345, -1, 1, 215, -1, 120, 218,
1106 118, 215, -1, 14, 218, 118, 215, -1, 93, 218,
1107 118, 215, -1, 201, 217, 347, 216, 215, -1, 347,
1108 348, -1, 348, -1, 349, -1, 1, -1, 89, 218,
1109 118, 215, -1, -1, 149, 351, 217, 352, 216, 215,
1110 -1, 352, 353, -1, 353, -1, 354, -1, 355, -1,
1111 356, -1, 1, 215, -1, 89, 218, 118, 215, -1,
1112 206, 218, 118, 215, -1, -1, 151, 357, 218, 358,
1113 215, -1, 358, 219, 359, -1, 359, -1, 64, -1,
1114 205, -1, 174, -1, 194, -1, 211, -1, 197, -1,
1115 136, -1, 196, -1, 180, -1, 165, -1, -1, 150,
1116 361, 217, 362, 216, 215, -1, 362, 363, -1, 363,
1117 -1, 364, -1, 365, -1, 1, 215, -1, 89, 218,
1118 118, 215, -1, -1, 151, 366, 218, 367, 215, -1,
1119 367, 219, 368, -1, 368, -1, 64, -1, 205, -1,
1120 174, -1, 194, -1, 211, -1, 197, -1, 136, -1,
1121 196, -1, 180, -1, 165, -1, -1, 18, 370, 217,
1122 371, 216, 215, -1, 371, 372, -1, 372, -1, 373,
1123 -1, 374, -1, 375, -1, 376, -1, 377, -1, 379,
1124 -1, 378, -1, 388, -1, 380, -1, 385, -1, 386,
1125 -1, 387, -1, 384, -1, 1, 215, -1, 89, 218,
1126 118, 215, -1, 56, 218, 118, 215, -1, 209, 218,
1127 118, 215, -1, 144, 218, 118, 215, -1, 3, 218,
1128 118, 215, -1, 117, 218, 99, 215, -1, 5, 218,
1129 178, 215, -1, 5, 218, 179, 215, -1, -1, 36,
1130 381, 218, 382, 215, -1, 382, 219, 383, -1, 383,
1131 -1, 8, -1, 191, -1, 32, 218, 160, 215, -1,
1132 58, 218, 118, 215, -1, 68, 218, 118, 215, -1,
1133 17, 218, 118, 215, -1, 171, 218, 118, 215, -1,
1134 -1, 62, 390, 217, 395, 216, 215, -1, -1, 151,
1135 392, 218, 393, 215, -1, 393, 219, 394, -1, 394,
1136 -1, 123, -1, 395, 396, -1, 396, -1, 397, -1,
1137 398, -1, 391, -1, 1, -1, 206, 218, 118, 215,
1138 -1, 120, 218, 118, 215, -1, -1, 23, 400, 217,
1139 401, 216, 215, -1, 401, 402, -1, 402, -1, 403,
1140 -1, 404, -1, 1, -1, 61, 218, 118, 215, -1,
1141 120, 218, 118, 215, -1, 34, 217, 406, 216, 215,
1142 -1, 406, 407, -1, 407, -1, 408, -1, 1, -1,
1143 61, 218, 118, 215, -1, -1, 38, 410, 217, 415,
1144 216, 215, -1, -1, 151, 412, 218, 413, 215, -1,
1145 413, 219, 414, -1, 414, -1, 123, -1, 415, 416,
1146 -1, 416, -1, 417, -1, 418, -1, 411, -1, 1,
1147 -1, 89, 218, 118, 215, -1, 120, 218, 118, 215,
1148 -1, 39, 217, 420, 216, 215, -1, 420, 421, -1,
1149 421, -1, 430, -1, 431, -1, 433, -1, 434, -1,
1150 435, -1, 436, -1, 437, -1, 438, -1, 439, -1,
1151 440, -1, 429, -1, 442, -1, 443, -1, 458, -1,
1152 445, -1, 447, -1, 449, -1, 448, -1, 452, -1,
1153 446, -1, 453, -1, 454, -1, 455, -1, 456, -1,
1154 457, -1, 470, -1, 459, -1, 460, -1, 461, -1,
1155 466, -1, 450, -1, 451, -1, 476, -1, 474, -1,
1156 475, -1, 432, -1, 465, -1, 441, -1, 463, -1,
1157 464, -1, 428, -1, 423, -1, 424, -1, 425, -1,
1158 426, -1, 427, -1, 444, -1, 422, -1, 462, -1,
1159 1, -1, 83, 218, 99, 215, -1, 42, 218, 160,
1160 215, -1, 41, 218, 224, 215, -1, 44, 218, 224,
1161 215, -1, 45, 218, 99, 215, -1, 46, 218, 99,
1162 215, -1, 148, 218, 160, 215, -1, 63, 218, 224,
1163 215, -1, 55, 218, 160, 215, -1, 59, 218, 160,
1164 215, -1, 28, 218, 160, 215, -1, 35, 218, 160,
1165 215, -1, 6, 218, 160, 215, -1, 80, 218, 224,
1166 215, -1, 79, 218, 99, 215, -1, 72, 218, 99,
1167 215, -1, 7, 218, 224, 215, -1, 163, 218, 224,
1168 215, -1, 162, 218, 224, 215, -1, 50, 218, 99,
1169 215, -1, 60, 218, 160, 215, -1, 212, 218, 160,
1170 215, -1, 155, 218, 160, 215, -1, 158, 218, 160,
1171 215, -1, 159, 218, 160, 215, -1, 157, 218, 160,
1172 215, -1, 157, 218, 161, 215, -1, 156, 218, 160,
1173 215, -1, 156, 218, 161, 215, -1, 110, 218, 224,
1174 215, -1, 12, 218, 224, 215, -1, 103, 218, 160,
1175 215, -1, 111, 218, 224, 215, -1, 152, 218, 160,
1176 215, -1, 97, 218, 160, 215, -1, 204, 218, 160,
1177 215, -1, 105, 218, 160, 215, -1, 84, 218, 118,
1178 215, -1, 29, 218, 99, 215, -1, 82, 218, 99,
1179 215, -1, 207, 218, 160, 215, -1, 30, 218, 118,
1180 215, -1, 202, 218, 118, 215, -1, 114, 218, 160,
1181 215, -1, 26, 218, 160, 215, -1, 203, 218, 224,
1182 215, -1, -1, 107, 467, 218, 468, 215, -1, 468,
1183 219, 469, -1, 469, -1, 166, -1, 169, -1, 170,
1184 -1, 172, -1, 173, -1, 176, -1, 51, -1, 189,
1185 -1, 182, -1, 185, -1, 193, -1, 190, -1, 175,
1186 -1, 183, -1, 187, -1, 177, -1, 199, -1, 167,
1187 -1, 168, -1, 180, -1, -1, 104, 471, 218, 472,
1188 215, -1, 472, 219, 473, -1, 473, -1, 166, -1,
1189 169, -1, 170, -1, 172, -1, 173, -1, 176, -1,
1190 189, -1, 51, -1, 182, -1, 185, -1, 193, -1,
1191 190, -1, 175, -1, 183, -1, 187, -1, 177, -1,
1192 199, -1, 167, -1, 168, -1, 180, -1, 85, 218,
1193 99, 215, -1, 86, 218, 99, 215, -1, 20, 218,
1194 99, 215, -1, 14, 217, 478, 216, 215, -1, 478,
1195 479, -1, 479, -1, 487, -1, 482, -1, 483, -1,
1196 484, -1, 485, -1, 486, -1, 488, -1, 489, -1,
1197 490, -1, 481, -1, 491, -1, 492, -1, 493, -1,
1198 480, -1, 1, -1, 27, 218, 160, 215, -1, 127,
1199 218, 160, 215, -1, 66, 218, 224, 215, -1, 67,
1200 218, 224, 215, -1, 75, 218, 99, 215, -1, 74,
1201 218, 99, 215, -1, 119, 218, 160, 215, -1, 73,
1202 218, 99, 215, -1, 22, 218, 99, 215, -1, 21,
1203 218, 99, 215, -1, 95, 218, 160, 215, -1, 96,
1204 218, 160, 215, -1, 108, 218, 99, 215, -1, 109,
1205 218, 224, 215, -1, 145, 217, 495, 216, 215, -1,
1206 495, 496, -1, 496, -1, 497, -1, 498, -1, 500,
1207 -1, 501, -1, 499, -1, 502, -1, 1, -1, 37,
1208 218, 160, 215, -1, 54, 218, 160, 215, -1, 52,
1209 218, 118, 215, -1, 69, 218, 224, 215, -1, 51,
1210 218, 160, 215, -1, 53, 218, 160, 215, -1
1211 };
1212
1213 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1214 static const yytype_uint16 yyrline[] =
1215 {
1216 0, 330, 330, 331, 334, 335, 336, 337, 338, 339,
1217 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
1218 350, 351, 352, 353, 354, 355, 359, 359, 360, 364,
1219 368, 372, 376, 380, 386, 386, 387, 388, 389, 390,
1220 397, 400, 400, 401, 401, 401, 403, 409, 416, 418,
1221 418, 419, 419, 420, 420, 421, 421, 422, 422, 423,
1222 423, 424, 424, 425, 425, 426, 427, 430, 431, 433,
1223 433, 434, 440, 448, 448, 449, 455, 463, 502, 561,
1224 589, 597, 612, 627, 636, 650, 659, 687, 717, 740,
1225 749, 751, 751, 752, 752, 753, 753, 755, 764, 773,
1226 785, 786, 786, 788, 788, 789, 791, 798, 798, 808,
1227 809, 811, 811, 812, 812, 814, 819, 822, 828, 827,
1228 833, 833, 834, 838, 842, 846, 850, 854, 858, 869,
1229 868, 966, 966, 967, 967, 967, 968, 968, 968, 969,
1230 969, 969, 971, 980, 1017, 1029, 1040, 1082, 1092, 1091,
1231 1097, 1097, 1098, 1102, 1106, 1110, 1114, 1118, 1122, 1126,
1232 1130, 1134, 1138, 1142, 1146, 1150, 1154, 1158, 1162, 1166,
1233 1170, 1174, 1181, 1180, 1186, 1186, 1187, 1191, 1195, 1199,
1234 1203, 1207, 1211, 1215, 1219, 1223, 1227, 1231, 1235, 1239,
1235 1243, 1247, 1251, 1255, 1259, 1270, 1269, 1319, 1319, 1320,
1236 1321, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
1237 1330, 1331, 1331, 1332, 1334, 1343, 1349, 1355, 1361, 1367,
1238 1373, 1379, 1385, 1391, 1397, 1404, 1410, 1416, 1426, 1425,
1239 1442, 1441, 1446, 1446, 1447, 1451, 1455, 1463, 1463, 1464,
1240 1464, 1464, 1464, 1464, 1466, 1466, 1468, 1468, 1470, 1484,
1241 1504, 1513, 1526, 1525, 1594, 1594, 1595, 1595, 1595, 1595,
1242 1596, 1596, 1596, 1597, 1597, 1599, 1634, 1647, 1656, 1668,
1243 1667, 1671, 1671, 1672, 1676, 1680, 1684, 1688, 1692, 1696,
1244 1700, 1704, 1710, 1729, 1739, 1753, 1752, 1768, 1768, 1769,
1245 1769, 1769, 1769, 1771, 1780, 1795, 1808, 1810, 1810, 1811,
1246 1811, 1813, 1829, 1828, 1844, 1844, 1845, 1845, 1845, 1845,
1247 1847, 1856, 1879, 1878, 1884, 1884, 1885, 1889, 1893, 1897,
1248 1901, 1905, 1909, 1913, 1917, 1921, 1931, 1930, 1947, 1947,
1249 1948, 1948, 1948, 1950, 1957, 1956, 1962, 1962, 1963, 1967,
1250 1971, 1975, 1979, 1983, 1987, 1991, 1995, 1999, 2009, 2008,
1251 2059, 2059, 2060, 2060, 2060, 2061, 2061, 2062, 2062, 2062,
1252 2063, 2063, 2063, 2064, 2064, 2065, 2067, 2076, 2085, 2111,
1253 2129, 2147, 2153, 2157, 2166, 2165, 2169, 2169, 2170, 2174,
1254 2180, 2191, 2202, 2213, 2222, 2241, 2240, 2304, 2303, 2307,
1255 2307, 2308, 2314, 2314, 2315, 2315, 2315, 2315, 2317, 2336,
1256 2346, 2345, 2368, 2368, 2369, 2369, 2369, 2371, 2377, 2386,
1257 2388, 2388, 2389, 2389, 2391, 2410, 2409, 2457, 2456, 2460,
1258 2460, 2461, 2467, 2467, 2468, 2468, 2468, 2468, 2470, 2476,
1259 2485, 2488, 2488, 2489, 2489, 2490, 2490, 2491, 2491, 2492,
1260 2492, 2493, 2493, 2494, 2495, 2496, 2496, 2497, 2497, 2498,
1261 2498, 2499, 2499, 2500, 2500, 2501, 2501, 2502, 2503, 2503,
1262 2504, 2504, 2505, 2505, 2506, 2506, 2507, 2507, 2508, 2509,
1263 2509, 2510, 2511, 2512, 2512, 2513, 2513, 2514, 2515, 2516,
1264 2517, 2517, 2518, 2521, 2526, 2532, 2538, 2544, 2549, 2554,
1265 2559, 2564, 2569, 2574, 2579, 2584, 2589, 2594, 2599, 2604,
1266 2609, 2614, 2620, 2631, 2636, 2641, 2646, 2651, 2656, 2659,
1267 2664, 2667, 2672, 2677, 2682, 2687, 2692, 2697, 2702, 2707,
1268 2712, 2723, 2728, 2733, 2738, 2747, 2756, 2761, 2766, 2772,
1269 2771, 2776, 2776, 2777, 2780, 2783, 2786, 2789, 2792, 2795,
1270 2798, 2801, 2804, 2807, 2810, 2813, 2816, 2819, 2822, 2825,
1271 2828, 2831, 2834, 2840, 2839, 2844, 2844, 2845, 2848, 2851,
1272 2854, 2857, 2860, 2863, 2866, 2869, 2872, 2875, 2878, 2881,
1273 2884, 2887, 2890, 2893, 2896, 2899, 2902, 2907, 2912, 2917,
1274 2926, 2929, 2929, 2930, 2931, 2931, 2932, 2932, 2933, 2933,
1275 2934, 2935, 2935, 2936, 2937, 2937, 2938, 2938, 2940, 2945,
1276 2950, 2955, 2960, 2965, 2970, 2975, 2980, 2985, 2990, 2995,
1277 3000, 3005, 3013, 3016, 3016, 3017, 3017, 3018, 3019, 3019,
1278 3020, 3021, 3023, 3029, 3035, 3044, 3058, 3064
1279 };
1280 #endif
1281
1282 #if YYDEBUG || YYERROR_VERBOSE || 0
1283 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1284 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1285 static const char *const yytname[] =
1286 {
1287 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1288 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN", "BYTES",
1289 "KBYTES", "MBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CHANNEL",
1290 "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS", "CONNECT",
1291 "CONNECTFREQ", "DEFAULT_FLOODCOUNT", "DEFAULT_SPLIT_SERVER_COUNT",
1292 "DEFAULT_SPLIT_USER_COUNT", "DENY", "DESCRIPTION", "DIE", "DISABLE_AUTH",
1293 "DISABLE_FAKE_CHANNELS", "DISABLE_REMOTE_COMMANDS", "DOTS_IN_IDENT",
1294 "EGDPOOL_PATH", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1295 "FAILED_OPER_NOTICE", "IRCD_FLAGS", "FLATTEN_LINKS", "GECOS", "GENERAL",
1296 "GLINE", "GLINE_DURATION", "GLINE_ENABLE", "GLINE_EXEMPT",
1297 "GLINE_REQUEST_DURATION", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1298 "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1299 "HIDDEN_NAME", "HIDE_SERVER_IPS", "HIDE_SERVERS", "HIDE_SPOOF_IPS",
1300 "HOST", "HUB", "HUB_MASK", "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT",
1301 "IP", "KILL", "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT",
1302 "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK", "LINKS_DELAY",
1303 "LISTEN", "T_LOG", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANS_PER_OPER",
1304 "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1305 "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1306 "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1307 "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1308 "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1309 "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1310 "NUMBER", "NUMBER_PER_CIDR", "NUMBER_PER_IP", "OPERATOR",
1311 "OPERS_BYPASS_CALLERID", "OPER_ONLY_UMODES", "OPER_PASS_RESV",
1312 "OPER_SPY_T", "OPER_UMODES", "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME",
1313 "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD", "PATH", "PING_COOKIE",
1314 "PING_TIME", "PING_WARNING", "PORT", "QSTRING", "QUIET_ON_BAN", "REASON",
1315 "REDIRPORT", "REDIRSERV", "REGEX_T", "REHASH", "REMOTE", "REMOTEBAN",
1316 "RESTRICT_CHANNELS", "RSA_PRIVATE_KEY_FILE", "RSA_PUBLIC_KEY_FILE",
1317 "SSL_CERTIFICATE_FILE", "SSL_DH_PARAM_FILE", "T_SSL_CLIENT_METHOD",
1318 "T_SSL_SERVER_METHOD", "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT",
1319 "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD",
1320 "SERVERHIDE", "SERVERINFO", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1321 "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1322 "STATS_E_DISABLED", "STATS_I_OPER_ONLY", "STATS_K_OPER_ONLY",
1323 "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL", "TMASKED",
1324 "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS", "T_ALL", "T_BOTS",
1325 "T_SOFTCALLERID", "T_CALLERID", "T_CCONN", "T_CCONN_FULL",
1326 "T_SSL_CIPHER_LIST", "T_DEAF", "T_DEBUG", "T_DLINE", "T_EXTERNAL",
1327 "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_MAX_CLIENTS",
1328 "T_NCHANGE", "T_OPERWALL", "T_RECVQ", "T_REJ", "T_SERVER",
1329 "T_SERVNOTICE", "T_SET", "T_SKILL", "T_SPY", "T_SSL", "T_UMODES",
1330 "T_UNAUTH", "T_UNDLINE", "T_UNLIMITED", "T_UNRESV", "T_UNXLINE",
1331 "T_GLOBOPS", "T_WALLOP", "T_RESTART", "T_SERVICE", "T_SERVICES_NAME",
1332 "THROTTLE_TIME", "TRUE_NO_OPER_FLOOD", "UNKLINE", "USER", "USE_EGD",
1333 "USE_LOGGING", "VHOST", "VHOST6", "XLINE", "WARN_NO_NLINE", "T_SIZE",
1334 "T_FILE", "';'", "'}'", "'{'", "'='", "','", "$accept", "conf",
1335 "conf_item", "timespec_", "timespec", "sizespec_", "sizespec",
1336 "modules_entry", "modules_items", "modules_item", "modules_module",
1337 "modules_path", "serverinfo_entry", "serverinfo_items",
1338 "serverinfo_item", "serverinfo_ssl_client_method",
1339 "serverinfo_ssl_server_method", "client_method_types",
1340 "client_method_type_item", "server_method_types",
1341 "server_method_type_item", "serverinfo_ssl_certificate_file",
1342 "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1343 "serverinfo_ssl_cipher_list", "serverinfo_name", "serverinfo_sid",
1344 "serverinfo_description", "serverinfo_network_name",
1345 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1346 "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1347 "admin_item", "admin_name", "admin_email", "admin_description",
1348 "logging_entry", "logging_items", "logging_item", "logging_use_logging",
1349 "logging_file_entry", "$@1", "logging_file_items", "logging_file_item",
1350 "logging_file_name", "logging_file_size", "logging_file_type", "$@2",
1351 "logging_file_type_items", "logging_file_type_item", "oper_entry", "$@3",
1352 "oper_items", "oper_item", "oper_name", "oper_user", "oper_password",
1353 "oper_encrypted", "oper_rsa_public_key_file", "oper_class",
1354 "oper_umodes", "$@4", "oper_umodes_items", "oper_umodes_item",
1355 "oper_flags", "$@5", "oper_flags_items", "oper_flags_item",
1356 "class_entry", "$@6", "class_items", "class_item", "class_name",
1357 "class_ping_time", "class_ping_warning", "class_number_per_ip",
1358 "class_connectfreq", "class_max_number", "class_max_global",
1359 "class_max_local", "class_max_ident", "class_sendq", "class_recvq",
1360 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1361 "class_number_per_cidr", "listen_entry", "$@7", "listen_flags", "$@8",
1362 "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1363 "listen_port", "$@9", "port_items", "port_item", "listen_address",
1364 "listen_host", "auth_entry", "$@10", "auth_items", "auth_item",
1365 "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1366 "$@11", "auth_flags_items", "auth_flags_item", "auth_spoof",
1367 "auth_redir_serv", "auth_redir_port", "resv_entry", "$@12", "resv_items",
1368 "resv_item", "resv_creason", "resv_channel", "resv_nick",
1369 "service_entry", "service_items", "service_item", "service_name",
1370 "shared_entry", "$@13", "shared_items", "shared_item", "shared_name",
1371 "shared_user", "shared_type", "$@14", "shared_types", "shared_type_item",
1372 "cluster_entry", "$@15", "cluster_items", "cluster_item", "cluster_name",
1373 "cluster_type", "$@16", "cluster_types", "cluster_type_item",
1374 "connect_entry", "$@17", "connect_items", "connect_item", "connect_name",
1375 "connect_host", "connect_vhost", "connect_send_password",
1376 "connect_accept_password", "connect_port", "connect_aftype",
1377 "connect_flags", "$@18", "connect_flags_items", "connect_flags_item",
1378 "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1379 "connect_class", "connect_ssl_cipher_list", "kill_entry", "$@19",
1380 "kill_type", "$@20", "kill_type_items", "kill_type_item", "kill_items",
1381 "kill_item", "kill_user", "kill_reason", "deny_entry", "$@21",
1382 "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1383 "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@22",
1384 "gecos_flags", "$@23", "gecos_flags_items", "gecos_flags_item",
1385 "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1386 "general_entry", "general_items", "general_item", "general_max_watch",
1387 "general_gline_enable", "general_gline_duration",
1388 "general_gline_request_duration", "general_gline_min_cidr",
1389 "general_gline_min_cidr6", "general_tkline_expire_notices",
1390 "general_kill_chase_time_limit", "general_hide_spoof_ips",
1391 "general_ignore_bogus_ts", "general_disable_remote_commands",
1392 "general_failed_oper_notice", "general_anti_nick_flood",
1393 "general_max_nick_time", "general_max_nick_changes",
1394 "general_max_accept", "general_anti_spam_exit_message_time",
1395 "general_ts_warn_delta", "general_ts_max_delta",
1396 "general_havent_read_conf", "general_invisible_on_connect",
1397 "general_warn_no_nline", "general_stats_e_disabled",
1398 "general_stats_o_oper_only", "general_stats_P_oper_only",
1399 "general_stats_k_oper_only", "general_stats_i_oper_only",
1400 "general_pace_wait", "general_caller_id_wait",
1401 "general_opers_bypass_callerid", "general_pace_wait_simple",
1402 "general_short_motd", "general_no_oper_flood",
1403 "general_true_no_oper_flood", "general_oper_pass_resv",
1404 "general_message_locale", "general_dots_in_ident", "general_max_targets",
1405 "general_use_egd", "general_egdpool_path", "general_services_name",
1406 "general_ping_cookie", "general_disable_auth", "general_throttle_time",
1407 "general_oper_umodes", "$@24", "umode_oitems", "umode_oitem",
1408 "general_oper_only_umodes", "$@25", "umode_items", "umode_item",
1409 "general_min_nonwildcard", "general_min_nonwildcard_simple",
1410 "general_default_floodcount", "channel_entry", "channel_items",
1411 "channel_item", "channel_disable_fake_channels",
1412 "channel_restrict_channels", "channel_knock_delay",
1413 "channel_knock_delay_channel", "channel_max_chans_per_user",
1414 "channel_max_chans_per_oper", "channel_quiet_on_ban", "channel_max_bans",
1415 "channel_default_split_user_count", "channel_default_split_server_count",
1416 "channel_no_create_on_split", "channel_no_join_on_split",
1417 "channel_jflood_count", "channel_jflood_time", "serverhide_entry",
1418 "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1419 "serverhide_hide_servers", "serverhide_hidden_name",
1420 "serverhide_links_delay", "serverhide_hidden",
1421 "serverhide_hide_server_ips", YY_NULL
1422 };
1423 #endif
1424
1425 # ifdef YYPRINT
1426 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1427 token YYLEX-NUM. */
1428 static const yytype_uint16 yytoknum[] =
1429 {
1430 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1431 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1432 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1433 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1434 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1435 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1436 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1437 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1438 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1439 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1440 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1441 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1442 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1443 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1444 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1445 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1446 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1447 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1448 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1449 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1450 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1451 465, 466, 467, 468, 469, 59, 125, 123, 61, 44
1452 };
1453 # endif
1454
1455 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1456 static const yytype_uint16 yyr1[] =
1457 {
1458 0, 220, 221, 221, 222, 222, 222, 222, 222, 222,
1459 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
1460 222, 222, 222, 222, 222, 222, 223, 223, 224, 224,
1461 224, 224, 224, 224, 225, 225, 226, 226, 226, 226,
1462 227, 228, 228, 229, 229, 229, 230, 231, 232, 233,
1463 233, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1464 234, 234, 234, 234, 234, 234, 234, 235, 236, 237,
1465 237, 238, 238, 239, 239, 240, 240, 241, 242, 243,
1466 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
1467 254, 255, 255, 256, 256, 256, 256, 257, 258, 259,
1468 260, 261, 261, 262, 262, 262, 263, 265, 264, 266,
1469 266, 267, 267, 267, 267, 268, 269, 269, 271, 270,
1470 272, 272, 273, 273, 273, 273, 273, 273, 273, 275,
1471 274, 276, 276, 277, 277, 277, 277, 277, 277, 277,
1472 277, 277, 278, 279, 280, 281, 282, 283, 285, 284,
1473 286, 286, 287, 287, 287, 287, 287, 287, 287, 287,
1474 287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
1475 287, 287, 289, 288, 290, 290, 291, 291, 291, 291,
1476 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
1477 291, 291, 291, 291, 291, 293, 292, 294, 294, 295,
1478 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
1479 295, 295, 295, 295, 296, 297, 298, 299, 300, 301,
1480 302, 303, 304, 305, 306, 307, 308, 309, 311, 310,
1481 313, 312, 314, 314, 315, 315, 315, 316, 316, 317,
1482 317, 317, 317, 317, 319, 318, 320, 320, 321, 321,
1483 322, 323, 325, 324, 326, 326, 327, 327, 327, 327,
1484 327, 327, 327, 327, 327, 328, 329, 330, 331, 333,
1485 332, 334, 334, 335, 335, 335, 335, 335, 335, 335,
1486 335, 335, 336, 337, 338, 340, 339, 341, 341, 342,
1487 342, 342, 342, 343, 344, 345, 346, 347, 347, 348,
1488 348, 349, 351, 350, 352, 352, 353, 353, 353, 353,
1489 354, 355, 357, 356, 358, 358, 359, 359, 359, 359,
1490 359, 359, 359, 359, 359, 359, 361, 360, 362, 362,
1491 363, 363, 363, 364, 366, 365, 367, 367, 368, 368,
1492 368, 368, 368, 368, 368, 368, 368, 368, 370, 369,
1493 371, 371, 372, 372, 372, 372, 372, 372, 372, 372,
1494 372, 372, 372, 372, 372, 372, 373, 374, 375, 376,
1495 377, 378, 379, 379, 381, 380, 382, 382, 383, 383,
1496 384, 385, 386, 387, 388, 390, 389, 392, 391, 393,
1497 393, 394, 395, 395, 396, 396, 396, 396, 397, 398,
1498 400, 399, 401, 401, 402, 402, 402, 403, 404, 405,
1499 406, 406, 407, 407, 408, 410, 409, 412, 411, 413,
1500 413, 414, 415, 415, 416, 416, 416, 416, 417, 418,
1501 419, 420, 420, 421, 421, 421, 421, 421, 421, 421,
1502 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
1503 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
1504 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
1505 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
1506 421, 421, 421, 422, 423, 424, 425, 426, 427, 428,
1507 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
1508 439, 440, 441, 442, 443, 444, 445, 446, 447, 447,
1509 448, 448, 449, 450, 451, 452, 453, 454, 455, 456,
1510 457, 458, 459, 460, 461, 462, 463, 464, 465, 467,
1511 466, 468, 468, 469, 469, 469, 469, 469, 469, 469,
1512 469, 469, 469, 469, 469, 469, 469, 469, 469, 469,
1513 469, 469, 469, 471, 470, 472, 472, 473, 473, 473,
1514 473, 473, 473, 473, 473, 473, 473, 473, 473, 473,
1515 473, 473, 473, 473, 473, 473, 473, 474, 475, 476,
1516 477, 478, 478, 479, 479, 479, 479, 479, 479, 479,
1517 479, 479, 479, 479, 479, 479, 479, 479, 480, 481,
1518 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
1519 492, 493, 494, 495, 495, 496, 496, 496, 496, 496,
1520 496, 496, 497, 498, 499, 500, 501, 502
1521 };
1522
1523 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1524 static const yytype_uint8 yyr2[] =
1525 {
1526 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1527 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1528 1, 1, 1, 1, 2, 2, 0, 1, 2, 3,
1529 3, 3, 3, 3, 0, 1, 2, 3, 3, 3,
1530 5, 2, 1, 1, 1, 2, 4, 4, 5, 2,
1531 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1532 1, 1, 1, 1, 1, 1, 2, 4, 4, 3,
1533 1, 1, 1, 3, 1, 1, 1, 4, 4, 4,
1534 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1535 5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
1536 5, 2, 1, 1, 1, 2, 4, 0, 6, 2,
1537 1, 1, 1, 1, 2, 4, 4, 4, 0, 5,
1538 3, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1539 6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1540 1, 2, 4, 4, 4, 4, 4, 4, 0, 5,
1541 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1543 1, 1, 0, 5, 3, 1, 1, 1, 1, 1,
1544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1545 1, 1, 1, 1, 1, 0, 6, 2, 1, 1,
1546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1547 1, 1, 1, 2, 4, 4, 4, 4, 4, 4,
1548 4, 4, 4, 4, 4, 4, 4, 4, 0, 6,
1549 0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
1550 1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
1551 4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
1552 1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
1553 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1554 1, 1, 4, 4, 4, 0, 6, 2, 1, 1,
1555 1, 1, 2, 4, 4, 4, 5, 2, 1, 1,
1556 1, 4, 0, 6, 2, 1, 1, 1, 1, 2,
1557 4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
1558 1, 1, 1, 1, 1, 1, 0, 6, 2, 1,
1559 1, 1, 2, 4, 0, 5, 3, 1, 1, 1,
1560 1, 1, 1, 1, 1, 1, 1, 1, 0, 6,
1561 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1562 1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
1563 4, 4, 4, 4, 0, 5, 3, 1, 1, 1,
1564 4, 4, 4, 4, 4, 0, 6, 0, 5, 3,
1565 1, 1, 2, 1, 1, 1, 1, 1, 4, 4,
1566 0, 6, 2, 1, 1, 1, 1, 4, 4, 5,
1567 2, 1, 1, 1, 4, 0, 6, 0, 5, 3,
1568 1, 1, 2, 1, 1, 1, 1, 1, 4, 4,
1569 5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1570 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1572 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1574 1, 1, 1, 4, 4, 4, 4, 4, 4, 4,
1575 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1576 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1577 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1578 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1579 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
1580 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1581 1, 1, 1, 0, 5, 3, 1, 1, 1, 1,
1582 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1583 1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
1584 5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1585 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
1586 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1587 4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
1588 1, 1, 4, 4, 4, 4, 4, 4
1589 };
1590
1591 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
1592 Performed when YYTABLE doesn't specify something else to do. Zero
1593 means the default is an error. */
1594 static const yytype_uint16 yydefact[] =
1595 {
1596 2, 0, 1, 0, 0, 0, 195, 348, 400, 0,
1597 415, 0, 252, 385, 228, 0, 0, 129, 285, 0,
1598 0, 302, 326, 0, 3, 23, 11, 4, 5, 6,
1599 8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
1600 20, 22, 21, 7, 12, 24, 25, 0, 0, 0,
1601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1603 0, 0, 92, 93, 95, 94, 597, 0, 0, 0,
1604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1605 0, 0, 582, 596, 592, 584, 585, 586, 587, 588,
1606 583, 589, 590, 591, 593, 594, 595, 0, 0, 0,
1607 413, 0, 0, 411, 412, 0, 482, 0, 0, 0,
1608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1610 0, 0, 0, 0, 0, 0, 553, 0, 529, 0,
1611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1612 0, 0, 0, 0, 0, 0, 0, 432, 480, 474,
1613 475, 476, 477, 478, 473, 443, 433, 434, 468, 435,
1614 436, 437, 438, 439, 440, 441, 442, 470, 444, 445,
1615 479, 447, 452, 448, 450, 449, 463, 464, 451, 453,
1616 454, 455, 456, 457, 446, 459, 460, 461, 481, 471,
1617 472, 469, 462, 458, 466, 467, 465, 0, 0, 0,
1618 0, 0, 0, 102, 103, 104, 0, 0, 0, 0,
1619 0, 42, 43, 44, 0, 0, 621, 0, 0, 0,
1620 0, 0, 0, 0, 614, 615, 616, 619, 617, 618,
1621 620, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0, 0, 0, 0, 50, 63,
1623 64, 62, 59, 58, 65, 51, 61, 54, 55, 56,
1624 52, 60, 57, 53, 0, 0, 300, 0, 0, 298,
1625 299, 96, 0, 0, 0, 0, 91, 0, 0, 0,
1626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1627 0, 0, 581, 0, 0, 0, 0, 0, 0, 0,
1628 0, 0, 0, 0, 0, 0, 0, 0, 0, 198,
1629 199, 202, 203, 205, 206, 207, 208, 209, 210, 211,
1630 212, 200, 201, 204, 0, 0, 0, 0, 0, 374,
1631 0, 0, 0, 0, 0, 0, 0, 0, 0, 351,
1632 352, 353, 354, 355, 356, 358, 357, 360, 364, 361,
1633 362, 363, 359, 406, 0, 0, 0, 403, 404, 405,
1634 0, 0, 410, 427, 0, 0, 417, 426, 0, 423,
1635 424, 425, 0, 0, 0, 0, 0, 0, 0, 0,
1636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1640 0, 0, 431, 0, 0, 0, 269, 0, 0, 0,
1641 0, 0, 0, 255, 256, 257, 258, 263, 259, 260,
1642 261, 262, 397, 0, 387, 0, 396, 0, 393, 394,
1643 395, 0, 230, 0, 0, 0, 240, 0, 238, 239,
1644 241, 242, 105, 0, 0, 101, 0, 45, 0, 0,
1645 0, 41, 0, 0, 0, 172, 0, 0, 0, 148,
1646 0, 0, 132, 133, 134, 135, 138, 139, 137, 136,
1647 140, 0, 0, 0, 0, 0, 288, 289, 290, 291,
1648 0, 0, 0, 0, 0, 0, 0, 613, 66, 0,
1649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1650 0, 0, 0, 0, 0, 49, 0, 0, 312, 0,
1651 0, 305, 306, 307, 308, 0, 0, 334, 0, 329,
1652 330, 331, 0, 0, 297, 0, 0, 0, 90, 0,
1653 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
1654 0, 0, 0, 0, 580, 213, 0, 0, 0, 0,
1655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1656 0, 197, 365, 0, 0, 0, 0, 0, 0, 0,
1657 0, 0, 0, 0, 0, 0, 0, 350, 0, 0,
1658 0, 402, 0, 409, 0, 0, 0, 0, 422, 0,
1659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1664 430, 264, 0, 0, 0, 0, 0, 0, 0, 0,
1665 0, 254, 0, 0, 0, 0, 392, 243, 0, 0,
1666 0, 0, 0, 237, 0, 100, 0, 0, 0, 40,
1667 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1668 131, 292, 0, 0, 0, 0, 287, 0, 0, 0,
1669 0, 0, 0, 612, 0, 0, 0, 0, 0, 0,
1670 0, 0, 71, 72, 0, 70, 75, 76, 0, 74,
1671 0, 0, 0, 0, 0, 48, 309, 0, 0, 0,
1672 0, 304, 332, 0, 0, 0, 328, 0, 296, 99,
1673 98, 97, 607, 606, 598, 26, 26, 26, 26, 26,
1674 28, 27, 600, 601, 605, 603, 602, 608, 609, 610,
1675 611, 604, 599, 0, 0, 0, 0, 0, 0, 0,
1676 0, 0, 0, 0, 0, 34, 0, 0, 196, 0,
1677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1678 0, 0, 0, 349, 0, 0, 401, 414, 0, 0,
1679 0, 416, 495, 499, 513, 579, 527, 493, 521, 524,
1680 494, 485, 484, 486, 487, 488, 502, 491, 492, 503,
1681 490, 498, 497, 496, 522, 483, 520, 577, 578, 517,
1682 514, 564, 557, 574, 575, 558, 559, 560, 561, 569,
1683 562, 572, 576, 565, 570, 566, 571, 563, 568, 567,
1684 573, 0, 556, 519, 539, 533, 550, 551, 534, 535,
1685 536, 537, 545, 538, 548, 552, 541, 546, 542, 547,
1686 540, 544, 543, 549, 0, 532, 512, 515, 526, 489,
1687 516, 505, 510, 511, 508, 509, 506, 507, 501, 500,
1688 525, 528, 518, 523, 504, 0, 0, 0, 0, 0,
1689 0, 0, 0, 253, 0, 0, 0, 386, 0, 0,
1690 0, 248, 244, 247, 229, 106, 0, 0, 118, 0,
1691 0, 110, 111, 113, 112, 46, 47, 0, 0, 0,
1692 0, 0, 0, 0, 0, 130, 0, 0, 0, 286,
1693 622, 626, 624, 627, 623, 625, 83, 89, 81, 85,
1694 84, 78, 77, 79, 67, 0, 68, 0, 82, 80,
1695 88, 86, 87, 0, 0, 0, 303, 0, 0, 327,
1696 301, 29, 30, 31, 32, 33, 225, 226, 218, 220,
1697 222, 221, 219, 214, 227, 217, 215, 216, 34, 34,
1698 34, 36, 35, 223, 224, 370, 372, 373, 383, 380,
1699 378, 379, 0, 377, 367, 381, 382, 366, 371, 369,
1700 384, 368, 407, 408, 428, 429, 421, 0, 420, 554,
1701 0, 530, 0, 267, 268, 277, 274, 279, 276, 275,
1702 281, 278, 280, 273, 0, 272, 266, 284, 283, 282,
1703 265, 399, 391, 0, 390, 398, 235, 236, 234, 0,
1704 233, 251, 250, 0, 0, 0, 114, 0, 0, 0,
1705 0, 109, 147, 145, 187, 184, 183, 176, 178, 194,
1706 188, 191, 186, 177, 192, 180, 189, 193, 181, 190,
1707 185, 179, 182, 0, 175, 142, 144, 146, 158, 152,
1708 169, 170, 153, 154, 155, 156, 164, 157, 167, 171,
1709 160, 165, 161, 166, 159, 163, 162, 168, 0, 151,
1710 143, 294, 295, 293, 69, 73, 310, 316, 322, 325,
1711 318, 324, 319, 323, 321, 317, 320, 0, 315, 311,
1712 333, 338, 344, 347, 340, 346, 341, 345, 343, 339,
1713 342, 0, 337, 37, 38, 39, 375, 0, 418, 0,
1714 555, 531, 270, 0, 388, 0, 231, 0, 249, 246,
1715 245, 0, 0, 0, 0, 108, 173, 0, 149, 0,
1716 313, 0, 335, 0, 376, 419, 271, 389, 232, 115,
1717 124, 127, 126, 123, 128, 125, 122, 0, 121, 117,
1718 116, 174, 150, 314, 336, 119, 0, 120
1719 };
1720
1721 /* YYDEFGOTO[NTERM-NUM]. */
1722 static const yytype_int16 yydefgoto[] =
1723 {
1724 -1, 1, 24, 780, 781, 1021, 1022, 25, 230, 231,
1725 232, 233, 26, 267, 268, 269, 270, 744, 745, 748,
1726 749, 271, 272, 273, 274, 275, 276, 277, 278, 279,
1727 280, 281, 282, 283, 27, 71, 72, 73, 74, 75,
1728 28, 222, 223, 224, 225, 226, 950, 951, 952, 953,
1729 954, 1088, 1217, 1218, 29, 60, 501, 502, 503, 504,
1730 505, 506, 507, 508, 509, 717, 1138, 1139, 510, 713,
1731 1113, 1114, 30, 49, 328, 329, 330, 331, 332, 333,
1732 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
1733 31, 57, 476, 698, 1079, 1080, 477, 478, 479, 1085,
1734 942, 943, 480, 481, 32, 55, 452, 453, 454, 455,
1735 456, 457, 458, 684, 1064, 1065, 459, 460, 461, 33,
1736 61, 515, 516, 517, 518, 519, 34, 288, 289, 290,
1737 35, 64, 550, 551, 552, 553, 554, 758, 1157, 1158,
1738 36, 65, 558, 559, 560, 561, 764, 1171, 1172, 37,
1739 50, 358, 359, 360, 361, 362, 363, 364, 365, 366,
1740 367, 607, 1032, 1033, 368, 369, 370, 371, 372, 38,
1741 56, 466, 693, 1073, 1074, 467, 468, 469, 470, 39,
1742 51, 376, 377, 378, 379, 40, 112, 113, 114, 41,
1743 53, 387, 626, 1047, 1048, 388, 389, 390, 391, 42,
1744 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
1745 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
1746 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1747 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
1748 206, 207, 208, 209, 210, 211, 212, 423, 904, 905,
1749 213, 421, 881, 882, 214, 215, 216, 43, 91, 92,
1750 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1751 103, 104, 105, 106, 44, 243, 244, 245, 246, 247,
1752 248, 249, 250
1753 };
1754
1755 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1756 STATE-NUM. */
1757 #define YYPACT_NINF -744
1758 static const yytype_int16 yypact[] =
1759 {
1760 -744, 610, -744, -209, -187, -179, -744, -744, -744, -176,
1761 -744, -171, -744, -744, -744, -166, -164, -744, -744, -139,
1762 -136, -744, -744, -131, -744, -744, -744, -744, -744, -744,
1763 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1764 -744, -744, -744, -744, -744, -744, -744, 61, 807, -126,
1765 -104, -84, 16, -79, 382, -77, -63, -60, 7, 21,
1766 -49, -40, 638, 381, -26, 52, 25, -152, 62, 85,
1767 86, 18, -744, -744, -744, -744, -744, 88, 89, 93,
1768 94, 96, 101, 108, 112, 118, 119, 125, 127, 132,
1769 133, 162, -744, -744, -744, -744, -744, -744, -744, -744,
1770 -744, -744, -744, -744, -744, -744, -744, 531, 499, 266,
1771 -744, 135, 28, -744, -744, 11, -744, 142, 143, 145,
1772 147, 148, 150, 153, 163, 166, 167, 169, 173, 174,
1773 175, 177, 178, 180, 182, 183, 185, 191, 197, 200,
1774 201, 202, 204, 211, 212, 215, -744, 216, -744, 217,
1775 218, 221, 222, 225, 226, 229, 234, 235, 237, 238,
1776 239, 242, 253, 256, 257, 262, 38, -744, -744, -744,
1777 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1778 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1779 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1780 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1781 -744, -744, -744, -744, -744, -744, -744, 337, 24, 259,
1782 73, 263, 4, -744, -744, -744, 126, 131, 264, 270,
1783 59, -744, -744, -744, 389, 209, -744, 276, 279, 280,
1784 281, 285, 287, 3, -744, -744, -744, -744, -744, -744,
1785 -744, 149, 288, 289, 290, 292, 299, 301, 302, 303,
1786 304, 305, 307, 308, 315, 324, 330, 75, -744, -744,
1787 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1788 -744, -744, -744, -744, 208, 30, -744, 331, 15, -744,
1789 -744, -744, 107, 254, 359, 165, -744, 385, 396, 367,
1790 454, 454, 455, 457, 461, 399, 401, 464, 454, 404,
1791 405, 351, -744, 358, 356, 360, 361, 362, 364, 365,
1792 369, 374, 375, 379, 383, 386, 388, 395, 232, -744,
1793 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1794 -744, -744, -744, -744, 384, 397, 400, 403, 408, -744,
1795 411, 412, 420, 423, 424, 427, 433, 434, 260, -744,
1796 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1797 -744, -744, -744, -744, 435, 437, 8, -744, -744, -744,
1798 458, 407, -744, -744, 441, 442, -744, -744, 36, -744,
1799 -744, -744, 417, 454, 454, 501, 443, 459, 524, 543,
1800 502, 454, 503, 454, 565, 567, 568, 508, 509, 513,
1801 454, 577, 578, 454, 580, 583, 566, 584, 587, 527,
1802 528, 475, 535, 478, 454, 454, 537, 540, 541, 542,
1803 -146, -133, 544, 546, 454, 454, 585, 454, 550, 553,
1804 554, 510, -744, 515, 514, 517, -744, 519, 521, 525,
1805 529, 530, 58, -744, -744, -744, -744, -744, -744, -744,
1806 -744, -744, -744, 533, -744, 534, -744, 10, -744, -744,
1807 -744, 538, -744, 536, 539, 545, -744, 115, -744, -744,
1808 -744, -744, -744, 582, 547, -744, 532, -744, 640, 643,
1809 549, -744, 555, 559, 560, -744, 562, 569, 572, -744,
1810 573, 70, -744, -744, -744, -744, -744, -744, -744, -744,
1811 -744, 558, 588, 595, 597, 146, -744, -744, -744, -744,
1812 623, 625, 687, 658, 659, 454, 606, -744, -744, 704,
1813 663, 706, 707, 709, 713, 714, 715, 79, 159, 717,
1814 718, 646, 719, 720, 626, -744, 628, 622, -744, 624,
1815 128, -744, -744, -744, -744, 629, 630, -744, 22, -744,
1816 -744, -744, 728, 632, -744, 634, 635, 636, -744, 637,
1817 639, 641, 430, 642, 645, 648, 649, 650, 651, 652,
1818 653, 654, 656, 657, -744, -744, 754, 756, 454, 759,
1819 776, 778, 779, 761, 784, 785, 454, 454, 786, 786,
1820 671, -744, -744, 769, 122, 770, 729, 672, 773, 774,
1821 775, 777, 795, 780, 781, 782, 681, -744, 783, 787,
1822 682, -744, 689, -744, 788, 789, 690, 694, -744, 695,
1823 696, 697, 698, 699, 702, 703, 705, 708, 710, 712,
1824 716, 721, 722, 723, 724, 725, 726, 727, 730, 731,
1825 732, 733, 734, 735, 736, 737, 738, 739, 551, 740,
1826 599, 741, 742, 743, 744, 745, 746, 747, 748, 749,
1827 750, 751, 752, 753, 755, 757, 758, 760, 762, 763,
1828 -744, -744, 801, 764, 711, 803, 823, 810, 812, 814,
1829 765, -744, 815, 766, 817, 767, -744, -744, 768, 825,
1830 826, 870, 772, -744, 790, -744, 184, 791, 792, -744,
1831 -744, 853, 816, 771, 856, 861, 863, 793, 865, 794,
1832 -744, -744, 867, 872, 873, 797, -744, 798, 799, 800,
1833 802, 804, 805, -744, 806, 808, 809, 811, 813, 818,
1834 819, 820, -744, -744, -195, -744, -744, -744, -172, -744,
1835 821, 822, 824, 827, 828, -744, -744, 874, 829, 875,
1836 830, -744, -744, 876, 831, 833, -744, 835, -744, -744,
1837 -744, -744, -744, -744, -744, 454, 454, 454, 454, 454,
1838 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1839 -744, -744, -744, 836, 837, 838, 839, 840, 841, 842,
1840 843, 844, 845, 846, 847, 314, 848, 849, -744, 850,
1841 851, 852, 854, 855, 13, 857, 858, 859, 860, 862,
1842 864, 866, 868, -744, 869, 871, -744, -744, 877, 878,
1843 879, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1844 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1845 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1846 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1847 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1848 -744, -167, -744, -744, -744, -744, -744, -744, -744, -744,
1849 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1850 -744, -744, -744, -744, -154, -744, -744, -744, -744, -744,
1851 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1852 -744, -744, -744, -744, -744, 880, 881, 309, 882, 883,
1853 884, 885, 886, -744, 887, 893, 888, -744, -33, 889,
1854 890, 832, 891, -744, -744, -744, 892, 894, -744, 895,
1855 154, -744, -744, -744, -744, -744, -744, 896, 899, 511,
1856 900, 901, 902, 627, 903, -744, 904, 905, 906, -744,
1857 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1858 -744, -744, -744, -744, -744, 79, -744, 159, -744, -744,
1859 -744, -744, -744, 907, 460, 908, -744, 909, 665, -744,
1860 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1861 -744, -744, -744, -744, -744, -744, -744, -744, 786, 786,
1862 786, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1863 -744, -744, -145, -744, -744, -744, -744, -744, -744, -744,
1864 -744, -744, -744, -744, -744, -744, -744, -50, -744, -744,
1865 551, -744, 599, -744, -744, -744, -744, -744, -744, -744,
1866 -744, -744, -744, -744, -41, -744, -744, -744, -744, -744,
1867 -744, -744, -744, -27, -744, -744, -744, -744, -744, -17,
1868 -744, -744, -744, 898, 870, 910, -744, 911, 912, -86,
1869 913, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1870 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1871 -744, -744, -744, 34, -744, -744, -744, -744, -744, -744,
1872 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1873 -744, -744, -744, -744, -744, -744, -744, -744, 40, -744,
1874 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1875 -744, -744, -744, -744, -744, -744, -744, 53, -744, -744,
1876 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1877 -744, 63, -744, -744, -744, -744, -744, 13, -744, 879,
1878 -744, -744, -744, 309, -744, 893, -744, -33, -744, -744,
1879 -744, 914, 277, 916, 917, -744, -744, 511, -744, 627,
1880 -744, 460, -744, 665, -744, -744, -744, -744, -744, -744,
1881 -744, -744, -744, -744, -744, -744, -744, 68, -744, -744,
1882 -744, -744, -744, -744, -744, -744, 277, -744
1883 };
1884
1885 /* YYPGOTO[NTERM-NUM]. */
1886 static const yytype_int16 yypgoto[] =
1887 {
1888 -744, -744, -744, -743, -298, -663, -598, -744, -744, 897,
1889 -744, -744, -744, -744, 915, -744, -744, -744, 14, -744,
1890 1, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1891 -744, -744, -744, -744, -744, -744, 924, -744, -744, -744,
1892 -744, -744, 796, -744, -744, -744, -744, 48, -744, -744,
1893 -744, -744, -744, -226, -744, -744, -744, 500, -744, -744,
1894 -744, -744, -744, -744, -744, -744, -744, -196, -744, -744,
1895 -744, -193, -744, -744, -744, 680, -744, -744, -744, -744,
1896 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1897 -744, -744, -744, -744, -744, -177, -744, 548, -744, -744,
1898 -744, -62, -744, -744, -744, -744, -744, 575, -744, -744,
1899 -744, -744, -744, -744, -744, -153, -744, -744, -744, -744,
1900 -744, -744, 516, -744, -744, -744, -744, -744, 918, -744,
1901 -744, -744, -744, 482, -744, -744, -744, -744, -744, -163,
1902 -744, -744, -744, 483, -744, -744, -744, -744, -159, -744,
1903 -744, -744, 688, -744, -744, -744, -744, -744, -744, -744,
1904 -744, -744, -744, -137, -744, -744, -744, -744, -744, -744,
1905 -744, -744, -744, -744, -117, -744, 604, -744, -744, -744,
1906 -744, -744, 700, -744, -744, -744, -744, 966, -744, -744,
1907 -744, -744, -744, -744, -99, -744, 701, -744, -744, -744,
1908 -744, 919, -744, -744, -744, -744, -744, -744, -744, -744,
1909 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1910 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1911 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1912 -744, -744, -744, -744, -744, -744, -744, -744, -744, 35,
1913 -744, -744, -744, 32, -744, -744, -744, -744, -744, 997,
1914 -744, -744, -744, -744, -744, -744, -744, -744, -744, -744,
1915 -744, -744, -744, -744, -744, -744, 920, -744, -744, -744,
1916 -744, -744, -744
1917 };
1918
1919 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
1920 positive, shift that token. If negative, reduce the rule which
1921 number is the opposite. If YYTABLE_NINF, syntax error. */
1922 #define YYTABLE_NINF -108
1923 static const yytype_int16 yytable[] =
1924 {
1925 806, 807, 573, 574, 236, 220, 45, 46, 220, 373,
1926 581, 462, 383, 805, 667, 668, 286, 110, 1076, 67,
1927 984, 1030, 227, 555, 985, 462, 286, 669, 670, 110,
1928 47, 555, 1001, 1002, 1003, 1004, 1005, 383, 48, 116,
1929 237, 52, 68, 986, 117, 118, 54, 987, 1049, 69,
1930 119, 58, 1050, 59, 238, 239, 240, 241, 120, 443,
1931 227, 1051, 67, 291, 121, 1052, 122, 123, 124, 374,
1932 1176, 492, 242, 125, 1177, 444, 251, 111, 62, 126,
1933 127, 63, 128, 129, 130, 68, 66, 493, 131, 111,
1934 445, 107, 69, 132, 446, 630, 631, 133, 134, 252,
1935 384, 135, 494, 638, 287, 640, 495, 70, 228, 1193,
1936 136, 556, 647, 108, 287, 650, 471, 137, 138, 556,
1937 139, 140, 141, 142, 143, 384, 661, 662, 375, 546,
1938 463, 385, 253, 109, 229, 144, 673, 674, 115, 676,
1939 217, 145, 146, 147, 463, 148, 228, 511, 149, 150,
1940 70, 472, 151, 1077, 218, 946, 385, 219, 1078, 496,
1941 512, 464, 386, 76, 254, 1178, 255, 256, 234, 1179,
1942 447, 473, 229, 557, 1182, 464, 474, 235, 1183, 448,
1943 449, 557, 497, 77, 78, 946, 152, 386, 1184, 79,
1944 153, 284, 1185, 154, 155, 156, 157, 158, 1186, 498,
1945 159, 160, 1187, 257, 1031, 258, 259, 260, 261, 546,
1946 511, 450, 221, 742, 743, 221, 465, 547, -107, 526,
1947 484, -107, 262, 512, 620, 565, 695, 732, 80, 81,
1948 465, 563, 475, 313, 295, 82, 83, 84, 765, 513,
1949 161, 162, 163, 947, 381, 164, 263, 314, 315, 1196,
1950 165, 316, 627, 1197, 441, 1198, 264, 85, 86, 1199,
1951 471, 344, 499, 345, 451, 346, 514, 373, 1200, 285,
1952 87, 88, 1201, 947, 690, 490, 500, 347, 1202, 548,
1953 292, 89, 1203, 1225, 265, 266, 719, 1226, 482, 90,
1954 795, 544, 348, 746, 747, 472, 349, 547, 803, 804,
1955 810, 811, 513, 293, 294, 948, 297, 298, 317, 318,
1956 319, 299, 300, 320, 301, 473, 350, 1210, 351, 302,
1957 474, 321, 1055, 1018, 1019, 1020, 303, 374, 352, 514,
1958 304, 702, 322, 323, 549, 948, 305, 306, 443, 1211,
1959 486, 1212, 1056, 307, 760, 308, 487, 324, 325, 353,
1960 309, 310, 1057, 380, 444, 1173, 1174, 1175, 1058, 548,
1961 392, 393, 725, 394, 528, 395, 396, 949, 397, 445,
1962 1090, 398, 566, 446, 1059, 326, 475, 354, 311, 1213,
1963 568, 399, 251, 116, 400, 401, 375, 402, 117, 118,
1964 492, 403, 404, 405, 119, 406, 407, 949, 408, 1060,
1965 409, 410, 120, 411, 355, 252, 493, 1061, 121, 412,
1966 122, 123, 124, 805, 549, 413, 327, 125, 414, 415,
1967 416, 494, 417, 126, 127, 495, 128, 129, 130, 418,
1968 419, 356, 131, 420, 422, 424, 425, 132, 253, 426,
1969 427, 133, 134, 428, 429, 135, 1062, 430, 600, 447,
1970 1214, 1215, 431, 432, 136, 433, 434, 435, 448, 449,
1971 436, 137, 138, 1063, 139, 140, 141, 142, 143, 357,
1972 254, 437, 255, 256, 438, 439, 616, 567, 496, 144,
1973 440, 483, 488, 1216, 569, 145, 146, 147, 489, 148,
1974 450, 1194, 149, 150, 520, 570, 151, 521, 522, 523,
1975 344, 497, 345, 524, 346, 525, 529, 530, 531, 257,
1976 532, 258, 259, 260, 261, 1094, 347, 533, 498, 534,
1977 535, 536, 537, 538, 1147, 539, 540, 571, 262, 572,
1978 152, 348, 313, 541, 153, 349, 1095, 154, 155, 156,
1979 157, 158, 542, 451, 159, 160, 314, 315, 543, 562,
1980 316, 1096, 263, 572, 575, 350, 576, 351, 1097, 578,
1981 577, 579, 264, 580, 582, 583, 584, 352, 775, 776,
1982 777, 778, 779, 585, 586, 1098, 622, 629, 587, 588,
1983 589, 499, 590, 591, 161, 162, 163, 592, 353, 164,
1984 265, 266, 593, 594, 165, 500, 1148, 595, 1099, 602,
1985 632, 596, 861, 633, 597, 1100, 598, 317, 318, 319,
1986 2, 3, 320, 599, 4, 603, 354, 1101, 604, 634,
1987 321, 605, 623, 635, 5, 1149, 606, 6, 7, 608,
1988 609, 322, 323, 8, 1150, 1102, 1103, 1104, 610, 236,
1989 1151, 611, 612, 355, 9, 613, 324, 325, 10, 11,
1990 884, 614, 615, 618, 1152, 619, 1153, 1154, 12, 624,
1991 625, 636, 637, 639, 641, 1155, 642, 643, 644, 645,
1992 356, 1156, 13, 646, 326, 237, 648, 649, 1118, 651,
1993 14, 15, 652, 654, 653, 1105, 655, 656, 657, 238,
1994 239, 240, 241, 658, 1106, 659, 660, 663, 16, 1107,
1995 664, 665, 666, 675, 671, 1108, 672, 242, 357, 1109,
1996 677, 1110, 17, 678, 679, 327, 1111, 862, 863, 864,
1997 865, 866, 1112, 867, 868, 680, 869, 870, 871, 1161,
1998 681, 872, 682, 873, 874, 683, 875, 685, 876, 686,
1999 877, 878, 704, 687, 879, 752, 18, 688, 689, 706,
2000 880, 692, 694, 697, 699, 19, 20, 700, 707, 21,
2001 22, 708, 705, 701, 709, 885, 886, 887, 888, 889,
2002 710, 890, 891, 721, 892, 893, 894, 711, 712, 895,
2003 714, 896, 897, 727, 898, 728, 899, 715, 900, 901,
2004 716, 718, 902, 1119, 1120, 1121, 1122, 1123, 903, 1124,
2005 1125, 1162, 1126, 1127, 1128, 729, 722, 1129, 76, 1130,
2006 1131, 23, 1132, 723, 1133, 724, 1134, 1135, 730, 731,
2007 1136, 733, 734, 735, 736, 737, 1137, 738, 77, 78,
2008 1163, 739, 740, 741, 79, 750, 751, 753, 754, 1164,
2009 757, 755, 759, 756, 762, 1165, 767, 768, 763, 769,
2010 770, 771, 772, 793, 773, 794, 774, 782, 796, 1166,
2011 783, 1167, 1168, 784, 785, 786, 787, 788, 789, 790,
2012 1169, 791, 792, 80, 81, 797, 1170, 798, 799, 800,
2013 82, 83, 84, 801, 802, 805, 808, 809, 812, 813,
2014 814, 815, 816, 817, 819, 818, 823, 826, 820, 821,
2015 822, 824, 85, 86, 827, 825, 828, 829, 830, 831,
2016 832, 833, 834, 835, 836, 87, 88, 837, 838, 925,
2017 839, 928, 929, 840, 926, 841, 89, 842, 930, 927,
2018 931, 843, 932, 934, 90, 936, 844, 845, 846, 847,
2019 848, 849, 850, 939, 940, 851, 852, 853, 854, 855,
2020 856, 857, 858, 859, 860, 883, 906, 907, 908, 909,
2021 910, 911, 912, 913, 914, 915, 916, 917, 918, 941,
2022 919, 957, 920, 921, 960, 922, 958, 923, 924, 961,
2023 933, 962, 937, 964, 935, 966, 938, 944, 1145, 959,
2024 967, 968, 993, 995, 997, 296, 1083, 1188, 1091, 1144,
2025 1227, 720, 1046, 1222, 1221, 945, 955, 956, 601, 965,
2026 1208, 963, 969, 970, 971, 972, 1072, 973, 485, 974,
2027 975, 976, 1189, 977, 978, 703, 979, 691, 980, 1191,
2028 1206, 726, 761, 981, 982, 983, 988, 989, 1223, 990,
2029 1204, 766, 991, 992, 1224, 996, 617, 994, 999, 998,
2030 1000, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014,
2031 1015, 1016, 1017, 1023, 1024, 1025, 1026, 1027, 1207, 1028,
2032 1029, 696, 1034, 1035, 1036, 1037, 621, 1038, 382, 1039,
2033 1205, 1040, 1180, 1041, 1042, 442, 1043, 1181, 312, 628,
2034 0, 0, 1044, 1045, 0, 1053, 1054, 1066, 1067, 1068,
2035 1069, 1070, 1071, 1075, 1081, 1082, 0, 1086, 0, 0,
2036 1084, 1092, 1087, 1089, 1093, 1115, 1116, 1117, 1140, 1141,
2037 1142, 1143, 1146, 1159, 1160, 1190, 0, 491, 1195, 1209,
2038 1192, 1219, 1220, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 0, 0, 0, 527, 0, 0, 0, 0, 0, 0,
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 545, 0, 0, 0, 0, 0, 0, 0,
2044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 0, 0, 0, 0, 0, 0, 564
2046 };
2047
2048 #define yypact_value_is_default(Yystate) \
2049 (!!((Yystate) == (-744)))
2050
2051 #define yytable_value_is_error(Yytable_value) \
2052 YYID (0)
2053
2054 static const yytype_int16 yycheck[] =
2055 {
2056 598, 599, 300, 301, 1, 1, 215, 216, 1, 1,
2057 308, 1, 1, 99, 160, 161, 1, 1, 51, 1,
2058 215, 8, 1, 1, 219, 1, 1, 160, 161, 1,
2059 217, 1, 775, 776, 777, 778, 779, 1, 217, 1,
2060 37, 217, 24, 215, 6, 7, 217, 219, 215, 31,
2061 12, 217, 219, 217, 51, 52, 53, 54, 20, 1,
2062 1, 215, 1, 215, 26, 219, 28, 29, 30, 61,
2063 215, 1, 69, 35, 219, 17, 1, 61, 217, 41,
2064 42, 217, 44, 45, 46, 24, 217, 17, 50, 61,
2065 32, 217, 31, 55, 36, 393, 394, 59, 60, 24,
2066 89, 63, 32, 401, 89, 403, 36, 89, 87, 195,
2067 72, 89, 410, 217, 89, 413, 1, 79, 80, 89,
2068 82, 83, 84, 85, 86, 89, 424, 425, 120, 1,
2069 120, 120, 57, 217, 113, 97, 434, 435, 217, 437,
2070 217, 103, 104, 105, 120, 107, 87, 1, 110, 111,
2071 89, 36, 114, 186, 217, 1, 120, 217, 191, 89,
2072 14, 151, 151, 1, 89, 215, 91, 92, 217, 219,
2073 112, 56, 113, 151, 215, 151, 61, 217, 219, 121,
2074 122, 151, 112, 21, 22, 1, 148, 151, 215, 27,
2075 152, 217, 219, 155, 156, 157, 158, 159, 215, 129,
2076 162, 163, 219, 128, 191, 130, 131, 132, 133, 1,
2077 1, 153, 208, 134, 135, 208, 206, 89, 214, 216,
2078 216, 214, 147, 14, 216, 118, 216, 525, 66, 67,
2079 206, 216, 117, 1, 216, 73, 74, 75, 216, 93,
2080 202, 203, 204, 89, 216, 207, 171, 15, 16, 215,
2081 212, 19, 216, 219, 216, 215, 181, 95, 96, 219,
2082 1, 1, 192, 3, 206, 5, 120, 1, 215, 217,
2083 108, 109, 219, 89, 216, 216, 206, 17, 215, 151,
2084 218, 119, 219, 215, 209, 210, 216, 219, 215, 127,
2085 588, 216, 32, 134, 135, 36, 36, 89, 596, 597,
2086 178, 179, 93, 218, 218, 151, 218, 218, 76, 77,
2087 78, 218, 218, 81, 218, 56, 56, 40, 58, 218,
2088 61, 89, 13, 9, 10, 11, 218, 61, 68, 120,
2089 218, 216, 100, 101, 206, 151, 218, 218, 1, 62,
2090 214, 64, 33, 218, 216, 218, 215, 115, 116, 89,
2091 218, 218, 43, 218, 17, 1018, 1019, 1020, 49, 151,
2092 218, 218, 216, 218, 215, 218, 218, 213, 218, 32,
2093 216, 218, 118, 36, 65, 143, 117, 117, 216, 102,
2094 215, 218, 1, 1, 218, 218, 120, 218, 6, 7,
2095 1, 218, 218, 218, 12, 218, 218, 213, 218, 90,
2096 218, 218, 20, 218, 144, 24, 17, 98, 26, 218,
2097 28, 29, 30, 99, 206, 218, 184, 35, 218, 218,
2098 218, 32, 218, 41, 42, 36, 44, 45, 46, 218,
2099 218, 171, 50, 218, 218, 218, 218, 55, 57, 218,
2100 218, 59, 60, 218, 218, 63, 137, 218, 216, 112,
2101 173, 174, 218, 218, 72, 218, 218, 218, 121, 122,
2102 218, 79, 80, 154, 82, 83, 84, 85, 86, 209,
2103 89, 218, 91, 92, 218, 218, 216, 118, 89, 97,
2104 218, 218, 218, 206, 99, 103, 104, 105, 218, 107,
2105 153, 1089, 110, 111, 218, 99, 114, 218, 218, 218,
2106 1, 112, 3, 218, 5, 218, 218, 218, 218, 128,
2107 218, 130, 131, 132, 133, 4, 17, 218, 129, 218,
2108 218, 218, 218, 218, 64, 218, 218, 160, 147, 99,
2109 148, 32, 1, 218, 152, 36, 25, 155, 156, 157,
2110 158, 159, 218, 206, 162, 163, 15, 16, 218, 218,
2111 19, 40, 171, 99, 99, 56, 99, 58, 47, 160,
2112 99, 160, 181, 99, 160, 160, 215, 68, 138, 139,
2113 140, 141, 142, 215, 218, 64, 118, 160, 218, 218,
2114 218, 192, 218, 218, 202, 203, 204, 218, 89, 207,
2115 209, 210, 218, 218, 212, 206, 136, 218, 87, 215,
2116 99, 218, 51, 160, 218, 94, 218, 76, 77, 78,
2117 0, 1, 81, 218, 4, 218, 117, 106, 218, 160,
2118 89, 218, 215, 99, 14, 165, 218, 17, 18, 218,
2119 218, 100, 101, 23, 174, 124, 125, 126, 218, 1,
2120 180, 218, 218, 144, 34, 218, 115, 116, 38, 39,
2121 51, 218, 218, 218, 194, 218, 196, 197, 48, 218,
2122 218, 118, 160, 160, 99, 205, 99, 99, 160, 160,
2123 171, 211, 62, 160, 143, 37, 99, 99, 51, 99,
2124 70, 71, 99, 99, 118, 174, 99, 160, 160, 51,
2125 52, 53, 54, 218, 183, 160, 218, 160, 88, 188,
2126 160, 160, 160, 118, 160, 194, 160, 69, 209, 198,
2127 160, 200, 102, 160, 160, 184, 205, 166, 167, 168,
2128 169, 170, 211, 172, 173, 215, 175, 176, 177, 64,
2129 215, 180, 218, 182, 183, 218, 185, 218, 187, 218,
2130 189, 190, 160, 218, 193, 99, 136, 218, 218, 217,
2131 199, 218, 218, 215, 218, 145, 146, 218, 118, 149,
2132 150, 118, 215, 218, 215, 166, 167, 168, 169, 170,
2133 215, 172, 173, 215, 175, 176, 177, 218, 218, 180,
2134 218, 182, 183, 160, 185, 160, 187, 218, 189, 190,
2135 218, 218, 193, 166, 167, 168, 169, 170, 199, 172,
2136 173, 136, 175, 176, 177, 118, 218, 180, 1, 182,
2137 183, 201, 185, 218, 187, 218, 189, 190, 160, 160,
2138 193, 215, 118, 160, 118, 118, 199, 118, 21, 22,
2139 165, 118, 118, 118, 27, 118, 118, 118, 118, 174,
2140 218, 215, 218, 215, 215, 180, 118, 215, 218, 215,
2141 215, 215, 215, 99, 215, 99, 215, 215, 99, 194,
2142 215, 196, 197, 215, 215, 215, 215, 215, 215, 215,
2143 205, 215, 215, 66, 67, 99, 211, 99, 99, 118,
2144 73, 74, 75, 99, 99, 99, 215, 118, 118, 160,
2145 218, 118, 118, 118, 99, 118, 215, 215, 118, 118,
2146 118, 118, 95, 96, 215, 118, 118, 118, 218, 215,
2147 215, 215, 215, 215, 215, 108, 109, 215, 215, 118,
2148 215, 118, 99, 215, 160, 215, 119, 215, 118, 218,
2149 118, 215, 118, 118, 127, 118, 215, 215, 215, 215,
2150 215, 215, 215, 118, 118, 215, 215, 215, 215, 215,
2151 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2152 215, 215, 215, 215, 215, 215, 215, 215, 215, 99,
2153 215, 118, 215, 215, 118, 215, 160, 215, 215, 118,
2154 215, 118, 215, 118, 218, 118, 218, 215, 987, 218,
2155 118, 118, 118, 118, 118, 71, 164, 99, 950, 985,
2156 1226, 501, 123, 1199, 1197, 215, 215, 215, 328, 215,
2157 1187, 218, 215, 215, 215, 215, 123, 215, 222, 215,
2158 215, 215, 1084, 215, 215, 477, 215, 452, 215, 118,
2159 1183, 515, 550, 215, 215, 215, 215, 215, 1201, 215,
2160 1177, 558, 215, 215, 1203, 215, 358, 218, 215, 218,
2161 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2162 215, 215, 215, 215, 215, 215, 215, 215, 1185, 215,
2163 215, 467, 215, 215, 215, 215, 376, 215, 112, 215,
2164 1179, 215, 1050, 215, 215, 166, 215, 1052, 91, 388,
2165 -1, -1, 215, 215, -1, 215, 215, 215, 215, 215,
2166 215, 215, 215, 215, 215, 215, -1, 215, -1, -1,
2167 219, 215, 218, 218, 215, 215, 215, 215, 215, 215,
2168 215, 215, 215, 215, 215, 215, -1, 230, 215, 215,
2169 218, 215, 215, -1, -1, -1, -1, -1, -1, -1,
2170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2172 -1, -1, -1, 243, -1, -1, -1, -1, -1, -1,
2173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2174 -1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
2175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2176 -1, -1, -1, -1, -1, -1, 288
2177 };
2178
2179 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2180 symbol of state STATE-NUM. */
2181 static const yytype_uint16 yystos[] =
2182 {
2183 0, 221, 0, 1, 4, 14, 17, 18, 23, 34,
2184 38, 39, 48, 62, 70, 71, 88, 102, 136, 145,
2185 146, 149, 150, 201, 222, 227, 232, 254, 260, 274,
2186 292, 310, 324, 339, 346, 350, 360, 369, 389, 399,
2187 405, 409, 419, 477, 494, 215, 216, 217, 217, 293,
2188 370, 400, 217, 410, 217, 325, 390, 311, 217, 217,
2189 275, 340, 217, 217, 351, 361, 217, 1, 24, 31,
2190 89, 255, 256, 257, 258, 259, 1, 21, 22, 27,
2191 66, 67, 73, 74, 75, 95, 96, 108, 109, 119,
2192 127, 478, 479, 480, 481, 482, 483, 484, 485, 486,
2193 487, 488, 489, 490, 491, 492, 493, 217, 217, 217,
2194 1, 61, 406, 407, 408, 217, 1, 6, 7, 12,
2195 20, 26, 28, 29, 30, 35, 41, 42, 44, 45,
2196 46, 50, 55, 59, 60, 63, 72, 79, 80, 82,
2197 83, 84, 85, 86, 97, 103, 104, 105, 107, 110,
2198 111, 114, 148, 152, 155, 156, 157, 158, 159, 162,
2199 163, 202, 203, 204, 207, 212, 420, 421, 422, 423,
2200 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
2201 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
2202 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
2203 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
2204 464, 465, 466, 470, 474, 475, 476, 217, 217, 217,
2205 1, 208, 261, 262, 263, 264, 265, 1, 87, 113,
2206 228, 229, 230, 231, 217, 217, 1, 37, 51, 52,
2207 53, 54, 69, 495, 496, 497, 498, 499, 500, 501,
2208 502, 1, 24, 57, 89, 91, 92, 128, 130, 131,
2209 132, 133, 147, 171, 181, 209, 210, 233, 234, 235,
2210 236, 241, 242, 243, 244, 245, 246, 247, 248, 249,
2211 250, 251, 252, 253, 217, 217, 1, 89, 347, 348,
2212 349, 215, 218, 218, 218, 216, 256, 218, 218, 218,
2213 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
2214 218, 216, 479, 1, 15, 16, 19, 76, 77, 78,
2215 81, 89, 100, 101, 115, 116, 143, 184, 294, 295,
2216 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
2217 306, 307, 308, 309, 1, 3, 5, 17, 32, 36,
2218 56, 58, 68, 89, 117, 144, 171, 209, 371, 372,
2219 373, 374, 375, 376, 377, 378, 379, 380, 384, 385,
2220 386, 387, 388, 1, 61, 120, 401, 402, 403, 404,
2221 218, 216, 407, 1, 89, 120, 151, 411, 415, 416,
2222 417, 418, 218, 218, 218, 218, 218, 218, 218, 218,
2223 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
2224 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
2225 218, 471, 218, 467, 218, 218, 218, 218, 218, 218,
2226 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
2227 218, 216, 421, 1, 17, 32, 36, 112, 121, 122,
2228 153, 206, 326, 327, 328, 329, 330, 331, 332, 336,
2229 337, 338, 1, 120, 151, 206, 391, 395, 396, 397,
2230 398, 1, 36, 56, 61, 117, 312, 316, 317, 318,
2231 322, 323, 215, 218, 216, 262, 214, 215, 218, 218,
2232 216, 229, 1, 17, 32, 36, 89, 112, 129, 192,
2233 206, 276, 277, 278, 279, 280, 281, 282, 283, 284,
2234 288, 1, 14, 93, 120, 341, 342, 343, 344, 345,
2235 218, 218, 218, 218, 218, 218, 216, 496, 215, 218,
2236 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
2237 218, 218, 218, 218, 216, 234, 1, 89, 151, 206,
2238 352, 353, 354, 355, 356, 1, 89, 151, 362, 363,
2239 364, 365, 218, 216, 348, 118, 118, 118, 215, 99,
2240 99, 160, 99, 224, 224, 99, 99, 99, 160, 160,
2241 99, 224, 160, 160, 215, 215, 218, 218, 218, 218,
2242 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
2243 216, 295, 215, 218, 218, 218, 218, 381, 218, 218,
2244 218, 218, 218, 218, 218, 218, 216, 372, 218, 218,
2245 216, 402, 118, 215, 218, 218, 412, 216, 416, 160,
2246 224, 224, 99, 160, 160, 99, 118, 160, 224, 160,
2247 224, 99, 99, 99, 160, 160, 160, 224, 99, 99,
2248 224, 99, 99, 118, 99, 99, 160, 160, 218, 160,
2249 218, 224, 224, 160, 160, 160, 160, 160, 161, 160,
2250 161, 160, 160, 224, 224, 118, 224, 160, 160, 160,
2251 215, 215, 218, 218, 333, 218, 218, 218, 218, 218,
2252 216, 327, 218, 392, 218, 216, 396, 215, 313, 218,
2253 218, 218, 216, 317, 160, 215, 217, 118, 118, 215,
2254 215, 218, 218, 289, 218, 218, 218, 285, 218, 216,
2255 277, 215, 218, 218, 218, 216, 342, 160, 160, 118,
2256 160, 160, 224, 215, 118, 160, 118, 118, 118, 118,
2257 118, 118, 134, 135, 237, 238, 134, 135, 239, 240,
2258 118, 118, 99, 118, 118, 215, 215, 218, 357, 218,
2259 216, 353, 215, 218, 366, 216, 363, 118, 215, 215,
2260 215, 215, 215, 215, 215, 138, 139, 140, 141, 142,
2261 223, 224, 215, 215, 215, 215, 215, 215, 215, 215,
2262 215, 215, 215, 99, 99, 224, 99, 99, 99, 99,
2263 118, 99, 99, 224, 224, 99, 226, 226, 215, 118,
2264 178, 179, 118, 160, 218, 118, 118, 118, 118, 99,
2265 118, 118, 118, 215, 118, 118, 215, 215, 118, 118,
2266 218, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2267 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2268 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2269 215, 51, 166, 167, 168, 169, 170, 172, 173, 175,
2270 176, 177, 180, 182, 183, 185, 187, 189, 190, 193,
2271 199, 472, 473, 215, 51, 166, 167, 168, 169, 170,
2272 172, 173, 175, 176, 177, 180, 182, 183, 185, 187,
2273 189, 190, 193, 199, 468, 469, 215, 215, 215, 215,
2274 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2275 215, 215, 215, 215, 215, 118, 160, 218, 118, 99,
2276 118, 118, 118, 215, 118, 218, 118, 215, 218, 118,
2277 118, 99, 320, 321, 215, 215, 1, 89, 151, 213,
2278 266, 267, 268, 269, 270, 215, 215, 118, 160, 218,
2279 118, 118, 118, 218, 118, 215, 118, 118, 118, 215,
2280 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
2281 215, 215, 215, 215, 215, 219, 215, 219, 215, 215,
2282 215, 215, 215, 118, 218, 118, 215, 118, 218, 215,
2283 215, 223, 223, 223, 223, 223, 215, 215, 215, 215,
2284 215, 215, 215, 215, 215, 215, 215, 215, 9, 10,
2285 11, 225, 226, 215, 215, 215, 215, 215, 215, 215,
2286 8, 191, 382, 383, 215, 215, 215, 215, 215, 215,
2287 215, 215, 215, 215, 215, 215, 123, 413, 414, 215,
2288 219, 215, 219, 215, 215, 13, 33, 43, 49, 65,
2289 90, 98, 137, 154, 334, 335, 215, 215, 215, 215,
2290 215, 215, 123, 393, 394, 215, 51, 186, 191, 314,
2291 315, 215, 215, 164, 219, 319, 215, 218, 271, 218,
2292 216, 267, 215, 215, 4, 25, 40, 47, 64, 87,
2293 94, 106, 124, 125, 126, 174, 183, 188, 194, 198,
2294 200, 205, 211, 290, 291, 215, 215, 215, 51, 166,
2295 167, 168, 169, 170, 172, 173, 175, 176, 177, 180,
2296 182, 183, 185, 187, 189, 190, 193, 199, 286, 287,
2297 215, 215, 215, 215, 238, 240, 215, 64, 136, 165,
2298 174, 180, 194, 196, 197, 205, 211, 358, 359, 215,
2299 215, 64, 136, 165, 174, 180, 194, 196, 197, 205,
2300 211, 367, 368, 225, 225, 225, 215, 219, 215, 219,
2301 473, 469, 215, 219, 215, 219, 215, 219, 99, 321,
2302 215, 118, 218, 195, 226, 215, 215, 219, 215, 219,
2303 215, 219, 215, 219, 383, 414, 335, 394, 315, 215,
2304 40, 62, 64, 102, 173, 174, 206, 272, 273, 215,
2305 215, 291, 287, 359, 368, 215, 219, 273
2306 };
2307
2308 #define yyerrok (yyerrstatus = 0)
2309 #define yyclearin (yychar = YYEMPTY)
2310 #define YYEMPTY (-2)
2311 #define YYEOF 0
2312
2313 #define YYACCEPT goto yyacceptlab
2314 #define YYABORT goto yyabortlab
2315 #define YYERROR goto yyerrorlab
2316
2317
2318 /* Like YYERROR except do call yyerror. This remains here temporarily
2319 to ease the transition to the new meaning of YYERROR, for GCC.
2320 Once GCC version 2 has supplanted version 1, this can go. However,
2321 YYFAIL appears to be in use. Nevertheless, it is formally deprecated
2322 in Bison 2.4.2's NEWS entry, where a plan to phase it out is
2323 discussed. */
2324
2325 #define YYFAIL goto yyerrlab
2326 #if defined YYFAIL
2327 /* This is here to suppress warnings from the GCC cpp's
2328 -Wunused-macros. Normally we don't worry about that warning, but
2329 some users do, and we want to make it easy for users to remove
2330 YYFAIL uses, which will produce warnings from Bison 2.5. */
2331 #endif
2332
2333 #define YYRECOVERING() (!!yyerrstatus)
2334
2335 #define YYBACKUP(Token, Value) \
2336 do \
2337 if (yychar == YYEMPTY) \
2338 { \
2339 yychar = (Token); \
2340 yylval = (Value); \
2341 YYPOPSTACK (yylen); \
2342 yystate = *yyssp; \
2343 goto yybackup; \
2344 } \
2345 else \
2346 { \
2347 yyerror (YY_("syntax error: cannot back up")); \
2348 YYERROR; \
2349 } \
2350 while (YYID (0))
2351
2352
2353 #define YYTERROR 1
2354 #define YYERRCODE 256
2355
2356 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2357 If N is 0, then set CURRENT to the empty location which ends
2358 the previous symbol: RHS[0] (always defined). */
2359
2360 #ifndef YYLLOC_DEFAULT
2361 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2362 do \
2363 if (YYID (N)) \
2364 { \
2365 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2366 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2367 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2368 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2369 } \
2370 else \
2371 { \
2372 (Current).first_line = (Current).last_line = \
2373 YYRHSLOC (Rhs, 0).last_line; \
2374 (Current).first_column = (Current).last_column = \
2375 YYRHSLOC (Rhs, 0).last_column; \
2376 } \
2377 while (YYID (0))
2378 #endif
2379
2380 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2381
2382
2383
2384 /* This macro is provided for backward compatibility. */
2385
2386 #ifndef YY_LOCATION_PRINT
2387 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2388 #endif
2389
2390
2391 /* YYLEX -- calling `yylex' with the right arguments. */
2392
2393 #ifdef YYLEX_PARAM
2394 # define YYLEX yylex (YYLEX_PARAM)
2395 #else
2396 # define YYLEX yylex ()
2397 #endif
2398
2399 /* Enable debugging if requested. */
2400 #if YYDEBUG
2401
2402 # ifndef YYFPRINTF
2403 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2404 # define YYFPRINTF fprintf
2405 # endif
2406
2407 # define YYDPRINTF(Args) \
2408 do { \
2409 if (yydebug) \
2410 YYFPRINTF Args; \
2411 } while (YYID (0))
2412
2413 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2414 do { \
2415 if (yydebug) \
2416 { \
2417 YYFPRINTF (stderr, "%s ", Title); \
2418 yy_symbol_print (stderr, \
2419 Type, Value); \
2420 YYFPRINTF (stderr, "\n"); \
2421 } \
2422 } while (YYID (0))
2423
2424
2425 /*--------------------------------.
2426 | Print this symbol on YYOUTPUT. |
2427 `--------------------------------*/
2428
2429 /*ARGSUSED*/
2430 #if (defined __STDC__ || defined __C99__FUNC__ \
2431 || defined __cplusplus || defined _MSC_VER)
2432 static void
2433 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2434 #else
2435 static void
2436 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2437 FILE *yyoutput;
2438 int yytype;
2439 YYSTYPE const * const yyvaluep;
2440 #endif
2441 {
2442 FILE *yyo = yyoutput;
2443 YYUSE (yyo);
2444 if (!yyvaluep)
2445 return;
2446 # ifdef YYPRINT
2447 if (yytype < YYNTOKENS)
2448 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2449 # else
2450 YYUSE (yyoutput);
2451 # endif
2452 switch (yytype)
2453 {
2454 default:
2455 break;
2456 }
2457 }
2458
2459
2460 /*--------------------------------.
2461 | Print this symbol on YYOUTPUT. |
2462 `--------------------------------*/
2463
2464 #if (defined __STDC__ || defined __C99__FUNC__ \
2465 || defined __cplusplus || defined _MSC_VER)
2466 static void
2467 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2468 #else
2469 static void
2470 yy_symbol_print (yyoutput, yytype, yyvaluep)
2471 FILE *yyoutput;
2472 int yytype;
2473 YYSTYPE const * const yyvaluep;
2474 #endif
2475 {
2476 if (yytype < YYNTOKENS)
2477 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2478 else
2479 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2480
2481 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2482 YYFPRINTF (yyoutput, ")");
2483 }
2484
2485 /*------------------------------------------------------------------.
2486 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2487 | TOP (included). |
2488 `------------------------------------------------------------------*/
2489
2490 #if (defined __STDC__ || defined __C99__FUNC__ \
2491 || defined __cplusplus || defined _MSC_VER)
2492 static void
2493 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2494 #else
2495 static void
2496 yy_stack_print (yybottom, yytop)
2497 yytype_int16 *yybottom;
2498 yytype_int16 *yytop;
2499 #endif
2500 {
2501 YYFPRINTF (stderr, "Stack now");
2502 for (; yybottom <= yytop; yybottom++)
2503 {
2504 int yybot = *yybottom;
2505 YYFPRINTF (stderr, " %d", yybot);
2506 }
2507 YYFPRINTF (stderr, "\n");
2508 }
2509
2510 # define YY_STACK_PRINT(Bottom, Top) \
2511 do { \
2512 if (yydebug) \
2513 yy_stack_print ((Bottom), (Top)); \
2514 } while (YYID (0))
2515
2516
2517 /*------------------------------------------------.
2518 | Report that the YYRULE is going to be reduced. |
2519 `------------------------------------------------*/
2520
2521 #if (defined __STDC__ || defined __C99__FUNC__ \
2522 || defined __cplusplus || defined _MSC_VER)
2523 static void
2524 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2525 #else
2526 static void
2527 yy_reduce_print (yyvsp, yyrule)
2528 YYSTYPE *yyvsp;
2529 int yyrule;
2530 #endif
2531 {
2532 int yynrhs = yyr2[yyrule];
2533 int yyi;
2534 unsigned long int yylno = yyrline[yyrule];
2535 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2536 yyrule - 1, yylno);
2537 /* The symbols being reduced. */
2538 for (yyi = 0; yyi < yynrhs; yyi++)
2539 {
2540 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2541 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2542 &(yyvsp[(yyi + 1) - (yynrhs)])
2543 );
2544 YYFPRINTF (stderr, "\n");
2545 }
2546 }
2547
2548 # define YY_REDUCE_PRINT(Rule) \
2549 do { \
2550 if (yydebug) \
2551 yy_reduce_print (yyvsp, Rule); \
2552 } while (YYID (0))
2553
2554 /* Nonzero means print parse trace. It is left uninitialized so that
2555 multiple parsers can coexist. */
2556 int yydebug;
2557 #else /* !YYDEBUG */
2558 # define YYDPRINTF(Args)
2559 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2560 # define YY_STACK_PRINT(Bottom, Top)
2561 # define YY_REDUCE_PRINT(Rule)
2562 #endif /* !YYDEBUG */
2563
2564
2565 /* YYINITDEPTH -- initial size of the parser's stacks. */
2566 #ifndef YYINITDEPTH
2567 # define YYINITDEPTH 200
2568 #endif
2569
2570 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2571 if the built-in stack extension method is used).
2572
2573 Do not make this value too large; the results are undefined if
2574 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2575 evaluated with infinite-precision integer arithmetic. */
2576
2577 #ifndef YYMAXDEPTH
2578 # define YYMAXDEPTH 10000
2579 #endif
2580
2581
2582 #if YYERROR_VERBOSE
2583
2584 # ifndef yystrlen
2585 # if defined __GLIBC__ && defined _STRING_H
2586 # define yystrlen strlen
2587 # else
2588 /* Return the length of YYSTR. */
2589 #if (defined __STDC__ || defined __C99__FUNC__ \
2590 || defined __cplusplus || defined _MSC_VER)
2591 static YYSIZE_T
2592 yystrlen (const char *yystr)
2593 #else
2594 static YYSIZE_T
2595 yystrlen (yystr)
2596 const char *yystr;
2597 #endif
2598 {
2599 YYSIZE_T yylen;
2600 for (yylen = 0; yystr[yylen]; yylen++)
2601 continue;
2602 return yylen;
2603 }
2604 # endif
2605 # endif
2606
2607 # ifndef yystpcpy
2608 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2609 # define yystpcpy stpcpy
2610 # else
2611 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2612 YYDEST. */
2613 #if (defined __STDC__ || defined __C99__FUNC__ \
2614 || defined __cplusplus || defined _MSC_VER)
2615 static char *
2616 yystpcpy (char *yydest, const char *yysrc)
2617 #else
2618 static char *
2619 yystpcpy (yydest, yysrc)
2620 char *yydest;
2621 const char *yysrc;
2622 #endif
2623 {
2624 char *yyd = yydest;
2625 const char *yys = yysrc;
2626
2627 while ((*yyd++ = *yys++) != '\0')
2628 continue;
2629
2630 return yyd - 1;
2631 }
2632 # endif
2633 # endif
2634
2635 # ifndef yytnamerr
2636 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2637 quotes and backslashes, so that it's suitable for yyerror. The
2638 heuristic is that double-quoting is unnecessary unless the string
2639 contains an apostrophe, a comma, or backslash (other than
2640 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2641 null, do not copy; instead, return the length of what the result
2642 would have been. */
2643 static YYSIZE_T
2644 yytnamerr (char *yyres, const char *yystr)
2645 {
2646 if (*yystr == '"')
2647 {
2648 YYSIZE_T yyn = 0;
2649 char const *yyp = yystr;
2650
2651 for (;;)
2652 switch (*++yyp)
2653 {
2654 case '\'':
2655 case ',':
2656 goto do_not_strip_quotes;
2657
2658 case '\\':
2659 if (*++yyp != '\\')
2660 goto do_not_strip_quotes;
2661 /* Fall through. */
2662 default:
2663 if (yyres)
2664 yyres[yyn] = *yyp;
2665 yyn++;
2666 break;
2667
2668 case '"':
2669 if (yyres)
2670 yyres[yyn] = '\0';
2671 return yyn;
2672 }
2673 do_not_strip_quotes: ;
2674 }
2675
2676 if (! yyres)
2677 return yystrlen (yystr);
2678
2679 return yystpcpy (yyres, yystr) - yyres;
2680 }
2681 # endif
2682
2683 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2684 about the unexpected token YYTOKEN for the state stack whose top is
2685 YYSSP.
2686
2687 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2688 not large enough to hold the message. In that case, also set
2689 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2690 required number of bytes is too large to store. */
2691 static int
2692 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2693 yytype_int16 *yyssp, int yytoken)
2694 {
2695 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
2696 YYSIZE_T yysize = yysize0;
2697 YYSIZE_T yysize1;
2698 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2699 /* Internationalized format string. */
2700 const char *yyformat = YY_NULL;
2701 /* Arguments of yyformat. */
2702 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2703 /* Number of reported tokens (one for the "unexpected", one per
2704 "expected"). */
2705 int yycount = 0;
2706
2707 /* There are many possibilities here to consider:
2708 - Assume YYFAIL is not used. It's too flawed to consider. See
2709 <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
2710 for details. YYERROR is fine as it does not invoke this
2711 function.
2712 - If this state is a consistent state with a default action, then
2713 the only way this function was invoked is if the default action
2714 is an error action. In that case, don't check for expected
2715 tokens because there are none.
2716 - The only way there can be no lookahead present (in yychar) is if
2717 this state is a consistent state with a default action. Thus,
2718 detecting the absence of a lookahead is sufficient to determine
2719 that there is no unexpected or expected token to report. In that
2720 case, just report a simple "syntax error".
2721 - Don't assume there isn't a lookahead just because this state is a
2722 consistent state with a default action. There might have been a
2723 previous inconsistent state, consistent state with a non-default
2724 action, or user semantic action that manipulated yychar.
2725 - Of course, the expected token list depends on states to have
2726 correct lookahead information, and it depends on the parser not
2727 to perform extra reductions after fetching a lookahead from the
2728 scanner and before detecting a syntax error. Thus, state merging
2729 (from LALR or IELR) and default reductions corrupt the expected
2730 token list. However, the list is correct for canonical LR with
2731 one exception: it will still contain any token that will not be
2732 accepted due to an error action in a later state.
2733 */
2734 if (yytoken != YYEMPTY)
2735 {
2736 int yyn = yypact[*yyssp];
2737 yyarg[yycount++] = yytname[yytoken];
2738 if (!yypact_value_is_default (yyn))
2739 {
2740 /* Start YYX at -YYN if negative to avoid negative indexes in
2741 YYCHECK. In other words, skip the first -YYN actions for
2742 this state because they are default actions. */
2743 int yyxbegin = yyn < 0 ? -yyn : 0;
2744 /* Stay within bounds of both yycheck and yytname. */
2745 int yychecklim = YYLAST - yyn + 1;
2746 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2747 int yyx;
2748
2749 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2750 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2751 && !yytable_value_is_error (yytable[yyx + yyn]))
2752 {
2753 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2754 {
2755 yycount = 1;
2756 yysize = yysize0;
2757 break;
2758 }
2759 yyarg[yycount++] = yytname[yyx];
2760 yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2761 if (! (yysize <= yysize1
2762 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2763 return 2;
2764 yysize = yysize1;
2765 }
2766 }
2767 }
2768
2769 switch (yycount)
2770 {
2771 # define YYCASE_(N, S) \
2772 case N: \
2773 yyformat = S; \
2774 break
2775 YYCASE_(0, YY_("syntax error"));
2776 YYCASE_(1, YY_("syntax error, unexpected %s"));
2777 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2778 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2779 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2780 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2781 # undef YYCASE_
2782 }
2783
2784 yysize1 = yysize + yystrlen (yyformat);
2785 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2786 return 2;
2787 yysize = yysize1;
2788
2789 if (*yymsg_alloc < yysize)
2790 {
2791 *yymsg_alloc = 2 * yysize;
2792 if (! (yysize <= *yymsg_alloc
2793 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2794 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2795 return 1;
2796 }
2797
2798 /* Avoid sprintf, as that infringes on the user's name space.
2799 Don't have undefined behavior even if the translation
2800 produced a string with the wrong number of "%s"s. */
2801 {
2802 char *yyp = *yymsg;
2803 int yyi = 0;
2804 while ((*yyp = *yyformat) != '\0')
2805 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2806 {
2807 yyp += yytnamerr (yyp, yyarg[yyi++]);
2808 yyformat += 2;
2809 }
2810 else
2811 {
2812 yyp++;
2813 yyformat++;
2814 }
2815 }
2816 return 0;
2817 }
2818 #endif /* YYERROR_VERBOSE */
2819
2820 /*-----------------------------------------------.
2821 | Release the memory associated to this symbol. |
2822 `-----------------------------------------------*/
2823
2824 /*ARGSUSED*/
2825 #if (defined __STDC__ || defined __C99__FUNC__ \
2826 || defined __cplusplus || defined _MSC_VER)
2827 static void
2828 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2829 #else
2830 static void
2831 yydestruct (yymsg, yytype, yyvaluep)
2832 const char *yymsg;
2833 int yytype;
2834 YYSTYPE *yyvaluep;
2835 #endif
2836 {
2837 YYUSE (yyvaluep);
2838
2839 if (!yymsg)
2840 yymsg = "Deleting";
2841 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2842
2843 switch (yytype)
2844 {
2845
2846 default:
2847 break;
2848 }
2849 }
2850
2851
2852
2853
2854 /* The lookahead symbol. */
2855 int yychar;
2856
2857
2858 #ifndef YYLVAL_INITIALIZE
2859 # define YYLVAL_INITIALIZE()
2860 #endif
2861 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2862 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2863 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
2864 #endif
2865
2866 /* The semantic value of the lookahead symbol. */
2867 YYSTYPE yylval;
2868
2869 /* Number of syntax errors so far. */
2870 int yynerrs;
2871
2872
2873 /*----------.
2874 | yyparse. |
2875 `----------*/
2876
2877 #ifdef YYPARSE_PARAM
2878 #if (defined __STDC__ || defined __C99__FUNC__ \
2879 || defined __cplusplus || defined _MSC_VER)
2880 int
2881 yyparse (void *YYPARSE_PARAM)
2882 #else
2883 int
2884 yyparse (YYPARSE_PARAM)
2885 void *YYPARSE_PARAM;
2886 #endif
2887 #else /* ! YYPARSE_PARAM */
2888 #if (defined __STDC__ || defined __C99__FUNC__ \
2889 || defined __cplusplus || defined _MSC_VER)
2890 int
2891 yyparse (void)
2892 #else
2893 int
2894 yyparse ()
2895
2896 #endif
2897 #endif
2898 {
2899 int yystate;
2900 /* Number of tokens to shift before error messages enabled. */
2901 int yyerrstatus;
2902
2903 /* The stacks and their tools:
2904 `yyss': related to states.
2905 `yyvs': related to semantic values.
2906
2907 Refer to the stacks through separate pointers, to allow yyoverflow
2908 to reallocate them elsewhere. */
2909
2910 /* The state stack. */
2911 yytype_int16 yyssa[YYINITDEPTH];
2912 yytype_int16 *yyss;
2913 yytype_int16 *yyssp;
2914
2915 /* The semantic value stack. */
2916 YYSTYPE yyvsa[YYINITDEPTH];
2917 YYSTYPE *yyvs;
2918 YYSTYPE *yyvsp;
2919
2920 YYSIZE_T yystacksize;
2921
2922 int yyn;
2923 int yyresult;
2924 /* Lookahead token as an internal (translated) token number. */
2925 int yytoken = 0;
2926 /* The variables used to return semantic value and location from the
2927 action routines. */
2928 YYSTYPE yyval;
2929
2930 #if YYERROR_VERBOSE
2931 /* Buffer for error messages, and its allocated size. */
2932 char yymsgbuf[128];
2933 char *yymsg = yymsgbuf;
2934 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2935 #endif
2936
2937 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2938
2939 /* The number of symbols on the RHS of the reduced rule.
2940 Keep to zero when no symbol should be popped. */
2941 int yylen = 0;
2942
2943 yyss = yyssa;
2944 yyvs = yyvsa;
2945 yystacksize = YYINITDEPTH;
2946
2947 YYDPRINTF ((stderr, "Starting parse\n"));
2948
2949 yystate = 0;
2950 yyerrstatus = 0;
2951 yynerrs = 0;
2952 yychar = YYEMPTY; /* Cause a token to be read. */
2953
2954 /* Initialize stack pointers.
2955 Waste one element of value and location stack
2956 so that they stay on the same level as the state stack.
2957 The wasted elements are never initialized. */
2958 yyssp = yyss;
2959 yyvsp = yyvs;
2960
2961 YYLVAL_INITIALIZE ();
2962 goto yysetstate;
2963
2964 /*------------------------------------------------------------.
2965 | yynewstate -- Push a new state, which is found in yystate. |
2966 `------------------------------------------------------------*/
2967 yynewstate:
2968 /* In all cases, when you get here, the value and location stacks
2969 have just been pushed. So pushing a state here evens the stacks. */
2970 yyssp++;
2971
2972 yysetstate:
2973 *yyssp = yystate;
2974
2975 if (yyss + yystacksize - 1 <= yyssp)
2976 {
2977 /* Get the current used size of the three stacks, in elements. */
2978 YYSIZE_T yysize = yyssp - yyss + 1;
2979
2980 #ifdef yyoverflow
2981 {
2982 /* Give user a chance to reallocate the stack. Use copies of
2983 these so that the &'s don't force the real ones into
2984 memory. */
2985 YYSTYPE *yyvs1 = yyvs;
2986 yytype_int16 *yyss1 = yyss;
2987
2988 /* Each stack pointer address is followed by the size of the
2989 data in use in that stack, in bytes. This used to be a
2990 conditional around just the two extra args, but that might
2991 be undefined if yyoverflow is a macro. */
2992 yyoverflow (YY_("memory exhausted"),
2993 &yyss1, yysize * sizeof (*yyssp),
2994 &yyvs1, yysize * sizeof (*yyvsp),
2995 &yystacksize);
2996
2997 yyss = yyss1;
2998 yyvs = yyvs1;
2999 }
3000 #else /* no yyoverflow */
3001 # ifndef YYSTACK_RELOCATE
3002 goto yyexhaustedlab;
3003 # else
3004 /* Extend the stack our own way. */
3005 if (YYMAXDEPTH <= yystacksize)
3006 goto yyexhaustedlab;
3007 yystacksize *= 2;
3008 if (YYMAXDEPTH < yystacksize)
3009 yystacksize = YYMAXDEPTH;
3010
3011 {
3012 yytype_int16 *yyss1 = yyss;
3013 union yyalloc *yyptr =
3014 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3015 if (! yyptr)
3016 goto yyexhaustedlab;
3017 YYSTACK_RELOCATE (yyss_alloc, yyss);
3018 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3019 # undef YYSTACK_RELOCATE
3020 if (yyss1 != yyssa)
3021 YYSTACK_FREE (yyss1);
3022 }
3023 # endif
3024 #endif /* no yyoverflow */
3025
3026 yyssp = yyss + yysize - 1;
3027 yyvsp = yyvs + yysize - 1;
3028
3029 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3030 (unsigned long int) yystacksize));
3031
3032 if (yyss + yystacksize - 1 <= yyssp)
3033 YYABORT;
3034 }
3035
3036 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3037
3038 if (yystate == YYFINAL)
3039 YYACCEPT;
3040
3041 goto yybackup;
3042
3043 /*-----------.
3044 | yybackup. |
3045 `-----------*/
3046 yybackup:
3047
3048 /* Do appropriate processing given the current state. Read a
3049 lookahead token if we need one and don't already have one. */
3050
3051 /* First try to decide what to do without reference to lookahead token. */
3052 yyn = yypact[yystate];
3053 if (yypact_value_is_default (yyn))
3054 goto yydefault;
3055
3056 /* Not known => get a lookahead token if don't already have one. */
3057
3058 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3059 if (yychar == YYEMPTY)
3060 {
3061 YYDPRINTF ((stderr, "Reading a token: "));
3062 yychar = YYLEX;
3063 }
3064
3065 if (yychar <= YYEOF)
3066 {
3067 yychar = yytoken = YYEOF;
3068 YYDPRINTF ((stderr, "Now at end of input.\n"));
3069 }
3070 else
3071 {
3072 yytoken = YYTRANSLATE (yychar);
3073 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3074 }
3075
3076 /* If the proper action on seeing token YYTOKEN is to reduce or to
3077 detect an error, take that action. */
3078 yyn += yytoken;
3079 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3080 goto yydefault;
3081 yyn = yytable[yyn];
3082 if (yyn <= 0)
3083 {
3084 if (yytable_value_is_error (yyn))
3085 goto yyerrlab;
3086 yyn = -yyn;
3087 goto yyreduce;
3088 }
3089
3090 /* Count tokens shifted since error; after three, turn off error
3091 status. */
3092 if (yyerrstatus)
3093 yyerrstatus--;
3094
3095 /* Shift the lookahead token. */
3096 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3097
3098 /* Discard the shifted token. */
3099 yychar = YYEMPTY;
3100
3101 yystate = yyn;
3102 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3103 *++yyvsp = yylval;
3104 YY_IGNORE_MAYBE_UNINITIALIZED_END
3105
3106 goto yynewstate;
3107
3108
3109 /*-----------------------------------------------------------.
3110 | yydefault -- do the default action for the current state. |
3111 `-----------------------------------------------------------*/
3112 yydefault:
3113 yyn = yydefact[yystate];
3114 if (yyn == 0)
3115 goto yyerrlab;
3116 goto yyreduce;
3117
3118
3119 /*-----------------------------.
3120 | yyreduce -- Do a reduction. |
3121 `-----------------------------*/
3122 yyreduce:
3123 /* yyn is the number of a rule to reduce with. */
3124 yylen = yyr2[yyn];
3125
3126 /* If YYLEN is nonzero, implement the default value of the action:
3127 `$$ = $1'.
3128
3129 Otherwise, the following line sets YYVAL to garbage.
3130 This behavior is undocumented and Bison
3131 users should not rely upon it. Assigning to YYVAL
3132 unconditionally makes the parser a bit smaller, and it avoids a
3133 GCC warning that YYVAL may be used uninitialized. */
3134 yyval = yyvsp[1-yylen];
3135
3136
3137 YY_REDUCE_PRINT (yyn);
3138 switch (yyn)
3139 {
3140 case 26:
3141 /* Line 1813 of yacc.c */
3142 #line 359 "conf_parser.y"
3143 { (yyval.number) = 0; }
3144 break;
3145
3146 case 28:
3147 /* Line 1813 of yacc.c */
3148 #line 361 "conf_parser.y"
3149 {
3150 (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3151 }
3152 break;
3153
3154 case 29:
3155 /* Line 1813 of yacc.c */
3156 #line 365 "conf_parser.y"
3157 {
3158 (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3159 }
3160 break;
3161
3162 case 30:
3163 /* Line 1813 of yacc.c */
3164 #line 369 "conf_parser.y"
3165 {
3166 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3167 }
3168 break;
3169
3170 case 31:
3171 /* Line 1813 of yacc.c */
3172 #line 373 "conf_parser.y"
3173 {
3174 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3175 }
3176 break;
3177
3178 case 32:
3179 /* Line 1813 of yacc.c */
3180 #line 377 "conf_parser.y"
3181 {
3182 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3183 }
3184 break;
3185
3186 case 33:
3187 /* Line 1813 of yacc.c */
3188 #line 381 "conf_parser.y"
3189 {
3190 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3191 }
3192 break;
3193
3194 case 34:
3195 /* Line 1813 of yacc.c */
3196 #line 386 "conf_parser.y"
3197 { (yyval.number) = 0; }
3198 break;
3199
3200 case 36:
3201 /* Line 1813 of yacc.c */
3202 #line 387 "conf_parser.y"
3203 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3204 break;
3205
3206 case 37:
3207 /* Line 1813 of yacc.c */
3208 #line 388 "conf_parser.y"
3209 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3210 break;
3211
3212 case 38:
3213 /* Line 1813 of yacc.c */
3214 #line 389 "conf_parser.y"
3215 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3216 break;
3217
3218 case 39:
3219 /* Line 1813 of yacc.c */
3220 #line 390 "conf_parser.y"
3221 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3222 break;
3223
3224 case 46:
3225 /* Line 1813 of yacc.c */
3226 #line 404 "conf_parser.y"
3227 {
3228 if (conf_parser_ctx.pass == 2)
3229 add_conf_module(libio_basename(yylval.string));
3230 }
3231 break;
3232
3233 case 47:
3234 /* Line 1813 of yacc.c */
3235 #line 410 "conf_parser.y"
3236 {
3237 if (conf_parser_ctx.pass == 2)
3238 mod_add_path(yylval.string);
3239 }
3240 break;
3241
3242 case 71:
3243 /* Line 1813 of yacc.c */
3244 #line 435 "conf_parser.y"
3245 {
3246 #ifdef HAVE_LIBCRYPTO
3247 if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3248 SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
3249 #endif
3250 }
3251 break;
3252
3253 case 72:
3254 /* Line 1813 of yacc.c */
3255 #line 441 "conf_parser.y"
3256 {
3257 #ifdef HAVE_LIBCRYPTO
3258 if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3259 SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
3260 #endif
3261 }
3262 break;
3263
3264 case 75:
3265 /* Line 1813 of yacc.c */
3266 #line 450 "conf_parser.y"
3267 {
3268 #ifdef HAVE_LIBCRYPTO
3269 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3270 SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3271 #endif
3272 }
3273 break;
3274
3275 case 76:
3276 /* Line 1813 of yacc.c */
3277 #line 456 "conf_parser.y"
3278 {
3279 #ifdef HAVE_LIBCRYPTO
3280 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3281 SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3282 #endif
3283 }
3284 break;
3285
3286 case 77:
3287 /* Line 1813 of yacc.c */
3288 #line 464 "conf_parser.y"
3289 {
3290 #ifdef HAVE_LIBCRYPTO
3291 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3292 {
3293 if (!ServerInfo.rsa_private_key_file)
3294 {
3295 yyerror("No rsa_private_key_file specified, SSL disabled");
3296 break;
3297 }
3298
3299 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3300 SSL_FILETYPE_PEM) <= 0 ||
3301 SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
3302 SSL_FILETYPE_PEM) <= 0)
3303 {
3304 yyerror(ERR_lib_error_string(ERR_get_error()));
3305 break;
3306 }
3307
3308 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3309 SSL_FILETYPE_PEM) <= 0 ||
3310 SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3311 SSL_FILETYPE_PEM) <= 0)
3312 {
3313 yyerror(ERR_lib_error_string(ERR_get_error()));
3314 break;
3315 }
3316
3317 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3318 !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3319 {
3320 yyerror(ERR_lib_error_string(ERR_get_error()));
3321 break;
3322 }
3323 }
3324 #endif
3325 }
3326 break;
3327
3328 case 78:
3329 /* Line 1813 of yacc.c */
3330 #line 503 "conf_parser.y"
3331 {
3332 #ifdef HAVE_LIBCRYPTO
3333 if (conf_parser_ctx.pass == 1)
3334 {
3335 BIO *file;
3336
3337 if (ServerInfo.rsa_private_key)
3338 {
3339 RSA_free(ServerInfo.rsa_private_key);
3340 ServerInfo.rsa_private_key = NULL;
3341 }
3342
3343 if (ServerInfo.rsa_private_key_file)
3344 {
3345 MyFree(ServerInfo.rsa_private_key_file);
3346 ServerInfo.rsa_private_key_file = NULL;
3347 }
3348
3349 DupString(ServerInfo.rsa_private_key_file, yylval.string);
3350
3351 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3352 {
3353 yyerror("File open failed, ignoring");
3354 break;
3355 }
3356
3357 ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3358
3359 BIO_set_close(file, BIO_CLOSE);
3360 BIO_free(file);
3361
3362 if (ServerInfo.rsa_private_key == NULL)
3363 {
3364 yyerror("Couldn't extract key, ignoring");
3365 break;
3366 }
3367
3368 if (!RSA_check_key(ServerInfo.rsa_private_key))
3369 {
3370 RSA_free(ServerInfo.rsa_private_key);
3371 ServerInfo.rsa_private_key = NULL;
3372
3373 yyerror("Invalid key, ignoring");
3374 break;
3375 }
3376
3377 /* require 2048 bit (256 byte) key */
3378 if (RSA_size(ServerInfo.rsa_private_key) != 256)
3379 {
3380 RSA_free(ServerInfo.rsa_private_key);
3381 ServerInfo.rsa_private_key = NULL;
3382
3383 yyerror("Not a 2048 bit key, ignoring");
3384 }
3385 }
3386 #endif
3387 }
3388 break;
3389
3390 case 79:
3391 /* Line 1813 of yacc.c */
3392 #line 562 "conf_parser.y"
3393 {
3394 /* TBD - XXX: error reporting */
3395 #ifdef HAVE_LIBCRYPTO
3396 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3397 {
3398 BIO *file = BIO_new_file(yylval.string, "r");
3399
3400 if (file)
3401 {
3402 DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3403
3404 BIO_free(file);
3405
3406 if (dh)
3407 {
3408 if (DH_size(dh) < 128)
3409 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3410 else
3411 SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3412
3413 DH_free(dh);
3414 }
3415 }
3416 }
3417 #endif
3418 }
3419 break;
3420
3421 case 80:
3422 /* Line 1813 of yacc.c */
3423 #line 590 "conf_parser.y"
3424 {
3425 #ifdef HAVE_LIBCRYPTO
3426 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3427 SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3428 #endif
3429 }
3430 break;
3431
3432 case 81:
3433 /* Line 1813 of yacc.c */
3434 #line 598 "conf_parser.y"
3435 {
3436 /* this isn't rehashable */
3437 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3438 {
3439 if (valid_servname(yylval.string))
3440 DupString(ServerInfo.name, yylval.string);
3441 else
3442 {
3443 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3444 exit(0);
3445 }
3446 }
3447 }
3448 break;
3449
3450 case 82:
3451 /* Line 1813 of yacc.c */
3452 #line 613 "conf_parser.y"
3453 {
3454 /* this isn't rehashable */
3455 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3456 {
3457 if (valid_sid(yylval.string))
3458 DupString(ServerInfo.sid, yylval.string);
3459 else
3460 {
3461 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3462 exit(0);
3463 }
3464 }
3465 }
3466 break;
3467
3468 case 83:
3469 /* Line 1813 of yacc.c */
3470 #line 628 "conf_parser.y"
3471 {
3472 if (conf_parser_ctx.pass == 2)
3473 {
3474 MyFree(ServerInfo.description);
3475 DupString(ServerInfo.description,yylval.string);
3476 }
3477 }
3478 break;
3479
3480 case 84:
3481 /* Line 1813 of yacc.c */
3482 #line 637 "conf_parser.y"
3483 {
3484 if (conf_parser_ctx.pass == 2)
3485 {
3486 char *p;
3487
3488 if ((p = strchr(yylval.string, ' ')) != NULL)
3489 p = '\0';
3490
3491 MyFree(ServerInfo.network_name);
3492 DupString(ServerInfo.network_name, yylval.string);
3493 }
3494 }
3495 break;
3496
3497 case 85:
3498 /* Line 1813 of yacc.c */
3499 #line 651 "conf_parser.y"
3500 {
3501 if (conf_parser_ctx.pass == 2)
3502 {
3503 MyFree(ServerInfo.network_desc);
3504 DupString(ServerInfo.network_desc, yylval.string);
3505 }
3506 }
3507 break;
3508
3509 case 86:
3510 /* Line 1813 of yacc.c */
3511 #line 660 "conf_parser.y"
3512 {
3513 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3514 {
3515 struct addrinfo hints, *res;
3516
3517 memset(&hints, 0, sizeof(hints));
3518
3519 hints.ai_family = AF_UNSPEC;
3520 hints.ai_socktype = SOCK_STREAM;
3521 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3522
3523 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3524 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3525 else
3526 {
3527 assert(res != NULL);
3528
3529 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3530 ServerInfo.ip.ss.ss_family = res->ai_family;
3531 ServerInfo.ip.ss_len = res->ai_addrlen;
3532 freeaddrinfo(res);
3533
3534 ServerInfo.specific_ipv4_vhost = 1;
3535 }
3536 }
3537 }
3538 break;
3539
3540 case 87:
3541 /* Line 1813 of yacc.c */
3542 #line 688 "conf_parser.y"
3543 {
3544 #ifdef IPV6
3545 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3546 {
3547 struct addrinfo hints, *res;
3548
3549 memset(&hints, 0, sizeof(hints));
3550
3551 hints.ai_family = AF_UNSPEC;
3552 hints.ai_socktype = SOCK_STREAM;
3553 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3554
3555 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3556 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3557 else
3558 {
3559 assert(res != NULL);
3560
3561 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3562 ServerInfo.ip6.ss.ss_family = res->ai_family;
3563 ServerInfo.ip6.ss_len = res->ai_addrlen;
3564 freeaddrinfo(res);
3565
3566 ServerInfo.specific_ipv6_vhost = 1;
3567 }
3568 }
3569 #endif
3570 }
3571 break;
3572
3573 case 88:
3574 /* Line 1813 of yacc.c */
3575 #line 718 "conf_parser.y"
3576 {
3577 if (conf_parser_ctx.pass == 2)
3578 {
3579 recalc_fdlimit(NULL);
3580
3581 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3582 {
3583 char buf[IRCD_BUFSIZE];
3584 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3585 yyerror(buf);
3586 }
3587 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3588 {
3589 char buf[IRCD_BUFSIZE];
3590 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3591 yyerror(buf);
3592 }
3593 else
3594 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3595 }
3596 }
3597 break;
3598
3599 case 89:
3600 /* Line 1813 of yacc.c */
3601 #line 741 "conf_parser.y"
3602 {
3603 if (conf_parser_ctx.pass == 2)
3604 ServerInfo.hub = yylval.number;
3605 }
3606 break;
3607
3608 case 97:
3609 /* Line 1813 of yacc.c */
3610 #line 756 "conf_parser.y"
3611 {
3612 if (conf_parser_ctx.pass == 2)
3613 {
3614 MyFree(AdminInfo.name);
3615 DupString(AdminInfo.name, yylval.string);
3616 }
3617 }
3618 break;
3619
3620 case 98:
3621 /* Line 1813 of yacc.c */
3622 #line 765 "conf_parser.y"
3623 {
3624 if (conf_parser_ctx.pass == 2)
3625 {
3626 MyFree(AdminInfo.email);
3627 DupString(AdminInfo.email, yylval.string);
3628 }
3629 }
3630 break;
3631
3632 case 99:
3633 /* Line 1813 of yacc.c */
3634 #line 774 "conf_parser.y"
3635 {
3636 if (conf_parser_ctx.pass == 2)
3637 {
3638 MyFree(AdminInfo.description);
3639 DupString(AdminInfo.description, yylval.string);
3640 }
3641 }
3642 break;
3643
3644 case 106:
3645 /* Line 1813 of yacc.c */
3646 #line 792 "conf_parser.y"
3647 {
3648 if (conf_parser_ctx.pass == 2)
3649 ConfigLoggingEntry.use_logging = yylval.number;
3650 }
3651 break;
3652
3653 case 107:
3654 /* Line 1813 of yacc.c */
3655 #line 798 "conf_parser.y"
3656 {
3657 lfile[0] = '\0';
3658 ltype = 0;
3659 lsize = 0;
3660 }
3661 break;
3662
3663 case 108:
3664 /* Line 1813 of yacc.c */
3665 #line 803 "conf_parser.y"
3666 {
3667 if (conf_parser_ctx.pass == 2 && ltype > 0)
3668 log_add_file(ltype, lsize, lfile);
3669 }
3670 break;
3671
3672 case 115:
3673 /* Line 1813 of yacc.c */
3674 #line 815 "conf_parser.y"
3675 {
3676 strlcpy(lfile, yylval.string, sizeof(lfile));
3677 }
3678 break;
3679
3680 case 116:
3681 /* Line 1813 of yacc.c */
3682 #line 820 "conf_parser.y"
3683 {
3684 lsize = (yyvsp[(3) - (4)].number);
3685 }
3686 break;
3687
3688 case 117:
3689 /* Line 1813 of yacc.c */
3690 #line 823 "conf_parser.y"
3691 {
3692 lsize = 0;
3693 }
3694 break;
3695
3696 case 118:
3697 /* Line 1813 of yacc.c */
3698 #line 828 "conf_parser.y"
3699 {
3700 if (conf_parser_ctx.pass == 2)
3701 ltype = 0;
3702 }
3703 break;
3704
3705 case 122:
3706 /* Line 1813 of yacc.c */
3707 #line 835 "conf_parser.y"
3708 {
3709 if (conf_parser_ctx.pass == 2)
3710 ltype = LOG_TYPE_USER;
3711 }
3712 break;
3713
3714 case 123:
3715 /* Line 1813 of yacc.c */
3716 #line 839 "conf_parser.y"
3717 {
3718 if (conf_parser_ctx.pass == 2)
3719 ltype = LOG_TYPE_OPER;
3720 }
3721 break;
3722
3723 case 124:
3724 /* Line 1813 of yacc.c */
3725 #line 843 "conf_parser.y"
3726 {
3727 if (conf_parser_ctx.pass == 2)
3728 ltype = LOG_TYPE_GLINE;
3729 }
3730 break;
3731
3732 case 125:
3733 /* Line 1813 of yacc.c */
3734 #line 847 "conf_parser.y"
3735 {
3736 if (conf_parser_ctx.pass == 2)
3737 ltype = LOG_TYPE_DLINE;
3738 }
3739 break;
3740
3741 case 126:
3742 /* Line 1813 of yacc.c */
3743 #line 851 "conf_parser.y"
3744 {
3745 if (conf_parser_ctx.pass == 2)
3746 ltype = LOG_TYPE_KLINE;
3747 }
3748 break;
3749
3750 case 127:
3751 /* Line 1813 of yacc.c */
3752 #line 855 "conf_parser.y"
3753 {
3754 if (conf_parser_ctx.pass == 2)
3755 ltype = LOG_TYPE_KILL;
3756 }
3757 break;
3758
3759 case 128:
3760 /* Line 1813 of yacc.c */
3761 #line 859 "conf_parser.y"
3762 {
3763 if (conf_parser_ctx.pass == 2)
3764 ltype = LOG_TYPE_DEBUG;
3765 }
3766 break;
3767
3768 case 129:
3769 /* Line 1813 of yacc.c */
3770 #line 869 "conf_parser.y"
3771 {
3772 if (conf_parser_ctx.pass == 2)
3773 {
3774 yy_conf = make_conf_item(OPER_TYPE);
3775 yy_aconf = map_to_conf(yy_conf);
3776 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
3777 }
3778 else
3779 {
3780 MyFree(class_name);
3781 class_name = NULL;
3782 }
3783 }
3784 break;
3785
3786 case 130:
3787 /* Line 1813 of yacc.c */
3788 #line 882 "conf_parser.y"
3789 {
3790 if (conf_parser_ctx.pass == 2)
3791 {
3792 struct CollectItem *yy_tmp;
3793 dlink_node *ptr;
3794 dlink_node *next_ptr;
3795
3796 conf_add_class_to_conf(yy_conf, class_name);
3797
3798 /* Now, make sure there is a copy of the "base" given oper
3799 * block in each of the collected copies
3800 */
3801
3802 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3803 {
3804 struct AccessItem *new_aconf;
3805 struct ConfItem *new_conf;
3806 yy_tmp = ptr->data;
3807
3808 new_conf = make_conf_item(OPER_TYPE);
3809 new_aconf = (struct AccessItem *)map_to_conf(new_conf);
3810
3811 new_aconf->flags = yy_aconf->flags;
3812
3813 if (yy_conf->name != NULL)
3814 DupString(new_conf->name, yy_conf->name);
3815 if (yy_tmp->user != NULL)
3816 DupString(new_aconf->user, yy_tmp->user);
3817 else
3818 DupString(new_aconf->user, "*");
3819 if (yy_tmp->host != NULL)
3820 DupString(new_aconf->host, yy_tmp->host);
3821 else
3822 DupString(new_aconf->host, "*");
3823
3824 new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->addr,
3825 &new_aconf->bits);
3826
3827 conf_add_class_to_conf(new_conf, class_name);
3828 if (yy_aconf->passwd != NULL)
3829 DupString(new_aconf->passwd, yy_aconf->passwd);
3830
3831 new_aconf->port = yy_aconf->port;
3832 #ifdef HAVE_LIBCRYPTO
3833 if (yy_aconf->rsa_public_key_file != NULL)
3834 {
3835 BIO *file;
3836
3837 DupString(new_aconf->rsa_public_key_file,
3838 yy_aconf->rsa_public_key_file);
3839
3840 file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
3841 new_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file,
3842 NULL, 0, NULL);
3843 BIO_set_close(file, BIO_CLOSE);
3844 BIO_free(file);
3845 }
3846 #endif
3847
3848 #ifdef HAVE_LIBCRYPTO
3849 if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
3850 && yy_tmp->host)
3851 #else
3852 if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
3853 #endif
3854 {
3855 conf_add_class_to_conf(new_conf, class_name);
3856 if (yy_tmp->name != NULL)
3857 DupString(new_conf->name, yy_tmp->name);
3858 }
3859
3860 dlinkDelete(&yy_tmp->node, &col_conf_list);
3861 free_collect_item(yy_tmp);
3862 }
3863
3864 yy_conf = NULL;
3865 yy_aconf = NULL;
3866
3867
3868 MyFree(class_name);
3869 class_name = NULL;
3870 }
3871 }
3872 break;
3873
3874 case 142:
3875 /* Line 1813 of yacc.c */
3876 #line 972 "conf_parser.y"
3877 {
3878 if (conf_parser_ctx.pass == 2)
3879 {
3880 MyFree(yy_conf->name);
3881 DupString(yy_conf->name, yylval.string);
3882 }
3883 }
3884 break;
3885
3886 case 143:
3887 /* Line 1813 of yacc.c */
3888 #line 981 "conf_parser.y"
3889 {
3890 if (conf_parser_ctx.pass == 2)
3891 {
3892 struct split_nuh_item nuh;
3893
3894 nuh.nuhmask = yylval.string;
3895 nuh.nickptr = NULL;
3896 nuh.userptr = userbuf;
3897 nuh.hostptr = hostbuf;
3898
3899 nuh.nicksize = 0;
3900 nuh.usersize = sizeof(userbuf);
3901 nuh.hostsize = sizeof(hostbuf);
3902
3903 split_nuh(&nuh);
3904
3905 if (yy_aconf->user == NULL)
3906 {
3907 DupString(yy_aconf->user, userbuf);
3908 DupString(yy_aconf->host, hostbuf);
3909
3910 yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->addr,
3911 &yy_aconf->bits);
3912 }
3913 else
3914 {
3915 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
3916
3917 DupString(yy_tmp->user, userbuf);
3918 DupString(yy_tmp->host, hostbuf);
3919
3920 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
3921 }
3922 }
3923 }
3924 break;
3925
3926 case 144:
3927 /* Line 1813 of yacc.c */
3928 #line 1018 "conf_parser.y"
3929 {
3930 if (conf_parser_ctx.pass == 2)
3931 {
3932 if (yy_aconf->passwd != NULL)
3933 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
3934
3935 MyFree(yy_aconf->passwd);
3936 DupString(yy_aconf->passwd, yylval.string);
3937 }
3938 }
3939 break;
3940
3941 case 145:
3942 /* Line 1813 of yacc.c */
3943 #line 1030 "conf_parser.y"
3944 {
3945 if (conf_parser_ctx.pass == 2)
3946 {
3947 if (yylval.number)
3948 SetConfEncrypted(yy_aconf);
3949 else
3950 ClearConfEncrypted(yy_aconf);
3951 }
3952 }
3953 break;
3954
3955 case 146:
3956 /* Line 1813 of yacc.c */
3957 #line 1041 "conf_parser.y"
3958 {
3959 #ifdef HAVE_LIBCRYPTO
3960 if (conf_parser_ctx.pass == 2)
3961 {
3962 BIO *file;
3963
3964 if (yy_aconf->rsa_public_key != NULL)
3965 {
3966 RSA_free(yy_aconf->rsa_public_key);
3967 yy_aconf->rsa_public_key = NULL;
3968 }
3969
3970 if (yy_aconf->rsa_public_key_file != NULL)
3971 {
3972 MyFree(yy_aconf->rsa_public_key_file);
3973 yy_aconf->rsa_public_key_file = NULL;
3974 }
3975
3976 DupString(yy_aconf->rsa_public_key_file, yylval.string);
3977 file = BIO_new_file(yylval.string, "r");
3978
3979 if (file == NULL)
3980 {
3981 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3982 break;
3983 }
3984
3985 yy_aconf->rsa_public_key = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
3986
3987 if (yy_aconf->rsa_public_key == NULL)
3988 {
3989 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3990 break;
3991 }
3992
3993 BIO_set_close(file, BIO_CLOSE);
3994 BIO_free(file);
3995 }
3996 #endif /* HAVE_LIBCRYPTO */
3997 }
3998 break;
3999
4000 case 147:
4001 /* Line 1813 of yacc.c */
4002 #line 1083 "conf_parser.y"
4003 {
4004 if (conf_parser_ctx.pass == 2)
4005 {
4006 MyFree(class_name);
4007 DupString(class_name, yylval.string);
4008 }
4009 }
4010 break;
4011
4012 case 148:
4013 /* Line 1813 of yacc.c */
4014 #line 1092 "conf_parser.y"
4015 {
4016 if (conf_parser_ctx.pass == 2)
4017 yy_aconf->modes = 0;
4018 }
4019 break;
4020
4021 case 152:
4022 /* Line 1813 of yacc.c */
4023 #line 1099 "conf_parser.y"
4024 {
4025 if (conf_parser_ctx.pass == 2)
4026 yy_aconf->modes |= UMODE_BOTS;
4027 }
4028 break;
4029
4030 case 153:
4031 /* Line 1813 of yacc.c */
4032 #line 1103 "conf_parser.y"
4033 {
4034 if (conf_parser_ctx.pass == 2)
4035 yy_aconf->modes |= UMODE_CCONN;
4036 }
4037 break;
4038
4039 case 154:
4040 /* Line 1813 of yacc.c */
4041 #line 1107 "conf_parser.y"
4042 {
4043 if (conf_parser_ctx.pass == 2)
4044 yy_aconf->modes |= UMODE_CCONN_FULL;
4045 }
4046 break;
4047
4048 case 155:
4049 /* Line 1813 of yacc.c */
4050 #line 1111 "conf_parser.y"
4051 {
4052 if (conf_parser_ctx.pass == 2)
4053 yy_aconf->modes |= UMODE_DEAF;
4054 }
4055 break;
4056
4057 case 156:
4058 /* Line 1813 of yacc.c */
4059 #line 1115 "conf_parser.y"
4060 {
4061 if (conf_parser_ctx.pass == 2)
4062 yy_aconf->modes |= UMODE_DEBUG;
4063 }
4064 break;
4065
4066 case 157:
4067 /* Line 1813 of yacc.c */
4068 #line 1119 "conf_parser.y"
4069 {
4070 if (conf_parser_ctx.pass == 2)
4071 yy_aconf->modes |= UMODE_FULL;
4072 }
4073 break;
4074
4075 case 158:
4076 /* Line 1813 of yacc.c */
4077 #line 1123 "conf_parser.y"
4078 {
4079 if (conf_parser_ctx.pass == 2)
4080 yy_aconf->modes |= UMODE_HIDDEN;
4081 }
4082 break;
4083
4084 case 159:
4085 /* Line 1813 of yacc.c */
4086 #line 1127 "conf_parser.y"
4087 {
4088 if (conf_parser_ctx.pass == 2)
4089 yy_aconf->modes |= UMODE_SKILL;
4090 }
4091 break;
4092
4093 case 160:
4094 /* Line 1813 of yacc.c */
4095 #line 1131 "conf_parser.y"
4096 {
4097 if (conf_parser_ctx.pass == 2)
4098 yy_aconf->modes |= UMODE_NCHANGE;
4099 }
4100 break;
4101
4102 case 161:
4103 /* Line 1813 of yacc.c */
4104 #line 1135 "conf_parser.y"
4105 {
4106 if (conf_parser_ctx.pass == 2)
4107 yy_aconf->modes |= UMODE_REJ;
4108 }
4109 break;
4110
4111 case 162:
4112 /* Line 1813 of yacc.c */
4113 #line 1139 "conf_parser.y"
4114 {
4115 if (conf_parser_ctx.pass == 2)
4116 yy_aconf->modes |= UMODE_UNAUTH;
4117 }
4118 break;
4119
4120 case 163:
4121 /* Line 1813 of yacc.c */
4122 #line 1143 "conf_parser.y"
4123 {
4124 if (conf_parser_ctx.pass == 2)
4125 yy_aconf->modes |= UMODE_SPY;
4126 }
4127 break;
4128
4129 case 164:
4130 /* Line 1813 of yacc.c */
4131 #line 1147 "conf_parser.y"
4132 {
4133 if (conf_parser_ctx.pass == 2)
4134 yy_aconf->modes |= UMODE_EXTERNAL;
4135 }
4136 break;
4137
4138 case 165:
4139 /* Line 1813 of yacc.c */
4140 #line 1151 "conf_parser.y"
4141 {
4142 if (conf_parser_ctx.pass == 2)
4143 yy_aconf->modes |= UMODE_OPERWALL;
4144 }
4145 break;
4146
4147 case 166:
4148 /* Line 1813 of yacc.c */
4149 #line 1155 "conf_parser.y"
4150 {
4151 if (conf_parser_ctx.pass == 2)
4152 yy_aconf->modes |= UMODE_SERVNOTICE;
4153 }
4154 break;
4155
4156 case 167:
4157 /* Line 1813 of yacc.c */
4158 #line 1159 "conf_parser.y"
4159 {
4160 if (conf_parser_ctx.pass == 2)
4161 yy_aconf->modes |= UMODE_INVISIBLE;
4162 }
4163 break;
4164
4165 case 168:
4166 /* Line 1813 of yacc.c */
4167 #line 1163 "conf_parser.y"
4168 {
4169 if (conf_parser_ctx.pass == 2)
4170 yy_aconf->modes |= UMODE_WALLOP;
4171 }
4172 break;
4173
4174 case 169:
4175 /* Line 1813 of yacc.c */
4176 #line 1167 "conf_parser.y"
4177 {
4178 if (conf_parser_ctx.pass == 2)
4179 yy_aconf->modes |= UMODE_SOFTCALLERID;
4180 }
4181 break;
4182
4183 case 170:
4184 /* Line 1813 of yacc.c */
4185 #line 1171 "conf_parser.y"
4186 {
4187 if (conf_parser_ctx.pass == 2)
4188 yy_aconf->modes |= UMODE_CALLERID;
4189 }
4190 break;
4191
4192 case 171:
4193 /* Line 1813 of yacc.c */
4194 #line 1175 "conf_parser.y"
4195 {
4196 if (conf_parser_ctx.pass == 2)
4197 yy_aconf->modes |= UMODE_LOCOPS;
4198 }
4199 break;
4200
4201 case 172:
4202 /* Line 1813 of yacc.c */
4203 #line 1181 "conf_parser.y"
4204 {
4205 if (conf_parser_ctx.pass == 2)
4206 yy_aconf->port = 0;
4207 }
4208 break;
4209
4210 case 176:
4211 /* Line 1813 of yacc.c */
4212 #line 1188 "conf_parser.y"
4213 {
4214 if (conf_parser_ctx.pass == 2)
4215 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4216 }
4217 break;
4218
4219 case 177:
4220 /* Line 1813 of yacc.c */
4221 #line 1192 "conf_parser.y"
4222 {
4223 if (conf_parser_ctx.pass == 2)
4224 yy_aconf->port |= OPER_FLAG_REMOTE;
4225 }
4226 break;
4227
4228 case 178:
4229 /* Line 1813 of yacc.c */
4230 #line 1196 "conf_parser.y"
4231 {
4232 if (conf_parser_ctx.pass == 2)
4233 yy_aconf->port |= OPER_FLAG_K;
4234 }
4235 break;
4236
4237 case 179:
4238 /* Line 1813 of yacc.c */
4239 #line 1200 "conf_parser.y"
4240 {
4241 if (conf_parser_ctx.pass == 2)
4242 yy_aconf->port |= OPER_FLAG_UNKLINE;
4243 }
4244 break;
4245
4246 case 180:
4247 /* Line 1813 of yacc.c */
4248 #line 1204 "conf_parser.y"
4249 {
4250 if (conf_parser_ctx.pass == 2)
4251 yy_aconf->port |= OPER_FLAG_DLINE;
4252 }
4253 break;
4254
4255 case 181:
4256 /* Line 1813 of yacc.c */
4257 #line 1208 "conf_parser.y"
4258 {
4259 if (conf_parser_ctx.pass == 2)
4260 yy_aconf->port |= OPER_FLAG_UNDLINE;
4261 }
4262 break;
4263
4264 case 182:
4265 /* Line 1813 of yacc.c */
4266 #line 1212 "conf_parser.y"
4267 {
4268 if (conf_parser_ctx.pass == 2)
4269 yy_aconf->port |= OPER_FLAG_X;
4270 }
4271 break;
4272
4273 case 183:
4274 /* Line 1813 of yacc.c */
4275 #line 1216 "conf_parser.y"
4276 {
4277 if (conf_parser_ctx.pass == 2)
4278 yy_aconf->port |= OPER_FLAG_GLINE;
4279 }
4280 break;
4281
4282 case 184:
4283 /* Line 1813 of yacc.c */
4284 #line 1220 "conf_parser.y"
4285 {
4286 if (conf_parser_ctx.pass == 2)
4287 yy_aconf->port |= OPER_FLAG_DIE;
4288 }
4289 break;
4290
4291 case 185:
4292 /* Line 1813 of yacc.c */
4293 #line 1224 "conf_parser.y"
4294 {
4295 if (conf_parser_ctx.pass == 2)
4296 yy_aconf->port |= OPER_FLAG_RESTART;
4297 }
4298 break;
4299
4300 case 186:
4301 /* Line 1813 of yacc.c */
4302 #line 1228 "conf_parser.y"
4303 {
4304 if (conf_parser_ctx.pass == 2)
4305 yy_aconf->port |= OPER_FLAG_REHASH;
4306 }
4307 break;
4308
4309 case 187:
4310 /* Line 1813 of yacc.c */
4311 #line 1232 "conf_parser.y"
4312 {
4313 if (conf_parser_ctx.pass == 2)
4314 yy_aconf->port |= OPER_FLAG_ADMIN;
4315 }
4316 break;
4317
4318 case 188:
4319 /* Line 1813 of yacc.c */
4320 #line 1236 "conf_parser.y"
4321 {
4322 if (conf_parser_ctx.pass == 2)
4323 yy_aconf->port |= OPER_FLAG_N;
4324 }
4325 break;
4326
4327 case 189:
4328 /* Line 1813 of yacc.c */
4329 #line 1240 "conf_parser.y"
4330 {
4331 if (conf_parser_ctx.pass == 2)
4332 yy_aconf->port |= OPER_FLAG_OPERWALL;
4333 }
4334 break;
4335
4336 case 190:
4337 /* Line 1813 of yacc.c */
4338 #line 1244 "conf_parser.y"
4339 {
4340 if (conf_parser_ctx.pass == 2)
4341 yy_aconf->port |= OPER_FLAG_GLOBOPS;
4342 }
4343 break;
4344
4345 case 191:
4346 /* Line 1813 of yacc.c */
4347 #line 1248 "conf_parser.y"
4348 {
4349 if (conf_parser_ctx.pass == 2)
4350 yy_aconf->port |= OPER_FLAG_OPER_SPY;
4351 }
4352 break;
4353
4354 case 192:
4355 /* Line 1813 of yacc.c */
4356 #line 1252 "conf_parser.y"
4357 {
4358 if (conf_parser_ctx.pass == 2)
4359 yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4360 }
4361 break;
4362
4363 case 193:
4364 /* Line 1813 of yacc.c */
4365 #line 1256 "conf_parser.y"
4366 {
4367 if (conf_parser_ctx.pass == 2)
4368 yy_aconf->port |= OPER_FLAG_SET;
4369 }
4370 break;
4371
4372 case 194:
4373 /* Line 1813 of yacc.c */
4374 #line 1260 "conf_parser.y"
4375 {
4376 if (conf_parser_ctx.pass == 2)
4377 yy_aconf->port |= OPER_FLAG_MODULE;
4378 }
4379 break;
4380
4381 case 195:
4382 /* Line 1813 of yacc.c */
4383 #line 1270 "conf_parser.y"
4384 {
4385 if (conf_parser_ctx.pass == 1)
4386 {
4387 yy_conf = make_conf_item(CLASS_TYPE);
4388 yy_class = map_to_conf(yy_conf);
4389 }
4390 }
4391 break;
4392
4393 case 196:
4394 /* Line 1813 of yacc.c */
4395 #line 1277 "conf_parser.y"
4396 {
4397 if (conf_parser_ctx.pass == 1)
4398 {
4399 struct ConfItem *cconf = NULL;
4400 struct ClassItem *class = NULL;
4401
4402 if (yy_class_name == NULL)
4403 delete_conf_item(yy_conf);
4404 else
4405 {
4406 cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
4407
4408 if (cconf != NULL) /* The class existed already */
4409 {
4410 int user_count = 0;
4411
4412 rebuild_cidr_class(cconf, yy_class);
4413
4414 class = map_to_conf(cconf);
4415
4416 user_count = class->curr_user_count;
4417 memcpy(class, yy_class, sizeof(*class));
4418 class->curr_user_count = user_count;
4419 class->active = 1;
4420
4421 delete_conf_item(yy_conf);
4422
4423 MyFree(cconf->name); /* Allows case change of class name */
4424 cconf->name = yy_class_name;
4425 }
4426 else /* Brand new class */
4427 {
4428 MyFree(yy_conf->name); /* just in case it was allocated */
4429 yy_conf->name = yy_class_name;
4430 yy_class->active = 1;
4431 }
4432 }
4433
4434 yy_class_name = NULL;
4435 }
4436 }
4437 break;
4438
4439 case 214:
4440 /* Line 1813 of yacc.c */
4441 #line 1335 "conf_parser.y"
4442 {
4443 if (conf_parser_ctx.pass == 1)
4444 {
4445 MyFree(yy_class_name);
4446 DupString(yy_class_name, yylval.string);
4447 }
4448 }
4449 break;
4450
4451 case 215:
4452 /* Line 1813 of yacc.c */
4453 #line 1344 "conf_parser.y"
4454 {
4455 if (conf_parser_ctx.pass == 1)
4456 yy_class->ping_freq = (yyvsp[(3) - (4)].number);
4457 }
4458 break;
4459
4460 case 216:
4461 /* Line 1813 of yacc.c */
4462 #line 1350 "conf_parser.y"
4463 {
4464 if (conf_parser_ctx.pass == 1)
4465 yy_class->ping_warning = (yyvsp[(3) - (4)].number);
4466 }
4467 break;
4468
4469 case 217:
4470 /* Line 1813 of yacc.c */
4471 #line 1356 "conf_parser.y"
4472 {
4473 if (conf_parser_ctx.pass == 1)
4474 yy_class->max_perip = (yyvsp[(3) - (4)].number);
4475 }
4476 break;
4477
4478 case 218:
4479 /* Line 1813 of yacc.c */
4480 #line 1362 "conf_parser.y"
4481 {
4482 if (conf_parser_ctx.pass == 1)
4483 yy_class->con_freq = (yyvsp[(3) - (4)].number);
4484 }
4485 break;
4486
4487 case 219:
4488 /* Line 1813 of yacc.c */
4489 #line 1368 "conf_parser.y"
4490 {
4491 if (conf_parser_ctx.pass == 1)
4492 yy_class->max_total = (yyvsp[(3) - (4)].number);
4493 }
4494 break;
4495
4496 case 220:
4497 /* Line 1813 of yacc.c */
4498 #line 1374 "conf_parser.y"
4499 {
4500 if (conf_parser_ctx.pass == 1)
4501 yy_class->max_global = (yyvsp[(3) - (4)].number);
4502 }
4503 break;
4504
4505 case 221:
4506 /* Line 1813 of yacc.c */
4507 #line 1380 "conf_parser.y"
4508 {
4509 if (conf_parser_ctx.pass == 1)
4510 yy_class->max_local = (yyvsp[(3) - (4)].number);
4511 }
4512 break;
4513
4514 case 222:
4515 /* Line 1813 of yacc.c */
4516 #line 1386 "conf_parser.y"
4517 {
4518 if (conf_parser_ctx.pass == 1)
4519 yy_class->max_ident = (yyvsp[(3) - (4)].number);
4520 }
4521 break;
4522
4523 case 223:
4524 /* Line 1813 of yacc.c */
4525 #line 1392 "conf_parser.y"
4526 {
4527 if (conf_parser_ctx.pass == 1)
4528 yy_class->max_sendq = (yyvsp[(3) - (4)].number);
4529 }
4530 break;
4531
4532 case 224:
4533 /* Line 1813 of yacc.c */
4534 #line 1398 "conf_parser.y"
4535 {
4536 if (conf_parser_ctx.pass == 1)
4537 if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4538 yy_class->max_recvq = (yyvsp[(3) - (4)].number);
4539 }
4540 break;
4541
4542 case 225:
4543 /* Line 1813 of yacc.c */
4544 #line 1405 "conf_parser.y"
4545 {
4546 if (conf_parser_ctx.pass == 1)
4547 yy_class->cidr_bitlen_ipv4 = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4548 }
4549 break;
4550
4551 case 226:
4552 /* Line 1813 of yacc.c */
4553 #line 1411 "conf_parser.y"
4554 {
4555 if (conf_parser_ctx.pass == 1)
4556 yy_class->cidr_bitlen_ipv6 = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4557 }
4558 break;
4559
4560 case 227:
4561 /* Line 1813 of yacc.c */
4562 #line 1417 "conf_parser.y"
4563 {
4564 if (conf_parser_ctx.pass == 1)
4565 yy_class->number_per_cidr = (yyvsp[(3) - (4)].number);
4566 }
4567 break;
4568
4569 case 228:
4570 /* Line 1813 of yacc.c */
4571 #line 1426 "conf_parser.y"
4572 {
4573 if (conf_parser_ctx.pass == 2)
4574 {
4575 listener_address = NULL;
4576 listener_flags = 0;
4577 }
4578 }
4579 break;
4580
4581 case 229:
4582 /* Line 1813 of yacc.c */
4583 #line 1433 "conf_parser.y"
4584 {
4585 if (conf_parser_ctx.pass == 2)
4586 {
4587 MyFree(listener_address);
4588 listener_address = NULL;
4589 }
4590 }
4591 break;
4592
4593 case 230:
4594 /* Line 1813 of yacc.c */
4595 #line 1442 "conf_parser.y"
4596 {
4597 listener_flags = 0;
4598 }
4599 break;
4600
4601 case 234:
4602 /* Line 1813 of yacc.c */
4603 #line 1448 "conf_parser.y"
4604 {
4605 if (conf_parser_ctx.pass == 2)
4606 listener_flags |= LISTENER_SSL;
4607 }
4608 break;
4609
4610 case 235:
4611 /* Line 1813 of yacc.c */
4612 #line 1452 "conf_parser.y"
4613 {
4614 if (conf_parser_ctx.pass == 2)
4615 listener_flags |= LISTENER_HIDDEN;
4616 }
4617 break;
4618
4619 case 236:
4620 /* Line 1813 of yacc.c */
4621 #line 1456 "conf_parser.y"
4622 {
4623 if (conf_parser_ctx.pass == 2)
4624 listener_flags |= LISTENER_SERVER;
4625 }
4626 break;
4627
4628 case 244:
4629 /* Line 1813 of yacc.c */
4630 #line 1466 "conf_parser.y"
4631 { listener_flags = 0; }
4632 break;
4633
4634 case 248:
4635 /* Line 1813 of yacc.c */
4636 #line 1471 "conf_parser.y"
4637 {
4638 if (conf_parser_ctx.pass == 2)
4639 {
4640 if ((listener_flags & LISTENER_SSL))
4641 #ifdef HAVE_LIBCRYPTO
4642 if (!ServerInfo.server_ctx)
4643 #endif
4644 {
4645 yyerror("SSL not available - port closed");
4646 break;
4647 }
4648 add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4649 }
4650 }
4651 break;
4652
4653 case 249:
4654 /* Line 1813 of yacc.c */
4655 #line 1485 "conf_parser.y"
4656 {
4657 if (conf_parser_ctx.pass == 2)
4658 {
4659 int i;
4660
4661 if ((listener_flags & LISTENER_SSL))
4662 #ifdef HAVE_LIBCRYPTO
4663 if (!ServerInfo.server_ctx)
4664 #endif
4665 {
4666 yyerror("SSL not available - port closed");
4667 break;
4668 }
4669
4670 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4671 add_listener(i, listener_address, listener_flags);
4672 }
4673 }
4674 break;
4675
4676 case 250:
4677 /* Line 1813 of yacc.c */
4678 #line 1505 "conf_parser.y"
4679 {
4680 if (conf_parser_ctx.pass == 2)
4681 {
4682 MyFree(listener_address);
4683 DupString(listener_address, yylval.string);
4684 }
4685 }
4686 break;
4687
4688 case 251:
4689 /* Line 1813 of yacc.c */
4690 #line 1514 "conf_parser.y"
4691 {
4692 if (conf_parser_ctx.pass == 2)
4693 {
4694 MyFree(listener_address);
4695 DupString(listener_address, yylval.string);
4696 }
4697 }
4698 break;
4699
4700 case 252:
4701 /* Line 1813 of yacc.c */
4702 #line 1526 "conf_parser.y"
4703 {
4704 if (conf_parser_ctx.pass == 2)
4705 {
4706 yy_conf = make_conf_item(CLIENT_TYPE);
4707 yy_aconf = map_to_conf(yy_conf);
4708 }
4709 else
4710 {
4711 MyFree(class_name);
4712 class_name = NULL;
4713 }
4714 }
4715 break;
4716
4717 case 253:
4718 /* Line 1813 of yacc.c */
4719 #line 1538 "conf_parser.y"
4720 {
4721 if (conf_parser_ctx.pass == 2)
4722 {
4723 struct CollectItem *yy_tmp = NULL;
4724 dlink_node *ptr = NULL, *next_ptr = NULL;
4725
4726 if (yy_aconf->user && yy_aconf->host)
4727 {
4728 conf_add_class_to_conf(yy_conf, class_name);
4729 add_conf_by_address(CONF_CLIENT, yy_aconf);
4730 }
4731 else
4732 delete_conf_item(yy_conf);
4733
4734 /* copy over settings from first struct */
4735 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4736 {
4737 struct AccessItem *new_aconf;
4738 struct ConfItem *new_conf;
4739
4740 new_conf = make_conf_item(CLIENT_TYPE);
4741 new_aconf = map_to_conf(new_conf);
4742
4743 yy_tmp = ptr->data;
4744
4745 assert(yy_tmp->user && yy_tmp->host);
4746
4747 if (yy_aconf->passwd != NULL)
4748 DupString(new_aconf->passwd, yy_aconf->passwd);
4749 if (yy_conf->name != NULL)
4750 DupString(new_conf->name, yy_conf->name);
4751 if (yy_aconf->passwd != NULL)
4752 DupString(new_aconf->passwd, yy_aconf->passwd);
4753
4754 new_aconf->flags = yy_aconf->flags;
4755 new_aconf->port = yy_aconf->port;
4756
4757 DupString(new_aconf->user, yy_tmp->user);
4758 collapse(new_aconf->user);
4759
4760 DupString(new_aconf->host, yy_tmp->host);
4761 collapse(new_aconf->host);
4762
4763 conf_add_class_to_conf(new_conf, class_name);
4764 add_conf_by_address(CONF_CLIENT, new_aconf);
4765 dlinkDelete(&yy_tmp->node, &col_conf_list);
4766 free_collect_item(yy_tmp);
4767 }
4768
4769 MyFree(class_name);
4770 class_name = NULL;
4771 yy_conf = NULL;
4772 yy_aconf = NULL;
4773 }
4774 }
4775 break;
4776
4777 case 265:
4778 /* Line 1813 of yacc.c */
4779 #line 1600 "conf_parser.y"
4780 {
4781 if (conf_parser_ctx.pass == 2)
4782 {
4783 struct CollectItem *yy_tmp = NULL;
4784 struct split_nuh_item nuh;
4785
4786 nuh.nuhmask = yylval.string;
4787 nuh.nickptr = NULL;
4788 nuh.userptr = userbuf;
4789 nuh.hostptr = hostbuf;
4790
4791 nuh.nicksize = 0;
4792 nuh.usersize = sizeof(userbuf);
4793 nuh.hostsize = sizeof(hostbuf);
4794
4795 split_nuh(&nuh);
4796
4797 if (yy_aconf->user == NULL)
4798 {
4799 DupString(yy_aconf->user, userbuf);
4800 DupString(yy_aconf->host, hostbuf);
4801 }
4802 else
4803 {
4804 yy_tmp = MyMalloc(sizeof(struct CollectItem));
4805
4806 DupString(yy_tmp->user, userbuf);
4807 DupString(yy_tmp->host, hostbuf);
4808
4809 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4810 }
4811 }
4812 }
4813 break;
4814
4815 case 266:
4816 /* Line 1813 of yacc.c */
4817 #line 1635 "conf_parser.y"
4818 {
4819 if (conf_parser_ctx.pass == 2)
4820 {
4821 /* be paranoid */
4822 if (yy_aconf->passwd != NULL)
4823 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4824
4825 MyFree(yy_aconf->passwd);
4826 DupString(yy_aconf->passwd, yylval.string);
4827 }
4828 }
4829 break;
4830
4831 case 267:
4832 /* Line 1813 of yacc.c */
4833 #line 1648 "conf_parser.y"
4834 {
4835 if (conf_parser_ctx.pass == 2)
4836 {
4837 MyFree(class_name);
4838 DupString(class_name, yylval.string);
4839 }
4840 }
4841 break;
4842
4843 case 268:
4844 /* Line 1813 of yacc.c */
4845 #line 1657 "conf_parser.y"
4846 {
4847 if (conf_parser_ctx.pass == 2)
4848 {
4849 if (yylval.number)
4850 SetConfEncrypted(yy_aconf);
4851 else
4852 ClearConfEncrypted(yy_aconf);
4853 }
4854 }
4855 break;
4856
4857 case 269:
4858 /* Line 1813 of yacc.c */
4859 #line 1668 "conf_parser.y"
4860 {
4861 }
4862 break;
4863
4864 case 273:
4865 /* Line 1813 of yacc.c */
4866 #line 1673 "conf_parser.y"
4867 {
4868 if (conf_parser_ctx.pass == 2)
4869 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
4870 }
4871 break;
4872
4873 case 274:
4874 /* Line 1813 of yacc.c */
4875 #line 1677 "conf_parser.y"
4876 {
4877 if (conf_parser_ctx.pass == 2)
4878 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
4879 }
4880 break;
4881
4882 case 275:
4883 /* Line 1813 of yacc.c */
4884 #line 1681 "conf_parser.y"
4885 {
4886 if (conf_parser_ctx.pass == 2)
4887 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
4888 }
4889 break;
4890
4891 case 276:
4892 /* Line 1813 of yacc.c */
4893 #line 1685 "conf_parser.y"
4894 {
4895 if (conf_parser_ctx.pass == 2)
4896 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
4897 }
4898 break;
4899
4900 case 277:
4901 /* Line 1813 of yacc.c */
4902 #line 1689 "conf_parser.y"
4903 {
4904 if (conf_parser_ctx.pass == 2)
4905 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
4906 }
4907 break;
4908
4909 case 278:
4910 /* Line 1813 of yacc.c */
4911 #line 1693 "conf_parser.y"
4912 {
4913 if (conf_parser_ctx.pass == 2)
4914 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
4915 }
4916 break;
4917
4918 case 279:
4919 /* Line 1813 of yacc.c */
4920 #line 1697 "conf_parser.y"
4921 {
4922 if (conf_parser_ctx.pass == 2)
4923 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
4924 }
4925 break;
4926
4927 case 280:
4928 /* Line 1813 of yacc.c */
4929 #line 1701 "conf_parser.y"
4930 {
4931 if (conf_parser_ctx.pass == 2)
4932 yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
4933 }
4934 break;
4935
4936 case 281:
4937 /* Line 1813 of yacc.c */
4938 #line 1705 "conf_parser.y"
4939 {
4940 if (conf_parser_ctx.pass == 2)
4941 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
4942 }
4943 break;
4944
4945 case 282:
4946 /* Line 1813 of yacc.c */
4947 #line 1711 "conf_parser.y"
4948 {
4949 if (conf_parser_ctx.pass == 2)
4950 {
4951 MyFree(yy_conf->name);
4952
4953 if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4954 {
4955 DupString(yy_conf->name, yylval.string);
4956 yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
4957 }
4958 else
4959 {
4960 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4961 yy_conf->name = NULL;
4962 }
4963 }
4964 }
4965 break;
4966
4967 case 283:
4968 /* Line 1813 of yacc.c */
4969 #line 1730 "conf_parser.y"
4970 {
4971 if (conf_parser_ctx.pass == 2)
4972 {
4973 yy_aconf->flags |= CONF_FLAGS_REDIR;
4974 MyFree(yy_conf->name);
4975 DupString(yy_conf->name, yylval.string);
4976 }
4977 }
4978 break;
4979
4980 case 284:
4981 /* Line 1813 of yacc.c */
4982 #line 1740 "conf_parser.y"
4983 {
4984 if (conf_parser_ctx.pass == 2)
4985 {
4986 yy_aconf->flags |= CONF_FLAGS_REDIR;
4987 yy_aconf->port = (yyvsp[(3) - (4)].number);
4988 }
4989 }
4990 break;
4991
4992 case 285:
4993 /* Line 1813 of yacc.c */
4994 #line 1753 "conf_parser.y"
4995 {
4996 if (conf_parser_ctx.pass == 2)
4997 {
4998 MyFree(resv_reason);
4999 resv_reason = NULL;
5000 }
5001 }
5002 break;
5003
5004 case 286:
5005 /* Line 1813 of yacc.c */
5006 #line 1760 "conf_parser.y"
5007 {
5008 if (conf_parser_ctx.pass == 2)
5009 {
5010 MyFree(resv_reason);
5011 resv_reason = NULL;
5012 }
5013 }
5014 break;
5015
5016 case 293:
5017 /* Line 1813 of yacc.c */
5018 #line 1772 "conf_parser.y"
5019 {
5020 if (conf_parser_ctx.pass == 2)
5021 {
5022 MyFree(resv_reason);
5023 DupString(resv_reason, yylval.string);
5024 }
5025 }
5026 break;
5027
5028 case 294:
5029 /* Line 1813 of yacc.c */
5030 #line 1781 "conf_parser.y"
5031 {
5032 if (conf_parser_ctx.pass == 2)
5033 {
5034 if (IsChanPrefix(*yylval.string))
5035 {
5036 char def_reason[] = "No reason";
5037
5038 create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5039 }
5040 }
5041 /* ignore it for now.. but we really should make a warning if
5042 * its an erroneous name --fl_ */
5043 }
5044 break;
5045
5046 case 295:
5047 /* Line 1813 of yacc.c */
5048 #line 1796 "conf_parser.y"
5049 {
5050 if (conf_parser_ctx.pass == 2)
5051 {
5052 char def_reason[] = "No reason";
5053
5054 create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5055 }
5056 }
5057 break;
5058
5059 case 301:
5060 /* Line 1813 of yacc.c */
5061 #line 1814 "conf_parser.y"
5062 {
5063 if (conf_parser_ctx.pass == 2)
5064 {
5065 if (valid_servname(yylval.string))
5066 {
5067 yy_conf = make_conf_item(SERVICE_TYPE);
5068 DupString(yy_conf->name, yylval.string);
5069 }
5070 }
5071 }
5072 break;
5073
5074 case 302:
5075 /* Line 1813 of yacc.c */
5076 #line 1829 "conf_parser.y"
5077 {
5078 if (conf_parser_ctx.pass == 2)
5079 {
5080 yy_conf = make_conf_item(ULINE_TYPE);
5081 yy_match_item = map_to_conf(yy_conf);
5082 yy_match_item->action = SHARED_ALL;
5083 }
5084 }
5085 break;
5086
5087 case 303:
5088 /* Line 1813 of yacc.c */
5089 #line 1837 "conf_parser.y"
5090 {
5091 if (conf_parser_ctx.pass == 2)
5092 {
5093 yy_conf = NULL;
5094 }
5095 }
5096 break;
5097
5098 case 310:
5099 /* Line 1813 of yacc.c */
5100 #line 1848 "conf_parser.y"
5101 {
5102 if (conf_parser_ctx.pass == 2)
5103 {
5104 MyFree(yy_conf->name);
5105 DupString(yy_conf->name, yylval.string);
5106 }
5107 }
5108 break;
5109
5110 case 311:
5111 /* Line 1813 of yacc.c */
5112 #line 1857 "conf_parser.y"
5113 {
5114 if (conf_parser_ctx.pass == 2)
5115 {
5116 struct split_nuh_item nuh;
5117
5118 nuh.nuhmask = yylval.string;
5119 nuh.nickptr = NULL;
5120 nuh.userptr = userbuf;
5121 nuh.hostptr = hostbuf;
5122
5123 nuh.nicksize = 0;
5124 nuh.usersize = sizeof(userbuf);
5125 nuh.hostsize = sizeof(hostbuf);
5126
5127 split_nuh(&nuh);
5128
5129 DupString(yy_match_item->user, userbuf);
5130 DupString(yy_match_item->host, hostbuf);
5131 }
5132 }
5133 break;
5134
5135 case 312:
5136 /* Line 1813 of yacc.c */
5137 #line 1879 "conf_parser.y"
5138 {
5139 if (conf_parser_ctx.pass == 2)
5140 yy_match_item->action = 0;
5141 }
5142 break;
5143
5144 case 316:
5145 /* Line 1813 of yacc.c */
5146 #line 1886 "conf_parser.y"
5147 {
5148 if (conf_parser_ctx.pass == 2)
5149 yy_match_item->action |= SHARED_KLINE;
5150 }
5151 break;
5152
5153 case 317:
5154 /* Line 1813 of yacc.c */
5155 #line 1890 "conf_parser.y"
5156 {
5157 if (conf_parser_ctx.pass == 2)
5158 yy_match_item->action |= SHARED_UNKLINE;
5159 }
5160 break;
5161
5162 case 318:
5163 /* Line 1813 of yacc.c */
5164 #line 1894 "conf_parser.y"
5165 {
5166 if (conf_parser_ctx.pass == 2)
5167 yy_match_item->action |= SHARED_DLINE;
5168 }
5169 break;
5170
5171 case 319:
5172 /* Line 1813 of yacc.c */
5173 #line 1898 "conf_parser.y"
5174 {
5175 if (conf_parser_ctx.pass == 2)
5176 yy_match_item->action |= SHARED_UNDLINE;
5177 }
5178 break;
5179
5180 case 320:
5181 /* Line 1813 of yacc.c */
5182 #line 1902 "conf_parser.y"
5183 {
5184 if (conf_parser_ctx.pass == 2)
5185 yy_match_item->action |= SHARED_XLINE;
5186 }
5187 break;
5188
5189 case 321:
5190 /* Line 1813 of yacc.c */
5191 #line 1906 "conf_parser.y"
5192 {
5193 if (conf_parser_ctx.pass == 2)
5194 yy_match_item->action |= SHARED_UNXLINE;
5195 }
5196 break;
5197
5198 case 322:
5199 /* Line 1813 of yacc.c */
5200 #line 1910 "conf_parser.y"
5201 {
5202 if (conf_parser_ctx.pass == 2)
5203 yy_match_item->action |= SHARED_RESV;
5204 }
5205 break;
5206
5207 case 323:
5208 /* Line 1813 of yacc.c */
5209 #line 1914 "conf_parser.y"
5210 {
5211 if (conf_parser_ctx.pass == 2)
5212 yy_match_item->action |= SHARED_UNRESV;
5213 }
5214 break;
5215
5216 case 324:
5217 /* Line 1813 of yacc.c */
5218 #line 1918 "conf_parser.y"
5219 {
5220 if (conf_parser_ctx.pass == 2)
5221 yy_match_item->action |= SHARED_LOCOPS;
5222 }
5223 break;
5224
5225 case 325:
5226 /* Line 1813 of yacc.c */
5227 #line 1922 "conf_parser.y"
5228 {
5229 if (conf_parser_ctx.pass == 2)
5230 yy_match_item->action = SHARED_ALL;
5231 }
5232 break;
5233
5234 case 326:
5235 /* Line 1813 of yacc.c */
5236 #line 1931 "conf_parser.y"
5237 {
5238 if (conf_parser_ctx.pass == 2)
5239 {
5240 yy_conf = make_conf_item(CLUSTER_TYPE);
5241 yy_conf->flags = SHARED_ALL;
5242 }
5243 }
5244 break;
5245
5246 case 327:
5247 /* Line 1813 of yacc.c */
5248 #line 1938 "conf_parser.y"
5249 {
5250 if (conf_parser_ctx.pass == 2)
5251 {
5252 if (yy_conf->name == NULL)
5253 DupString(yy_conf->name, "*");
5254 yy_conf = NULL;
5255 }
5256 }
5257 break;
5258
5259 case 333:
5260 /* Line 1813 of yacc.c */
5261 #line 1951 "conf_parser.y"
5262 {
5263 if (conf_parser_ctx.pass == 2)
5264 DupString(yy_conf->name, yylval.string);
5265 }
5266 break;
5267
5268 case 334:
5269 /* Line 1813 of yacc.c */
5270 #line 1957 "conf_parser.y"
5271 {
5272 if (conf_parser_ctx.pass == 2)
5273 yy_conf->flags = 0;
5274 }
5275 break;
5276
5277 case 338:
5278 /* Line 1813 of yacc.c */
5279 #line 1964 "conf_parser.y"
5280 {
5281 if (conf_parser_ctx.pass == 2)
5282 yy_conf->flags |= SHARED_KLINE;
5283 }
5284 break;
5285
5286 case 339:
5287 /* Line 1813 of yacc.c */
5288 #line 1968 "conf_parser.y"
5289 {
5290 if (conf_parser_ctx.pass == 2)
5291 yy_conf->flags |= SHARED_UNKLINE;
5292 }
5293 break;
5294
5295 case 340:
5296 /* Line 1813 of yacc.c */
5297 #line 1972 "conf_parser.y"
5298 {
5299 if (conf_parser_ctx.pass == 2)
5300 yy_conf->flags |= SHARED_DLINE;
5301 }
5302 break;
5303
5304 case 341:
5305 /* Line 1813 of yacc.c */
5306 #line 1976 "conf_parser.y"
5307 {
5308 if (conf_parser_ctx.pass == 2)
5309 yy_conf->flags |= SHARED_UNDLINE;
5310 }
5311 break;
5312
5313 case 342:
5314 /* Line 1813 of yacc.c */
5315 #line 1980 "conf_parser.y"
5316 {
5317 if (conf_parser_ctx.pass == 2)
5318 yy_conf->flags |= SHARED_XLINE;
5319 }
5320 break;
5321
5322 case 343:
5323 /* Line 1813 of yacc.c */
5324 #line 1984 "conf_parser.y"
5325 {
5326 if (conf_parser_ctx.pass == 2)
5327 yy_conf->flags |= SHARED_UNXLINE;
5328 }
5329 break;
5330
5331 case 344:
5332 /* Line 1813 of yacc.c */
5333 #line 1988 "conf_parser.y"
5334 {
5335 if (conf_parser_ctx.pass == 2)
5336 yy_conf->flags |= SHARED_RESV;
5337 }
5338 break;
5339
5340 case 345:
5341 /* Line 1813 of yacc.c */
5342 #line 1992 "conf_parser.y"
5343 {
5344 if (conf_parser_ctx.pass == 2)
5345 yy_conf->flags |= SHARED_UNRESV;
5346 }
5347 break;
5348
5349 case 346:
5350 /* Line 1813 of yacc.c */
5351 #line 1996 "conf_parser.y"
5352 {
5353 if (conf_parser_ctx.pass == 2)
5354 yy_conf->flags |= SHARED_LOCOPS;
5355 }
5356 break;
5357
5358 case 347:
5359 /* Line 1813 of yacc.c */
5360 #line 2000 "conf_parser.y"
5361 {
5362 if (conf_parser_ctx.pass == 2)
5363 yy_conf->flags = SHARED_ALL;
5364 }
5365 break;
5366
5367 case 348:
5368 /* Line 1813 of yacc.c */
5369 #line 2009 "conf_parser.y"
5370 {
5371 if (conf_parser_ctx.pass == 2)
5372 {
5373 yy_conf = make_conf_item(SERVER_TYPE);
5374 yy_aconf = map_to_conf(yy_conf);
5375
5376 /* defaults */
5377 yy_aconf->port = PORTNUM;
5378 }
5379 else
5380 {
5381 MyFree(class_name);
5382 class_name = NULL;
5383 }
5384 }
5385 break;
5386
5387 case 349:
5388 /* Line 1813 of yacc.c */
5389 #line 2024 "conf_parser.y"
5390 {
5391 if (conf_parser_ctx.pass == 2)
5392 {
5393 if (yy_aconf->host && yy_aconf->passwd && yy_aconf->spasswd)
5394 {
5395 if (conf_add_server(yy_conf, class_name) == -1)
5396 delete_conf_item(yy_conf);
5397 }
5398 else
5399 {
5400 if (yy_conf->name != NULL)
5401 {
5402 if (yy_aconf->host == NULL)
5403 yyerror("Ignoring connect block -- missing host");
5404 else if (!yy_aconf->passwd || !yy_aconf->spasswd)
5405 yyerror("Ignoring connect block -- missing password");
5406 }
5407
5408 /* XXX
5409 * This fixes a try_connections() core (caused by invalid class_ptr
5410 * pointers) reported by metalrock. That's an ugly fix, but there
5411 * is currently no better way. The entire config subsystem needs an
5412 * rewrite ASAP. make_conf_item() shouldn't really add things onto
5413 * a doubly linked list immediately without any sanity checks! -Michael
5414 */
5415 delete_conf_item(yy_conf);
5416 }
5417
5418 MyFree(class_name);
5419 class_name = NULL;
5420 yy_conf = NULL;
5421 yy_aconf = NULL;
5422 }
5423 }
5424 break;
5425
5426 case 366:
5427 /* Line 1813 of yacc.c */
5428 #line 2068 "conf_parser.y"
5429 {
5430 if (conf_parser_ctx.pass == 2)
5431 {
5432 MyFree(yy_conf->name);
5433 DupString(yy_conf->name, yylval.string);
5434 }
5435 }
5436 break;
5437
5438 case 367:
5439 /* Line 1813 of yacc.c */
5440 #line 2077 "conf_parser.y"
5441 {
5442 if (conf_parser_ctx.pass == 2)
5443 {
5444 MyFree(yy_aconf->host);
5445 DupString(yy_aconf->host, yylval.string);
5446 }
5447 }
5448 break;
5449
5450 case 368:
5451 /* Line 1813 of yacc.c */
5452 #line 2086 "conf_parser.y"
5453 {
5454 if (conf_parser_ctx.pass == 2)
5455 {
5456 struct addrinfo hints, *res;
5457
5458 memset(&hints, 0, sizeof(hints));
5459
5460 hints.ai_family = AF_UNSPEC;
5461 hints.ai_socktype = SOCK_STREAM;
5462 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5463
5464 if (getaddrinfo(yylval.string, NULL, &hints, &res))
5465 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5466 else
5467 {
5468 assert(res != NULL);
5469
5470 memcpy(&yy_aconf->bind, res->ai_addr, res->ai_addrlen);
5471 yy_aconf->bind.ss.ss_family = res->ai_family;
5472 yy_aconf->bind.ss_len = res->ai_addrlen;
5473 freeaddrinfo(res);
5474 }
5475 }
5476 }
5477 break;
5478
5479 case 369:
5480 /* Line 1813 of yacc.c */
5481 #line 2112 "conf_parser.y"
5482 {
5483 if (conf_parser_ctx.pass == 2)
5484 {
5485 if ((yyvsp[(3) - (4)].string)[0] == ':')
5486 yyerror("Server passwords cannot begin with a colon");
5487 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5488 yyerror("Server passwords cannot contain spaces");
5489 else {
5490 if (yy_aconf->spasswd != NULL)
5491 memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5492
5493 MyFree(yy_aconf->spasswd);
5494 DupString(yy_aconf->spasswd, yylval.string);
5495 }
5496 }
5497 }
5498 break;
5499
5500 case 370:
5501 /* Line 1813 of yacc.c */
5502 #line 2130 "conf_parser.y"
5503 {
5504 if (conf_parser_ctx.pass == 2)
5505 {
5506 if ((yyvsp[(3) - (4)].string)[0] == ':')
5507 yyerror("Server passwords cannot begin with a colon");
5508 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5509 yyerror("Server passwords cannot contain spaces");
5510 else {
5511 if (yy_aconf->passwd != NULL)
5512 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5513
5514 MyFree(yy_aconf->passwd);
5515 DupString(yy_aconf->passwd, yylval.string);
5516 }
5517 }
5518 }
5519 break;
5520
5521 case 371:
5522 /* Line 1813 of yacc.c */
5523 #line 2148 "conf_parser.y"
5524 {
5525 if (conf_parser_ctx.pass == 2)
5526 yy_aconf->port = (yyvsp[(3) - (4)].number);
5527 }
5528 break;
5529
5530 case 372:
5531 /* Line 1813 of yacc.c */
5532 #line 2154 "conf_parser.y"
5533 {
5534 if (conf_parser_ctx.pass == 2)
5535 yy_aconf->aftype = AF_INET;
5536 }
5537 break;
5538
5539 case 373:
5540 /* Line 1813 of yacc.c */
5541 #line 2158 "conf_parser.y"
5542 {
5543 #ifdef IPV6
5544 if (conf_parser_ctx.pass == 2)
5545 yy_aconf->aftype = AF_INET6;
5546 #endif
5547 }
5548 break;
5549
5550 case 374:
5551 /* Line 1813 of yacc.c */
5552 #line 2166 "conf_parser.y"
5553 {
5554 }
5555 break;
5556
5557 case 378:
5558 /* Line 1813 of yacc.c */
5559 #line 2171 "conf_parser.y"
5560 {
5561 if (conf_parser_ctx.pass == 2)
5562 SetConfAllowAutoConn(yy_aconf);
5563 }
5564 break;
5565
5566 case 379:
5567 /* Line 1813 of yacc.c */
5568 #line 2175 "conf_parser.y"
5569 {
5570 if (conf_parser_ctx.pass == 2)
5571 SetConfSSL(yy_aconf);
5572 }
5573 break;
5574
5575 case 380:
5576 /* Line 1813 of yacc.c */
5577 #line 2181 "conf_parser.y"
5578 {
5579 if (conf_parser_ctx.pass == 2)
5580 {
5581 if (yylval.number)
5582 yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
5583 else
5584 yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
5585 }
5586 }
5587 break;
5588
5589 case 381:
5590 /* Line 1813 of yacc.c */
5591 #line 2192 "conf_parser.y"
5592 {
5593 if (conf_parser_ctx.pass == 2)
5594 {
5595 char *mask;
5596
5597 DupString(mask, yylval.string);
5598 dlinkAdd(mask, make_dlink_node(), &yy_aconf->hub_list);
5599 }
5600 }
5601 break;
5602
5603 case 382:
5604 /* Line 1813 of yacc.c */
5605 #line 2203 "conf_parser.y"
5606 {
5607 if (conf_parser_ctx.pass == 2)
5608 {
5609 char *mask;
5610
5611 DupString(mask, yylval.string);
5612 dlinkAdd(mask, make_dlink_node(), &yy_aconf->leaf_list);
5613 }
5614 }
5615 break;
5616
5617 case 383:
5618 /* Line 1813 of yacc.c */
5619 #line 2214 "conf_parser.y"
5620 {
5621 if (conf_parser_ctx.pass == 2)
5622 {
5623 MyFree(class_name);
5624 DupString(class_name, yylval.string);
5625 }
5626 }
5627 break;
5628
5629 case 384:
5630 /* Line 1813 of yacc.c */
5631 #line 2223 "conf_parser.y"
5632 {
5633 #ifdef HAVE_LIBCRYPTO
5634 if (conf_parser_ctx.pass == 2)
5635 {
5636 MyFree(yy_aconf->cipher_list);
5637 DupString(yy_aconf->cipher_list, yylval.string);
5638 }
5639 #else
5640 if (conf_parser_ctx.pass == 2)
5641 yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5642 #endif
5643 }
5644 break;
5645
5646 case 385:
5647 /* Line 1813 of yacc.c */
5648 #line 2241 "conf_parser.y"
5649 {
5650 if (conf_parser_ctx.pass == 2)
5651 {
5652 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
5653 regex_ban = 0;
5654 }
5655 }
5656 break;
5657
5658 case 386:
5659 /* Line 1813 of yacc.c */
5660 #line 2248 "conf_parser.y"
5661 {
5662 if (conf_parser_ctx.pass == 2)
5663 {
5664 if (userbuf[0] && hostbuf[0])
5665 {
5666 if (regex_ban)
5667 {
5668 #ifdef HAVE_LIBPCRE
5669 void *exp_user = NULL;
5670 void *exp_host = NULL;
5671 const char *errptr = NULL;
5672
5673 if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
5674 !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
5675 {
5676 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5677 errptr);
5678 break;
5679 }
5680
5681 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
5682 yy_aconf->regexuser = exp_user;
5683 yy_aconf->regexhost = exp_host;
5684
5685 DupString(yy_aconf->user, userbuf);
5686 DupString(yy_aconf->host, hostbuf);
5687
5688 if (reasonbuf[0])
5689 DupString(yy_aconf->reason, reasonbuf);
5690 else
5691 DupString(yy_aconf->reason, "No reason");
5692 #else
5693 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5694 break;
5695 #endif
5696 }
5697 else
5698 {
5699 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
5700
5701 DupString(yy_aconf->user, userbuf);
5702 DupString(yy_aconf->host, hostbuf);
5703
5704 if (reasonbuf[0])
5705 DupString(yy_aconf->reason, reasonbuf);
5706 else
5707 DupString(yy_aconf->reason, "No reason");
5708 add_conf_by_address(CONF_KLINE, yy_aconf);
5709 }
5710 }
5711
5712 yy_aconf = NULL;
5713 }
5714 }
5715 break;
5716
5717 case 387:
5718 /* Line 1813 of yacc.c */
5719 #line 2304 "conf_parser.y"
5720 {
5721 }
5722 break;
5723
5724 case 391:
5725 /* Line 1813 of yacc.c */
5726 #line 2309 "conf_parser.y"
5727 {
5728 if (conf_parser_ctx.pass == 2)
5729 regex_ban = 1;
5730 }
5731 break;
5732
5733 case 398:
5734 /* Line 1813 of yacc.c */
5735 #line 2318 "conf_parser.y"
5736 {
5737 if (conf_parser_ctx.pass == 2)
5738 {
5739 struct split_nuh_item nuh;
5740
5741 nuh.nuhmask = yylval.string;
5742 nuh.nickptr = NULL;
5743 nuh.userptr = userbuf;
5744 nuh.hostptr = hostbuf;
5745
5746 nuh.nicksize = 0;
5747 nuh.usersize = sizeof(userbuf);
5748 nuh.hostsize = sizeof(hostbuf);
5749
5750 split_nuh(&nuh);
5751 }
5752 }
5753 break;
5754
5755 case 399:
5756 /* Line 1813 of yacc.c */
5757 #line 2337 "conf_parser.y"
5758 {
5759 if (conf_parser_ctx.pass == 2)
5760 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5761 }
5762 break;
5763
5764 case 400:
5765 /* Line 1813 of yacc.c */
5766 #line 2346 "conf_parser.y"
5767 {
5768 if (conf_parser_ctx.pass == 2)
5769 hostbuf[0] = reasonbuf[0] = '\0';
5770 }
5771 break;
5772
5773 case 401:
5774 /* Line 1813 of yacc.c */
5775 #line 2350 "conf_parser.y"
5776 {
5777 if (conf_parser_ctx.pass == 2)
5778 {
5779 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
5780 {
5781 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
5782 DupString(yy_aconf->host, hostbuf);
5783
5784 if (reasonbuf[0])
5785 DupString(yy_aconf->reason, reasonbuf);
5786 else
5787 DupString(yy_aconf->reason, "No reason");
5788 add_conf_by_address(CONF_DLINE, yy_aconf);
5789 yy_aconf = NULL;
5790 }
5791 }
5792 }
5793 break;
5794
5795 case 407:
5796 /* Line 1813 of yacc.c */
5797 #line 2372 "conf_parser.y"
5798 {
5799 if (conf_parser_ctx.pass == 2)
5800 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
5801 }
5802 break;
5803
5804 case 408:
5805 /* Line 1813 of yacc.c */
5806 #line 2378 "conf_parser.y"
5807 {
5808 if (conf_parser_ctx.pass == 2)
5809 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5810 }
5811 break;
5812
5813 case 414:
5814 /* Line 1813 of yacc.c */
5815 #line 2392 "conf_parser.y"
5816 {
5817 if (conf_parser_ctx.pass == 2)
5818 {
5819 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5820 {
5821 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
5822 DupString(yy_aconf->host, yylval.string);
5823
5824 add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
5825 yy_aconf = NULL;
5826 }
5827 }
5828 }
5829 break;
5830
5831 case 415:
5832 /* Line 1813 of yacc.c */
5833 #line 2410 "conf_parser.y"
5834 {
5835 if (conf_parser_ctx.pass == 2)
5836 {
5837 regex_ban = 0;
5838 reasonbuf[0] = gecos_name[0] = '\0';
5839 }
5840 }
5841 break;
5842
5843 case 416:
5844 /* Line 1813 of yacc.c */
5845 #line 2417 "conf_parser.y"
5846 {
5847 if (conf_parser_ctx.pass == 2)
5848 {
5849 if (gecos_name[0])
5850 {
5851 if (regex_ban)
5852 {
5853 #ifdef HAVE_LIBPCRE
5854 void *exp_p = NULL;
5855 const char *errptr = NULL;
5856
5857 if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
5858 {
5859 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5860 errptr);
5861 break;
5862 }
5863
5864 yy_conf = make_conf_item(RXLINE_TYPE);
5865 yy_conf->regexpname = exp_p;
5866 #else
5867 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5868 break;
5869 #endif
5870 }
5871 else
5872 yy_conf = make_conf_item(XLINE_TYPE);
5873
5874 yy_match_item = map_to_conf(yy_conf);
5875 DupString(yy_conf->name, gecos_name);
5876
5877 if (reasonbuf[0])
5878 DupString(yy_match_item->reason, reasonbuf);
5879 else
5880 DupString(yy_match_item->reason, "No reason");
5881 }
5882 }
5883 }
5884 break;
5885
5886 case 417:
5887 /* Line 1813 of yacc.c */
5888 #line 2457 "conf_parser.y"
5889 {
5890 }
5891 break;
5892
5893 case 421:
5894 /* Line 1813 of yacc.c */
5895 #line 2462 "conf_parser.y"
5896 {
5897 if (conf_parser_ctx.pass == 2)
5898 regex_ban = 1;
5899 }
5900 break;
5901
5902 case 428:
5903 /* Line 1813 of yacc.c */
5904 #line 2471 "conf_parser.y"
5905 {
5906 if (conf_parser_ctx.pass == 2)
5907 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
5908 }
5909 break;
5910
5911 case 429:
5912 /* Line 1813 of yacc.c */
5913 #line 2477 "conf_parser.y"
5914 {
5915 if (conf_parser_ctx.pass == 2)
5916 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
5917 }
5918 break;
5919
5920 case 483:
5921 /* Line 1813 of yacc.c */
5922 #line 2522 "conf_parser.y"
5923 {
5924 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5925 }
5926 break;
5927
5928 case 484:
5929 /* Line 1813 of yacc.c */
5930 #line 2527 "conf_parser.y"
5931 {
5932 if (conf_parser_ctx.pass == 2)
5933 ConfigFileEntry.glines = yylval.number;
5934 }
5935 break;
5936
5937 case 485:
5938 /* Line 1813 of yacc.c */
5939 #line 2533 "conf_parser.y"
5940 {
5941 if (conf_parser_ctx.pass == 2)
5942 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5943 }
5944 break;
5945
5946 case 486:
5947 /* Line 1813 of yacc.c */
5948 #line 2539 "conf_parser.y"
5949 {
5950 if (conf_parser_ctx.pass == 2)
5951 ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5952 }
5953 break;
5954
5955 case 487:
5956 /* Line 1813 of yacc.c */
5957 #line 2545 "conf_parser.y"
5958 {
5959 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5960 }
5961 break;
5962
5963 case 488:
5964 /* Line 1813 of yacc.c */
5965 #line 2550 "conf_parser.y"
5966 {
5967 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5968 }
5969 break;
5970
5971 case 489:
5972 /* Line 1813 of yacc.c */
5973 #line 2555 "conf_parser.y"
5974 {
5975 ConfigFileEntry.tkline_expire_notices = yylval.number;
5976 }
5977 break;
5978
5979 case 490:
5980 /* Line 1813 of yacc.c */
5981 #line 2560 "conf_parser.y"
5982 {
5983 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5984 }
5985 break;
5986
5987 case 491:
5988 /* Line 1813 of yacc.c */
5989 #line 2565 "conf_parser.y"
5990 {
5991 ConfigFileEntry.hide_spoof_ips = yylval.number;
5992 }
5993 break;
5994
5995 case 492:
5996 /* Line 1813 of yacc.c */
5997 #line 2570 "conf_parser.y"
5998 {
5999 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6000 }
6001 break;
6002
6003 case 493:
6004 /* Line 1813 of yacc.c */
6005 #line 2575 "conf_parser.y"
6006 {
6007 ConfigFileEntry.disable_remote = yylval.number;
6008 }
6009 break;
6010
6011 case 494:
6012 /* Line 1813 of yacc.c */
6013 #line 2580 "conf_parser.y"
6014 {
6015 ConfigFileEntry.failed_oper_notice = yylval.number;
6016 }
6017 break;
6018
6019 case 495:
6020 /* Line 1813 of yacc.c */
6021 #line 2585 "conf_parser.y"
6022 {
6023 ConfigFileEntry.anti_nick_flood = yylval.number;
6024 }
6025 break;
6026
6027 case 496:
6028 /* Line 1813 of yacc.c */
6029 #line 2590 "conf_parser.y"
6030 {
6031 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6032 }
6033 break;
6034
6035 case 497:
6036 /* Line 1813 of yacc.c */
6037 #line 2595 "conf_parser.y"
6038 {
6039 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6040 }
6041 break;
6042
6043 case 498:
6044 /* Line 1813 of yacc.c */
6045 #line 2600 "conf_parser.y"
6046 {
6047 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6048 }
6049 break;
6050
6051 case 499:
6052 /* Line 1813 of yacc.c */
6053 #line 2605 "conf_parser.y"
6054 {
6055 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6056 }
6057 break;
6058
6059 case 500:
6060 /* Line 1813 of yacc.c */
6061 #line 2610 "conf_parser.y"
6062 {
6063 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6064 }
6065 break;
6066
6067 case 501:
6068 /* Line 1813 of yacc.c */
6069 #line 2615 "conf_parser.y"
6070 {
6071 if (conf_parser_ctx.pass == 2)
6072 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6073 }
6074 break;
6075
6076 case 502:
6077 /* Line 1813 of yacc.c */
6078 #line 2621 "conf_parser.y"
6079 {
6080 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6081 {
6082 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
6083 ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
6084 ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
6085 exit(0);
6086 }
6087 }
6088 break;
6089
6090 case 503:
6091 /* Line 1813 of yacc.c */
6092 #line 2632 "conf_parser.y"
6093 {
6094 ConfigFileEntry.invisible_on_connect = yylval.number;
6095 }
6096 break;
6097
6098 case 504:
6099 /* Line 1813 of yacc.c */
6100 #line 2637 "conf_parser.y"
6101 {
6102 ConfigFileEntry.warn_no_nline = yylval.number;
6103 }
6104 break;
6105
6106 case 505:
6107 /* Line 1813 of yacc.c */
6108 #line 2642 "conf_parser.y"
6109 {
6110 ConfigFileEntry.stats_e_disabled = yylval.number;
6111 }
6112 break;
6113
6114 case 506:
6115 /* Line 1813 of yacc.c */
6116 #line 2647 "conf_parser.y"
6117 {
6118 ConfigFileEntry.stats_o_oper_only = yylval.number;
6119 }
6120 break;
6121
6122 case 507:
6123 /* Line 1813 of yacc.c */
6124 #line 2652 "conf_parser.y"
6125 {
6126 ConfigFileEntry.stats_P_oper_only = yylval.number;
6127 }
6128 break;
6129
6130 case 508:
6131 /* Line 1813 of yacc.c */
6132 #line 2657 "conf_parser.y"
6133 {
6134 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6135 }
6136 break;
6137
6138 case 509:
6139 /* Line 1813 of yacc.c */
6140 #line 2660 "conf_parser.y"
6141 {
6142 ConfigFileEntry.stats_k_oper_only = 1;
6143 }
6144 break;
6145
6146 case 510:
6147 /* Line 1813 of yacc.c */
6148 #line 2665 "conf_parser.y"
6149 {
6150 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6151 }
6152 break;
6153
6154 case 511:
6155 /* Line 1813 of yacc.c */
6156 #line 2668 "conf_parser.y"
6157 {
6158 ConfigFileEntry.stats_i_oper_only = 1;
6159 }
6160 break;
6161
6162 case 512:
6163 /* Line 1813 of yacc.c */
6164 #line 2673 "conf_parser.y"
6165 {
6166 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6167 }
6168 break;
6169
6170 case 513:
6171 /* Line 1813 of yacc.c */
6172 #line 2678 "conf_parser.y"
6173 {
6174 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6175 }
6176 break;
6177
6178 case 514:
6179 /* Line 1813 of yacc.c */
6180 #line 2683 "conf_parser.y"
6181 {
6182 ConfigFileEntry.opers_bypass_callerid = yylval.number;
6183 }
6184 break;
6185
6186 case 515:
6187 /* Line 1813 of yacc.c */
6188 #line 2688 "conf_parser.y"
6189 {
6190 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
6191 }
6192 break;
6193
6194 case 516:
6195 /* Line 1813 of yacc.c */
6196 #line 2693 "conf_parser.y"
6197 {
6198 ConfigFileEntry.short_motd = yylval.number;
6199 }
6200 break;
6201
6202 case 517:
6203 /* Line 1813 of yacc.c */
6204 #line 2698 "conf_parser.y"
6205 {
6206 ConfigFileEntry.no_oper_flood = yylval.number;
6207 }
6208 break;
6209
6210 case 518:
6211 /* Line 1813 of yacc.c */
6212 #line 2703 "conf_parser.y"
6213 {
6214 ConfigFileEntry.true_no_oper_flood = yylval.number;
6215 }
6216 break;
6217
6218 case 519:
6219 /* Line 1813 of yacc.c */
6220 #line 2708 "conf_parser.y"
6221 {
6222 ConfigFileEntry.oper_pass_resv = yylval.number;
6223 }
6224 break;
6225
6226 case 520:
6227 /* Line 1813 of yacc.c */
6228 #line 2713 "conf_parser.y"
6229 {
6230 if (conf_parser_ctx.pass == 2)
6231 {
6232 if (strlen(yylval.string) > LOCALE_LENGTH-2)
6233 yylval.string[LOCALE_LENGTH-1] = '\0';
6234
6235 set_locale(yylval.string);
6236 }
6237 }
6238 break;
6239
6240 case 521:
6241 /* Line 1813 of yacc.c */
6242 #line 2724 "conf_parser.y"
6243 {
6244 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6245 }
6246 break;
6247
6248 case 522:
6249 /* Line 1813 of yacc.c */
6250 #line 2729 "conf_parser.y"
6251 {
6252 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6253 }
6254 break;
6255
6256 case 523:
6257 /* Line 1813 of yacc.c */
6258 #line 2734 "conf_parser.y"
6259 {
6260 ConfigFileEntry.use_egd = yylval.number;
6261 }
6262 break;
6263
6264 case 524:
6265 /* Line 1813 of yacc.c */
6266 #line 2739 "conf_parser.y"
6267 {
6268 if (conf_parser_ctx.pass == 2)
6269 {
6270 MyFree(ConfigFileEntry.egdpool_path);
6271 DupString(ConfigFileEntry.egdpool_path, yylval.string);
6272 }
6273 }
6274 break;
6275
6276 case 525:
6277 /* Line 1813 of yacc.c */
6278 #line 2748 "conf_parser.y"
6279 {
6280 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6281 {
6282 MyFree(ConfigFileEntry.service_name);
6283 DupString(ConfigFileEntry.service_name, yylval.string);
6284 }
6285 }
6286 break;
6287
6288 case 526:
6289 /* Line 1813 of yacc.c */
6290 #line 2757 "conf_parser.y"
6291 {
6292 ConfigFileEntry.ping_cookie = yylval.number;
6293 }
6294 break;
6295
6296 case 527:
6297 /* Line 1813 of yacc.c */
6298 #line 2762 "conf_parser.y"
6299 {
6300 ConfigFileEntry.disable_auth = yylval.number;
6301 }
6302 break;
6303
6304 case 528:
6305 /* Line 1813 of yacc.c */
6306 #line 2767 "conf_parser.y"
6307 {
6308 ConfigFileEntry.throttle_time = yylval.number;
6309 }
6310 break;
6311
6312 case 529:
6313 /* Line 1813 of yacc.c */
6314 #line 2772 "conf_parser.y"
6315 {
6316 ConfigFileEntry.oper_umodes = 0;
6317 }
6318 break;
6319
6320 case 533:
6321 /* Line 1813 of yacc.c */
6322 #line 2778 "conf_parser.y"
6323 {
6324 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6325 }
6326 break;
6327
6328 case 534:
6329 /* Line 1813 of yacc.c */
6330 #line 2781 "conf_parser.y"
6331 {
6332 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6333 }
6334 break;
6335
6336 case 535:
6337 /* Line 1813 of yacc.c */
6338 #line 2784 "conf_parser.y"
6339 {
6340 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6341 }
6342 break;
6343
6344 case 536:
6345 /* Line 1813 of yacc.c */
6346 #line 2787 "conf_parser.y"
6347 {
6348 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6349 }
6350 break;
6351
6352 case 537:
6353 /* Line 1813 of yacc.c */
6354 #line 2790 "conf_parser.y"
6355 {
6356 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6357 }
6358 break;
6359
6360 case 538:
6361 /* Line 1813 of yacc.c */
6362 #line 2793 "conf_parser.y"
6363 {
6364 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6365 }
6366 break;
6367
6368 case 539:
6369 /* Line 1813 of yacc.c */
6370 #line 2796 "conf_parser.y"
6371 {
6372 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6373 }
6374 break;
6375
6376 case 540:
6377 /* Line 1813 of yacc.c */
6378 #line 2799 "conf_parser.y"
6379 {
6380 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6381 }
6382 break;
6383
6384 case 541:
6385 /* Line 1813 of yacc.c */
6386 #line 2802 "conf_parser.y"
6387 {
6388 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6389 }
6390 break;
6391
6392 case 542:
6393 /* Line 1813 of yacc.c */
6394 #line 2805 "conf_parser.y"
6395 {
6396 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6397 }
6398 break;
6399
6400 case 543:
6401 /* Line 1813 of yacc.c */
6402 #line 2808 "conf_parser.y"
6403 {
6404 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6405 }
6406 break;
6407
6408 case 544:
6409 /* Line 1813 of yacc.c */
6410 #line 2811 "conf_parser.y"
6411 {
6412 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6413 }
6414 break;
6415
6416 case 545:
6417 /* Line 1813 of yacc.c */
6418 #line 2814 "conf_parser.y"
6419 {
6420 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6421 }
6422 break;
6423
6424 case 546:
6425 /* Line 1813 of yacc.c */
6426 #line 2817 "conf_parser.y"
6427 {
6428 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6429 }
6430 break;
6431
6432 case 547:
6433 /* Line 1813 of yacc.c */
6434 #line 2820 "conf_parser.y"
6435 {
6436 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6437 }
6438 break;
6439
6440 case 548:
6441 /* Line 1813 of yacc.c */
6442 #line 2823 "conf_parser.y"
6443 {
6444 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6445 }
6446 break;
6447
6448 case 549:
6449 /* Line 1813 of yacc.c */
6450 #line 2826 "conf_parser.y"
6451 {
6452 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6453 }
6454 break;
6455
6456 case 550:
6457 /* Line 1813 of yacc.c */
6458 #line 2829 "conf_parser.y"
6459 {
6460 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6461 }
6462 break;
6463
6464 case 551:
6465 /* Line 1813 of yacc.c */
6466 #line 2832 "conf_parser.y"
6467 {
6468 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6469 }
6470 break;
6471
6472 case 552:
6473 /* Line 1813 of yacc.c */
6474 #line 2835 "conf_parser.y"
6475 {
6476 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6477 }
6478 break;
6479
6480 case 553:
6481 /* Line 1813 of yacc.c */
6482 #line 2840 "conf_parser.y"
6483 {
6484 ConfigFileEntry.oper_only_umodes = 0;
6485 }
6486 break;
6487
6488 case 557:
6489 /* Line 1813 of yacc.c */
6490 #line 2846 "conf_parser.y"
6491 {
6492 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6493 }
6494 break;
6495
6496 case 558:
6497 /* Line 1813 of yacc.c */
6498 #line 2849 "conf_parser.y"
6499 {
6500 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6501 }
6502 break;
6503
6504 case 559:
6505 /* Line 1813 of yacc.c */
6506 #line 2852 "conf_parser.y"
6507 {
6508 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6509 }
6510 break;
6511
6512 case 560:
6513 /* Line 1813 of yacc.c */
6514 #line 2855 "conf_parser.y"
6515 {
6516 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6517 }
6518 break;
6519
6520 case 561:
6521 /* Line 1813 of yacc.c */
6522 #line 2858 "conf_parser.y"
6523 {
6524 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6525 }
6526 break;
6527
6528 case 562:
6529 /* Line 1813 of yacc.c */
6530 #line 2861 "conf_parser.y"
6531 {
6532 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6533 }
6534 break;
6535
6536 case 563:
6537 /* Line 1813 of yacc.c */
6538 #line 2864 "conf_parser.y"
6539 {
6540 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6541 }
6542 break;
6543
6544 case 564:
6545 /* Line 1813 of yacc.c */
6546 #line 2867 "conf_parser.y"
6547 {
6548 ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6549 }
6550 break;
6551
6552 case 565:
6553 /* Line 1813 of yacc.c */
6554 #line 2870 "conf_parser.y"
6555 {
6556 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6557 }
6558 break;
6559
6560 case 566:
6561 /* Line 1813 of yacc.c */
6562 #line 2873 "conf_parser.y"
6563 {
6564 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6565 }
6566 break;
6567
6568 case 567:
6569 /* Line 1813 of yacc.c */
6570 #line 2876 "conf_parser.y"
6571 {
6572 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6573 }
6574 break;
6575
6576 case 568:
6577 /* Line 1813 of yacc.c */
6578 #line 2879 "conf_parser.y"
6579 {
6580 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6581 }
6582 break;
6583
6584 case 569:
6585 /* Line 1813 of yacc.c */
6586 #line 2882 "conf_parser.y"
6587 {
6588 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6589 }
6590 break;
6591
6592 case 570:
6593 /* Line 1813 of yacc.c */
6594 #line 2885 "conf_parser.y"
6595 {
6596 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6597 }
6598 break;
6599
6600 case 571:
6601 /* Line 1813 of yacc.c */
6602 #line 2888 "conf_parser.y"
6603 {
6604 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6605 }
6606 break;
6607
6608 case 572:
6609 /* Line 1813 of yacc.c */
6610 #line 2891 "conf_parser.y"
6611 {
6612 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6613 }
6614 break;
6615
6616 case 573:
6617 /* Line 1813 of yacc.c */
6618 #line 2894 "conf_parser.y"
6619 {
6620 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6621 }
6622 break;
6623
6624 case 574:
6625 /* Line 1813 of yacc.c */
6626 #line 2897 "conf_parser.y"
6627 {
6628 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6629 }
6630 break;
6631
6632 case 575:
6633 /* Line 1813 of yacc.c */
6634 #line 2900 "conf_parser.y"
6635 {
6636 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6637 }
6638 break;
6639
6640 case 576:
6641 /* Line 1813 of yacc.c */
6642 #line 2903 "conf_parser.y"
6643 {
6644 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6645 }
6646 break;
6647
6648 case 577:
6649 /* Line 1813 of yacc.c */
6650 #line 2908 "conf_parser.y"
6651 {
6652 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6653 }
6654 break;
6655
6656 case 578:
6657 /* Line 1813 of yacc.c */
6658 #line 2913 "conf_parser.y"
6659 {
6660 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6661 }
6662 break;
6663
6664 case 579:
6665 /* Line 1813 of yacc.c */
6666 #line 2918 "conf_parser.y"
6667 {
6668 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6669 }
6670 break;
6671
6672 case 598:
6673 /* Line 1813 of yacc.c */
6674 #line 2941 "conf_parser.y"
6675 {
6676 ConfigChannel.disable_fake_channels = yylval.number;
6677 }
6678 break;
6679
6680 case 599:
6681 /* Line 1813 of yacc.c */
6682 #line 2946 "conf_parser.y"
6683 {
6684 ConfigChannel.restrict_channels = yylval.number;
6685 }
6686 break;
6687
6688 case 600:
6689 /* Line 1813 of yacc.c */
6690 #line 2951 "conf_parser.y"
6691 {
6692 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6693 }
6694 break;
6695
6696 case 601:
6697 /* Line 1813 of yacc.c */
6698 #line 2956 "conf_parser.y"
6699 {
6700 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6701 }
6702 break;
6703
6704 case 602:
6705 /* Line 1813 of yacc.c */
6706 #line 2961 "conf_parser.y"
6707 {
6708 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6709 }
6710 break;
6711
6712 case 603:
6713 /* Line 1813 of yacc.c */
6714 #line 2966 "conf_parser.y"
6715 {
6716 ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6717 }
6718 break;
6719
6720 case 604:
6721 /* Line 1813 of yacc.c */
6722 #line 2971 "conf_parser.y"
6723 {
6724 ConfigChannel.quiet_on_ban = yylval.number;
6725 }
6726 break;
6727
6728 case 605:
6729 /* Line 1813 of yacc.c */
6730 #line 2976 "conf_parser.y"
6731 {
6732 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6733 }
6734 break;
6735
6736 case 606:
6737 /* Line 1813 of yacc.c */
6738 #line 2981 "conf_parser.y"
6739 {
6740 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6741 }
6742 break;
6743
6744 case 607:
6745 /* Line 1813 of yacc.c */
6746 #line 2986 "conf_parser.y"
6747 {
6748 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6749 }
6750 break;
6751
6752 case 608:
6753 /* Line 1813 of yacc.c */
6754 #line 2991 "conf_parser.y"
6755 {
6756 ConfigChannel.no_create_on_split = yylval.number;
6757 }
6758 break;
6759
6760 case 609:
6761 /* Line 1813 of yacc.c */
6762 #line 2996 "conf_parser.y"
6763 {
6764 ConfigChannel.no_join_on_split = yylval.number;
6765 }
6766 break;
6767
6768 case 610:
6769 /* Line 1813 of yacc.c */
6770 #line 3001 "conf_parser.y"
6771 {
6772 GlobalSetOptions.joinfloodcount = yylval.number;
6773 }
6774 break;
6775
6776 case 611:
6777 /* Line 1813 of yacc.c */
6778 #line 3006 "conf_parser.y"
6779 {
6780 GlobalSetOptions.joinfloodtime = yylval.number;
6781 }
6782 break;
6783
6784 case 622:
6785 /* Line 1813 of yacc.c */
6786 #line 3024 "conf_parser.y"
6787 {
6788 if (conf_parser_ctx.pass == 2)
6789 ConfigServerHide.flatten_links = yylval.number;
6790 }
6791 break;
6792
6793 case 623:
6794 /* Line 1813 of yacc.c */
6795 #line 3030 "conf_parser.y"
6796 {
6797 if (conf_parser_ctx.pass == 2)
6798 ConfigServerHide.hide_servers = yylval.number;
6799 }
6800 break;
6801
6802 case 624:
6803 /* Line 1813 of yacc.c */
6804 #line 3036 "conf_parser.y"
6805 {
6806 if (conf_parser_ctx.pass == 2)
6807 {
6808 MyFree(ConfigServerHide.hidden_name);
6809 DupString(ConfigServerHide.hidden_name, yylval.string);
6810 }
6811 }
6812 break;
6813
6814 case 625:
6815 /* Line 1813 of yacc.c */
6816 #line 3045 "conf_parser.y"
6817 {
6818 if (conf_parser_ctx.pass == 2)
6819 {
6820 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6821 {
6822 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6823 ConfigServerHide.links_disabled = 0;
6824 }
6825
6826 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6827 }
6828 }
6829 break;
6830
6831 case 626:
6832 /* Line 1813 of yacc.c */
6833 #line 3059 "conf_parser.y"
6834 {
6835 if (conf_parser_ctx.pass == 2)
6836 ConfigServerHide.hidden = yylval.number;
6837 }
6838 break;
6839
6840 case 627:
6841 /* Line 1813 of yacc.c */
6842 #line 3065 "conf_parser.y"
6843 {
6844 if (conf_parser_ctx.pass == 2)
6845 ConfigServerHide.hide_server_ips = yylval.number;
6846 }
6847 break;
6848
6849
6850 /* Line 1813 of yacc.c */
6851 #line 6852 "conf_parser.c"
6852 default: break;
6853 }
6854 /* User semantic actions sometimes alter yychar, and that requires
6855 that yytoken be updated with the new translation. We take the
6856 approach of translating immediately before every use of yytoken.
6857 One alternative is translating here after every semantic action,
6858 but that translation would be missed if the semantic action invokes
6859 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6860 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6861 incorrect destructor might then be invoked immediately. In the
6862 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6863 to an incorrect destructor call or verbose syntax error message
6864 before the lookahead is translated. */
6865 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6866
6867 YYPOPSTACK (yylen);
6868 yylen = 0;
6869 YY_STACK_PRINT (yyss, yyssp);
6870
6871 *++yyvsp = yyval;
6872
6873 /* Now `shift' the result of the reduction. Determine what state
6874 that goes to, based on the state we popped back to and the rule
6875 number reduced by. */
6876
6877 yyn = yyr1[yyn];
6878
6879 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6880 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6881 yystate = yytable[yystate];
6882 else
6883 yystate = yydefgoto[yyn - YYNTOKENS];
6884
6885 goto yynewstate;
6886
6887
6888 /*------------------------------------.
6889 | yyerrlab -- here on detecting error |
6890 `------------------------------------*/
6891 yyerrlab:
6892 /* Make sure we have latest lookahead translation. See comments at
6893 user semantic actions for why this is necessary. */
6894 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6895
6896 /* If not already recovering from an error, report this error. */
6897 if (!yyerrstatus)
6898 {
6899 ++yynerrs;
6900 #if ! YYERROR_VERBOSE
6901 yyerror (YY_("syntax error"));
6902 #else
6903 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6904 yyssp, yytoken)
6905 {
6906 char const *yymsgp = YY_("syntax error");
6907 int yysyntax_error_status;
6908 yysyntax_error_status = YYSYNTAX_ERROR;
6909 if (yysyntax_error_status == 0)
6910 yymsgp = yymsg;
6911 else if (yysyntax_error_status == 1)
6912 {
6913 if (yymsg != yymsgbuf)
6914 YYSTACK_FREE (yymsg);
6915 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6916 if (!yymsg)
6917 {
6918 yymsg = yymsgbuf;
6919 yymsg_alloc = sizeof yymsgbuf;
6920 yysyntax_error_status = 2;
6921 }
6922 else
6923 {
6924 yysyntax_error_status = YYSYNTAX_ERROR;
6925 yymsgp = yymsg;
6926 }
6927 }
6928 yyerror (yymsgp);
6929 if (yysyntax_error_status == 2)
6930 goto yyexhaustedlab;
6931 }
6932 # undef YYSYNTAX_ERROR
6933 #endif
6934 }
6935
6936
6937
6938 if (yyerrstatus == 3)
6939 {
6940 /* If just tried and failed to reuse lookahead token after an
6941 error, discard it. */
6942
6943 if (yychar <= YYEOF)
6944 {
6945 /* Return failure if at end of input. */
6946 if (yychar == YYEOF)
6947 YYABORT;
6948 }
6949 else
6950 {
6951 yydestruct ("Error: discarding",
6952 yytoken, &yylval);
6953 yychar = YYEMPTY;
6954 }
6955 }
6956
6957 /* Else will try to reuse lookahead token after shifting the error
6958 token. */
6959 goto yyerrlab1;
6960
6961
6962 /*---------------------------------------------------.
6963 | yyerrorlab -- error raised explicitly by YYERROR. |
6964 `---------------------------------------------------*/
6965 yyerrorlab:
6966
6967 /* Pacify compilers like GCC when the user code never invokes
6968 YYERROR and the label yyerrorlab therefore never appears in user
6969 code. */
6970 if (/*CONSTCOND*/ 0)
6971 goto yyerrorlab;
6972
6973 /* Do not reclaim the symbols of the rule which action triggered
6974 this YYERROR. */
6975 YYPOPSTACK (yylen);
6976 yylen = 0;
6977 YY_STACK_PRINT (yyss, yyssp);
6978 yystate = *yyssp;
6979 goto yyerrlab1;
6980
6981
6982 /*-------------------------------------------------------------.
6983 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6984 `-------------------------------------------------------------*/
6985 yyerrlab1:
6986 yyerrstatus = 3; /* Each real token shifted decrements this. */
6987
6988 for (;;)
6989 {
6990 yyn = yypact[yystate];
6991 if (!yypact_value_is_default (yyn))
6992 {
6993 yyn += YYTERROR;
6994 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6995 {
6996 yyn = yytable[yyn];
6997 if (0 < yyn)
6998 break;
6999 }
7000 }
7001
7002 /* Pop the current state because it cannot handle the error token. */
7003 if (yyssp == yyss)
7004 YYABORT;
7005
7006
7007 yydestruct ("Error: popping",
7008 yystos[yystate], yyvsp);
7009 YYPOPSTACK (1);
7010 yystate = *yyssp;
7011 YY_STACK_PRINT (yyss, yyssp);
7012 }
7013
7014 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7015 *++yyvsp = yylval;
7016 YY_IGNORE_MAYBE_UNINITIALIZED_END
7017
7018
7019 /* Shift the error token. */
7020 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
7021
7022 yystate = yyn;
7023 goto yynewstate;
7024
7025
7026 /*-------------------------------------.
7027 | yyacceptlab -- YYACCEPT comes here. |
7028 `-------------------------------------*/
7029 yyacceptlab:
7030 yyresult = 0;
7031 goto yyreturn;
7032
7033 /*-----------------------------------.
7034 | yyabortlab -- YYABORT comes here. |
7035 `-----------------------------------*/
7036 yyabortlab:
7037 yyresult = 1;
7038 goto yyreturn;
7039
7040 #if !defined yyoverflow || YYERROR_VERBOSE
7041 /*-------------------------------------------------.
7042 | yyexhaustedlab -- memory exhaustion comes here. |
7043 `-------------------------------------------------*/
7044 yyexhaustedlab:
7045 yyerror (YY_("memory exhausted"));
7046 yyresult = 2;
7047 /* Fall through. */
7048 #endif
7049
7050 yyreturn:
7051 if (yychar != YYEMPTY)
7052 {
7053 /* Make sure we have latest lookahead translation. See comments at
7054 user semantic actions for why this is necessary. */
7055 yytoken = YYTRANSLATE (yychar);
7056 yydestruct ("Cleanup: discarding lookahead",
7057 yytoken, &yylval);
7058 }
7059 /* Do not reclaim the symbols of the rule which action triggered
7060 this YYABORT or YYACCEPT. */
7061 YYPOPSTACK (yylen);
7062 YY_STACK_PRINT (yyss, yyssp);
7063 while (yyssp != yyss)
7064 {
7065 yydestruct ("Cleanup: popping",
7066 yystos[*yyssp], yyvsp);
7067 YYPOPSTACK (1);
7068 }
7069 #ifndef yyoverflow
7070 if (yyss != yyssa)
7071 YYSTACK_FREE (yyss);
7072 #endif
7073 #if YYERROR_VERBOSE
7074 if (yymsg != yymsgbuf)
7075 YYSTACK_FREE (yymsg);
7076 #endif
7077 /* Make sure YYID is used. */
7078 return YYID (yyresult);
7079 }
7080
7081

Properties

Name Value
svn:eol-style native