#ifndef lint static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; #endif #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define yyclearin (DSQL_yychar=(-1)) #define yyerrok (DSQL_yyerrflag=0) #define YYRECOVERING (DSQL_yyerrflag!=0) #define YYPREFIX "yy" /* * PROGRAM: Dynamic SQL runtime support * MODULE: parse.y * DESCRIPTION: Dynamic SQL parser * * The contents of this file are subject to the Interbase Public * License Version 1.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy * of the License at http://www.Inprise.com/IPL.html * * Software distributed under the License is distributed on an * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express * or implied. See the License for the specific language governing * rights and limitations under the License. * * The Original Code was created by Inprise Corporation * and its predecessors. Portions created by Inprise Corporation are * Copyright (C) Inprise Corporation. * * All Rights Reserved. * Contributor(s): ______________________________________. */ #include "firebird.h" #include #include #include #include "../jrd/common.h" #include #include "gen/iberror.h" #include "../dsql/dsql.h" #include "../dsql/node.h" #include "../dsql/sym.h" #include "../jrd/gds.h" #include "../jrd/flags.h" #include "../dsql/alld_proto.h" #include "../dsql/errd_proto.h" #include "../dsql/hsh_proto.h" #include "../dsql/make_proto.h" #include "../dsql/parse_proto.h" #include "../jrd/gds_proto.h" #include "../jrd/thd_proto.h" /* #include "../jrd/err_proto.h" */ #ifndef WINDOWS_ONLY #include "../wal/wal.h" #endif extern "C" TEXT *DLL_EXPORT ERR_string(CONST TEXT*, int); ASSERT_FILENAME static void yyerror (TEXT *); /* Remove compiler warning produced by redef of WRITE & READ from WINDOWS.H */ #ifdef WINDOWS_ONLY #undef READ #undef WRITE #endif /* since UNIX isn't standard, we have to define stuff which is in (which isn't available on all UNIXes... */ #define SHRT_POS_MAX 32767 #define SHRT_UNSIGNED_MAX 65535 #define SHRT_NEG_MAX 32768 #define LONG_POS_MAX 2147483647 #define POSITIVE 0 #define NEGATIVE 1 #define UNSIGNED 2 #define MIN_CACHE_BUFFERS 250 #define DEF_CACHE_BUFFERS 1000 #define YYSTYPE NOD #ifdef DEBUG #define YYDEBUG 1 #endif static CONST UCHAR INTERNAL_FIELD_NAME [] = "DSQL internal"; /* NTX: placeholder */ static CONST UCHAR NULL_STRING [] = ""; #ifndef SHLIB_DEFS NOD DSQL_parse; #else extern NOD DSQL_parse; #endif static FLD field; static FIL file; static NOD field_name; static TEXT *beginning; static SSHORT log_defined, cache_defined; #define ACTIVE 257 #define ADD 258 #define AFTER 259 #define ALL 260 #define ALTER 261 #define AND 262 #define ANY 263 #define AS 264 #define ASC 265 #define AT 266 #define AVG 267 #define AUTO 268 #define BASENAME 269 #define BEFORE 270 #define BEGIN 271 #define BETWEEN 272 #define BLOB 273 #define BY 274 #define CACHE 275 #define CAST 276 #define CHARACTER 277 #define CHECK 278 #define CHECK_POINT_LEN 279 #define COLLATE 280 #define COLLATION 281 #define COMMA 282 #define COMMIT 283 #define COMMITTED 284 #define COMPUTED 285 #define CONCATENATE 286 #define CONDITIONAL 287 #define CONSTRAINT 288 #define CONTAINING 289 #define COUNT 290 #define CREATE 291 #define CSTRING 292 #define CURRENT 293 #define CURSOR 294 #define DATABASE 295 #define DATE 296 #define DB_KEY 297 #define DEBUG 298 #define DECIMAL 299 #define DECLARE 300 #define DEFAULT 301 #define DELETE 302 #define DESC 303 #define DISTINCT 304 #define DO 305 #define DOMAIN 306 #define DROP 307 #define ELSE 308 #define END 309 #define ENTRY_POINT 310 #define EQL 311 #define ESCAPE 312 #define EXCEPTION 313 #define EXECUTE 314 #define EXISTS 315 #define EXIT 316 #define EXTERNAL 317 #define FILTER 318 #define FOR 319 #define FOREIGN 320 #define FROM 321 #define FULL 322 #define FUNCTION 323 #define GDSCODE 324 #define GEQ 325 #define GENERATOR 326 #define GEN_ID 327 #define GRANT 328 #define GROUP 329 #define GROUP_COMMIT_WAIT 330 #define GTR 331 #define HAVING 332 #define IF 333 #define IN 334 #define INACTIVE 335 #define INNER 336 #define INPUT_TYPE 337 #define INDEX 338 #define INSERT 339 #define INTEGER 340 #define INTO 341 #define IS 342 #define ISOLATION 343 #define JOIN 344 #define KEY 345 #define KW_CHAR 346 #define KW_DEC 347 #define KW_DOUBLE 348 #define KW_FILE 349 #define KW_FLOAT 350 #define KW_INT 351 #define KW_LONG 352 #define KW_NULL 353 #define KW_NUMERIC 354 #define KW_UPPER 355 #define KW_VALUE 356 #define LENGTH 357 #define LOGFILE 358 #define LPAREN 359 #define LEFT 360 #define LEQ 361 #define LEVEL 362 #define LIKE 363 #define LOG_BUF_SIZE 364 #define LSS 365 #define MANUAL 366 #define MAXIMUM 367 #define MAX_SEGMENT 368 #define MERGE 369 #define MESSAGE 370 #define MINIMUM 371 #define MODULE_NAME 372 #define NAMES 373 #define NATIONAL 374 #define NATURAL 375 #define NCHAR 376 #define NEQ 377 #define NO 378 #define NOT 379 #define NOT_GTR 380 #define NOT_LSS 381 #define NUM_LOG_BUFS 382 #define OF 383 #define ON 384 #define ONLY 385 #define OPTION 386 #define OR 387 #define ORDER 388 #define OUTER 389 #define OUTPUT_TYPE 390 #define OVERFLOW 391 #define PAGE 392 #define PAGES 393 #define PAGE_SIZE 394 #define PARAMETER 395 #define PASSWORD 396 #define PLAN 397 #define POSITION 398 #define POST_EVENT 399 #define PRECISION 400 #define PRIMARY 401 #define PRIVILEGES 402 #define PROCEDURE 403 #define PROTECTED 404 #define RAW_PARTITIONS 405 #define READ 406 #define REAL 407 #define REFERENCES 408 #define RESERVING 409 #define RETAIN 410 #define RETURNING_VALUES 411 #define RETURNS 412 #define REVOKE 413 #define RIGHT 414 #define RPAREN 415 #define ROLLBACK 416 #define SEGMENT 417 #define SELECT 418 #define SET 419 #define SHADOW 420 #define SHARED 421 #define SINGULAR 422 #define SIZE 423 #define SMALLINT 424 #define SNAPSHOT 425 #define SOME 426 #define SORT 427 #define SQLCODE 428 #define STABILITY 429 #define STARTING 430 #define STATISTICS 431 #define SUB_TYPE 432 #define SUSPEND 433 #define SUM 434 #define TABLE 435 #define THEN 436 #define TO 437 #define TRANSACTION 438 #define TRIGGER 439 #define UNCOMMITTED 440 #define UNION 441 #define UNIQUE 442 #define UPDATE 443 #define USER 444 #define VALUES 445 #define VARCHAR 446 #define VARIABLE 447 #define VARYING 448 #define VERSION 449 #define VIEW 450 #define WAIT 451 #define WHEN 452 #define WHERE 453 #define WHILE 454 #define WITH 455 #define WORK 456 #define WRITE 457 #define FLOAT 458 #define NUMBER 459 #define NUMERIC 460 #define SYMBOL 461 #define STRING 462 #define INTRODUCER 463 #define ACTION 464 #define ADMIN 465 #define CASCADE 466 #define FREE_IT 467 #define RESTRICT 468 #define ROLE 469 #define COLUMN 470 #define TYPE 471 #define EXTRACT 472 #define YEAR 473 #define MONTH 474 #define DAY 475 #define HOUR 476 #define MINUTE 477 #define SECOND 478 #define WEEKDAY 479 #define YEARDAY 480 #define TIME 481 #define TIMESTAMP 482 #define CURRENT_DATE 483 #define CURRENT_TIME 484 #define CURRENT_TIMESTAMP 485 #define NUMBER64BIT 486 #define SCALEDINT 487 #define LIMIT 488 #define INT64 489 #define SUBSTRING 490 #define YYERRCODE 256 static short yylhs[] = { -1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 19, 19, 18, 18, 18, 29, 29, 22, 30, 30, 30, 30, 30, 21, 21, 27, 27, 23, 12, 12, 12, 12, 12, 12, 12, 33, 24, 24, 24, 24, 34, 34, 34, 20, 20, 35, 35, 35, 25, 25, 39, 26, 26, 41, 41, 6, 42, 42, 44, 49, 49, 49, 46, 46, 46, 53, 53, 54, 47, 47, 56, 56, 56, 56, 43, 5, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 61, 61, 64, 64, 64, 72, 80, 80, 80, 81, 81, 82, 82, 83, 83, 87, 87, 71, 90, 90, 92, 92, 93, 93, 96, 96, 97, 98, 98, 99, 100, 69, 73, 70, 84, 84, 103, 104, 104, 106, 106, 107, 107, 107, 107, 107, 105, 105, 108, 108, 109, 109, 109, 109, 111, 111, 111, 111, 110, 110, 115, 115, 114, 88, 116, 116, 117, 120, 121, 121, 122, 118, 119, 119, 123, 123, 124, 124, 125, 125, 125, 86, 86, 86, 66, 126, 126, 126, 127, 127, 128, 128, 129, 129, 129, 135, 76, 76, 131, 131, 94, 94, 89, 140, 141, 55, 132, 132, 95, 95, 95, 95, 133, 133, 145, 145, 146, 148, 148, 148, 148, 148, 130, 147, 147, 151, 151, 151, 151, 153, 154, 155, 150, 149, 149, 149, 149, 149, 156, 157, 158, 158, 158, 158, 65, 163, 159, 159, 160, 160, 164, 164, 165, 161, 161, 166, 166, 167, 168, 168, 162, 162, 170, 170, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 173, 174, 175, 175, 176, 182, 178, 178, 178, 179, 179, 179, 184, 184, 184, 184, 184, 184, 184, 184, 180, 180, 180, 180, 177, 181, 181, 171, 171, 186, 187, 187, 188, 188, 188, 188, 11, 190, 190, 190, 191, 191, 191, 191, 191, 191, 68, 193, 196, 196, 196, 197, 200, 205, 205, 206, 206, 207, 207, 137, 195, 77, 79, 194, 194, 67, 210, 210, 210, 211, 211, 211, 211, 211, 211, 212, 212, 213, 2, 215, 215, 215, 215, 215, 215, 215, 221, 221, 223, 223, 223, 223, 223, 223, 223, 216, 216, 224, 224, 224, 224, 224, 224, 224, 220, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 226, 226, 228, 228, 227, 225, 225, 225, 222, 222, 218, 219, 219, 230, 230, 230, 230, 231, 231, 217, 232, 232, 233, 233, 8, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 91, 91, 134, 134, 237, 237, 240, 240, 242, 242, 50, 50, 239, 239, 239, 239, 239, 239, 239, 239, 247, 247, 238, 238, 238, 238, 248, 248, 58, 58, 58, 52, 52, 244, 244, 244, 241, 241, 241, 252, 252, 252, 251, 251, 250, 250, 250, 245, 245, 255, 253, 253, 253, 254, 254, 246, 246, 246, 246, 256, 256, 15, 15, 15, 258, 258, 258, 4, 13, 260, 260, 261, 261, 262, 262, 257, 263, 263, 264, 264, 265, 265, 265, 265, 266, 266, 267, 267, 268, 268, 270, 270, 270, 271, 271, 271, 272, 272, 272, 269, 274, 274, 274, 275, 275, 273, 273, 276, 278, 278, 277, 277, 259, 14, 279, 279, 279, 280, 280, 283, 283, 284, 284, 62, 62, 62, 281, 281, 285, 285, 282, 198, 198, 199, 199, 289, 289, 290, 290, 290, 286, 293, 293, 294, 294, 295, 295, 296, 296, 297, 297, 299, 299, 300, 300, 208, 208, 28, 209, 209, 209, 209, 209, 209, 209, 209, 202, 202, 301, 301, 302, 302, 302, 203, 203, 201, 201, 287, 287, 304, 304, 304, 204, 204, 305, 306, 306, 306, 306, 306, 307, 307, 308, 308, 309, 309, 310, 310, 310, 311, 311, 10, 10, 312, 312, 7, 7, 313, 314, 315, 16, 16, 316, 317, 318, 318, 172, 291, 291, 3, 3, 319, 319, 319, 321, 321, 58, 320, 320, 322, 322, 31, 31, 75, 74, 74, 139, 139, 139, 136, 101, 101, 101, 101, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, 325, 325, 325, 325, 325, 325, 325, 325, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 330, 336, 336, 326, 326, 327, 327, 327, 327, 328, 328, 332, 332, 333, 333, 333, 333, 331, 334, 329, 329, 337, 337, 335, 339, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 144, 144, 144, 340, 343, 343, 142, 142, 344, 344, 344, 344, 344, 342, 342, 342, 342, 342, 338, 338, 338, 338, 338, 338, 192, 345, 48, 48, 17, 17, 214, 346, 51, 113, 243, 243, 85, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, 303, 303, 347, 347, 347, 347, 347, 347, 347, 347, 288, 288, 143, 45, 249, 112, 138, 323, 152, 185, 236, 60, 57, 189, 102, 63, 292, 32, 40, 298, 235, 36, 38, 183, 37, }; static short yylen[] = { 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 7, 8, 6, 7, 5, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 2, 2, 3, 0, 3, 0, 1, 7, 8, 6, 7, 6, 7, 4, 3, 1, 3, 3, 3, 2, 2, 2, 1, 3, 1, 2, 2, 1, 3, 1, 1, 3, 1, 2, 2, 2, 3, 8, 1, 1, 5, 0, 1, 3, 1, 3, 2, 1, 3, 2, 3, 4, 2, 9, 2, 3, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 1, 1, 6, 6, 1, 1, 0, 0, 1, 0, 4, 0, 1, 1, 2, 8, 1, 0, 3, 0, 0, 1, 1, 2, 1, 1, 1, 2, 6, 1, 1, 3, 0, 1, 1, 0, 1, 1, 2, 3, 4, 2, 2, 3, 0, 1, 1, 2, 1, 1, 1, 4, 3, 3, 3, 3, 1, 1, 6, 3, 1, 3, 1, 3, 2, 1, 0, 2, 3, 1, 0, 1, 1, 2, 3, 4, 0, 1, 2, 0, 1, 1, 5, 3, 2, 0, 1, 3, 1, 1, 6, 3, 2, 6, 2, 1, 2, 2, 2, 0, 1, 1, 2, 0, 2, 0, 1, 1, 1, 1, 0, 1, 1, 2, 2, 2, 4, 1, 1, 2, 2, 2, 0, 1, 1, 1, 1, 2, 3, 7, 6, 1, 1, 2, 2, 0, 3, 3, 1, 2, 2, 2, 8, 8, 3, 0, 2, 0, 1, 3, 2, 1, 0, 1, 2, 5, 1, 1, 3, 4, 1, 2, 2, 2, 3, 1, 1, 1, 2, 3, 1, 2, 1, 2, 2, 6, 7, 8, 6, 4, 2, 1, 3, 0, 2, 4, 0, 1, 1, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 6, 3, 0, 1, 2, 4, 1, 3, 2, 2, 2, 1, 4, 1, 3, 0, 1, 1, 1, 3, 3, 3, 7, 1, 1, 3, 4, 8, 2, 1, 3, 1, 1, 6, 3, 0, 0, 0, 0, 3, 0, 9, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 0, 4, 2, 3, 3, 2, 2, 3, 3, 2, 1, 2, 4, 3, 2, 2, 2, 2, 3, 1, 3, 3, 3, 2, 2, 4, 4, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 0, 2, 2, 0, 1, 2, 2, 2, 2, 2, 1, 3, 7, 1, 0, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 1, 1, 1, 1, 4, 5, 1, 3, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 6, 5, 3, 0, 2, 2, 0, 3, 0, 4, 1, 5, 4, 1, 4, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 0, 3, 5, 1, 1, 2, 3, 1, 2, 3, 0, 1, 1, 1, 5, 5, 6, 3, 2, 1, 0, 2, 0, 1, 0, 3, 1, 0, 1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 3, 1, 1, 3, 3, 1, 2, 3, 1, 2, 0, 2, 1, 1, 0, 1, 1, 1, 3, 2, 3, 0, 1, 3, 4, 3, 1, 3, 4, 3, 0, 1, 3, 3, 3, 1, 1, 0, 3, 0, 2, 0, 9, 1, 1, 1, 1, 1, 3, 1, 2, 3, 2, 1, 3, 1, 1, 6, 3, 3, 2, 3, 0, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 2, 0, 3, 0, 1, 3, 1, 1, 3, 2, 0, 2, 0, 2, 0, 3, 5, 0, 2, 0, 4, 1, 2, 1, 1, 0, 1, 3, 2, 1, 1, 2, 1, 4, 2, 1, 3, 8, 5, 1, 3, 1, 1, 4, 4, 4, 1, 1, 5, 5, 1, 3, 3, 1, 1, 7, 7, 5, 3, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 3, 1, 3, 1, 3, 3, 1, 1, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 5, 6, 3, 4, 5, 6, 3, 4, 3, 4, 3, 4, 4, 5, 4, 4, 3, 4, 3, 3, 8, 8, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 1, 1, 1, 1, 1, 4, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 3, 3, 3, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 1, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 4, 6, 6, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }; static short yydefred[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 497, 498, 499, 0, 550, 641, 642, 646, 647, 410, 0, 0, 0, 0, 0, 0, 356, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 89, 0, 791, 0, 18, 789, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 424, 0, 0, 34, 31, 33, 0, 32, 0, 841, 0, 0, 0, 0, 29, 62, 64, 0, 0, 0, 0, 0, 0, 0, 0, 504, 823, 567, 0, 568, 0, 0, 0, 843, 591, 0, 0, 2, 0, 0, 0, 0, 399, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 0, 382, 834, 0, 838, 0, 363, 840, 0, 360, 0, 593, 844, 0, 359, 0, 503, 787, 0, 137, 97, 0, 0, 98, 0, 672, 203, 0, 675, 0, 837, 96, 132, 0, 92, 0, 99, 793, 0, 93, 0, 94, 847, 0, 95, 133, 100, 559, 560, 0, 792, 790, 0, 835, 70, 0, 0, 833, 432, 425, 0, 431, 426, 427, 434, 428, 429, 430, 435, 0, 27, 0, 36, 667, 35, 0, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 757, 0, 825, 0, 759, 0, 0, 0, 756, 771, 770, 769, 0, 0, 0, 0, 761, 762, 763, 772, 773, 0, 0, 570, 0, 0, 785, 0, 775, 0, 0, 654, 760, 744, 743, 0, 0, 571, 0, 0, 745, 740, 741, 742, 774, 0, 0, 0, 0, 0, 0, 0, 522, 511, 0, 514, 516, 517, 518, 519, 525, 526, 0, 842, 592, 0, 0, 551, 0, 549, 0, 0, 0, 0, 411, 0, 0, 337, 0, 206, 0, 364, 357, 408, 409, 0, 0, 0, 0, 0, 0, 373, 0, 344, 345, 0, 509, 507, 788, 0, 0, 0, 0, 0, 0, 0, 140, 119, 0, 0, 90, 0, 108, 107, 0, 0, 0, 0, 0, 0, 826, 71, 0, 0, 0, 643, 644, 433, 0, 0, 319, 320, 314, 0, 318, 767, 0, 670, 0, 0, 24, 0, 0, 845, 0, 67, 65, 63, 30, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 776, 0, 0, 0, 0, 0, 0, 777, 778, 0, 0, 0, 0, 0, 846, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 839, 574, 0, 0, 548, 0, 523, 0, 520, 0, 521, 546, 0, 541, 0, 0, 515, 0, 650, 0, 485, 0, 0, 0, 555, 552, 0, 172, 0, 0, 116, 416, 159, 160, 0, 414, 0, 0, 0, 0, 417, 0, 412, 339, 0, 368, 370, 369, 0, 371, 0, 365, 204, 0, 0, 251, 0, 0, 0, 0, 377, 378, 0, 401, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, 136, 0, 0, 145, 0, 144, 0, 151, 134, 0, 149, 152, 153, 141, 0, 0, 453, 489, 456, 0, 490, 0, 0, 457, 0, 0, 0, 480, 493, 452, 475, 454, 455, 438, 339, 436, 437, 439, 0, 0, 448, 449, 450, 451, 0, 0, 0, 0, 674, 673, 0, 111, 0, 0, 187, 0, 0, 337, 0, 206, 0, 0, 79, 0, 0, 662, 0, 0, 0, 0, 0, 0, 0, 0, 676, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 768, 0, 0, 0, 669, 25, 0, 0, 41, 68, 0, 0, 23, 0, 0, 638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 815, 816, 817, 818, 819, 820, 821, 822, 0, 0, 754, 755, 814, 0, 0, 829, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 579, 580, 0, 0, 572, 575, 758, 797, 501, 0, 795, 500, 0, 524, 0, 532, 528, 527, 0, 0, 0, 543, 531, 0, 0, 648, 649, 0, 0, 0, 0, 0, 562, 0, 0, 117, 0, 0, 0, 0, 0, 0, 367, 0, 0, 340, 372, 446, 0, 253, 0, 247, 249, 337, 831, 224, 0, 0, 339, 0, 0, 195, 337, 0, 0, 0, 0, 229, 223, 226, 227, 228, 376, 406, 405, 375, 374, 0, 0, 0, 352, 348, 350, 351, 347, 349, 0, 339, 0, 142, 146, 0, 150, 0, 0, 476, 477, 494, 0, 491, 0, 0, 483, 481, 482, 0, 0, 0, 0, 447, 0, 0, 0, 0, 484, 337, 0, 186, 0, 189, 191, 192, 0, 0, 0, 0, 0, 206, 74, 0, 81, 73, 827, 464, 465, 0, 0, 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, 322, 323, 321, 671, 0, 0, 0, 0, 0, 0, 0, 50, 57, 59, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 798, 0, 0, 810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 813, 764, 0, 0, 0, 0, 0, 0, 594, 0, 0, 0, 0, 0, 502, 796, 533, 542, 537, 536, 0, 547, 652, 651, 201, 557, 558, 556, 0, 168, 162, 169, 0, 165, 0, 0, 164, 0, 175, 156, 155, 794, 158, 157, 418, 0, 210, 207, 209, 211, 212, 366, 252, 0, 197, 339, 199, 340, 194, 200, 0, 0, 230, 0, 379, 380, 339, 337, 340, 353, 0, 183, 184, 143, 0, 0, 0, 0, 0, 0, 492, 0, 0, 339, 340, 0, 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, 326, 0, 78, 0, 0, 0, 0, 82, 80, 0, 0, 832, 645, 0, 0, 690, 0, 0, 0, 716, 715, 0, 0, 0, 723, 733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 678, 0, 61, 54, 55, 60, 56, 0, 0, 19, 0, 0, 0, 39, 0, 0, 0, 656, 639, 0, 655, 0, 0, 0, 0, 804, 803, 0, 0, 800, 799, 0, 808, 807, 806, 805, 802, 801, 0, 0, 0, 582, 0, 589, 0, 587, 583, 0, 600, 596, 598, 0, 0, 0, 0, 539, 540, 544, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 256, 0, 0, 0, 231, 0, 402, 403, 381, 339, 422, 340, 828, 154, 0, 0, 459, 0, 458, 495, 0, 487, 0, 0, 0, 440, 0, 467, 0, 0, 469, 472, 474, 0, 0, 106, 0, 190, 339, 0, 0, 338, 0, 91, 0, 104, 0, 87, 0, 0, 0, 0, 0, 731, 732, 0, 0, 0, 0, 786, 779, 780, 0, 0, 781, 734, 0, 0, 0, 0, 0, 0, 0, 724, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 58, 51, 52, 20, 660, 661, 0, 658, 665, 666, 663, 0, 637, 0, 0, 205, 809, 811, 812, 0, 0, 585, 0, 0, 0, 604, 607, 0, 0, 0, 0, 170, 166, 0, 0, 181, 177, 340, 0, 0, 340, 257, 0, 0, 0, 215, 0, 0, 0, 0, 419, 461, 0, 462, 0, 121, 0, 0, 0, 125, 127, 128, 129, 443, 445, 441, 471, 340, 0, 0, 0, 0, 324, 0, 327, 339, 83, 0, 0, 85, 0, 0, 0, 0, 0, 0, 736, 0, 735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 640, 0, 588, 0, 0, 0, 0, 613, 0, 566, 0, 161, 178, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 263, 259, 0, 0, 268, 269, 270, 273, 275, 246, 0, 193, 216, 0, 0, 0, 221, 217, 220, 0, 340, 0, 460, 488, 130, 118, 126, 245, 113, 340, 0, 0, 341, 328, 0, 0, 86, 75, 0, 702, 710, 0, 782, 783, 784, 703, 711, 706, 714, 0, 0, 704, 712, 705, 713, 699, 707, 700, 708, 701, 709, 657, 0, 0, 608, 605, 0, 621, 623, 0, 618, 0, 171, 0, 0, 0, 277, 0, 0, 0, 276, 0, 266, 271, 0, 274, 261, 0, 264, 0, 305, 265, 196, 218, 222, 0, 0, 233, 355, 343, 0, 0, 0, 333, 334, 0, 0, 72, 88, 0, 738, 615, 0, 622, 0, 258, 267, 0, 0, 0, 272, 0, 299, 0, 298, 313, 0, 0, 0, 0, 308, 262, 306, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 292, 291, 293, 0, 290, 0, 0, 0, 0, 282, 0, 312, 836, 311, 310, 0, 0, 219, 0, 0, 0, 237, 0, 236, 336, 0, 0, 0, 105, 0, 616, 631, 620, 0, 0, 632, 0, 628, 0, 0, 0, 0, 0, 0, 0, 0, 300, 301, 307, 309, 0, 0, 241, 240, 239, 0, 329, 0, 627, 0, 634, 285, 0, 0, 278, 296, 295, 297, 294, 0, 0, 0, 302, 244, 242, 243, 0, 737, 0, 0, 0, 303, 279, 0, 0, 0, 633, 288, 280, 636, }; static short yydgoto[] = { 17, 18, 19, 20, 21, 22, 23, 1303, 25, 26, 1304, 28, 29, 30, 1305, 32, 1306, 567, 95, 377, 818, 1020, 96, 594, 819, 97, 382, 599, 119, 98, 99, 216, 646, 109, 820, 821, 157, 187, 822, 100, 101, 384, 72, 198, 359, 265, 562, 960, 266, 779, 535, 447, 758, 563, 564, 565, 962, 199, 1174, 64, 147, 65, 193, 1538, 1123, 178, 183, 185, 188, 175, 164, 167, 180, 190, 374, 217, 706, 471, 574, 903, 352, 554, 948, 1115, 503, 659, 925, 456, 457, 486, 346, 536, 936, 1227, 677, 899, 1228, 1229, 1230, 1231, 1232, 575, 176, 165, 342, 510, 343, 344, 511, 512, 513, 514, 1093, 894, 459, 460, 884, 882, 461, 888, 883, 1069, 1201, 889, 890, 1074, 354, 767, 768, 769, 770, 708, 694, 1213, 537, 710, 169, 475, 638, 268, 480, 1039, 368, 269, 270, 1214, 1215, 489, 1325, 1443, 716, 717, 704, 718, 719, 720, 1444, 1445, 1513, 324, 484, 1078, 1307, 153, 481, 482, 1079, 1080, 1308, 1309, 1310, 1397, 1311, 1312, 1313, 1314, 1315, 1316, 1463, 1500, 1431, 1503, 271, 414, 1465, 967, 1398, 1437, 1438, 1473, 370, 371, 272, 953, 1121, 1242, 954, 955, 113, 273, 1339, 363, 865, 1065, 1288, 1409, 1410, 1411, 1412, 863, 333, 500, 736, 1090, 181, 50, 328, 158, 126, 311, 144, 318, 150, 319, 329, 724, 330, 497, 920, 145, 312, 468, 501, 1091, 85, 155, 202, 538, 539, 696, 937, 697, 938, 939, 542, 543, 544, 545, 930, 783, 546, 547, 548, 751, 549, 449, 748, 34, 35, 36, 52, 160, 335, 291, 292, 293, 294, 295, 296, 297, 298, 299, 665, 439, 872, 1068, 440, 441, 670, 37, 125, 307, 38, 450, 451, 681, 424, 1199, 114, 274, 275, 276, 428, 647, 648, 649, 650, 857, 277, 1055, 1056, 1194, 1195, 278, 1286, 1455, 1379, 1456, 1457, 1458, 1497, 1539, 1030, 39, 40, 364, 41, 42, 446, 827, 1028, 1176, 1180, 172, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 1142, 977, 979, 1143, 412, 279, 280, 281, 636, 282, 1144, 195, 630, }; static short yysindex[] = { 5716, 1361, -212, 2352, 28, 918, -91, 3437, 15, 554, 449, 157, 2081, -212, 524, -97, -19, 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 0, 0, 0, 0, 0, 0, 4173, 197, 227, 258, -19, 341, 0, 0, 409, 1050, 510, 197, 529, 258, 547, -19, 341, 0, 580, 596, 0, -39, 0, 634, 0, 0, 801, 668, 0, -19, 739, 197, 884, 668, 227, 258, 547, -19, 341, 580, 596, 0, 258, 812, 0, 0, 0, 1215, 0, 1215, 0, 858, 924, 42, 1258, 0, 0, 0, 860, -19, 860, 951, 962, 966, 52, 774, 0, 0, 0, 5299, 0, 529, 1041, 905, 0, 0, 968, 930, 0, 1123, -104, 1098, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 0, 0, 1050, 0, -38, 0, 0, 1386, 0, 1108, 0, 0, 453, 0, 1011, 0, 0, 980, 0, 0, 436, 0, 0, 1184, 0, 0, 1409, 0, 1050, 0, 0, 0, 1386, 0, -74, 0, 0, 1171, 0, 1154, 0, 0, 1215, 0, 0, 0, 0, 0, 1158, 0, 0, 1044, 0, 0, 1191, 1080, 0, 0, 0, 1044, 0, 0, 0, 0, 0, 0, 0, 0, 1797, 0, 510, 0, 0, 0, 266, 1135, -210, 596, 1049, 0, 1198, 1215, 1223, 1226, 266, 1139, -210, 1162, 1163, 1512, 1513, 1516, 1105, 0, 1528, 0, 1532, 0, 1542, 1543, 1546, 0, 0, 0, 0, 0, 1547, 1112, 1133, 0, 0, 0, 0, 0, 5866, 5866, 0, 5396, 1146, 0, 1560, 0, 1725, 1520, 0, 0, 0, 0, 1291, 1571, 0, -129, 1575, 0, 0, 0, 0, 0, 1185, 227, 1262, 1174, 492, -19, 1194, 0, 0, 905, 0, 0, 0, 0, 0, 0, 0, 510, 0, 0, 699, 1213, 0, 1189, 0, 776, 1275, 701, -66, 0, 1346, 394, 0, 860, 0, 508, 0, 0, 0, 0, 860, 1230, -106, 1179, -46, 1600, 0, 4543, 0, 0, 407, 0, 0, 0, 1590, 1590, 1050, 1280, 1050, 1692, 436, 0, 0, 4883, 56, 0, 1230, 0, 0, 1368, 455, 1621, -19, 1398, 227, 0, 0, 1623, 159, 4248, 0, 0, 0, 1160, 2500, 0, 0, 0, 1622, 0, 0, 845, 0, -19, 1231, 0, 258, 1208, 0, 58, 0, 0, 0, 0, -19, -195, -19, 0, 1350, 258, 1628, 266, 1270, 948, 5478, 601, 0, 529, 5866, 1036, 1064, 1104, 3046, 0, 0, 628, 628, 524, 960, 1639, 0, 0, 5576, 1227, 5866, 5866, 5866, 5866, 5866, 5866, 25, 1241, 5478, 1237, 0, 0, 43, 14, 0, -173, 0, -131, 0, -131, 0, 0, 1657, 0, 80, 1276, 0, 1650, 0, 116, 0, 1434, 1434, 1674, 0, 0, 1337, 0, 60, 1372, 0, 0, 0, 0, 1050, 0, 1590, 1590, 1590, 1590, 0, 1678, 0, 0, 1450, 0, 0, 0, 1428, 0, 4883, 0, 0, 4883, 855, 0, 1386, 1467, 1272, 5118, 0, 0, 393, 0, 1272, 816, 1108, 0, 1345, 1298, 1273, 405, 426, 0, 1347, 0, 1290, 547, 0, 1050, 0, 1474, 0, 0, 1692, 0, 0, 0, 0, 156, 1305, 0, 0, 0, 1307, 0, 1352, 1716, 0, 1412, 1719, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1670, 35, 0, 0, 0, 0, 21, 1723, 1733, 1719, 0, 0, 1501, 0, 1050, 1050, 0, -106, 453, 0, 1391, 0, 1362, 1732, 0, 6082, 99, 0, 1388, 1397, 1741, 4399, 1745, 4345, 6235, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1082, 2500, 510, 0, 0, 611, 1349, 0, 0, 1329, -210, 0, 1480, 1759, 0, 1480, 611, 1485, 1492, 258, 5866, 5866, 1537, 5866, 1761, 5866, 1771, 1534, 5866, 5866, 5866, 5866, 5866, 5866, 0, 0, 0, 0, 0, 0, 0, 0, 1495, 5866, 0, 0, 0, 1725, 1203, 0, 0, 1541, 628, 628, 578, 578, 704, 25, 1783, 1780, 853, 0, 0, 4399, 1496, 0, 0, 0, 0, 0, -221, 0, 0, -110, 0, 1379, 0, 0, 0, -19, 656, -19, 0, 0, 5478, 510, 0, 0, 1227, -39, -39, 699, 510, 0, 1050, 1050, 0, 307, 1290, 1290, 1374, 547, 701, 0, 1789, 2023, 0, 0, 0, 1554, 0, 860, 0, 0, 0, 0, 0, 1558, 1796, 0, 1428, 1555, 0, 0, 1498, 1503, 1215, 1568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 547, 860, 6243, 0, 0, 0, 0, 0, 0, 547, 0, 1020, 0, 0, 1430, 0, 72, 1435, 0, 0, 0, 547, 0, 1716, 48, 0, 0, 0, 1552, 48, 1436, 48, 0, 1818, 547, 547, 547, 0, 0, 1502, 0, 1304, 0, 0, 0, 407, 1446, -19, 1354, 41, 0, 0, 1825, 0, 0, 0, 0, 0, 159, 1407, 1213, 0, 1213, 6123, 354, 5866, 5866, 4485, 1827, 647, 4628, 5866, 4713, 944, 4865, 4948, 5631, 5016, 5100, 5253, 4399, 4399, 0, 0, 0, 0, 0, 1208, 258, 341, 1208, 580, 93, 1826, 0, 0, 0, 611, 1486, 0, -134, 1505, 5478, 1505, 1837, 1826, 611, -151, 1550, 1644, 2141, 0, 2186, 0, 2322, 5866, 0, 2330, 2413, 2577, 2597, 2898, 3343, 5866, 829, 5866, 0, 0, 853, 1842, 5478, 930, 25, 1497, 0, 1499, 1500, 1548, 1624, 1567, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 1857, 0, 0, 0, 1399, 0, 1590, 1636, 0, 307, 0, 0, 0, 0, 0, 0, 0, 4399, 0, 0, 0, 0, 0, 0, 0, 1603, 0, 0, 0, 0, 0, 0, 1215, 1215, 0, 1865, 0, 0, 0, 0, 0, 0, 1642, 0, 0, 0, 1449, 28, 1420, 1493, 1554, 1874, 0, 1290, 1422, 0, 0, 767, 0, 1859, 1449, 798, 547, 1877, 1878, 1879, 1603, 1590, 1372, -106, 0, 1347, 524, 1466, 1482, 0, 17, 0, 547, 1531, 1625, 6082, 0, 0, 547, 1626, 0, 0, 1891, 1893, 0, 1461, 1725, 1898, 0, 0, 1725, 1900, 1862, 0, 0, 1588, 1902, 1725, 1904, 899, 1906, 1725, 1907, 5866, 5866, 1827, 5866, 5831, 1908, 1725, 1910, 1916, 1725, 1917, 5866, 1725, 1918, 1725, 1919, 1921, 1725, 1922, 1924, 1725, 1925, 0, 1705, 0, 0, 0, 0, 0, 1640, 611, 0, 611, 93, 1826, 0, 161, 161, 112, 0, 0, 1431, 0, 1837, 1826, 1926, -151, 0, 0, 4883, 1928, 0, 0, 3462, 0, 0, 0, 0, 0, 0, 3492, 1241, 1725, 0, 1725, 0, 1438, 0, 0, 853, 0, 0, 0, 25, 1511, 4399, 1504, 0, 0, 0, 1551, 1050, 1592, 1290, 1587, 1290, 0, 362, 1544, 1717, 1603, 0, 5866, 1701, 1594, 0, 4399, 0, 0, 0, 0, 0, 0, 0, 0, 1954, 28, 0, 1374, 0, 0, 48, 0, 2023, 1617, 48, 0, 48, 0, 1554, 1959, 0, 0, 0, 1717, 1290, 0, 1372, 0, 0, 5299, 1726, 0, -57, 0, 1857, 0, 1963, 0, 1967, 1050, -119, 1974, 1050, 0, 0, 5866, 1601, 1601, 524, 0, 0, 0, 1980, 1470, 0, 0, 1601, 1601, 5866, 1601, 1601, 1517, 1725, 0, 1106, 5866, 1725, 1601, 1601, 1601, 1601, 1725, 1601, 1601, 1601, 1601, 1601, 1601, 1637, 0, 0, 0, 0, 0, 0, 0, 1593, 0, 0, 0, 0, 5478, 0, -151, 1926, 0, 0, 0, 0, 1496, 5478, 0, 1005, 1744, 1983, 0, 0, 400, 1989, 1634, 1590, 0, 0, 1050, 1020, 0, 0, 0, 510, 4062, 0, 0, 1725, 1434, 1701, 0, 954, -19, 551, 1603, 0, 0, 1995, 0, 1997, 0, 1686, 1434, 1617, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1020, 1642, 1722, 1654, 0, 1446, 0, 0, 0, 1676, 1691, 0, 1554, 1679, 1725, 2014, 2017, 5866, 0, 2978, 0, 2018, 2020, 1725, 2022, 2024, 5866, 5866, 1725, 2030, 2031, 2034, 2037, 2040, 2044, 2045, 2047, 2050, 2061, 0, 161, 0, 1567, 0, 4399, 1227, 1511, 1290, 0, 452, 0, 1290, 0, 0, 0, 4883, 197, 1661, 2051, 1213, 2073, 1773, 5866, 2056, 2076, 2060, 2062, 1782, 2071, 0, 0, 0, 6359, 2072, 0, 0, 0, 0, 0, 0, 2092, 0, 0, 1781, 1792, -19, 0, 0, 0, 1215, 0, 1717, 0, 0, 0, 0, 0, 0, 0, 0, 29, 1241, 0, 0, 5866, 1050, 0, 0, 1050, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 1725, 1725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1634, 400, 0, 0, 391, 0, 0, 1769, 0, 2099, 0, 2082, 2084, 258, 0, 1799, 4399, 1695, 0, 4399, 0, 0, 96, 0, 0, -111, 0, -32, 0, 0, 0, 0, 0, 1215, 1760, 0, 0, 0, 29, 2104, 853, 0, 0, 1496, 1725, 0, 0, 1241, 0, 0, 1290, 0, 506, 0, 0, 941, 96, 582, 0, 604, 0, 766, 0, 0, 197, 1688, 28, 75, 0, 0, 0, 1760, -117, 0, 1767, 1768, 853, 2114, 29, 1815, 1567, 2124, 1496, 2127, -19, 0, 2129, 2128, 790, 2168, 0, 0, 0, 1762, 0, 2130, 85, 1739, 1875, 0, 96, 0, 0, 0, 0, 4062, -111, 0, -183, -183, 1883, 0, 1747, 0, 0, 853, 29, 1634, 0, 1567, 0, 0, 0, 506, 2147, 0, 227, 0, 1478, 37, 2132, 2168, 1899, 1887, 4062, 4062, 0, 0, 0, 0, 1730, 731, 0, 0, 0, 1318, 0, 1634, 0, 227, 0, 0, 96, 2153, 0, 0, 0, 0, 0, 1407, 4062, 1892, 0, 0, 0, 0, 4399, 0, 2155, 2163, 1483, 0, 0, 4062, 400, 227, 0, 0, 0, 0, }; static short yyrindex[] = { 0, 0, 109, 413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 5335, 0, 0, 0, 2206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 831, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1870, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1833, 0, 0, 0, 59, 0, 59, 0, 0, 0, 0, 1834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 915, 0, 0, 0, 1102, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, 320, 0, 936, 0, 0, 0, 0, 0, 985, 3723, 0, 6305, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 460, 0, 0, 2170, 0, 0, 0, 0, 1947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 1316, 0, 0, 0, 0, 0, 1903, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1021, 0, 1943, 0, 0, 0, 0, 1042, 0, 0, 0, 0, 0, 1961, 16, 4789, 0, 1058, 0, 0, 0, 0, 180, 0, 0, 0, 1775, 1775, 0, 0, 0, 1103, 1526, 0, 0, 0, 0, 0, 1961, 0, 0, 1074, 0, 0, 0, 0, 0, 0, 0, 5827, 1840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1172, 0, 0, 6009, 0, 6009, 0, 0, 0, 6009, 6009, 6009, 0, 0, 0, 1973, 2207, 6009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 768, 0, 768, 0, 0, 287, 0, 639, 661, 0, 0, 0, 937, 0, 994, 994, 778, 0, 0, 309, 0, 3093, 163, 0, 0, 0, 0, 0, 0, 1775, 1775, 1775, 1775, 0, 295, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 1975, 0, 0, 0, 0, 0, 1943, 0, 0, 934, 0, 345, 1770, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1173, 0, 0, 0, 0, 4085, 1675, 0, 0, 0, 3771, 0, 0, 3875, 0, 0, 3940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1222, 2991, 0, 0, 0, 0, 4046, 3858, 0, 3940, 0, 0, 0, 0, 0, 0, 0, 16, 863, 0, 0, 0, 0, 1828, 0, 0, 0, 0, 0, 0, 0, 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, 207, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 996, 0, 0, 0, 1665, 2345, 2432, 1748, 1835, 0, 0, 865, 522, 215, 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, 0, 646, 646, 0, 0, 0, 0, 0, 0, 4002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 2198, 0, 0, 284, 2122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1998, 0, 0, 0, 0, 0, 4152, 0, 0, 0, 0, 0, 3875, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6259, 0, 0, 0, 0, 0, 0, 0, 0, 1932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1202, 1221, 0, 0, 0, 0, 0, 0, 0, 1228, 0, 1228, 1251, 1285, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1909, 691, 0, 3506, 0, 1914, 0, 1920, 1927, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 311, 0, 0, 0, 0, 0, 1775, 1784, 0, 4092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 2161, 0, 0, 0, 0, 0, 0, 0, 0, 940, 0, 0, 0, 0, 0, 0, 1976, 1775, 1325, 16, 0, 1982, 5335, 1370, 83, 0, 0, 0, 0, 6259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 632, 0, 0, 0, 0, 0, 0, 1525, 0, 2515, 0, 2592, 0, 0, 0, 0, 0, 0, 0, 2656, 0, 0, 2676, 0, 0, 2740, 0, 2763, 0, 0, 2827, 0, 0, 2850, 0, 0, 3472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1202, 1373, 0, 1807, 237, 0, 0, 0, 0, 0, 1382, 1385, 1390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, 1066, 0, 1491, 0, 0, 0, 0, 730, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 3759, 0, 0, 0, 1795, 0, 0, 0, 0, 0, 1990, 0, 0, 2905, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 2381, 0, 0, 0, 0, 0, 0, 0, 1394, 0, 0, 0, 0, 0, 0, 0, 1406, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 6009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2913, 0, 2990, 0, 3074, 0, 0, 0, 0, 3158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1410, 0, 0, 0, 0, 69, 0, 0, 1909, 711, 1295, 0, 0, 404, 857, 862, 1775, 0, 0, 0, 1481, 0, 0, 0, 0, 0, 0, 0, 2222, 1022, 3323, 0, 1943, 0, 0, 1976, 0, 0, 0, 0, 0, 0, 0, 1411, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 3222, 0, 0, 0, 0, 0, 0, 0, 0, 3298, 0, 0, 0, 0, 3321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 49, 0, 0, 0, 0, 0, 0, 2230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3332, 3408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2231, 3548, 0, 0, 0, 0, 0, 2233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 1260, 0, 0, 0, 0, 214, 87, 0, 0, 68, 2222, 0, 0, 275, 0, 0, 0, 0, 2230, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2459, 0, 0, 3075, 3299, 1909, 756, 0, 0, 84, 0, 69, 0, 1142, 0, 0, 2234, 0, 0, 0, 0, 0, 2215, 0, 202, 1977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 55, 0, 49, 0, 0, 0, 2230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1909, 0, 2231, 0, 0, 0, 0, 0, 2227, 0, 0, 0, 0, 0, 0, 0, 6400, 0, 0, 0, 0, 0, 0, 2240, 0, 0, 0, 0, 0, 1490, 0, 0, 0, 0, 0, }; static short yygindex[] = { 0, 0, 0, 0, 0, 0, 0, 2287, 0, 0, 2289, 0, 0, 0, 8, 0, 2291, 1, 167, -93, -533, 1271, 257, -284, 6, 2285, 2070, 0, -31, 0, 2080, -86, -41, 0, 476, -850, -35, -50, -169, 2086, 984, 1706, 0, 0, 0, 1016, 0, 0, -34, 1351, -485, -29, -802, 1749, 1535, -276, 1357, 2236, -291, 0, -51, 0, 806, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -565, -25, 1371, -447, 339, -860, 0, 0, 0, 0, -316, -477, -976, 1378, -311, -40, 0, -442, 0, 0, -428, 1216, 0, 1101, 0, 0, -108, -553, -10, 0, 0, 0, 0, 1987, 0, 1820, 2027, -235, 1392, -663, 0, 0, 0, -635, 0, 0, 0, 0, 0, 0, 1448, 0, 0, 0, 1389, 2015, 2021, 0, 1631, 0, -450, 1633, -48, 70, -630, -45, 0, 0, -576, -202, -526, 0, 1137, -906, 0, 917, 1143, 0, 1888, 0, 0, 0, 921, 938, 889, -78, 2025, -826, -456, 0, 0, 1685, 0, 1299, -623, 0, 0, 0, -226, 0, 0, 0, 0, 0, 0, 0,-1236, 0, 392, 0, 926, 864, 999, 0, 922, 0, 0, 2032, -203, 0, 0, 0, 0, -904, -375, 1278, 0, -409,-1078, -671, -670, 0, -608, 983, 950, -289, 1843, 1641, 1457, 1176, -1, 0, 0, 0, 0, 0, 2083, 0, 0, 2093, 1923, 0, 0, 0, 0, 0, 2107, 0, 0, 0, 0, -15, 0, 0, 0, -314, 1667, -303, 1326, -391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1880, 0, 0, 1682, 0, 0, 0, 2420, 0, 0, 0, 0, 2143, 0, 0, 0, 0, 2004, 0, 2001, 0, 0, 0, 1776, 0, 0, 0, 0, 0, -84, 0, 1765, 0, -800, 0, 1195, 0, 2026, -374, 2019, 0, -567, 1802, 0, 0, -54, 0, 1263, 0, 1164, -942, 0, 1165, 0, 957, 0, 1003, 0, 920, 0, 0, 0, 2028, 0, 0, 0, 1860, 1649, -869, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3433, 1300, 1479, 0, 0, 0, 0, -201, 2058, 2118, 1233, 0, 0, }; #define YYTABLESIZE 6861 static short yytable[] = { 171, 121, 149, 69, 173, 68, 152, 218, 31, 170, 372, 369, 373, 809, 168, 652, 177, 154, 787, 163, 790, 678, 504, 610, 203, 184, 737, 695, 182, 179, 698, 509, 540, 211, 206, 631, 709, 674, 207, 660, 305, 477, 715, 541, 707, 213, 876, 210, 885, 1082, 1050, 208, 383, 725, 225, 619, 227, 215, 121, 658, 1088, 760, 383, 653, 208, 645, 209, 302, 603, 1408, 568, 830, 226, 67, 445, 467, 1103, 1522, 854, 928, 780, 959, 563, 325, 610, 550, 222, 331, 468, 754, 610, 468, 610, 933, 725, 263, 222, 725, 550, 349, 683, 356, 598, 668, 653, 283, 573, 653, 605, 506, 603, 1280, 725, 320, 619, 880, 927, 900, 468, 1476, 1113, 1196, 653, 208, 669, 112, 757, 603, 1098, 1470, 123, 331, 612, 610, 124, 426, 391, 1019, 84, 348, 388, 563, 325, 610, 67, 684, 331, 686, 687, 688, 689, 610, 1433, 332, 263, 1248, 304, 1177, 354, 468, 673, 171, 468, 413, 372, 369, 373, 902, 506, 1170, 375, 1172, 540, 122, 434, 264, 1216, 468, 813, 106, 421, 867, 485, 541, 112, 1478, 603, 1025, 378, 123, 1466, 612, 308, 124, 350, 1510, 742, 332, 378, 551, 509, 67, 1434, 1243, 67, 472, 67, 659, 529, 891, 892, 596, 332, 1435, 330, 577, 752, 354, 1244, 321, 452, 248, 413, 14, 264, 743, 191, 603, 1291, 115, 73, 1220, 122, 661, 380, 123, 1511, 466, 656, 421, 431, 309, 491, 668, 51, 603, 171, 663, 286, 171, 601, 381, 289, 1011, 1012, 444, 577, 438, 448, 577, 908, 284, 1336, 1523, 192, 866, 659, 529, 476, 107, 668, 171, 182, 330, 577, 479, 232, 1439, 918, 492, 170, 551, 495, 1512, 208, 753, 1540, 535, 124, 922, 1022, 1058, 351, 816, 225, 415, 466, 322, 874, 1032, 1034, 606, 705, 1026, 602, 505, 1235, 507, 1216, 565, 381, 564, 756, 560, 14, 725, 612, 1436, 664, 556, 346, 468, 208, 834, 558, 208, 1479, 653, 208, 682, 436, 182, 427, 1170, 116, 1450, 225, 668, 595, 1341, 655, 117, 1196, 208, 1076, 592, 535, 1292, 1249, 1502, 1317, 595, 1318, 310, 415, 166, 600, 468, 603, 934, 69, 952, 691, 378, 1178, 611, 233, 554, 565, 248, 564, 208, 725, 231, 1489, 725, 468, 1335, 668, 346, 1475, 668, 725, 573, 653, 725, 811, 810, 373, 725, 614, 1124, 468, 1329, 725, 970, 668, 725, 614, 668, 603, 603, 1140, 1207, 609, 701, 611, 84, 339, 1369, 123, 610, 339, 725, 124, 224, 331, 225, 86, 331, 1395, 413, 354, 563, 611, 468, 554, 685, 468, 383, 104, 601, 1419, 610, 1223, 1202, 958, 725, 711, 614, 725, 725, 118, 668, 421, 609, 610, 875, 1345, 1420, 725, 122, 267, 122, 1029, 896, 867, 614, 225, 468, 1081, 612, 122, 609, 612, 603, 603, 725, 1405, 759, 413, 1086, 739, 656, 112, 738, 780, 1407, 166, 221, 610, 610, 332, 208, 331, 332, 151, 66, 1102, 610, 118, 901, 373, 965, 725, 1192, 619, 601, 166, 961, 657, 208, 1184, 171, 224, 603, 725, 656, 725, 603, 619, 1197, 170, 597, 468, 69, 653, 224, 603, 506, 765, 766, 576, 603, 653, 610, 900, 603, 331, 612, 468, 893, 1218, 610, 577, 208, 171, 468, 325, 610, 331, 725, 331, 330, 577, 812, 330, 577, 1018, 1417, 332, 529, 122, 415, 1451, 468, 577, 166, 66, 601, 781, 1038, 208, 576, 208, 69, 595, 782, 1290, 362, 1072, 893, 208, 612, 603, 659, 902, 1119, 421, 346, 610, 576, 413, 603, 346, 468, 529, 612, 566, 468, 346, 566, 1328, 566, 332, 1204, 1185, 1206, 408, 409, 286, 411, 415, 577, 612, 466, 332, 612, 332, 1370, 831, 330, 577, 284, 529, 66, 806, 529, 66, 171, 66, 182, 1210, 1467, 806, 171, 171, 603, 444, 772, 535, 1114, 694, 529, 448, 375, 438, 1238, 873, 545, 506, 1189, 1219, 612, 1013, 1468, 561, 1016, 881, 881, 565, 479, 564, 1372, 1054, 330, 577, 1237, 146, 529, 895, 530, 806, 208, 886, 535, 498, 330, 577, 330, 420, 1239, 612, 694, 603, 421, 694, 499, 102, 917, 919, 1350, 473, 961, 611, 208, 554, 1396, 148, 914, 561, 694, 208, 535, 611, 474, 535, 611, 545, 506, 1418, 376, 968, 577, 969, 561, 611, 729, 554, 1224, 331, 606, 535, 712, 415, 1234, 102, 614, 346, 151, 530, 668, 102, 609, 540, 916, 208, 118, 732, 1371, 578, 943, 944, 945, 921, 541, 267, 887, 535, 614, 615, 807, 956, 830, 730, 609, 931, 109, 851, 807, 612, 102, 606, 611, 635, 606, 639, 640, 641, 642, 643, 635, 611, 1255, 267, 733, 313, 1017, 534, 715, 606, 578, 905, 1014, 578, 1141, 434, 373, 553, 1487, 1015, 911, 399, 69, 111, 1319, 614, 807, 332, 578, 103, 612, 609, 337, 713, 614, 1375, 853, 1342, 1333, 1446, 609, 156, 1057, 555, 684, 611, 1279, 1374, 612, 1470, 1104, 1380, 806, 87, 314, 830, 1516, 1517, 159, 611, 1376, 1175, 1175, 1179, 1469, 668, 534, 112, 1023, 338, 508, 339, 1427, 946, 714, 1429, 553, 1033, 614, 1485, 576, 1104, 1381, 806, 609, 1066, 1537, 731, 1461, 1375, 576, 1508, 611, 576, 340, 88, 617, 416, 609, 1105, 111, 619, 576, 417, 586, 806, 668, 89, 734, 668, 420, 418, 1406, 419, 1376, 421, 435, 1515, 1377, 341, 1531, 1532, 1461, 1289, 668, 591, 1083, 1084, 590, 508, 1108, 609, 90, 694, 171, 700, 1067, 617, 699, 901, 373, 171, 619, 170, 611, 586, 1542, 416, 586, 576, 375, 789, 1109, 417, 513, 617, 161, 162, 576, 1548, 619, 109, 109, 586, 1526, 69, 315, 1094, 1127, 1413, 1125, 436, 1377, 407, 1131, 510, 612, 807, 317, 813, 420, 418, 1453, 419, 316, 421, 835, 836, 437, 838, 694, 840, 512, 694, 843, 844, 845, 846, 847, 848, 694, 91, 576, 694, 561, 120, 118, 694, 807, 850, 166, 92, 694, 513, 576, 694, 538, 407, 317, 463, 1459, 545, 1544, 444, 138, 366, 561, 1054, 1087, 174, 807, 694, 407, 202, 510, 612, 93, 317, 263, 980, 632, 420, 418, 530, 419, 66, 421, 1452, 171, 576, 267, 512, 579, 814, 94, 694, 545, 1193, 694, 694, 361, 202, 200, 69, 69, 981, 579, 538, 694, 606, 464, 1534, 444, 87, 579, 881, 765, 202, 530, 765, 186, 362, 606, 138, 545, 694, 189, 545, 578, 815, 579, 606, 202, 1351, 816, 373, 94, 358, 578, 870, 817, 578, 202, 545, 465, 202, 530, 212, 612, 530, 578, 381, 694, 601, 1175, 88, 871, 333, 612, 361, 202, 612, 466, 1535, 694, 530, 694, 89, 765, 545, 612, 333, 194, 69, 1247, 1222, 553, 1251, 606, 333, 362, 593, 147, 668, 579, 668, 766, 606, 416, 766, 534, 530, 90, 668, 417, 333, 358, 578, 553, 694, 1449, 346, 808, 196, 454, 589, 578, 1494, 197, 971, 972, 976, 346, 455, 983, 985, 987, 612, 995, 998, 1001, 1003, 1006, 1009, 315, 593, 612, 420, 418, 423, 419, 606, 421, 171, 171, 40, 1449, 66, 766, 166, 593, 147, 170, 444, 1495, 606, 267, 1293, 881, 333, 578, 48, 148, 534, 859, 617, 534, 1496, 416, 1042, 619, 91, 578, 586, 417, 1327, 586, 1049, 860, 1051, 612, 92, 534, 586, 1053, 1449, 586, 617, 606, 201, 586, 38, 619, 315, 668, 586, 204, 111, 586, 668, 1148, 360, 861, 214, 40, 989, 93, 578, 534, 365, 21, 446, 1462, 373, 586, 1449, 668, 664, 830, 171, 48, 148, 990, 668, 70, 71, 237, 612, 1193, 416, 1404, 219, 1382, 852, 617, 417, 851, 285, 586, 619, 44, 608, 586, 617, 215, 171, 1462, 373, 202, 238, 38, 586, 446, 138, 444, 446, 862, 668, 826, 830, 830, 830, 830, 830, 842, 830, 69, 991, 586, 21, 446, 722, 286, 723, 46, 138, 664, 830, 830, 830, 830, 1403, 423, 240, 602, 111, 202, 617, 1527, 373, 238, 223, 619, 238, 1385, 586, 992, 220, 1415, 44, 287, 1416, 202, 288, 138, 739, 1441, 586, 238, 830, 224, 830, 121, 111, 114, 586, 859, 1151, 1152, 289, 1154, 1156, 1321, 138, 202, 602, 228, 171, 1161, 616, 860, 1425, 138, 46, 950, 229, 1430, 949, 138, 230, 88, 423, 586, 602, 1322, 290, 739, 739, 739, 739, 739, 1323, 739, 111, 861, 325, 138, 618, 326, 342, 171, 171, 22, 993, 739, 739, 739, 739, 284, 1460, 1430, 45, 1471, 114, 47, 416, 300, 90, 1282, 42, 301, 417, 121, 115, 957, 1324, 303, 776, 247, 248, 249, 166, 161, 162, 171, 103, 1454, 620, 739, 43, 202, 923, 924, 1460, 327, 171, 306, 1265, 862, 1212, 171, 252, 253, 593, 1506, 323, 257, 258, 342, 444, 593, 22, 121, 593, 69, 334, 1474, 593, 1454, 1071, 45, 336, 1070, 47, 171, 593, 171, 345, 42, 171, 171, 1520, 115, 1430, 347, 1525, 91, 267, 444, 444, 1096, 593, 1101, 1095, 103, 1100, 92, 171, 43, 202, 121, 1182, 355, 1252, 1181, 171, 1430, 1454, 1191, 630, 182, 1190, 877, 878, 444, 593, 1261, 353, 171, 335, 830, 93, 830, 1266, 1169, 357, 1171, 444, 593, 446, 830, 446, 420, 418, 358, 419, 446, 421, 830, 446, 1258, 161, 162, 1257, 830, 593, 630, 830, 1521, 267, 593, 1501, 446, 1547, 695, 139, 1470, 361, 1053, 630, 335, 590, 362, 335, 590, 110, 110, 379, 387, 182, 830, 392, 593, 389, 390, 394, 395, 830, 335, 830, 830, 396, 397, 830, 593, 398, 593, 830, 420, 418, 830, 419, 830, 421, 830, 695, 399, 400, 695, 830, 830, 401, 830, 406, 842, 420, 418, 739, 419, 739, 421, 402, 403, 695, 139, 404, 405, 739, 830, 830, 609, 830, 613, 1349, 407, 739, 617, 619, 621, 415, 446, 739, 1357, 1358, 739, 830, 413, 830, 830, 830, 422, 423, 830, 602, 425, 830, 830, 247, 248, 249, 429, 430, 446, 432, 433, 830, 602, 739, 442, 446, 14, 453, 462, 470, 739, 602, 739, 739, 1387, 859, 739, 483, 830, 493, 739, 257, 258, 739, 490, 739, 502, 739, 506, 860, 553, 43, 739, 739, 830, 739, 557, 559, 561, 446, 749, 589, 44, 593, 381, 830, 604, 598, 607, 45, 478, 739, 739, 861, 739, 633, 1414, 830, 602, 830, 1036, 420, 418, 637, 419, 830, 421, 602, 739, 651, 739, 739, 739, 427, 46, 739, 667, 1536, 739, 739, 671, 749, 749, 749, 749, 749, 672, 749, 739, 676, 478, 478, 830, 679, 478, 680, 454, 690, 1135, 749, 749, 749, 749, 692, 693, 739, 702, 862, 703, 478, 727, 602, 420, 418, 182, 419, 416, 421, 726, 728, 735, 739, 417, 752, 656, 602, 740, 746, 744, 1428, 745, 747, 739, 749, 750, 182, 755, 749, 761, 47, 764, 478, 420, 418, 739, 419, 739, 421, 762, 775, 773, 776, 739, 784, 1264, 785, 786, 182, 602, 1432, 788, 823, 695, 182, 752, 752, 752, 752, 752, 824, 752, 48, 416, 826, 828, 49, 837, 839, 417, 739, 139, 832, 752, 752, 752, 752, 182, 335, 833, 416, 841, 849, 1464, 1432, 335, 417, 416, 335, 856, 858, 864, 335, 139, 868, 897, 182, 756, 906, 893, 335, 753, 907, 367, 182, 182, 705, 752, 366, 912, 695, 182, 915, 695, 913, 926, 335, 1464, 929, 935, 695, 940, 139, 695, 942, 947, 264, 695, 1507, 182, 952, 964, 695, 978, 966, 695, 1021, 1035, 1024, 1027, 335, 139, 753, 753, 753, 753, 753, 1019, 753, 1052, 139, 695, 1059, 335, 1060, 1061, 139, 1432, 1062, 1528, 753, 753, 753, 753, 1063, 1064, 182, 590, 1073, 1077, 335, 1085, 1089, 366, 139, 695, 1092, 182, 695, 695, 1432, 1099, 1097, 1106, 1110, 1111, 1112, 1120, 695, 1122, 416, 264, 958, 749, 753, 749, 417, 335, 1133, 478, 1134, 1129, 1132, 749, 1136, 695, 1137, 1145, 1146, 335, 1147, 335, 1149, 1150, 1157, 478, 1158, 749, 478, 478, 749, 478, 1159, 1160, 1162, 1163, 478, 1164, 1165, 478, 1166, 1167, 695, 806, 1168, 1186, 1183, 463, 250, 747, 1200, 416, 478, 749, 695, 1205, 695, 417, 478, 1203, 749, 478, 749, 749, 1209, 485, 749, 1208, 1198, 508, 749, 1221, 1226, 749, 182, 749, 1236, 749, 1217, 1245, 1241, 416, 749, 749, 1246, 749, 752, 417, 752, 695, 747, 1250, 747, 747, 747, 1138, 752, 1256, 464, 1277, 1283, 749, 749, 1284, 749, 1285, 1278, 1287, 747, 747, 747, 747, 1330, 752, 1331, 1332, 1340, 454, 749, 1338, 749, 749, 749, 1344, 1343, 749, 455, 1346, 749, 749, 478, 1347, 465, 182, 1348, 1353, 752, 1354, 749, 1355, 1383, 1356, 747, 752, 366, 752, 752, 1359, 1360, 752, 466, 1361, 478, 752, 1362, 749, 752, 1363, 752, 478, 752, 1364, 1365, 478, 1366, 752, 752, 1367, 752, 237, 478, 749, 984, 753, 988, 753, 996, 999, 1368, 1004, 1007, 1010, 749, 753, 752, 752, 1384, 752, 478, 1386, 103, 1388, 1389, 478, 749, 1390, 749, 1391, 436, 1392, 753, 752, 749, 752, 752, 752, 1393, 1399, 752, 1400, 1401, 752, 752, 1402, 1421, 1422, 1426, 1423, 478, 1424, 1442, 752, 478, 753, 1448, 1472, 240, 1480, 1482, 749, 753, 1484, 753, 753, 237, 1486, 753, 468, 752, 436, 753, 1488, 436, 753, 1490, 753, 1492, 753, 1493, 1499, 1501, 1504, 753, 753, 752, 753, 1505, 436, 1037, 420, 418, 1478, 419, 1519, 421, 752, 1479, 1524, 1530, 1529, 1533, 753, 753, 1470, 753, 1545, 1543, 752, 468, 752, 1546, 468, 1, 746, 561, 752, 188, 668, 753, 366, 753, 753, 753, 26, 28, 753, 468, 339, 753, 753, 569, 250, 263, 1040, 420, 418, 466, 419, 753, 421, 135, 747, 752, 747, 198, 248, 77, 404, 466, 179, 466, 747, 354, 255, 746, 753, 746, 746, 746, 601, 180, 247, 248, 249, 599, 161, 162, 254, 747, 340, 595, 753, 746, 746, 746, 746, 625, 597, 619, 624, 289, 626, 753, 182, 252, 253, 1138, 635, 304, 257, 258, 747, 287, 24, 753, 27, 753, 33, 747, 1173, 747, 747, 753, 108, 747, 182, 746, 393, 747, 386, 825, 747, 1139, 747, 385, 747, 774, 963, 1130, 205, 747, 747, 1128, 747, 1225, 237, 247, 248, 249, 753, 161, 162, 1116, 1126, 182, 1334, 515, 741, 1107, 747, 747, 458, 747, 1075, 1117, 909, 487, 87, 910, 252, 253, 748, 488, 182, 257, 258, 747, 1320, 747, 747, 747, 182, 182, 747, 1477, 1326, 747, 747, 182, 1041, 420, 418, 1483, 419, 1514, 421, 747, 1043, 420, 418, 552, 419, 240, 421, 1211, 721, 182, 468, 1481, 88, 904, 1498, 748, 747, 748, 748, 748, 1447, 182, 1541, 182, 89, 1440, 1240, 1509, 588, 436, 771, 436, 747, 748, 748, 748, 748, 1118, 105, 436, 478, 951, 496, 747, 1337, 725, 182, 469, 468, 90, 416, 468, 436, 941, 468, 747, 417, 747, 763, 1233, 932, 751, 110, 747, 443, 662, 666, 748, 468, 468, 468, 182, 869, 879, 654, 468, 855, 1373, 468, 1518, 653, 1378, 1281, 1044, 420, 418, 1491, 419, 238, 421, 747, 468, 829, 237, 1549, 416, 898, 468, 746, 1153, 746, 417, 751, 675, 751, 751, 751, 1031, 746, 644, 247, 248, 249, 587, 161, 162, 0, 0, 91, 1352, 751, 751, 751, 751, 0, 746, 0, 0, 92, 238, 436, 0, 238, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 719, 0, 0, 238, 746, 0, 240, 0, 436, 93, 751, 746, 0, 746, 746, 436, 0, 746, 0, 0, 0, 746, 0, 0, 746, 468, 746, 94, 746, 0, 366, 0, 0, 746, 746, 0, 746, 0, 0, 0, 0, 719, 0, 0, 719, 0, 0, 468, 264, 436, 0, 0, 746, 746, 468, 746, 0, 0, 0, 719, 0, 0, 0, 0, 0, 468, 0, 0, 0, 746, 0, 746, 746, 746, 0, 0, 746, 698, 0, 746, 746, 0, 0, 468, 0, 0, 0, 416, 468, 746, 0, 0, 748, 417, 748, 416, 0, 0, 0, 0, 0, 417, 748, 1045, 420, 418, 746, 419, 0, 421, 0, 247, 248, 249, 166, 161, 162, 468, 698, 748, 0, 698, 746, 1046, 420, 418, 0, 419, 0, 421, 0, 0, 53, 746, 252, 253, 698, 0, 0, 257, 258, 696, 748, 54, 468, 746, 468, 746, 0, 748, 55, 748, 748, 746, 468, 748, 0, 0, 0, 748, 0, 697, 748, 56, 748, 0, 748, 468, 0, 0, 0, 748, 748, 0, 748, 0, 0, 0, 416, 751, 746, 751, 696, 0, 417, 696, 0, 0, 0, 751, 748, 748, 0, 748, 0, 0, 0, 0, 0, 0, 696, 0, 697, 0, 0, 697, 751, 748, 0, 748, 748, 748, 0, 0, 748, 0, 0, 748, 748, 0, 697, 0, 238, 0, 238, 727, 0, 748, 0, 751, 0, 0, 238, 0, 0, 0, 751, 0, 751, 751, 57, 0, 751, 0, 748, 468, 751, 0, 691, 751, 0, 751, 0, 751, 0, 0, 0, 58, 751, 751, 748, 751, 719, 0, 0, 0, 727, 468, 0, 727, 0, 748, 59, 0, 468, 0, 60, 751, 751, 61, 751, 237, 0, 748, 727, 748, 0, 62, 0, 691, 0, 748, 691, 0, 751, 0, 751, 751, 751, 0, 0, 751, 0, 0, 751, 751, 63, 691, 468, 0, 0, 0, 692, 0, 751, 0, 0, 0, 748, 719, 0, 0, 719, 238, 0, 0, 0, 0, 0, 719, 0, 751, 719, 0, 0, 693, 719, 0, 240, 698, 0, 719, 416, 0, 719, 238, 0, 751, 417, 0, 0, 0, 238, 692, 0, 0, 692, 0, 751, 0, 719, 0, 416, 0, 0, 0, 0, 0, 417, 0, 751, 692, 751, 0, 0, 0, 693, 0, 751, 693, 0, 0, 0, 0, 719, 0, 238, 719, 719, 0, 213, 0, 0, 0, 693, 0, 698, 719, 726, 698, 0, 0, 0, 696, 0, 751, 698, 0, 0, 698, 0, 0, 0, 698, 719, 0, 0, 0, 698, 0, 0, 698, 0, 697, 1047, 420, 418, 0, 419, 0, 421, 213, 0, 0, 213, 0, 0, 698, 0, 726, 0, 719, 726, 247, 248, 249, 0, 161, 162, 213, 0, 0, 0, 719, 0, 719, 0, 726, 0, 0, 696, 698, 0, 696, 698, 698, 252, 253, 0, 0, 696, 257, 258, 696, 698, 720, 468, 696, 0, 0, 697, 0, 696, 697, 0, 696, 0, 727, 719, 0, 697, 698, 0, 697, 0, 0, 0, 697, 0, 0, 0, 696, 697, 0, 0, 697, 0, 0, 366, 0, 691, 0, 0, 0, 0, 0, 720, 468, 698, 720, 468, 697, 0, 0, 0, 696, 264, 0, 696, 696, 698, 0, 698, 0, 720, 468, 0, 0, 696, 0, 0, 0, 0, 0, 727, 697, 0, 727, 697, 697, 0, 0, 0, 0, 727, 696, 0, 727, 697, 728, 234, 727, 0, 0, 0, 698, 727, 691, 0, 727, 691, 0, 0, 0, 692, 697, 0, 691, 163, 0, 691, 0, 696, 0, 691, 727, 0, 0, 0, 691, 0, 0, 691, 0, 696, 0, 696, 693, 0, 0, 728, 234, 697, 728, 234, 0, 0, 0, 691, 727, 0, 0, 727, 727, 697, 0, 697, 0, 728, 234, 0, 0, 727, 0, 0, 0, 0, 0, 0, 696, 0, 692, 691, 0, 692, 691, 691, 163, 0, 727, 0, 692, 0, 729, 692, 691, 0, 0, 692, 697, 0, 0, 0, 692, 693, 0, 692, 693, 0, 0, 726, 0, 691, 416, 693, 0, 727, 693, 225, 417, 213, 693, 692, 0, 0, 0, 693, 0, 727, 693, 727, 0, 0, 0, 729, 0, 0, 729, 0, 691, 0, 0, 0, 0, 0, 693, 692, 0, 0, 692, 692, 691, 729, 691, 0, 0, 0, 717, 0, 692, 0, 0, 0, 727, 0, 0, 0, 726, 0, 693, 726, 0, 693, 693, 0, 0, 692, 726, 0, 0, 726, 0, 693, 0, 726, 0, 691, 720, 0, 726, 0, 0, 726, 0, 0, 0, 0, 0, 717, 693, 0, 717, 0, 692, 468, 0, 468, 0, 726, 237, 0, 468, 0, 0, 468, 692, 717, 692, 0, 225, 0, 0, 0, 0, 0, 0, 693, 468, 0, 0, 0, 0, 726, 721, 235, 726, 726, 0, 693, 0, 693, 225, 0, 0, 720, 726, 0, 720, 225, 0, 692, 0, 0, 0, 720, 0, 730, 720, 214, 0, 0, 720, 726, 0, 0, 0, 720, 718, 0, 720, 0, 728, 0, 693, 721, 235, 0, 721, 235, 0, 0, 0, 225, 0, 0, 720, 163, 0, 234, 726, 234, 0, 721, 235, 0, 0, 0, 730, 234, 214, 730, 726, 214, 726, 0, 468, 0, 163, 718, 720, 0, 718, 720, 720, 0, 730, 0, 214, 0, 1048, 420, 418, 720, 419, 0, 421, 718, 468, 728, 163, 0, 728, 0, 0, 468, 163, 726, 0, 728, 720, 0, 728, 0, 722, 0, 728, 0, 0, 0, 0, 728, 0, 0, 728, 0, 729, 0, 1139, 163, 0, 0, 0, 0, 0, 0, 0, 720, 0, 468, 728, 0, 247, 248, 249, 0, 161, 162, 163, 720, 0, 720, 0, 0, 0, 722, 0, 163, 722, 0, 234, 0, 0, 163, 728, 252, 253, 728, 728, 0, 257, 258, 0, 722, 0, 0, 0, 728, 677, 0, 0, 163, 234, 729, 720, 0, 729, 0, 0, 234, 717, 0, 0, 729, 728, 0, 729, 0, 0, 0, 729, 0, 0, 0, 0, 729, 0, 0, 729, 1187, 420, 418, 584, 419, 0, 421, 0, 0, 163, 677, 0, 728, 677, 234, 729, 622, 623, 624, 625, 626, 627, 628, 629, 728, 0, 728, 0, 677, 0, 1188, 420, 418, 0, 419, 0, 421, 0, 717, 729, 0, 717, 729, 729, 584, 581, 0, 584, 717, 0, 0, 717, 729, 0, 0, 717, 0, 721, 0, 728, 717, 0, 584, 717, 0, 0, 0, 0, 0, 729, 0, 0, 0, 0, 235, 0, 235, 0, 0, 717, 730, 0, 0, 0, 235, 0, 581, 0, 0, 581, 0, 718, 0, 0, 0, 0, 729, 0, 225, 0, 214, 0, 0, 717, 581, 0, 717, 717, 729, 0, 729, 0, 0, 0, 721, 0, 717, 721, 0, 0, 416, 0, 0, 0, 721, 0, 417, 721, 0, 0, 0, 721, 0, 717, 0, 0, 721, 730, 0, 721, 730, 0, 0, 729, 0, 0, 0, 730, 718, 0, 730, 718, 0, 0, 730, 721, 0, 0, 718, 730, 717, 718, 730, 0, 0, 718, 0, 722, 0, 0, 718, 0, 717, 718, 717, 235, 0, 0, 730, 721, 0, 0, 721, 721, 0, 0, 0, 0, 0, 718, 0, 0, 721, 0, 0, 0, 0, 235, 0, 225, 0, 0, 730, 0, 235, 730, 730, 717, 0, 721, 0, 0, 0, 718, 0, 730, 718, 718, 0, 0, 830, 225, 0, 0, 722, 0, 718, 722, 225, 0, 0, 0, 730, 0, 722, 0, 721, 722, 235, 416, 74, 722, 0, 718, 0, 417, 722, 75, 721, 722, 721, 76, 77, 0, 0, 0, 167, 0, 0, 730, 0, 830, 225, 0, 830, 722, 842, 0, 479, 416, 718, 730, 78, 730, 0, 417, 0, 0, 0, 830, 0, 830, 718, 721, 718, 0, 0, 0, 677, 722, 0, 677, 722, 722, 0, 0, 0, 167, 677, 0, 167, 677, 722, 0, 0, 677, 730, 0, 479, 479, 677, 0, 479, 677, 0, 167, 0, 718, 0, 722, 0, 0, 584, 0, 0, 584, 0, 479, 0, 677, 0, 0, 584, 0, 0, 584, 0, 79, 0, 584, 0, 0, 0, 0, 584, 0, 722, 584, 0, 0, 0, 0, 0, 677, 80, 473, 677, 677, 722, 479, 722, 0, 0, 584, 581, 0, 677, 581, 0, 81, 0, 0, 496, 82, 581, 0, 0, 581, 0, 0, 0, 581, 0, 677, 83, 0, 581, 584, 0, 581, 0, 584, 0, 722, 0, 0, 473, 0, 0, 473, 584, 0, 0, 84, 0, 581, 0, 0, 0, 0, 677, 0, 0, 496, 473, 0, 496, 584, 0, 0, 0, 0, 677, 0, 677, 0, 0, 0, 0, 581, 0, 496, 0, 581, 0, 0, 0, 486, 0, 0, 0, 0, 581, 0, 584, 0, 473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 584, 677, 0, 581, 0, 0, 0, 496, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 486, 0, 0, 486, 0, 0, 830, 830, 581, 0, 0, 0, 0, 584, 0, 830, 0, 0, 486, 830, 581, 173, 830, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 830, 0, 0, 830, 0, 0, 0, 830, 0, 830, 479, 0, 486, 0, 0, 0, 0, 581, 0, 167, 0, 0, 0, 830, 0, 0, 479, 470, 0, 479, 479, 0, 479, 0, 0, 0, 0, 479, 0, 0, 479, 167, 173, 0, 830, 830, 0, 167, 0, 0, 830, 830, 830, 479, 830, 830, 830, 0, 830, 479, 0, 0, 479, 0, 0, 0, 466, 0, 470, 0, 167, 470, 0, 174, 0, 0, 0, 0, 830, 0, 830, 0, 0, 0, 0, 0, 470, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 473, 167, 0, 0, 0, 0, 0, 167, 0, 0, 466, 0, 0, 466, 830, 0, 473, 496, 830, 473, 473, 470, 473, 0, 0, 167, 0, 473, 466, 0, 473, 830, 0, 496, 479, 174, 463, 496, 0, 496, 0, 0, 0, 473, 496, 0, 0, 496, 0, 473, 0, 0, 473, 830, 0, 0, 479, 0, 0, 0, 496, 0, 167, 479, 0, 0, 496, 479, 830, 496, 0, 0, 0, 0, 479, 0, 0, 463, 0, 0, 463, 0, 486, 0, 0, 0, 0, 0, 830, 830, 0, 0, 479, 0, 0, 463, 0, 479, 486, 0, 0, 0, 486, 0, 486, 0, 0, 0, 0, 486, 0, 0, 486, 0, 0, 0, 0, 0, 0, 0, 0, 473, 479, 0, 0, 486, 479, 0, 0, 0, 0, 486, 0, 0, 486, 0, 0, 0, 496, 0, 0, 0, 0, 473, 173, 0, 0, 0, 0, 0, 473, 0, 0, 0, 473, 0, 0, 0, 0, 0, 496, 473, 0, 0, 0, 173, 0, 496, 0, 0, 0, 496, 573, 0, 0, 259, 0, 260, 496, 473, 0, 0, 0, 0, 473, 0, 0, 173, 470, 0, 263, 0, 0, 173, 0, 264, 496, 0, 0, 0, 0, 496, 0, 486, 470, 0, 0, 0, 470, 473, 470, 0, 0, 473, 0, 470, 173, 1209, 470, 0, 0, 0, 0, 0, 0, 486, 496, 466, 0, 0, 496, 470, 486, 0, 174, 173, 486, 470, 0, 0, 470, 0, 0, 486, 173, 0, 466, 466, 6, 466, 173, 0, 0, 0, 466, 174, 0, 466, 0, 1294, 1295, 486, 1296, 0, 0, 1297, 486, 0, 173, 573, 466, 0, 259, 0, 260, 0, 466, 174, 0, 1298, 0, 0, 0, 174, 0, 1299, 0, 263, 0, 0, 0, 486, 264, 0, 463, 486, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 0, 0, 470, 0, 0, 0, 463, 463, 0, 463, 0, 0, 0, 0, 463, 0, 573, 463, 174, 259, 0, 260, 0, 0, 470, 0, 0, 174, 0, 0, 463, 470, 0, 174, 263, 470, 463, 0, 1300, 264, 0, 466, 470, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 14, 0, 0, 470, 0, 0, 466, 0, 470, 0, 0, 0, 0, 466, 0, 1301, 0, 0, 0, 0, 0, 0, 466, 0, 466, 16, 0, 0, 0, 0, 0, 174, 0, 470, 0, 234, 1302, 470, 0, 0, 0, 0, 466, 166, 235, 262, 0, 466, 259, 0, 260, 463, 0, 0, 0, 0, 0, 0, 236, 0, 0, 569, 0, 263, 237, 238, 0, 0, 264, 0, 0, 0, 0, 463, 0, 0, 466, 0, 0, 0, 463, 0, 0, 570, 0, 0, 0, 0, 0, 1253, 1254, 463, 0, 0, 0, 239, 0, 0, 0, 1259, 1260, 0, 1262, 1263, 0, 0, 0, 0, 0, 463, 1267, 1268, 1269, 1270, 463, 1271, 1272, 1273, 1274, 1275, 1276, 0, 0, 241, 242, 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 243, 0, 0, 0, 244, 0, 235, 0, 463, 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, 127, 236, 0, 0, 0, 0, 0, 237, 238, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 570, 0, 0, 0, 0, 0, 234, 0, 262, 0, 572, 259, 239, 260, 0, 235, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 263, 0, 0, 236, 0, 264, 246, 0, 0, 237, 238, 0, 0, 0, 241, 242, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 243, 0, 570, 0, 244, 0, 0, 0, 251, 0, 0, 0, 571, 0, 239, 0, 0, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 973, 0, 0, 974, 0, 0, 0, 234, 262, 241, 242, 259, 0, 260, 0, 0, 235, 0, 410, 0, 0, 243, 572, 0, 0, 244, 263, 0, 0, 0, 236, 264, 0, 571, 245, 0, 237, 238, 0, 0, 0, 0, 0, 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 239, 0, 0, 0, 0, 251, 0, 0, 0, 572, 0, 0, 0, 0, 252, 253, 254, 255, 256, 257, 258, 245, 0, 0, 0, 0, 0, 0, 241, 242, 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, 243, 0, 0, 0, 244, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 252, 253, 254, 255, 256, 257, 258, 0, 982, 0, 0, 974, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 235, 262, 0, 0, 259, 0, 260, 975, 0, 0, 0, 0, 0, 0, 236, 245, 0, 0, 0, 263, 237, 238, 0, 0, 264, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 239, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 252, 253, 254, 255, 256, 257, 258, 986, 0, 0, 974, 0, 0, 0, 234, 0, 0, 241, 242, 0, 0, 0, 262, 235, 0, 259, 0, 260, 0, 243, 0, 0, 0, 244, 0, 0, 0, 236, 494, 0, 263, 0, 0, 237, 238, 264, 0, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 975, 0, 262, 0, 0, 259, 0, 260, 245, 0, 0, 0, 0, 0, 241, 242, 0, 0, 246, 0, 263, 0, 0, 0, 0, 264, 243, 0, 0, 0, 244, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 994, 0, 0, 974, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 975, 262, 235, 0, 259, 0, 260, 0, 245, 0, 0, 0, 0, 0, 0, 0, 236, 516, 246, 263, 0, 517, 237, 238, 264, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 518, 0, 0, 519, 0, 0, 251, 0, 0, 0, 0, 0, 0, 239, 0, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 0, 997, 0, 0, 974, 0, 0, 0, 234, 0, 0, 0, 0, 241, 242, 0, 520, 235, 0, 0, 0, 0, 521, 522, 523, 243, 524, 525, 526, 244, 527, 236, 0, 0, 0, 0, 0, 237, 238, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 528, 0, 529, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 239, 1002, 0, 0, 974, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 530, 975, 235, 262, 0, 0, 259, 0, 260, 245, 0, 0, 0, 241, 242, 0, 236, 531, 0, 246, 0, 263, 237, 238, 0, 243, 264, 0, 0, 244, 0, 0, 0, 247, 248, 249, 250, 161, 162, 532, 0, 0, 0, 0, 0, 0, 0, 251, 0, 262, 0, 261, 259, 239, 260, 0, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 263, 0, 0, 1005, 0, 264, 974, 533, 534, 0, 234, 0, 0, 0, 241, 242, 0, 975, 824, 235, 824, 824, 0, 824, 0, 245, 243, 0, 0, 0, 244, 0, 0, 236, 516, 246, 824, 0, 517, 237, 238, 824, 0, 0, 0, 0, 705, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 518, 0, 0, 519, 0, 0, 251, 0, 0, 0, 0, 0, 0, 239, 0, 252, 253, 254, 255, 256, 257, 258, 262, 0, 0, 259, 0, 260, 975, 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 263, 241, 242, 0, 520, 264, 246, 0, 0, 0, 521, 522, 523, 243, 524, 525, 526, 244, 527, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 528, 0, 529, 0, 0, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1008, 0, 0, 974, 0, 262, 0, 234, 259, 0, 260, 0, 530, 975, 0, 0, 235, 0, 0, 0, 0, 245, 0, 263, 0, 0, 0, 0, 264, 531, 236, 246, 0, 0, 0, 0, 237, 238, 0, 0, 0, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 532, 0, 234, 0, 0, 0, 0, 0, 251, 0, 0, 235, 0, 0, 0, 224, 239, 252, 253, 254, 255, 256, 257, 258, 0, 236, 0, 0, 0, 0, 0, 237, 238, 0, 0, 533, 534, 0, 824, 0, 0, 0, 0, 0, 241, 242, 0, 824, 0, 0, 0, 0, 262, 634, 0, 259, 243, 260, 0, 0, 244, 824, 239, 0, 0, 0, 0, 824, 824, 0, 263, 0, 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 241, 242, 0, 0, 0, 0, 0, 0, 824, 234, 0, 0, 243, 0, 0, 0, 244, 262, 235, 0, 259, 0, 260, 0, 0, 975, 0, 0, 0, 0, 0, 0, 236, 245, 824, 263, 824, 824, 237, 238, 264, 0, 0, 246, 0, 0, 0, 0, 824, 0, 0, 0, 824, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 239, 0, 251, 0, 0, 0, 0, 0, 0, 0, 245, 252, 253, 254, 255, 256, 257, 258, 0, 0, 246, 0, 234, 0, 0, 0, 0, 0, 241, 242, 0, 235, 0, 0, 247, 248, 249, 250, 161, 162, 243, 0, 0, 0, 244, 236, 824, 0, 251, 0, 0, 237, 238, 0, 0, 0, 824, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 824, 824, 824, 824, 824, 824, 0, 0, 0, 0, 0, 0, 239, 0, 824, 0, 0, 0, 0, 0, 0, 410, 0, 824, 824, 824, 824, 824, 824, 824, 0, 0, 0, 0, 0, 0, 0, 245, 240, 0, 241, 242, 0, 0, 0, 0, 0, 246, 0, 0, 234, 0, 243, 0, 0, 0, 244, 0, 0, 235, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 236, 0, 251, 0, 0, 262, 237, 238, 259, 0, 260, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 263, 0, 0, 0, 0, 264, 0, 0, 0, 234, 0, 0, 0, 0, 239, 0, 0, 262, 235, 0, 259, 0, 260, 245, 0, 0, 0, 0, 0, 0, 0, 0, 236, 246, 0, 263, 0, 0, 237, 238, 264, 0, 241, 242, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 243, 0, 0, 0, 244, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 239, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 241, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 2, 0, 0, 244, 0, 0, 0, 0, 3, 0, 0, 245, 0, 0, 0, 4, 0, 5, 0, 6, 0, 246, 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 9, 0, 0, 0, 251, 824, 0, 0, 824, 0, 824, 10, 0, 252, 253, 254, 255, 256, 257, 258, 0, 245, 0, 824, 0, 0, 0, 0, 824, 0, 0, 246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 234, 0, 206, 0, 0, 251, 206, 0, 0, 235, 0, 0, 0, 0, 252, 253, 254, 255, 256, 257, 258, 206, 0, 236, 11, 206, 0, 0, 206, 237, 238, 12, 0, 0, 13, 234, 14, 15, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0, 239, 16, 0, 0, 237, 238, 632, 420, 418, 206, 419, 0, 421, 0, 0, 206, 206, 206, 0, 206, 206, 206, 0, 206, 0, 804, 803, 805, 241, 242, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 243, 0, 0, 206, 244, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 243, 206, 0, 0, 244, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 245, 0, 0, 0, 0, 0, 0, 0, 206, 0, 246, 824, 420, 418, 0, 419, 0, 421, 0, 0, 824, 1155, 0, 0, 247, 248, 249, 250, 161, 162, 804, 803, 805, 0, 824, 245, 0, 0, 251, 0, 824, 824, 0, 206, 206, 246, 0, 252, 253, 254, 255, 256, 257, 258, 0, 0, 0, 0, 0, 247, 248, 249, 250, 161, 162, 0, 0, 0, 0, 0, 0, 824, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 252, 253, 254, 255, 256, 257, 258, 0, 777, 0, 0, 0, 517, 0, 0, 0, 0, 824, 824, 0, 0, 0, 0, 0, 0, 0, 0, 778, 0, 824, 0, 518, 0, 824, 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 791, 0, 0, 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, 0, 417, 0, 0, 792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 0, 521, 522, 523, 0, 524, 525, 526, 0, 527, 0, 0, 0, 0, 0, 0, 824, 0, 0, 0, 0, 793, 0, 0, 0, 0, 824, 0, 0, 528, 794, 529, 0, 0, 0, 0, 0, 0, 795, 0, 824, 824, 824, 824, 824, 824, 0, 0, 0, 0, 0, 0, 0, 0, 824, 0, 0, 796, 0, 797, 0, 0, 530, 824, 824, 824, 824, 824, 824, 824, 0, 0, 0, 798, 0, 799, 800, 801, 0, 531, 791, 0, 0, 0, 0, 0, 0, 0, 416, 516, 0, 0, 0, 517, 417, 0, 0, 792, 0, 0, 0, 532, 0, 0, 0, 206, 0, 0, 0, 206, 0, 0, 518, 0, 0, 519, 0, 0, 0, 0, 0, 0, 0, 0, 206, 0, 802, 0, 206, 0, 0, 206, 0, 793, 0, 0, 533, 534, 0, 0, 0, 0, 794, 0, 0, 0, 0, 0, 0, 0, 795, 120, 0, 0, 0, 120, 520, 0, 0, 0, 0, 0, 521, 522, 523, 0, 524, 525, 526, 796, 527, 797, 206, 0, 120, 0, 0, 120, 206, 206, 206, 0, 206, 206, 206, 798, 206, 799, 800, 801, 528, 0, 529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1209, 0, 0, 206, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 530, 120, 120, 120, 0, 120, 120, 120, 0, 120, 0, 6, 0, 0, 0, 802, 206, 531, 1394, 0, 0, 281, 1294, 1295, 0, 1296, 0, 0, 1297, 120, 0, 120, 0, 206, 0, 0, 0, 0, 0, 532, 0, 0, 1298, 0, 0, 0, 0, 0, 1299, 0, 0, 0, 281, 0, 224, 206, 0, 0, 0, 281, 0, 0, 120, 281, 281, 0, 281, 0, 0, 281, 0, 0, 0, 0, 533, 534, 0, 0, 0, 120, 0, 0, 0, 281, 0, 0, 0, 0, 0, 281, 206, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 1300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 120, 120, 0, 0, 0, 0, 1301, 0, 0, 0, 0, 0, 0, 281, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 1395, 0, 1302, 0, 0, 0, 0, 281, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, 281, 0, 281, 0, 0, 0, 0, 0, 0, 281, }; static short yycheck[] = { 54, 16, 46, 4, 55, 4, 47, 93, 0, 54, 213, 213, 213, 589, 54, 424, 57, 48, 571, 53, 573, 449, 338, 397, 75, 60, 503, 477, 59, 58, 480, 342, 346, 83, 78, 410, 486, 446, 79, 430, 124, 317, 489, 346, 486, 86, 676, 82, 683, 909, 850, 80, 221, 0, 102, 0, 104, 40, 73, 45, 920, 40, 231, 0, 0, 40, 81, 121, 0, 40, 361, 604, 103, 45, 300, 310, 936, 40, 645, 742, 565, 40, 0, 0, 0, 42, 44, 0, 41, 536, 41, 44, 0, 45, 41, 58, 44, 44, 42, 177, 40, 187, 44, 44, 41, 115, 44, 44, 392, 0, 41, 1189, 59, 147, 59, 680, 44, 693, 0, 44, 946, 1063, 59, 59, 44, 0, 91, 59, 930, 44, 0, 44, 0, 41, 0, 264, 229, 44, 41, 173, 226, 59, 59, 59, 45, 456, 59, 463, 464, 465, 466, 59, 263, 0, 58, 274, 260, 1026, 0, 41, 44, 215, 44, 0, 367, 367, 367, 693, 59, 1019, 215, 1021, 486, 0, 284, 63, 1082, 59, 329, 12, 0, 658, 288, 486, 59, 302, 0, 321, 219, 59, 1426, 59, 258, 59, 268, 378, 40, 44, 229, 347, 511, 45, 313, 260, 45, 313, 45, 0, 0, 686, 687, 380, 59, 324, 0, 0, 277, 59, 1122, 257, 304, 264, 59, 418, 63, 516, 265, 41, 1204, 326, 321, 1091, 59, 406, 444, 388, 419, 0, 459, 59, 284, 307, 288, 418, 456, 59, 300, 378, 59, 303, 445, 461, 425, 806, 807, 300, 41, 288, 303, 44, 707, 59, 1238, 1499, 303, 486, 59, 59, 316, 12, 445, 325, 0, 59, 59, 323, 109, 309, 728, 327, 325, 429, 330, 466, 0, 346, 1522, 0, 441, 736, 823, 858, 366, 444, 278, 0, 59, 335, 672, 832, 833, 394, 285, 437, 388, 339, 1108, 341, 1214, 0, 461, 0, 277, 357, 418, 262, 41, 428, 449, 353, 0, 274, 258, 607, 355, 41, 443, 264, 44, 269, 440, 59, 461, 1183, 431, 1413, 320, 0, 379, 1243, 297, 438, 1284, 59, 897, 376, 59, 1207, 467, 264, 1210, 392, 1212, 419, 59, 461, 387, 310, 389, 750, 361, 418, 470, 394, 1027, 0, 109, 0, 59, 412, 59, 307, 319, 321, 1452, 322, 258, 1237, 41, 59, 305, 44, 329, 321, 321, 332, 589, 589, 589, 336, 400, 956, 274, 1219, 341, 41, 59, 344, 0, 319, 332, 332, 978, 41, 0, 483, 41, 310, 278, 1278, 280, 319, 278, 360, 280, 461, 329, 401, 403, 332, 452, 258, 264, 341, 59, 307, 59, 461, 310, 598, 273, 344, 41, 341, 1097, 1070, 395, 384, 486, 41, 387, 388, 461, 384, 264, 41, 397, 673, 1250, 58, 397, 278, 113, 280, 828, 690, 933, 59, 442, 412, 907, 329, 59, 59, 332, 397, 397, 414, 1328, 448, 307, 918, 506, 459, 349, 504, 961, 1337, 461, 437, 388, 397, 329, 419, 397, 332, 461, 459, 935, 397, 461, 693, 693, 784, 441, 1062, 441, 344, 461, 775, 486, 437, 1035, 557, 461, 319, 453, 459, 455, 441, 455, 1064, 557, 455, 467, 516, 453, 461, 332, 410, 554, 555, 0, 455, 461, 441, 1102, 341, 441, 397, 412, 459, 1085, 441, 319, 471, 590, 419, 455, 455, 453, 488, 455, 329, 329, 590, 332, 332, 455, 1349, 397, 343, 379, 258, 1414, 437, 341, 461, 459, 344, 461, 837, 278, 41, 280, 566, 607, 566, 1203, 453, 886, 459, 288, 441, 388, 368, 1102, 952, 398, 259, 488, 59, 419, 397, 264, 467, 378, 455, 432, 471, 270, 432, 41, 432, 441, 1072, 1038, 1074, 259, 260, 411, 262, 307, 388, 329, 368, 453, 332, 455, 1280, 604, 397, 397, 411, 406, 459, 262, 409, 459, 673, 459, 349, 1078, 41, 262, 679, 680, 441, 673, 559, 343, 947, 0, 425, 679, 680, 667, 1114, 669, 0, 0, 1050, 1089, 42, 813, 41, 0, 816, 682, 683, 341, 699, 341, 1283, 856, 441, 441, 1113, 461, 451, 689, 0, 262, 379, 357, 378, 259, 453, 453, 455, 42, 1118, 397, 41, 488, 47, 44, 270, 265, 727, 728, 1257, 288, 959, 319, 401, 319, 1310, 461, 714, 44, 59, 408, 406, 329, 301, 409, 332, 59, 59, 1370, 435, 786, 488, 788, 59, 341, 302, 341, 1100, 257, 0, 425, 320, 419, 1106, 303, 319, 398, 461, 59, 384, 273, 319, 1038, 726, 442, 461, 302, 1282, 0, 760, 761, 762, 735, 1038, 397, 430, 451, 341, 401, 387, 773, 398, 339, 341, 747, 287, 44, 387, 0, 338, 41, 388, 415, 44, 417, 418, 419, 420, 421, 422, 397, 1138, 425, 339, 258, 817, 0, 1216, 59, 41, 702, 814, 44, 978, 284, 978, 0, 1450, 815, 711, 437, 784, 260, 1213, 388, 387, 335, 59, 341, 41, 388, 357, 401, 397, 344, 93, 1245, 1227, 1408, 397, 461, 857, 349, 1116, 441, 1181, 1285, 59, 44, 44, 1289, 262, 260, 307, 471, 1487, 1489, 410, 455, 369, 1025, 1026, 1027, 59, 0, 59, 304, 823, 394, 0, 396, 1386, 764, 442, 1389, 59, 832, 441, 1448, 319, 44, 1293, 262, 441, 406, 1517, 443, 1425, 344, 329, 1475, 488, 332, 419, 302, 0, 280, 455, 93, 260, 0, 341, 286, 0, 262, 41, 314, 443, 44, 42, 43, 1329, 45, 369, 47, 385, 1486, 427, 444, 1504, 1505, 1459, 1200, 59, 41, 912, 913, 44, 59, 93, 488, 339, 262, 949, 41, 457, 41, 44, 1102, 1102, 956, 41, 949, 304, 41, 1530, 280, 44, 388, 956, 573, 942, 286, 0, 59, 462, 463, 397, 1543, 59, 462, 463, 59, 1501, 927, 419, 927, 958, 1339, 956, 440, 427, 0, 964, 0, 0, 387, 0, 329, 42, 43, 1420, 45, 437, 47, 608, 609, 457, 611, 319, 613, 0, 322, 616, 617, 618, 619, 620, 621, 329, 408, 441, 332, 319, 16, 461, 336, 387, 631, 461, 418, 341, 59, 453, 344, 406, 44, 471, 279, 40, 343, 1536, 44, 0, 45, 341, 1190, 919, 461, 387, 360, 59, 0, 59, 59, 443, 59, 58, 353, 41, 42, 43, 343, 45, 459, 47, 1417, 1063, 488, 672, 59, 322, 403, 461, 384, 378, 1063, 387, 388, 0, 0, 73, 1025, 1026, 379, 336, 457, 397, 319, 330, 301, 93, 260, 344, 1070, 41, 44, 378, 44, 461, 0, 332, 59, 406, 414, 63, 409, 319, 439, 360, 341, 59, 1257, 444, 1257, 461, 0, 329, 404, 450, 332, 41, 425, 364, 44, 406, 84, 319, 409, 341, 461, 441, 344, 1278, 302, 421, 322, 329, 59, 59, 332, 382, 353, 453, 425, 455, 314, 93, 451, 341, 336, 459, 1095, 1129, 1095, 319, 1132, 388, 344, 59, 0, 0, 278, 414, 280, 41, 397, 280, 44, 343, 451, 339, 288, 286, 360, 59, 388, 341, 488, 1410, 259, 41, 323, 349, 44, 397, 338, 461, 791, 792, 793, 270, 358, 796, 797, 798, 388, 800, 801, 802, 803, 804, 805, 0, 44, 397, 42, 43, 321, 45, 441, 47, 1208, 1209, 0, 1446, 459, 93, 461, 59, 59, 1208, 1209, 375, 455, 828, 1208, 1203, 414, 441, 0, 0, 406, 322, 319, 409, 388, 280, 841, 319, 408, 453, 319, 286, 1217, 322, 849, 336, 851, 441, 418, 425, 329, 856, 1485, 332, 341, 488, 461, 336, 0, 341, 59, 379, 341, 323, 260, 344, 384, 312, 196, 360, 402, 59, 272, 443, 488, 451, 204, 0, 0, 1425, 1425, 360, 1515, 401, 0, 0, 1284, 59, 59, 289, 408, 317, 318, 296, 488, 1284, 280, 1327, 384, 1294, 41, 388, 286, 44, 343, 384, 388, 0, 304, 388, 397, 40, 1310, 1459, 1459, 265, 0, 59, 397, 41, 279, 1310, 44, 414, 442, 40, 41, 42, 43, 44, 45, 46, 47, 1278, 334, 414, 59, 59, 466, 378, 468, 0, 301, 59, 59, 60, 61, 62, 1323, 0, 353, 0, 260, 303, 441, 1501, 1501, 41, 44, 441, 44, 1297, 441, 363, 384, 1343, 59, 406, 1346, 319, 409, 330, 0, 1403, 453, 59, 91, 461, 93, 1338, 260, 0, 461, 322, 989, 990, 425, 992, 993, 379, 349, 341, 41, 386, 1392, 1000, 304, 336, 1383, 358, 59, 41, 384, 1392, 44, 364, 384, 302, 59, 488, 59, 401, 451, 41, 42, 43, 44, 45, 408, 47, 260, 360, 258, 382, 304, 261, 0, 1425, 1426, 0, 430, 59, 60, 61, 62, 338, 1425, 1426, 0, 1434, 59, 0, 280, 419, 339, 384, 0, 461, 286, 1408, 0, 41, 442, 274, 44, 458, 459, 460, 461, 462, 463, 1459, 0, 1422, 304, 93, 0, 0, 392, 393, 1459, 307, 1470, 319, 312, 414, 1081, 1475, 481, 482, 322, 1470, 40, 486, 487, 59, 1475, 329, 59, 1448, 332, 1436, 425, 1436, 336, 1454, 41, 59, 462, 44, 59, 1499, 344, 1501, 264, 59, 1504, 1505, 1496, 59, 1499, 46, 1501, 408, 1119, 1504, 1505, 41, 360, 41, 44, 59, 44, 418, 1522, 59, 59, 1486, 41, 319, 1135, 44, 1530, 1522, 1493, 41, 338, 0, 44, 677, 678, 1530, 384, 1148, 317, 1543, 0, 262, 443, 264, 1155, 1019, 338, 1021, 1543, 397, 278, 272, 280, 42, 43, 461, 45, 285, 47, 280, 288, 41, 462, 463, 44, 286, 414, 375, 289, 41, 1181, 419, 44, 301, 41, 0, 0, 44, 337, 1190, 388, 41, 41, 453, 44, 44, 462, 463, 403, 341, 59, 312, 403, 441, 321, 319, 384, 384, 319, 59, 321, 322, 40, 40, 325, 453, 40, 455, 329, 42, 43, 332, 45, 334, 47, 336, 41, 462, 40, 44, 341, 342, 40, 344, 462, 41, 42, 43, 262, 45, 264, 47, 40, 40, 59, 59, 40, 40, 272, 360, 361, 396, 363, 398, 1255, 462, 280, 402, 403, 404, 40, 379, 286, 1264, 1265, 289, 377, 461, 379, 380, 381, 91, 321, 384, 319, 44, 387, 388, 458, 459, 460, 46, 437, 401, 362, 451, 397, 332, 312, 435, 408, 418, 443, 358, 288, 319, 341, 321, 322, 1300, 322, 325, 412, 414, 44, 329, 486, 487, 332, 470, 334, 61, 336, 373, 336, 287, 295, 341, 342, 430, 344, 40, 264, 40, 442, 0, 44, 306, 437, 461, 441, 321, 44, 403, 313, 0, 360, 361, 360, 363, 41, 1342, 453, 388, 455, 41, 42, 43, 461, 45, 461, 47, 397, 377, 453, 379, 380, 381, 461, 338, 384, 44, 384, 387, 388, 429, 41, 42, 43, 44, 45, 61, 47, 397, 280, 40, 41, 488, 44, 44, 383, 349, 44, 262, 59, 60, 61, 62, 278, 301, 414, 264, 414, 461, 59, 437, 441, 42, 43, 258, 45, 280, 47, 398, 471, 398, 430, 286, 0, 459, 455, 277, 400, 448, 59, 448, 40, 441, 93, 40, 279, 91, 350, 40, 403, 264, 91, 42, 43, 453, 45, 455, 47, 40, 412, 384, 44, 461, 390, 262, 383, 40, 301, 488, 1392, 40, 437, 262, 307, 41, 42, 43, 44, 45, 465, 47, 435, 280, 318, 40, 439, 264, 41, 286, 488, 279, 321, 59, 60, 61, 62, 330, 322, 321, 280, 44, 321, 1425, 1426, 329, 286, 280, 332, 40, 44, 329, 336, 301, 449, 40, 349, 277, 274, 459, 344, 0, 40, 40, 357, 358, 285, 93, 45, 345, 319, 364, 278, 322, 345, 419, 360, 1459, 417, 301, 329, 419, 330, 332, 40, 357, 63, 336, 1470, 382, 418, 40, 341, 40, 461, 344, 44, 321, 386, 368, 384, 349, 41, 42, 43, 44, 45, 44, 47, 41, 358, 360, 389, 397, 389, 389, 364, 1499, 344, 1501, 59, 60, 61, 62, 274, 332, 419, 44, 266, 300, 414, 40, 264, 45, 382, 384, 461, 430, 387, 388, 1522, 41, 423, 58, 41, 41, 41, 455, 397, 441, 280, 63, 395, 262, 93, 264, 286, 441, 41, 258, 41, 310, 310, 272, 40, 414, 40, 353, 40, 453, 40, 455, 40, 40, 40, 274, 40, 286, 277, 278, 289, 280, 40, 40, 40, 40, 285, 40, 40, 288, 40, 40, 441, 262, 328, 41, 44, 279, 461, 0, 423, 280, 301, 312, 453, 392, 455, 286, 307, 391, 319, 310, 321, 322, 271, 288, 325, 447, 488, 301, 329, 41, 379, 332, 0, 334, 41, 336, 408, 40, 278, 280, 341, 342, 41, 344, 262, 286, 264, 488, 41, 41, 43, 44, 45, 418, 272, 41, 330, 386, 280, 360, 361, 44, 363, 40, 437, 397, 59, 60, 61, 62, 41, 289, 41, 353, 386, 349, 377, 321, 379, 380, 381, 356, 372, 384, 358, 372, 387, 388, 379, 41, 364, 59, 41, 41, 312, 41, 397, 41, 403, 41, 93, 319, 45, 321, 322, 41, 41, 325, 382, 41, 401, 329, 41, 414, 332, 41, 334, 408, 336, 41, 41, 412, 41, 341, 342, 41, 344, 296, 419, 430, 796, 262, 798, 264, 800, 801, 41, 803, 804, 805, 441, 272, 360, 361, 59, 363, 437, 40, 341, 59, 40, 442, 453, 59, 455, 59, 0, 341, 289, 377, 461, 379, 380, 381, 59, 59, 384, 41, 353, 387, 388, 345, 369, 40, 341, 59, 467, 59, 384, 397, 471, 312, 44, 461, 353, 384, 384, 488, 319, 41, 321, 322, 296, 344, 325, 0, 414, 41, 329, 41, 44, 332, 41, 334, 41, 336, 44, 411, 44, 436, 341, 342, 430, 344, 305, 59, 41, 42, 43, 302, 45, 40, 47, 441, 443, 59, 305, 294, 464, 360, 361, 44, 363, 44, 308, 453, 41, 455, 41, 44, 0, 0, 338, 461, 40, 264, 377, 45, 379, 380, 381, 384, 384, 384, 59, 278, 387, 388, 321, 264, 58, 41, 42, 43, 390, 45, 397, 47, 459, 262, 488, 264, 40, 264, 412, 471, 310, 459, 437, 272, 264, 271, 41, 414, 43, 44, 45, 344, 459, 458, 459, 460, 344, 462, 463, 271, 289, 41, 344, 430, 59, 60, 61, 62, 40, 344, 41, 40, 59, 41, 441, 279, 481, 482, 418, 41, 305, 486, 487, 312, 59, 0, 453, 0, 455, 0, 319, 1022, 321, 322, 461, 12, 325, 301, 93, 231, 329, 223, 598, 332, 444, 334, 222, 336, 561, 776, 961, 77, 341, 342, 959, 344, 1102, 296, 458, 459, 460, 488, 462, 463, 948, 956, 330, 1228, 343, 511, 940, 360, 361, 308, 363, 889, 949, 708, 325, 260, 709, 481, 482, 0, 325, 349, 486, 487, 377, 1214, 379, 380, 381, 357, 358, 384, 1441, 1216, 387, 388, 364, 41, 42, 43, 1445, 45, 1479, 47, 397, 41, 42, 43, 349, 45, 353, 47, 1079, 491, 382, 0, 1444, 302, 699, 1459, 41, 414, 43, 44, 45, 1408, 394, 1529, 396, 314, 1397, 1119, 1476, 367, 278, 558, 280, 430, 59, 60, 61, 62, 951, 328, 288, 318, 771, 330, 441, 1239, 493, 419, 311, 258, 339, 280, 41, 301, 757, 44, 453, 286, 455, 549, 1104, 749, 0, 13, 461, 292, 432, 436, 93, 278, 59, 280, 444, 667, 679, 426, 285, 645, 1284, 288, 1493, 425, 1287, 1190, 41, 42, 43, 1454, 45, 0, 47, 488, 301, 603, 296, 1545, 280, 444, 307, 262, 991, 264, 286, 41, 446, 43, 44, 45, 829, 272, 422, 458, 459, 460, 366, 462, 463, -1, -1, 408, 1257, 59, 60, 61, 62, -1, 289, -1, -1, 418, 41, 379, -1, 44, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, 0, -1, -1, 59, 312, -1, 353, -1, 401, 443, 93, 319, -1, 321, 322, 408, -1, 325, -1, -1, -1, 329, -1, -1, 332, 379, 334, 461, 336, -1, 45, -1, -1, 341, 342, -1, 344, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, 401, 63, 442, -1, -1, 360, 361, 408, 363, -1, -1, -1, 59, -1, -1, -1, -1, -1, 419, -1, -1, -1, 377, -1, 379, 380, 381, -1, -1, 384, 0, -1, 387, 388, -1, -1, 437, -1, -1, -1, 280, 442, 397, -1, -1, 262, 286, 264, 280, -1, -1, -1, -1, -1, 286, 272, 41, 42, 43, 414, 45, -1, 47, -1, 458, 459, 460, 461, 462, 463, 471, 41, 289, -1, 44, 430, 41, 42, 43, -1, 45, -1, 47, -1, -1, 295, 441, 481, 482, 59, -1, -1, 486, 487, 0, 312, 306, 278, 453, 280, 455, -1, 319, 313, 321, 322, 461, 288, 325, -1, -1, -1, 329, -1, 0, 332, 326, 334, -1, 336, 301, -1, -1, -1, 341, 342, -1, 344, -1, -1, -1, 280, 262, 488, 264, 41, -1, 286, 44, -1, -1, -1, 272, 360, 361, -1, 363, -1, -1, -1, -1, -1, -1, 59, -1, 41, -1, -1, 44, 289, 377, -1, 379, 380, 381, -1, -1, 384, -1, -1, 387, 388, -1, 59, -1, 278, -1, 280, 0, -1, 397, -1, 312, -1, -1, 288, -1, -1, -1, 319, -1, 321, 322, 403, -1, 325, -1, 414, 379, 329, -1, 0, 332, -1, 334, -1, 336, -1, -1, -1, 420, 341, 342, 430, 344, 262, -1, -1, -1, 41, 401, -1, 44, -1, 441, 435, -1, 408, -1, 439, 360, 361, 442, 363, 296, -1, 453, 59, 455, -1, 450, -1, 41, -1, 461, 44, -1, 377, -1, 379, 380, 381, -1, -1, 384, -1, -1, 387, 388, 469, 59, 442, -1, -1, -1, 0, -1, 397, -1, -1, -1, 488, 319, -1, -1, 322, 379, -1, -1, -1, -1, -1, 329, -1, 414, 332, -1, -1, 0, 336, -1, 353, 262, -1, 341, 280, -1, 344, 401, -1, 430, 286, -1, -1, -1, 408, 41, -1, -1, 44, -1, 441, -1, 360, -1, 280, -1, -1, -1, -1, -1, 286, -1, 453, 59, 455, -1, -1, -1, 41, -1, 461, 44, -1, -1, -1, -1, 384, -1, 442, 387, 388, -1, 0, -1, -1, -1, 59, -1, 319, 397, 0, 322, -1, -1, -1, 262, -1, 488, 329, -1, -1, 332, -1, -1, -1, 336, 414, -1, -1, -1, 341, -1, -1, 344, -1, 262, 41, 42, 43, -1, 45, -1, 47, 41, -1, -1, 44, -1, -1, 360, -1, 41, -1, 441, 44, 458, 459, 460, -1, 462, 463, 59, -1, -1, -1, 453, -1, 455, -1, 59, -1, -1, 319, 384, -1, 322, 387, 388, 481, 482, -1, -1, 329, 486, 487, 332, 397, 0, 0, 336, -1, -1, 319, -1, 341, 322, -1, 344, -1, 262, 488, -1, 329, 414, -1, 332, -1, -1, -1, 336, -1, -1, -1, 360, 341, -1, -1, 344, -1, -1, 45, -1, 262, -1, -1, -1, -1, -1, 41, 41, 441, 44, 44, 360, -1, -1, -1, 384, 63, -1, 387, 388, 453, -1, 455, -1, 59, 59, -1, -1, 397, -1, -1, -1, -1, -1, 319, 384, -1, 322, 387, 388, -1, -1, -1, -1, 329, 414, -1, 332, 397, 0, 0, 336, -1, -1, -1, 488, 341, 319, -1, 344, 322, -1, -1, -1, 262, 414, -1, 329, 0, -1, 332, -1, 441, -1, 336, 360, -1, -1, -1, 341, -1, -1, 344, -1, 453, -1, 455, 262, -1, -1, 41, 41, 441, 44, 44, -1, -1, -1, 360, 384, -1, -1, 387, 388, 453, -1, 455, -1, 59, 59, -1, -1, 397, -1, -1, -1, -1, -1, -1, 488, -1, 319, 384, -1, 322, 387, 388, 59, -1, 414, -1, 329, -1, 0, 332, 397, -1, -1, 336, 488, -1, -1, -1, 341, 319, -1, 344, 322, -1, -1, 262, -1, 414, 280, 329, -1, 441, 332, 278, 286, 280, 336, 360, -1, -1, -1, 341, -1, 453, 344, 455, -1, -1, -1, 41, -1, -1, 44, -1, 441, -1, -1, -1, -1, -1, 360, 384, -1, -1, 387, 388, 453, 59, 455, -1, -1, -1, 0, -1, 397, -1, -1, -1, 488, -1, -1, -1, 319, -1, 384, 322, -1, 387, 388, -1, -1, 414, 329, -1, -1, 332, -1, 397, -1, 336, -1, 488, 262, -1, 341, -1, -1, 344, -1, -1, -1, -1, -1, 41, 414, -1, 44, -1, 441, 278, -1, 280, -1, 360, 296, -1, 285, -1, -1, 288, 453, 59, 455, -1, 379, -1, -1, -1, -1, -1, -1, 441, 301, -1, -1, -1, -1, 384, 0, 0, 387, 388, -1, 453, -1, 455, 401, -1, -1, 319, 397, -1, 322, 408, -1, 488, -1, -1, -1, 329, -1, 0, 332, 0, -1, -1, 336, 414, -1, -1, -1, 341, 0, -1, 344, -1, 262, -1, 488, 41, 41, -1, 44, 44, -1, -1, -1, 442, -1, -1, 360, 258, -1, 278, 441, 280, -1, 59, 59, -1, -1, -1, 41, 288, 41, 44, 453, 44, 455, -1, 379, -1, 279, 41, 384, -1, 44, 387, 388, -1, 59, -1, 59, -1, 41, 42, 43, 397, 45, -1, 47, 59, 401, 319, 301, -1, 322, -1, -1, 408, 307, 488, -1, 329, 414, -1, 332, -1, 0, -1, 336, -1, -1, -1, -1, 341, -1, -1, 344, -1, 262, -1, 444, 330, -1, -1, -1, -1, -1, -1, -1, 441, -1, 442, 360, -1, 458, 459, 460, -1, 462, 463, 349, 453, -1, 455, -1, -1, -1, 41, -1, 358, 44, -1, 379, -1, -1, 364, 384, 481, 482, 387, 388, -1, 486, 487, -1, 59, -1, -1, -1, 397, 0, -1, -1, 382, 401, 319, 488, -1, 322, -1, -1, 408, 262, -1, -1, 329, 414, -1, 332, -1, -1, -1, 336, -1, -1, -1, -1, 341, -1, -1, 344, 41, 42, 43, 0, 45, -1, 47, -1, -1, 419, 41, -1, 441, 44, 442, 360, 473, 474, 475, 476, 477, 478, 479, 480, 453, -1, 455, -1, 59, -1, 41, 42, 43, -1, 45, -1, 47, -1, 319, 384, -1, 322, 387, 388, 41, 0, -1, 44, 329, -1, -1, 332, 397, -1, -1, 336, -1, 262, -1, 488, 341, -1, 59, 344, -1, -1, -1, -1, -1, 414, -1, -1, -1, -1, 278, -1, 280, -1, -1, 360, 262, -1, -1, -1, 288, -1, 41, -1, -1, 44, -1, 262, -1, -1, -1, -1, 441, -1, 278, -1, 280, -1, -1, 384, 59, -1, 387, 388, 453, -1, 455, -1, -1, -1, 319, -1, 397, 322, -1, -1, 280, -1, -1, -1, 329, -1, 286, 332, -1, -1, -1, 336, -1, 414, -1, -1, 341, 319, -1, 344, 322, -1, -1, 488, -1, -1, -1, 329, 319, -1, 332, 322, -1, -1, 336, 360, -1, -1, 329, 341, 441, 332, 344, -1, -1, 336, -1, 262, -1, -1, 341, -1, 453, 344, 455, 379, -1, -1, 360, 384, -1, -1, 387, 388, -1, -1, -1, -1, -1, 360, -1, -1, 397, -1, -1, -1, -1, 401, -1, 379, -1, -1, 384, -1, 408, 387, 388, 488, -1, 414, -1, -1, -1, 384, -1, 397, 387, 388, -1, -1, 0, 401, -1, -1, 319, -1, 397, 322, 408, -1, -1, -1, 414, -1, 329, -1, 441, 332, 442, 280, 306, 336, -1, 414, -1, 286, 341, 313, 453, 344, 455, 317, 318, -1, -1, -1, 0, -1, -1, 441, -1, 41, 442, -1, 44, 360, 46, -1, 0, 280, 441, 453, 338, 455, -1, 286, -1, -1, -1, 59, -1, 61, 453, 488, 455, -1, -1, -1, 319, 384, -1, 322, 387, 388, -1, -1, -1, 41, 329, -1, 44, 332, 397, -1, -1, 336, 488, -1, 40, 41, 341, -1, 44, 344, -1, 59, -1, 488, -1, 414, -1, -1, 319, -1, -1, 322, -1, 59, -1, 360, -1, -1, 329, -1, -1, 332, -1, 403, -1, 336, -1, -1, -1, -1, 341, -1, 441, 344, -1, -1, -1, -1, -1, 384, 420, 0, 387, 388, 453, 91, 455, -1, -1, 360, 319, -1, 397, 322, -1, 435, -1, -1, 0, 439, 329, -1, -1, 332, -1, -1, -1, 336, -1, 414, 450, -1, 341, 384, -1, 344, -1, 388, -1, 488, -1, -1, 41, -1, -1, 44, 397, -1, -1, 469, -1, 360, -1, -1, -1, -1, 441, -1, -1, 41, 59, -1, 44, 414, -1, -1, -1, -1, 453, -1, 455, -1, -1, -1, -1, 384, -1, 59, -1, 388, -1, -1, -1, 0, -1, -1, -1, -1, 397, -1, 441, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, 453, 488, -1, 414, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, 44, -1, -1, 264, 265, 441, -1, -1, -1, -1, 488, -1, 273, -1, -1, 59, 277, 453, 0, 280, -1, -1, -1, -1, 285, -1, -1, -1, -1, -1, -1, -1, -1, 258, -1, 296, -1, -1, 299, -1, -1, -1, 303, -1, 305, 258, -1, 91, -1, -1, -1, -1, 488, -1, 279, -1, -1, -1, 319, -1, -1, 274, 0, -1, 277, 278, -1, 280, -1, -1, -1, -1, 285, -1, -1, 288, 301, 59, -1, 340, 341, -1, 307, -1, -1, 346, 347, 348, 301, 350, 351, 352, -1, 354, 307, -1, -1, 310, -1, -1, -1, 0, -1, 41, -1, 330, 44, -1, 0, -1, -1, -1, -1, 374, -1, 376, -1, -1, -1, -1, -1, 59, -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, 258, 358, -1, -1, -1, -1, -1, 364, -1, -1, 41, -1, -1, 44, 407, -1, 274, 258, 411, 277, 278, 91, 280, -1, -1, 382, -1, 285, 59, -1, 288, 424, -1, 274, 379, 59, 0, 278, -1, 280, -1, -1, -1, 301, 285, -1, -1, 288, -1, 307, -1, -1, 310, 446, -1, -1, 401, -1, -1, -1, 301, -1, 419, 408, -1, -1, 307, 412, 461, 310, -1, -1, -1, -1, 419, -1, -1, 41, -1, -1, 44, -1, 258, -1, -1, -1, -1, -1, 481, 482, -1, -1, 437, -1, -1, 59, -1, 442, 274, -1, -1, -1, 278, -1, 280, -1, -1, -1, -1, 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, 379, 467, -1, -1, 301, 471, -1, -1, -1, -1, 307, -1, -1, 310, -1, -1, -1, 379, -1, -1, -1, -1, 401, 258, -1, -1, -1, -1, -1, 408, -1, -1, -1, 412, -1, -1, -1, -1, -1, 401, 419, -1, -1, -1, 279, -1, 408, -1, -1, -1, 412, 40, -1, -1, 43, -1, 45, 419, 437, -1, -1, -1, -1, 442, -1, -1, 301, 258, -1, 58, -1, -1, 307, -1, 63, 437, -1, -1, -1, -1, 442, -1, 379, 274, -1, -1, -1, 278, 467, 280, -1, -1, 471, -1, 285, 330, 271, 288, -1, -1, -1, -1, -1, -1, 401, 467, 258, -1, -1, 471, 301, 408, -1, 258, 349, 412, 307, -1, -1, 310, -1, -1, 419, 358, -1, 277, 278, 302, 280, 364, -1, -1, -1, 285, 279, -1, 288, -1, 313, 314, 437, 316, -1, -1, 319, 442, -1, 382, 40, 301, -1, 43, -1, 45, -1, 307, 301, -1, 333, -1, -1, -1, 307, -1, 339, -1, 58, -1, -1, -1, 467, 63, -1, 258, 471, -1, -1, -1, -1, -1, -1, -1, -1, -1, 419, 330, -1, -1, 379, -1, -1, -1, 277, 278, -1, 280, -1, -1, -1, -1, 285, -1, 40, 288, 349, 43, -1, 45, -1, -1, 401, -1, -1, 358, -1, -1, 301, 408, -1, 364, 58, 412, 307, -1, 399, 63, -1, 379, 419, -1, -1, -1, -1, -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, 418, -1, -1, 437, -1, -1, 401, -1, 442, -1, -1, -1, -1, 408, -1, 433, -1, -1, -1, -1, -1, -1, 417, -1, 419, 443, -1, -1, -1, -1, -1, 419, -1, 467, -1, 267, 454, 471, -1, -1, -1, -1, 437, 461, 276, 40, -1, 442, 43, -1, 45, 379, -1, -1, -1, -1, -1, -1, 290, -1, -1, 293, -1, 58, 296, 297, -1, -1, 63, -1, -1, -1, -1, 401, -1, -1, 471, -1, -1, -1, 408, -1, -1, 315, -1, -1, -1, -1, -1, 1136, 1137, 419, -1, -1, -1, 327, -1, -1, -1, 1146, 1147, -1, 1149, 1150, -1, -1, -1, -1, -1, 437, 1157, 1158, 1159, 1160, 442, 1162, 1163, 1164, 1165, 1166, 1167, -1, -1, 355, 356, -1, -1, -1, -1, -1, -1, -1, 267, -1, -1, 367, -1, -1, -1, 371, -1, 276, -1, 471, -1, -1, -1, 379, -1, -1, -1, -1, -1, -1, 461, 290, -1, -1, -1, -1, -1, 296, 297, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, 315, -1, -1, -1, -1, -1, 267, -1, 40, -1, 422, 43, 327, 45, -1, 276, -1, -1, -1, -1, -1, -1, 434, -1, -1, -1, 58, -1, -1, 290, -1, 63, 444, -1, -1, 296, 297, -1, -1, -1, 355, 356, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, 367, -1, 315, -1, 371, -1, -1, -1, 472, -1, -1, -1, 379, -1, 327, -1, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, -1, -1, -1, 267, 40, 355, 356, 43, -1, 45, -1, -1, 276, -1, 418, -1, -1, 367, 422, -1, -1, 371, 58, -1, -1, -1, 290, 63, -1, 379, 434, -1, 296, 297, -1, -1, -1, -1, -1, -1, 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, 327, -1, -1, -1, -1, 472, -1, -1, -1, 422, -1, -1, -1, -1, 481, 482, 483, 484, 485, 486, 487, 434, -1, -1, -1, -1, -1, -1, 355, 356, -1, 444, -1, -1, -1, -1, -1, -1, -1, -1, 367, -1, -1, -1, 371, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, 483, 484, 485, 486, 487, -1, 260, -1, -1, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, 276, 40, -1, -1, 43, -1, 45, 426, -1, -1, -1, -1, -1, -1, 290, 434, -1, -1, -1, 58, 296, 297, -1, -1, 63, 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, 327, -1, 472, -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, 483, 484, 485, 486, 487, 260, -1, -1, 263, -1, -1, -1, 267, -1, -1, 355, 356, -1, -1, -1, 40, 276, -1, 43, -1, 45, -1, 367, -1, -1, -1, 371, -1, -1, -1, 290, 461, -1, 58, -1, -1, 296, 297, 63, -1, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 327, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 426, -1, 40, -1, -1, 43, -1, 45, 434, -1, -1, -1, -1, -1, 355, 356, -1, -1, 444, -1, 58, -1, -1, -1, -1, 63, 367, -1, -1, -1, 371, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, 426, 40, 276, -1, 43, -1, 45, -1, 434, -1, -1, -1, -1, -1, -1, -1, 290, 273, 444, 58, -1, 277, 296, 297, 63, -1, -1, -1, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, 296, -1, -1, 299, -1, -1, 472, -1, -1, -1, -1, -1, -1, 327, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, -1, -1, -1, 267, -1, -1, -1, -1, 355, 356, -1, 340, 276, -1, -1, -1, -1, 346, 347, 348, 367, 350, 351, 352, 371, 354, 290, -1, -1, -1, -1, -1, 296, 297, -1, -1, -1, -1, 461, -1, -1, -1, -1, -1, -1, 374, -1, 376, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 327, 260, -1, -1, 263, -1, -1, -1, 267, -1, -1, -1, -1, -1, -1, 407, 426, 276, 40, -1, -1, 43, -1, 45, 434, -1, -1, -1, 355, 356, -1, 290, 424, -1, 444, -1, 58, 296, 297, -1, 367, 63, -1, -1, 371, -1, -1, -1, 458, 459, 460, 461, 462, 463, 446, -1, -1, -1, -1, -1, -1, -1, 472, -1, 40, -1, 42, 43, 327, 45, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, 58, -1, -1, 260, -1, 63, 263, 481, 482, -1, 267, -1, -1, -1, 355, 356, -1, 426, 40, 276, 42, 43, -1, 45, -1, 434, 367, -1, -1, -1, 371, -1, -1, 290, 273, 444, 58, -1, 277, 296, 297, 63, -1, -1, -1, -1, 285, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, 296, -1, -1, 299, -1, -1, 472, -1, -1, -1, -1, -1, -1, 327, -1, 481, 482, 483, 484, 485, 486, 487, 40, -1, -1, 43, -1, 45, 426, -1, -1, -1, -1, -1, -1, -1, 434, -1, -1, -1, 58, 355, 356, -1, 340, 63, 444, -1, -1, -1, 346, 347, 348, 367, 350, 351, 352, 371, 354, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, -1, 374, -1, 376, -1, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, 263, -1, 40, -1, 267, 43, -1, 45, -1, 407, 426, -1, -1, 276, -1, -1, -1, -1, 434, -1, 58, -1, -1, -1, -1, 63, 424, 290, 444, -1, -1, -1, -1, 296, 297, -1, -1, -1, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, 446, -1, 267, -1, -1, -1, -1, -1, 472, -1, -1, 276, -1, -1, -1, 461, 327, 481, 482, 483, 484, 485, 486, 487, -1, 290, -1, -1, -1, -1, -1, 296, 297, -1, -1, 481, 482, -1, 267, -1, -1, -1, -1, -1, 355, 356, -1, 276, -1, -1, -1, -1, 40, 41, -1, 43, 367, 45, -1, -1, 371, 290, 327, -1, -1, -1, -1, 296, 297, -1, 58, -1, -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 353, -1, 355, 356, -1, -1, -1, -1, -1, -1, 327, 267, -1, -1, 367, -1, -1, -1, 371, 40, 276, -1, 43, -1, 45, -1, -1, 426, -1, -1, -1, -1, -1, -1, 290, 434, 353, 58, 355, 356, 296, 297, 63, -1, -1, 444, -1, -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, 327, -1, 472, -1, -1, -1, -1, -1, -1, -1, 434, 481, 482, 483, 484, 485, 486, 487, -1, -1, 444, -1, 267, -1, -1, -1, -1, -1, 355, 356, -1, 276, -1, -1, 458, 459, 460, 461, 462, 463, 367, -1, -1, -1, 371, 290, 434, -1, 472, -1, -1, 296, 297, -1, -1, -1, 444, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, 327, -1, 472, -1, -1, -1, -1, -1, -1, 418, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, -1, 434, 353, -1, 355, 356, -1, -1, -1, -1, -1, 444, -1, -1, 267, -1, 367, -1, -1, -1, 371, -1, -1, 276, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, 290, -1, 472, -1, -1, 40, 296, 297, 43, -1, 45, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, 63, -1, -1, -1, 267, -1, -1, -1, -1, 327, -1, -1, 40, 276, -1, 43, -1, 45, 434, -1, -1, -1, -1, -1, -1, -1, -1, 290, 444, -1, 58, -1, -1, 296, 297, 63, -1, 355, 356, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, 367, -1, -1, -1, 371, -1, -1, 472, -1, -1, -1, -1, -1, -1, -1, 327, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 367, 283, -1, -1, 371, -1, -1, -1, -1, 291, -1, -1, 434, -1, -1, -1, 298, -1, 300, -1, 302, -1, 444, -1, -1, 307, -1, -1, -1, -1, -1, -1, 314, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, 328, -1, -1, -1, 472, 40, -1, -1, 43, -1, 45, 339, -1, 481, 482, 483, 484, 485, 486, 487, -1, 434, -1, 58, -1, -1, -1, -1, 63, -1, -1, 444, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 455, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, 267, -1, 273, -1, -1, 472, 277, -1, -1, 276, -1, -1, -1, -1, 481, 482, 483, 484, 485, 486, 487, 292, -1, 290, 406, 296, -1, -1, 299, 296, 297, 413, -1, -1, 416, 267, 418, 419, -1, -1, -1, -1, -1, -1, 276, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 290, -1, 327, 443, -1, -1, 296, 297, 41, 42, 43, 340, 45, -1, 47, -1, -1, 346, 347, 348, -1, 350, 351, 352, -1, 354, -1, 60, 61, 62, 355, 356, -1, -1, -1, -1, -1, 327, -1, -1, -1, -1, 367, -1, -1, 374, 371, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 367, 407, -1, -1, 371, -1, 412, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 434, -1, -1, -1, -1, -1, -1, -1, 446, -1, 444, 267, 42, 43, -1, 45, -1, 47, -1, -1, 276, 455, -1, -1, 458, 459, 460, 461, 462, 463, 60, 61, 62, -1, 290, 434, -1, -1, 472, -1, 296, 297, -1, 481, 482, 444, -1, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, -1, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, 327, -1, 472, -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, 483, 484, 485, 486, 487, -1, 273, -1, -1, -1, 277, -1, -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, 292, -1, 367, -1, 296, -1, 371, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, -1, -1, -1, -1, -1, -1, -1, 280, -1, -1, -1, -1, -1, 286, -1, -1, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, -1, 346, 347, 348, -1, 350, 351, 352, -1, 354, -1, -1, -1, -1, -1, -1, 434, -1, -1, -1, -1, 325, -1, -1, -1, -1, 444, -1, -1, 374, 334, 376, -1, -1, -1, -1, -1, -1, 342, -1, 458, 459, 460, 461, 462, 463, -1, -1, -1, -1, -1, -1, -1, -1, 472, -1, -1, 361, -1, 363, -1, -1, 407, 481, 482, 483, 484, 485, 486, 487, -1, -1, -1, 377, -1, 379, 380, 381, -1, 424, 272, -1, -1, -1, -1, -1, -1, -1, 280, 273, -1, -1, -1, 277, 286, -1, -1, 289, -1, -1, -1, 446, -1, -1, -1, 273, -1, -1, -1, 277, -1, -1, 296, -1, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, 292, -1, 430, -1, 296, -1, -1, 299, -1, 325, -1, -1, 481, 482, -1, -1, -1, -1, 334, -1, -1, -1, -1, -1, -1, -1, 342, 273, -1, -1, -1, 277, 340, -1, -1, -1, -1, -1, 346, 347, 348, -1, 350, 351, 352, 361, 354, 363, 340, -1, 296, -1, -1, 299, 346, 347, 348, -1, 350, 351, 352, 377, 354, 379, 380, 381, 374, -1, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 271, -1, -1, 374, -1, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, -1, -1, -1, 407, 346, 347, 348, -1, 350, 351, 352, -1, 354, -1, 302, -1, -1, -1, 430, 407, 424, 309, -1, -1, 271, 313, 314, -1, 316, -1, -1, 319, 374, -1, 376, -1, 424, -1, -1, -1, -1, -1, 446, -1, -1, 333, -1, -1, -1, -1, -1, 339, -1, -1, -1, 302, -1, 461, 446, -1, -1, -1, 309, -1, -1, 407, 313, 314, -1, 316, -1, -1, 319, -1, -1, -1, -1, 481, 482, -1, -1, -1, 424, -1, -1, -1, 333, -1, -1, -1, -1, -1, 339, 481, 482, -1, -1, -1, -1, -1, -1, -1, -1, -1, 446, -1, -1, -1, -1, -1, -1, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 418, -1, -1, -1, -1, -1, -1, -1, -1, 481, 482, -1, -1, -1, -1, 433, -1, -1, -1, -1, -1, -1, 399, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, -1, 452, -1, 454, -1, -1, -1, -1, 418, -1, 461, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 433, -1, -1, -1, -1, -1, -1, -1, -1, -1, 443, -1, -1, -1, -1, -1, -1, -1, -1, 452, -1, 454, -1, -1, -1, -1, -1, -1, 461, }; #define YYFINAL 17 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 490 #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,"ACTIVE","ADD","AFTER","ALL","ALTER","AND","ANY", "AS","ASC","AT","AVG","AUTO","BASENAME","BEFORE","BEGIN","BETWEEN","BLOB","BY", "CACHE","CAST","CHARACTER","CHECK","CHECK_POINT_LEN","COLLATE","COLLATION", "COMMA","COMMIT","COMMITTED","COMPUTED","CONCATENATE","CONDITIONAL", "CONSTRAINT","CONTAINING","COUNT","CREATE","CSTRING","CURRENT","CURSOR", "DATABASE","DATE","DB_KEY","DEBUG","DECIMAL","DECLARE","DEFAULT","DELETE", "DESC","DISTINCT","DO","DOMAIN","DROP","ELSE","END","ENTRY_POINT","EQL", "ESCAPE","EXCEPTION","EXECUTE","EXISTS","EXIT","EXTERNAL","FILTER","FOR", "FOREIGN","FROM","FULL","FUNCTION","GDSCODE","GEQ","GENERATOR","GEN_ID","GRANT", "GROUP","GROUP_COMMIT_WAIT","GTR","HAVING","IF","IN","INACTIVE","INNER", "INPUT_TYPE","INDEX","INSERT","INTEGER","INTO","IS","ISOLATION","JOIN","KEY", "KW_CHAR","KW_DEC","KW_DOUBLE","KW_FILE","KW_FLOAT","KW_INT","KW_LONG", "KW_NULL","KW_NUMERIC","KW_UPPER","KW_VALUE","LENGTH","LOGFILE","LPAREN","LEFT", "LEQ","LEVEL","LIKE","LOG_BUF_SIZE","LSS","MANUAL","MAXIMUM","MAX_SEGMENT", "MERGE","MESSAGE","MINIMUM","MODULE_NAME","NAMES","NATIONAL","NATURAL","NCHAR", "NEQ","NO","NOT","NOT_GTR","NOT_LSS","NUM_LOG_BUFS","OF","ON","ONLY","OPTION", "OR","ORDER","OUTER","OUTPUT_TYPE","OVERFLOW","PAGE","PAGES","PAGE_SIZE", "PARAMETER","PASSWORD","PLAN","POSITION","POST_EVENT","PRECISION","PRIMARY", "PRIVILEGES","PROCEDURE","PROTECTED","RAW_PARTITIONS","READ","REAL", "REFERENCES","RESERVING","RETAIN","RETURNING_VALUES","RETURNS","REVOKE","RIGHT", "RPAREN","ROLLBACK","SEGMENT","SELECT","SET","SHADOW","SHARED","SINGULAR", "SIZE","SMALLINT","SNAPSHOT","SOME","SORT","SQLCODE","STABILITY","STARTING", "STATISTICS","SUB_TYPE","SUSPEND","SUM","TABLE","THEN","TO","TRANSACTION", "TRIGGER","UNCOMMITTED","UNION","UNIQUE","UPDATE","USER","VALUES","VARCHAR", "VARIABLE","VARYING","VERSION","VIEW","WAIT","WHEN","WHERE","WHILE","WITH", "WORK","WRITE","FLOAT","NUMBER","NUMERIC","SYMBOL","STRING","INTRODUCER", "ACTION","ADMIN","CASCADE","FREE_IT","RESTRICT","ROLE","COLUMN","TYPE", "EXTRACT","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","WEEKDAY","YEARDAY", "TIME","TIMESTAMP","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP", "NUMBER64BIT","SCALEDINT","LIMIT","INT64","SUBSTRING", }; char *yyrule[] = { "$accept : top", "top : statement", "top : statement ';'", "statement : alter", "statement : blob", "statement : commit", "statement : create", "statement : declare", "statement : delete", "statement : drop", "statement : grant", "statement : insert", "statement : invoke_procedure", "statement : revoke", "statement : rollback", "statement : select", "statement : set", "statement : update", "statement : DEBUG signed_short_integer", "grant : GRANT privileges ON prot_table_name TO user_grantee_list grant_option", "grant : GRANT proc_privileges ON PROCEDURE simple_proc_name TO user_grantee_list grant_option", "grant : GRANT privileges ON prot_table_name TO grantee_list", "grant : GRANT proc_privileges ON PROCEDURE simple_proc_name TO grantee_list", "grant : GRANT role_name_list TO role_grantee_list role_admin_option", "prot_table_name : simple_table_name", "prot_table_name : TABLE simple_table_name", "privileges : ALL", "privileges : ALL PRIVILEGES", "privileges : privilege_list", "privilege_list : privilege", "privilege_list : privilege_list ',' privilege", "proc_privileges : EXECUTE", "privilege : SELECT", "privilege : INSERT", "privilege : DELETE", "privilege : UPDATE column_parens_opt", "privilege : REFERENCES column_parens_opt", "grant_option : WITH GRANT OPTION", "grant_option :", "role_admin_option : WITH ADMIN OPTION", "role_admin_option :", "simple_proc_name : symbol_procedure_name", "revoke : REVOKE rev_grant_option privileges ON prot_table_name FROM user_grantee_list", "revoke : REVOKE rev_grant_option proc_privileges ON PROCEDURE simple_proc_name FROM user_grantee_list", "revoke : REVOKE privileges ON prot_table_name FROM user_grantee_list", "revoke : REVOKE proc_privileges ON PROCEDURE simple_proc_name FROM user_grantee_list", "revoke : REVOKE privileges ON prot_table_name FROM grantee_list", "revoke : REVOKE proc_privileges ON PROCEDURE simple_proc_name FROM grantee_list", "revoke : REVOKE role_name_list FROM role_grantee_list", "rev_grant_option : GRANT OPTION FOR", "grantee_list : grantee", "grantee_list : grantee_list ',' grantee", "grantee_list : grantee_list ',' user_grantee", "grantee_list : user_grantee_list ',' grantee", "grantee : PROCEDURE symbol_procedure_name", "grantee : TRIGGER symbol_trigger_name", "grantee : VIEW symbol_view_name", "user_grantee_list : user_grantee", "user_grantee_list : user_grantee_list ',' user_grantee", "user_grantee : symbol_user_name", "user_grantee : USER symbol_user_name", "user_grantee : GROUP symbol_user_name", "role_name_list : role_name", "role_name_list : role_name_list ',' role_name", "role_name : symbol_role_name", "role_grantee_list : role_grantee", "role_grantee_list : role_grantee_list ',' role_grantee", "role_grantee : symbol_user_name", "role_grantee : USER symbol_user_name", "declare : DECLARE declare_clause", "declare_clause : FILTER filter_decl_clause", "declare_clause : EXTERNAL FUNCTION udf_decl_clause", "udf_decl_clause : symbol_UDF_name arg_desc_list1 RETURNS return_value1 ENTRY_POINT sql_string MODULE_NAME sql_string", "udf_data_type : simple_type", "udf_data_type : BLOB", "udf_data_type : CSTRING '(' pos_short_integer ')' charset_clause", "arg_desc_list1 :", "arg_desc_list1 : arg_desc_list", "arg_desc_list1 : '(' arg_desc_list ')'", "arg_desc_list : arg_desc", "arg_desc_list : arg_desc_list ',' arg_desc", "arg_desc : init_data_type udf_data_type", "return_value1 : return_value", "return_value1 : '(' return_value ')'", "return_value : init_data_type udf_data_type", "return_value : init_data_type udf_data_type FREE_IT", "return_value : init_data_type udf_data_type BY KW_VALUE", "return_value : PARAMETER pos_short_integer", "filter_decl_clause : symbol_filter_name INPUT_TYPE blob_subtype OUTPUT_TYPE blob_subtype ENTRY_POINT sql_string MODULE_NAME sql_string", "create : CREATE create_clause", "create_clause : EXCEPTION symbol_exception_name sql_string", "create_clause : unique_opt order_direction INDEX symbol_index_name ON simple_table_name index_definition", "create_clause : PROCEDURE procedure_clause", "create_clause : TABLE table_clause", "create_clause : TRIGGER def_trigger_clause", "create_clause : VIEW view_clause", "create_clause : GENERATOR generator_clause", "create_clause : DATABASE db_clause", "create_clause : DOMAIN domain_clause", "create_clause : SHADOW shadow_clause", "create_clause : ROLE role_clause", "unique_opt : UNIQUE", "unique_opt :", "index_definition : column_list", "index_definition : column_parens", "index_definition : computed_by '(' begin_trigger value end_trigger ')'", "shadow_clause : pos_short_integer manual_auto conditional sql_string first_file_length sec_shadow_files", "manual_auto : MANUAL", "manual_auto : AUTO", "manual_auto :", "conditional :", "conditional : CONDITIONAL", "first_file_length :", "first_file_length : LENGTH equals long_integer page_noise", "sec_shadow_files :", "sec_shadow_files : db_file_list", "db_file_list : db_file", "db_file_list : db_file_list db_file", "domain_clause : column_def_name as_opt data_type begin_trigger domain_default_opt end_trigger domain_constraint_clause collate_clause", "as_opt : AS", "as_opt :", "domain_default_opt : DEFAULT begin_trigger default_value", "domain_default_opt :", "domain_constraint_clause :", "domain_constraint_clause : domain_constraint_list", "domain_constraint_list : domain_constraint_def", "domain_constraint_list : domain_constraint_list domain_constraint_def", "domain_constraint_def : domain_constraint", "domain_constraint : null_constraint", "domain_constraint : domain_check_constraint", "null_constraint : NOT KW_NULL", "domain_check_constraint : begin_trigger CHECK '(' search_condition ')' end_trigger", "generator_clause : symbol_generator_name", "role_clause : symbol_role_name", "db_clause : db_name db_initial_desc1 db_rem_desc1", "equals :", "equals : '='", "db_name : sql_string", "db_initial_desc1 :", "db_initial_desc1 : db_initial_desc", "db_initial_desc : db_initial_option", "db_initial_desc : db_initial_desc db_initial_option", "db_initial_option : PAGE_SIZE equals pos_short_integer", "db_initial_option : LENGTH equals long_integer page_noise", "db_initial_option : USER sql_string", "db_initial_option : PASSWORD sql_string", "db_initial_option : SET NAMES sql_string", "db_rem_desc1 :", "db_rem_desc1 : db_rem_desc", "db_rem_desc : db_rem_option", "db_rem_desc : db_rem_desc db_rem_option", "db_rem_option : db_file", "db_rem_option : db_log", "db_rem_option : db_log_option", "db_rem_option : DEFAULT CHARACTER SET symbol_character_set_name", "db_log_option : GROUP_COMMIT_WAIT equals long_integer", "db_log_option : CHECK_POINT_LEN equals long_integer", "db_log_option : NUM_LOG_BUFS equals pos_short_integer", "db_log_option : LOG_BUF_SIZE equals unsigned_short_integer", "db_log : db_default_log_spec", "db_log : db_rem_log_spec", "db_rem_log_spec : LOGFILE '(' logfiles ')' OVERFLOW logfile_desc", "db_rem_log_spec : LOGFILE BASENAME logfile_desc", "db_default_log_spec : LOGFILE", "db_file : file1 sql_string file_desc1", "logfiles : logfile_desc", "logfiles : logfiles ',' logfile_desc", "logfile_desc : logfile_name logfile_attrs", "logfile_name : sql_string", "logfile_attrs :", "logfile_attrs : logfile_attrs logfile_attr", "logfile_attr : SIZE equals long_integer", "file1 : KW_FILE", "file_desc1 :", "file_desc1 : file_desc", "file_desc : file_clause", "file_desc : file_desc file_clause", "file_clause : STARTING file_clause_noise long_integer", "file_clause : LENGTH equals long_integer page_noise", "file_clause_noise :", "file_clause_noise : AT", "file_clause_noise : AT PAGE", "page_noise :", "page_noise : PAGE", "page_noise : PAGES", "table_clause : simple_table_name external_file '(' table_elements ')'", "external_file : EXTERNAL KW_FILE sql_string", "external_file : EXTERNAL sql_string", "external_file :", "table_elements : table_element", "table_elements : table_elements ',' table_element", "table_element : column_def", "table_element : table_constraint_definition", "column_def : column_def_name data_type_or_domain default_opt end_trigger column_constraint_clause collate_clause", "column_def : column_def_name non_array_type def_computed", "column_def : column_def_name def_computed", "def_computed : computed_by '(' begin_trigger value end_trigger ')'", "computed_by : COMPUTED BY", "computed_by : COMPUTED", "data_type_or_domain : data_type begin_trigger", "data_type_or_domain : simple_column_name begin_string", "collate_clause : COLLATE symbol_collation_name", "collate_clause :", "column_def_name : column_name", "simple_column_def_name : simple_column_name", "data_type_descriptor : init_data_type data_type", "init_data_type :", "default_opt : DEFAULT default_value", "default_opt :", "default_value : constant", "default_value : USER", "default_value : null_value", "default_value : datetime_value_expression", "column_constraint_clause :", "column_constraint_clause : column_constraint_list", "column_constraint_list : column_constraint_def", "column_constraint_list : column_constraint_list column_constraint_def", "column_constraint_def : constraint_name_opt column_constraint", "column_constraint : NOT KW_NULL", "column_constraint : REFERENCES simple_table_name column_parens_opt referential_trigger_action", "column_constraint : check_constraint", "column_constraint : UNIQUE", "column_constraint : PRIMARY KEY", "table_constraint_definition : constraint_name_opt table_constraint", "constraint_name_opt : CONSTRAINT symbol_constraint_name", "constraint_name_opt :", "table_constraint : unique_constraint", "table_constraint : primary_constraint", "table_constraint : referential_constraint", "table_constraint : check_constraint", "unique_constraint : UNIQUE column_parens", "primary_constraint : PRIMARY KEY column_parens", "referential_constraint : FOREIGN KEY column_parens REFERENCES simple_table_name column_parens_opt referential_trigger_action", "check_constraint : begin_trigger CHECK '(' search_condition ')' end_trigger", "referential_trigger_action : update_rule", "referential_trigger_action : delete_rule", "referential_trigger_action : delete_rule update_rule", "referential_trigger_action : update_rule delete_rule", "referential_trigger_action :", "update_rule : ON UPDATE referential_action", "delete_rule : ON DELETE referential_action", "referential_action : CASCADE", "referential_action : SET DEFAULT", "referential_action : SET KW_NULL", "referential_action : NO ACTION", "procedure_clause : symbol_procedure_name input_parameters output_parameters AS begin_string var_declaration_list full_proc_block end_trigger", "alter_procedure_clause : symbol_procedure_name input_parameters output_parameters AS begin_string var_declaration_list full_proc_block end_trigger", "input_parameters : '(' proc_parameters ')'", "input_parameters :", "output_parameters : RETURNS input_parameters", "output_parameters :", "proc_parameters : proc_parameter", "proc_parameters : proc_parameters ',' proc_parameter", "proc_parameter : simple_column_def_name non_array_type", "var_declaration_list : var_declarations", "var_declaration_list :", "var_declarations : var_declaration", "var_declarations : var_declarations var_declaration", "var_declaration : DECLARE VARIABLE column_def_name non_array_type ';'", "proc_block : proc_statement", "proc_block : full_proc_block", "full_proc_block : BEGIN proc_statements END", "full_proc_block : BEGIN proc_statements excp_statements END", "proc_statements : proc_block", "proc_statements : proc_statements proc_block", "proc_statement : assignment ';'", "proc_statement : delete ';'", "proc_statement : EXCEPTION symbol_exception_name ';'", "proc_statement : exec_procedure", "proc_statement : for_select", "proc_statement : if_then_else", "proc_statement : insert ';'", "proc_statement : POST_EVENT value ';'", "proc_statement : singleton_select", "proc_statement : update ';'", "proc_statement : while", "proc_statement : SUSPEND ';'", "proc_statement : EXIT ';'", "exec_procedure : EXECUTE PROCEDURE symbol_procedure_name proc_inputs proc_outputs ';'", "for_select : FOR select INTO variable_list cursor_def DO proc_block", "if_then_else : IF '(' search_condition ')' THEN proc_block ELSE proc_block", "if_then_else : IF '(' search_condition ')' THEN proc_block", "singleton_select : select INTO variable_list ';'", "variable : ':' symbol_variable_name", "proc_inputs : var_const_list", "proc_inputs : '(' var_const_list ')'", "proc_inputs :", "proc_outputs : RETURNING_VALUES variable_list", "proc_outputs : RETURNING_VALUES '(' variable_list ')'", "proc_outputs :", "var_const_list : variable", "var_const_list : constant", "var_const_list : column_name", "var_const_list : null_value", "var_const_list : var_const_list ',' variable", "var_const_list : var_const_list ',' constant", "var_const_list : var_const_list ',' column_name", "var_const_list : var_const_list ',' null_value", "variable_list : variable", "variable_list : column_name", "variable_list : variable_list ',' column_name", "variable_list : variable_list ',' variable", "while : WHILE '(' search_condition ')' DO proc_block", "cursor_def : AS CURSOR symbol_cursor_name", "cursor_def :", "excp_statements : excp_statement", "excp_statements : excp_statements excp_statement", "excp_statement : WHEN errors DO proc_block", "errors : err", "errors : errors ',' err", "err : SQLCODE signed_short_integer", "err : GDSCODE symbol_gdscode_name", "err : EXCEPTION symbol_exception_name", "err : ANY", "invoke_procedure : EXECUTE PROCEDURE symbol_procedure_name prc_inputs", "prc_inputs : prm_const_list", "prc_inputs : '(' prm_const_list ')'", "prc_inputs :", "prm_const_list : parameter", "prm_const_list : constant", "prm_const_list : null_value", "prm_const_list : prm_const_list ',' parameter", "prm_const_list : prm_const_list ',' constant", "prm_const_list : prm_const_list ',' null_value", "view_clause : symbol_view_name column_parens_opt AS begin_string union_view check_opt end_string", "union_view : union_view_expr", "union_view_expr : select_view_expr", "union_view_expr : union_view_expr UNION select_view_expr", "union_view_expr : union_view_expr UNION ALL select_view_expr", "select_view_expr : SELECT distinct_clause select_list from_view_clause where_clause group_clause having_clause plan_clause", "from_view_clause : FROM from_view_list", "from_view_list : view_table", "from_view_list : from_view_list ',' view_table", "view_table : joined_view_table", "view_table : table_name", "joined_view_table : view_table join_type JOIN view_table ON search_condition", "joined_view_table : '(' joined_view_table ')'", "begin_string :", "end_string :", "begin_trigger :", "end_trigger :", "check_opt : WITH CHECK OPTION", "check_opt :", "def_trigger_clause : symbol_trigger_name FOR simple_table_name trigger_active trigger_type trigger_position begin_trigger trigger_action end_trigger", "trigger_active : ACTIVE", "trigger_active : INACTIVE", "trigger_active :", "trigger_type : BEFORE INSERT", "trigger_type : AFTER INSERT", "trigger_type : BEFORE UPDATE", "trigger_type : AFTER UPDATE", "trigger_type : BEFORE DELETE", "trigger_type : AFTER DELETE", "trigger_position : POSITION nonneg_short_integer", "trigger_position :", "trigger_action : AS begin_trigger var_declaration_list full_proc_block", "alter : ALTER alter_clause", "alter_clause : EXCEPTION symbol_exception_name sql_string", "alter_clause : TABLE simple_table_name alter_ops", "alter_clause : TRIGGER alter_trigger_clause", "alter_clause : PROCEDURE alter_procedure_clause", "alter_clause : DATABASE init_alter_db alter_db", "alter_clause : DOMAIN alter_column_name alter_domain_ops", "alter_clause : INDEX alter_index_clause", "alter_domain_ops : alter_domain_op", "alter_domain_ops : alter_domain_ops alter_domain_op", "alter_domain_op : SET begin_string default_opt end_trigger", "alter_domain_op : ADD CONSTRAINT domain_check_constraint", "alter_domain_op : ADD domain_check_constraint", "alter_domain_op : DROP DEFAULT", "alter_domain_op : DROP CONSTRAINT", "alter_domain_op : TO simple_column_name", "alter_domain_op : TYPE init_data_type non_array_type", "alter_ops : alter_op", "alter_ops : alter_ops ',' alter_op", "alter_op : DROP simple_column_name drop_behaviour", "alter_op : DROP CONSTRAINT symbol_constraint_name", "alter_op : ADD column_def", "alter_op : ADD table_constraint_definition", "alter_op : col_opt simple_column_name POSITION nonneg_short_integer", "alter_op : col_opt alter_column_name TO simple_column_name", "alter_op : col_opt alter_col_name TYPE alter_data_type_or_domain end_trigger", "alter_column_name : keyword_or_column", "keyword_or_column : COLUMN", "keyword_or_column : TYPE", "keyword_or_column : EXTRACT", "keyword_or_column : YEAR", "keyword_or_column : MONTH", "keyword_or_column : DAY", "keyword_or_column : HOUR", "keyword_or_column : MINUTE", "keyword_or_column : SECOND", "keyword_or_column : WEEKDAY", "keyword_or_column : YEARDAY", "keyword_or_column : TIME", "keyword_or_column : TIMESTAMP", "keyword_or_column : CURRENT_DATE", "keyword_or_column : CURRENT_TIME", "keyword_or_column : CURRENT_TIMESTAMP", "keyword_or_column : SYMBOL", "col_opt : ALTER", "col_opt : ALTER COLUMN", "alter_data_type_or_domain : non_array_type begin_trigger", "alter_data_type_or_domain : simple_column_name begin_string", "alter_col_name : simple_column_name", "drop_behaviour : RESTRICT", "drop_behaviour : CASCADE", "drop_behaviour :", "alter_index_clause : symbol_index_name ACTIVE", "alter_index_clause : symbol_index_name INACTIVE", "init_alter_db :", "alter_db : db_alter_clause", "alter_db : alter_db db_alter_clause", "db_alter_clause : ADD db_file_list", "db_alter_clause : DROP LOGFILE", "db_alter_clause : SET db_log_option_list", "db_alter_clause : ADD db_log", "db_log_option_list : db_log_option", "db_log_option_list : db_log_option_list ',' db_log_option", "alter_trigger_clause : symbol_trigger_name trigger_active new_trigger_type trigger_position begin_trigger new_trigger_action end_trigger", "new_trigger_type : trigger_type", "new_trigger_type :", "new_trigger_action : trigger_action", "new_trigger_action :", "drop : DROP drop_clause", "drop_clause : EXCEPTION symbol_exception_name", "drop_clause : INDEX symbol_index_name", "drop_clause : PROCEDURE symbol_procedure_name", "drop_clause : TABLE symbol_table_name", "drop_clause : TRIGGER symbol_trigger_name", "drop_clause : VIEW symbol_view_name", "drop_clause : FILTER symbol_filter_name", "drop_clause : DOMAIN symbol_domain_name", "drop_clause : EXTERNAL FUNCTION symbol_UDF_name", "drop_clause : SHADOW pos_short_integer", "drop_clause : ROLE symbol_role_name", "data_type : non_array_type", "data_type : array_type", "non_array_type : simple_type", "non_array_type : blob_type", "array_type : non_charset_simple_type '[' array_spec ']'", "array_type : character_type '[' array_spec ']' charset_clause", "array_spec : array_range", "array_spec : array_spec ',' array_range", "array_range : signed_long_integer", "array_range : signed_long_integer ':' signed_long_integer", "simple_type : non_charset_simple_type", "simple_type : character_type charset_clause", "non_charset_simple_type : national_character_type", "non_charset_simple_type : numeric_type", "non_charset_simple_type : float_type", "non_charset_simple_type : integer_keyword", "non_charset_simple_type : SMALLINT", "non_charset_simple_type : DATE", "non_charset_simple_type : TIME", "non_charset_simple_type : TIMESTAMP", "integer_keyword : INTEGER", "integer_keyword : KW_INT", "blob_type : BLOB blob_subtype blob_segsize charset_clause", "blob_type : BLOB '(' unsigned_short_integer ')'", "blob_type : BLOB '(' unsigned_short_integer ',' signed_short_integer ')'", "blob_type : BLOB '(' ',' signed_short_integer ')'", "blob_segsize : SEGMENT SIZE unsigned_short_integer", "blob_segsize :", "blob_subtype : SUB_TYPE signed_short_integer", "blob_subtype : SUB_TYPE symbol_blob_subtype_name", "blob_subtype :", "charset_clause : CHARACTER SET symbol_character_set_name", "charset_clause :", "national_character_type : national_character_keyword '(' pos_short_integer ')'", "national_character_type : national_character_keyword", "national_character_type : national_character_keyword VARYING '(' pos_short_integer ')'", "character_type : character_keyword '(' pos_short_integer ')'", "character_type : character_keyword", "character_type : varying_keyword '(' pos_short_integer ')'", "varying_keyword : VARCHAR", "varying_keyword : CHARACTER VARYING", "varying_keyword : KW_CHAR VARYING", "character_keyword : CHARACTER", "character_keyword : KW_CHAR", "national_character_keyword : NCHAR", "national_character_keyword : NATIONAL CHARACTER", "national_character_keyword : NATIONAL KW_CHAR", "numeric_type : KW_NUMERIC prec_scale", "numeric_type : decimal_keyword prec_scale", "ordinal : pos_short_integer", "prec_scale :", "prec_scale : '(' signed_long_integer ')'", "prec_scale : '(' signed_long_integer ',' signed_long_integer ')'", "decimal_keyword : DECIMAL", "decimal_keyword : KW_DEC", "float_type : KW_FLOAT precision_opt", "float_type : KW_LONG KW_FLOAT precision_opt", "float_type : REAL", "float_type : KW_DOUBLE PRECISION", "precision_opt : '(' nonneg_short_integer ')'", "precision_opt :", "set : set_transaction", "set : set_generator", "set : set_statistics", "set_generator : SET GENERATOR symbol_generator_name TO signed_long_integer", "set_generator : SET GENERATOR symbol_generator_name TO NUMBER64BIT", "set_generator : SET GENERATOR symbol_generator_name TO '-' NUMBER64BIT", "commit : COMMIT optional_work optional_retain", "rollback : ROLLBACK optional_work", "optional_work : WORK", "optional_work :", "optional_retain : RETAIN opt_snapshot", "optional_retain :", "opt_snapshot : SNAPSHOT", "opt_snapshot :", "set_transaction : SET TRANSACTION tran_opt_list_m", "tran_opt_list_m : tran_opt_list", "tran_opt_list_m :", "tran_opt_list : tran_opt", "tran_opt_list : tran_opt_list tran_opt", "tran_opt : access_mode", "tran_opt : lock_wait", "tran_opt : isolation_mode", "tran_opt : tbl_reserve_options", "access_mode : READ ONLY", "access_mode : READ WRITE", "lock_wait : WAIT", "lock_wait : NO WAIT", "isolation_mode : ISOLATION LEVEL iso_mode", "isolation_mode : iso_mode", "iso_mode : snap_shot", "iso_mode : READ UNCOMMITTED version_mode", "iso_mode : READ COMMITTED version_mode", "snap_shot : SNAPSHOT", "snap_shot : SNAPSHOT TABLE", "snap_shot : SNAPSHOT TABLE STABILITY", "version_mode : VERSION", "version_mode : NO VERSION", "version_mode :", "tbl_reserve_options : RESERVING restr_list", "lock_type : SHARED", "lock_type : PROTECTED", "lock_type :", "lock_mode : READ", "lock_mode : WRITE", "restr_list : restr_option", "restr_list : restr_list ',' restr_option", "restr_option : table_list table_lock", "table_lock : FOR lock_type lock_mode", "table_lock :", "table_list : simple_table_name", "table_list : table_list ',' simple_table_name", "set_statistics : SET STATISTICS INDEX symbol_index_name", "select : union_expr order_clause for_update_clause", "union_expr : select_expr", "union_expr : union_expr UNION select_expr", "union_expr : union_expr UNION ALL select_expr", "order_clause : ORDER BY order_list", "order_clause :", "order_list : order_item", "order_list : order_list ',' order_item", "order_item : column_name collate_clause order_direction", "order_item : ordinal collate_clause order_direction", "order_direction : ASC", "order_direction : DESC", "order_direction :", "for_update_clause : FOR UPDATE for_update_list", "for_update_clause :", "for_update_list : OF column_list", "for_update_list :", "select_expr : SELECT distinct_clause select_list from_clause where_clause group_clause having_clause limit_clause plan_clause", "distinct_clause : DISTINCT", "distinct_clause : all_noise", "select_list : select_items", "select_list : '*'", "select_items : select_item", "select_items : select_items ',' select_item", "select_item : rhs", "select_item : rhs symbol_item_alias_name", "select_item : rhs AS symbol_item_alias_name", "from_clause : FROM from_list", "from_list : table_reference", "from_list : from_list ',' table_reference", "table_reference : joined_table", "table_reference : table_proc", "joined_table : table_reference join_type JOIN table_reference ON search_condition", "joined_table : '(' joined_table ')'", "table_proc : symbol_procedure_name proc_table_inputs symbol_table_alias_name", "table_proc : symbol_procedure_name proc_table_inputs", "proc_table_inputs : '(' null_or_value_list ')'", "proc_table_inputs :", "null_or_value_list : null_or_value", "null_or_value_list : null_or_value_list ',' null_or_value", "null_or_value : null_value", "null_or_value : value", "table_name : simple_table_name", "table_name : symbol_table_name symbol_table_alias_name", "simple_table_name : symbol_table_name", "join_type : INNER", "join_type : LEFT", "join_type : LEFT OUTER", "join_type : RIGHT", "join_type : RIGHT OUTER", "join_type : FULL", "join_type : FULL OUTER", "join_type :", "group_clause : GROUP BY grp_column_list", "group_clause :", "grp_column_list : grp_column_elem", "grp_column_list : grp_column_list ',' grp_column_elem", "grp_column_elem : column_name", "grp_column_elem : udf", "grp_column_elem : column_name COLLATE symbol_collation_name", "having_clause : HAVING search_condition", "having_clause :", "where_clause : WHERE search_condition", "where_clause :", "limit_clause : LIMIT limit_range", "limit_clause :", "limit_range : '(' long_integer ')'", "limit_range : '(' long_integer ':' long_integer ')'", "limit_range :", "plan_clause : PLAN plan_expression", "plan_clause :", "plan_expression : plan_type '(' plan_item_list ')'", "plan_type : JOIN", "plan_type : SORT MERGE", "plan_type : MERGE", "plan_type : SORT", "plan_type :", "plan_item_list : plan_item", "plan_item_list : plan_item ',' plan_item_list", "plan_item : table_or_alias_list access_type", "plan_item : plan_expression", "table_or_alias_list : symbol_table_name", "table_or_alias_list : symbol_table_name table_or_alias_list", "access_type : NATURAL", "access_type : INDEX '(' index_list ')'", "access_type : ORDER symbol_index_name", "index_list : symbol_index_name", "index_list : symbol_index_name ',' index_list", "insert : INSERT INTO simple_table_name column_parens_opt VALUES '(' insert_value_list ')'", "insert : INSERT INTO simple_table_name column_parens_opt select_expr", "insert_value_list : rhs", "insert_value_list : insert_value_list ',' rhs", "delete : delete_searched", "delete : delete_positioned", "delete_searched : DELETE FROM table_name where_clause", "delete_positioned : DELETE FROM table_name cursor_clause", "cursor_clause : WHERE CURRENT OF symbol_cursor_name", "update : update_searched", "update : update_positioned", "update_searched : UPDATE table_name SET assignments where_clause", "update_positioned : UPDATE table_name SET assignments cursor_clause", "assignments : assignment", "assignments : assignments ',' assignment", "assignment : column_name '=' rhs", "rhs : value", "rhs : null_value", "blob : READ BLOB simple_column_name FROM simple_table_name filter_clause segment_clause", "blob : INSERT BLOB simple_column_name INTO simple_table_name filter_clause segment_clause", "filter_clause : FILTER FROM blob_subtype_value TO blob_subtype_value", "filter_clause : FILTER TO blob_subtype_value", "filter_clause :", "blob_subtype_value : blob_subtype", "blob_subtype_value : parameter", "blob_subtype : signed_short_integer", "segment_clause : MAX_SEGMENT segment_length", "segment_clause :", "segment_length : unsigned_short_integer", "segment_length : parameter", "column_parens_opt : column_parens", "column_parens_opt :", "column_parens : '(' column_list ')'", "column_list : column_name", "column_list : column_list ',' column_name", "column_name : simple_column_name", "column_name : symbol_table_alias_name '.' symbol_column_name", "column_name : symbol_table_alias_name '.' '*'", "simple_column_name : symbol_column_name", "search_condition : predicate", "search_condition : search_condition OR search_condition", "search_condition : search_condition AND search_condition", "search_condition : NOT search_condition", "predicate : comparison_predicate", "predicate : between_predicate", "predicate : like_predicate", "predicate : in_predicate", "predicate : null_predicate", "predicate : quantified_predicate", "predicate : exists_predicate", "predicate : containing_predicate", "predicate : starting_predicate", "predicate : unique_predicate", "predicate : '(' search_condition ')'", "comparison_predicate : value '=' value", "comparison_predicate : value '<' value", "comparison_predicate : value '>' value", "comparison_predicate : value GEQ value", "comparison_predicate : value LEQ value", "comparison_predicate : value NOT_GTR value", "comparison_predicate : value NOT_LSS value", "comparison_predicate : value NEQ value", "quantified_predicate : value '=' ALL '(' column_select ')'", "quantified_predicate : value '<' ALL '(' column_select ')'", "quantified_predicate : value '>' ALL '(' column_select ')'", "quantified_predicate : value GEQ ALL '(' column_select ')'", "quantified_predicate : value LEQ ALL '(' column_select ')'", "quantified_predicate : value NOT_GTR ALL '(' column_select ')'", "quantified_predicate : value NOT_LSS ALL '(' column_select ')'", "quantified_predicate : value NEQ ALL '(' column_select ')'", "quantified_predicate : value '=' some '(' column_select ')'", "quantified_predicate : value '<' some '(' column_select ')'", "quantified_predicate : value '>' some '(' column_select ')'", "quantified_predicate : value GEQ some '(' column_select ')'", "quantified_predicate : value LEQ some '(' column_select ')'", "quantified_predicate : value NOT_GTR some '(' column_select ')'", "quantified_predicate : value NOT_LSS some '(' column_select ')'", "quantified_predicate : value NEQ some '(' column_select ')'", "some : SOME", "some : ANY", "between_predicate : value BETWEEN value AND value", "between_predicate : value NOT BETWEEN value AND value", "like_predicate : value LIKE value", "like_predicate : value NOT LIKE value", "like_predicate : value LIKE value ESCAPE value", "like_predicate : value NOT LIKE value ESCAPE value", "in_predicate : value IN scalar_set", "in_predicate : value NOT IN scalar_set", "containing_predicate : value CONTAINING value", "containing_predicate : value NOT CONTAINING value", "starting_predicate : value STARTING value", "starting_predicate : value NOT STARTING value", "starting_predicate : value STARTING WITH value", "starting_predicate : value NOT STARTING WITH value", "exists_predicate : EXISTS '(' select_expr ')'", "unique_predicate : SINGULAR '(' select_expr ')'", "null_predicate : value IS KW_NULL", "null_predicate : value IS NOT KW_NULL", "scalar_set : '(' constant_list ')'", "scalar_set : '(' column_select ')'", "column_select : SELECT distinct_clause value from_clause where_clause group_clause having_clause plan_clause", "column_singleton : SELECT distinct_clause value from_clause where_clause group_clause having_clause plan_clause", "value : column_name", "value : array_element", "value : function", "value : u_constant", "value : parameter", "value : variable", "value : udf", "value : '-' value", "value : '+' value", "value : value '+' value", "value : value CONCATENATE value", "value : value COLLATE symbol_collation_name", "value : value '-' value", "value : value '*' value", "value : value '/' value", "value : '(' value ')'", "value : '(' column_singleton ')'", "value : USER", "value : DB_KEY", "value : symbol_table_alias_name '.' DB_KEY", "value : KW_VALUE", "value : datetime_value_expression", "datetime_value_expression : CURRENT_DATE", "datetime_value_expression : CURRENT_TIME", "datetime_value_expression : CURRENT_TIMESTAMP", "array_element : column_name '[' value_list ']'", "value_list : value", "value_list : value_list ',' value", "constant : u_constant", "constant : '-' u_numeric_constant", "u_numeric_constant : NUMERIC", "u_numeric_constant : NUMBER", "u_numeric_constant : FLOAT", "u_numeric_constant : NUMBER64BIT", "u_numeric_constant : SCALEDINT", "u_constant : u_numeric_constant", "u_constant : sql_string", "u_constant : DATE STRING", "u_constant : TIME STRING", "u_constant : TIMESTAMP STRING", "constant_list : constant", "constant_list : parameter", "constant_list : current_user", "constant_list : constant_list ',' constant", "constant_list : constant_list ',' parameter", "constant_list : constant_list ',' current_user", "parameter : '?'", "current_user : USER", "sql_string : STRING", "sql_string : INTRODUCER STRING", "signed_short_integer : nonneg_short_integer", "signed_short_integer : '-' neg_short_integer", "nonneg_short_integer : NUMBER", "neg_short_integer : NUMBER", "pos_short_integer : nonneg_short_integer", "unsigned_short_integer : NUMBER", "signed_long_integer : long_integer", "signed_long_integer : '-' long_integer", "long_integer : NUMBER", "function : COUNT '(' '*' ')'", "function : COUNT '(' all_noise value ')'", "function : COUNT '(' DISTINCT value ')'", "function : SUM '(' all_noise value ')'", "function : SUM '(' DISTINCT value ')'", "function : AVG '(' all_noise value ')'", "function : AVG '(' DISTINCT value ')'", "function : MINIMUM '(' all_noise value ')'", "function : MINIMUM '(' DISTINCT value ')'", "function : MAXIMUM '(' all_noise value ')'", "function : MAXIMUM '(' DISTINCT value ')'", "function : CAST '(' rhs AS data_type_descriptor ')'", "function : KW_UPPER '(' value ')'", "function : GEN_ID '(' symbol_generator_name ',' value ')'", "function : EXTRACT '(' timestamp_part FROM value ')'", "udf : symbol_UDF_name '(' value_list ')'", "udf : symbol_UDF_name '(' ')'", "timestamp_part : YEAR", "timestamp_part : MONTH", "timestamp_part : DAY", "timestamp_part : HOUR", "timestamp_part : MINUTE", "timestamp_part : SECOND", "timestamp_part : WEEKDAY", "timestamp_part : YEARDAY", "all_noise : ALL", "all_noise :", "null_value : KW_NULL", "symbol_UDF_name : SYMBOL", "symbol_blob_subtype_name : SYMBOL", "symbol_character_set_name : SYMBOL", "symbol_collation_name : SYMBOL", "symbol_column_name : SYMBOL", "symbol_constraint_name : SYMBOL", "symbol_cursor_name : SYMBOL", "symbol_domain_name : SYMBOL", "symbol_exception_name : SYMBOL", "symbol_filter_name : SYMBOL", "symbol_gdscode_name : SYMBOL", "symbol_generator_name : SYMBOL", "symbol_index_name : SYMBOL", "symbol_item_alias_name : SYMBOL", "symbol_procedure_name : SYMBOL", "symbol_role_name : SYMBOL", "symbol_table_alias_name : SYMBOL", "symbol_table_name : SYMBOL", "symbol_trigger_name : SYMBOL", "symbol_user_name : SYMBOL", "symbol_variable_name : SYMBOL", "symbol_view_name : SYMBOL", }; #endif #ifndef YYSTYPE typedef int YYSTYPE; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 500 #define YYMAXDEPTH 500 #endif #endif static int yydebug; static int yynerrs; #ifndef SHLIB_DEFS int DSQL_yyerrflag; #endif #ifndef SHLIB_DEFS int DSQL_yychar; #endif short *DSQL_DSQL_yyssp; static YYSTYPE *yyvsp; static YYSTYPE yyval; static YYSTYPE yylval; static short DSQL_yyss[YYSTACKSIZE]; static YYSTYPE yyvs[YYSTACKSIZE]; #define yystacksize YYSTACKSIZE /* * PROGRAM: Dynamic SQL runtime support * MODULE: lex.c * DESCRIPTION: Lexical routine * */ #include "../dsql/chars.h" #define MAX_TOKEN_LEN 256 #define CHECK_BOUND(to)\ {\ if ((to - string) >= MAX_TOKEN_LEN) \ yyabandon (-104, isc_token_too_long); \ } #define CHECK_COPY_INCR(to,ch){CHECK_BOUND(to); *to++=ch;} static TEXT *lex_position (void); static BOOLEAN long_int (NOD, SLONG *); static FLD make_field (NOD); static FIL make_file (void); static NOD make_list (NOD); static NOD make_node (NOD_TYPE, int, ...); static NOD make_flag_node (NOD_TYPE, SSHORT, int, ...); static BOOLEAN short_int (NOD, SLONG *, SSHORT); static void stack_nodes (NOD, LLS *); static int yylex (USHORT, USHORT, USHORT, BOOLEAN *); static void yyerror (TEXT *); static void yyabandon (SSHORT, STATUS); #ifndef WINDOWS_ONLY static void check_log_file_attrs (void); #endif static TEXT *ptr, *end, *last_token, *line_start; static SSHORT lines, att_charset; typedef struct tok { USHORT tok_ident; CONST SCHAR *tok_string; CONST USHORT tok_version; } TOK; static CONST TOK tokens [] = { #include "../dsql/keywords.h" {0, 0, 0} }; void LEX_dsql_init (void) { /************************************** * * L E X _ d s q l _ i n i t * ************************************** * * Functional description * Initialize LEX for processing. This is called only once * per session. * **************************************/ CONST TOK *token; for (token = tokens; token->tok_string; ++token) { SYM symbol; STR str; symbol = (SYM) ALLOCPV (type_sym, 0); symbol->sym_string = (TEXT *) token->tok_string; symbol->sym_length = strlen (token->tok_string); symbol->sym_type = SYM_keyword; symbol->sym_keyword = token->tok_ident; symbol->sym_version = token->tok_version; str = (STR) ALLOCPV (type_str, symbol->sym_length); str->str_length = symbol->sym_length; strncpy ((char*)str->str_data, (char*)symbol->sym_string, symbol->sym_length); symbol->sym_object = (void *) str; HSHD_insert (symbol); } } void LEX_string ( TEXT *string, USHORT length, SSHORT character_set) { /************************************** * * L E X _ s t r i n g * ************************************** * * Functional description * Initialize LEX to process a string. * **************************************/ line_start = ptr = string; end = string + length; lines = 1; att_charset = character_set; } #ifndef WINDOWS_ONLY static void check_log_file_attrs (void) { /********************************************** * * c h e c k _ l o g _ f i l e _ a t t r s * ********************************************** * * Functional description * Check if log file attributes are valid * *********************************************/ if (file->fil_partitions) { if (!file->fil_length) { yyabandon (-261, isc_log_length_spec); /* Total length of a partitioned log must be specified */ } if (PARTITION_SIZE (OneK*file->fil_length,file->fil_partitions) < (OneK*MIN_LOG_LENGTH)) { yyabandon (-239, isc_partition_too_small); /* Log partition size too small */ } } else { if ((file->fil_length) && (file->fil_length < MIN_LOG_LENGTH)) { yyabandon (-239, isc_log_too_small); /* Log size too small */ } } } #endif static TEXT *lex_position (void) { /************************************** * * l e x _ p o s i t i o n * ************************************** * * Functional description * Return the current position of LEX * in the input string. * **************************************/ return ptr; } static BOOLEAN long_int ( NOD string, SLONG *long_value) { /************************************* * * l o n g _ i n t * ************************************* * * Functional description * checks for all digits in the * number and return an atol(). * *************************************/ UCHAR *p; for (p = ((STR) string)->str_data; classes [*p] & CHR_DIGIT; p++) if (!(classes [*p] & CHR_DIGIT)) return FALSE; *long_value = atol ((char *)((STR) string)->str_data); return TRUE; } static FLD make_field ( NOD field_name) { /************************************** * * m a k e _ f i e l d * ************************************** * * Functional description * Make a field block of given name. * **************************************/ FLD field; STR string; TSQL tdsql; tdsql = GET_THREAD_DATA; if (field_name == NULL) { field = (FLD) ALLOCDV (type_fld, sizeof (INTERNAL_FIELD_NAME)); strcpy (field->fld_name, (TEXT*) INTERNAL_FIELD_NAME); return field; } string = (STR) field_name->nod_arg [1]; field = (FLD) ALLOCDV (type_fld, strlen ((SCHAR*) string->str_data)); strcpy (field->fld_name, (TEXT*) string->str_data); return field; } static FIL make_file (void) { /************************************** * * m a k e _ f i l e * ************************************** * * Functional description * Make a file block * **************************************/ FIL temp_file; TSQL tdsql; tdsql = GET_THREAD_DATA; temp_file = (FIL) ALLOCD (type_fil); return temp_file; } static NOD make_list ( NOD node) { /************************************** * * m a k e _ l i s t * ************************************** * * Functional description * Collapse nested list nodes into single list. * **************************************/ NOD *ptr; LLS stack, temp; USHORT l; NOD old; TSQL tdsql; tdsql = GET_THREAD_DATA; if (!node) return node; stack = 0; stack_nodes (node, &stack); for (l = 0, temp = stack; temp; temp = temp->lls_next) l++; old = node; node = (NOD) ALLOCDV (type_nod, l); node->nod_count = l; node->nod_type = nod_list; node->nod_flags = old->nod_flags; ptr = node->nod_arg + node->nod_count; while (stack) *--ptr = (NOD) LLS_POP (&stack); return node; } static NOD make_node ( NOD_TYPE type, int count, ...) { /************************************** * * m a k e _ n o d e * ************************************** * * Functional description * Make a node of given type. * Any change should also be made to function below * **************************************/ NOD node, *p; va_list ptr; TSQL tdsql; tdsql = GET_THREAD_DATA; node = (NOD) ALLOCDV (type_nod, count); node->nod_type = type; node->nod_count = count; p = node->nod_arg; VA_START (ptr, count); while (--count >= 0) *p++ = va_arg (ptr, NOD); return node; } static NOD make_flag_node ( NOD_TYPE type, SSHORT flag, int count, ...) { /************************************** * * m a k e _ f l a g _ n o d e * ************************************** * * Functional description * Make a node of given type. Set flag field * **************************************/ NOD node, *p; va_list ptr; TSQL tdsql; tdsql = GET_THREAD_DATA; node = (NOD) ALLOCDV (type_nod, count); node->nod_type = type; node->nod_flags = flag; node->nod_count = count; p = node->nod_arg; VA_START (ptr, count); while (--count >= 0) *p++ = va_arg (ptr, NOD); return node; } static BOOLEAN short_int ( NOD string, SLONG *long_value, SSHORT range) { /************************************* * * s h o r t _ i n t * ************************************* * * Functional description * is the string a valid representation * of a positive short int? * *************************************/ UCHAR *p; SCHAR buf [10]; BOOLEAN return_value; if (((STR) string)->str_length > 5) return FALSE; for (p = ((STR) string)->str_data; classes [*p] & CHR_DIGIT; p++) if (!(classes [*p] & CHR_DIGIT)) return FALSE; /* there are 5 or fewer digits, it's value may still be greater * than 32767... */ buf [0] = ((STR) string)->str_data[0]; buf [1] = ((STR) string)->str_data[1]; buf [2] = ((STR) string)->str_data[2]; buf [3] = ((STR) string)->str_data[3]; buf [4] = ((STR) string)->str_data[4]; buf [5] = '\0'; *long_value = atoi (buf); switch (range) { case POSITIVE: return_value = *long_value > SHRT_POS_MAX; break; case NEGATIVE: return_value = *long_value > SHRT_NEG_MAX; break; case UNSIGNED: return_value = *long_value > SHRT_UNSIGNED_MAX; break; } return !return_value; } static void stack_nodes ( NOD node, LLS *stack) { /************************************** * * s t a c k _ n o d e s * ************************************** * * Functional description * Assist in turning a tree of misc nodes into a clean list. * **************************************/ NOD *ptr, *end; NOD curr_node, next_node, start_chain, end_chain, save_link; if (node->nod_type != nod_list) { LLS_PUSH (node, stack); return; } /* To take care of cases where long lists of nodes are in a chain of list nodes with exactly one entry, this algorithm will look for a pattern of repeated list nodes with two entries, the first being a list node and the second being a non-list node. Such a list will be reverse linked, and then re-reversed, stacking the non-list nodes in the process. The purpose of this is to avoid massive recursion of this function. */ start_chain = node; end_chain = (NOD) NULL; curr_node = node; next_node = node->nod_arg[0]; while ( curr_node->nod_count == 2 && curr_node->nod_arg[0]->nod_type == nod_list && curr_node->nod_arg[1]->nod_type != nod_list && next_node->nod_arg[0]->nod_type == nod_list && next_node->nod_arg[1]->nod_type != nod_list) { /* pattern was found so reverse the links and go to next node */ save_link = next_node->nod_arg[0]; next_node->nod_arg[0] = curr_node; curr_node = next_node; next_node = save_link; end_chain = curr_node; } /* see if any chain was found */ if ( end_chain) { /* first, handle the rest of the nodes */ /* note that next_node still points to the first non-pattern node */ stack_nodes( next_node, stack); /* stack the non-list nodes and reverse the chain on the way back */ curr_node = end_chain; while ( TRUE) { LLS_PUSH( curr_node->nod_arg[1], stack); if ( curr_node == start_chain) break; save_link = curr_node->nod_arg[0]; curr_node->nod_arg[0] = next_node; next_node = curr_node; curr_node = save_link; } return; } for (ptr = node->nod_arg, end = ptr + node->nod_count; ptr < end; ptr++) stack_nodes (*ptr, stack); } static int yylex ( USHORT client_dialect, USHORT db_dialect, USHORT parser_version, BOOLEAN *stmt_ambiguous) { /************************************** * * y y l e x * ************************************** * * Functional description * **************************************/ UCHAR *p, tok_class, string [MAX_TOKEN_LEN], *buffer, *buffer_end, *new_buffer; SYM sym; SSHORT c; USHORT buffer_len; STR delimited_id_str; /* Find end of white space and skip comments */ for (;;) { if (ptr >= end) return -1; c = *ptr++; if (c == '\n') { lines++; line_start = ptr + 1; } if ((c == '/') && (*ptr == '*')) { ptr++; while (ptr < end) { if ((c = *ptr++) == '*') { if (*ptr == '/') break; } if (c == '\n') { lines++; line_start = ptr + 1; } } if (ptr >= end) return -1; ptr++; continue; } #if (! ( defined JPN_SJIS || defined JPN_EUC) ) tok_class = classes [c]; #else c = c & 0xff; tok_class = (JPN1_CHAR(c) ? CHR_LETTER : classes[c]); #endif /*JPN_SJIS || JPN_EUC */ if (!(tok_class & CHR_WHITE)) break; } /* Depending on tok_class of token, parse token */ last_token = ptr - 1; if (tok_class & CHR_INTRODUCER) { /* The Introducer (_) is skipped, all other idents are copied * to become the name of the character set */ p = string; for (; ptr < end && classes [*ptr] & CHR_IDENT; ptr++) { if (ptr >= end) return -1; CHECK_COPY_INCR(p, UPPER7(*ptr)); } CHECK_BOUND(p); *p = 0; /* make a string value to hold the name, the name * is resolved in pass1_constant */ yylval = (NOD) (MAKE_string (string, p - string))->str_data; return INTRODUCER; } /* parse a quoted string, being sure to look for double quotes */ if (tok_class & CHR_QUOTE) { buffer = string; buffer_len = sizeof (string); buffer_end = buffer + buffer_len - 1; for (p = buffer; ; p++) { if (ptr >= end) { if (buffer != string) gds__free (buffer); return -1; } /* *ptr is quote - if next != quote we're at the end */ if ((*ptr == c) && ((++ptr == end) || (*ptr != c))) break; if (p > buffer_end) { new_buffer = (UCHAR *) gds__alloc (2 * buffer_len); /* FREE: at outer block */ if (!new_buffer) /* NOMEM: */ { if (buffer != string) gds__free (buffer); return -1; } memcpy (new_buffer, buffer, buffer_len); if (buffer != string) gds__free (buffer); buffer = new_buffer; p = buffer + buffer_len; buffer_len = 2 * buffer_len; buffer_end = buffer + buffer_len - 1; } *p = *ptr++; } if (c == '"') { *stmt_ambiguous = TRUE; /* string delimited by double quotes could be ** either a string constant or a SQL delimited ** identifier, therefore marks the SQL ** statement as ambiguous */ if (client_dialect == SQL_DIALECT_V6_TRANSITION) { if (buffer != string) gds__free (buffer); yyabandon (-104, isc_invalid_string_constant); } else if (client_dialect >= SQL_DIALECT_V6) { if ((p - buffer) >= MAX_TOKEN_LEN) { if (buffer != string) gds__free (buffer); yyabandon (-104, isc_token_too_long); } yylval = (NOD) MAKE_string (buffer, p - buffer); delimited_id_str = (STR) yylval; delimited_id_str->str_flags |= STR_delimited_id; if (buffer != string) gds__free (buffer); return SYMBOL; } } yylval = (NOD) MAKE_string (buffer, p - buffer); if (buffer != string) gds__free (buffer); return STRING; } /* * Check for a numeric constant, which starts either with a digit or with * a decimal point followed by a digit. * * This code recognizes the following token types: * * NUMBER: string of digits which fits into a 32-bit integer * * NUMBER64BIT: string of digits whose value might fit into an SINT64, * depending on whether or not there is a preceding '-', which is to * say that "9223372036854775808" is accepted here. * * SCALEDINT: string of digits and a single '.', where the digits * represent a value which might fit into an SINT64, depending on * whether or not there is a preceding '-'. * * FLOAT: string of digits with an optional '.', and followed by an "e" * or "E" and an optionally-signed exponent. * * NOTE: we swallow leading or trailing blanks, but we do NOT accept * embedded blanks: * * Another note: c is the first character which need to be considered, * ptr points to the next character. */ assert(ptr <= end); if ((tok_class & CHR_DIGIT) || ((c == '.') && (ptr < end) && (classes [*ptr] & CHR_DIGIT))) { /* The following variables are used to recognize kinds of numbers. */ BOOLEAN have_error = FALSE; /* syntax error or value too large */ BOOLEAN have_digit = FALSE; /* we've seen a digit */ BOOLEAN have_decimal = FALSE; /* we've seen a '.' */ BOOLEAN have_exp = FALSE; /* digit ... [eE] */ BOOLEAN have_exp_sign = FALSE; /* digit ... [eE] {+-] */ BOOLEAN have_exp_digit = FALSE; /* digit ... [eE] ... digit */ UINT64 number = 0; UINT64 limit_by_10 = MAX_SINT64 / 10; for (--ptr ; ptr < end ; ptr++) { c = *ptr; if (have_exp_digit && (! (classes [c] & CHR_DIGIT))) /* First non-digit after exponent and digit terminates the token. */ break; else if (have_exp_sign && (! (classes [c] & CHR_DIGIT))) { /* only digits can be accepted after "1E-" */ have_error = TRUE; break; } else if (have_exp) { /* We've seen e or E, but nothing beyond that. */ if ( ('-' == c) || ('+' == c) ) have_exp_sign = TRUE; else if ( classes [c] & CHR_DIGIT ) /* We have a digit: we haven't seen a sign yet, but it's too late now. */ have_exp_digit = have_exp_sign = TRUE; else { /* end of the token */ have_error = TRUE; break; } } else if ('.' == c) { if (!have_decimal) have_decimal = TRUE; else { have_error = TRUE; break; } } else if (classes [c] & CHR_DIGIT) { /* Before computing the next value, make sure there will be no overflow. */ have_digit = TRUE; if (number >= limit_by_10) /* possibility of an overflow */ if ((number > limit_by_10) || (c > '8')) { have_error = TRUE; break; } number = number * 10 + (c - '0'); } else if ( (('E' == c) || ('e' == c)) && have_digit ) have_exp = TRUE; else /* Unexpected character: this is the end of the number. */ break; } /* We're done scanning the characters: now return the right kind of number token, if any fits the bill. */ if (!have_error) { assert(have_digit); if (have_exp_digit) { yylval = (NOD) MAKE_string ((UCHAR *) last_token, ptr - last_token); return FLOAT; } else if (!have_exp) { /* We should return some kind (scaled-) integer type except perhaps in dialect 1. */ if (!have_decimal && (number <= MAX_SLONG)) { yylval = (NOD) number; return NUMBER; } else { /* We have either a decimal point with no exponent or a string of digits whose value exceeds MAX_SLONG: the returned type depends on the client dialect, so warn of the difference if the client dialect is SQL_DIALECT_V6_TRANSITION. */ if (SQL_DIALECT_V6_TRANSITION == client_dialect) { /* Issue a warning about the ambiguity of the numeric * numeric literal. There are multiple calls because * the message text exceeds the 119-character limit * of our message database. */ ERRD_post_warning( isc_dsql_warning_number_ambiguous, gds_arg_string, ERR_string( last_token, ptr - last_token ), gds_arg_end ); ERRD_post_warning( isc_dsql_warning_number_ambiguous1, gds_arg_end ); } yylval = (NOD) MAKE_string ((UCHAR *) last_token, ptr - last_token); if (client_dialect < SQL_DIALECT_V6_TRANSITION) return FLOAT; else if (have_decimal) return SCALEDINT; else return NUMBER64BIT; } } /* else if (!have_exp) */ } /* if (!have_error) */ /* we got some kind of error or overflow, so don't recognize this * as a number: just pass it through to the next part of the lexer. */ } /* Restore the status quo ante, before we started our unsuccessful attempt to recognize a number. */ ptr = last_token; c = *ptr++; /* We never touched tok_class, so it doesn't need to be restored. */ /* end of number-recognition code */ if (tok_class & CHR_LETTER) { #if (! ( defined JPN_SJIS || defined JPN_EUC) ) p = string; CHECK_COPY_INCR(p,UPPER (c)); for (; ptr < end && classes [*ptr] & CHR_IDENT; ptr++) { if (ptr >= end) return -1; CHECK_COPY_INCR(p, UPPER (*ptr)); } #else for (; ptr <= end ; c = *ptr++ , c = c & 0xff) { if (KANJI1(c)) { CHECK_COPY_INCR(p, UPPER (c)); if (ptr >= end) break; c = *ptr++; c = c & 0xff; if (!KANJI2(c)) { ptr--; break; } else CHECK_COPY_INCR(p,c); } else { #ifdef JPN_SJIS if ((SJIS_SINGLE(c)) || (classes[c] & CHR_IDENT) ) #else if (classes[c] & CHR_IDENT) #endif { CHECK_COPY_INCR(p, UPPER(c)); if (ptr >= end) break; } else { ptr--; break; } } } #endif /* JPN_SJIS || JPN_EUC */ CHECK_BOUND(p); *p = 0; sym = HSHD_lookup (NULL_PTR, (TEXT *) string, (SSHORT)(p - string), SYM_keyword, parser_version); if (sym) { yylval = (NOD) sym->sym_object; return sym->sym_keyword; }; yylval = (NOD) MAKE_string (string, p - string); return SYMBOL; } /* Must be punctuation -- test for double character punctuation */ if (last_token + 1 < end) { sym = HSHD_lookup (NULL_PTR, last_token, (SSHORT) 2, SYM_keyword, (USHORT) parser_version); if (sym) { ++ptr; return sym->sym_keyword; } } /* Single character punctuation are simply passed on */ return c; } static void yyerror ( TEXT *error_string) { /************************************** * * y y e r r o r * ************************************** * * Functional description * Print a syntax error. * **************************************/ if (DSQL_yychar < 1) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, gds_command_end_err, /* Unexpected end of command */ 0); else { ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, gds_dsql_token_unk_err, gds_arg_number, (SLONG) lines, gds_arg_number, (SLONG) (last_token - line_start), /* Token unknown - line %d, char %d */ gds_arg_gds, gds_random, gds_arg_cstring, (int) (ptr - last_token), last_token, 0); } } static void yyabandon ( SSHORT sql_code, STATUS error_symbol) { /************************************** * * y y a b a n d o n * ************************************** * * Functional description * Abandon the parsing outputting the supplied string * **************************************/ ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) sql_code, gds_arg_gds, error_symbol, 0); } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int dsql_yyparse(USHORT client_dialect, USHORT db_dialect, USHORT parser_version, BOOLEAN *stmt_ambiguous) { register int yym, yyn, yystate; #if YYDEBUG register char *yys; extern char *getenv(); if (yys = getenv("YYDEBUG")) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; DSQL_yyerrflag = 0; DSQL_yychar = (-1); DSQL_DSQL_yyssp = DSQL_yyss; yyvsp = yyvs; *DSQL_DSQL_yyssp = yystate = 0; yyloop: if (yyn = yydefred[yystate]) goto yyreduce; if (DSQL_yychar < 0) { if ((DSQL_yychar = yylex(client_dialect, db_dialect, parser_version, stmt_ambiguous)) < 0) DSQL_yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (DSQL_yychar <= YYMAXTOKEN) yys = yyname[DSQL_yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, DSQL_yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += DSQL_yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == DSQL_yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (DSQL_DSQL_yyssp >= DSQL_yyss + yystacksize - 1) { goto yyoverflow; } *++DSQL_DSQL_yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; DSQL_yychar = (-1); if (DSQL_yyerrflag > 0) --DSQL_yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += DSQL_yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == DSQL_yychar) { yyn = yytable[yyn]; goto yyreduce; } if (DSQL_yyerrflag) goto yyinrecovery; #ifdef lint goto yynewerror; #endif yynewerror: yyerror("syntax error"); #ifdef lint goto yyerrlab; #endif yyerrlab: ++yynerrs; yyinrecovery: if (DSQL_yyerrflag < 3) { DSQL_yyerrflag = 3; for (;;) { if ((yyn = yysindex[*DSQL_DSQL_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, *DSQL_DSQL_yyssp, yytable[yyn]); #endif if (DSQL_DSQL_yyssp >= DSQL_yyss + yystacksize - 1) { goto yyoverflow; } *++DSQL_DSQL_yyssp = yystate = yytable[yyn]; *++yyvsp = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *DSQL_DSQL_yyssp); #endif if (DSQL_DSQL_yyssp <= DSQL_yyss) goto yyabort; --DSQL_DSQL_yyssp; --yyvsp; } } } else { if (DSQL_yychar == 0) goto yyabort; #if YYDEBUG if (yydebug) { yys = 0; if (DSQL_yychar <= YYMAXTOKEN) yys = yyname[DSQL_yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, DSQL_yychar, yys); } #endif DSQL_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 1: { DSQL_parse = yyvsp[0]; } break; case 2: { DSQL_parse = yyvsp[-1]; } break; case 18: { DSQL_debug = (int) yyvsp[0]; if (DSQL_debug > 10) yydebug = DSQL_debug; yyval = make_node (nod_null, (int) 0, NULL); } break; case 19: { yyval = make_node (nod_grant, (int) e_grant_count, yyvsp[-5], yyvsp[-3], make_list(yyvsp[-1]), yyvsp[0]); } break; case 20: { yyval = make_node (nod_grant, (int) e_grant_count, yyvsp[-6], yyvsp[-3], make_list(yyvsp[-1]), yyvsp[0]); } break; case 21: { yyval = make_node (nod_grant, (int) e_grant_count, yyvsp[-4], yyvsp[-2], make_list(yyvsp[0]), NULL); } break; case 22: { yyval = make_node (nod_grant, (int) e_grant_count, yyvsp[-5], yyvsp[-2], make_list(yyvsp[0]), NULL); } break; case 23: { yyval = make_node (nod_grant, (int) e_grant_count, make_list(yyvsp[-3]), make_list(yyvsp[-1]), NULL, yyvsp[0]); } break; case 25: { yyval = yyvsp[0]; } break; case 26: { yyval = make_node (nod_all, (int) 0, NULL); } break; case 27: { yyval = make_node (nod_all, (int) 0, NULL); } break; case 28: { yyval = make_list (yyvsp[0]); } break; case 30: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 31: { yyval = make_list (make_node (nod_execute, (int) 0, NULL)); } break; case 32: { yyval = make_node (nod_select, (int) 0, NULL); } break; case 33: { yyval = make_node (nod_insert, (int) 0, NULL); } break; case 34: { yyval = make_node (nod_delete, (int) 0, NULL); } break; case 35: { yyval = make_node (nod_update, (int) 1, yyvsp[0]); } break; case 36: { yyval = make_node (nod_references, (int) 1, yyvsp[0]); } break; case 37: { yyval = make_node (nod_grant, (int) 0, NULL); } break; case 38: { yyval = 0; } break; case 39: { yyval = make_node (nod_grant_admin, (int) 0, NULL); } break; case 40: { yyval = 0; } break; case 41: { yyval = make_node (nod_procedure_name, (int) 1, yyvsp[0]); } break; case 42: { yyval = make_node (nod_revoke, (int) e_grant_count, yyvsp[-4], yyvsp[-2], make_list(yyvsp[0]), yyvsp[-5]); } break; case 43: { yyval = make_node (nod_revoke, (int) e_grant_count, yyvsp[-5], yyvsp[-2], make_list(yyvsp[0]), yyvsp[-6]); } break; case 44: { yyval = make_node (nod_revoke, (int) e_grant_count, yyvsp[-4], yyvsp[-2], make_list(yyvsp[0]), NULL); } break; case 45: { yyval = make_node (nod_revoke, (int) e_grant_count, yyvsp[-5], yyvsp[-2], make_list(yyvsp[0]), NULL); } break; case 46: { yyval = make_node (nod_revoke, (int) e_grant_count, yyvsp[-4], yyvsp[-2], make_list(yyvsp[0]), NULL); } break; case 47: { yyval = make_node (nod_revoke, (int) e_grant_count, yyvsp[-5], yyvsp[-2], make_list(yyvsp[0]), NULL); } break; case 48: { yyval = make_node (nod_revoke, (int) e_grant_count, make_list(yyvsp[-2]), make_list(yyvsp[0]), NULL, NULL); } break; case 49: { yyval = make_node (nod_grant, (int) 0, NULL); } break; case 51: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 52: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 53: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 54: { yyval = make_node (nod_proc_obj, (int) 1, yyvsp[0]); } break; case 55: { yyval = make_node (nod_trig_obj, (int) 1, yyvsp[0]); } break; case 56: { yyval = make_node (nod_view_obj, (int) 1, yyvsp[0]); } break; case 58: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 59: { yyval = make_node (nod_user_name, (int) 1, yyvsp[0]); } break; case 60: { yyval = make_node (nod_user_name, (int) 1, yyvsp[0]); } break; case 61: { yyval = make_node (nod_user_group, (int) 1, yyvsp[0]); } break; case 63: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 64: { yyval = make_node (nod_role_name, (int) 1, yyvsp[0]); } break; case 66: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 67: { yyval = make_node (nod_user_name, (int) 1, yyvsp[0]); } break; case 68: { yyval = make_node (nod_user_name, (int) 1, yyvsp[0]); } break; case 69: { yyval = yyvsp[0];} break; case 70: { yyval = yyvsp[0]; } break; case 71: { yyval = yyvsp[0]; } break; case 72: { yyval = make_node (nod_def_udf, (int) e_udf_count, yyvsp[-7], yyvsp[-2], yyvsp[0], make_list (yyvsp[-6]), yyvsp[-4]); } break; case 74: { field->fld_dtype = dtype_blob; } break; case 75: { field->fld_dtype = dtype_cstring; field->fld_character_length = (USHORT) yyvsp[-2]; } break; case 76: { yyval = (NOD) NULL; } break; case 78: { yyval = yyvsp[-1]; } break; case 80: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 81: { yyval = yyvsp[-1]; } break; case 83: { yyval = yyvsp[-1]; } break; case 84: { yyval = make_node (nod_udf_return_value, (int) 2, yyvsp[-1], MAKE_constant ((STR) FUN_reference, CONSTANT_SLONG));} break; case 85: { yyval = make_node (nod_udf_return_value, (int) 2, yyvsp[-2], MAKE_constant ((STR) (-1 * FUN_reference), CONSTANT_SLONG));} break; case 86: { yyval = make_node (nod_udf_return_value, (int) 2, yyvsp[-3], MAKE_constant ((STR) FUN_value, CONSTANT_SLONG));} break; case 87: { yyval = make_node (nod_udf_return_value, (int) 2, (NOD) NULL, MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG));} break; case 88: { yyval = make_node (nod_def_filter, (int) e_filter_count, yyvsp[-8], yyvsp[-6], yyvsp[-4], yyvsp[-2], yyvsp[0]); } break; case 89: { yyval = yyvsp[0]; } break; case 90: { yyval = make_node (nod_def_exception, (int) e_xcp_count, yyvsp[-1], yyvsp[0]); } break; case 91: { yyval = make_node (nod_def_index, (int) e_idx_count, yyvsp[-6], yyvsp[-5], yyvsp[-3], yyvsp[-1], yyvsp[0]); } break; case 92: { yyval = yyvsp[0]; } break; case 93: { yyval = yyvsp[0]; } break; case 94: { yyval = yyvsp[0]; } break; case 95: { yyval = yyvsp[0]; } break; case 96: { yyval = yyvsp[0]; } break; case 97: { yyval = yyvsp[0]; } break; case 98: { yyval = yyvsp[0]; } break; case 99: { yyval = yyvsp[0]; } break; case 100: { yyval = yyvsp[0]; } break; case 101: { yyval = make_node (nod_unique, (int) 0, NULL); } break; case 102: { yyval = NULL; } break; case 103: { yyval = make_list (yyvsp[0]); } break; case 105: { yyval = make_node (nod_def_computed, 2, yyvsp[-2], yyvsp[-1]); } break; case 106: { yyval = make_node (nod_def_shadow, (int) e_shadow_count, yyvsp[-5], yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], make_list (yyvsp[0])); } break; case 107: { yyval = MAKE_constant ((STR) 1, CONSTANT_SLONG); } break; case 108: { yyval = MAKE_constant ((STR) 0, CONSTANT_SLONG); } break; case 109: { yyval = MAKE_constant ((STR) 0, CONSTANT_SLONG); } break; case 110: { yyval = MAKE_constant ((STR) 0, CONSTANT_SLONG); } break; case 111: { yyval = MAKE_constant ((STR) 1, CONSTANT_SLONG); } break; case 112: { yyval = (NOD) 0;} break; case 113: { yyval = yyvsp[-1]; } break; case 114: { yyval = (NOD) NULL; } break; case 117: { yyval = make_node (nod_list, (int) 2, yyvsp[-1], yyvsp[0]); } break; case 118: { yyval = make_node (nod_def_domain, (int) e_dom_count, yyvsp[-7], yyvsp[-3], yyvsp[-2], make_list (yyvsp[-1]), yyvsp[0]); } break; case 119: { yyval = NULL; } break; case 120: { yyval = NULL; } break; case 121: { yyval = yyvsp[0]; } break; case 122: { yyval = (NOD) NULL; } break; case 123: { yyval = (NOD) NULL; } break; case 126: { yyval = make_node (nod_list, (int) 2, yyvsp[-1], yyvsp[0]); } break; case 127: { yyval = make_node (nod_rel_constraint, (int) 2, NULL, yyvsp[0]);} break; case 130: { yyval = make_node (nod_null, (int) 0, NULL); } break; case 131: { yyval = make_node (nod_def_constraint, (int) e_cnstr_count, MAKE_string (NULL_STRING, 0), NULL, NULL, NULL, yyvsp[-2], NULL, yyvsp[0], NULL, NULL); } break; case 132: { yyval = make_node (nod_def_generator, (int) e_gen_count, yyvsp[0]); } break; case 133: { yyval = make_node (nod_def_role, (int) 1, yyvsp[0]); } break; case 134: { yyval = make_node (nod_def_database, (int) e_cdb_count, yyvsp[-2], make_list(yyvsp[-1]), make_list (yyvsp[0]));} break; case 137: { log_defined = FALSE; cache_defined = FALSE; yyval = (NOD) yyvsp[0]; } break; case 138: {yyval = (NOD) NULL;} break; case 141: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 142: { yyval = make_node (nod_page_size, 1, yyvsp[0]);} break; case 143: { yyval = make_node (nod_file_length, 1, yyvsp[-1]);} break; case 144: { yyval = make_node (nod_user_name, 1, yyvsp[0]);} break; case 145: { yyval = make_node (nod_password, 1, yyvsp[0]);} break; case 146: { yyval = make_node (nod_lc_ctype, 1, yyvsp[0]);} break; case 147: {yyval = (NOD) NULL;} break; case 150: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 154: { yyval = make_node (nod_dfl_charset, 1, yyvsp[0]);} break; case 155: { yyval = make_node (nod_group_commit_wait, 1, yyvsp[0]);} break; case 156: { yyval = make_node (nod_check_point_len, 1, yyvsp[0]);} break; case 157: { yyval = make_node (nod_num_log_buffers, 1, yyvsp[0]);} break; case 158: { yyval = make_node (nod_log_buffer_size, 1, yyvsp[0]);} break; case 159: { if (log_defined) yyabandon (-260, isc_log_redef); /* Log redefined */ log_defined = TRUE; yyval = yyvsp[0]; } break; case 160: { if (log_defined) yyabandon (-260, isc_log_redef); log_defined = TRUE; yyval = yyvsp[0]; } break; case 161: { file->fil_flags |= LOG_serial | LOG_overflow; if (file->fil_partitions) yyabandon (-261, isc_partition_not_supp); /* Partitions not supported in series of log file specification */ yyval = make_node (nod_list, 2, yyvsp[-3], yyvsp[0]); } break; case 162: { file->fil_flags |= LOG_serial; if (file->fil_partitions) yyabandon (-261, isc_partition_not_supp); yyval = yyvsp[0]; } break; case 163: { file = make_file(); file->fil_flags = LOG_serial | LOG_default; yyval = make_node (nod_log_file_desc, (int) 1, (NOD) file);} break; case 164: { file->fil_name = (STR) yyvsp[-1]; yyval = (NOD) make_node (nod_file_desc, (int) 1, (NOD) file); } break; case 166: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 167: { #ifndef WINDOWS_ONLY check_log_file_attrs(); #endif yyval = (NOD) make_node (nod_log_file_desc, (int) 1, (NOD) file); } break; case 168: { file = make_file(); file->fil_name = (STR) yyvsp[0]; } break; case 171: { file->fil_length = (SLONG) yyvsp[0]; } break; case 172: { file = make_file ();} break; case 177: { file->fil_start = (SLONG) yyvsp[0];} break; case 178: { file->fil_length = (SLONG) yyvsp[-1];} break; case 185: { yyval = make_node (nod_def_relation, (int) e_drl_count, yyvsp[-4], make_list (yyvsp[-1]), yyvsp[-3]); } break; case 186: { yyval = yyvsp[0]; } break; case 187: { yyval = yyvsp[0]; } break; case 188: { yyval = (NOD) NULL; } break; case 190: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 193: { yyval = make_node (nod_def_field, (int) e_dfl_count, yyvsp[-5], yyvsp[-3], yyvsp[-2], make_list (yyvsp[-1]), yyvsp[0], yyvsp[-4], NULL); } break; case 194: { yyval = make_node (nod_def_field, (int) e_dfl_count, yyvsp[-2], NULL, NULL, NULL, NULL, NULL, yyvsp[0]); } break; case 195: { yyval = make_node (nod_def_field, (int) e_dfl_count, yyvsp[-1], NULL, NULL, NULL, NULL, NULL, yyvsp[0]); } break; case 196: { field->fld_flags |= FLD_computed; yyval = make_node (nod_def_computed, 2, yyvsp[-2], yyvsp[-1]); } break; case 199: { yyval = NULL; } break; case 200: { yyval = make_node (nod_def_domain, (int) e_dom_count, yyvsp[-1], NULL, NULL, NULL, NULL); } break; case 201: { yyval = yyvsp[0]; } break; case 202: { yyval = (NOD) NULL; } break; case 203: { field_name = yyvsp[0]; field = make_field (yyvsp[0]); yyval = (NOD) field; } break; case 204: { field = make_field (yyvsp[0]); yyval = (NOD) field; } break; case 205: { yyval = yyvsp[-1]; } break; case 206: { field = make_field (NULL); yyval = (NOD) field; } break; case 207: { yyval = yyvsp[0]; } break; case 208: { yyval = (NOD) NULL; } break; case 209: { yyval = yyvsp[0]; } break; case 210: { yyval = make_node (nod_user_name, (int) 0, NULL); } break; case 211: { yyval = yyvsp[0]; } break; case 212: { yyval = yyvsp[0]; } break; case 213: { yyval = (NOD) NULL; } break; case 216: { yyval = make_node (nod_list, (int) 2, yyvsp[-1], yyvsp[0]); } break; case 217: { yyval = make_node (nod_rel_constraint, (int) 2, yyvsp[-1], yyvsp[0]);} break; case 218: { yyval = make_node (nod_null, (int) 1, NULL); } break; case 219: { yyval = make_node (nod_foreign, e_for_count, make_node (nod_list, (int) 1, field_name), yyvsp[-2], yyvsp[-1], yyvsp[0]); } break; case 221: { yyval = make_node (nod_unique, (int) 0, NULL); } break; case 222: { yyval = make_node (nod_primary, (int) 0, NULL); } break; case 223: { yyval = make_node (nod_rel_constraint, (int) 2, yyvsp[-1], yyvsp[0]);} break; case 224: { yyval = yyvsp[0]; } break; case 225: { yyval = NULL ;} break; case 230: { yyval = make_node (nod_unique, 1, yyvsp[0]); } break; case 231: { yyval = make_node (nod_primary, e_pri_count, yyvsp[0]); } break; case 232: { yyval = make_node (nod_foreign, e_for_count, yyvsp[-4], yyvsp[-2], yyvsp[-1], yyvsp[0]); } break; case 233: { yyval = make_node (nod_def_constraint, (int) e_cnstr_count, MAKE_string (NULL_STRING, 0), NULL, NULL, NULL, yyvsp[-2], NULL, yyvsp[0], NULL, NULL); } break; case 234: { yyval = make_node (nod_ref_upd_del, e_ref_upd_del_count, yyvsp[0], NULL);} break; case 235: { yyval = make_node (nod_ref_upd_del, e_ref_upd_del_count, NULL, yyvsp[0]);} break; case 236: { yyval = make_node (nod_ref_upd_del, e_ref_upd_del_count, yyvsp[0], yyvsp[-1]); } break; case 237: { yyval = make_node (nod_ref_upd_del, e_ref_upd_del_count, yyvsp[-1], yyvsp[0]);} break; case 238: { yyval = NULL;} break; case 239: { yyval = yyvsp[0];} break; case 240: { yyval = yyvsp[0];} break; case 241: { yyval = make_flag_node (nod_ref_trig_action, REF_ACTION_CASCADE, e_ref_trig_action_count, NULL);} break; case 242: { yyval = make_flag_node (nod_ref_trig_action, REF_ACTION_SET_DEFAULT, e_ref_trig_action_count, NULL);} break; case 243: { yyval = make_flag_node (nod_ref_trig_action, REF_ACTION_SET_NULL, e_ref_trig_action_count, NULL);} break; case 244: { yyval = make_flag_node (nod_ref_trig_action, REF_ACTION_NONE, e_ref_trig_action_count, NULL);} break; case 245: { yyval = make_node (nod_def_procedure, (int) e_prc_count, yyvsp[-7], yyvsp[-6], yyvsp[-5], yyvsp[-2], yyvsp[-1], yyvsp[0], NULL); } break; case 246: { yyval = make_node (nod_mod_procedure, (int) e_prc_count, yyvsp[-7], yyvsp[-6], yyvsp[-5], yyvsp[-2], yyvsp[-1], yyvsp[0], NULL); } break; case 247: { yyval = make_list (yyvsp[-1]); } break; case 248: { yyval = NULL; } break; case 249: { yyval = yyvsp[0]; } break; case 250: { yyval = NULL; } break; case 252: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 253: { yyval = make_node (nod_def_field, (int) e_dfl_count, yyvsp[-1], NULL, NULL, NULL, NULL, NULL, NULL); } break; case 254: { yyval = make_list (yyvsp[0]); } break; case 255: { yyval = NULL; } break; case 257: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 258: { yyval = make_node (nod_def_field, (int) e_dfl_count, yyvsp[-2], NULL, NULL, NULL, NULL, NULL, NULL); } break; case 261: { yyval = make_node (nod_block, e_blk_count, make_list (yyvsp[-1]), NULL);} break; case 262: { yyval = make_node (nod_block, e_blk_count, make_list (yyvsp[-2]), make_list (yyvsp[-1]));} break; case 264: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 267: { yyval = make_node (nod_exception_stmt, 1, yyvsp[-1]); } break; case 272: { yyval = make_node (nod_post, e_pst_count, yyvsp[-1]); } break; case 276: { yyval = make_node (nod_return, e_rtn_count, NULL); } break; case 277: { yyval = make_node (nod_exit, 0, NULL); } break; case 278: { yyval = make_node (nod_exec_procedure, e_exe_count, yyvsp[-3], yyvsp[-2], yyvsp[-1]); } break; case 279: { yyval = make_node (nod_for_select, e_flp_count, yyvsp[-5], make_list (yyvsp[-3]), yyvsp[-2], yyvsp[0]); } break; case 280: { yyval = make_node (nod_if, e_if_count, yyvsp[-5], yyvsp[-2], yyvsp[0]); } break; case 281: { yyval = make_node (nod_if, e_if_count, yyvsp[-3], yyvsp[0], NULL); } break; case 282: { yyval = make_node (nod_for_select, e_flp_count, yyvsp[-3], make_list (yyvsp[-1]), NULL, NULL); } break; case 283: { yyval = make_node (nod_var_name, (int) e_vrn_count, yyvsp[0]); } break; case 284: { yyval = make_list (yyvsp[0]); } break; case 285: { yyval = make_list (yyvsp[-1]); } break; case 286: { yyval = NULL; } break; case 287: { yyval = make_list (yyvsp[0]); } break; case 288: { yyval = make_list (yyvsp[-1]); } break; case 289: { yyval = NULL; } break; case 294: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 295: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 296: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 297: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 300: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 301: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 302: { yyval = make_node (nod_while, e_while_count, yyvsp[-3], yyvsp[0], NULL); } break; case 303: { yyval = make_node (nod_cursor, e_cur_count, yyvsp[0], NULL, NULL); } break; case 304: { yyval = NULL; } break; case 306: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 307: { yyval = make_node (nod_on_error, e_err_count, make_list (yyvsp[-2]), yyvsp[0]); } break; case 309: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 310: { yyval = make_node (nod_sqlcode, 1, yyvsp[0]); } break; case 311: { yyval = make_node (nod_gdscode, 1, yyvsp[0]); } break; case 312: { yyval = make_node (nod_exception, 1, yyvsp[0]); } break; case 313: { yyval = make_node (nod_default, 1, NULL); } break; case 314: { yyval = make_node (nod_exec_procedure, e_exe_count, yyvsp[-1], yyvsp[0], make_node (nod_all, (int) 0, NULL)); } break; case 315: { yyval = make_list (yyvsp[0]); } break; case 316: { yyval = make_list (yyvsp[-1]); } break; case 317: { yyval = NULL; } break; case 321: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 322: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 323: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 324: { yyval = make_node (nod_def_view, (int) e_view_count, yyvsp[-6], yyvsp[-5], yyvsp[-2], yyvsp[-1], yyvsp[0]); } break; case 325: { yyval = make_node (nod_select, (int) 2, yyvsp[0], NULL); } break; case 326: { yyval = make_node (nod_list, (int) 1, yyvsp[0]); } break; case 327: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 328: { yyval = make_flag_node (nod_list, NOD_UNION_ALL, 2, yyvsp[-3], yyvsp[0]); } break; case 329: { yyval = make_node (nod_select_expr, e_sel_count, yyvsp[-6], yyvsp[-5], yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], yyvsp[0], NULL); } break; case 330: { yyval = make_list (yyvsp[0]); } break; case 332: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 335: { yyval = make_node (nod_join, (int) e_join_count, yyvsp[-5], yyvsp[-4], yyvsp[-2], yyvsp[0]); } break; case 336: { yyval = yyvsp[-1]; } break; case 337: { beginning = lex_position(); } break; case 338: { yyval = (NOD) MAKE_string ((UCHAR *) beginning, (lex_position() == end) ? lex_position()-beginning : last_token-beginning);} break; case 339: { beginning = last_token; } break; case 340: { yyval = (NOD) MAKE_string ((UCHAR *) beginning, lex_position()-beginning); } break; case 341: { yyval = make_node (nod_def_constraint, (int) e_cnstr_count, MAKE_string (NULL_STRING, 0), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); } break; case 342: { yyval = 0; } break; case 343: { yyval = make_node (nod_def_trigger, (int) e_trg_count, yyvsp[-8], yyvsp[-6], yyvsp[-5], yyvsp[-4], yyvsp[-3], yyvsp[-1], yyvsp[0], NULL); } break; case 344: { yyval = MAKE_constant ((STR) 0, CONSTANT_SLONG); } break; case 345: { yyval = MAKE_constant ((STR) 1, CONSTANT_SLONG); } break; case 346: { yyval = NULL; } break; case 347: { yyval = MAKE_constant ((STR) 1, CONSTANT_SLONG); } break; case 348: { yyval = MAKE_constant ((STR) 2, CONSTANT_SLONG); } break; case 349: { yyval = MAKE_constant ((STR) 3, CONSTANT_SLONG); } break; case 350: { yyval = MAKE_constant ((STR) 4, CONSTANT_SLONG); } break; case 351: { yyval = MAKE_constant ((STR) 5, CONSTANT_SLONG); } break; case 352: { yyval = MAKE_constant ((STR) 6, CONSTANT_SLONG); } break; case 353: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG); } break; case 354: { yyval = NULL; } break; case 355: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 356: { yyval = yyvsp[0]; } break; case 357: { yyval = make_node (nod_mod_exception, (int) e_xcp_count, yyvsp[-1], yyvsp[0]); } break; case 358: { yyval = make_node (nod_mod_relation, (int) e_alt_count, yyvsp[-1], make_list (yyvsp[0])); } break; case 359: { yyval = yyvsp[0]; } break; case 360: { yyval = yyvsp[0]; } break; case 361: { yyval = make_node (nod_mod_database, (int) e_adb_count, make_list (yyvsp[0])); } break; case 362: { yyval = make_node (nod_mod_domain, (int) e_alt_count, yyvsp[-1], make_list (yyvsp[0])); } break; case 363: { yyval = make_node (nod_mod_index, (int) e_mod_idx_count, yyvsp[0]); } break; case 365: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 366: { yyval = make_node (nod_def_default, (int) e_dft_count, yyvsp[-1], yyvsp[0]); } break; case 367: { yyval = yyvsp[0]; } break; case 368: { yyval = yyvsp[0]; } break; case 369: {yyval = make_node (nod_del_default, (int) 0, NULL); } break; case 370: { yyval = make_node (nod_delete_rel_constraint, (int) 1, NULL); } break; case 371: { yyval = yyvsp[0]; } break; case 372: { yyval = make_node (nod_mod_domain_type, 2, yyvsp[-1]); } break; case 374: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 375: { yyval = make_node (nod_del_field, 2, yyvsp[-1], yyvsp[0]); } break; case 376: { yyval = make_node (nod_delete_rel_constraint, (int) 1, yyvsp[0]);} break; case 377: { yyval = yyvsp[0]; } break; case 378: { yyval = yyvsp[0]; } break; case 379: { yyval = make_node (nod_mod_field_pos, 2, yyvsp[-2], MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG)); } break; case 380: { yyval = make_node (nod_mod_field_name, 2, yyvsp[-2], yyvsp[0]); } break; case 381: { yyval = make_node (nod_mod_field_type, 3, yyvsp[-3], yyvsp[0], yyvsp[-1]); } break; case 382: { yyval = make_node (nod_field_name, (int) e_fln_count, NULL, yyvsp[0]); } break; case 400: { yyval = NULL; } break; case 401: { yyval = NULL; } break; case 402: { yyval = NULL; } break; case 403: { yyval = make_node (nod_def_domain, (int) e_dom_count, yyvsp[-1], NULL, NULL, NULL, NULL); } break; case 404: { field_name = yyvsp[0]; field = make_field (yyvsp[0]); yyval = (NOD) field; } break; case 405: { yyval = make_node (nod_restrict, 0, NULL); } break; case 406: { yyval = make_node (nod_cascade, 0, NULL); } break; case 407: { yyval = make_node (nod_restrict, 0, NULL); } break; case 408: { yyval = make_node (nod_idx_active, 1, yyvsp[-1]); } break; case 409: { yyval = make_node (nod_idx_inactive, 1, yyvsp[-1]); } break; case 410: { log_defined = FALSE; cache_defined = FALSE; yyval = (NOD) NULL; } break; case 412: { yyval = make_node (nod_list, (int) 2, yyvsp[-1], yyvsp[0]); } break; case 413: { yyval = yyvsp[0]; } break; case 414: { yyval = make_node (nod_drop_log, (int) 0, NULL); } break; case 415: { yyval = yyvsp[0]; } break; case 416: { yyval = yyvsp[0]; } break; case 418: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 419: { yyval = make_node (nod_mod_trigger, (int) e_trg_count, yyvsp[-6], NULL, yyvsp[-5], yyvsp[-4], yyvsp[-3], yyvsp[-1], yyvsp[0], NULL); } break; case 421: { yyval = NULL; } break; case 423: { yyval = NULL; } break; case 424: { yyval = yyvsp[0]; } break; case 425: { yyval = make_node (nod_del_exception, 1, yyvsp[0]); } break; case 426: { yyval = make_node (nod_del_index, (int) 1, yyvsp[0]); } break; case 427: { yyval = make_node (nod_del_procedure, (int) 1, yyvsp[0]); } break; case 428: { yyval = make_node (nod_del_relation, (int) 1, yyvsp[0]); } break; case 429: { yyval = make_node (nod_del_trigger, (int) 1, yyvsp[0]); } break; case 430: { yyval = make_node (nod_del_relation, (int) 1, yyvsp[0]); } break; case 431: { yyval = make_node (nod_del_filter, (int) 1, yyvsp[0]); } break; case 432: { yyval = make_node (nod_del_domain, (int) 1, yyvsp[0]); } break; case 433: { yyval = make_node (nod_del_udf, (int) 1, yyvsp[0]); } break; case 434: { yyval = make_node (nod_del_shadow, (int) 1, yyvsp[0]); } break; case 435: { yyval = make_node (nod_del_role, (int) 1, yyvsp[0]); } break; case 440: { field->fld_ranges = make_list (yyvsp[-1]); field->fld_dimensions = field->fld_ranges->nod_count / 2; field->fld_element_dtype = field->fld_dtype; yyval = yyvsp[-3]; } break; case 441: { field->fld_ranges = make_list (yyvsp[-2]); field->fld_dimensions = field->fld_ranges->nod_count / 2; field->fld_element_dtype = field->fld_dtype; yyval = yyvsp[-4]; } break; case 443: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 444: { if ((SLONG) yyvsp[0] < 1) yyval = make_node (nod_list, (int) 2, MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG), MAKE_constant ((STR) 1, CONSTANT_SLONG)); else yyval = make_node (nod_list, (int) 2, MAKE_constant ((STR) 1, CONSTANT_SLONG), MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG) ); } break; case 445: { yyval = make_node (nod_list, (int) 2, MAKE_constant ((STR) yyvsp[-2], CONSTANT_SLONG), MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG)); } break; case 451: { field->fld_dtype = dtype_long; field->fld_length = sizeof (SLONG); } break; case 452: { field->fld_dtype = dtype_short; field->fld_length = sizeof (SSHORT); } break; case 453: { *stmt_ambiguous = TRUE; if (client_dialect <= SQL_DIALECT_V5) { /* Post warning saying that DATE is equivalent to TIMESTAMP */ ERRD_post_warning (isc_sqlwarn, gds_arg_number, (SLONG) 301, isc_arg_warning, isc_dtype_renamed, 0); field->fld_dtype = dtype_timestamp; field->fld_length = sizeof (GDS_TIMESTAMP); } else if (client_dialect == SQL_DIALECT_V6_TRANSITION) yyabandon (-104, isc_transitional_date); else { field->fld_dtype = dtype_sql_date; field->fld_length = sizeof (ULONG); } } break; case 454: { if (client_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_dialect_datatype_unsupport, gds_arg_number, client_dialect, gds_arg_string, "TIME", 0); if (db_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_db_dialect_dtype_unsupport, gds_arg_number, db_dialect, gds_arg_string, "TIME", 0); field->fld_dtype = dtype_sql_time; field->fld_length = sizeof (SLONG); } break; case 455: { field->fld_dtype = dtype_timestamp; field->fld_length = sizeof (GDS_TIMESTAMP); } break; case 458: { field->fld_dtype = dtype_blob; } break; case 459: { field->fld_dtype = dtype_blob; field->fld_seg_length = (USHORT) yyvsp[-1]; field->fld_sub_type = 0; } break; case 460: { field->fld_dtype = dtype_blob; field->fld_seg_length = (USHORT) yyvsp[-3]; field->fld_sub_type = (USHORT) yyvsp[-1]; } break; case 461: { field->fld_dtype = dtype_blob; field->fld_seg_length = 80; field->fld_sub_type = (USHORT) yyvsp[-1]; } break; case 462: { field->fld_seg_length = (USHORT) yyvsp[0]; } break; case 463: { field->fld_seg_length = (USHORT) 80; } break; case 464: { field->fld_sub_type = (USHORT) yyvsp[0]; } break; case 465: { field->fld_sub_type_name = yyvsp[0]; } break; case 466: { field->fld_sub_type = (USHORT) 0; } break; case 467: { field->fld_character_set = yyvsp[0]; } break; case 469: { field->fld_dtype = dtype_text; field->fld_character_length = (USHORT) yyvsp[-1]; field->fld_flags |= FLD_national; } break; case 470: { field->fld_dtype = dtype_text; field->fld_character_length = 1; field->fld_flags |= FLD_national; } break; case 471: { field->fld_dtype = dtype_varying; field->fld_character_length = (USHORT) yyvsp[-1]; field->fld_flags |= FLD_national; } break; case 472: { field->fld_dtype = dtype_text; field->fld_character_length = (USHORT) yyvsp[-1]; } break; case 473: { field->fld_dtype = dtype_text; field->fld_character_length = 1; } break; case 474: { field->fld_dtype = dtype_varying; field->fld_character_length = (USHORT) yyvsp[-1]; } break; case 483: { field->fld_sub_type = dsc_num_type_numeric; } break; case 484: { field->fld_sub_type = dsc_num_type_decimal; if (field->fld_dtype == dtype_short) { field->fld_dtype = dtype_long; field->fld_length = sizeof (SLONG); }; } break; case 485: { yyval = make_node (nod_position, 1, yyvsp[0]); } break; case 486: { field->fld_dtype = dtype_long; field->fld_length = sizeof (SLONG); field->fld_precision = 9; } break; case 487: { if ( ((SLONG) yyvsp[-1] < 1) || ((SLONG) yyvsp[-1] > 18) ) yyabandon (-842, isc_precision_err); /* Precision most be between 1 and 18. */ if ((SLONG) yyvsp[-1] > 9) { if ( ( (client_dialect <= SQL_DIALECT_V5) && (db_dialect > SQL_DIALECT_V5) ) || ( (client_dialect > SQL_DIALECT_V5) && (db_dialect <= SQL_DIALECT_V5) ) ) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -817, gds_arg_gds, isc_ddl_not_allowed_by_db_sql_dial, gds_arg_number, (SLONG) db_dialect, 0); if (client_dialect <= SQL_DIALECT_V5) { field->fld_dtype = dtype_double; field->fld_length = sizeof (double); } else { if (client_dialect == SQL_DIALECT_V6_TRANSITION) { ERRD_post_warning ( isc_dsql_warn_precision_ambiguous, gds_arg_end ); ERRD_post_warning ( isc_dsql_warn_precision_ambiguous1, gds_arg_end ); ERRD_post_warning ( isc_dsql_warn_precision_ambiguous2, gds_arg_end ); } field->fld_dtype = dtype_int64; field->fld_length = sizeof (SINT64); } } else if ((SLONG) yyvsp[-1] < 5) { field->fld_dtype = dtype_short; field->fld_length = sizeof (SSHORT); } else { field->fld_dtype = dtype_long; field->fld_length = sizeof (SLONG); } field->fld_precision = (USHORT) yyvsp[-1]; } break; case 488: { if ( ((SLONG) yyvsp[-3] < 1) || ((SLONG) yyvsp[-3] > 18) ) yyabandon (-842, isc_precision_err); /* Precision should be between 1 and 18 */ if (((SLONG) yyvsp[-1] > (SLONG) yyvsp[-3]) || ((SLONG) yyvsp[-1] < 0)) yyabandon (-842, isc_scale_nogt); /* Scale must be between 0 and precision */ if ((SLONG) yyvsp[-3] > 9) { if ( ( (client_dialect <= SQL_DIALECT_V5) && (db_dialect > SQL_DIALECT_V5) ) || ( (client_dialect > SQL_DIALECT_V5) && (db_dialect <= SQL_DIALECT_V5) ) ) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -817, gds_arg_gds, isc_ddl_not_allowed_by_db_sql_dial, gds_arg_number, (SLONG) db_dialect, 0); if (client_dialect <= SQL_DIALECT_V5) { field->fld_dtype = dtype_double; field->fld_length = sizeof (double); } else { if (client_dialect == SQL_DIALECT_V6_TRANSITION) { ERRD_post_warning ( isc_dsql_warn_precision_ambiguous, gds_arg_end ); ERRD_post_warning ( isc_dsql_warn_precision_ambiguous1, gds_arg_end ); ERRD_post_warning ( isc_dsql_warn_precision_ambiguous2, gds_arg_end ); } /* client_dialect >= SQL_DIALECT_V6 */ field->fld_dtype = dtype_int64; field->fld_length = sizeof (SINT64); } } else { if ((SLONG) yyvsp[-3] < 5) { field->fld_dtype = dtype_short; field->fld_length = sizeof (SSHORT); } else { field->fld_dtype = dtype_long; field->fld_length = sizeof (SLONG); } } field->fld_precision = (USHORT) yyvsp[-3]; field->fld_scale = - (SSHORT) yyvsp[-1]; } break; case 491: { if ((SLONG) yyvsp[0] > 7) { field->fld_dtype = dtype_double; field->fld_length = sizeof (double); } else { field->fld_dtype = dtype_real; field->fld_length = sizeof (float); } } break; case 492: { field->fld_dtype = dtype_double; field->fld_length = sizeof (double); } break; case 493: { field->fld_dtype = dtype_real; field->fld_length = sizeof (float); } break; case 494: { field->fld_dtype = dtype_double; field->fld_length = sizeof (double); } break; case 495: { yyval = yyvsp[-1]; } break; case 496: { yyval = 0; } break; case 500: { yyval = make_node (nod_set_generator2,e_gen_id_count,yyvsp[-2], MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG)); } break; case 501: { yyval = make_node (nod_set_generator2,e_gen_id_count,yyvsp[-2], MAKE_constant((STR)yyvsp[0], CONSTANT_SINT64)); } break; case 502: { yyval = make_node (nod_set_generator2, e_gen_id_count, yyvsp[-3], make_node(nod_negate, 1, MAKE_constant((STR)yyvsp[0], CONSTANT_SINT64))); } break; case 503: { yyval = make_node (nod_commit, 1, yyvsp[0]); } break; case 504: { yyval = make_node (nod_rollback, 0, NULL); } break; case 507: { yyval = make_node (nod_commit_retain, 0, NULL); } break; case 508: { yyval = (NOD) NULL; } break; case 510: { yyval = (NOD) NULL; } break; case 511: {yyval = make_node (nod_trans, 1, make_list (yyvsp[0])); } break; case 513: { yyval = (NOD) NULL; } break; case 515: { yyval = make_node (nod_list, (int) 2, yyvsp[-1], yyvsp[0]); } break; case 520: { yyval = make_flag_node (nod_access, NOD_READ_ONLY, (int) 0, NULL); } break; case 521: { yyval = make_flag_node (nod_access, NOD_READ_WRITE, (int) 0, NULL); } break; case 522: { yyval = make_flag_node (nod_wait, NOD_WAIT, (int) 0, NULL); } break; case 523: { yyval = make_flag_node (nod_wait, NOD_NO_WAIT, (int) 0, NULL); } break; case 524: { yyval = yyvsp[0];} break; case 526: { yyval = yyvsp[0];} break; case 527: { yyval = make_flag_node (nod_isolation, NOD_READ_COMMITTED, 1, yyvsp[0]); } break; case 528: { yyval = make_flag_node (nod_isolation, NOD_READ_COMMITTED, 1, yyvsp[0]); } break; case 529: { yyval = make_flag_node (nod_isolation, NOD_CONCURRENCY, 0, NULL); } break; case 530: { yyval = make_flag_node (nod_isolation, NOD_CONSISTENCY, 0, NULL); } break; case 531: { yyval = make_flag_node (nod_isolation, NOD_CONSISTENCY, 0, NULL); } break; case 532: { yyval = make_flag_node (nod_version, NOD_VERSION, 0, NULL); } break; case 533: { yyval = make_flag_node (nod_version, NOD_NO_VERSION, 0, NULL); } break; case 534: { yyval = 0; } break; case 535: { yyval = make_node (nod_reserve, 1, make_list (yyvsp[0])); } break; case 536: { yyval = (NOD) NOD_SHARED; } break; case 537: { yyval = (NOD) NOD_PROTECTED ; } break; case 538: { yyval = (NOD) 0; } break; case 539: { yyval = (NOD) NOD_READ; } break; case 540: { yyval = (NOD) NOD_WRITE; } break; case 542: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 543: { yyval = make_node (nod_table_lock, (int) 2, make_list (yyvsp[-1]), yyvsp[0]); } break; case 544: { yyval = make_flag_node (nod_lock_mode, (SSHORT) ((SSHORT) yyvsp[-1] | (SSHORT) yyvsp[0]), (SSHORT) 0, NULL); } break; case 545: { yyval = 0; } break; case 547: { yyval = make_node (nod_list, (int) 2, yyvsp[-2], yyvsp[0]); } break; case 548: {yyval = make_node (nod_set_statistics, (int)e_stat_count, yyvsp[0]); } break; case 549: { yyval = make_node (nod_select, 3, yyvsp[-2], yyvsp[-1], yyvsp[0]); } break; case 550: { yyval = make_node (nod_list, 1, yyvsp[0]); } break; case 551: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 552: { yyval = make_flag_node (nod_list, NOD_UNION_ALL, 2, yyvsp[-3], yyvsp[0]); } break; case 553: { yyval = make_list (yyvsp[0]); } break; case 554: { yyval = 0; } break; case 556: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 557: { yyval = make_node (nod_order, e_order_count, yyvsp[-2], yyvsp[0], yyvsp[-1]); } break; case 558: { yyval = make_node (nod_order, e_order_count, yyvsp[-2], yyvsp[0], yyvsp[-1]); } break; case 559: { yyval = 0; } break; case 560: { yyval = make_node (nod_flag, 0, NULL); } break; case 561: { yyval = 0; } break; case 562: { yyval = yyvsp[0]; } break; case 563: { yyval = 0; } break; case 564: { yyval = yyvsp[0]; } break; case 565: { yyval = make_node (nod_flag, 0, NULL); } break; case 566: { yyval = make_node (nod_select_expr, e_sel_count, yyvsp[-7], yyvsp[-6], yyvsp[-5], yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], yyvsp[0], NULL); } break; case 567: { yyval = make_node (nod_flag, 0, NULL); } break; case 568: { yyval = 0; } break; case 569: { yyval = make_list (yyvsp[0]); } break; case 570: { yyval = 0; } break; case 572: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 574: { yyval = make_node (nod_alias, 2, yyvsp[-1], yyvsp[0]); } break; case 575: { yyval = make_node (nod_alias, 2, yyvsp[-2], yyvsp[0]); } break; case 576: { yyval = make_list (yyvsp[0]); } break; case 578: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 581: { yyval = make_node (nod_join, (int) e_join_count, yyvsp[-5], yyvsp[-4], yyvsp[-2], yyvsp[0]); } break; case 582: { yyval = yyvsp[-1]; } break; case 583: { yyval = make_node (nod_rel_proc_name, (int) e_rpn_count, yyvsp[-2], yyvsp[0], yyvsp[-1]); } break; case 584: { yyval = make_node (nod_rel_proc_name, (int) e_rpn_count, yyvsp[-1], NULL, yyvsp[0]); } break; case 585: { yyval = make_list (yyvsp[-1]); } break; case 586: { yyval = NULL; } break; case 588: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 592: { yyval = make_node (nod_relation_name, (int) e_rln_count, yyvsp[-1], yyvsp[0]); } break; case 593: { yyval = make_node (nod_relation_name, (int) e_rln_count, yyvsp[0], NULL); } break; case 594: { yyval = make_node (nod_join_inner, (int) 0, NULL); } break; case 595: { yyval = make_node (nod_join_left, (int) 0, NULL); } break; case 596: { yyval = make_node (nod_join_left, (int) 0, NULL); } break; case 597: { yyval = make_node (nod_join_right, (int) 0, NULL); } break; case 598: { yyval = make_node (nod_join_right, (int) 0, NULL); } break; case 599: { yyval = make_node (nod_join_full, (int) 0, NULL); } break; case 600: { yyval = make_node (nod_join_full, (int) 0, NULL); } break; case 601: { yyval = make_node (nod_join_inner, (int) 0, NULL); } break; case 602: { yyval = make_list (yyvsp[0]); } break; case 603: { yyval = 0; } break; case 605: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 608: { yyval = make_node (nod_collate, e_coll_count, (NOD) yyvsp[0], yyvsp[-2]); } break; case 609: { yyval = yyvsp[0]; } break; case 610: { yyval = 0; } break; case 611: { yyval = yyvsp[0]; } break; case 612: { yyval = 0; } break; case 613: { yyval = yyvsp[0]; } break; case 614: { yyval = 0;} break; case 615: { yyval = make_node (nod_top, 1, yyvsp[-2]);} break; case 616: { yyval = make_node (nod_top, 2, yyvsp[-4], yyvsp[-3]);} break; case 617: { yyval = 0;} break; case 618: { yyval = yyvsp[0]; } break; case 619: { yyval = 0; } break; case 620: { yyval = make_node (nod_plan_expr, 2, yyvsp[-3], make_list (yyvsp[-1])); } break; case 621: { yyval = 0; } break; case 622: { yyval = make_node (nod_merge, (int) 0, NULL); } break; case 623: { yyval = make_node (nod_merge, (int) 0, NULL); } break; case 624: { yyval = 0; } break; case 625: { yyval = 0; } break; case 627: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 628: { yyval = make_node (nod_plan_item, 2, make_list (yyvsp[-1]), yyvsp[0]); } break; case 631: { yyval = make_node (nod_list, 2, yyvsp[-1], yyvsp[0]); } break; case 632: { yyval = make_node (nod_natural, (int) 0, NULL); } break; case 633: { yyval = make_node (nod_index, 1, make_list (yyvsp[-1])); } break; case 634: { yyval = make_node (nod_index_order, 1, yyvsp[0]); } break; case 636: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 637: { yyval = make_node (nod_insert, e_ins_count, yyvsp[-5], make_list (yyvsp[-4]), make_list (yyvsp[-1]), NULL); } break; case 638: { yyval = make_node (nod_insert, e_ins_count, yyvsp[-2], yyvsp[-1], NULL, yyvsp[0]); } break; case 640: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 643: { yyval = make_node (nod_delete, e_del_count, yyvsp[-1], yyvsp[0], NULL); } break; case 644: { yyval = make_node (nod_delete, e_del_count, yyvsp[-1], NULL, yyvsp[0]); } break; case 645: { yyval = make_node (nod_cursor, e_cur_count, yyvsp[0], NULL, NULL); } break; case 648: { yyval = make_node (nod_update, e_upd_count, yyvsp[-3], make_list (yyvsp[-1]), yyvsp[0], NULL); } break; case 649: { yyval = make_node (nod_update, e_upd_count, yyvsp[-3], make_list (yyvsp[-1]), NULL, yyvsp[0]); } break; case 651: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 652: { yyval = make_node (nod_assign, 2, yyvsp[0], yyvsp[-2]); } break; case 655: { yyval = make_node (nod_get_segment, e_blb_count, yyvsp[-4], yyvsp[-2], yyvsp[-1], yyvsp[0]); } break; case 656: { yyval = make_node (nod_put_segment, e_blb_count, yyvsp[-4], yyvsp[-2], yyvsp[-1], yyvsp[0]); } break; case 657: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 658: { yyval = make_node (nod_list, 2, NULL, yyvsp[0]); } break; case 662: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG); } break; case 663: { yyval = yyvsp[0]; } break; case 665: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG); } break; case 668: { yyval = NULL; } break; case 669: { yyval = make_list (yyvsp[-1]); } break; case 671: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 673: { yyval = make_node (nod_field_name, (int) e_fln_count, yyvsp[-2], yyvsp[0]); } break; case 674: { yyval = make_node (nod_field_name, (int) e_fln_count, yyvsp[-2], NULL); } break; case 675: { yyval = make_node (nod_field_name, (int) e_fln_count, NULL, yyvsp[0]); } break; case 677: { yyval = make_node (nod_or, 2, yyvsp[-2], yyvsp[0]); } break; case 678: { yyval = make_node (nod_and, 2, yyvsp[-2], yyvsp[0]); } break; case 679: { yyval = make_node (nod_not, 1, yyvsp[0]); } break; case 690: { yyval = yyvsp[-1]; } break; case 691: { yyval = make_node (nod_eql, 2, yyvsp[-2], yyvsp[0]); } break; case 692: { yyval = make_node (nod_lss, 2, yyvsp[-2], yyvsp[0]); } break; case 693: { yyval = make_node (nod_gtr, 2, yyvsp[-2], yyvsp[0]); } break; case 694: { yyval = make_node (nod_geq, 2, yyvsp[-2], yyvsp[0]); } break; case 695: { yyval = make_node (nod_leq, 2, yyvsp[-2], yyvsp[0]); } break; case 696: { yyval = make_node (nod_leq, 2, yyvsp[-2], yyvsp[0]); } break; case 697: { yyval = make_node (nod_geq, 2, yyvsp[-2], yyvsp[0]); } break; case 698: { yyval = make_node (nod_neq, 2, yyvsp[-2], yyvsp[0]); } break; case 699: { yyval = make_node (nod_eql_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 700: { yyval = make_node (nod_lss_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 701: { yyval = make_node (nod_gtr_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 702: { yyval = make_node (nod_geq_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 703: { yyval = make_node (nod_leq_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 704: { yyval = make_node (nod_leq_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 705: { yyval = make_node (nod_geq_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 706: { yyval = make_node (nod_neq_all, 2, yyvsp[-5], yyvsp[-1]); } break; case 707: { yyval = make_node (nod_eql_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 708: { yyval = make_node (nod_lss_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 709: { yyval = make_node (nod_gtr_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 710: { yyval = make_node (nod_geq_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 711: { yyval = make_node (nod_leq_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 712: { yyval = make_node (nod_leq_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 713: { yyval = make_node (nod_geq_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 714: { yyval = make_node (nod_neq_any, 2, yyvsp[-5], yyvsp[-1]); } break; case 717: { yyval = make_node (nod_between, 3, yyvsp[-4], yyvsp[-2], yyvsp[0]); } break; case 718: { yyval = make_node (nod_not, 1, make_node (nod_between, 3, yyvsp[-5], yyvsp[-2], yyvsp[0])); } break; case 719: { yyval = make_node (nod_like, 2, yyvsp[-2], yyvsp[0]); } break; case 720: { yyval = make_node (nod_not, 1, make_node (nod_like, 2, yyvsp[-3], yyvsp[0])); } break; case 721: { yyval = make_node (nod_like, 3, yyvsp[-4], yyvsp[-2], yyvsp[0]); } break; case 722: { yyval = make_node (nod_not, 1, make_node (nod_like, 3, yyvsp[-5], yyvsp[-2], yyvsp[0])); } break; case 723: { yyval = make_node (nod_eql_any, 2, yyvsp[-2], yyvsp[0]); } break; case 724: { yyval = make_node (nod_not, 1, make_node (nod_eql_any, 2, yyvsp[-3], yyvsp[0])); } break; case 725: { yyval = make_node (nod_containing, 2, yyvsp[-2], yyvsp[0]); } break; case 726: { yyval = make_node (nod_not, 1, make_node (nod_containing, 2, yyvsp[-3], yyvsp[0])); } break; case 727: { yyval = make_node (nod_starting, 2, yyvsp[-2], yyvsp[0]); } break; case 728: { yyval = make_node (nod_not, 1, make_node (nod_starting, 2, yyvsp[-3], yyvsp[0])); } break; case 729: { yyval = make_node (nod_starting, 2, yyvsp[-3], yyvsp[0]); } break; case 730: { yyval = make_node (nod_not, 1, make_node (nod_starting, 2, yyvsp[-4], yyvsp[0])); } break; case 731: { yyval = make_node (nod_exists, 1, yyvsp[-1]); } break; case 732: { yyval = make_node (nod_singular, 1, yyvsp[-1]); } break; case 733: { yyval = make_node (nod_missing, 1, yyvsp[-2]); } break; case 734: { yyval = make_node (nod_not, 1, make_node (nod_missing, 1, yyvsp[-3])); } break; case 735: { yyval = make_list (yyvsp[-1]); } break; case 736: { yyval = yyvsp[-1]; } break; case 737: { yyval = make_node (nod_select_expr, e_sel_count, yyvsp[-6], make_list (yyvsp[-5]), yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], yyvsp[0], NULL); } break; case 738: { yyval = make_node (nod_select_expr, e_sel_count, yyvsp[-6], make_list (yyvsp[-5]), yyvsp[-4], yyvsp[-3], yyvsp[-2], yyvsp[-1], yyvsp[0], MAKE_constant ((STR) 1, CONSTANT_SLONG)); } break; case 746: { yyval = make_node (nod_negate, 1, yyvsp[0]); } break; case 747: { yyval = yyvsp[0]; } break; case 748: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_add2, 2, yyvsp[-2], yyvsp[0]); else yyval = make_node (nod_add, 2, yyvsp[-2], yyvsp[0]); } break; case 749: { yyval = make_node (nod_concatenate, 2, yyvsp[-2], yyvsp[0]); } break; case 750: { yyval = make_node (nod_collate, e_coll_count, (NOD) yyvsp[0], yyvsp[-2]); } break; case 751: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_subtract2, 2, yyvsp[-2], yyvsp[0]); else yyval = make_node (nod_subtract, 2, yyvsp[-2], yyvsp[0]); } break; case 752: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_multiply2, 2, yyvsp[-2], yyvsp[0]); else yyval = make_node (nod_multiply, 2, yyvsp[-2], yyvsp[0]); } break; case 753: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_divide2, 2, yyvsp[-2], yyvsp[0]); else yyval = make_node (nod_divide, 2, yyvsp[-2], yyvsp[0]); } break; case 754: { yyval = yyvsp[-1]; } break; case 755: { yyval = yyvsp[-1]; } break; case 756: { yyval = make_node (nod_user_name, 0, NULL); } break; case 757: { yyval = make_node (nod_dbkey, 1, NULL); } break; case 758: { yyval = make_node (nod_dbkey, 1, yyvsp[-2]); } break; case 759: { yyval = make_node (nod_dom_value, 0, NULL); } break; case 760: { yyval = yyvsp[0]; } break; case 761: { if (client_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_dialect_datatype_unsupport, gds_arg_number, client_dialect, gds_arg_string, "DATE", 0); if (db_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_db_dialect_dtype_unsupport, gds_arg_number, db_dialect, gds_arg_string, "DATE", 0); yyval = make_node (nod_current_date, 0, NULL); } break; case 762: { if (client_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_dialect_datatype_unsupport, gds_arg_number, client_dialect, gds_arg_string, "TIME", 0); if (db_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_db_dialect_dtype_unsupport, gds_arg_number, db_dialect, gds_arg_string, "TIME", 0); yyval = make_node (nod_current_time, 0, NULL); } break; case 763: { yyval = make_node (nod_current_timestamp, 0, NULL); } break; case 764: { yyval = make_node (nod_array, 2, yyvsp[-3], make_list (yyvsp[-1])); } break; case 766: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 768: { yyval = make_node (nod_negate, 1, yyvsp[0]); } break; case 769: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_STRING); } break; case 770: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_SLONG); } break; case 771: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_DOUBLE); } break; case 772: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_SINT64); } break; case 773: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_SINT64); } break; case 775: { yyval = MAKE_str_constant ((STR) yyvsp[0], att_charset); } break; case 776: { if (client_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_dialect_datatype_unsupport, gds_arg_number, client_dialect, gds_arg_string, "DATE", 0); if (db_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_db_dialect_dtype_unsupport, gds_arg_number, db_dialect, gds_arg_string, "DATE", 0); yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_DATE); } break; case 777: { if (client_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_dialect_datatype_unsupport, gds_arg_number, client_dialect, gds_arg_string, "TIME", 0); if (db_dialect < SQL_DIALECT_V6_TRANSITION) ERRD_post (gds_sqlerr, gds_arg_number, (SLONG) -104, gds_arg_gds, isc_sql_db_dialect_dtype_unsupport, gds_arg_number, db_dialect, gds_arg_string, "TIME", 0); yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_TIME); } break; case 778: { yyval = MAKE_constant ((STR) yyvsp[0], CONSTANT_TIMESTAMP); } break; case 782: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 783: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 784: { yyval = make_node (nod_list, 2, yyvsp[-2], yyvsp[0]); } break; case 785: { yyval = make_node (nod_parameter, 0, NULL); } break; case 786: { yyval = make_node (nod_user_name, 0, NULL); } break; case 787: { yyval = yyvsp[0]; } break; case 788: { ((STR) yyvsp[0])->str_charset = (TEXT *) yyvsp[-1]; yyval = yyvsp[0]; } break; case 790: { yyval = (NOD) - (SLONG) yyvsp[0]; } break; case 791: { if ((SLONG) yyvsp[0] > SHRT_POS_MAX) yyabandon (-842, isc_expec_short); /* Short integer expected */ yyval = yyvsp[0];} break; case 792: { if ((SLONG) yyvsp[0] > SHRT_NEG_MAX) yyabandon (-842, isc_expec_short); /* Short integer expected */ yyval = yyvsp[0];} break; case 793: { if ((SLONG) yyvsp[0] == 0) yyabandon (-842, isc_expec_positive); /* Positive number expected */ yyval = yyvsp[0];} break; case 794: { if ((SLONG) yyvsp[0] > SHRT_UNSIGNED_MAX) yyabandon (-842, isc_expec_ushort); /* Unsigned short integer expected */ yyval = yyvsp[0];} break; case 796: { yyval = (NOD) - (SLONG) yyvsp[0]; } break; case 797: { yyval = yyvsp[0];} break; case 798: { yyval = make_node (nod_agg_count, 0, NULL); } break; case 799: { yyval = make_node (nod_agg_count, 1, yyvsp[-1]); } break; case 800: { yyval = make_flag_node (nod_agg_count, NOD_AGG_DISTINCT, 1, yyvsp[-1]); } break; case 801: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_agg_total2, 1, yyvsp[-1]); else yyval = make_node (nod_agg_total, 1, yyvsp[-1]); } break; case 802: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_flag_node (nod_agg_total2, NOD_AGG_DISTINCT, 1, yyvsp[-1]); else yyval = make_flag_node (nod_agg_total, NOD_AGG_DISTINCT, 1, yyvsp[-1]); } break; case 803: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_agg_average2, 1, yyvsp[-1]); else yyval = make_node (nod_agg_average, 1, yyvsp[-1]); } break; case 804: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_flag_node (nod_agg_average2, NOD_AGG_DISTINCT, 1, yyvsp[-1]); else yyval = make_flag_node (nod_agg_average, NOD_AGG_DISTINCT, 1, yyvsp[-1]); } break; case 805: { yyval = make_node (nod_agg_min, 1, yyvsp[-1]); } break; case 806: { yyval = make_node (nod_agg_min, 1, yyvsp[-1]); } break; case 807: { yyval = make_node (nod_agg_max, 1, yyvsp[-1]); } break; case 808: { yyval = make_node (nod_agg_max, 1, yyvsp[-1]); } break; case 809: { yyval = make_node (nod_cast, e_cast_count, yyvsp[-1], yyvsp[-3]); } break; case 810: { yyval = make_node (nod_upcase, 1, yyvsp[-1]); } break; case 811: { if (client_dialect >= SQL_DIALECT_V6_TRANSITION) yyval = make_node (nod_gen_id2, 2, yyvsp[-3], yyvsp[-1]); else yyval = make_node (nod_gen_id, 2, yyvsp[-3], yyvsp[-1]); } break; case 812: { yyval = make_node (nod_extract, e_extract_count, yyvsp[-3], yyvsp[-1]); } break; case 813: { yyval = make_node (nod_udf, 2, yyvsp[-3], yyvsp[-1]); } break; case 814: { yyval = make_node (nod_udf, 1, yyvsp[-2]); } break; case 815: { yyval = MAKE_constant ((STR)blr_extract_year, CONSTANT_SLONG); } break; case 816: { yyval = MAKE_constant ((STR)blr_extract_month, CONSTANT_SLONG); } break; case 817: { yyval = MAKE_constant ((STR)blr_extract_day, CONSTANT_SLONG); } break; case 818: { yyval = MAKE_constant ((STR)blr_extract_hour, CONSTANT_SLONG); } break; case 819: { yyval = MAKE_constant ((STR)blr_extract_minute, CONSTANT_SLONG); } break; case 820: { yyval = MAKE_constant ((STR)blr_extract_second, CONSTANT_SLONG); } break; case 821: { yyval = MAKE_constant ((STR)blr_extract_weekday, CONSTANT_SLONG); } break; case 822: { yyval = MAKE_constant ((STR)blr_extract_yearday, CONSTANT_SLONG); } break; case 825: { yyval = make_node (nod_null, 0, NULL); } break; } DSQL_DSQL_yyssp -= yym; yystate = *DSQL_DSQL_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; *++DSQL_DSQL_yyssp = YYFINAL; *++yyvsp = yyval; if (DSQL_yychar < 0) { if ((DSQL_yychar = yylex(client_dialect, db_dialect, parser_version, stmt_ambiguous)) < 0) DSQL_yychar = 0; #if YYDEBUG if (yydebug) { yys = 0; if (DSQL_yychar <= YYMAXTOKEN) yys = yyname[DSQL_yychar]; if (!yys) yys = "illegal-symbol"; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, DSQL_yychar, yys); } #endif } if (DSQL_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, *DSQL_DSQL_yyssp, yystate); #endif if (DSQL_DSQL_yyssp >= DSQL_yyss + yystacksize - 1) { goto yyoverflow; } *++DSQL_DSQL_yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: return (1); yyaccept: return (0); }