#include <sys/cdefs.h>
#ifndef lint
#if 0
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
#else
__IDSTRING(yyrcsid, "$NetBSD: skeleton.c,v 1.14 1997/10/20 03:41:16 lukem Exp $");
#endif
#endif
#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 76 "cfg.y"
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <string.h>
#include <errno.h>
#include "route_struct.h"
#include "globals.h"
#include "route.h"
#include "dprint.h"
#include "sr_module.h"
#include "modparam.h"
#include "ip_addr.h"
#include "resolve.h"
#include "socket_info.h"
#include "name_alias.h"
#include "ut.h"
#include "dset.h"
#include "items.h"
#include "blacklists.h"
#include "config.h"
#ifdef USE_TLS
#include "tls/tls_config.h"
#include "tls/tls_domain.h"
#endif
#ifdef DEBUG_DMALLOC
#include <dmalloc.h>
#endif
/* hack to avoid alloca usage in the generated C file (needed for compiler
with no built in alloca, like icc*/
#undef _ALLOCA_H
extern int yylex();
static void yyerror(char* s);
static char* tmp;
static int i_tmp;
static void* cmd_tmp;
static struct socket_id* lst_tmp;
static int rt; /* Type of route block for find_export */
static str* str_tmp;
static str s_tmp;
static struct ip_addr* ip_tmp;
static xl_spec_t *spec;
static struct bl_rule *bl_head = 0;
static struct bl_rule *bl_tail = 0;
action_elem_t elems[MAX_ACTION_ELEMS];
#if !defined(USE_TLS) || !defined(USE_TCP) || !defined(TIMING_INFO) \
|| !defined(USE_MCAST)
static void warn(char* s);
#endif
static struct socket_id* mk_listen_id(char*, int, int);
static char *mpath=NULL;
static char mpath_buf[256];
static int mpath_len = 0;
extern int line;
#define mk_action0(_res, _type, _p1_type, _p2_type, _p1, _p2) \
do { \
_res = mk_action(_type, 0, 0, line); \
} while(0)
#define mk_action1(_res, _type, _p1_type, _p2_type, _p1, _p2) \
do { \
elems[0].type = _p1_type; \
elems[0].u.data = _p1; \
_res = mk_action(_type, 1, elems, line); \
} while(0)
#define mk_action2(_res, _type, _p1_type, _p2_type, _p1, _p2) \
do { \
elems[0].type = _p1_type; \
elems[0].u.data = _p1; \
elems[1].type = _p2_type; \
elems[1].u.data = _p2; \
_res = mk_action(_type, 2, elems, line); \
} while(0)
#define mk_action3(_res, _type, _p1_type, _p2_type, _p3_type, _p1, _p2, _p3) \
do { \
elems[0].type = _p1_type; \
elems[0].u.data = _p1; \
elems[1].type = _p2_type; \
elems[1].u.data = _p2; \
elems[2].type = _p3_type; \
elems[2].u.data = _p3; \
_res = mk_action(_type, 3, elems, line); \
} while(0)
#line 177 "cfg.y"
typedef union {
long intval;
unsigned long uval;
char* strval;
struct expr* expr;
struct action* action;
struct net* ipnet;
struct ip_addr* ipaddr;
struct socket_id* sockid;
struct _xl_spec *specval;
} YYSTYPE;
#line 132 "cfg.tab.c"
#define FORWARD 257
#define SEND 258
#define DROP 259
#define EXIT 260
#define RETURN 261
#define LOG_TOK 262
#define ERROR 263
#define ROUTE 264
#define ROUTE_FAILURE 265
#define ROUTE_ONREPLY 266
#define ROUTE_BRANCH 267
#define ROUTE_ERROR 268
#define SET_HOST 269
#define SET_HOSTPORT 270
#define PREFIX 271
#define SET_TIME_STAMP 272
#define RESET_TIME_STAMP 273
#define DIFF_TIME_STAMP 274
#define STRIP 275
#define STRIP_TAIL 276
#define APPEND_BRANCH 277
#define SET_USER 278
#define SET_USERPASS 279
#define SET_PORT 280
#define SET_URI 281
#define REVERT_URI 282
#define SET_DSTURI 283
#define RESET_DSTURI 284
#define ISDSTURISET 285
#define FORCE_RPORT 286
#define FORCE_LOCAL_RPORT 287
#define FORCE_TCP_ALIAS 288
#define IF 289
#define ELSE 290
#define SWITCH 291
#define CASE 292
#define DEFAULT 293
#define SBREAK 294
#define SET_ADV_ADDRESS 295
#define SET_ADV_PORT 296
#define FORCE_SEND_SOCKET 297
#define SERIALIZE_BRANCHES 298
#define NEXT_BRANCHES 299
#define USE_BLACKLIST 300
#define MAX_LEN 301
#define SETFLAG 302
#define RESETFLAG 303
#define ISFLAGSET 304
#define SETBFLAG 305
#define RESETBFLAG 306
#define ISBFLAGSET 307
#define SETSFLAG 308
#define RESETSFLAG 309
#define ISSFLAGSET 310
#define METHOD 311
#define URI 312
#define FROM_URI 313
#define TO_URI 314
#define SRCIP 315
#define SRCPORT 316
#define DSTIP 317
#define DSTPORT 318
#define PROTO 319
#define AF 320
#define MYSELF 321
#define MSGLEN 322
#define UDP 323
#define TCP 324
#define TLS 325
#define NULLV 326
#define DEBUG 327
#define FORK 328
#define LOGSTDERROR 329
#define LOGFACILITY 330
#define LOGNAME 331
#define AVP_ALIASES 332
#define LISTEN 333
#define ALIAS 334
#define AUTO_ALIASES 335
#define DNS 336
#define REV_DNS 337
#define DNS_TRY_IPV6 338
#define DNS_RETR_TIME 339
#define DNS_RETR_NO 340
#define DNS_SERVERS_NO 341
#define DNS_USE_SEARCH 342
#define PORT 343
#define CHILDREN 344
#define CHECK_VIA 345
#define MEMLOG 346
#define SIP_WARNING 347
#define SOCK_MODE 348
#define SOCK_USER 349
#define SOCK_GROUP 350
#define UNIX_SOCK 351
#define UNIX_SOCK_CHILDREN 352
#define UNIX_TX_TIMEOUT 353
#define SERVER_SIGNATURE 354
#define SERVER_HEADER 355
#define USER_AGENT_HEADER 356
#define REPLY_TO_VIA 357
#define LOADMODULE 358
#define MPATH 359
#define MODPARAM 360
#define MAXBUFFER 361
#define USER 362
#define GROUP 363
#define CHROOT 364
#define WDIR 365
#define MHOMED 366
#define DISABLE_TCP 367
#define TCP_ACCEPT_ALIASES 368
#define TCP_CHILDREN 369
#define TCP_CONNECT_TIMEOUT 370
#define TCP_SEND_TIMEOUT 371
#define TCP_CON_LIFETIME 372
#define TCP_POLL_METHOD 373
#define TCP_MAX_CONNECTIONS 374
#define DISABLE_TLS 375
#define TLSLOG 376
#define TLS_PORT_NO 377
#define TLS_METHOD 378
#define TLS_HANDSHAKE_TIMEOUT 379
#define TLS_SEND_TIMEOUT 380
#define TLS_SERVER_DOMAIN 381
#define TLS_CLIENT_DOMAIN 382
#define TLS_CLIENT_DOMAIN_AVP 383
#define SSLv23 384
#define SSLv2 385
#define SSLv3 386
#define TLSv1 387
#define TLS_VERIFY_CLIENT 388
#define TLS_VERIFY_SERVER 389
#define TLS_REQUIRE_CLIENT_CERTIFICATE 390
#define TLS_CERTIFICATE 391
#define TLS_PRIVATE_KEY 392
#define TLS_CA_LIST 393
#define TLS_CIPHERS_LIST 394
#define ADVERTISED_ADDRESS 395
#define ADVERTISED_PORT 396
#define DISABLE_CORE 397
#define OPEN_FD_LIMIT 398
#define MCAST_LOOPBACK 399
#define MCAST_TTL 400
#define TOS 401
#define DISABLE_DNS_FAILOVER 402
#define DISABLE_DNS_BLACKLIST 403
#define DST_BLACKLIST 404
#define EQUAL 405
#define EQUAL_T 406
#define GT 407
#define LT 408
#define GTE 409
#define LTE 410
#define DIFF 411
#define MATCH 412
#define NOTMATCH 413
#define PLUSEQ 414
#define MINUSEQ 415
#define SLASHEQ 416
#define MULTEQ 417
#define MODULOEQ 418
#define BANDEQ 419
#define BOREQ 420
#define BXOREQ 421
#define OR 422
#define AND 423
#define BOR 424
#define BAND 425
#define BXOR 426
#define PLUS 427
#define MINUS 428
#define SLASH 429
#define MULT 430
#define MODULO 431
#define NOT 432
#define BNOT 433
#define NUMBER 434
#define ID 435
#define STRING 436
#define SCRIPTVAR 437
#define IPV6ADDR 438
#define COMMA 439
#define SEMICOLON 440
#define RPAREN 441
#define LPAREN 442
#define LBRACE 443
#define RBRACE 444
#define LBRACK 445
#define RBRACK 446
#define DOT 447
#define CR 448
#define COLON 449
#define ANY 450
#define SCRIPTVARERR 451
#define YYERRCODE 256
short yylhs[] = { -1,
0, 38, 38, 38, 39, 39, 43, 39, 45, 39,
47, 39, 49, 39, 51, 39, 39, 24, 24, 24,
27, 27, 27, 27, 28, 28, 37, 37, 37, 26,
26, 26, 26, 26, 25, 25, 52, 52, 53, 53,
53, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
40, 40, 40, 40, 41, 41, 41, 41, 41, 20,
20, 17, 19, 18, 18, 56, 54, 58, 55, 60,
55, 57, 57, 59, 59, 61, 61, 61, 61, 61,
61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
61, 61, 62, 62, 62, 62, 62, 62, 62, 62,
62, 62, 62, 62, 62, 62, 62, 42, 42, 42,
44, 44, 46, 46, 46, 48, 48, 50, 50, 1,
1, 1, 1, 1, 1, 31, 31, 32, 32, 32,
32, 33, 33, 35, 35, 34, 34, 34, 30, 30,
30, 22, 22, 2, 2, 2, 2, 2, 2, 2,
2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 21, 21, 21, 21, 29,
29, 23, 23, 23, 36, 36, 36, 36, 36, 36,
36, 36, 36, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 11,
11, 10, 10, 10, 10, 10, 9, 9, 9, 6,
6, 6, 5, 5, 5, 5, 5, 5, 8, 8,
12, 13, 13, 14, 14, 15, 15, 15, 15, 15,
15, 15, 15, 16, 16, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7,
};
short yylen[] = { 2,
1, 2, 1, 2, 1, 1, 0, 2, 0, 2,
0, 2, 0, 2, 0, 2, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
3, 3, 5, 3, 1, 2, 9, 10, 3, 1,
2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
2, 3, 2, 3, 2, 3, 2, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 1, 1, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
3, 2, 2, 7, 2, 2, 8, 8, 2, 1,
1, 7, 1, 1, 3, 0, 10, 0, 10, 0,
8, 1, 2, 1, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 4, 7, 2,
7, 2, 4, 7, 2, 7, 2, 4, 2, 3,
3, 2, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
3, 3, 3, 3, 3, 2, 3, 3, 3, 3,
3, 3, 3, 3, 3, 2, 3, 3, 2, 3,
3, 2, 3, 3, 2, 3, 3, 2, 3, 3,
3, 2, 3, 3, 3, 2, 3, 3, 3, 2,
3, 3, 3, 3, 2, 3, 3, 1, 3, 1,
1, 1, 3, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 2, 3, 3,
3, 1, 1, 1, 3, 2, 1, 3, 2, 2,
1, 2, 2, 1, 1, 2, 1, 2, 3, 5,
7, 2, 1, 2, 1, 6, 5, 4, 3, 6,
5, 4, 3, 3, 2, 4, 3, 2, 4, 4,
2, 4, 3, 1, 3, 1, 4, 3, 1, 4,
6, 2, 4, 4, 2, 4, 2, 4, 2, 4,
2, 4, 2, 4, 2, 6, 4, 2, 6, 4,
2, 6, 4, 2, 6, 2, 4, 4, 2, 4,
4, 2, 4, 4, 2, 4, 4, 2, 4, 4,
2, 4, 4, 2, 4, 3, 6, 2, 4, 2,
4, 6, 4, 3, 1, 4, 2, 4, 4, 2,
4, 4, 2, 4, 4, 2, 4, 4, 2, 4,
3, 1, 4, 2, 4, 3, 1, 3, 1, 3,
1, 3, 1, 4, 3, 1, 4, 4, 4, 2,
4, 4, 2, 4, 4, 2, 4, 4, 2, 3,
4, 2, 4, 4, 2, 3, 4, 6, 4,
};
short yydefred[] = { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 17, 0, 0, 3, 5,
6, 0, 0, 0, 0, 0, 156, 157, 193, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
59, 0, 61, 0, 63, 0, 65, 0, 67, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 196, 195, 0, 199, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 190, 0, 192,
0, 0, 0, 2, 0, 8, 0, 10, 0, 12,
0, 14, 0, 16, 43, 42, 45, 44, 47, 46,
49, 48, 51, 50, 53, 52, 167, 21, 22, 23,
0, 342, 19, 203, 0, 24, 200, 201, 204, 18,
0, 0, 166, 0, 0, 169, 168, 171, 170, 55,
54, 57, 56, 58, 60, 62, 64, 66, 71, 68,
73, 72, 75, 74, 77, 76, 79, 78, 81, 80,
84, 83, 82, 87, 86, 85, 89, 88, 91, 90,
93, 92, 159, 158, 161, 160, 163, 162, 165, 164,
188, 187, 0, 70, 69, 96, 95, 94, 99, 98,
97, 102, 101, 100, 105, 104, 103, 107, 106, 109,
108, 111, 110, 113, 112, 115, 114, 117, 116, 119,
118, 122, 120, 121, 124, 123, 126, 125, 128, 127,
130, 129, 135, 131, 132, 133, 134, 151, 150, 153,
152, 0, 0, 0, 155, 154, 137, 136, 139, 138,
141, 140, 143, 142, 145, 144, 147, 146, 149, 148,
173, 172, 175, 174, 177, 176, 179, 178, 181, 180,
183, 182, 186, 184, 185, 189, 191, 0, 250, 0,
0, 252, 0, 255, 0, 0, 257, 0, 259, 0,
0, 0, 341, 0, 0, 0, 36, 0, 0, 0,
210, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 282,
387, 283, 381, 0, 0, 384, 0, 385, 0, 0,
0, 0, 0, 0, 0, 0, 205, 344, 343, 34,
25, 26, 31, 0, 0, 0, 0, 0, 0, 408,
0, 411, 0, 0, 0, 0, 422, 0, 446, 0,
449, 0, 452, 0, 477, 0, 455, 0, 464, 0,
470, 0, 468, 0, 461, 0, 458, 0, 0, 483,
0, 486, 0, 480, 0, 489, 0, 0, 494, 0,
0, 0, 0, 0, 0, 0, 279, 280, 281, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
27, 0, 0, 0, 0, 265, 284, 372, 373, 285,
374, 0, 0, 286, 0, 510, 0, 513, 0, 516,
0, 519, 0, 522, 0, 525, 0, 425, 0, 427,
0, 429, 0, 438, 0, 441, 0, 444, 0, 431,
0, 433, 0, 435, 0, 0, 382, 248, 380, 388,
383, 386, 0, 346, 347, 348, 349, 350, 351, 352,
353, 0, 0, 0, 253, 0, 0, 258, 0, 0,
0, 206, 0, 208, 0, 0, 40, 0, 0, 0,
407, 0, 0, 413, 415, 418, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 466, 0, 0, 0, 0, 0, 0,
0, 474, 0, 0, 0, 0, 0, 0, 0, 0,
491, 0, 0, 496, 498, 500, 502, 0, 0, 505,
296, 266, 268, 269, 270, 271, 267, 272, 273, 276,
277, 278, 0, 326, 0, 0, 309, 274, 275, 0,
330, 0, 0, 312, 0, 315, 0, 318, 0, 335,
0, 322, 0, 28, 29, 262, 0, 376, 0, 0,
0, 0, 0, 355, 0, 358, 0, 359, 0, 0,
354, 0, 0, 0, 377, 0, 0, 0, 0, 0,
306, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 520, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 526, 371, 0,
0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 214, 0, 0, 0,
41, 0, 194, 409, 406, 412, 410, 417, 423, 420,
0, 447, 0, 450, 448, 453, 451, 478, 476, 456,
454, 465, 463, 471, 469, 0, 462, 460, 459, 457,
0, 473, 484, 482, 487, 485, 481, 479, 490, 488,
495, 493, 507, 504, 295, 294, 293, 324, 0, 291,
325, 323, 0, 308, 307, 328, 289, 329, 327, 0,
311, 310, 314, 313, 317, 316, 334, 332, 333, 331,
321, 320, 319, 263, 375, 0, 0, 0, 0, 368,
0, 0, 0, 0, 0, 0, 0, 0, 0, 264,
0, 261, 260, 379, 0, 0, 301, 302, 299, 298,
297, 300, 304, 305, 303, 0, 0, 509, 508, 512,
511, 515, 514, 518, 517, 521, 524, 523, 424, 426,
428, 0, 437, 0, 440, 0, 443, 430, 432, 434,
529, 0, 527, 0, 0, 0, 0, 0, 197, 198,
0, 0, 0, 0, 0, 0, 0, 211, 215, 0,
0, 0, 39, 0, 0, 0, 0, 0, 369, 0,
0, 0, 360, 361, 363, 362, 364, 378, 390, 0,
0, 0, 0, 0, 249, 251, 254, 256, 202, 0,
0, 0, 0, 0, 0, 0, 0, 212, 237, 233,
234, 235, 236, 247, 246, 239, 238, 241, 240, 243,
242, 245, 244, 0, 0, 0, 421, 445, 467, 472,
339, 0, 336, 0, 0, 0, 395, 436, 439, 442,
528, 0, 0, 0, 0, 0, 0, 0, 207, 213,
209, 0, 0, 0, 0, 391, 0, 394, 392, 220,
216, 217, 218, 219, 230, 229, 232, 231, 222, 221,
224, 223, 226, 225, 228, 227, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
401, 0, 397, 0, 0, 37, 400, 396, 38,
};
short yydgoto[] = { 77,
515, 516, 686, 687, 423, 424, 425, 426, 696, 520,
427, 428, 965, 966, 967, 989, 207, 208, 209, 210,
800, 429, 211, 212, 213, 214, 215, 443, 365, 690,
658, 651, 652, 699, 700, 572, 691, 78, 79, 80,
81, 176, 82, 178, 83, 180, 84, 182, 85, 184,
86, 587, 588, 87, 88, 739, 937, 748, 746, 447,
938, 747,
};
short yysindex[] = { 5569,
-357, -344, -335, -293, -265, -261, -241, 1, 15, 54,
57, 73, -240, -234, -230, -224, -222, 105, 115, 121,
127, 128, 188, 240, 338, 341, 342, 344, 345, 355,
375, 383, -145, 402, -232, 403, 404, 405, 520, 523,
527, 530, 546, 548, 552, 553, 616, 617, 618, 619,
659, 663, 665, 669, 672, 51, 92, 678, 679, 684,
685, 690, 700, 705, 708, 766, 767, 768, 769, 789,
792, 809, -215, -138, 810, 0, 0, 5718, 0, 0,
0, -92, 275, 340, 359, 339, 0, 0, 0, 4,
151, 152, 12, -143, -119, -242, -236, 153, 154, 156,
0, 120, 0, 334, 0, 335, 0, 473, 0, 497,
157, 160, 162, 165, 171, 174, -166, -164, -86, 175,
176, 177, -78, -69, 178, 0, 0, -61, 0, 337,
179, -82, -76, -74, -72, 180, 181, 201, 202, 204,
207, 212, -70, 213, 214, 215, 216, 132, 217, 218,
48, 762, 219, 220, 221, 228, -8, -7, 25, 58,
-198, 286, 287, 288, 289, 307, -11, 0, 608, 0,
662, 677, -357, 0, -217, 0, -226, 0, -191, 0,
-223, 0, -237, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
745, 0, 0, 0, 761, 0, 0, 0, 0, 0,
-324, 782, 0, 631, 783, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 777, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 784, 771, 808, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 814, 0, 5585,
800, 0, 887, 0, 5585, 888, 0, 889, 0, 5585,
890, 772, 0, 1086, 908, -227, 0, 514, 909, -407,
0, -407, 901, -187, -185, 904, 914, 915, -181, -180,
-179, -178, -177, -176, -162, -160, -159, -158, -157, 916,
-156, -155, -154, -148, 917, -147, 939, 941, 942, 950,
969, 3331, 970, -132, -129, -122, -111, -110, -109, -108,
-107, -105, -104, -103, -102, -100, -99, -98, 971, 0,
0, 0, 0, 2119, -209, 0, 974, 0, 1185, 990,
992, 2315, 993, 994, 2370, 1000, 0, 0, 0, 0,
0, 0, 0, 1017, 1028, 1022, 1026, 1045, -317, 0,
-134, 0, 91, 1052, 1053, 97, 0, -79, 0, 100,
0, 308, 0, 116, 0, 117, 0, 126, 0, 129,
0, -183, 0, 361, 0, 362, 0, 363, -273, 0,
130, 0, 131, 0, 133, 0, 134, 1054, 0, 135,
1061, 1071, 1082, 1083, -89, 502, 0, 0, 0, 533,
149, 650, 223, 489, 510, 233, 638, 1093, 1095, 3331,
0, 3331, 5044, 3526, 4990, 0, 0, 0, 0, 0,
0, 1138, 691, 0, -282, 0, -192, 0, 364, 0,
-218, 0, 365, 0, -136, 0, 136, 0, 1096, 0,
1099, 0, 1101, 0, 1144, 0, 1145, 0, 1148, 0,
1150, 0, 1151, 0, 1157, -90, 0, 0, 0, 0,
0, 0, 1254, 0, 0, 0, 0, 0, 0, 0,
0, 3526, 1152, 1153, 0, 1164, 1166, 0, 1159, -407,
652, 0, 1147, 0, 1192, -288, 0, -188, 1194, 1196,
0, 1198, 1199, 0, 0, 0, 1202, 1204, 1205, 1149,
1207, 1155, 1208, 1209, 1210, 1221, 1222, 1223, 1224, 1246,
1248, 1249, 1250, 0, 1257, 1278, 1277, 1279, 1301, 1303,
-387, 0, 1304, 1305, 1312, 1331, 1332, 1333, 1334, 1356,
0, 1358, 1359, 0, 0, 0, 0, 1360, 1367, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -67, 0, 96, -65, 0, 0, 0, 366,
0, 101, -59, 0, 367, 0, -239, 0, 368, 0,
794, 0, 155, 0, 0, 0, -280, 0, 2425, 533,
650, 3526, 971, 0, 3526, 0, 799, 0, 1154, 691,
0, 3331, 3331, 5098, 0, 1343, 166, 0, 72, 94,
0, 1398, -52, 1377, 1388, 1389, 1390, 1392, 1394, 1395,
1400, 1401, 1403, 0, 1404, 1405, 1406, 1408, 1409, 42,
326, 433, 1410, 1411, 1412, 1413, 434, 0, 0, 1191,
5585, 5585, 5585, 5585, 1414, 0, 1415, 1416, 1396, 1450,
1453, 1454, 1455, 1457, 1458, 370, 0, 1421, -288, 1426,
0, -317, 0, 0, 0, 0, 0, 0, 0, 0,
1430, 0, 1431, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1432, 0, 0, 0, 0,
1433, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1441, 0,
0, 0, -324, 0, 0, 0, 0, 0, 0, -324,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1550, 137, 1551, 138, 0,
813, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3526, 0,
139, 0, 0, 0, 2621, 5293, 0, 0, 0, 0,
0, 0, 0, 0, 0, -324, 1442, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1439, 0, 1456, 0, 1460, 0, 0, 0, 0,
0, 1448, 0, 2676, 2731, 2927, 2982, 1462, 0, 0,
1220, 163, 369, 140, 141, 142, 143, 0, 0, 1147,
1447, 48, 0, 1459, 1461, 1463, 1464, -233, 0, 821,
821, 821, 0, 0, 0, 0, 0, 0, 0, 1596,
1465, 1466, 1467, 1468, 0, 0, 0, 0, 0, 1486,
1492, 1494, 1496, 1505, 1506, 1508, 107, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 817, 48, 1473, 0, 0, 0, 0,
0, 745, 0, 819, 1470, 210, 0, 0, 0, 0,
0, 707, 371, 372, 144, 145, 146, 147, 0, 0,
0, 1476, -407, 1469, 1471, 0, 1472, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -407, 1477, 5347, 5401,
5585, 1478, 1483, 1482, 3037, 1484, 3222, 3277, 1487, 1485,
0, 1488, 0, 1499, 1500, 0, 0, 0, 0,
};
short yyrindex[] = { 526,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 787, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336, 488, 0, 937, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1490, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1091, 1146, 1201, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1397,
0, 0, 0, 0, 1452, 0, 1507, 1703, 1758, 1813,
2009, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 637, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 4438, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3592, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -21, 0, 0, 0, 0, 0,
0, -21, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3778, 0, 0, 0, 0, 0, 3832, 0,
0, 0, 0, 0, 0, 2064, 78, 785, 0, 0,
0, -21, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 4492,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 4189, 0,
0, 0, 4687, 0, 0, 0, 0, 0, 0, 4741,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 148, 0, 148, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4795, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3886,
4081, 4135, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 4384, 0, 0, 0, 1501, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 198, 483,
1502, 0, 0, 0, 486, 0, 490, 1510, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
};
short yygindex[] = { 0,
-419, 0, -377, -509, -420, -353, -384, -374, 1081, 0,
-371, 0, 0, 0, 977, 0, 0, 0, 1735, -151,
-652, -393, -553, -153, -55, 1418, -106, -367, 0, -381,
-456, -448, 0, -451, 755, 0, -396, 0, 1873, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1200, 0, 0, 0, 0, 0, 0, 1055, 0,
1019, -733,
};
#define YYTABLESIZE 6166
short yytable[] = { 312,
314, 432, 446, 559, 448, 524, 435, 332, 522, 807,
1, 559, 899, 197, 559, 101, 813, 518, 359, 216,
523, 103, 961, 129, 517, 105, 441, 519, 440, 352,
521, 107, 357, 109, 198, 199, 200, 709, 349, 650,
168, 217, 442, 655, 653, 662, 560, 89, 656, 671,
663, 781, 659, 782, 659, 659, 659, 331, 659, 597,
90, 600, 730, 705, 354, 697, 702, 751, 450, 91,
452, 703, 613, 698, 457, 459, 461, 463, 465, 467,
198, 199, 200, 198, 199, 200, 198, 199, 200, 241,
676, 244, 677, 469, 695, 471, 473, 475, 477, 480,
482, 484, 803, 363, 198, 199, 200, 486, 489, 810,
126, 92, 193, 524, 585, 524, 522, 170, 522, 713,
689, 589, 364, 526, 586, 518, 528, 518, 523, 688,
523, 704, 517, 530, 517, 519, 195, 519, 521, 93,
521, 692, 693, 94, 532, 534, 536, 538, 540, 856,
542, 544, 546, 548, 420, 550, 552, 554, 367, 679,
824, 206, 621, 95, 102, 726, 638, 622, 422, 247,
104, 175, 830, 266, 106, 831, 598, 255, 689, 269,
108, 272, 110, 275, 738, 292, 257, 688, 795, 169,
801, 201, 202, 203, 261, 204, 808, 201, 202, 203,
962, 204, 205, 854, 204, 360, 441, 206, 205, 130,
206, 205, 736, 206, 444, 201, 202, 203, 353, 204,
899, 358, 442, 826, 828, 350, 205, 351, 827, 829,
561, 206, 697, 702, 276, 201, 202, 203, 841, 204,
698, 201, 202, 203, 343, 204, 205, 323, 325, 956,
752, 355, 205, 356, 451, 753, 453, 614, 559, 185,
458, 460, 462, 464, 466, 468, 171, 191, 242, 243,
245, 246, 842, 843, 7, 9, 11, 13, 15, 470,
327, 472, 474, 476, 478, 481, 483, 485, 689, 820,
127, 689, 194, 487, 490, 524, 524, 688, 522, 522,
688, 590, 982, 852, 714, 851, 591, 518, 518, 527,
523, 523, 529, 329, 517, 517, 196, 519, 519, 531,
521, 521, 910, 911, 912, 913, 914, 915, 916, 917,
533, 535, 537, 539, 541, 20, 543, 545, 547, 549,
845, 551, 553, 555, 639, 727, 592, 508, 509, 248,
728, 640, 267, 268, 511, 601, 599, 256, 270, 271,
273, 274, 276, 277, 293, 294, 258, 796, 797, 202,
802, 605, 607, 706, 262, 202, 809, 884, 885, 886,
887, 609, 202, 855, 611, 623, 625, 303, 627, 629,
632, 715, 801, 808, 854, 946, 948, 950, 952, 999,
1001, 1003, 1005, 276, 657, 96, 187, 189, 218, 220,
821, 222, 229, 276, 276, 231, 798, 233, 939, 97,
235, 806, 344, 345, 559, 695, 237, 324, 326, 239,
249, 251, 253, 259, 264, 278, 280, 186, 689, 689,
689, 689, 689, 689, 689, 689, 192, 688, 688, 688,
688, 688, 688, 688, 688, 822, 282, 284, 98, 286,
328, 99, 288, 559, 559, 559, 559, 290, 295, 297,
299, 301, 308, 310, 315, 317, 319, 100, 664, 750,
872, 201, 873, 321, 930, 204, 847, 30, 670, 403,
403, 848, 205, 330, 931, 151, 932, 933, 934, 935,
936, 964, 987, 799, 274, 274, 849, 850, 420, 111,
799, 274, 276, 276, 276, 304, 305, 306, 307, 112,
508, 509, 422, 508, 509, 113, 593, 511, 276, 201,
511, 114, 115, 204, 201, 602, 152, 596, 204, 177,
205, 333, 335, 337, 339, 205, 940, 941, 942, 943,
979, 606, 608, 224, 642, 643, 644, 645, 646, 647,
814, 610, 341, 603, 612, 624, 626, 985, 628, 630,
633, 716, 802, 809, 855, 947, 949, 951, 953, 1000,
1002, 1004, 1006, 276, 188, 190, 219, 221, 823, 223,
230, 20, 116, 232, 559, 234, 559, 559, 236, 20,
20, 20, 20, 20, 238, 179, 183, 240, 250, 252,
254, 260, 265, 279, 281, 1008, 615, 617, 619, 707,
711, 804, 811, 815, 944, 181, 995, 997, 642, 643,
644, 645, 646, 647, 283, 285, 32, 287, 642, 1012,
289, 403, 901, 647, 117, 291, 296, 298, 300, 302,
309, 311, 316, 318, 320, 1015, 1017, 1018, 20, 20,
20, 322, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 334,
336, 338, 340, 20, 20, 20, 20, 20, 20, 20,
20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
342, 604, 118, 30, 666, 119, 120, 740, 121, 122,
799, 30, 30, 30, 30, 30, 963, 641, 741, 123,
742, 743, 744, 745, 874, 668, 875, 225, 226, 20,
20, 20, 263, 20, 399, 399, 20, 402, 402, 124,
20, 398, 398, 20, 20, 20, 4, 125, 654, 7,
9, 11, 13, 15, 616, 618, 620, 708, 712, 805,
812, 816, 945, 799, 996, 998, 128, 131, 132, 133,
30, 30, 30, 898, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 876, 882, 877, 883, 30, 30, 30, 30, 30,
30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
30, 30, 32, 672, 642, 643, 644, 645, 646, 647,
32, 32, 32, 32, 32, 661, 227, 642, 643, 644,
645, 646, 647, 648, 649, 642, 643, 644, 645, 646,
647, 30, 30, 30, 134, 30, 399, 135, 30, 402,
228, 136, 30, 398, 137, 30, 35, 30, 642, 643,
644, 645, 646, 647, 648, 649, 701, 201, 202, 203,
138, 204, 139, 198, 199, 200, 140, 141, 205, 32,
32, 32, 990, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
142, 143, 144, 145, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 346, 4, 642, 643, 644, 645, 646, 647, 817,
4, 4, 4, 4, 4, 642, 643, 644, 645, 646,
647, 648, 649, 146, 201, 202, 203, 147, 204, 148,
32, 32, 32, 149, 32, 205, 150, 32, 508, 509,
206, 32, 153, 154, 32, 511, 32, 737, 155, 156,
991, 992, 993, 994, 157, 347, 642, 643, 644, 645,
646, 647, 648, 649, 158, 497, 498, 499, 818, 159,
819, 348, 160, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
161, 162, 163, 164, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 361, 35, 165, 740, 201, 166, 313, 204, 204,
35, 35, 35, 35, 35, 741, 205, 742, 743, 744,
745, 275, 275, 167, 172, 369, 371, 437, 275, 277,
277, 277, 832, 833, 834, 835, 836, 837, 838, 839,
366, 368, 370, 430, 4, 277, 832, 833, 834, 835,
836, 837, 838, 839, 840, 508, 509, 835, 836, 837,
838, 839, 511, 909, 984, 660, 372, 665, 667, 669,
981, 673, 373, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
431, 433, 434, 436, 35, 35, 35, 35, 35, 35,
35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
35, 438, 439, 449, 445, 454, 414, 414, 414, 414,
414, 414, 414, 414, 414, 455, 456, 479, 488, 414,
414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
414, 414, 414, 414, 414, 414, 414, 414, 414, 414,
491, 414, 492, 493, 35, 414, 414, 414, 414, 414,
414, 494, 414, 414, 414, 414, 414, 414, 414, 414,
414, 416, 416, 416, 416, 416, 416, 416, 416, 416,
495, 525, 556, 562, 416, 416, 416, 416, 416, 416,
416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
416, 416, 416, 416, 416, 573, 416, 574, 576, 577,
416, 416, 416, 416, 416, 416, 579, 416, 416, 416,
416, 416, 416, 416, 416, 416, 419, 419, 419, 419,
419, 419, 419, 419, 419, 580, 581, 582, 583, 419,
419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
419, 419, 419, 419, 419, 419, 419, 419, 419, 419,
584, 419, 594, 595, 631, 419, 419, 419, 419, 419,
419, 634, 419, 419, 419, 419, 419, 419, 419, 419,
419, 635, 414, 414, 414, 414, 414, 414, 414, 414,
414, 414, 636, 637, 740, 414, 674, 414, 675, 717,
414, 414, 718, 414, 719, 741, 414, 742, 743, 744,
745, 414, 563, 642, 643, 644, 645, 646, 647, 648,
649, 564, 565, 566, 567, 568, 569, 570, 571, 642,
643, 644, 645, 646, 647, 648, 649, 416, 416, 416,
416, 416, 416, 416, 416, 416, 416, 720, 721, 729,
416, 722, 416, 723, 724, 416, 416, 761, 416, 563,
725, 416, 735, 763, 731, 732, 416, 930, 564, 565,
566, 567, 568, 569, 570, 571, 733, 931, 734, 932,
933, 934, 935, 936, 832, 833, 834, 835, 836, 837,
838, 839, 419, 419, 419, 419, 419, 419, 419, 419,
419, 419, 846, 749, 754, 419, 755, 419, 756, 757,
419, 419, 758, 419, 759, 760, 419, 762, 764, 765,
766, 419, 475, 475, 475, 475, 475, 475, 475, 475,
475, 767, 768, 769, 770, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
475, 475, 475, 475, 475, 475, 771, 475, 772, 773,
774, 475, 475, 475, 475, 475, 475, 775, 475, 475,
475, 475, 475, 475, 475, 475, 475, 492, 492, 492,
492, 492, 492, 492, 492, 492, 776, 777, 853, 778,
492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
492, 779, 492, 780, 783, 784, 492, 492, 492, 492,
492, 492, 785, 492, 492, 492, 492, 492, 492, 492,
492, 492, 497, 497, 497, 497, 497, 497, 497, 497,
497, 786, 787, 788, 789, 497, 497, 497, 497, 497,
497, 497, 497, 497, 497, 497, 497, 497, 497, 497,
497, 497, 497, 497, 497, 497, 790, 497, 791, 792,
793, 497, 497, 497, 497, 497, 497, 794, 497, 497,
497, 497, 497, 497, 497, 497, 497, 857, 475, 475,
475, 475, 475, 475, 475, 475, 475, 475, 858, 859,
860, 475, 861, 475, 862, 863, 475, 475, 891, 475,
864, 865, 475, 866, 867, 868, 869, 475, 870, 871,
878, 879, 880, 881, 892, 889, 890, 893, 894, 895,
888, 896, 897, 900, 902, 904, 905, 906, 907, 908,
798, 806, 921, 492, 492, 492, 492, 492, 492, 492,
492, 492, 492, 924, 920, 955, 492, 964, 492, 922,
972, 492, 492, 923, 492, 929, 973, 492, 974, 957,
975, 958, 492, 959, 960, 968, 969, 970, 971, 976,
977, 983, 978, 986, 1007, 1013, 1019, 1009, 1020, 1010,
1011, 1021, 1025, 1023, 340, 1026, 919, 1027, 497, 497,
497, 497, 497, 497, 497, 497, 497, 497, 1028, 362,
1029, 497, 988, 497, 393, 405, 497, 497, 710, 497,
174, 903, 497, 404, 954, 980, 0, 497, 499, 499,
499, 499, 499, 499, 499, 499, 499, 0, 0, 0,
0, 499, 499, 499, 499, 499, 499, 499, 499, 499,
499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
499, 499, 0, 499, 0, 0, 0, 499, 499, 499,
499, 499, 499, 0, 499, 499, 499, 499, 499, 499,
499, 499, 499, 501, 501, 501, 501, 501, 501, 501,
501, 501, 0, 0, 0, 0, 501, 501, 501, 501,
501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
501, 501, 501, 501, 501, 501, 501, 0, 501, 0,
0, 0, 501, 501, 501, 501, 501, 501, 0, 501,
501, 501, 501, 501, 501, 501, 501, 501, 503, 503,
503, 503, 503, 503, 503, 503, 503, 0, 0, 0,
0, 503, 503, 503, 503, 503, 503, 503, 503, 503,
503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
503, 503, 0, 503, 0, 0, 0, 503, 503, 503,
503, 503, 503, 0, 503, 503, 503, 503, 503, 503,
503, 503, 503, 0, 499, 499, 499, 499, 499, 499,
499, 499, 499, 499, 0, 0, 0, 499, 0, 499,
0, 0, 499, 499, 0, 499, 0, 0, 499, 0,
0, 0, 0, 499, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 501,
501, 501, 501, 501, 501, 501, 501, 501, 501, 0,
0, 0, 501, 0, 501, 0, 0, 501, 501, 0,
501, 0, 0, 501, 0, 0, 0, 0, 501, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 503, 503, 503, 503, 503, 503,
503, 503, 503, 503, 0, 0, 0, 503, 0, 503,
0, 0, 503, 503, 0, 503, 0, 0, 503, 0,
0, 0, 0, 503, 506, 506, 506, 506, 506, 506,
506, 506, 506, 0, 0, 0, 0, 506, 506, 506,
506, 506, 506, 506, 506, 506, 506, 506, 506, 506,
506, 506, 506, 506, 506, 506, 506, 506, 0, 506,
0, 0, 0, 506, 506, 506, 506, 506, 506, 0,
506, 506, 506, 506, 506, 506, 506, 506, 506, 389,
389, 389, 389, 389, 389, 389, 389, 389, 0, 0,
0, 0, 389, 389, 389, 389, 389, 389, 389, 389,
389, 389, 389, 389, 389, 389, 389, 389, 389, 389,
389, 389, 389, 0, 389, 389, 389, 389, 389, 389,
389, 389, 389, 389, 0, 389, 389, 389, 389, 389,
389, 389, 389, 389, 557, 374, 375, 376, 377, 378,
379, 380, 381, 0, 0, 0, 0, 382, 383, 384,
385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
395, 396, 397, 398, 399, 400, 401, 402, 0, 403,
0, 0, 0, 404, 405, 406, 407, 408, 409, 0,
410, 411, 412, 413, 414, 415, 416, 417, 418, 0,
506, 506, 506, 506, 506, 506, 506, 506, 506, 506,
0, 0, 0, 506, 0, 506, 0, 0, 506, 506,
0, 506, 0, 0, 506, 0, 0, 0, 0, 506,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 389, 389, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 389, 0,
389, 0, 0, 389, 389, 0, 389, 389, 0, 0,
0, 0, 0, 0, 389, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 419, 0, 420, 0, 0, 421, 0,
0, 0, 558, 0, 0, 0, 0, 0, 0, 422,
557, 374, 375, 376, 377, 378, 379, 380, 381, 0,
0, 0, 0, 382, 383, 384, 385, 386, 387, 388,
389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
399, 400, 401, 402, 0, 403, 0, 0, 0, 404,
405, 406, 407, 408, 409, 0, 410, 411, 412, 413,
414, 415, 416, 417, 418, 557, 374, 375, 376, 377,
378, 379, 380, 381, 0, 0, 0, 0, 382, 383,
384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 0,
403, 0, 0, 0, 404, 405, 406, 407, 408, 409,
0, 410, 411, 412, 413, 414, 415, 416, 417, 418,
557, 374, 375, 376, 377, 378, 379, 380, 381, 0,
0, 0, 0, 382, 383, 384, 385, 386, 387, 388,
389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
399, 400, 401, 402, 0, 403, 0, 0, 0, 404,
405, 406, 407, 408, 409, 0, 410, 411, 412, 413,
414, 415, 416, 417, 418, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 419,
0, 420, 0, 0, 421, 0, 0, 0, 575, 0,
0, 0, 0, 0, 0, 422, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 419, 0, 420, 0, 0, 421,
0, 0, 0, 578, 0, 0, 0, 0, 0, 0,
422, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 419,
0, 420, 0, 0, 421, 0, 0, 0, 825, 0,
0, 0, 0, 0, 0, 422, 557, 374, 375, 376,
377, 378, 379, 380, 381, 0, 0, 0, 0, 382,
383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
0, 403, 0, 0, 0, 404, 405, 406, 407, 408,
409, 0, 410, 411, 412, 413, 414, 415, 416, 417,
418, 557, 374, 375, 376, 377, 378, 379, 380, 381,
0, 0, 0, 0, 382, 383, 384, 385, 386, 387,
388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
398, 399, 400, 401, 402, 0, 403, 0, 0, 0,
404, 405, 406, 407, 408, 409, 0, 410, 411, 412,
413, 414, 415, 416, 417, 418, 557, 374, 375, 376,
377, 378, 379, 380, 381, 0, 0, 0, 0, 382,
383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
0, 403, 0, 0, 0, 404, 405, 406, 407, 408,
409, 0, 410, 411, 412, 413, 414, 415, 416, 417,
418, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 419, 0, 420, 0, 0,
421, 0, 0, 0, 918, 0, 0, 0, 0, 0,
0, 422, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
419, 0, 420, 0, 0, 421, 0, 0, 0, 925,
0, 0, 0, 0, 0, 0, 422, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 419, 0, 420, 0, 0,
421, 0, 0, 0, 926, 0, 0, 0, 0, 0,
0, 422, 557, 374, 375, 376, 377, 378, 379, 380,
381, 0, 0, 0, 0, 382, 383, 384, 385, 386,
387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 0, 403, 0, 0,
0, 404, 405, 406, 407, 408, 409, 0, 410, 411,
412, 413, 414, 415, 416, 417, 418, 557, 374, 375,
376, 377, 378, 379, 380, 381, 0, 0, 0, 0,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
402, 0, 403, 0, 0, 0, 404, 405, 406, 407,
408, 409, 0, 410, 411, 412, 413, 414, 415, 416,
417, 418, 557, 374, 375, 376, 377, 378, 379, 380,
381, 0, 0, 0, 0, 382, 383, 384, 385, 386,
387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 0, 403, 0, 0,
1022, 404, 405, 406, 407, 408, 409, 0, 410, 411,
412, 413, 414, 415, 416, 417, 418, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 419, 0, 420, 0, 0, 421, 0, 0, 0,
927, 0, 0, 0, 0, 0, 0, 422, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 419, 0, 420, 0,
0, 421, 0, 0, 0, 928, 0, 0, 0, 0,
0, 0, 422, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 419, 0, 420, 0, 0, 421, 557, 374, 375,
376, 377, 378, 379, 380, 381, 0, 422, 0, 0,
382, 383, 384, 385, 386, 387, 388, 389, 390, 391,
392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
402, 0, 403, 0, 0, 1024, 404, 405, 406, 407,
408, 409, 0, 410, 411, 412, 413, 414, 415, 416,
417, 418, 557, 374, 375, 376, 377, 378, 379, 380,
381, 0, 0, 0, 0, 382, 383, 384, 385, 386,
387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 0, 403, 0, 0,
0, 404, 405, 406, 407, 408, 409, 0, 410, 411,
412, 413, 414, 415, 416, 417, 418, 374, 375, 376,
377, 378, 379, 380, 381, 0, 0, 0, 0, 382,
383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
0, 0, 0, 0, 0, 404, 405, 406, 407, 408,
409, 0, 410, 411, 412, 413, 414, 415, 416, 417,
418, 496, 497, 498, 499, 500, 501, 502, 503, 504,
505, 506, 507, 0, 0, 0, 419, 0, 420, 0,
0, 421, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 422, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 419, 0, 420, 0, 0, 421, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 422, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 508, 509, 0,
0, 0, 510, 0, 511, 419, 0, 420, 0, 0,
0, 0, 512, 513, 0, 514, 0, 0, 0, 0,
0, 422, 374, 375, 376, 377, 378, 379, 380, 381,
0, 0, 0, 0, 382, 383, 384, 385, 386, 387,
388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
398, 399, 400, 401, 0, 0, 0, 0, 0, 0,
404, 405, 406, 407, 408, 409, 0, 410, 411, 412,
413, 414, 415, 416, 417, 418, 496, 497, 498, 499,
680, 501, 681, 503, 504, 505, 506, 507, 345, 345,
345, 345, 345, 345, 345, 345, 0, 0, 0, 0,
345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
0, 0, 0, 0, 0, 0, 345, 345, 345, 345,
345, 345, 0, 345, 345, 345, 345, 345, 345, 345,
345, 345, 345, 345, 345, 345, 345, 345, 345, 345,
345, 345, 345, 345, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 508, 509, 0, 0, 0, 0, 682, 511,
683, 684, 420, 0, 0, 0, 0, 685, 0, 0,
0, 0, 0, 0, 0, 0, 422, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 345, 345,
0, 0, 0, 0, 345, 345, 345, 345, 345, 0,
0, 0, 0, 345, 356, 356, 356, 356, 356, 356,
356, 356, 345, 0, 0, 0, 356, 356, 356, 356,
356, 356, 356, 356, 356, 356, 356, 356, 356, 356,
356, 356, 356, 356, 356, 356, 356, 0, 356, 0,
0, 0, 356, 356, 356, 356, 356, 356, 0, 356,
356, 356, 356, 356, 356, 356, 356, 356, 357, 357,
357, 357, 357, 357, 357, 357, 0, 0, 0, 0,
357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
357, 0, 357, 0, 0, 0, 357, 357, 357, 357,
357, 357, 0, 357, 357, 357, 357, 357, 357, 357,
357, 357, 366, 366, 366, 366, 366, 366, 366, 366,
0, 0, 0, 0, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 0, 366, 0, 0, 0,
366, 366, 366, 366, 366, 366, 0, 366, 366, 366,
366, 366, 366, 366, 366, 366, 0, 0, 0, 356,
356, 356, 356, 356, 356, 356, 356, 356, 356, 0,
0, 0, 356, 0, 356, 0, 0, 356, 356, 0,
356, 0, 0, 356, 0, 0, 0, 0, 356, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 357, 357, 357, 357, 357, 357, 357,
357, 357, 357, 0, 0, 0, 357, 0, 357, 0,
0, 357, 357, 0, 357, 0, 0, 357, 0, 0,
0, 0, 357, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 366, 366, 366,
366, 366, 0, 0, 0, 0, 0, 0, 0, 0,
366, 0, 366, 0, 0, 366, 366, 0, 366, 0,
0, 366, 0, 0, 0, 0, 366, 365, 365, 365,
365, 365, 365, 365, 365, 0, 0, 0, 0, 365,
365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
0, 365, 0, 0, 0, 365, 365, 365, 365, 365,
365, 0, 365, 365, 365, 365, 365, 365, 365, 365,
365, 367, 367, 367, 367, 367, 367, 367, 367, 0,
0, 0, 0, 367, 367, 367, 367, 367, 367, 367,
367, 367, 367, 367, 367, 367, 367, 367, 367, 367,
367, 367, 367, 367, 0, 367, 0, 0, 0, 367,
367, 367, 367, 367, 367, 0, 367, 367, 367, 367,
367, 367, 367, 367, 367, 338, 338, 338, 338, 338,
338, 338, 338, 0, 0, 0, 0, 338, 338, 338,
338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
338, 338, 338, 338, 338, 338, 338, 338, 0, 338,
0, 0, 0, 338, 338, 338, 338, 338, 338, 0,
338, 338, 338, 338, 338, 338, 338, 338, 338, 0,
0, 0, 365, 365, 365, 365, 365, 0, 0, 0,
0, 0, 0, 0, 0, 365, 0, 365, 0, 0,
365, 365, 0, 365, 0, 0, 365, 0, 0, 0,
0, 365, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 367, 367, 367, 367,
367, 0, 0, 0, 0, 0, 0, 0, 0, 367,
0, 367, 0, 0, 367, 367, 0, 367, 0, 0,
367, 0, 0, 0, 0, 367, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
338, 338, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 338, 0, 338, 0, 338, 338, 338,
0, 338, 0, 0, 0, 0, 0, 0, 0, 338,
337, 337, 337, 337, 337, 337, 337, 337, 0, 0,
0, 0, 337, 337, 337, 337, 337, 337, 337, 337,
337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
337, 337, 337, 0, 337, 0, 0, 0, 337, 337,
337, 337, 337, 337, 0, 337, 337, 337, 337, 337,
337, 337, 337, 337, 287, 287, 287, 287, 287, 287,
287, 287, 0, 0, 0, 0, 287, 287, 287, 287,
287, 287, 287, 287, 287, 287, 287, 287, 287, 287,
287, 287, 287, 287, 287, 287, 287, 0, 287, 0,
0, 0, 287, 287, 287, 287, 287, 287, 0, 287,
287, 287, 287, 287, 287, 287, 287, 287, 370, 370,
370, 370, 370, 370, 370, 370, 0, 0, 0, 0,
370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
370, 0, 370, 0, 0, 0, 370, 370, 370, 370,
370, 370, 0, 370, 370, 370, 370, 370, 370, 370,
370, 370, 0, 0, 0, 337, 337, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 337, 0,
337, 0, 337, 337, 337, 0, 337, 0, 0, 0,
0, 0, 0, 0, 337, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 287,
287, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 287, 0, 287, 0, 0, 287, 287, 0,
287, 0, 0, 0, 0, 0, 0, 0, 287, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 370, 370, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 370, 0, 370, 0,
0, 370, 370, 0, 370, 0, 0, 0, 0, 0,
0, 0, 370, 292, 292, 292, 292, 292, 292, 292,
292, 0, 0, 0, 0, 292, 292, 292, 292, 292,
292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
292, 292, 292, 292, 292, 292, 0, 292, 0, 0,
0, 292, 292, 292, 292, 292, 292, 0, 292, 292,
292, 292, 292, 292, 292, 292, 292, 290, 290, 290,
290, 290, 290, 290, 290, 0, 0, 0, 0, 290,
290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
290, 290, 290, 290, 290, 290, 290, 290, 290, 290,
0, 290, 0, 0, 0, 290, 290, 290, 290, 290,
290, 0, 290, 290, 290, 290, 290, 290, 290, 290,
290, 288, 288, 288, 288, 288, 288, 288, 288, 0,
0, 0, 0, 288, 288, 288, 288, 288, 288, 288,
288, 288, 288, 288, 288, 288, 288, 288, 288, 288,
288, 288, 288, 288, 0, 288, 0, 0, 0, 288,
288, 288, 288, 288, 288, 0, 288, 288, 288, 288,
288, 288, 288, 288, 288, 0, 0, 0, 292, 292,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 292, 0, 292, 0, 0, 292, 292, 0, 292,
0, 0, 0, 0, 0, 0, 0, 292, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 290, 290, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 290, 0, 290, 0, 0,
290, 290, 0, 290, 0, 0, 0, 0, 0, 0,
0, 290, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 288, 288, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 288,
0, 288, 0, 0, 288, 288, 0, 288, 0, 0,
0, 0, 0, 0, 0, 288, 374, 375, 376, 377,
378, 379, 380, 381, 0, 0, 0, 0, 382, 383,
384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 0,
403, 0, 0, 0, 404, 405, 406, 407, 408, 409,
0, 410, 411, 412, 413, 414, 415, 416, 417, 418,
374, 375, 376, 377, 378, 379, 380, 381, 0, 0,
0, 0, 382, 383, 384, 385, 386, 387, 388, 389,
390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
400, 401, 402, 0, 403, 0, 0, 0, 404, 405,
406, 407, 408, 409, 0, 410, 411, 412, 413, 414,
415, 416, 417, 418, 374, 375, 376, 377, 378, 379,
380, 381, 0, 0, 0, 0, 382, 383, 384, 385,
386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
396, 397, 398, 399, 400, 401, 402, 0, 403, 0,
0, 0, 404, 405, 406, 407, 408, 409, 0, 410,
411, 412, 413, 414, 415, 416, 417, 418, 0, 0,
0, 692, 693, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 419, 0, 420, 0, 0, 421,
0, 0, 694, 0, 0, 0, 0, 0, 0, 0,
422, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 419, 0,
420, 0, 0, 421, 0, 0, 0, 678, 0, 0,
0, 0, 0, 0, 422, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 419, 0, 420, 0, 0, 421, 0, 0,
0, 844, 0, 0, 0, 0, 0, 0, 422, 374,
375, 376, 377, 378, 379, 380, 381, 0, 0, 0,
0, 382, 383, 384, 385, 386, 387, 388, 389, 390,
391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
401, 402, 0, 403, 0, 0, 0, 404, 405, 406,
407, 408, 409, 0, 410, 411, 412, 413, 414, 415,
416, 417, 418, 374, 375, 376, 377, 378, 379, 380,
381, 0, 0, 0, 0, 382, 383, 384, 385, 386,
387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
397, 398, 399, 400, 401, 402, 0, 403, 0, 0,
1014, 404, 405, 406, 407, 408, 409, 0, 410, 411,
412, 413, 414, 415, 416, 417, 418, 374, 375, 376,
377, 378, 379, 380, 381, 0, 0, 0, 0, 382,
383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
0, 403, 0, 0, 1016, 404, 405, 406, 407, 408,
409, 0, 410, 411, 412, 413, 414, 415, 416, 417,
418, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 419, 0, 420,
0, 0, 421, 0, 0, 694, 0, 0, 0, 0,
0, 0, 0, 422, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 419, 0, 420, 0, 0, 421, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 422, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 419, 0, 420, 0, 0,
421, 374, 375, 376, 377, 378, 379, 380, 381, 0,
0, 422, 0, 382, 383, 384, 385, 386, 387, 388,
389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
399, 400, 401, 402, 0, 403, 0, 0, 0, 404,
405, 406, 407, 408, 409, 0, 410, 411, 412, 413,
414, 415, 416, 417, 418, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 0, 0, 0, 0, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 173, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 76, 0, 0, 419,
0, 420, 0, 0, 421, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 422, 0, 0, 0, 0,
0, 0, 0, 0, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 0, 0, 0, 0, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 76,
};
short yycheck[] = { 151,
152, 355, 370, 424, 372, 402, 360, 161, 402, 662,
0, 432, 746, 256, 435, 256, 256, 402, 256, 256,
402, 256, 256, 256, 402, 256, 434, 402, 256, 256,
402, 256, 256, 256, 323, 324, 325, 256, 256, 496,
256, 97, 450, 500, 496, 502, 256, 405, 500, 506,
502, 439, 501, 441, 503, 504, 505, 256, 507, 456,
405, 458, 572, 256, 256, 522, 523, 256, 256, 405,
256, 523, 256, 522, 256, 256, 256, 256, 256, 256,
323, 324, 325, 323, 324, 325, 323, 324, 325, 256,
510, 256, 512, 256, 515, 256, 256, 256, 256, 256,
256, 256, 656, 428, 323, 324, 325, 256, 256, 663,
256, 405, 256, 510, 432, 512, 510, 256, 512, 256,
514, 256, 447, 256, 442, 510, 256, 512, 510, 514,
512, 525, 510, 256, 512, 510, 256, 512, 510, 405,
512, 422, 423, 405, 256, 256, 256, 256, 256, 703,
256, 256, 256, 256, 437, 256, 256, 256, 214, 513,
441, 450, 436, 405, 405, 256, 256, 441, 451, 256,
405, 264, 682, 256, 405, 685, 256, 256, 572, 256,
405, 256, 405, 256, 581, 256, 256, 572, 256, 405,
256, 434, 435, 436, 256, 438, 256, 434, 435, 436,
434, 438, 445, 256, 438, 443, 434, 450, 445, 442,
450, 445, 580, 450, 368, 434, 435, 436, 445, 438,
954, 445, 450, 680, 681, 443, 445, 445, 680, 681,
440, 450, 689, 690, 256, 434, 435, 436, 690, 438,
689, 434, 435, 436, 256, 438, 445, 256, 256, 902,
439, 443, 445, 445, 442, 444, 442, 441, 679, 256,
442, 442, 442, 442, 442, 442, 405, 256, 435, 436,
435, 436, 692, 693, 264, 265, 266, 267, 268, 442,
256, 442, 442, 442, 442, 442, 442, 442, 682, 671,
436, 685, 436, 442, 442, 692, 693, 682, 692, 693,
685, 436, 955, 700, 441, 699, 441, 692, 693, 442,
692, 693, 442, 256, 692, 693, 436, 692, 693, 442,
692, 693, 832, 833, 834, 835, 836, 837, 838, 839,
442, 442, 442, 442, 442, 0, 442, 442, 442, 442,
694, 442, 442, 442, 434, 436, 256, 427, 428, 436,
441, 441, 435, 436, 434, 256, 436, 436, 435, 436,
435, 436, 435, 436, 435, 436, 436, 435, 436, 435,
436, 256, 256, 527, 436, 435, 436, 731, 732, 733,
734, 256, 435, 436, 256, 256, 256, 256, 256, 256,
256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
256, 256, 256, 256, 256, 405, 256, 256, 256, 256,
256, 256, 256, 435, 436, 256, 321, 256, 256, 405,
256, 321, 434, 435, 845, 846, 256, 436, 436, 256,
256, 256, 256, 256, 256, 256, 256, 434, 832, 833,
834, 835, 836, 837, 838, 839, 435, 832, 833, 834,
835, 836, 837, 838, 839, 301, 256, 256, 405, 256,
436, 405, 256, 884, 885, 886, 887, 256, 256, 256,
256, 256, 256, 256, 256, 256, 256, 405, 256, 586,
439, 434, 441, 256, 378, 438, 321, 0, 256, 292,
293, 326, 445, 436, 388, 445, 390, 391, 392, 393,
394, 292, 293, 655, 427, 428, 435, 436, 437, 405,
662, 434, 435, 436, 437, 384, 385, 386, 387, 405,
427, 428, 451, 427, 428, 405, 436, 434, 451, 434,
434, 405, 405, 438, 434, 436, 445, 441, 438, 265,
445, 256, 256, 256, 256, 445, 384, 385, 386, 387,
444, 436, 436, 434, 406, 407, 408, 409, 410, 411,
667, 436, 256, 256, 436, 436, 436, 964, 436, 436,
436, 436, 436, 436, 436, 436, 436, 436, 436, 436,
436, 436, 436, 436, 434, 434, 434, 434, 434, 434,
434, 256, 405, 434, 1015, 434, 1017, 1018, 434, 264,
265, 266, 267, 268, 434, 266, 268, 434, 434, 434,
434, 434, 434, 434, 434, 983, 256, 256, 256, 256,
256, 256, 256, 256, 256, 267, 256, 256, 406, 407,
408, 409, 410, 411, 434, 434, 0, 434, 406, 1007,
434, 444, 749, 411, 405, 434, 434, 434, 434, 434,
434, 434, 434, 434, 434, 1009, 1010, 1011, 323, 324,
325, 434, 327, 328, 329, 330, 331, 332, 333, 334,
335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
375, 376, 377, 378, 379, 380, 381, 382, 383, 434,
434, 434, 434, 388, 389, 390, 391, 392, 393, 394,
395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
434, 434, 405, 256, 256, 405, 405, 378, 405, 405,
902, 264, 265, 266, 267, 268, 908, 256, 389, 405,
391, 392, 393, 394, 439, 256, 441, 434, 434, 434,
435, 436, 436, 438, 292, 293, 441, 292, 293, 405,
445, 292, 293, 448, 449, 450, 0, 405, 256, 264,
265, 266, 267, 268, 434, 434, 434, 434, 434, 434,
434, 434, 434, 955, 434, 434, 405, 405, 405, 405,
323, 324, 325, 444, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
383, 439, 439, 441, 441, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
403, 404, 256, 256, 406, 407, 408, 409, 410, 411,
264, 265, 266, 267, 268, 256, 434, 406, 407, 408,
409, 410, 411, 412, 413, 406, 407, 408, 409, 410,
411, 434, 435, 436, 405, 438, 444, 405, 441, 444,
434, 405, 445, 444, 405, 448, 0, 450, 406, 407,
408, 409, 410, 411, 412, 413, 256, 434, 435, 436,
405, 438, 405, 323, 324, 325, 405, 405, 445, 323,
324, 325, 256, 327, 328, 329, 330, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
405, 405, 405, 405, 388, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
404, 434, 256, 406, 407, 408, 409, 410, 411, 256,
264, 265, 266, 267, 268, 406, 407, 408, 409, 410,
411, 412, 413, 405, 434, 435, 436, 405, 438, 405,
434, 435, 436, 405, 438, 445, 405, 441, 427, 428,
450, 445, 405, 405, 448, 434, 450, 436, 405, 405,
384, 385, 386, 387, 405, 434, 406, 407, 408, 409,
410, 411, 412, 413, 405, 312, 313, 314, 315, 405,
317, 435, 405, 327, 328, 329, 330, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
405, 405, 405, 405, 388, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
404, 447, 256, 405, 378, 434, 405, 436, 438, 438,
264, 265, 266, 267, 268, 389, 445, 391, 392, 393,
394, 427, 428, 405, 405, 439, 446, 446, 434, 435,
436, 437, 424, 425, 426, 427, 428, 429, 430, 431,
449, 449, 449, 434, 448, 451, 424, 425, 426, 427,
428, 429, 430, 431, 446, 427, 428, 427, 428, 429,
430, 431, 434, 441, 436, 501, 449, 503, 504, 505,
444, 507, 449, 327, 328, 329, 330, 331, 332, 333,
334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
434, 434, 434, 434, 388, 389, 390, 391, 392, 393,
394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
404, 256, 435, 443, 436, 442, 256, 257, 258, 259,
260, 261, 262, 263, 264, 442, 442, 442, 442, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
442, 291, 442, 442, 448, 295, 296, 297, 298, 299,
300, 442, 302, 303, 304, 305, 306, 307, 308, 309,
310, 256, 257, 258, 259, 260, 261, 262, 263, 264,
442, 442, 442, 440, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, 446, 291, 446, 446, 446,
295, 296, 297, 298, 299, 300, 447, 302, 303, 304,
305, 306, 307, 308, 309, 310, 256, 257, 258, 259,
260, 261, 262, 263, 264, 449, 439, 446, 443, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
446, 291, 441, 441, 441, 295, 296, 297, 298, 299,
300, 441, 302, 303, 304, 305, 306, 307, 308, 309,
310, 441, 422, 423, 424, 425, 426, 427, 428, 429,
430, 431, 441, 441, 378, 435, 434, 437, 434, 434,
440, 441, 434, 443, 434, 389, 446, 391, 392, 393,
394, 451, 405, 406, 407, 408, 409, 410, 411, 412,
413, 414, 415, 416, 417, 418, 419, 420, 421, 406,
407, 408, 409, 410, 411, 412, 413, 422, 423, 424,
425, 426, 427, 428, 429, 430, 431, 434, 434, 326,
435, 434, 437, 434, 434, 440, 441, 439, 443, 405,
434, 446, 434, 439, 443, 443, 451, 378, 414, 415,
416, 417, 418, 419, 420, 421, 443, 388, 443, 390,
391, 392, 393, 394, 424, 425, 426, 427, 428, 429,
430, 431, 422, 423, 424, 425, 426, 427, 428, 429,
430, 431, 290, 442, 441, 435, 441, 437, 441, 441,
440, 441, 441, 443, 441, 441, 446, 441, 441, 441,
441, 451, 256, 257, 258, 259, 260, 261, 262, 263,
264, 441, 441, 441, 441, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 441, 291, 441, 441,
441, 295, 296, 297, 298, 299, 300, 441, 302, 303,
304, 305, 306, 307, 308, 309, 310, 256, 257, 258,
259, 260, 261, 262, 263, 264, 439, 441, 321, 441,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, 441, 291, 441, 441, 441, 295, 296, 297, 298,
299, 300, 441, 302, 303, 304, 305, 306, 307, 308,
309, 310, 256, 257, 258, 259, 260, 261, 262, 263,
264, 441, 441, 441, 441, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 441, 291, 441, 441,
441, 295, 296, 297, 298, 299, 300, 441, 302, 303,
304, 305, 306, 307, 308, 309, 310, 441, 422, 423,
424, 425, 426, 427, 428, 429, 430, 431, 441, 441,
441, 435, 441, 437, 441, 441, 440, 441, 443, 443,
441, 441, 446, 441, 441, 441, 441, 451, 441, 441,
441, 441, 441, 441, 405, 441, 441, 405, 405, 405,
447, 405, 405, 443, 439, 436, 436, 436, 436, 429,
321, 321, 434, 422, 423, 424, 425, 426, 427, 428,
429, 430, 431, 436, 443, 439, 435, 292, 437, 434,
405, 440, 441, 434, 443, 434, 405, 446, 405, 441,
405, 441, 451, 441, 441, 441, 441, 441, 441, 405,
405, 439, 405, 444, 439, 439, 439, 449, 436, 449,
449, 440, 436, 440, 435, 441, 846, 440, 422, 423,
424, 425, 426, 427, 428, 429, 430, 431, 440, 205,
441, 435, 966, 437, 444, 444, 440, 441, 531, 443,
78, 752, 446, 444, 900, 937, -1, 451, 256, 257,
258, 259, 260, 261, 262, 263, 264, -1, -1, -1,
-1, 269, 270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, -1, 291, -1, -1, -1, 295, 296, 297,
298, 299, 300, -1, 302, 303, 304, 305, 306, 307,
308, 309, 310, 256, 257, 258, 259, 260, 261, 262,
263, 264, -1, -1, -1, -1, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, -1, 291, -1,
-1, -1, 295, 296, 297, 298, 299, 300, -1, 302,
303, 304, 305, 306, 307, 308, 309, 310, 256, 257,
258, 259, 260, 261, 262, 263, 264, -1, -1, -1,
-1, 269, 270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, -1, 291, -1, -1, -1, 295, 296, 297,
298, 299, 300, -1, 302, 303, 304, 305, 306, 307,
308, 309, 310, -1, 422, 423, 424, 425, 426, 427,
428, 429, 430, 431, -1, -1, -1, 435, -1, 437,
-1, -1, 440, 441, -1, 443, -1, -1, 446, -1,
-1, -1, -1, 451, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 422,
423, 424, 425, 426, 427, 428, 429, 430, 431, -1,
-1, -1, 435, -1, 437, -1, -1, 440, 441, -1,
443, -1, -1, 446, -1, -1, -1, -1, 451, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 422, 423, 424, 425, 426, 427,
428, 429, 430, 431, -1, -1, -1, 435, -1, 437,
-1, -1, 440, 441, -1, 443, -1, -1, 446, -1,
-1, -1, -1, 451, 256, 257, 258, 259, 260, 261,
262, 263, 264, -1, -1, -1, -1, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, -1, 291,
-1, -1, -1, 295, 296, 297, 298, 299, 300, -1,
302, 303, 304, 305, 306, 307, 308, 309, 310, 256,
257, 258, 259, 260, 261, 262, 263, 264, -1, -1,
-1, -1, 269, 270, 271, 272, 273, 274, 275, 276,
277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
287, 288, 289, -1, 291, 292, 293, 294, 295, 296,
297, 298, 299, 300, -1, 302, 303, 304, 305, 306,
307, 308, 309, 310, 256, 257, 258, 259, 260, 261,
262, 263, 264, -1, -1, -1, -1, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, -1, 291,
-1, -1, -1, 295, 296, 297, 298, 299, 300, -1,
302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
-1, -1, -1, 435, -1, 437, -1, -1, 440, 441,
-1, 443, -1, -1, 446, -1, -1, -1, -1, 451,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 422, 423, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 435, -1,
437, -1, -1, 440, 441, -1, 443, 444, -1, -1,
-1, -1, -1, -1, 451, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 435, -1, 437, -1, -1, 440, -1,
-1, -1, 444, -1, -1, -1, -1, -1, -1, 451,
256, 257, 258, 259, 260, 261, 262, 263, 264, -1,
-1, -1, -1, 269, 270, 271, 272, 273, 274, 275,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, -1, 291, -1, -1, -1, 295,
296, 297, 298, 299, 300, -1, 302, 303, 304, 305,
306, 307, 308, 309, 310, 256, 257, 258, 259, 260,
261, 262, 263, 264, -1, -1, -1, -1, 269, 270,
271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
281, 282, 283, 284, 285, 286, 287, 288, 289, -1,
291, -1, -1, -1, 295, 296, 297, 298, 299, 300,
-1, 302, 303, 304, 305, 306, 307, 308, 309, 310,
256, 257, 258, 259, 260, 261, 262, 263, 264, -1,
-1, -1, -1, 269, 270, 271, 272, 273, 274, 275,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, -1, 291, -1, -1, -1, 295,
296, 297, 298, 299, 300, -1, 302, 303, 304, 305,
306, 307, 308, 309, 310, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 435,
-1, 437, -1, -1, 440, -1, -1, -1, 444, -1,
-1, -1, -1, -1, -1, 451, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 435, -1, 437, -1, -1, 440,
-1, -1, -1, 444, -1, -1, -1, -1, -1, -1,
451, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 435,
-1, 437, -1, -1, 440, -1, -1, -1, 444, -1,
-1, -1, -1, -1, -1, 451, 256, 257, 258, 259,
260, 261, 262, 263, 264, -1, -1, -1, -1, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
-1, 291, -1, -1, -1, 295, 296, 297, 298, 299,
300, -1, 302, 303, 304, 305, 306, 307, 308, 309,
310, 256, 257, 258, 259, 260, 261, 262, 263, 264,
-1, -1, -1, -1, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, -1, 291, -1, -1, -1,
295, 296, 297, 298, 299, 300, -1, 302, 303, 304,
305, 306, 307, 308, 309, 310, 256, 257, 258, 259,
260, 261, 262, 263, 264, -1, -1, -1, -1, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
-1, 291, -1, -1, -1, 295, 296, 297, 298, 299,
300, -1, 302, 303, 304, 305, 306, 307, 308, 309,
310, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 435, -1, 437, -1, -1,
440, -1, -1, -1, 444, -1, -1, -1, -1, -1,
-1, 451, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
435, -1, 437, -1, -1, 440, -1, -1, -1, 444,
-1, -1, -1, -1, -1, -1, 451, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 435, -1, 437, -1, -1,
440, -1, -1, -1, 444, -1, -1, -1, -1, -1,
-1, 451, 256, 257, 258, 259, 260, 261, 262, 263,
264, -1, -1, -1, -1, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, -1, 291, -1, -1,
-1, 295, 296, 297, 298, 299, 300, -1, 302, 303,
304, 305, 306, 307, 308, 309, 310, 256, 257, 258,
259, 260, 261, 262, 263, 264, -1, -1, -1, -1,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, -1, 291, -1, -1, -1, 295, 296, 297, 298,
299, 300, -1, 302, 303, 304, 305, 306, 307, 308,
309, 310, 256, 257, 258, 259, 260, 261, 262, 263,
264, -1, -1, -1, -1, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, -1, 291, -1, -1,
294, 295, 296, 297, 298, 299, 300, -1, 302, 303,
304, 305, 306, 307, 308, 309, 310, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 435, -1, 437, -1, -1, 440, -1, -1, -1,
444, -1, -1, -1, -1, -1, -1, 451, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 435, -1, 437, -1,
-1, 440, -1, -1, -1, 444, -1, -1, -1, -1,
-1, -1, 451, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 435, -1, 437, -1, -1, 440, 256, 257, 258,
259, 260, 261, 262, 263, 264, -1, 451, -1, -1,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, -1, 291, -1, -1, 294, 295, 296, 297, 298,
299, 300, -1, 302, 303, 304, 305, 306, 307, 308,
309, 310, 256, 257, 258, 259, 260, 261, 262, 263,
264, -1, -1, -1, -1, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, -1, 291, -1, -1,
-1, 295, 296, 297, 298, 299, 300, -1, 302, 303,
304, 305, 306, 307, 308, 309, 310, 257, 258, 259,
260, 261, 262, 263, 264, -1, -1, -1, -1, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
-1, -1, -1, -1, -1, 295, 296, 297, 298, 299,
300, -1, 302, 303, 304, 305, 306, 307, 308, 309,
310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
320, 321, 322, -1, -1, -1, 435, -1, 437, -1,
-1, 440, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 451, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 435, -1, 437, -1, -1, 440, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 451, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 427, 428, -1,
-1, -1, 432, -1, 434, 435, -1, 437, -1, -1,
-1, -1, 442, 443, -1, 445, -1, -1, -1, -1,
-1, 451, 257, 258, 259, 260, 261, 262, 263, 264,
-1, -1, -1, -1, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, -1, -1, -1, -1, -1, -1,
295, 296, 297, 298, 299, 300, -1, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 257, 258,
259, 260, 261, 262, 263, 264, -1, -1, -1, -1,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
-1, -1, -1, -1, -1, -1, 295, 296, 297, 298,
299, 300, -1, 302, 303, 304, 305, 306, 307, 308,
309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
319, 320, 321, 322, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 427, 428, -1, -1, -1, -1, 433, 434,
435, 436, 437, -1, -1, -1, -1, 442, -1, -1,
-1, -1, -1, -1, -1, -1, 451, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 427, 428,
-1, -1, -1, -1, 433, 434, 435, 436, 437, -1,
-1, -1, -1, 442, 257, 258, 259, 260, 261, 262,
263, 264, 451, -1, -1, -1, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, -1, 291, -1,
-1, -1, 295, 296, 297, 298, 299, 300, -1, 302,
303, 304, 305, 306, 307, 308, 309, 310, 257, 258,
259, 260, 261, 262, 263, 264, -1, -1, -1, -1,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, -1, 291, -1, -1, -1, 295, 296, 297, 298,
299, 300, -1, 302, 303, 304, 305, 306, 307, 308,
309, 310, 257, 258, 259, 260, 261, 262, 263, 264,
-1, -1, -1, -1, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
285, 286, 287, 288, 289, -1, 291, -1, -1, -1,
295, 296, 297, 298, 299, 300, -1, 302, 303, 304,
305, 306, 307, 308, 309, 310, -1, -1, -1, 422,
423, 424, 425, 426, 427, 428, 429, 430, 431, -1,
-1, -1, 435, -1, 437, -1, -1, 440, 441, -1,
443, -1, -1, 446, -1, -1, -1, -1, 451, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 422, 423, 424, 425, 426, 427, 428,
429, 430, 431, -1, -1, -1, 435, -1, 437, -1,
-1, 440, 441, -1, 443, -1, -1, 446, -1, -1,
-1, -1, 451, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 422, 423, 424,
425, 426, -1, -1, -1, -1, -1, -1, -1, -1,
435, -1, 437, -1, -1, 440, 441, -1, 443, -1,
-1, 446, -1, -1, -1, -1, 451, 257, 258, 259,
260, 261, 262, 263, 264, -1, -1, -1, -1, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
-1, 291, -1, -1, -1, 295, 296, 297, 298, 299,
300, -1, 302, 303, 304, 305, 306, 307, 308, 309,
310, 257, 258, 259, 260, 261, 262, 263, 264, -1,
-1, -1, -1, 269, 270, 271, 272, 273, 274, 275,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, -1, 291, -1, -1, -1, 295,
296, 297, 298, 299, 300, -1, 302, 303, 304, 305,
306, 307, 308, 309, 310, 257, 258, 259, 260, 261,
262, 263, 264, -1, -1, -1, -1, 269, 270, 271,
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, -1, 291,
-1, -1, -1, 295, 296, 297, 298, 299, 300, -1,
302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
-1, -1, 422, 423, 424, 425, 426, -1, -1, -1,
-1, -1, -1, -1, -1, 435, -1, 437, -1, -1,
440, 441, -1, 443, -1, -1, 446, -1, -1, -1,
-1, 451, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 422, 423, 424, 425,
426, -1, -1, -1, -1, -1, -1, -1, -1, 435,
-1, 437, -1, -1, 440, 441, -1, 443, -1, -1,
446, -1, -1, -1, -1, 451, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
422, 423, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 435, -1, 437, -1, 439, 440, 441,
-1, 443, -1, -1, -1, -1, -1, -1, -1, 451,
257, 258, 259, 260, 261, 262, 263, 264, -1, -1,
-1, -1, 269, 270, 271, 272, 273, 274, 275, 276,
277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
287, 288, 289, -1, 291, -1, -1, -1, 295, 296,
297, 298, 299, 300, -1, 302, 303, 304, 305, 306,
307, 308, 309, 310, 257, 258, 259, 260, 261, 262,
263, 264, -1, -1, -1, -1, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, -1, 291, -1,
-1, -1, 295, 296, 297, 298, 299, 300, -1, 302,
303, 304, 305, 306, 307, 308, 309, 310, 257, 258,
259, 260, 261, 262, 263, 264, -1, -1, -1, -1,
269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, -1, 291, -1, -1, -1, 295, 296, 297, 298,
299, 300, -1, 302, 303, 304, 305, 306, 307, 308,
309, 310, -1, -1, -1, 422, 423, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 435, -1,
437, -1, 439, 440, 441, -1, 443, -1, -1, -1,
-1, -1, -1, -1, 451, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 422,
423, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 435, -1, 437, -1, -1, 440, 441, -1,
443, -1, -1, -1, -1, -1, -1, -1, 451, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 422, 423, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 435, -1, 437, -1,
-1, 440, 441, -1, 443, -1, -1, -1, -1, -1,
-1, -1, 451, 257, 258, 259, 260, 261, 262, 263,
264, -1, -1, -1, -1, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, -1, 291, -1, -1,
-1, 295, 296, 297, 298, 299, 300, -1, 302, 303,
304, 305, 306, 307, 308, 309, 310, 257, 258, 259,
260, 261, 262, 263, 264, -1, -1, -1, -1, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
-1, 291, -1, -1, -1, 295, 296, 297, 298, 299,
300, -1, 302, 303, 304, 305, 306, 307, 308, 309,
310, 257, 258, 259, 260, 261, 262, 263, 264, -1,
-1, -1, -1, 269, 270, 271, 272, 273, 274, 275,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, -1, 291, -1, -1, -1, 295,
296, 297, 298, 299, 300, -1, 302, 303, 304, 305,
306, 307, 308, 309, 310, -1, -1, -1, 422, 423,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 435, -1, 437, -1, -1, 440, 441, -1, 443,
-1, -1, -1, -1, -1, -1, -1, 451, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 422, 423, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 435, -1, 437, -1, -1,
440, 441, -1, 443, -1, -1, -1, -1, -1, -1,
-1, 451, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 422, 423, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 435,
-1, 437, -1, -1, 440, 441, -1, 443, -1, -1,
-1, -1, -1, -1, -1, 451, 257, 258, 259, 260,
261, 262, 263, 264, -1, -1, -1, -1, 269, 270,
271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
281, 282, 283, 284, 285, 286, 287, 288, 289, -1,
291, -1, -1, -1, 295, 296, 297, 298, 299, 300,
-1, 302, 303, 304, 305, 306, 307, 308, 309, 310,
257, 258, 259, 260, 261, 262, 263, 264, -1, -1,
-1, -1, 269, 270, 271, 272, 273, 274, 275, 276,
277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
287, 288, 289, -1, 291, -1, -1, -1, 295, 296,
297, 298, 299, 300, -1, 302, 303, 304, 305, 306,
307, 308, 309, 310, 257, 258, 259, 260, 261, 262,
263, 264, -1, -1, -1, -1, 269, 270, 271, 272,
273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, -1, 291, -1,
-1, -1, 295, 296, 297, 298, 299, 300, -1, 302,
303, 304, 305, 306, 307, 308, 309, 310, -1, -1,
-1, 422, 423, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 435, -1, 437, -1, -1, 440,
-1, -1, 443, -1, -1, -1, -1, -1, -1, -1,
451, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 435, -1,
437, -1, -1, 440, -1, -1, -1, 444, -1, -1,
-1, -1, -1, -1, 451, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 435, -1, 437, -1, -1, 440, -1, -1,
-1, 444, -1, -1, -1, -1, -1, -1, 451, 257,
258, 259, 260, 261, 262, 263, 264, -1, -1, -1,
-1, 269, 270, 271, 272, 273, 274, 275, 276, 277,
278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, -1, 291, -1, -1, -1, 295, 296, 297,
298, 299, 300, -1, 302, 303, 304, 305, 306, 307,
308, 309, 310, 257, 258, 259, 260, 261, 262, 263,
264, -1, -1, -1, -1, 269, 270, 271, 272, 273,
274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, -1, 291, -1, -1,
294, 295, 296, 297, 298, 299, 300, -1, 302, 303,
304, 305, 306, 307, 308, 309, 310, 257, 258, 259,
260, 261, 262, 263, 264, -1, -1, -1, -1, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
-1, 291, -1, -1, 294, 295, 296, 297, 298, 299,
300, -1, 302, 303, 304, 305, 306, 307, 308, 309,
310, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 435, -1, 437,
-1, -1, 440, -1, -1, 443, -1, -1, -1, -1,
-1, -1, -1, 451, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 435, -1, 437, -1, -1, 440, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 451, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 256, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 435, -1, 437, -1, -1,
440, 257, 258, 259, 260, 261, 262, 263, 264, -1,
-1, 451, -1, 269, 270, 271, 272, 273, 274, 275,
276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, -1, 291, -1, -1, -1, 295,
296, 297, 298, 299, 300, -1, 302, 303, 304, 305,
306, 307, 308, 309, 310, 327, 328, 329, 330, 331,
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
382, 383, -1, -1, -1, -1, 388, 389, 390, 391,
392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
402, 403, 404, 256, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 448, -1, -1, 435,
-1, 437, -1, -1, 440, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 451, -1, -1, -1, -1,
-1, -1, -1, -1, 327, 328, 329, 330, 331, 332,
333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
383, -1, -1, -1, -1, 388, 389, 390, 391, 392,
393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
403, 404, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 448,
};
#define YYFINAL 77
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 451
#if YYDEBUG
char *yyname[] = {
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FORWARD","SEND","DROP","EXIT",
"RETURN","LOG_TOK","ERROR","ROUTE","ROUTE_FAILURE","ROUTE_ONREPLY",
"ROUTE_BRANCH","ROUTE_ERROR","SET_HOST","SET_HOSTPORT","PREFIX",
"SET_TIME_STAMP","RESET_TIME_STAMP","DIFF_TIME_STAMP","STRIP","STRIP_TAIL",
"APPEND_BRANCH","SET_USER","SET_USERPASS","SET_PORT","SET_URI","REVERT_URI",
"SET_DSTURI","RESET_DSTURI","ISDSTURISET","FORCE_RPORT","FORCE_LOCAL_RPORT",
"FORCE_TCP_ALIAS","IF","ELSE","SWITCH","CASE","DEFAULT","SBREAK",
"SET_ADV_ADDRESS","SET_ADV_PORT","FORCE_SEND_SOCKET","SERIALIZE_BRANCHES",
"NEXT_BRANCHES","USE_BLACKLIST","MAX_LEN","SETFLAG","RESETFLAG","ISFLAGSET",
"SETBFLAG","RESETBFLAG","ISBFLAGSET","SETSFLAG","RESETSFLAG","ISSFLAGSET",
"METHOD","URI","FROM_URI","TO_URI","SRCIP","SRCPORT","DSTIP","DSTPORT","PROTO",
"AF","MYSELF","MSGLEN","UDP","TCP","TLS","NULLV","DEBUG","FORK","LOGSTDERROR",
"LOGFACILITY","LOGNAME","AVP_ALIASES","LISTEN","ALIAS","AUTO_ALIASES","DNS",
"REV_DNS","DNS_TRY_IPV6","DNS_RETR_TIME","DNS_RETR_NO","DNS_SERVERS_NO",
"DNS_USE_SEARCH","PORT","CHILDREN","CHECK_VIA","MEMLOG","SIP_WARNING",
"SOCK_MODE","SOCK_USER","SOCK_GROUP","UNIX_SOCK","UNIX_SOCK_CHILDREN",
"UNIX_TX_TIMEOUT","SERVER_SIGNATURE","SERVER_HEADER","USER_AGENT_HEADER",
"REPLY_TO_VIA","LOADMODULE","MPATH","MODPARAM","MAXBUFFER","USER","GROUP",
"CHROOT","WDIR","MHOMED","DISABLE_TCP","TCP_ACCEPT_ALIASES","TCP_CHILDREN",
"TCP_CONNECT_TIMEOUT","TCP_SEND_TIMEOUT","TCP_CON_LIFETIME","TCP_POLL_METHOD",
"TCP_MAX_CONNECTIONS","DISABLE_TLS","TLSLOG","TLS_PORT_NO","TLS_METHOD",
"TLS_HANDSHAKE_TIMEOUT","TLS_SEND_TIMEOUT","TLS_SERVER_DOMAIN",
"TLS_CLIENT_DOMAIN","TLS_CLIENT_DOMAIN_AVP","SSLv23","SSLv2","SSLv3","TLSv1",
"TLS_VERIFY_CLIENT","TLS_VERIFY_SERVER","TLS_REQUIRE_CLIENT_CERTIFICATE",
"TLS_CERTIFICATE","TLS_PRIVATE_KEY","TLS_CA_LIST","TLS_CIPHERS_LIST",
"ADVERTISED_ADDRESS","ADVERTISED_PORT","DISABLE_CORE","OPEN_FD_LIMIT",
"MCAST_LOOPBACK","MCAST_TTL","TOS","DISABLE_DNS_FAILOVER",
"DISABLE_DNS_BLACKLIST","DST_BLACKLIST","EQUAL","EQUAL_T","GT","LT","GTE","LTE",
"DIFF","MATCH","NOTMATCH","PLUSEQ","MINUSEQ","SLASHEQ","MULTEQ","MODULOEQ",
"BANDEQ","BOREQ","BXOREQ","OR","AND","BOR","BAND","BXOR","PLUS","MINUS","SLASH",
"MULT","MODULO","NOT","BNOT","NUMBER","ID","STRING","SCRIPTVAR","IPV6ADDR",
"COMMA","SEMICOLON","RPAREN","LPAREN","LBRACE","RBRACE","LBRACK","RBRACK","DOT",
"CR","COLON","ANY","SCRIPTVARERR",
};
char *yyrule[] = {
"$accept : cfg",
"cfg : statements",
"statements : statements statement",
"statements : statement",
"statements : statements error",
"statement : assign_stm",
"statement : module_stm",
"$$1 :",
"statement : $$1 route_stm",
"$$2 :",
"statement : $$2 failure_route_stm",
"$$3 :",
"statement : $$3 onreply_route_stm",
"$$4 :",
"statement : $$4 branch_route_stm",
"$$5 :",
"statement : $$5 error_route_stm",
"statement : CR",
"listen_id : ip",
"listen_id : STRING",
"listen_id : host",
"proto : UDP",
"proto : TCP",
"proto : TLS",
"proto : ANY",
"port : NUMBER",
"port : ANY",
"snumber : NUMBER",
"snumber : PLUS NUMBER",
"snumber : MINUS NUMBER",
"phostport : listen_id",
"phostport : listen_id COLON port",
"phostport : proto COLON listen_id",
"phostport : proto COLON listen_id COLON port",
"phostport : listen_id COLON error",
"id_lst : phostport",
"id_lst : phostport id_lst",
"blst_elem : LPAREN proto COMMA ipnet COMMA port COMMA STRING RPAREN",
"blst_elem : NOT LPAREN proto COMMA ipnet COMMA port COMMA STRING RPAREN",
"blst_elem_list : blst_elem_list COMMA blst_elem",
"blst_elem_list : blst_elem",
"blst_elem_list : blst_elem_list error",
"assign_stm : DEBUG EQUAL NUMBER",
"assign_stm : DEBUG EQUAL error",
"assign_stm : FORK EQUAL NUMBER",
"assign_stm : FORK EQUAL error",
"assign_stm : LOGSTDERROR EQUAL NUMBER",
"assign_stm : LOGSTDERROR EQUAL error",
"assign_stm : LOGFACILITY EQUAL ID",
"assign_stm : LOGFACILITY EQUAL error",
"assign_stm : LOGNAME EQUAL STRING",
"assign_stm : LOGNAME EQUAL error",
"assign_stm : AVP_ALIASES EQUAL STRING",
"assign_stm : AVP_ALIASES EQUAL error",
"assign_stm : DNS EQUAL NUMBER",
"assign_stm : DNS EQUAL error",
"assign_stm : REV_DNS EQUAL NUMBER",
"assign_stm : REV_DNS EQUAL error",
"assign_stm : DNS_TRY_IPV6 EQUAL NUMBER",
"assign_stm : DNS_TRY_IPV6 error",
"assign_stm : DNS_RETR_TIME EQUAL NUMBER",
"assign_stm : DNS_RETR_TIME error",
"assign_stm : DNS_RETR_NO EQUAL NUMBER",
"assign_stm : DNS_RETR_NO error",
"assign_stm : DNS_SERVERS_NO EQUAL NUMBER",
"assign_stm : DNS_SERVERS_NO error",
"assign_stm : DNS_USE_SEARCH EQUAL NUMBER",
"assign_stm : DNS_USE_SEARCH error",
"assign_stm : PORT EQUAL NUMBER",
"assign_stm : MAXBUFFER EQUAL NUMBER",
"assign_stm : MAXBUFFER EQUAL error",
"assign_stm : PORT EQUAL error",
"assign_stm : CHILDREN EQUAL NUMBER",
"assign_stm : CHILDREN EQUAL error",
"assign_stm : CHECK_VIA EQUAL NUMBER",
"assign_stm : CHECK_VIA EQUAL error",
"assign_stm : MEMLOG EQUAL NUMBER",
"assign_stm : MEMLOG EQUAL error",
"assign_stm : SIP_WARNING EQUAL NUMBER",
"assign_stm : SIP_WARNING EQUAL error",
"assign_stm : SOCK_MODE EQUAL NUMBER",
"assign_stm : SOCK_MODE EQUAL error",
"assign_stm : SOCK_USER EQUAL STRING",
"assign_stm : SOCK_USER EQUAL ID",
"assign_stm : SOCK_USER EQUAL error",
"assign_stm : SOCK_GROUP EQUAL STRING",
"assign_stm : SOCK_GROUP EQUAL ID",
"assign_stm : SOCK_GROUP EQUAL error",
"assign_stm : UNIX_SOCK EQUAL STRING",
"assign_stm : UNIX_SOCK EQUAL error",
"assign_stm : UNIX_SOCK_CHILDREN EQUAL NUMBER",
"assign_stm : UNIX_SOCK_CHILDREN EQUAL error",
"assign_stm : UNIX_TX_TIMEOUT EQUAL NUMBER",
"assign_stm : UNIX_TX_TIMEOUT EQUAL error",
"assign_stm : USER EQUAL STRING",
"assign_stm : USER EQUAL ID",
"assign_stm : USER EQUAL error",
"assign_stm : GROUP EQUAL STRING",
"assign_stm : GROUP EQUAL ID",
"assign_stm : GROUP EQUAL error",
"assign_stm : CHROOT EQUAL STRING",
"assign_stm : CHROOT EQUAL ID",
"assign_stm : CHROOT EQUAL error",
"assign_stm : WDIR EQUAL STRING",
"assign_stm : WDIR EQUAL ID",
"assign_stm : WDIR EQUAL error",
"assign_stm : MHOMED EQUAL NUMBER",
"assign_stm : MHOMED EQUAL error",
"assign_stm : DISABLE_TCP EQUAL NUMBER",
"assign_stm : DISABLE_TCP EQUAL error",
"assign_stm : TCP_ACCEPT_ALIASES EQUAL NUMBER",
"assign_stm : TCP_ACCEPT_ALIASES EQUAL error",
"assign_stm : TCP_CHILDREN EQUAL NUMBER",
"assign_stm : TCP_CHILDREN EQUAL error",
"assign_stm : TCP_CONNECT_TIMEOUT EQUAL NUMBER",
"assign_stm : TCP_CONNECT_TIMEOUT EQUAL error",
"assign_stm : TCP_SEND_TIMEOUT EQUAL NUMBER",
"assign_stm : TCP_SEND_TIMEOUT EQUAL error",
"assign_stm : TCP_CON_LIFETIME EQUAL NUMBER",
"assign_stm : TCP_CON_LIFETIME EQUAL error",
"assign_stm : TCP_POLL_METHOD EQUAL ID",
"assign_stm : TCP_POLL_METHOD EQUAL STRING",
"assign_stm : TCP_POLL_METHOD EQUAL error",
"assign_stm : TCP_MAX_CONNECTIONS EQUAL NUMBER",
"assign_stm : TCP_MAX_CONNECTIONS EQUAL error",
"assign_stm : DISABLE_TLS EQUAL NUMBER",
"assign_stm : DISABLE_TLS EQUAL error",
"assign_stm : TLSLOG EQUAL NUMBER",
"assign_stm : TLSLOG EQUAL error",
"assign_stm : TLS_PORT_NO EQUAL NUMBER",
"assign_stm : TLS_PORT_NO EQUAL error",
"assign_stm : TLS_METHOD EQUAL SSLv23",
"assign_stm : TLS_METHOD EQUAL SSLv2",
"assign_stm : TLS_METHOD EQUAL SSLv3",
"assign_stm : TLS_METHOD EQUAL TLSv1",
"assign_stm : TLS_METHOD EQUAL error",
"assign_stm : TLS_VERIFY_CLIENT EQUAL NUMBER",
"assign_stm : TLS_VERIFY_CLIENT EQUAL error",
"assign_stm : TLS_VERIFY_SERVER EQUAL NUMBER",
"assign_stm : TLS_VERIFY_SERVER EQUAL error",
"assign_stm : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL NUMBER",
"assign_stm : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL error",
"assign_stm : TLS_CERTIFICATE EQUAL STRING",
"assign_stm : TLS_CERTIFICATE EQUAL error",
"assign_stm : TLS_PRIVATE_KEY EQUAL STRING",
"assign_stm : TLS_PRIVATE_KEY EQUAL error",
"assign_stm : TLS_CA_LIST EQUAL STRING",
"assign_stm : TLS_CA_LIST EQUAL error",
"assign_stm : TLS_CIPHERS_LIST EQUAL STRING",
"assign_stm : TLS_CIPHERS_LIST EQUAL error",
"assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL NUMBER",
"assign_stm : TLS_HANDSHAKE_TIMEOUT EQUAL error",
"assign_stm : TLS_SEND_TIMEOUT EQUAL NUMBER",
"assign_stm : TLS_SEND_TIMEOUT EQUAL error",
"assign_stm : TLS_CLIENT_DOMAIN_AVP EQUAL NUMBER",
"assign_stm : TLS_CLIENT_DOMAIN_AVP EQUAL error",
"assign_stm : tls_server_domain_stm",
"assign_stm : tls_client_domain_stm",
"assign_stm : SERVER_SIGNATURE EQUAL NUMBER",
"assign_stm : SERVER_SIGNATURE EQUAL error",
"assign_stm : SERVER_HEADER EQUAL STRING",
"assign_stm : SERVER_HEADER EQUAL error",
"assign_stm : USER_AGENT_HEADER EQUAL STRING",
"assign_stm : USER_AGENT_HEADER EQUAL error",
"assign_stm : REPLY_TO_VIA EQUAL NUMBER",
"assign_stm : REPLY_TO_VIA EQUAL error",
"assign_stm : LISTEN EQUAL id_lst",
"assign_stm : LISTEN EQUAL error",
"assign_stm : ALIAS EQUAL id_lst",
"assign_stm : ALIAS EQUAL error",
"assign_stm : AUTO_ALIASES EQUAL NUMBER",
"assign_stm : AUTO_ALIASES EQUAL error",
"assign_stm : ADVERTISED_ADDRESS EQUAL listen_id",
"assign_stm : ADVERTISED_ADDRESS EQUAL error",
"assign_stm : ADVERTISED_PORT EQUAL NUMBER",
"assign_stm : ADVERTISED_PORT EQUAL error",
"assign_stm : DISABLE_CORE EQUAL NUMBER",
"assign_stm : DISABLE_CORE EQUAL error",
"assign_stm : OPEN_FD_LIMIT EQUAL NUMBER",
"assign_stm : OPEN_FD_LIMIT EQUAL error",
"assign_stm : MCAST_LOOPBACK EQUAL NUMBER",
"assign_stm : MCAST_LOOPBACK EQUAL error",
"assign_stm : MCAST_TTL EQUAL NUMBER",
"assign_stm : MCAST_TTL EQUAL error",
"assign_stm : TOS EQUAL NUMBER",
"assign_stm : TOS EQUAL ID",
"assign_stm : TOS EQUAL error",
"assign_stm : MPATH EQUAL STRING",
"assign_stm : MPATH EQUAL error",
"assign_stm : DISABLE_DNS_FAILOVER EQUAL NUMBER",
"assign_stm : DISABLE_DNS_FAILOVER error",
"assign_stm : DISABLE_DNS_BLACKLIST EQUAL NUMBER",
"assign_stm : DISABLE_DNS_BLACKLIST error",
"assign_stm : error EQUAL",
"assign_stm : DST_BLACKLIST EQUAL ID COLON LBRACE blst_elem_list RBRACE",
"module_stm : LOADMODULE STRING",
"module_stm : LOADMODULE error",
"module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA STRING RPAREN",
"module_stm : MODPARAM LPAREN STRING COMMA STRING COMMA snumber RPAREN",
"module_stm : MODPARAM error",
"ip : ipv4",
"ip : ipv6",
"ipv4 : NUMBER DOT NUMBER DOT NUMBER DOT NUMBER",
"ipv6addr : IPV6ADDR",
"ipv6 : ipv6addr",
"ipv6 : LBRACK ipv6addr RBRACK",
"$$6 :",
"tls_server_domain_stm : TLS_SERVER_DOMAIN LBRACK ip COLON port RBRACK $$6 LBRACE tls_server_decls RBRACE",
"$$7 :",
"tls_client_domain_stm : TLS_CLIENT_DOMAIN LBRACK ip COLON port RBRACK $$7 LBRACE tls_client_decls RBRACE",
"$$8 :",
"tls_client_domain_stm : TLS_CLIENT_DOMAIN LBRACK STRING RBRACK $$8 LBRACE tls_client_decls RBRACE",
"tls_server_decls : tls_server_var",
"tls_server_decls : tls_server_decls tls_server_var",
"tls_client_decls : tls_client_var",
"tls_client_decls : tls_client_decls tls_client_var",
"tls_server_var : TLS_METHOD EQUAL SSLv23",
"tls_server_var : TLS_METHOD EQUAL SSLv2",
"tls_server_var : TLS_METHOD EQUAL SSLv3",
"tls_server_var : TLS_METHOD EQUAL TLSv1",
"tls_server_var : TLS_METHOD EQUAL error",
"tls_server_var : TLS_CERTIFICATE EQUAL STRING",
"tls_server_var : TLS_CERTIFICATE EQUAL error",
"tls_server_var : TLS_PRIVATE_KEY EQUAL STRING",
"tls_server_var : TLS_PRIVATE_KEY EQUAL error",
"tls_server_var : TLS_CA_LIST EQUAL STRING",
"tls_server_var : TLS_CA_LIST EQUAL error",
"tls_server_var : TLS_CIPHERS_LIST EQUAL STRING",
"tls_server_var : TLS_CIPHERS_LIST EQUAL error",
"tls_server_var : TLS_VERIFY_CLIENT EQUAL NUMBER",
"tls_server_var : TLS_VERIFY_CLIENT EQUAL error",
"tls_server_var : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL NUMBER",
"tls_server_var : TLS_REQUIRE_CLIENT_CERTIFICATE EQUAL error",
"tls_client_var : TLS_METHOD EQUAL SSLv23",
"tls_client_var : TLS_METHOD EQUAL SSLv2",
"tls_client_var : TLS_METHOD EQUAL SSLv3",
"tls_client_var : TLS_METHOD EQUAL TLSv1",
"tls_client_var : TLS_METHOD EQUAL error",
"tls_client_var : TLS_CERTIFICATE EQUAL STRING",
"tls_client_var : TLS_CERTIFICATE EQUAL error",
"tls_client_var : TLS_PRIVATE_KEY EQUAL STRING",
"tls_client_var : TLS_PRIVATE_KEY EQUAL error",
"tls_client_var : TLS_CA_LIST EQUAL STRING",
"tls_client_var : TLS_CA_LIST EQUAL error",
"tls_client_var : TLS_CIPHERS_LIST EQUAL STRING",
"tls_client_var : TLS_CIPHERS_LIST EQUAL error",
"tls_client_var : TLS_VERIFY_SERVER EQUAL NUMBER",
"tls_client_var : TLS_VERIFY_SERVER EQUAL error",
"route_stm : ROUTE LBRACE actions RBRACE",
"route_stm : ROUTE LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"route_stm : ROUTE error",
"failure_route_stm : ROUTE_FAILURE LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"failure_route_stm : ROUTE_FAILURE error",
"onreply_route_stm : ROUTE_ONREPLY LBRACE actions RBRACE",
"onreply_route_stm : ROUTE_ONREPLY LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"onreply_route_stm : ROUTE_ONREPLY error",
"branch_route_stm : ROUTE_BRANCH LBRACK NUMBER RBRACK LBRACE actions RBRACE",
"branch_route_stm : ROUTE_BRANCH error",
"error_route_stm : ROUTE_ERROR LBRACE actions RBRACE",
"error_route_stm : ROUTE_ERROR error",
"exp : exp AND exp",
"exp : exp OR exp",
"exp : NOT exp",
"exp : LPAREN exp RPAREN",
"exp : LBRACK assignexp RBRACK",
"exp : exp_elem",
"equalop : EQUAL_T",
"equalop : DIFF",
"compop : GT",
"compop : LT",
"compop : GTE",
"compop : LTE",
"matchop : MATCH",
"matchop : NOTMATCH",
"intop : equalop",
"intop : compop",
"strop : equalop",
"strop : compop",
"strop : matchop",
"uri_type : URI",
"uri_type : FROM_URI",
"uri_type : TO_URI",
"script_var : SCRIPTVAR",
"script_var : SCRIPTVARERR",
"exp_elem : exp_cond",
"exp_elem : exp_stm",
"exp_elem : snumber",
"exp_elem : script_var",
"exp_elem : uri_type strop host",
"exp_elem : DSTIP equalop ipnet",
"exp_elem : DSTIP strop host",
"exp_elem : SRCIP equalop ipnet",
"exp_elem : SRCIP strop host",
"exp_cond : METHOD strop STRING",
"exp_cond : METHOD strop ID",
"exp_cond : METHOD strop error",
"exp_cond : METHOD error",
"exp_cond : script_var strop script_var",
"exp_cond : script_var strop STRING",
"exp_cond : script_var strop ID",
"exp_cond : script_var intop snumber",
"exp_cond : script_var equalop MYSELF",
"exp_cond : script_var equalop NULLV",
"exp_cond : uri_type strop STRING",
"exp_cond : uri_type equalop MYSELF",
"exp_cond : uri_type strop error",
"exp_cond : uri_type error",
"exp_cond : SRCPORT intop NUMBER",
"exp_cond : SRCPORT intop error",
"exp_cond : SRCPORT error",
"exp_cond : DSTPORT intop NUMBER",
"exp_cond : DSTPORT intop error",
"exp_cond : DSTPORT error",
"exp_cond : PROTO intop proto",
"exp_cond : PROTO intop error",
"exp_cond : PROTO error",
"exp_cond : AF intop NUMBER",
"exp_cond : AF intop error",
"exp_cond : AF error",
"exp_cond : MSGLEN intop NUMBER",
"exp_cond : MSGLEN intop MAX_LEN",
"exp_cond : MSGLEN intop error",
"exp_cond : MSGLEN error",
"exp_cond : SRCIP strop STRING",
"exp_cond : SRCIP equalop MYSELF",
"exp_cond : SRCIP strop error",
"exp_cond : SRCIP error",
"exp_cond : DSTIP strop STRING",
"exp_cond : DSTIP equalop MYSELF",
"exp_cond : DSTIP strop error",
"exp_cond : DSTIP error",
"exp_cond : MYSELF equalop uri_type",
"exp_cond : MYSELF equalop SRCIP",
"exp_cond : MYSELF equalop DSTIP",
"exp_cond : MYSELF equalop error",
"exp_cond : MYSELF error",
"ipnet : ip SLASH ip",
"ipnet : ip SLASH NUMBER",
"ipnet : ip",
"ipnet : ip SLASH error",
"host_sep : DOT",
"host_sep : MINUS",
"host : ID",
"host : host host_sep ID",
"host : host DOT error",
"assignop : EQUAL",
"assignop : PLUSEQ",
"assignop : MINUSEQ",
"assignop : SLASHEQ",
"assignop : MULTEQ",
"assignop : MODULOEQ",
"assignop : BANDEQ",
"assignop : BOREQ",
"assignop : BXOREQ",
"assignexp : snumber",
"assignexp : STRING",
"assignexp : ID",
"assignexp : script_var",
"assignexp : exp_cond",
"assignexp : cmd",
"assignexp : assignexp PLUS assignexp",
"assignexp : assignexp MINUS assignexp",
"assignexp : assignexp MULT assignexp",
"assignexp : assignexp SLASH assignexp",
"assignexp : assignexp MODULO assignexp",
"assignexp : assignexp BAND assignexp",
"assignexp : assignexp BOR assignexp",
"assignexp : assignexp BXOR assignexp",
"assignexp : BNOT assignexp",
"assignexp : LPAREN assignexp RPAREN",
"assign_cmd : script_var assignop assignexp",
"assign_cmd : script_var EQUAL NULLV",
"exp_stm : cmd",
"exp_stm : if_cmd",
"exp_stm : assign_cmd",
"exp_stm : LBRACE actions RBRACE",
"exp_stm : LBRACE RBRACE",
"stm : action",
"stm : LBRACE actions RBRACE",
"stm : LBRACE RBRACE",
"actions : actions action",
"actions : action",
"actions : actions error",
"action : cmd SEMICOLON",
"action : if_cmd",
"action : switch_cmd",
"action : assign_cmd SEMICOLON",
"action : SEMICOLON",
"action : cmd error",
"if_cmd : IF exp stm",
"if_cmd : IF exp stm ELSE stm",
"switch_cmd : SWITCH LPAREN script_var RPAREN LBRACE switch_stm RBRACE",
"switch_stm : case_stms default_stm",
"switch_stm : case_stms",
"case_stms : case_stms case_stm",
"case_stms : case_stm",
"case_stm : CASE snumber COLON actions SBREAK SEMICOLON",
"case_stm : CASE snumber COLON SBREAK SEMICOLON",
"case_stm : CASE snumber COLON actions",
"case_stm : CASE snumber COLON",
"case_stm : CASE STRING COLON actions SBREAK SEMICOLON",
"case_stm : CASE STRING COLON SBREAK SEMICOLON",
"case_stm : CASE STRING COLON actions",
"case_stm : CASE STRING COLON",
"default_stm : DEFAULT COLON actions",
"default_stm : DEFAULT COLON",
"cmd : FORWARD LPAREN STRING RPAREN",
"cmd : FORWARD LPAREN RPAREN",
"cmd : FORWARD error",
"cmd : FORWARD LPAREN error RPAREN",
"cmd : SEND LPAREN STRING RPAREN",
"cmd : SEND error",
"cmd : SEND LPAREN error RPAREN",
"cmd : DROP LPAREN RPAREN",
"cmd : DROP",
"cmd : EXIT LPAREN RPAREN",
"cmd : EXIT",
"cmd : RETURN LPAREN snumber RPAREN",
"cmd : RETURN LPAREN RPAREN",
"cmd : RETURN",
"cmd : LOG_TOK LPAREN STRING RPAREN",
"cmd : LOG_TOK LPAREN snumber COMMA STRING RPAREN",
"cmd : LOG_TOK error",
"cmd : LOG_TOK LPAREN error RPAREN",
"cmd : SETFLAG LPAREN NUMBER RPAREN",
"cmd : SETFLAG error",
"cmd : RESETFLAG LPAREN NUMBER RPAREN",
"cmd : RESETFLAG error",
"cmd : ISFLAGSET LPAREN NUMBER RPAREN",
"cmd : ISFLAGSET error",
"cmd : SETSFLAG LPAREN NUMBER RPAREN",
"cmd : SETSFLAG error",
"cmd : RESETSFLAG LPAREN NUMBER RPAREN",
"cmd : RESETSFLAG error",
"cmd : ISSFLAGSET LPAREN NUMBER RPAREN",
"cmd : ISSFLAGSET error",
"cmd : SETBFLAG LPAREN NUMBER COMMA NUMBER RPAREN",
"cmd : SETBFLAG LPAREN NUMBER RPAREN",
"cmd : SETBFLAG error",
"cmd : RESETBFLAG LPAREN NUMBER COMMA NUMBER RPAREN",
"cmd : RESETBFLAG LPAREN NUMBER RPAREN",
"cmd : RESETBFLAG error",
"cmd : ISBFLAGSET LPAREN NUMBER COMMA NUMBER RPAREN",
"cmd : ISBFLAGSET LPAREN NUMBER RPAREN",
"cmd : ISBFLAGSET error",
"cmd : ERROR LPAREN STRING COMMA STRING RPAREN",
"cmd : ERROR error",
"cmd : ERROR LPAREN error RPAREN",
"cmd : ROUTE LPAREN NUMBER RPAREN",
"cmd : ROUTE error",
"cmd : ROUTE LPAREN error RPAREN",
"cmd : SET_HOST LPAREN STRING RPAREN",
"cmd : SET_HOST error",
"cmd : SET_HOST LPAREN error RPAREN",
"cmd : PREFIX LPAREN STRING RPAREN",
"cmd : PREFIX error",
"cmd : PREFIX LPAREN error RPAREN",
"cmd : STRIP_TAIL LPAREN NUMBER RPAREN",
"cmd : STRIP_TAIL error",
"cmd : STRIP_TAIL LPAREN error RPAREN",
"cmd : STRIP LPAREN NUMBER RPAREN",
"cmd : STRIP error",
"cmd : STRIP LPAREN error RPAREN",
"cmd : SET_TIME_STAMP LPAREN STRING RPAREN",
"cmd : SET_TIME_STAMP error",
"cmd : SET_TIME_STAMP LPAREN error RPAREN",
"cmd : RESET_TIME_STAMP LPAREN RPAREN",
"cmd : DIFF_TIME_STAMP LPAREN NUMBER COMMA STRING RPAREN",
"cmd : DIFF_TIME_STAMP error",
"cmd : DIFF_TIME_STAMP LPAREN error RPAREN",
"cmd : RESET_TIME_STAMP error",
"cmd : RESET_TIME_STAMP LPAREN error RPAREN",
"cmd : APPEND_BRANCH LPAREN STRING COMMA STRING RPAREN",
"cmd : APPEND_BRANCH LPAREN STRING RPAREN",
"cmd : APPEND_BRANCH LPAREN RPAREN",
"cmd : APPEND_BRANCH",
"cmd : SET_HOSTPORT LPAREN STRING RPAREN",
"cmd : SET_HOSTPORT error",
"cmd : SET_HOSTPORT LPAREN error RPAREN",
"cmd : SET_PORT LPAREN STRING RPAREN",
"cmd : SET_PORT error",
"cmd : SET_PORT LPAREN error RPAREN",
"cmd : SET_USER LPAREN STRING RPAREN",
"cmd : SET_USER error",
"cmd : SET_USER LPAREN error RPAREN",
"cmd : SET_USERPASS LPAREN STRING RPAREN",
"cmd : SET_USERPASS error",
"cmd : SET_USERPASS LPAREN error RPAREN",
"cmd : SET_URI LPAREN STRING RPAREN",
"cmd : SET_URI error",
"cmd : SET_URI LPAREN error RPAREN",
"cmd : REVERT_URI LPAREN RPAREN",
"cmd : REVERT_URI",
"cmd : SET_DSTURI LPAREN STRING RPAREN",
"cmd : SET_DSTURI error",
"cmd : SET_DSTURI LPAREN error RPAREN",
"cmd : RESET_DSTURI LPAREN RPAREN",
"cmd : RESET_DSTURI",
"cmd : ISDSTURISET LPAREN RPAREN",
"cmd : ISDSTURISET",
"cmd : FORCE_RPORT LPAREN RPAREN",
"cmd : FORCE_RPORT",
"cmd : FORCE_LOCAL_RPORT LPAREN RPAREN",
"cmd : FORCE_LOCAL_RPORT",
"cmd : FORCE_TCP_ALIAS LPAREN NUMBER RPAREN",
"cmd : FORCE_TCP_ALIAS LPAREN RPAREN",
"cmd : FORCE_TCP_ALIAS",
"cmd : FORCE_TCP_ALIAS LPAREN error RPAREN",
"cmd : SET_ADV_ADDRESS LPAREN listen_id RPAREN",
"cmd : SET_ADV_ADDRESS LPAREN error RPAREN",
"cmd : SET_ADV_ADDRESS error",
"cmd : SET_ADV_PORT LPAREN NUMBER RPAREN",
"cmd : SET_ADV_PORT LPAREN error RPAREN",
"cmd : SET_ADV_PORT error",
"cmd : FORCE_SEND_SOCKET LPAREN phostport RPAREN",
"cmd : FORCE_SEND_SOCKET LPAREN error RPAREN",
"cmd : FORCE_SEND_SOCKET error",
"cmd : SERIALIZE_BRANCHES LPAREN NUMBER RPAREN",
"cmd : SERIALIZE_BRANCHES LPAREN error RPAREN",
"cmd : SERIALIZE_BRANCHES error",
"cmd : NEXT_BRANCHES LPAREN RPAREN",
"cmd : NEXT_BRANCHES LPAREN error RPAREN",
"cmd : NEXT_BRANCHES error",
"cmd : USE_BLACKLIST LPAREN STRING RPAREN",
"cmd : USE_BLACKLIST LPAREN error RPAREN",
"cmd : USE_BLACKLIST error",
"cmd : ID LPAREN RPAREN",
"cmd : ID LPAREN STRING RPAREN",
"cmd : ID LPAREN STRING COMMA STRING RPAREN",
"cmd : ID LPAREN error RPAREN",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
int yystacksize;
#line 2234 "cfg.y"
extern int line;
extern int column;
extern int startcolumn;
#if !defined(USE_TLS) || !defined(USE_TCP) || !defined(TIMING_INFO) \
|| !defined(USE_MCAST)
static void warn(char* s)
{
LOG(L_WARN, "cfg. warning: (%d,%d-%d): %s\n", line, startcolumn,
column, s);
cfg_errors++;
}
#endif
static void yyerror(char* s)
{
LOG(L_CRIT, "parse error (%d,%d-%d): %s\n", line, startcolumn,
column, s);
cfg_errors++;
}
static struct socket_id* mk_listen_id(char* host, int proto, int port)
{
struct socket_id* l;
l=pkg_malloc(sizeof(struct socket_id));
if (l==0){
LOG(L_CRIT,"ERROR: cfg. parser: out of memory.\n");
}else{
l->name=host;
l->port=port;
l->proto=proto;
l->next=0;
}
return l;
}
#line 2653 "cfg.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
int yyparse __P((void));
static int yygrowstack __P((void));
static int yygrowstack()
{
int newsize, i;
short *newss;
YYSTYPE *newvs;
if ((newsize = yystacksize) == 0)
newsize = YYINITSTACKSIZE;
else if (newsize >= YYMAXDEPTH)
return -1;
else if ((newsize *= 2) > YYMAXDEPTH)
newsize = YYMAXDEPTH;
i = yyssp - yyss;
if ((newss = (short *)realloc(yyss, newsize * sizeof *newss)) == NULL)
return -1;
yyss = newss;
yyssp = newss + i;
if ((newvs = (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs)) == NULL)
return -1;
yyvs = newvs;
yyvsp = newvs + i;
yystacksize = newsize;
yysslim = yyss + newsize - 1;
return 0;
}
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
int yym, yyn, yystate;
#if YYDEBUG
char *yys;
if ((yys = getenv("YYDEBUG")) != NULL)
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif
yynerrs = 0;
yyerrflag = 0;
yychar = (-1);
if (yyss == NULL && yygrowstack()) goto yyoverflow;
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
yychar = (-1);
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
goto yynewerror;
yynewerror:
yyerror("syntax error");
goto yyerrlab;
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
--yyvsp;
}
}
}
else
{
if (yychar == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
yychar = (-1);
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
yyval = yyvsp[1-yym];
switch (yyn)
{
case 2:
#line 421 "cfg.y"
{}
break;
case 3:
#line 422 "cfg.y"
{}
break;
case 4:
#line 423 "cfg.y"
{ yyerror(""); YYABORT;}
break;
case 7:
#line 428 "cfg.y"
{rt=REQUEST_ROUTE;}
break;
case 9:
#line 429 "cfg.y"
{rt=FAILURE_ROUTE;}
break;
case 11:
#line 430 "cfg.y"
{rt=ONREPLY_ROUTE;}
break;
case 13:
#line 431 "cfg.y"
{rt=BRANCH_ROUTE;}
break;
case 15:
#line 432 "cfg.y"
{rt=ERROR_ROUTE;}
break;
case 18:
#line 437 "cfg.y"
{ tmp=ip_addr2a(yyvsp[0].ipaddr);
if(tmp==0){
LOG(L_CRIT, "ERROR: cfg. parser: bad ip "
"address.\n");
yyval.strval=0;
}else{
yyval.strval=pkg_malloc(strlen(tmp)+1);
if (yyval.strval==0){
LOG(L_CRIT, "ERROR: cfg. parser: out of "
"memory.\n");
}else{
strncpy(yyval.strval, tmp, strlen(tmp)+1);
}
}
}
break;
case 19:
#line 452 "cfg.y"
{ yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1);
if (yyval.strval==0){
LOG(L_CRIT, "ERROR: cfg. parser: out of "
"memory.\n");
}else{
strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1);
}
}
break;
case 20:
#line 460 "cfg.y"
{ if (yyvsp[0].strval==0) {
yyval.strval = 0;
} else {
yyval.strval=pkg_malloc(strlen(yyvsp[0].strval)+1);
if (yyval.strval==0){
LOG(L_CRIT, "ERROR: cfg. parser: out of "
"memory.\n");
}else{
strncpy(yyval.strval, yyvsp[0].strval, strlen(yyvsp[0].strval)+1);
}
}
}
break;
case 21:
#line 474 "cfg.y"
{ yyval.intval=PROTO_UDP; }
break;
case 22:
#line 475 "cfg.y"
{ yyval.intval=PROTO_TCP; }
break;
case 23:
#line 476 "cfg.y"
{
#ifdef USE_TLS
yyval.intval=PROTO_TLS;
#else
yyval.intval=PROTO_TCP;
warn("tls support not compiled in");
#endif
}
break;
case 24:
#line 484 "cfg.y"
{ yyval.intval=0; }
break;
case 25:
#line 487 "cfg.y"
{ yyval.intval=yyvsp[0].intval; }
break;
case 26:
#line 488 "cfg.y"
{ yyval.intval=0; }
break;
case 27:
#line 491 "cfg.y"
{ yyval.intval=yyvsp[0].intval; }
break;
case 28:
#line 492 "cfg.y"
{ yyval.intval=yyvsp[0].intval; }
break;
case 29:
#line 493 "cfg.y"
{ yyval.intval=-yyvsp[0].intval; }
break;
case 30:
#line 497 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[0].strval, 0, 0); }
break;
case 31:
#line 498 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[-2].strval, 0, yyvsp[0].intval); }
break;
case 32:
#line 499 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[0].strval, yyvsp[-2].intval, 0); }
break;
case 33:
#line 500 "cfg.y"
{ yyval.sockid=mk_listen_id(yyvsp[-2].strval, yyvsp[-4].intval, yyvsp[0].intval);}
break;
case 34:
#line 501 "cfg.y"
{ yyval.sockid=0; yyerror(" port number expected"); }
break;
case 35:
#line 504 "cfg.y"
{ yyval.sockid=yyvsp[0].sockid ; }
break;
case 36:
#line 505 "cfg.y"
{ yyval.sockid=yyvsp[-1].sockid; yyval.sockid->next=yyvsp[0].sockid; }
break;
case 37:
#line 509 "cfg.y"
{
s_tmp.s=yyvsp[-1].strval;
s_tmp.len=strlen(yyvsp[-1].strval);
if (add_rule_to_list(&bl_head,&bl_tail,yyvsp[-5].ipnet,&s_tmp,yyvsp[-3].intval,yyvsp[-7].intval,0)) {
yyerror("failed to add backlist element\n");YYABORT;
}
}
break;
case 38:
#line 516 "cfg.y"
{
s_tmp.s=yyvsp[-1].strval;
s_tmp.len=strlen(yyvsp[-1].strval);
if (add_rule_to_list(&bl_head,&bl_tail,yyvsp[-5].ipnet,&s_tmp,
yyvsp[-3].intval,yyvsp[-7].intval,BLR_APPLY_CONTRARY)) {
yyerror("failed to add backlist element\n");YYABORT;
}
}
break;
case 39:
#line 526 "cfg.y"
{}
break;
case 40:
#line 527 "cfg.y"
{}
break;
case 41:
#line 528 "cfg.y"
{ yyerror("bad black list element");}
break;
case 42:
#line 532 "cfg.y"
{ debug=yyvsp[0].intval; }
break;
case 43:
#line 533 "cfg.y"
{ yyerror("number expected"); }
break;
case 44:
#line 534 "cfg.y"
{ dont_fork= ! yyvsp[0].intval; }
break;
case 45:
#line 535 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 46:
#line 536 "cfg.y"
{ if (!config_check) log_stderr=yyvsp[0].intval; }
break;
case 47:
#line 537 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 48:
#line 538 "cfg.y"
{
if ( (i_tmp=str2facility(yyvsp[0].strval))==-1)
yyerror("bad facility (see syslog(3) man page)");
if (!config_check)
log_facility=i_tmp;
}
break;
case 49:
#line 544 "cfg.y"
{ yyerror("ID expected"); }
break;
case 50:
#line 545 "cfg.y"
{ log_name=yyvsp[0].strval; }
break;
case 51:
#line 546 "cfg.y"
{ yyerror("string value expected"); }
break;
case 52:
#line 547 "cfg.y"
{
if (yyvsp[0].strval!=0 && yyvsp[0].strval[0]!=0)
if ( add_avp_galias_str(yyvsp[0].strval)!=0 )
yyerror("invalid AVP aliases");;
}
break;
case 53:
#line 552 "cfg.y"
{ yyerror("string value expected"); }
break;
case 54:
#line 553 "cfg.y"
{ received_dns|= (yyvsp[0].intval)?DO_DNS:0; }
break;
case 55:
#line 554 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 56:
#line 555 "cfg.y"
{ received_dns|= (yyvsp[0].intval)?DO_REV_DNS:0; }
break;
case 57:
#line 556 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 58:
#line 557 "cfg.y"
{ dns_try_ipv6=yyvsp[0].intval; }
break;
case 59:
#line 558 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 60:
#line 559 "cfg.y"
{ dns_retr_time=yyvsp[0].intval; }
break;
case 61:
#line 560 "cfg.y"
{ yyerror("number expected"); }
break;
case 62:
#line 561 "cfg.y"
{ dns_retr_no=yyvsp[0].intval; }
break;
case 63:
#line 562 "cfg.y"
{ yyerror("number expected"); }
break;
case 64:
#line 563 "cfg.y"
{ dns_servers_no=yyvsp[0].intval; }
break;
case 65:
#line 564 "cfg.y"
{ yyerror("number expected"); }
break;
case 66:
#line 565 "cfg.y"
{ dns_search_list=yyvsp[0].intval; }
break;
case 67:
#line 566 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 68:
#line 567 "cfg.y"
{ port_no=yyvsp[0].intval; }
break;
case 69:
#line 568 "cfg.y"
{ maxbuffer=yyvsp[0].intval; }
break;
case 70:
#line 569 "cfg.y"
{ yyerror("number expected"); }
break;
case 71:
#line 570 "cfg.y"
{ yyerror("number expected"); }
break;
case 72:
#line 571 "cfg.y"
{ children_no=yyvsp[0].intval; }
break;
case 73:
#line 572 "cfg.y"
{ yyerror("number expected"); }
break;
case 74:
#line 573 "cfg.y"
{ check_via=yyvsp[0].intval; }
break;
case 75:
#line 574 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 76:
#line 575 "cfg.y"
{ memlog=yyvsp[0].intval; }
break;
case 77:
#line 576 "cfg.y"
{ yyerror("int value expected"); }
break;
case 78:
#line 577 "cfg.y"
{ sip_warning=yyvsp[0].intval; }
break;
case 79:
#line 578 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 80:
#line 579 "cfg.y"
{ sock_mode=yyvsp[0].intval; }
break;
case 81:
#line 580 "cfg.y"
{ yyerror("int value expected"); }
break;
case 82:
#line 581 "cfg.y"
{ sock_user=yyvsp[0].strval; }
break;
case 83:
#line 582 "cfg.y"
{ sock_user=yyvsp[0].strval; }
break;
case 84:
#line 583 "cfg.y"
{ yyerror("string value expected"); }
break;
case 85:
#line 584 "cfg.y"
{ sock_group=yyvsp[0].strval; }
break;
case 86:
#line 585 "cfg.y"
{ sock_group=yyvsp[0].strval; }
break;
case 87:
#line 586 "cfg.y"
{ yyerror("string value expected"); }
break;
case 88:
#line 587 "cfg.y"
{ unixsock_name=yyvsp[0].strval; }
break;
case 89:
#line 588 "cfg.y"
{ yyerror("string value expected"); }
break;
case 90:
#line 589 "cfg.y"
{ unixsock_children=yyvsp[0].intval; }
break;
case 91:
#line 590 "cfg.y"
{ yyerror("int value expected\n"); }
break;
case 92:
#line 591 "cfg.y"
{ unixsock_tx_timeout=yyvsp[0].intval; }
break;
case 93:
#line 592 "cfg.y"
{ yyerror("int value expected\n"); }
break;
case 94:
#line 593 "cfg.y"
{ user=yyvsp[0].strval; }
break;
case 95:
#line 594 "cfg.y"
{ user=yyvsp[0].strval; }
break;
case 96:
#line 595 "cfg.y"
{ yyerror("string value expected"); }
break;
case 97:
#line 596 "cfg.y"
{ group=yyvsp[0].strval; }
break;
case 98:
#line 597 "cfg.y"
{ group=yyvsp[0].strval; }
break;
case 99:
#line 598 "cfg.y"
{ yyerror("string value expected"); }
break;
case 100:
#line 599 "cfg.y"
{ chroot_dir=yyvsp[0].strval; }
break;
case 101:
#line 600 "cfg.y"
{ chroot_dir=yyvsp[0].strval; }
break;
case 102:
#line 601 "cfg.y"
{ yyerror("string value expected"); }
break;
case 103:
#line 602 "cfg.y"
{ working_dir=yyvsp[0].strval; }
break;
case 104:
#line 603 "cfg.y"
{ working_dir=yyvsp[0].strval; }
break;
case 105:
#line 604 "cfg.y"
{ yyerror("string value expected"); }
break;
case 106:
#line 605 "cfg.y"
{ mhomed=yyvsp[0].intval; }
break;
case 107:
#line 606 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 108:
#line 607 "cfg.y"
{
#ifdef USE_TCP
tcp_disable=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 109:
#line 614 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 110:
#line 615 "cfg.y"
{
#ifdef USE_TCP
tcp_accept_aliases=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 111:
#line 622 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 112:
#line 623 "cfg.y"
{
#ifdef USE_TCP
tcp_children_no=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 113:
#line 630 "cfg.y"
{ yyerror("number expected"); }
break;
case 114:
#line 631 "cfg.y"
{
#ifdef USE_TCP
tcp_connect_timeout=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 115:
#line 638 "cfg.y"
{ yyerror("number expected"); }
break;
case 116:
#line 639 "cfg.y"
{
#ifdef USE_TCP
tcp_send_timeout=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 117:
#line 646 "cfg.y"
{ yyerror("number expected"); }
break;
case 118:
#line 647 "cfg.y"
{
#ifdef USE_TCP
tcp_con_lifetime=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 119:
#line 654 "cfg.y"
{ yyerror("number expected"); }
break;
case 120:
#line 655 "cfg.y"
{
#ifdef USE_TCP
tcp_poll_method=get_poll_type(yyvsp[0].strval);
if (tcp_poll_method==POLL_NONE){
LOG(L_CRIT, "bad poll method name:"
" %s\n, try one of %s.\n",
yyvsp[0].strval, poll_support);
yyerror("bad tcp_poll_method "
"value");
}
#else
warn("tcp support not compiled in");
#endif
}
break;
case 121:
#line 669 "cfg.y"
{
#ifdef USE_TCP
tcp_poll_method=get_poll_type(yyvsp[0].strval);
if (tcp_poll_method==POLL_NONE){
LOG(L_CRIT, "bad poll method name:"
" %s\n, try one of %s.\n",
yyvsp[0].strval, poll_support);
yyerror("bad tcp_poll_method "
"value");
}
#else
warn("tcp support not compiled in");
#endif
}
break;
case 122:
#line 683 "cfg.y"
{ yyerror("poll method name expected"); }
break;
case 123:
#line 684 "cfg.y"
{
#ifdef USE_TCP
tcp_max_connections=yyvsp[0].intval;
#else
warn("tcp support not compiled in");
#endif
}
break;
case 124:
#line 691 "cfg.y"
{ yyerror("number expected"); }
break;
case 125:
#line 692 "cfg.y"
{
#ifdef USE_TLS
tls_disable=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 126:
#line 699 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 127:
#line 700 "cfg.y"
{
#ifdef USE_TLS
tls_log=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 128:
#line 707 "cfg.y"
{ yyerror("int value expected"); }
break;
case 129:
#line 708 "cfg.y"
{
#ifdef USE_TLS
tls_port_no=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 130:
#line 715 "cfg.y"
{ yyerror("number expected"); }
break;
case 131:
#line 716 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->method =
TLS_USE_SSLv23;
tls_default_client_domain->method =
TLS_USE_SSLv23;
#else
warn("tls support not compiled in");
#endif
}
break;
case 132:
#line 726 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->method =
TLS_USE_SSLv2;
tls_default_client_domain->method =
TLS_USE_SSLv2;
#else
warn("tls support not compiled in");
#endif
}
break;
case 133:
#line 736 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->method =
TLS_USE_SSLv3;
tls_default_client_domain->method =
TLS_USE_SSLv3;
#else
warn("tls support not compiled in");
#endif
}
break;
case 134:
#line 746 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->method =
TLS_USE_TLSv1;
tls_default_client_domain->method =
TLS_USE_TLSv1;
#else
warn("tls support not compiled in");
#endif
}
break;
case 135:
#line 756 "cfg.y"
{
#ifdef USE_TLS
yyerror("SSLv23, SSLv2, SSLv3 or TLSv1"
" expected");
#else
warn("tls support not compiled in");
#endif
}
break;
case 136:
#line 765 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->verify_cert
= yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 137:
#line 773 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 138:
#line 774 "cfg.y"
{
#ifdef USE_TLS
tls_default_client_domain->verify_cert
=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 139:
#line 782 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 140:
#line 783 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->require_client_cert=yyvsp[0].intval;
#else
warn( "tls support not compiled in");
#endif
}
break;
case 141:
#line 790 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 142:
#line 791 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->cert_file=
yyvsp[0].strval;
tls_default_client_domain->cert_file=
yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 143:
#line 801 "cfg.y"
{ yyerror("string value expected"); }
break;
case 144:
#line 802 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->pkey_file=
yyvsp[0].strval;
tls_default_client_domain->pkey_file=
yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 145:
#line 812 "cfg.y"
{ yyerror("string value expected"); }
break;
case 146:
#line 813 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->ca_file =
yyvsp[0].strval;
tls_default_client_domain->ca_file =
yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 147:
#line 823 "cfg.y"
{ yyerror("string value expected"); }
break;
case 148:
#line 824 "cfg.y"
{
#ifdef USE_TLS
tls_default_server_domain->ciphers_list
= yyvsp[0].strval;
tls_default_client_domain->ciphers_list
= yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 149:
#line 834 "cfg.y"
{ yyerror("string value expected"); }
break;
case 150:
#line 835 "cfg.y"
{
#ifdef USE_TLS
tls_handshake_timeout=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 151:
#line 842 "cfg.y"
{ yyerror("number expected"); }
break;
case 152:
#line 843 "cfg.y"
{
#ifdef USE_TLS
tls_send_timeout=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 153:
#line 850 "cfg.y"
{ yyerror("number expected"); }
break;
case 154:
#line 851 "cfg.y"
{
#ifdef USE_TLS
tls_client_domain_avp=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 155:
#line 858 "cfg.y"
{ yyerror("number expected"); }
break;
case 158:
#line 861 "cfg.y"
{ server_signature=yyvsp[0].intval; }
break;
case 159:
#line 862 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 160:
#line 863 "cfg.y"
{ server_header.s=yyvsp[0].strval;
server_header.len=strlen(yyvsp[0].strval);
}
break;
case 161:
#line 866 "cfg.y"
{ yyerror("string value expected"); }
break;
case 162:
#line 867 "cfg.y"
{ user_agent_header.s=yyvsp[0].strval;
user_agent_header.len=strlen(yyvsp[0].strval);
}
break;
case 163:
#line 870 "cfg.y"
{ yyerror("string value expected"); }
break;
case 164:
#line 871 "cfg.y"
{ reply_to_via=yyvsp[0].intval; }
break;
case 165:
#line 872 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 166:
#line 873 "cfg.y"
{
for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next){
if (add_listen_iface( lst_tmp->name,
lst_tmp->port,
lst_tmp->proto,
0
)!=0){
LOG(L_CRIT, "ERROR: cfg. parser: failed"
" to add listen address\n");
break;
}
}
}
break;
case 167:
#line 886 "cfg.y"
{ yyerror("ip address or hostname "
"expected"); }
break;
case 168:
#line 888 "cfg.y"
{
for(lst_tmp=yyvsp[0].sockid; lst_tmp; lst_tmp=lst_tmp->next)
add_alias(lst_tmp->name, strlen(lst_tmp->name),
lst_tmp->port, lst_tmp->proto);
}
break;
case 169:
#line 893 "cfg.y"
{ yyerror(" hostname expected"); }
break;
case 170:
#line 894 "cfg.y"
{ auto_aliases=yyvsp[0].intval; }
break;
case 171:
#line 895 "cfg.y"
{ yyerror("number expected"); }
break;
case 172:
#line 896 "cfg.y"
{
if (yyvsp[0].strval) {
default_global_address.s=yyvsp[0].strval;
default_global_address.len=strlen(yyvsp[0].strval);
}
}
break;
case 173:
#line 902 "cfg.y"
{yyerror("ip address or hostname "
"expected"); }
break;
case 174:
#line 904 "cfg.y"
{
tmp=int2str(yyvsp[0].intval, &i_tmp);
if ((default_global_port.s=pkg_malloc(i_tmp))
==0){
LOG(L_CRIT, "ERROR: cfg. parser:"
" out of memory.\n");
default_global_port.len=0;
}else{
default_global_port.len=i_tmp;
memcpy(default_global_port.s, tmp,
default_global_port.len);
};
}
break;
case 175:
#line 917 "cfg.y"
{yyerror("ip address or hostname "
"expected"); }
break;
case 176:
#line 919 "cfg.y"
{
disable_core_dump=yyvsp[0].intval;
}
break;
case 177:
#line 922 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 178:
#line 923 "cfg.y"
{
open_files_limit=yyvsp[0].intval;
}
break;
case 179:
#line 926 "cfg.y"
{ yyerror("number expected"); }
break;
case 180:
#line 927 "cfg.y"
{
#ifdef USE_MCAST
mcast_loopback=yyvsp[0].intval;
#else
warn("no multicast support compiled in");
#endif
}
break;
case 181:
#line 934 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 182:
#line 935 "cfg.y"
{
#ifdef USE_MCAST
mcast_ttl=yyvsp[0].intval;
#else
warn("no multicast support compiled in");
#endif
}
break;
case 183:
#line 942 "cfg.y"
{ yyerror("number expected as tos"); }
break;
case 184:
#line 943 "cfg.y"
{ tos = yyvsp[0].intval;
if (tos<=0)
yyerror("invalid tos value");
}
break;
case 185:
#line 947 "cfg.y"
{ if (strcasecmp(yyvsp[0].strval,"IPTOS_LOWDELAY")) {
tos=IPTOS_LOWDELAY;
} else if (strcasecmp(yyvsp[0].strval,"IPTOS_THROUGHPUT")) {
tos=IPTOS_THROUGHPUT;
} else if (strcasecmp(yyvsp[0].strval,"IPTOS_RELIABILITY")) {
tos=IPTOS_RELIABILITY;
#if defined(IPTOS_MINCOST)
} else if (strcasecmp(yyvsp[0].strval,"IPTOS_MINCOST")) {
tos=IPTOS_MINCOST;
#endif
#if defined(IPTOS_LOWCOST)
} else if (strcasecmp(yyvsp[0].strval,"IPTOS_LOWCOST")) {
tos=IPTOS_LOWCOST;
#endif
} else {
yyerror("invalid tos value - allowed: "
"IPTOS_LOWDELAY,IPTOS_THROUGHPUT,"
"IPTOS_RELIABILITY"
#if defined(IPTOS_LOWCOST)
",IPTOS_LOWCOST"
#endif
#if !defined(IPTOS_MINCOST)
",IPTOS_MINCOST"
#endif
"\n");
}
}
break;
case 186:
#line 974 "cfg.y"
{ yyerror("number expected"); }
break;
case 187:
#line 975 "cfg.y"
{ mpath=yyvsp[0].strval; strcpy(mpath_buf, yyvsp[0].strval);
mpath_len=strlen(yyvsp[0].strval);
if(mpath_buf[mpath_len-1]!='/') {
mpath_buf[mpath_len]='/';
mpath_len++;
mpath_buf[mpath_len]='\0';
}
}
break;
case 188:
#line 983 "cfg.y"
{ yyerror("string value expected"); }
break;
case 189:
#line 984 "cfg.y"
{
disable_dns_failover=yyvsp[0].intval;
}
break;
case 190:
#line 987 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 191:
#line 988 "cfg.y"
{
disable_dns_blacklist=yyvsp[0].intval;
}
break;
case 192:
#line 991 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 193:
#line 992 "cfg.y"
{ yyerror("unknown config variable"); }
break;
case 194:
#line 993 "cfg.y"
{
s_tmp.s = yyvsp[-4].strval;
s_tmp.len = strlen(yyvsp[-4].strval);
if ( create_bl_head( BL_CORE_ID, BL_READONLY_LIST,
bl_head, bl_tail, &s_tmp)==0) {
yyerror("failed to create blacklist\n");
YYABORT;
}
bl_head = bl_tail = 0;
}
break;
case 195:
#line 1005 "cfg.y"
{ if(*yyvsp[0].strval!='/' && mpath!=NULL
&& strlen(yyvsp[0].strval)+mpath_len<255)
{
strcpy(mpath_buf+mpath_len, yyvsp[0].strval);
DBG("loading module %s\n", mpath_buf);
if (sr_load_module(mpath_buf)!=0){
yyerror("failed to load module");
}
mpath_buf[mpath_len]='\0';
} else {
DBG("loading module %s\n", yyvsp[0].strval);
if (sr_load_module(yyvsp[0].strval)!=0){
yyerror("failed to load module");
}
}
}
break;
case 196:
#line 1021 "cfg.y"
{ yyerror("string expected"); }
break;
case 197:
#line 1022 "cfg.y"
{
if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, STR_PARAM, yyvsp[-1].strval) != 0) {
yyerror("Can't set module parameter");
}
}
break;
case 198:
#line 1027 "cfg.y"
{
if (set_mod_param_regex(yyvsp[-5].strval, yyvsp[-3].strval, INT_PARAM, (void*)yyvsp[-1].intval) != 0) {
yyerror("Can't set module parameter");
}
}
break;
case 199:
#line 1032 "cfg.y"
{ yyerror("Invalid arguments"); }
break;
case 200:
#line 1036 "cfg.y"
{ yyval.ipaddr=yyvsp[0].ipaddr; }
break;
case 201:
#line 1037 "cfg.y"
{ yyval.ipaddr=yyvsp[0].ipaddr; }
break;
case 202:
#line 1040 "cfg.y"
{
yyval.ipaddr=pkg_malloc(
sizeof(struct ip_addr));
if (yyval.ipaddr==0){
LOG(L_CRIT, "ERROR: cfg. "
"parser: out of memory.\n"
);
}else{
memset(yyval.ipaddr, 0,
sizeof(struct ip_addr));
yyval.ipaddr->af=AF_INET;
yyval.ipaddr->len=4;
if ((yyvsp[-6].intval>255) || (yyvsp[-6].intval<0) ||
(yyvsp[-4].intval>255) || (yyvsp[-4].intval<0) ||
(yyvsp[-2].intval>255) || (yyvsp[-2].intval<0) ||
(yyvsp[0].intval>255) || (yyvsp[0].intval<0)){
yyerror("invalid ipv4"
"address");
yyval.ipaddr->u.addr32[0]=0;
/* $$=0; */
}else{
yyval.ipaddr->u.addr[0]=yyvsp[-6].intval;
yyval.ipaddr->u.addr[1]=yyvsp[-4].intval;
yyval.ipaddr->u.addr[2]=yyvsp[-2].intval;
yyval.ipaddr->u.addr[3]=yyvsp[0].intval;
/*
$$=htonl( ($1<<24)|
($3<<16)| ($5<<8)|$7 );
*/
}
}
}
break;
case 203:
#line 1074 "cfg.y"
{
yyval.ipaddr=pkg_malloc(sizeof(struct ip_addr));
if (yyval.ipaddr==0){
LOG(L_CRIT, "ERROR: cfg. parser: out of memory.\n");
}else{
memset(yyval.ipaddr, 0, sizeof(struct ip_addr));
yyval.ipaddr->af=AF_INET6;
yyval.ipaddr->len=16;
#ifdef USE_IPV6
if (inet_pton(AF_INET6, yyvsp[0].strval, yyval.ipaddr->u.addr)<=0){
yyerror("bad ipv6 address");
}
#else
yyerror("ipv6 address & no ipv6 support compiled in");
YYABORT;
#endif
}
}
break;
case 204:
#line 1094 "cfg.y"
{ yyval.ipaddr=yyvsp[0].ipaddr; }
break;
case 205:
#line 1095 "cfg.y"
{yyval.ipaddr=yyvsp[-1].ipaddr; }
break;
case 206:
#line 1098 "cfg.y"
{
#ifdef USE_TLS
if (tls_new_server_domain(yyvsp[-3].ipaddr, yyvsp[-1].intval))
yyerror("tls_new_server_domain failed");
#else
warn("tls support not compiled in");
#endif
}
break;
case 208:
#line 1109 "cfg.y"
{
#ifdef USE_TLS
if (tls_new_client_domain(yyvsp[-3].ipaddr, yyvsp[-1].intval))
yyerror("tls_new_client_domain failed");
#else
warn("tls support not compiled in");
#endif
}
break;
case 210:
#line 1120 "cfg.y"
{
#ifdef USE_TLS
if (tls_new_client_domain_name(yyvsp[-1].strval, strlen(yyvsp[-1].strval)))
yyerror("tls_new_client_domain_name failed");
#else
warn("tls support not compiled in");
#endif
}
break;
case 216:
#line 1139 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->method=TLS_USE_SSLv23;
#else
warn("tls support not compiled in");
#endif
}
break;
case 217:
#line 1146 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->method=TLS_USE_SSLv2;
#else
warn("tls support not compiled in");
#endif
}
break;
case 218:
#line 1153 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->method=TLS_USE_SSLv3;
#else
warn("tls support not compiled in");
#endif
}
break;
case 219:
#line 1160 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->method=TLS_USE_TLSv1;
#else
warn("tls support not compiled in");
#endif
}
break;
case 220:
#line 1167 "cfg.y"
{ yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected"); }
break;
case 221:
#line 1168 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->cert_file=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 222:
#line 1175 "cfg.y"
{ yyerror("string value expected"); }
break;
case 223:
#line 1177 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->pkey_file=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 224:
#line 1184 "cfg.y"
{ yyerror("string value expected"); }
break;
case 225:
#line 1186 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->ca_file=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 226:
#line 1193 "cfg.y"
{ yyerror("string value expected"); }
break;
case 227:
#line 1194 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->ciphers_list=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 228:
#line 1201 "cfg.y"
{ yyerror("string value expected"); }
break;
case 229:
#line 1202 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->verify_cert=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 230:
#line 1209 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 231:
#line 1210 "cfg.y"
{
#ifdef USE_TLS
tls_server_domains->require_client_cert=yyvsp[0].intval;
#else
warn( "tls support not compiled in");
#endif
}
break;
case 232:
#line 1217 "cfg.y"
{
yyerror("boolean value expected"); }
break;
case 233:
#line 1221 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->method=TLS_USE_SSLv23;
#else
warn("tls support not compiled in");
#endif
}
break;
case 234:
#line 1228 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->method=TLS_USE_SSLv2;
#else
warn("tls support not compiled in");
#endif
}
break;
case 235:
#line 1235 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->method=TLS_USE_SSLv3;
#else
warn("tls support not compiled in");
#endif
}
break;
case 236:
#line 1242 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->method=TLS_USE_TLSv1;
#else
warn("tls support not compiled in");
#endif
}
break;
case 237:
#line 1249 "cfg.y"
{
yyerror("SSLv23, SSLv2, SSLv3 or TLSv1 expected"); }
break;
case 238:
#line 1251 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->cert_file=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 239:
#line 1258 "cfg.y"
{ yyerror("string value expected"); }
break;
case 240:
#line 1260 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->pkey_file=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 241:
#line 1267 "cfg.y"
{ yyerror("string value expected"); }
break;
case 242:
#line 1269 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->ca_file=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 243:
#line 1276 "cfg.y"
{ yyerror("string value expected"); }
break;
case 244:
#line 1277 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->ciphers_list=yyvsp[0].strval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 245:
#line 1284 "cfg.y"
{ yyerror("string value expected"); }
break;
case 246:
#line 1285 "cfg.y"
{
#ifdef USE_TLS
tls_client_domains->verify_cert=yyvsp[0].intval;
#else
warn("tls support not compiled in");
#endif
}
break;
case 247:
#line 1292 "cfg.y"
{ yyerror("boolean value expected"); }
break;
case 248:
#line 1295 "cfg.y"
{
if (rlist[DEFAULT_RT]!=0) {
yyerror("overwritting default "
"request routing table");
YYABORT;
}
push(yyvsp[-1].action, &rlist[DEFAULT_RT]);
}
break;
case 249:
#line 1303 "cfg.y"
{
if ((yyvsp[-4].intval<RT_NO) && (yyvsp[-4].intval>=0)){
if (rlist[yyvsp[-4].intval]!=0) {
yyerror("overwritting request "
"routing table");
YYABORT;
}
push(yyvsp[-1].action, &rlist[yyvsp[-4].intval]);
}else{
yyerror("invalid routing "
"table number");
YYABORT; }
}
break;
case 250:
#line 1316 "cfg.y"
{ yyerror("invalid route statement"); }
break;
case 251:
#line 1319 "cfg.y"
{
if ((yyvsp[-4].intval<FAILURE_RT_NO)&&(yyvsp[-4].intval>=1)){
if (failure_rlist[yyvsp[-4].intval]!=0) {
yyerror("overwritting failure "
"routing table");
YYABORT;
}
push(yyvsp[-1].action, &failure_rlist[yyvsp[-4].intval]);
} else {
yyerror("invalid reply routing "
"table number");
YYABORT; }
}
break;
case 252:
#line 1332 "cfg.y"
{ yyerror("invalid failure_route statement"); }
break;
case 253:
#line 1335 "cfg.y"
{
if (onreply_rlist[DEFAULT_RT]!=0) {
yyerror("overwritting default "
"onreply routing table");
YYABORT;
}
push(yyvsp[-1].action, &onreply_rlist[DEFAULT_RT]);
}
break;
case 254:
#line 1343 "cfg.y"
{
if ((yyvsp[-4].intval<ONREPLY_RT_NO)&&(yyvsp[-4].intval>=1)){
if (onreply_rlist[yyvsp[-4].intval]!=0) {
yyerror("overwritting onreply "
"routing table");
YYABORT;
}
push(yyvsp[-1].action, &onreply_rlist[yyvsp[-4].intval]);
} else {
yyerror("invalid reply routing "
"table number");
YYABORT; }
}
break;
case 255:
#line 1356 "cfg.y"
{ yyerror("invalid onreply_route statement"); }
break;
case 256:
#line 1359 "cfg.y"
{
if ((yyvsp[-4].intval<BRANCH_RT_NO)&&(yyvsp[-4].intval>=1)){
if (branch_rlist[yyvsp[-4].intval]!=0) {
yyerror("overwritting branch "
"routing table");
YYABORT;
}
push(yyvsp[-1].action, &branch_rlist[yyvsp[-4].intval]);
} else {
yyerror("invalid branch routing "
"table number");
YYABORT; }
}
break;
case 257:
#line 1372 "cfg.y"
{ yyerror("invalid branch_route statement"); }
break;
case 258:
#line 1375 "cfg.y"
{
if (error_rlist!=0) {
yyerror("overwritting default "
"error routing table");
YYABORT;
}
push(yyvsp[-1].action, &error_rlist);
}
break;
case 259:
#line 1383 "cfg.y"
{ yyerror("invalid error_route statement"); }
break;
case 260:
#line 1386 "cfg.y"
{ yyval.expr=mk_exp(AND_OP, yyvsp[-2].expr, yyvsp[0].expr); }
break;
case 261:
#line 1387 "cfg.y"
{ yyval.expr=mk_exp(OR_OP, yyvsp[-2].expr, yyvsp[0].expr); }
break;
case 262:
#line 1388 "cfg.y"
{ yyval.expr=mk_exp(NOT_OP, yyvsp[0].expr, 0); }
break;
case 263:
#line 1389 "cfg.y"
{ yyval.expr=mk_exp(EVAL_OP, yyvsp[-1].expr, 0); }
break;
case 264:
#line 1390 "cfg.y"
{ yyval.expr=yyvsp[-1].expr; }
break;
case 265:
#line 1391 "cfg.y"
{ yyval.expr=yyvsp[0].expr; }
break;
case 266:
#line 1394 "cfg.y"
{yyval.intval=EQUAL_OP; }
break;
case 267:
#line 1395 "cfg.y"
{yyval.intval=DIFF_OP; }
break;
case 268:
#line 1398 "cfg.y"
{yyval.intval=GT_OP; }
break;
case 269:
#line 1399 "cfg.y"
{yyval.intval=LT_OP; }
break;
case 270:
#line 1400 "cfg.y"
{yyval.intval=GTE_OP; }
break;
case 271:
#line 1401 "cfg.y"
{yyval.intval=LTE_OP; }
break;
case 272:
#line 1403 "cfg.y"
{yyval.intval=MATCH_OP; }
break;
case 273:
#line 1404 "cfg.y"
{yyval.intval=NOTMATCH_OP; }
break;
case 274:
#line 1407 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 275:
#line 1408 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 276:
#line 1411 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 277:
#line 1412 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 278:
#line 1413 "cfg.y"
{yyval.intval=yyvsp[0].intval; }
break;
case 279:
#line 1416 "cfg.y"
{yyval.intval=URI_O;}
break;
case 280:
#line 1417 "cfg.y"
{yyval.intval=FROM_URI_O;}
break;
case 281:
#line 1418 "cfg.y"
{yyval.intval=TO_URI_O;}
break;
case 282:
#line 1421 "cfg.y"
{
/* printf("\n+++ scriptvar <%s>\n", $1); */
spec = (xl_spec_t*)pkg_malloc(sizeof(xl_spec_t));
memset(spec, 0, sizeof(xl_spec_t));
if(xl_parse_spec(yyvsp[0].strval, spec, 0)==NULL)
{
yyerror("unknown script variable");
}
yyval.specval = spec;
}
break;
case 283:
#line 1431 "cfg.y"
{
yyval.specval=0; yyerror("invalid script variable name");
}
break;
case 284:
#line 1436 "cfg.y"
{yyval.expr=yyvsp[0].expr; }
break;
case 285:
#line 1437 "cfg.y"
{yyval.expr=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, yyvsp[0].action ); }
break;
case 286:
#line 1438 "cfg.y"
{yyval.expr=mk_elem( NO_OP, NUMBER_O, 0, NUMBER_ST,
(void*)yyvsp[0].intval ); }
break;
case 287:
#line 1440 "cfg.y"
{
yyval.expr=mk_elem(NO_OP, SCRIPTVAR_O,0,SCRIPTVAR_ST,(void*)yyvsp[0].specval);
}
break;
case 288:
#line 1443 "cfg.y"
{yyval.expr = mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, STRING_ST, yyvsp[0].strval);
}
break;
case 289:
#line 1445 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, NET_ST, yyvsp[0].ipnet);
}
break;
case 290:
#line 1447 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, STRING_ST, yyvsp[0].strval);
}
break;
case 291:
#line 1449 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, NET_ST, yyvsp[0].ipnet);
}
break;
case 292:
#line 1451 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, STRING_ST, yyvsp[0].strval);
}
break;
case 293:
#line 1455 "cfg.y"
{yyval.expr= mk_elem(yyvsp[-1].intval, METHOD_O, 0, STRING_ST, yyvsp[0].strval);
}
break;
case 294:
#line 1457 "cfg.y"
{yyval.expr = mk_elem(yyvsp[-1].intval, METHOD_O, 0, STRING_ST, yyvsp[0].strval);
}
break;
case 295:
#line 1459 "cfg.y"
{ yyval.expr=0; yyerror("string expected"); }
break;
case 296:
#line 1460 "cfg.y"
{ yyval.expr=0; yyerror("invalid operator,"
"== , !=, or =~ expected");
}
break;
case 297:
#line 1463 "cfg.y"
{
yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,SCRIPTVAR_ST,(void*)yyvsp[0].specval);
}
break;
case 298:
#line 1466 "cfg.y"
{
yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,STRING_ST,yyvsp[0].strval);
}
break;
case 299:
#line 1469 "cfg.y"
{
yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,STRING_ST,yyvsp[0].strval);
}
break;
case 300:
#line 1472 "cfg.y"
{
yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval,NUMBER_ST,(void *)yyvsp[0].intval);
}
break;
case 301:
#line 1475 "cfg.y"
{
yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval, MYSELF_ST, 0);
}
break;
case 302:
#line 1478 "cfg.y"
{
yyval.expr=mk_elem( yyvsp[-1].intval, SCRIPTVAR_O,(void*)yyvsp[-2].specval, NULLV_ST, 0);
}
break;
case 303:
#line 1481 "cfg.y"
{yyval.expr = mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, STRING_ST, yyvsp[0].strval);
}
break;
case 304:
#line 1483 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, yyvsp[-2].intval, 0, MYSELF_ST, 0);
}
break;
case 305:
#line 1485 "cfg.y"
{ yyval.expr=0; yyerror("string or MYSELF expected"); }
break;
case 306:
#line 1486 "cfg.y"
{ yyval.expr=0; yyerror("invalid operator,"
" == , != or =~ expected");
}
break;
case 307:
#line 1489 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCPORT_O, 0, NUMBER_ST,
(void *) yyvsp[0].intval ); }
break;
case 308:
#line 1491 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 309:
#line 1492 "cfg.y"
{ yyval.expr=0; yyerror("==, !=, <,>, >= or <= expected"); }
break;
case 310:
#line 1493 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTPORT_O, 0, NUMBER_ST,
(void *) yyvsp[0].intval ); }
break;
case 311:
#line 1495 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 312:
#line 1496 "cfg.y"
{ yyval.expr=0; yyerror("==, !=, <,>, >= or <= expected"); }
break;
case 313:
#line 1497 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, PROTO_O, 0, NUMBER_ST,
(void *) yyvsp[0].intval ); }
break;
case 314:
#line 1499 "cfg.y"
{ yyval.expr=0;
yyerror("protocol expected (udp, tcp or tls)");
}
break;
case 315:
#line 1502 "cfg.y"
{ yyval.expr=0; yyerror("equal/!= operator expected"); }
break;
case 316:
#line 1503 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, AF_O, 0, NUMBER_ST,
(void *) yyvsp[0].intval ); }
break;
case 317:
#line 1505 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 318:
#line 1506 "cfg.y"
{ yyval.expr=0; yyerror("equal/!= operator expected"); }
break;
case 319:
#line 1507 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, MSGLEN_O, 0, NUMBER_ST,
(void *) yyvsp[0].intval ); }
break;
case 320:
#line 1509 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, MSGLEN_O, 0, NUMBER_ST,
(void *) BUF_SIZE); }
break;
case 321:
#line 1511 "cfg.y"
{ yyval.expr=0; yyerror("number expected"); }
break;
case 322:
#line 1512 "cfg.y"
{ yyval.expr=0; yyerror("equal/!= operator expected"); }
break;
case 323:
#line 1513 "cfg.y"
{ s_tmp.s=yyvsp[0].strval;
s_tmp.len=strlen(yyvsp[0].strval);
ip_tmp=str2ip(&s_tmp);
if (ip_tmp==0)
ip_tmp=str2ip6(&s_tmp);
if (ip_tmp){
yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, NET_ST,
mk_net_bitlen(ip_tmp,
ip_tmp->len*8) );
}else{
yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, STRING_ST,
yyvsp[0].strval);
}
}
break;
case 324:
#line 1527 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, MYSELF_ST, 0);
}
break;
case 325:
#line 1529 "cfg.y"
{ yyval.expr=0; yyerror( "ip address or hostname"
"expected" ); }
break;
case 326:
#line 1531 "cfg.y"
{ yyval.expr=0;
yyerror("invalid operator, ==, != or =~ expected");}
break;
case 327:
#line 1533 "cfg.y"
{ s_tmp.s=yyvsp[0].strval;
s_tmp.len=strlen(yyvsp[0].strval);
ip_tmp=str2ip(&s_tmp);
if (ip_tmp==0)
ip_tmp=str2ip6(&s_tmp);
if (ip_tmp){
yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, NET_ST,
mk_net_bitlen(ip_tmp,
ip_tmp->len*8) );
}else{
yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, STRING_ST,
yyvsp[0].strval);
}
}
break;
case 328:
#line 1547 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, MYSELF_ST, 0);
}
break;
case 329:
#line 1549 "cfg.y"
{ yyval.expr=0; yyerror( "ip address or hostname"
"expected" ); }
break;
case 330:
#line 1551 "cfg.y"
{ yyval.expr=0;
yyerror("invalid operator, ==, != or =~ expected");}
break;
case 331:
#line 1553 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, yyvsp[0].intval, 0, MYSELF_ST, 0);
}
break;
case 332:
#line 1555 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, SRCIP_O, 0, MYSELF_ST, 0);
}
break;
case 333:
#line 1557 "cfg.y"
{ yyval.expr=mk_elem(yyvsp[-1].intval, DSTIP_O, 0, MYSELF_ST, 0);
}
break;
case 334:
#line 1559 "cfg.y"
{ yyval.expr=0;
yyerror(" URI, SRCIP or DSTIP expected"); }
break;
case 335:
#line 1561 "cfg.y"
{ yyval.expr=0;
yyerror ("invalid operator, == or != expected");
}
break;
case 336:
#line 1566 "cfg.y"
{ yyval.ipnet=mk_net(yyvsp[-2].ipaddr, yyvsp[0].ipaddr); }
break;
case 337:
#line 1567 "cfg.y"
{ if ((yyvsp[0].intval<0) || (yyvsp[0].intval>(long)yyvsp[-2].ipaddr->len*8)){
yyerror("invalid bit number in netmask");
yyval.ipnet=0;
}else{
yyval.ipnet=mk_net_bitlen(yyvsp[-2].ipaddr, yyvsp[0].intval);
/*
$$=mk_net($1,
htonl( ($3)?~( (1<<(32-$3))-1 ):0 ) );
*/
}
}
break;
case 338:
#line 1578 "cfg.y"
{ yyval.ipnet=mk_net_bitlen(yyvsp[0].ipaddr, yyvsp[0].ipaddr->len*8); }
break;
case 339:
#line 1579 "cfg.y"
{ yyval.ipnet=0;
yyerror("netmask (eg:255.0.0.0 or 8) expected");
}
break;
case 340:
#line 1586 "cfg.y"
{yyval.strval=".";}
break;
case 341:
#line 1587 "cfg.y"
{yyval.strval="-"; }
break;
case 342:
#line 1590 "cfg.y"
{ yyval.strval=yyvsp[0].strval; }
break;
case 343:
#line 1591 "cfg.y"
{ yyval.strval=(char*)pkg_malloc(strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)+1);
if (yyval.strval==0){
LOG(L_CRIT, "ERROR: cfg. parser: memory allocation"
" failure while parsing host\n");
}else{
memcpy(yyval.strval, yyvsp[-2].strval, strlen(yyvsp[-2].strval));
yyval.strval[strlen(yyvsp[-2].strval)]=*yyvsp[-1].strval;
memcpy(yyval.strval+strlen(yyvsp[-2].strval)+1, yyvsp[0].strval, strlen(yyvsp[0].strval));
yyval.strval[strlen(yyvsp[-2].strval)+1+strlen(yyvsp[0].strval)]=0;
}
pkg_free(yyvsp[-2].strval); pkg_free(yyvsp[0].strval);
}
break;
case 344:
#line 1603 "cfg.y"
{ yyval.strval=0; pkg_free(yyvsp[-2].strval); yyerror("invalid hostname"); }
break;
case 345:
#line 1607 "cfg.y"
{ yyval.intval = EQ_T; }
break;
case 346:
#line 1608 "cfg.y"
{ yyval.intval = PLUSEQ_T; }
break;
case 347:
#line 1609 "cfg.y"
{ yyval.intval = MINUSEQ_T;}
break;
case 348:
#line 1610 "cfg.y"
{ yyval.intval = DIVEQ_T; }
break;
case 349:
#line 1611 "cfg.y"
{ yyval.intval = MULTEQ_T; }
break;
case 350:
#line 1612 "cfg.y"
{ yyval.intval = MODULOEQ_T; }
break;
case 351:
#line 1613 "cfg.y"
{ yyval.intval = BANDEQ_T; }
break;
case 352:
#line 1614 "cfg.y"
{ yyval.intval = BOREQ_T; }
break;
case 353:
#line 1615 "cfg.y"
{ yyval.intval = BXOREQ_T; }
break;
case 354:
#line 1619 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, NUMBERV_O, (void*)yyvsp[0].intval, 0, 0); }
break;
case 355:
#line 1620 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, STRINGV_O, yyvsp[0].strval, 0, 0); }
break;
case 356:
#line 1621 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, STRINGV_O, yyvsp[0].strval, 0, 0); }
break;
case 357:
#line 1622 "cfg.y"
{ yyval.expr = mk_elem(VALUE_OP, SCRIPTVAR_O, yyvsp[0].specval, 0, 0); }
break;
case 358:
#line 1623 "cfg.y"
{ yyval.expr= yyvsp[0].expr; }
break;
case 359:
#line 1624 "cfg.y"
{ yyval.expr=mk_elem( NO_OP, ACTION_O, 0, ACTIONS_ST, yyvsp[0].action ); }
break;
case 360:
#line 1625 "cfg.y"
{
yyval.expr = mk_elem(PLUS_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 361:
#line 1628 "cfg.y"
{
yyval.expr = mk_elem(MINUS_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 362:
#line 1631 "cfg.y"
{
yyval.expr = mk_elem(MULT_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 363:
#line 1634 "cfg.y"
{
yyval.expr = mk_elem(DIV_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 364:
#line 1637 "cfg.y"
{
yyval.expr = mk_elem(MODULO_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 365:
#line 1640 "cfg.y"
{
yyval.expr = mk_elem(BAND_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 366:
#line 1643 "cfg.y"
{
yyval.expr = mk_elem(BOR_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 367:
#line 1646 "cfg.y"
{
yyval.expr = mk_elem(BXOR_OP, EXPR_O, yyvsp[-2].expr, EXPR_ST, yyvsp[0].expr);
}
break;
case 368:
#line 1649 "cfg.y"
{
yyval.expr = mk_elem(BNOT_OP, EXPR_O, yyvsp[0].expr, 0, 0);
}
break;
case 369:
#line 1652 "cfg.y"
{ yyval.expr = yyvsp[-1].expr; }
break;
case 370:
#line 1655 "cfg.y"
{
switch(yyvsp[-2].specval->type) {
case XL_AVP:
case XL_SCRIPTVAR:
case XL_RURI:
case XL_RURI_USERNAME:
case XL_RURI_DOMAIN:
case XL_DSTURI:
break;
default:
yyerror("invalid left operand in assignment");
}
if(yyvsp[-2].specval->trans!=0)
yyerror(
"transformations not accepted in right side of assignment");
mk_action2( yyval.action, yyvsp[-1].intval,
SCRIPTVAR_ST,
EXPR_ST,
yyvsp[-2].specval,
yyvsp[0].expr);
}
break;
case 371:
#line 1677 "cfg.y"
{
switch(yyvsp[-2].specval->type) {
case XL_AVP:
case XL_SCRIPTVAR:
case XL_DSTURI:
case XL_RURI_USERNAME:
break;
default:
yyerror("invalid left operand in NULL assignment");
}
if(yyvsp[-2].specval->trans!=0)
yyerror(
"transformations not accepted in right side of assignment");
mk_action2( yyval.action, EQ_T,
SCRIPTVAR_ST,
NULLV_ST,
yyvsp[-2].specval,
0);
}
break;
case 372:
#line 1699 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 373:
#line 1700 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 374:
#line 1701 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 375:
#line 1702 "cfg.y"
{ yyval.action=yyvsp[-1].action; }
break;
case 376:
#line 1703 "cfg.y"
{ yyval.action=0; }
break;
case 377:
#line 1706 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 378:
#line 1707 "cfg.y"
{ yyval.action=yyvsp[-1].action; }
break;
case 379:
#line 1708 "cfg.y"
{ yyval.action=0; }
break;
case 380:
#line 1711 "cfg.y"
{yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); }
break;
case 381:
#line 1712 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 382:
#line 1713 "cfg.y"
{ yyval.action=0; yyerror("bad command!)"); }
break;
case 383:
#line 1716 "cfg.y"
{yyval.action=yyvsp[-1].action;}
break;
case 384:
#line 1717 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 385:
#line 1718 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 386:
#line 1719 "cfg.y"
{yyval.action=yyvsp[-1].action;}
break;
case 387:
#line 1720 "cfg.y"
{yyval.action=0;}
break;
case 388:
#line 1721 "cfg.y"
{ yyval.action=0; yyerror("bad command: missing ';'?"); }
break;
case 389:
#line 1724 "cfg.y"
{ mk_action3( yyval.action, IF_T,
EXPR_ST,
ACTIONS_ST,
NOSUBTYPE,
yyvsp[-1].expr,
yyvsp[0].action,
0);
}
break;
case 390:
#line 1732 "cfg.y"
{ mk_action3( yyval.action, IF_T,
EXPR_ST,
ACTIONS_ST,
ACTIONS_ST,
yyvsp[-3].expr,
yyvsp[-2].action,
yyvsp[0].action);
}
break;
case 391:
#line 1743 "cfg.y"
{
mk_action2( yyval.action, SWITCH_T,
SCRIPTVAR_ST,
ACTIONS_ST,
yyvsp[-4].specval,
yyvsp[-1].action);
}
break;
case 392:
#line 1752 "cfg.y"
{ yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); }
break;
case 393:
#line 1753 "cfg.y"
{ yyval.action=yyvsp[0].action; }
break;
case 394:
#line 1755 "cfg.y"
{yyval.action=append_action(yyvsp[-1].action, yyvsp[0].action); }
break;
case 395:
#line 1756 "cfg.y"
{yyval.action=yyvsp[0].action;}
break;
case 396:
#line 1760 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
NUMBER_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-4].intval,
yyvsp[-2].action,
(void*)1);
}
break;
case 397:
#line 1769 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
NUMBER_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-3].intval,
0,
(void*)1);
}
break;
case 398:
#line 1777 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
NUMBER_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-2].intval,
yyvsp[0].action,
(void*)0);
}
break;
case 399:
#line 1785 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
NUMBER_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-1].intval,
0,
(void*)0);
}
break;
case 400:
#line 1794 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
STRING_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-4].strval,
yyvsp[-2].action,
(void*)1);
}
break;
case 401:
#line 1803 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
STRING_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-3].strval,
0,
(void*)1);
}
break;
case 402:
#line 1811 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
STRING_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-2].strval,
yyvsp[0].action,
(void*)0);
}
break;
case 403:
#line 1819 "cfg.y"
{ mk_action3( yyval.action, CASE_T,
STRING_ST,
ACTIONS_ST,
NUMBER_ST,
(void*)yyvsp[-1].strval,
0,
(void*)0);
}
break;
case 404:
#line 1830 "cfg.y"
{ mk_action2( yyval.action, DEFAULT_T,
ACTIONS_ST,
0,
yyvsp[0].action,
0);
}
break;
case 405:
#line 1836 "cfg.y"
{ mk_action2( yyval.action, DEFAULT_T,
ACTIONS_ST,
0,
0,
0);
}
break;
case 406:
#line 1844 "cfg.y"
{ mk_action2( yyval.action, FORWARD_T,
STRING_ST,
0,
yyvsp[-1].strval,
0);
}
break;
case 407:
#line 1850 "cfg.y"
{
mk_action2( yyval.action, FORWARD_T,
0,
0,
0,
0);
}
break;
case 408:
#line 1857 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 409:
#line 1858 "cfg.y"
{ yyval.action=0; yyerror("bad forward"
"argument"); }
break;
case 410:
#line 1861 "cfg.y"
{ mk_action2( yyval.action, SEND_T,
STRING_ST,
0,
yyvsp[-1].strval,
0);
}
break;
case 411:
#line 1867 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 412:
#line 1868 "cfg.y"
{ yyval.action=0; yyerror("bad send"
"argument"); }
break;
case 413:
#line 1870 "cfg.y"
{mk_action2( yyval.action, DROP_T,0, 0, 0, 0); }
break;
case 414:
#line 1871 "cfg.y"
{mk_action2( yyval.action, DROP_T,0, 0, 0, 0); }
break;
case 415:
#line 1872 "cfg.y"
{mk_action2( yyval.action, EXIT_T,0, 0, 0, 0); }
break;
case 416:
#line 1873 "cfg.y"
{mk_action2( yyval.action, EXIT_T,0, 0, 0, 0); }
break;
case 417:
#line 1874 "cfg.y"
{mk_action2( yyval.action, RETURN_T,
NUMBER_ST,
0,
(void*)yyvsp[-1].intval,
0);
}
break;
case 418:
#line 1880 "cfg.y"
{mk_action2( yyval.action, RETURN_T,
NUMBER_ST,
0,
(void*)1,
0);
}
break;
case 419:
#line 1886 "cfg.y"
{mk_action2( yyval.action, RETURN_T,
NUMBER_ST,
0,
(void*)1,
0);
}
break;
case 420:
#line 1892 "cfg.y"
{mk_action2( yyval.action, LOG_T, NUMBER_ST,
STRING_ST,(void*)4,yyvsp[-1].strval);
}
break;
case 421:
#line 1895 "cfg.y"
{mk_action2( yyval.action, LOG_T,
NUMBER_ST,
STRING_ST,
(void*)yyvsp[-3].intval,
yyvsp[-1].strval);
}
break;
case 422:
#line 1901 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 423:
#line 1902 "cfg.y"
{ yyval.action=0; yyerror("bad log"
"argument"); }
break;
case 424:
#line 1904 "cfg.y"
{mk_action2( yyval.action, SETFLAG_T, NUMBER_ST, 0,
(void *)yyvsp[-1].intval, 0 ); }
break;
case 425:
#line 1906 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 426:
#line 1907 "cfg.y"
{mk_action2( yyval.action, RESETFLAG_T,
NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 427:
#line 1909 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 428:
#line 1910 "cfg.y"
{mk_action2( yyval.action, ISFLAGSET_T,
NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 429:
#line 1912 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 430:
#line 1913 "cfg.y"
{mk_action2( yyval.action, SETSFLAG_T, NUMBER_ST,
0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 431:
#line 1915 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 432:
#line 1916 "cfg.y"
{mk_action2( yyval.action, RESETSFLAG_T,
NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 433:
#line 1918 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 434:
#line 1919 "cfg.y"
{mk_action2( yyval.action, ISSFLAGSET_T,
NUMBER_ST, 0, (void *)yyvsp[-1].intval, 0 ); }
break;
case 435:
#line 1921 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 436:
#line 1922 "cfg.y"
{mk_action2( yyval.action,
SETBFLAG_T,
NUMBER_ST, NUMBER_ST,
(void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); }
break;
case 437:
#line 1926 "cfg.y"
{mk_action2( yyval.action, SETBFLAG_T,
NUMBER_ST, NUMBER_ST,
0, (void *)yyvsp[-1].intval ); }
break;
case 438:
#line 1929 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 439:
#line 1930 "cfg.y"
{mk_action2( yyval.action,
RESETBFLAG_T,
NUMBER_ST, NUMBER_ST,
(void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); }
break;
case 440:
#line 1934 "cfg.y"
{mk_action2( yyval.action,
RESETBFLAG_T,
NUMBER_ST, NUMBER_ST,
0, (void *)yyvsp[-1].intval ); }
break;
case 441:
#line 1938 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 442:
#line 1939 "cfg.y"
{mk_action2( yyval.action,
ISBFLAGSET_T,
NUMBER_ST, NUMBER_ST,
(void *)yyvsp[-3].intval, (void *)yyvsp[-1].intval ); }
break;
case 443:
#line 1943 "cfg.y"
{mk_action2( yyval.action,
ISBFLAGSET_T,
NUMBER_ST, NUMBER_ST,
0, (void *)yyvsp[-1].intval ); }
break;
case 444:
#line 1947 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')'?"); }
break;
case 445:
#line 1948 "cfg.y"
{mk_action2( yyval.action, ERROR_T,
STRING_ST,
STRING_ST,
yyvsp[-3].strval,
yyvsp[-1].strval);
}
break;
case 446:
#line 1954 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 447:
#line 1955 "cfg.y"
{ yyval.action=0; yyerror("bad error"
"argument"); }
break;
case 448:
#line 1957 "cfg.y"
{ mk_action2( yyval.action, ROUTE_T, NUMBER_ST,
0, (void*)yyvsp[-1].intval, 0);
}
break;
case 449:
#line 1960 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 450:
#line 1961 "cfg.y"
{ yyval.action=0; yyerror("bad route"
"argument"); }
break;
case 451:
#line 1963 "cfg.y"
{ mk_action2( yyval.action, SET_HOST_T, STRING_ST,
0, yyvsp[-1].strval, 0); }
break;
case 452:
#line 1965 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 453:
#line 1966 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 454:
#line 1969 "cfg.y"
{ mk_action2( yyval.action, PREFIX_T, STRING_ST,
0, yyvsp[-1].strval, 0); }
break;
case 455:
#line 1971 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 456:
#line 1972 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 457:
#line 1974 "cfg.y"
{ mk_action2( yyval.action, STRIP_TAIL_T,
NUMBER_ST, 0, (void *) yyvsp[-1].intval, 0); }
break;
case 458:
#line 1976 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 459:
#line 1977 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"number expected"); }
break;
case 460:
#line 1980 "cfg.y"
{ mk_action2( yyval.action, STRIP_T, NUMBER_ST,
0, (void *) yyvsp[-1].intval, 0); }
break;
case 461:
#line 1982 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 462:
#line 1983 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"number expected"); }
break;
case 463:
#line 1985 "cfg.y"
{
#ifdef TIMING_INFO
mk_action2( yyval.action, SET_TIME_STAMP_T, STRING_ST, 0,
(void *) yyvsp[-1].strval, 0);
#else
warn("timing infor support not compiled in");
#endif
}
break;
case 464:
#line 1993 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 465:
#line 1994 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"number expected"); }
break;
case 466:
#line 1996 "cfg.y"
{
#ifdef TIMING_INFO
mk_action2( yyval.action, RESET_TIME_STAMP_T, 0, 0, 0, 0);
#else
warn("timing infor support not compiled in");
#endif
}
break;
case 467:
#line 2003 "cfg.y"
{
#ifdef TIMING_INFO
mk_action2( yyval.action, DIFF_TIME_STAMP_T, NUMBER_ST,
STRING_ST, (void *) yyvsp[-3].intval, (void *) yyvsp[-1].strval);
#else
warn("timing infor support not compiled in");
#endif
}
break;
case 468:
#line 2011 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 469:
#line 2012 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"number expected"); }
break;
case 470:
#line 2014 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 471:
#line 2015 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"number expected"); }
break;
case 472:
#line 2017 "cfg.y"
{
{ qvalue_t q;
if (str2q(&q, yyvsp[-1].strval, strlen(yyvsp[-1].strval)) < 0) {
yyerror("bad argument, q value expected");
}
mk_action2( yyval.action, APPEND_BRANCH_T, STRING_ST, NUMBER_ST, yyvsp[-3].strval,
(void *)(long)q); }
}
break;
case 473:
#line 2025 "cfg.y"
{ mk_action2( yyval.action, APPEND_BRANCH_T,
STRING_ST, NUMBER_ST, yyvsp[-1].strval, (void *)Q_UNSPECIFIED) ; }
break;
case 474:
#line 2027 "cfg.y"
{ mk_action2( yyval.action, APPEND_BRANCH_T,
STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED) ; }
break;
case 475:
#line 2029 "cfg.y"
{ mk_action2( yyval.action, APPEND_BRANCH_T,
STRING_ST, NUMBER_ST, 0, (void *)Q_UNSPECIFIED ) ; }
break;
case 476:
#line 2032 "cfg.y"
{ mk_action2( yyval.action, SET_HOSTPORT_T,
STRING_ST, 0, yyvsp[-1].strval, 0); }
break;
case 477:
#line 2034 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 478:
#line 2035 "cfg.y"
{ yyval.action=0; yyerror("bad argument,"
" string expected"); }
break;
case 479:
#line 2037 "cfg.y"
{ mk_action2( yyval.action, SET_PORT_T, STRING_ST,
0, yyvsp[-1].strval, 0); }
break;
case 480:
#line 2039 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 481:
#line 2040 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 482:
#line 2042 "cfg.y"
{ mk_action2( yyval.action, SET_USER_T,
STRING_ST,
0, yyvsp[-1].strval, 0); }
break;
case 483:
#line 2045 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 484:
#line 2046 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 485:
#line 2048 "cfg.y"
{ mk_action2( yyval.action, SET_USERPASS_T,
STRING_ST, 0, yyvsp[-1].strval, 0); }
break;
case 486:
#line 2050 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 487:
#line 2051 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 488:
#line 2053 "cfg.y"
{ mk_action2( yyval.action, SET_URI_T, STRING_ST,
0, yyvsp[-1].strval, 0); }
break;
case 489:
#line 2055 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 490:
#line 2056 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 491:
#line 2058 "cfg.y"
{ mk_action2( yyval.action, REVERT_URI_T, 0,0,0,0); }
break;
case 492:
#line 2059 "cfg.y"
{ mk_action2( yyval.action, REVERT_URI_T, 0,0,0,0); }
break;
case 493:
#line 2060 "cfg.y"
{ mk_action2( yyval.action, SET_DSTURI_T,
STRING_ST, 0, yyvsp[-1].strval, 0); }
break;
case 494:
#line 2062 "cfg.y"
{ yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 495:
#line 2063 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 496:
#line 2065 "cfg.y"
{ mk_action2( yyval.action, RESET_DSTURI_T,
0,0,0,0); }
break;
case 497:
#line 2067 "cfg.y"
{ mk_action2( yyval.action, RESET_DSTURI_T, 0,0,0,0); }
break;
case 498:
#line 2068 "cfg.y"
{ mk_action2( yyval.action, ISDSTURISET_T, 0,0,0,0); }
break;
case 499:
#line 2069 "cfg.y"
{ mk_action2( yyval.action, ISDSTURISET_T, 0,0,0,0); }
break;
case 500:
#line 2070 "cfg.y"
{ mk_action2( yyval.action, FORCE_RPORT_T,
0, 0, 0, 0); }
break;
case 501:
#line 2072 "cfg.y"
{ mk_action2( yyval.action, FORCE_RPORT_T,0, 0, 0, 0); }
break;
case 502:
#line 2073 "cfg.y"
{
mk_action2( yyval.action, FORCE_LOCAL_RPORT_T,0, 0, 0, 0); }
break;
case 503:
#line 2075 "cfg.y"
{
mk_action2( yyval.action, FORCE_LOCAL_RPORT_T,0, 0, 0, 0); }
break;
case 504:
#line 2077 "cfg.y"
{
#ifdef USE_TCP
mk_action2( yyval.action, FORCE_TCP_ALIAS_T,NUMBER_ST, 0,
(void*)yyvsp[-1].intval, 0);
#else
yyerror("tcp support not compiled in");
#endif
}
break;
case 505:
#line 2085 "cfg.y"
{
#ifdef USE_TCP
mk_action2( yyval.action, FORCE_TCP_ALIAS_T,0, 0, 0, 0);
#else
yyerror("tcp support not compiled in");
#endif
}
break;
case 506:
#line 2092 "cfg.y"
{
#ifdef USE_TCP
mk_action2( yyval.action, FORCE_TCP_ALIAS_T,0, 0, 0, 0);
#else
yyerror("tcp support not compiled in");
#endif
}
break;
case 507:
#line 2099 "cfg.y"
{yyval.action=0;
yyerror("bad argument, number expected");
}
break;
case 508:
#line 2102 "cfg.y"
{
yyval.action=0;
if ((str_tmp=pkg_malloc(sizeof(str)))==0){
LOG(L_CRIT, "ERROR: cfg. parser:"
" out of memory.\n");
}else if (yyvsp[-1].strval!=0){
str_tmp->s=yyvsp[-1].strval;
str_tmp->len=strlen(yyvsp[-1].strval);
mk_action2( yyval.action, SET_ADV_ADDR_T, STR_ST,
0, str_tmp, 0);
}
}
break;
case 509:
#line 2114 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 510:
#line 2116 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 511:
#line 2117 "cfg.y"
{
yyval.action=0;
tmp=int2str(yyvsp[-1].intval, &i_tmp);
if ((str_tmp=pkg_malloc(sizeof(str)))==0){
LOG(L_CRIT, "ERROR: cfg. parser:"
" out of memory.\n");
}else{
if ((str_tmp->s=pkg_malloc(i_tmp))==0){
LOG(L_CRIT, "ERROR: cfg. parser:"
" out of memory.\n");
}else{
memcpy(str_tmp->s, tmp, i_tmp);
str_tmp->len=i_tmp;
mk_action2( yyval.action, SET_ADV_PORT_T, STR_ST,
0, str_tmp, 0);
}
}
}
break;
case 512:
#line 2135 "cfg.y"
{ yyval.action=0; yyerror("bad argument, "
"string expected"); }
break;
case 513:
#line 2137 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 514:
#line 2138 "cfg.y"
{
mk_action2( yyval.action, FORCE_SEND_SOCKET_T,
SOCKID_ST, 0, yyvsp[-1].sockid, 0);
}
break;
case 515:
#line 2142 "cfg.y"
{ yyval.action=0; yyerror("bad argument,"
" [proto:]host[:port] expected");
}
break;
case 516:
#line 2145 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 517:
#line 2146 "cfg.y"
{
mk_action2( yyval.action, SERIALIZE_BRANCHES_T,
NUMBER_ST, 0, (void*)(long)yyvsp[-1].intval, 0);
}
break;
case 518:
#line 2150 "cfg.y"
{yyval.action=0; yyerror("bad argument,"
" number expected");
}
break;
case 519:
#line 2153 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 520:
#line 2154 "cfg.y"
{
mk_action2( yyval.action, NEXT_BRANCHES_T, 0, 0, 0, 0);
}
break;
case 521:
#line 2157 "cfg.y"
{yyval.action=0; yyerror("no argument is"
" expected");
}
break;
case 522:
#line 2160 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 523:
#line 2161 "cfg.y"
{
mk_action2( yyval.action, USE_BLACKLIST_T,
STRING_ST, 0, yyvsp[-1].strval, 0);
}
break;
case 524:
#line 2165 "cfg.y"
{yyval.action=0; yyerror("bad argument,"
" string expected");
}
break;
case 525:
#line 2168 "cfg.y"
{yyval.action=0; yyerror("missing '(' or ')' ?"); }
break;
case 526:
#line 2169 "cfg.y"
{ cmd_tmp=(void*)find_cmd_export_t(yyvsp[-2].strval, 0, rt);
if (cmd_tmp==0){
if (find_cmd_export_t(yyvsp[-2].strval, 0, 0)) {
yyerror("Command cannot be "
"used in the block\n");
} else {
yyerror("unknown command, "
"missing loadmodule?\n");
}
yyval.action=0;
}else{
mk_action2( yyval.action, MODULE_T,
CMD_ST,
0,
cmd_tmp,
0
);
}
}
break;
case 527:
#line 2188 "cfg.y"
{ cmd_tmp=(void*)find_cmd_export_t(yyvsp[-3].strval,1,rt);
if (cmd_tmp==0){
if (find_cmd_export_t(yyvsp[-3].strval, 1, 0)) {
yyerror("Command cannot be used "
"in the block\n");
} else {
yyerror("unknown command, missing"
" loadmodule?\n");
}
yyval.action=0;
}else{
mk_action2( yyval.action, MODULE_T,
CMD_ST,
STRING_ST,
cmd_tmp,
yyvsp[-1].strval
);
}
}
break;
case 528:
#line 2208 "cfg.y"
{ cmd_tmp=(void*)find_cmd_export_t(yyvsp[-5].strval,2,rt);
if (cmd_tmp==0){
if (find_cmd_export_t(yyvsp[-5].strval, 2, 0)) {
yyerror("Command cannot be used "
"in the block\n");
} else {
yyerror("unknown command, missing"
" loadmodule?\n");
}
yyval.action=0;
}else{
mk_action3( yyval.action, MODULE_T,
CMD_ST,
STRING_ST,
STRING_ST,
cmd_tmp,
yyvsp[-3].strval,
yyvsp[-1].strval
);
}
}
break;
case 529:
#line 2229 "cfg.y"
{ yyval.action=0; yyerror("bad arguments"); }
break;
#line 6018 "cfg.tab.c"
}
yyssp -= yym;
yystate = *yyssp;
yyvsp -= yym;
yym = yylhs[yyn];
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
*++yyvsp = yyval;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yychar, yys);
}
#endif
}
if (yychar == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate;
*++yyvsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
return (1);
yyaccept:
return (0);
}
syntax highlighted by Code2HTML, v. 0.9.1