/* original parser id follows */ /* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYPATCH 20140409 #define YYEMPTY (-1) #define yyclearin (yychar = YYEMPTY) #define yyerrok (yyerrflag = 0) #define YYRECOVERING() (yyerrflag != 0) #define YYENOMEM (-2) #define YYEOF 0 #define YYPREFIX "yy" #define YYPURE 0 #line 68 "gram.y" #include #include #include "twm.h" #include "menus.h" #include "icons.h" #include "windowbox.h" #include "add_window.h" #include "list.h" #include "util.h" #include "screen.h" #include "parse.h" #include "cursor.h" #ifdef VMS # include # include #else # include # include #endif static char *Action = ""; static char *Name = ""; static char *defstring = "default"; static MenuRoot *root, *pull = NULL; static char *curWorkSpc; static char *client, *workspace; static MenuItem *lastmenuitem = (MenuItem*) 0; extern void yyerror(char *s); extern void RemoveDQuote(char *str); static MenuRoot *GetRoot(char *name, char *fore, char *back); static Bool CheckWarpScreenArg(register char *s); static Bool CheckWarpRingArg(register char *s); static Bool CheckColormapArg(register char *s); static void GotButton(int butt, int func); static void GotKey(char *key, int func); static void GotTitleButton(char *bitmapname, int func, Bool rightside); static char *ptr; static name_list **list; static int cont = 0; static int color; Bool donttoggleworkspacemanagerstate = FALSE; int mods = 0; unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask); extern void twmrc_error_prefix(void); extern int yylex(void); extern int yyparse(void); #line 121 "gram.y" #ifdef YYSTYPE #undef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 #endif #ifndef YYSTYPE_IS_DECLARED #define YYSTYPE_IS_DECLARED 1 typedef union { int num; char *ptr; } YYSTYPE; #endif /* !YYSTYPE_IS_DECLARED */ #line 86 "gram.tab.c" /* compatibility with bison */ #ifdef YYPARSE_PARAM /* compatibility with FreeBSD */ # ifdef YYPARSE_PARAM_TYPE # define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) # else # define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) # endif #else # define YYPARSE_DECL() yyparse(void) #endif /* Parameters sent to lex. */ #ifdef YYLEX_PARAM # define YYLEX_DECL() yylex(void *YYLEX_PARAM) # define YYLEX yylex(YYLEX_PARAM) #else # define YYLEX_DECL() yylex(void) # define YYLEX yylex() #endif /* Parameters sent to yyerror. */ #ifndef YYERROR_DECL #define YYERROR_DECL() yyerror(const char *s) #endif #ifndef YYERROR_CALL #define YYERROR_CALL(msg) yyerror(msg) #endif extern int YYPARSE_DECL(); #define LB 257 #define RB 258 #define LP 259 #define RP 260 #define MENUS 261 #define MENU 262 #define BUTTON 263 #define DEFAULT_FUNCTION 264 #define PLUS 265 #define MINUS 266 #define ALL 267 #define OR 268 #define CURSORS 269 #define PIXMAPS 270 #define ICONS 271 #define COLOR 272 #define SAVECOLOR 273 #define MONOCHROME 274 #define FUNCTION 275 #define ICONMGR_SHOW 276 #define ICONMGR 277 #define ALTER 278 #define WINDOW_FUNCTION 279 #define ZOOM 280 #define ICONMGRS 281 #define ICONMGR_GEOMETRY 282 #define ICONMGR_NOSHOW 283 #define MAKE_TITLE 284 #define ICONIFY_BY_UNMAPPING 285 #define DONT_ICONIFY_BY_UNMAPPING 286 #define NO_BORDER 287 #define NO_ICON_TITLE 288 #define NO_TITLE 289 #define AUTO_RAISE 290 #define NO_HILITE 291 #define ICON_REGION 292 #define WINDOW_REGION 293 #define META 294 #define SHIFT 295 #define LOCK 296 #define CONTROL 297 #define WINDOW 298 #define TITLE 299 #define ICON 300 #define ROOT 301 #define FRAME 302 #define COLON 303 #define EQUALS 304 #define SQUEEZE_TITLE 305 #define DONT_SQUEEZE_TITLE 306 #define START_ICONIFIED 307 #define NO_TITLE_HILITE 308 #define TITLE_HILITE 309 #define MOVE 310 #define RESIZE 311 #define WAITC 312 #define SELECT 313 #define KILL 314 #define LEFT_TITLEBUTTON 315 #define RIGHT_TITLEBUTTON 316 #define NUMBER 317 #define KEYWORD 318 #define NKEYWORD 319 #define CKEYWORD 320 #define CLKEYWORD 321 #define FKEYWORD 322 #define FSKEYWORD 323 #define SKEYWORD 324 #define SSKEYWORD 325 #define DKEYWORD 326 #define JKEYWORD 327 #define WINDOW_RING 328 #define WINDOW_RING_EXCLUDE 329 #define WARP_CURSOR 330 #define ERRORTOKEN 331 #define NO_STACKMODE 332 #define ALWAYS_ON_TOP 333 #define WORKSPACE 334 #define WORKSPACES 335 #define WORKSPCMGR_GEOMETRY 336 #define OCCUPYALL 337 #define OCCUPYLIST 338 #define MAPWINDOWCURRENTWORKSPACE 339 #define MAPWINDOWDEFAULTWORKSPACE 340 #define UNMAPBYMOVINGFARAWAY 341 #define OPAQUEMOVE 342 #define NOOPAQUEMOVE 343 #define OPAQUERESIZE 344 #define NOOPAQUERESIZE 345 #define DONTSETINACTIVE 346 #define CHANGE_WORKSPACE_FUNCTION 347 #define DEICONIFY_FUNCTION 348 #define ICONIFY_FUNCTION 349 #define AUTOSQUEEZE 350 #define STARTSQUEEZED 351 #define DONT_SAVE 352 #define AUTO_LOWER 353 #define ICONMENU_DONTSHOW 354 #define WINDOW_BOX 355 #define IGNOREMODIFIER 356 #define WINDOW_GEOMETRIES 357 #define ALWAYSSQUEEZETOGRAVITY 358 #define VIRTUAL_SCREENS 359 #define IGNORE_TRANSIENT 360 #define DONTTOGGLEWORKSPACEMANAGERSTATE 361 #define STRING 362 #define YYERRCODE 256 typedef short YYINT; static const YYINT yylhs[] = { -1, 0, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 16, 10, 17, 10, 18, 10, 19, 10, 20, 10, 21, 10, 10, 10, 10, 10, 23, 10, 25, 10, 10, 10, 10, 10, 28, 10, 10, 29, 10, 10, 30, 10, 10, 31, 10, 10, 32, 10, 10, 10, 10, 34, 10, 35, 10, 10, 10, 10, 10, 36, 10, 38, 10, 39, 41, 10, 42, 10, 43, 10, 45, 10, 46, 10, 47, 10, 48, 10, 10, 49, 10, 50, 10, 51, 10, 10, 53, 10, 54, 10, 55, 10, 10, 56, 10, 10, 57, 10, 58, 10, 10, 59, 10, 60, 10, 61, 10, 10, 62, 10, 10, 63, 10, 10, 64, 10, 65, 10, 66, 10, 10, 67, 10, 10, 69, 10, 70, 10, 72, 10, 74, 10, 76, 10, 78, 10, 79, 10, 10, 10, 10, 10, 10, 80, 10, 10, 81, 10, 10, 82, 10, 84, 10, 86, 10, 11, 12, 12, 12, 12, 12, 13, 6, 7, 8, 40, 40, 89, 89, 89, 89, 89, 89, 89, 87, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 88, 88, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 33, 92, 92, 93, 93, 93, 26, 94, 94, 95, 27, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 75, 98, 98, 99, 101, 99, 99, 77, 102, 102, 103, 103, 100, 104, 104, 105, 83, 106, 106, 107, 85, 108, 108, 109, 14, 110, 14, 14, 112, 14, 111, 111, 52, 113, 113, 114, 114, 37, 115, 115, 116, 118, 116, 117, 119, 119, 120, 120, 120, 120, 120, 22, 22, 22, 22, 24, 24, 24, 24, 15, 121, 121, 122, 44, 123, 123, 126, 124, 127, 124, 129, 124, 125, 130, 130, 131, 128, 132, 132, 133, 73, 134, 134, 135, 71, 136, 136, 137, 68, 138, 138, 139, 139, 2, 2, 5, 5, 5, 3, 1, 4, }; static const YYINT yylen[] = { 2, 1, 0, 2, 1, 1, 1, 1, 1, 6, 7, 8, 9, 0, 8, 0, 9, 0, 10, 0, 11, 0, 6, 0, 5, 3, 2, 3, 2, 0, 3, 0, 3, 2, 1, 2, 2, 0, 3, 1, 0, 3, 1, 0, 3, 1, 0, 3, 1, 0, 3, 1, 4, 4, 0, 4, 0, 4, 2, 2, 2, 2, 0, 3, 0, 3, 0, 0, 6, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 1, 0, 3, 0, 3, 0, 3, 1, 0, 3, 0, 3, 0, 3, 1, 0, 3, 1, 0, 3, 0, 3, 1, 0, 3, 0, 3, 0, 3, 1, 0, 3, 1, 0, 3, 1, 0, 3, 0, 3, 0, 3, 1, 0, 3, 1, 0, 9, 0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 0, 3, 2, 2, 2, 2, 2, 0, 3, 1, 0, 3, 1, 0, 3, 0, 3, 0, 3, 1, 2, 1, 3, 2, 1, 2, 4, 6, 6, 0, 2, 1, 1, 1, 1, 2, 2, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, 2, 2, 3, 3, 3, 0, 2, 2, 3, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 2, 2, 0, 4, 2, 3, 0, 2, 1, 1, 3, 0, 2, 2, 3, 0, 2, 2, 3, 0, 2, 1, 1, 0, 5, 1, 0, 3, 0, 5, 3, 0, 2, 3, 4, 3, 0, 2, 1, 0, 3, 3, 0, 2, 1, 2, 3, 4, 5, 3, 4, 5, 6, 3, 4, 5, 6, 3, 0, 2, 1, 3, 0, 2, 0, 3, 0, 4, 0, 4, 3, 0, 2, 1, 3, 0, 2, 1, 3, 0, 2, 2, 3, 0, 2, 1, 3, 0, 2, 2, 7, 1, 2, 1, 2, 2, 2, 1, 1, }; static const YYINT yydefred[] = { 2, 0, 0, 4, 0, 0, 0, 0, 0, 133, 135, 137, 139, 0, 91, 0, 0, 89, 0, 0, 117, 0, 62, 104, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 158, 0, 0, 0, 0, 152, 0, 0, 99, 64, 0, 69, 73, 29, 31, 75, 0, 0, 0, 0, 84, 0, 0, 0, 77, 79, 106, 0, 71, 0, 66, 154, 0, 156, 114, 116, 338, 0, 0, 3, 5, 6, 7, 8, 0, 339, 337, 332, 0, 141, 215, 36, 211, 35, 0, 0, 0, 0, 131, 0, 142, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 144, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 60, 168, 58, 59, 61, 0, 0, 333, 0, 0, 320, 134, 240, 136, 247, 138, 140, 0, 299, 92, 272, 90, 25, 87, 118, 38, 63, 105, 109, 112, 122, 97, 0, 0, 269, 268, 120, 94, 0, 0, 0, 0, 161, 150, 153, 147, 102, 100, 277, 65, 27, 70, 303, 74, 0, 30, 0, 32, 76, 41, 44, 47, 50, 85, 78, 80, 107, 125, 72, 23, 168, 256, 155, 83, 260, 157, 115, 0, 0, 0, 328, 130, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 210, 0, 212, 0, 0, 0, 324, 132, 0, 0, 0, 21, 0, 52, 205, 55, 53, 57, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 171, 172, 173, 190, 169, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 319, 0, 321, 239, 0, 0, 241, 246, 250, 249, 248, 0, 298, 301, 300, 271, 0, 273, 0, 0, 265, 0, 0, 276, 0, 278, 302, 0, 0, 305, 304, 290, 0, 294, 0, 24, 0, 255, 0, 257, 259, 262, 261, 174, 175, 0, 0, 0, 327, 0, 329, 233, 225, 223, 219, 221, 217, 227, 229, 231, 235, 237, 322, 245, 0, 323, 326, 325, 0, 0, 22, 0, 204, 0, 206, 0, 307, 309, 0, 291, 0, 295, 0, 68, 258, 200, 202, 198, 201, 199, 192, 193, 194, 195, 196, 0, 197, 203, 191, 188, 189, 185, 187, 186, 179, 180, 181, 182, 183, 0, 184, 178, 127, 0, 330, 0, 0, 274, 0, 0, 0, 0, 334, 0, 0, 0, 207, 283, 281, 0, 0, 312, 306, 292, 0, 296, 0, 167, 166, 0, 0, 252, 244, 275, 0, 0, 14, 335, 336, 270, 209, 208, 0, 0, 308, 316, 310, 0, 293, 297, 128, 0, 0, 0, 0, 16, 0, 282, 0, 284, 0, 311, 314, 313, 0, 251, 0, 253, 0, 18, 165, 0, 315, 318, 317, 0, 254, 20, 0, 331, 0, 289, }; static const YYINT yydgoto[] = { 1, 73, 85, 74, 82, 419, 422, 156, 152, 2, 75, 76, 77, 78, 79, 171, 415, 441, 460, 474, 315, 269, 207, 129, 209, 130, 89, 87, 102, 132, 133, 134, 135, 262, 191, 193, 103, 201, 125, 146, 229, 332, 127, 144, 205, 128, 131, 140, 141, 148, 136, 100, 173, 98, 95, 114, 108, 124, 123, 104, 142, 105, 106, 150, 101, 113, 107, 143, 233, 435, 158, 254, 169, 163, 90, 165, 91, 167, 92, 93, 122, 120, 121, 224, 147, 227, 149, 342, 341, 280, 407, 394, 318, 370, 161, 249, 160, 246, 251, 302, 438, 411, 252, 306, 458, 473, 271, 335, 272, 338, 111, 259, 112, 256, 313, 265, 321, 424, 371, 449, 465, 255, 310, 266, 326, 428, 374, 425, 452, 426, 453, 469, 466, 480, 250, 298, 307, 363, 283, 346, }; static const YYINT yysindex[] = { 0, 0, 3222, 0, -355, -280, -303, -204, -190, 0, 0, 0, 0, -355, 0, -303, -280, 0, -355, 0, 0, 0, 0, 0, 0, 0, 0, 0, -355, -355, 0, 0, 0, 0, -355, -355, 0, -280, -355, -355, 0, 0, 0, 0, 0, 0, -355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -303, -303, -303, 0, 0, 0, 0, 0, -355, 0, 0, 0, 0, 0, 0, 0, -261, -271, 0, 0, 0, 0, 0, -196, 0, 0, 0, -355, 0, 0, 0, 0, 0, -189, -180, -179, -180, 0, -178, 0, 0, -176, -280, -178, -178, -178, -178, -178, -178, -178, -178, -178, -239, -238, -172, -178, -178, -178, -249, -211, 0, 0, -355, -178, -178, -178, -178, -178, -163, -280, -178, -160, -159, -157, -178, -178, -178, -178, -178, -178, 0, 0, 0, -178, -178, -178, -178, -178, -355, -144, -139, -178, -123, -178, 0, 0, 0, 0, 0, 0, -355, -119, 0, 44, -235, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -175, -156, 0, 0, 0, 0, -303, -85, -303, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -355, 0, -355, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 91, -129, 0, 0, 0, -355, -355, -355, -355, -355, -355, -355, -355, -355, -355, -355, 0, 0, -355, 0, -250, -219, -252, 0, 0, -246, -245, -280, 0, -243, 0, 0, 0, 0, 0, -242, -248, -241, -240, -178, -21, -230, -229, 0, -280, -280, 0, 0, 0, 0, 0, 0, -355, -222, -355, -355, -355, -355, -355, -355, -355, -355, -355, -355, -355, 0, 0, -355, 0, 0, -355, -355, 0, 0, 0, 0, 0, -247, 0, 0, 0, 0, -355, 0, -280, -178, 0, -152, -209, 0, 0, 0, 0, -355, -355, 0, 0, 0, -220, 0, -214, 0, -77, 0, -355, 0, 0, 0, 0, 0, 0, -91, -195, -78, 0, -227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -296, -355, 0, -225, 0, -244, 0, -74, 0, 0, -73, 0, -210, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -303, 0, 0, 0, -355, 0, -72, -280, 0, -355, -178, -280, -280, 0, -280, -303, -303, 0, 0, 0, -73, -69, 0, 0, 0, -68, 0, -67, 0, 0, -119, -111, 0, 0, 0, -355, -178, 0, 0, 0, 0, 0, 0, 193, -201, 0, 0, 0, -200, 0, 0, 0, -355, -194, 0, -178, 0, -303, 0, -355, 0, -193, 0, 0, 0, -66, 0, -355, 0, -178, 0, 0, -355, 0, 0, 0, -303, 0, 0, -355, 0, -355, 0, }; static const YYINT yyrindex[] = { 0, 0, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2262, 0, 0, 229, 0, 336, 0, 0, 443, 550, 657, 764, 0, 0, 871, 978, 0, 1085, 0, 0, 0, 0, 2903, 3009, 1192, 0, 1299, 1406, 0, 0, 0, 0, 0, 0, 0, 0, 1513, 1620, 1727, 1834, 0, 0, 0, 0, 0, 0, 0, 1941, 0, 0, 0, 0, 2048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, -60, 0, 0, 3116, 0, 0, 0, 0, 0, 0, 2476, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 113, 119, 3327, 3333, 3351, 3357, 3414, 3420, 3438, 3444, 3501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -231, 0, 0, 0, 0, 2583, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2689, 0, 0, 0, 0, 0, 0, 3492, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2155, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -53, 0, 0, 0, 0, 0, 0, -52, 0, -45, 0, }; static const YYINT yygindex[] = { 0, -4, -12, -120, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, -151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 3815 static const YYINT yytable[] = { 80, 97, 230, 96, 280, 279, 303, 72, 296, 94, 322, 361, 308, 311, 99, 316, 319, 327, 329, 83, 84, 81, 117, 247, 109, 110, 243, 242, 333, 336, 115, 116, 409, 153, 118, 119, 344, 81, 375, 299, 416, 417, 126, 151, 377, 137, 138, 139, 429, 368, 323, 83, 84, 86, 5, 190, 431, 463, 467, 420, 421, 145, 155, 157, 471, 478, 72, 88, 162, 304, 154, 270, 395, 396, 248, 83, 84, 164, 166, 170, 159, 172, 397, 398, 174, 186, 324, 184, 185, 242, 242, 72, 81, 192, 200, 83, 84, 204, 206, 399, 208, 300, 301, 400, 401, 402, 403, 404, 405, 279, 72, 202, 72, 222, 72, 194, 72, 72, 223, 72, 72, 72, 72, 175, 176, 177, 178, 179, 180, 181, 182, 183, 72, 72, 226, 187, 188, 189, 232, 406, 72, 221, 72, 195, 196, 197, 198, 199, 72, 253, 203, 257, 72, 231, 210, 211, 212, 213, 214, 215, 72, 72, 72, 216, 217, 218, 219, 220, 72, 72, 258, 225, 261, 228, 282, 367, 381, 382, 260, 170, 263, 379, 408, 423, 427, 437, 383, 384, 451, 170, 454, 455, 457, 129, 481, 1, 54, 56, 369, 170, 67, 285, 267, 385, 268, 286, 287, 386, 387, 388, 389, 390, 391, 288, 264, 170, 170, 170, 170, 456, 168, 0, 450, 0, 170, 0, 0, 0, 0, 88, 0, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 314, 392, 295, 0, 297, 273, 305, 0, 0, 309, 312, 0, 0, 317, 0, 274, 0, 339, 340, 320, 325, 328, 330, 0, 0, 334, 337, 0, 448, 72, 0, 275, 276, 277, 278, 0, 343, 345, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 0, 331, 358, 0, 362, 359, 360, 0, 365, 0, 0, 234, 0, 0, 0, 235, 236, 364, 0, 0, 0, 0, 273, 0, 0, 0, 0, 0, 372, 373, 237, 0, 274, 376, 0, 378, 0, 0, 0, 380, 0, 0, 410, 0, 0, 39, 393, 366, 275, 276, 277, 278, 238, 239, 0, 240, 0, 279, 413, 0, 0, 418, 0, 241, 242, 243, 244, 245, 273, 412, 414, 0, 0, 0, 0, 0, 0, 0, 274, 0, 234, 430, 0, 432, 234, 234, 226, 0, 433, 0, 226, 226, 0, 0, 275, 276, 277, 278, 0, 234, 0, 0, 434, 281, 0, 226, 439, 0, 0, 0, 443, 444, 0, 445, 436, 0, 0, 446, 447, 440, 0, 234, 234, 0, 234, 0, 0, 226, 226, 0, 226, 0, 234, 234, 234, 234, 234, 0, 226, 226, 226, 226, 226, 0, 0, 459, 0, 442, 0, 0, 0, 0, 110, 0, 464, 0, 0, 0, 468, 476, 0, 0, 470, 472, 0, 0, 0, 0, 0, 477, 273, 479, 0, 461, 0, 0, 0, 482, 485, 0, 274, 0, 484, 0, 0, 0, 0, 0, 0, 486, 0, 487, 475, 0, 88, 86, 275, 276, 277, 278, 88, 88, 88, 0, 0, 462, 483, 88, 88, 88, 88, 88, 88, 88, 88, 0, 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 88, 88, 0, 0, 0, 0, 0, 0, 88, 88, 0, 88, 88, 0, 113, 0, 0, 88, 88, 0, 0, 88, 88, 88, 0, 88, 88, 0, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 39, 37, 0, 0, 0, 0, 39, 39, 39, 0, 0, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 0, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 39, 39, 0, 0, 0, 0, 0, 0, 39, 39, 0, 39, 39, 0, 123, 0, 0, 39, 39, 0, 0, 39, 39, 39, 0, 39, 39, 0, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 110, 108, 0, 0, 0, 0, 110, 110, 110, 0, 0, 0, 0, 110, 110, 110, 110, 110, 110, 110, 110, 0, 0, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 110, 110, 110, 0, 0, 0, 0, 0, 0, 110, 110, 0, 110, 110, 0, 98, 0, 0, 110, 110, 0, 0, 110, 110, 110, 0, 110, 110, 0, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 113, 111, 0, 0, 0, 0, 113, 113, 113, 0, 0, 0, 0, 113, 113, 113, 113, 113, 113, 113, 113, 0, 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 113, 113, 113, 0, 0, 0, 0, 0, 0, 113, 113, 0, 113, 113, 0, 263, 0, 0, 113, 113, 0, 0, 113, 113, 113, 0, 113, 113, 0, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 123, 121, 0, 0, 0, 0, 123, 123, 123, 0, 0, 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, 0, 0, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 123, 123, 123, 0, 0, 0, 0, 0, 0, 123, 123, 0, 123, 123, 0, 266, 0, 0, 123, 123, 0, 0, 123, 123, 123, 0, 123, 123, 0, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 98, 96, 0, 0, 0, 0, 98, 98, 98, 0, 0, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 0, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 98, 0, 0, 0, 0, 0, 0, 98, 98, 0, 98, 98, 0, 95, 0, 0, 98, 98, 0, 0, 98, 98, 98, 0, 98, 98, 0, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 263, 264, 0, 0, 0, 0, 263, 263, 263, 0, 0, 0, 0, 263, 263, 263, 263, 263, 263, 263, 263, 0, 0, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, 263, 263, 263, 0, 0, 0, 0, 0, 0, 263, 263, 0, 263, 263, 0, 151, 0, 0, 263, 263, 0, 0, 263, 263, 263, 0, 263, 263, 0, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 266, 267, 0, 0, 0, 0, 266, 266, 266, 0, 0, 0, 0, 266, 266, 266, 266, 266, 266, 266, 266, 0, 0, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, 266, 266, 266, 0, 0, 0, 0, 0, 0, 266, 266, 0, 266, 266, 0, 148, 0, 0, 266, 266, 0, 0, 266, 266, 266, 0, 266, 266, 0, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 95, 93, 0, 0, 0, 0, 95, 95, 95, 0, 0, 0, 0, 95, 95, 95, 95, 95, 95, 95, 95, 0, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 95, 95, 0, 0, 0, 0, 0, 0, 95, 95, 0, 95, 95, 0, 103, 0, 0, 95, 95, 0, 0, 95, 95, 95, 0, 95, 95, 0, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 151, 149, 0, 0, 0, 0, 151, 151, 151, 0, 0, 0, 0, 151, 151, 151, 151, 151, 151, 151, 151, 0, 0, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 151, 151, 151, 0, 0, 0, 0, 0, 0, 151, 151, 0, 151, 151, 0, 42, 0, 0, 151, 151, 0, 0, 151, 151, 151, 0, 151, 151, 0, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 146, 0, 0, 0, 0, 148, 148, 148, 0, 0, 0, 0, 148, 148, 148, 148, 148, 148, 148, 148, 0, 0, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 148, 148, 0, 0, 0, 0, 0, 0, 148, 148, 0, 148, 148, 0, 45, 0, 0, 148, 148, 0, 0, 148, 148, 148, 0, 148, 148, 0, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 103, 101, 0, 0, 0, 0, 103, 103, 103, 0, 0, 0, 0, 103, 103, 103, 103, 103, 103, 103, 103, 0, 0, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 103, 103, 0, 0, 0, 0, 0, 0, 103, 103, 0, 103, 103, 0, 48, 0, 0, 103, 103, 0, 0, 103, 103, 103, 0, 103, 103, 0, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 42, 40, 0, 0, 0, 0, 42, 42, 42, 0, 0, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 42, 42, 42, 0, 0, 0, 0, 0, 0, 42, 42, 0, 42, 42, 0, 51, 0, 0, 42, 42, 0, 0, 42, 42, 42, 0, 42, 42, 0, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 43, 0, 0, 0, 0, 45, 45, 45, 0, 0, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 0, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 45, 45, 45, 0, 0, 0, 0, 0, 0, 45, 45, 0, 45, 45, 0, 126, 0, 0, 45, 45, 0, 0, 45, 45, 45, 0, 45, 45, 0, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 48, 46, 0, 0, 0, 0, 48, 48, 48, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48, 48, 48, 0, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 0, 0, 0, 0, 0, 0, 48, 48, 0, 48, 48, 0, 81, 0, 0, 48, 48, 0, 0, 48, 48, 48, 0, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 49, 0, 0, 0, 0, 51, 51, 51, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 51, 51, 0, 0, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, 0, 0, 0, 0, 0, 0, 51, 51, 0, 51, 51, 0, 12, 0, 0, 51, 51, 0, 0, 51, 51, 51, 0, 51, 51, 0, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 126, 124, 0, 0, 0, 0, 126, 126, 126, 0, 0, 0, 0, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 126, 126, 126, 0, 0, 0, 0, 0, 0, 126, 126, 0, 126, 126, 0, 34, 0, 0, 126, 126, 0, 0, 126, 126, 126, 0, 126, 126, 0, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 81, 82, 0, 0, 0, 0, 81, 81, 81, 0, 0, 0, 0, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 81, 81, 81, 0, 0, 0, 0, 0, 0, 81, 81, 0, 81, 81, 0, 26, 0, 0, 81, 81, 0, 0, 81, 81, 81, 0, 81, 81, 0, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 12, 19, 0, 0, 0, 0, 12, 12, 12, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0, 0, 0, 0, 0, 0, 12, 12, 0, 12, 12, 0, 28, 0, 0, 12, 12, 0, 0, 12, 12, 12, 0, 12, 12, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 34, 0, 0, 0, 0, 0, 34, 34, 34, 0, 0, 0, 0, 34, 34, 34, 34, 34, 34, 34, 34, 0, 0, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 34, 34, 0, 0, 0, 0, 0, 0, 34, 34, 0, 34, 34, 0, 9, 0, 0, 34, 34, 0, 0, 34, 34, 34, 0, 34, 34, 0, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 26, 0, 0, 0, 0, 0, 26, 26, 26, 0, 0, 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 26, 26, 0, 0, 0, 0, 0, 0, 26, 26, 0, 26, 26, 10, 0, 0, 0, 26, 26, 0, 0, 26, 26, 26, 0, 26, 26, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 28, 0, 0, 0, 0, 0, 28, 28, 28, 0, 0, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, 28, 28, 0, 28, 28, 11, 0, 0, 0, 28, 28, 0, 0, 28, 28, 28, 0, 28, 28, 0, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 9, 13, 0, 0, 0, 0, 9, 9, 9, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 9, 9, 0, 9, 9, 160, 0, 0, 0, 9, 9, 0, 0, 9, 9, 9, 0, 9, 9, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 15, 0, 0, 0, 0, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 10, 0, 0, 0, 0, 0, 0, 10, 10, 0, 10, 10, 163, 0, 0, 0, 10, 10, 0, 0, 10, 10, 10, 0, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 11, 17, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 11, 11, 0, 11, 11, 162, 0, 0, 0, 11, 11, 0, 0, 11, 11, 11, 0, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 160, 0, 0, 0, 0, 0, 160, 160, 160, 0, 0, 0, 0, 160, 160, 160, 160, 160, 160, 160, 160, 0, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 160, 160, 160, 0, 0, 0, 0, 0, 0, 160, 160, 0, 160, 160, 0, 0, 0, 0, 160, 160, 0, 0, 160, 160, 160, 0, 160, 160, 0, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 163, 0, 0, 0, 0, 0, 163, 163, 163, 0, 0, 0, 0, 163, 163, 163, 163, 163, 163, 163, 163, 0, 0, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 163, 163, 163, 0, 0, 0, 0, 0, 0, 163, 163, 0, 163, 163, 0, 0, 0, 0, 163, 163, 0, 0, 163, 163, 163, 0, 163, 163, 0, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 0, 162, 0, 0, 0, 0, 0, 162, 162, 162, 0, 0, 0, 0, 162, 162, 162, 162, 162, 162, 162, 162, 0, 0, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 162, 162, 162, 162, 0, 0, 0, 0, 0, 0, 162, 162, 0, 162, 162, 0, 0, 0, 0, 162, 162, 0, 0, 162, 162, 162, 0, 162, 162, 0, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 3, 0, 0, 0, 0, 0, 4, 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 0, 0, 0, 0, 0, 0, 34, 35, 0, 36, 37, 0, 0, 0, 0, 38, 39, 0, 0, 40, 41, 42, 0, 43, 44, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 224, 0, 0, 0, 224, 224, 220, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 222, 220, 0, 0, 222, 222, 218, 0, 0, 0, 218, 218, 0, 0, 0, 0, 0, 224, 224, 222, 224, 0, 0, 220, 220, 218, 220, 0, 224, 224, 224, 224, 224, 0, 220, 220, 220, 220, 220, 0, 0, 222, 222, 0, 222, 0, 0, 218, 218, 0, 218, 0, 222, 222, 222, 222, 222, 0, 218, 218, 218, 218, 218, 228, 0, 0, 0, 228, 228, 230, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 232, 230, 0, 0, 232, 232, 236, 0, 0, 0, 236, 236, 0, 0, 0, 0, 0, 228, 228, 232, 228, 0, 0, 230, 230, 236, 230, 0, 228, 228, 228, 228, 228, 0, 230, 230, 230, 230, 230, 0, 0, 232, 232, 0, 232, 0, 0, 236, 236, 0, 236, 0, 232, 232, 232, 232, 232, 0, 236, 236, 236, 236, 236, 238, 168, 0, 0, 238, 238, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 238, 0, 0, 0, 0, 0, 0, 0, 168, 168, 168, 168, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 238, 238, 0, 238, 0, 0, 0, 0, 0, 0, 0, 238, 238, 238, 238, 238, }; static const YYINT yycheck[] = { 4, 16, 153, 15, 257, 258, 258, 362, 258, 13, 258, 258, 258, 258, 18, 258, 258, 258, 258, 322, 323, 317, 37, 258, 28, 29, 257, 258, 258, 258, 34, 35, 259, 304, 38, 39, 258, 317, 258, 258, 265, 266, 46, 304, 258, 57, 58, 59, 258, 258, 298, 322, 323, 257, 263, 304, 258, 258, 258, 303, 304, 65, 74, 259, 258, 258, 362, 257, 257, 321, 74, 222, 267, 268, 309, 322, 323, 257, 257, 257, 84, 257, 277, 278, 99, 257, 334, 326, 326, 320, 321, 362, 317, 304, 257, 322, 323, 257, 257, 294, 257, 320, 321, 298, 299, 300, 301, 302, 303, 362, 362, 126, 362, 257, 362, 119, 362, 362, 257, 362, 362, 362, 362, 100, 101, 102, 103, 104, 105, 106, 107, 108, 362, 362, 257, 112, 113, 114, 257, 334, 362, 145, 362, 120, 121, 122, 123, 124, 362, 257, 127, 326, 362, 157, 131, 132, 133, 134, 135, 136, 362, 362, 362, 140, 141, 142, 143, 144, 362, 362, 326, 148, 257, 150, 303, 327, 267, 268, 190, 258, 192, 258, 260, 257, 257, 257, 277, 278, 257, 268, 258, 258, 303, 257, 260, 0, 257, 257, 318, 278, 258, 258, 206, 294, 208, 258, 258, 298, 299, 300, 301, 302, 303, 258, 193, 294, 295, 296, 297, 435, 93, -1, 425, -1, 303, -1, -1, -1, -1, 0, -1, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 257, 334, 248, -1, 250, 268, 252, -1, -1, 255, 256, -1, -1, 259, -1, 278, -1, 274, 275, 265, 266, 267, 268, -1, -1, 271, 272, -1, 421, 362, -1, 294, 295, 296, 297, -1, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, -1, 269, 297, -1, 307, 300, 301, -1, 314, -1, -1, 258, -1, -1, -1, 262, 263, 312, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, 323, 324, 277, -1, 278, 328, -1, 330, -1, -1, -1, 334, -1, -1, 345, -1, -1, 0, 341, 315, 294, 295, 296, 297, 299, 300, -1, 302, -1, 303, 364, -1, -1, 367, -1, 310, 311, 312, 313, 314, 268, 364, 365, -1, -1, -1, -1, -1, -1, -1, 278, -1, 258, 376, -1, 378, 262, 263, 258, -1, 391, -1, 262, 263, -1, -1, 294, 295, 296, 297, -1, 277, -1, -1, 405, 303, -1, 277, 412, -1, -1, -1, 416, 417, -1, 419, 409, -1, -1, 420, 421, 414, -1, 299, 300, -1, 302, -1, -1, 299, 300, -1, 302, -1, 310, 311, 312, 313, 314, -1, 310, 311, 312, 313, 314, -1, -1, 440, -1, 415, -1, -1, -1, -1, 0, -1, 449, -1, -1, -1, 453, 462, -1, -1, 457, 458, -1, -1, -1, -1, -1, 464, 268, 466, -1, 441, -1, -1, -1, 472, 481, -1, 278, -1, 477, -1, -1, -1, -1, -1, -1, 484, -1, 486, 460, -1, 256, 257, 294, 295, 296, 297, 262, 263, 264, -1, -1, 303, 474, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, 0, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, 0, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, 0, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, 0, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, 0, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, 0, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, -1, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 256, -1, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, -1, -1, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 305, 306, 307, 308, -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, 319, -1, -1, -1, -1, 324, 325, -1, -1, 328, 329, 330, -1, 332, 333, -1, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 258, -1, -1, -1, 262, 263, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, 277, -1, -1, -1, -1, 258, 277, -1, -1, 262, 263, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, 299, 300, 277, 302, -1, -1, 299, 300, 277, 302, -1, 310, 311, 312, 313, 314, -1, 310, 311, 312, 313, 314, -1, -1, 299, 300, -1, 302, -1, -1, 299, 300, -1, 302, -1, 310, 311, 312, 313, 314, -1, 310, 311, 312, 313, 314, 258, -1, -1, -1, 262, 263, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, 277, -1, -1, -1, -1, 258, 277, -1, -1, 262, 263, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, 299, 300, 277, 302, -1, -1, 299, 300, 277, 302, -1, 310, 311, 312, 313, 314, -1, 310, 311, 312, 313, 314, -1, -1, 299, 300, -1, 302, -1, -1, 299, 300, -1, 302, -1, 310, 311, 312, 313, 314, -1, 310, 311, 312, 313, 314, 258, 268, -1, -1, 262, 263, -1, -1, -1, -1, -1, 278, -1, -1, -1, -1, -1, -1, -1, 277, -1, -1, -1, -1, -1, -1, -1, 294, 295, 296, 297, -1, -1, -1, -1, -1, 303, -1, -1, -1, -1, 299, 300, -1, 302, -1, -1, -1, -1, -1, -1, -1, 310, 311, 312, 313, 314, }; #define YYFINAL 1 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 362 #define YYUNDFTOKEN 504 #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG static const char *const yyname[] = { "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"LB","RB","LP","RP","MENUS", "MENU","BUTTON","DEFAULT_FUNCTION","PLUS","MINUS","ALL","OR","CURSORS", "PIXMAPS","ICONS","COLOR","SAVECOLOR","MONOCHROME","FUNCTION","ICONMGR_SHOW", "ICONMGR","ALTER","WINDOW_FUNCTION","ZOOM","ICONMGRS","ICONMGR_GEOMETRY", "ICONMGR_NOSHOW","MAKE_TITLE","ICONIFY_BY_UNMAPPING", "DONT_ICONIFY_BY_UNMAPPING","NO_BORDER","NO_ICON_TITLE","NO_TITLE","AUTO_RAISE", "NO_HILITE","ICON_REGION","WINDOW_REGION","META","SHIFT","LOCK","CONTROL", "WINDOW","TITLE","ICON","ROOT","FRAME","COLON","EQUALS","SQUEEZE_TITLE", "DONT_SQUEEZE_TITLE","START_ICONIFIED","NO_TITLE_HILITE","TITLE_HILITE","MOVE", "RESIZE","WAITC","SELECT","KILL","LEFT_TITLEBUTTON","RIGHT_TITLEBUTTON", "NUMBER","KEYWORD","NKEYWORD","CKEYWORD","CLKEYWORD","FKEYWORD","FSKEYWORD", "SKEYWORD","SSKEYWORD","DKEYWORD","JKEYWORD","WINDOW_RING", "WINDOW_RING_EXCLUDE","WARP_CURSOR","ERRORTOKEN","NO_STACKMODE","ALWAYS_ON_TOP", "WORKSPACE","WORKSPACES","WORKSPCMGR_GEOMETRY","OCCUPYALL","OCCUPYLIST", "MAPWINDOWCURRENTWORKSPACE","MAPWINDOWDEFAULTWORKSPACE","UNMAPBYMOVINGFARAWAY", "OPAQUEMOVE","NOOPAQUEMOVE","OPAQUERESIZE","NOOPAQUERESIZE","DONTSETINACTIVE", "CHANGE_WORKSPACE_FUNCTION","DEICONIFY_FUNCTION","ICONIFY_FUNCTION", "AUTOSQUEEZE","STARTSQUEEZED","DONT_SAVE","AUTO_LOWER","ICONMENU_DONTSHOW", "WINDOW_BOX","IGNOREMODIFIER","WINDOW_GEOMETRIES","ALWAYSSQUEEZETOGRAVITY", "VIRTUAL_SCREENS","IGNORE_TRANSIENT","DONTTOGGLEWORKSPACEMANAGERSTATE","STRING", 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol", }; static const char *const yyrule[] = { "$accept : twmrc", "twmrc : stmts", "stmts :", "stmts : stmts stmt", "stmt : error", "stmt : noarg", "stmt : sarg", "stmt : narg", "stmt : squeeze", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number string", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string string", "$$1 :", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number $$1 win_list", "$$2 :", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number string $$2 win_list", "$$3 :", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string $$3 win_list", "$$4 :", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number string string string $$4 win_list", "$$5 :", "stmt : WINDOW_REGION string DKEYWORD DKEYWORD $$5 win_list", "$$6 :", "stmt : WINDOW_BOX string string $$6 win_list", "stmt : ICONMGR_GEOMETRY string number", "stmt : ICONMGR_GEOMETRY string", "stmt : WORKSPCMGR_GEOMETRY string number", "stmt : WORKSPCMGR_GEOMETRY string", "$$7 :", "stmt : MAPWINDOWCURRENTWORKSPACE $$7 curwork", "$$8 :", "stmt : MAPWINDOWDEFAULTWORKSPACE $$8 defwork", "stmt : ZOOM number", "stmt : ZOOM", "stmt : PIXMAPS pixmap_list", "stmt : CURSORS cursor_list", "$$9 :", "stmt : ICONIFY_BY_UNMAPPING $$9 win_list", "stmt : ICONIFY_BY_UNMAPPING", "$$10 :", "stmt : OPAQUEMOVE $$10 win_list", "stmt : OPAQUEMOVE", "$$11 :", "stmt : NOOPAQUEMOVE $$11 win_list", "stmt : NOOPAQUEMOVE", "$$12 :", "stmt : OPAQUERESIZE $$12 win_list", "stmt : OPAQUERESIZE", "$$13 :", "stmt : NOOPAQUERESIZE $$13 win_list", "stmt : NOOPAQUERESIZE", "stmt : LEFT_TITLEBUTTON string EQUALS action", "stmt : RIGHT_TITLEBUTTON string EQUALS action", "$$14 :", "stmt : LEFT_TITLEBUTTON string $$14 binding_list", "$$15 :", "stmt : RIGHT_TITLEBUTTON string $$15 binding_list", "stmt : button string", "stmt : button action", "stmt : string fullkey", "stmt : button full", "$$16 :", "stmt : DONT_ICONIFY_BY_UNMAPPING $$16 win_list", "$$17 :", "stmt : WORKSPACES $$17 workspc_list", "$$18 :", "$$19 :", "stmt : IGNOREMODIFIER $$18 LB keys $$19 RB", "$$20 :", "stmt : OCCUPYALL $$20 win_list", "$$21 :", "stmt : ICONMENU_DONTSHOW $$21 win_list", "$$22 :", "stmt : OCCUPYLIST $$22 occupy_list", "$$23 :", "stmt : UNMAPBYMOVINGFARAWAY $$23 win_list", "$$24 :", "stmt : AUTOSQUEEZE $$24 win_list", "$$25 :", "stmt : STARTSQUEEZED $$25 win_list", "stmt : ALWAYSSQUEEZETOGRAVITY", "$$26 :", "stmt : ALWAYSSQUEEZETOGRAVITY $$26 win_list", "$$27 :", "stmt : DONTSETINACTIVE $$27 win_list", "$$28 :", "stmt : ICONMGR_NOSHOW $$28 win_list", "stmt : ICONMGR_NOSHOW", "$$29 :", "stmt : ICONMGRS $$29 iconm_list", "$$30 :", "stmt : ICONMGR_SHOW $$30 win_list", "$$31 :", "stmt : NO_TITLE_HILITE $$31 win_list", "stmt : NO_TITLE_HILITE", "$$32 :", "stmt : NO_HILITE $$32 win_list", "stmt : NO_HILITE", "$$33 :", "stmt : ALWAYS_ON_TOP $$33 win_list", "$$34 :", "stmt : NO_STACKMODE $$34 win_list", "stmt : NO_STACKMODE", "$$35 :", "stmt : NO_BORDER $$35 win_list", "$$36 :", "stmt : DONT_SAVE $$36 win_list", "$$37 :", "stmt : NO_ICON_TITLE $$37 win_list", "stmt : NO_ICON_TITLE", "$$38 :", "stmt : NO_TITLE $$38 win_list", "stmt : NO_TITLE", "$$39 :", "stmt : IGNORE_TRANSIENT $$39 win_list", "stmt : DONTTOGGLEWORKSPACEMANAGERSTATE", "$$40 :", "stmt : MAKE_TITLE $$40 win_list", "$$41 :", "stmt : START_ICONIFIED $$41 win_list", "$$42 :", "stmt : AUTO_RAISE $$42 win_list", "stmt : AUTO_RAISE", "$$43 :", "stmt : AUTO_LOWER $$43 win_list", "stmt : AUTO_LOWER", "$$44 :", "stmt : MENU string LP string COLON string RP $$44 menu", "$$45 :", "stmt : MENU string $$45 menu", "$$46 :", "stmt : FUNCTION string $$46 function", "$$47 :", "stmt : ICONS $$47 icon_list", "$$48 :", "stmt : COLOR $$48 color_list", "$$49 :", "stmt : SAVECOLOR $$49 save_color_list", "$$50 :", "stmt : MONOCHROME $$50 color_list", "stmt : DEFAULT_FUNCTION action", "stmt : WINDOW_FUNCTION action", "stmt : CHANGE_WORKSPACE_FUNCTION action", "stmt : DEICONIFY_FUNCTION action", "stmt : ICONIFY_FUNCTION action", "$$51 :", "stmt : WARP_CURSOR $$51 win_list", "stmt : WARP_CURSOR", "$$52 :", "stmt : WINDOW_RING $$52 win_list", "stmt : WINDOW_RING", "$$53 :", "stmt : WINDOW_RING_EXCLUDE $$53 win_list", "$$54 :", "stmt : WINDOW_GEOMETRIES $$54 wingeom_list", "$$55 :", "stmt : VIRTUAL_SCREENS $$55 geom_list", "noarg : KEYWORD", "sarg : SKEYWORD string", "sarg : SKEYWORD", "sarg : SSKEYWORD string string", "sarg : SSKEYWORD string", "sarg : SSKEYWORD", "narg : NKEYWORD number", "keyaction : EQUALS keys COLON action", "full : EQUALS keys COLON contexts COLON action", "fullkey : EQUALS keys COLON contextkeys COLON action", "keys :", "keys : keys key", "key : META", "key : SHIFT", "key : LOCK", "key : CONTROL", "key : ALTER number", "key : META number", "key : OR", "contexts :", "contexts : contexts context", "context : WINDOW", "context : TITLE", "context : ICON", "context : ROOT", "context : FRAME", "context : WORKSPACE", "context : ICONMGR", "context : META", "context : ALTER", "context : ALL", "context : OR", "contextkeys :", "contextkeys : contextkeys contextkey", "contextkey : WINDOW", "contextkey : TITLE", "contextkey : ICON", "contextkey : ROOT", "contextkey : FRAME", "contextkey : WORKSPACE", "contextkey : ICONMGR", "contextkey : META", "contextkey : ALL", "contextkey : ALTER", "contextkey : OR", "contextkey : string", "binding_list : LB binding_entries RB", "binding_entries :", "binding_entries : binding_entries binding_entry", "binding_entry : button keyaction", "binding_entry : button EQUALS action", "binding_entry : button COLON action", "pixmap_list : LB pixmap_entries RB", "pixmap_entries :", "pixmap_entries : pixmap_entries pixmap_entry", "pixmap_entry : TITLE_HILITE string", "cursor_list : LB cursor_entries RB", "cursor_entries :", "cursor_entries : cursor_entries cursor_entry", "cursor_entry : FRAME string string", "cursor_entry : FRAME string", "cursor_entry : TITLE string string", "cursor_entry : TITLE string", "cursor_entry : ICON string string", "cursor_entry : ICON string", "cursor_entry : ICONMGR string string", "cursor_entry : ICONMGR string", "cursor_entry : BUTTON string string", "cursor_entry : BUTTON string", "cursor_entry : MOVE string string", "cursor_entry : MOVE string", "cursor_entry : RESIZE string string", "cursor_entry : RESIZE string", "cursor_entry : WAITC string string", "cursor_entry : WAITC string", "cursor_entry : MENU string string", "cursor_entry : MENU string", "cursor_entry : SELECT string string", "cursor_entry : SELECT string", "cursor_entry : KILL string string", "cursor_entry : KILL string", "color_list : LB color_entries RB", "color_entries :", "color_entries : color_entries color_entry", "color_entry : CLKEYWORD string", "$$56 :", "color_entry : CLKEYWORD string $$56 win_color_list", "color_entry : CKEYWORD string", "save_color_list : LB s_color_entries RB", "s_color_entries :", "s_color_entries : s_color_entries s_color_entry", "s_color_entry : string", "s_color_entry : CLKEYWORD", "win_color_list : LB win_color_entries RB", "win_color_entries :", "win_color_entries : win_color_entries win_color_entry", "win_color_entry : string string", "wingeom_list : LB wingeom_entries RB", "wingeom_entries :", "wingeom_entries : wingeom_entries wingeom_entry", "wingeom_entry : string string", "geom_list : LB geom_entries RB", "geom_entries :", "geom_entries : geom_entries geom_entry", "geom_entry : string", "squeeze : SQUEEZE_TITLE", "$$57 :", "squeeze : SQUEEZE_TITLE $$57 LB win_sqz_entries RB", "squeeze : DONT_SQUEEZE_TITLE", "$$58 :", "squeeze : DONT_SQUEEZE_TITLE $$58 win_list", "win_sqz_entries :", "win_sqz_entries : win_sqz_entries string JKEYWORD signed_number number", "iconm_list : LB iconm_entries RB", "iconm_entries :", "iconm_entries : iconm_entries iconm_entry", "iconm_entry : string string number", "iconm_entry : string string string number", "workspc_list : LB workspc_entries RB", "workspc_entries :", "workspc_entries : workspc_entries workspc_entry", "workspc_entry : string", "$$59 :", "workspc_entry : string $$59 workapp_list", "workapp_list : LB workapp_entries RB", "workapp_entries :", "workapp_entries : workapp_entries workapp_entry", "workapp_entry : string", "workapp_entry : string string", "workapp_entry : string string string", "workapp_entry : string string string string", "workapp_entry : string string string string string", "curwork : LB string RB", "curwork : LB string string RB", "curwork : LB string string string RB", "curwork : LB string string string string RB", "defwork : LB string RB", "defwork : LB string string RB", "defwork : LB string string string RB", "defwork : LB string string string string RB", "win_list : LB win_entries RB", "win_entries :", "win_entries : win_entries win_entry", "win_entry : string", "occupy_list : LB occupy_entries RB", "occupy_entries :", "occupy_entries : occupy_entries occupy_entry", "$$60 :", "occupy_entry : string $$60 occupy_workspc_list", "$$61 :", "occupy_entry : WINDOW string $$61 occupy_workspc_list", "$$62 :", "occupy_entry : WORKSPACE string $$62 occupy_window_list", "occupy_workspc_list : LB occupy_workspc_entries RB", "occupy_workspc_entries :", "occupy_workspc_entries : occupy_workspc_entries occupy_workspc_entry", "occupy_workspc_entry : string", "occupy_window_list : LB occupy_window_entries RB", "occupy_window_entries :", "occupy_window_entries : occupy_window_entries occupy_window_entry", "occupy_window_entry : string", "icon_list : LB icon_entries RB", "icon_entries :", "icon_entries : icon_entries icon_entry", "icon_entry : string string", "function : LB function_entries RB", "function_entries :", "function_entries : function_entries function_entry", "function_entry : action", "menu : LB menu_entries RB", "menu_entries :", "menu_entries : menu_entries menu_entry", "menu_entry : string action", "menu_entry : string LP string COLON string RP action", "action : FKEYWORD", "action : FSKEYWORD string", "signed_number : number", "signed_number : PLUS number", "signed_number : MINUS number", "button : BUTTON number", "string : STRING", "number : NUMBER", }; #endif int yydebug; int yynerrs; int yyerrflag; int yychar; YYSTYPE yyval; YYSTYPE yylval; /* define the initial stack-sizes */ #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 typedef struct { unsigned stacksize; YYINT *s_base; YYINT *s_mark; YYINT *s_last; YYSTYPE *l_base; YYSTYPE *l_mark; } YYSTACKDATA; /* variables for the parser stack */ static YYSTACKDATA yystack; #line 1025 "gram.y" void yyerror(char *s) { twmrc_error_prefix(); fprintf (stderr, "error in input file: %s\n", s ? s : ""); ParseError = 1; } void RemoveDQuote(char *str) { register char *i, *o; register int n; register int count; for (i=str+1, o=str; *i && *i != '\"'; o++) { if (*i == '\\') { switch (*++i) { case 'n': *o = '\n'; i++; break; case 'b': *o = '\b'; i++; break; case 'r': *o = '\r'; i++; break; case 't': *o = '\t'; i++; break; case 'f': *o = '\f'; i++; break; case '0': if (*++i == 'x') goto hex; else --i; case '1': case '2': case '3': case '4': case '5': case '6': case '7': n = 0; count = 0; while (*i >= '0' && *i <= '7' && count < 3) { n = (n<<3) + (*i++ - '0'); count++; } *o = n; break; hex: case 'x': n = 0; count = 0; while (i++, count++ < 2) { if (*i >= '0' && *i <= '9') n = (n<<4) + (*i - '0'); else if (*i >= 'a' && *i <= 'f') n = (n<<4) + (*i - 'a') + 10; else if (*i >= 'A' && *i <= 'F') n = (n<<4) + (*i - 'A') + 10; else break; } *o = n; break; case '\n': i++; /* punt */ o--; /* to account for o++ at end of loop */ break; case '\"': case '\'': case '\\': default: *o = *i++; break; } } else *o = *i++; } *o = '\0'; } static MenuRoot *GetRoot(char *name, char *fore, char *back) { MenuRoot *tmp; tmp = FindMenuRoot(name); if (tmp == NULL) tmp = NewMenuRoot(name); if (fore) { int save; save = Scr->FirstTime; Scr->FirstTime = TRUE; GetColor(COLOR, &tmp->highlight.fore, fore); GetColor(COLOR, &tmp->highlight.back, back); Scr->FirstTime = save; } return tmp; } static void GotButton (int butt, int func) { int i; MenuItem *item; for (i = 0; i < NUM_CONTEXTS; i++) { if ((cont & (1 << i)) == 0) continue; if (func == F_MENU) { pull->prev = NULL; AddFuncButton (butt, i, mods, func, pull, (MenuItem*) 0); } else { root = GetRoot (TWM_ROOT, NULLSTR, NULLSTR); item = AddToMenu (root, "x", Action, NULL, func, NULLSTR, NULLSTR); AddFuncButton (butt, i, mods, func, (MenuRoot*) 0, item); } } Action = ""; pull = NULL; cont = 0; mods_used |= mods; mods = 0; } static void GotKey(char *key, int func) { int i; for (i = 0; i < NUM_CONTEXTS; i++) { if ((cont & (1 << i)) == 0) continue; if (func == F_MENU) { pull->prev = NULL; if (!AddFuncKey (key, i, mods, func, pull, Name, Action)) break; } else if (!AddFuncKey(key, i, mods, func, (MenuRoot*) 0, Name, Action)) break; } Action = ""; pull = NULL; cont = 0; mods_used |= mods; mods = 0; } static void GotTitleButton (char *bitmapname, int func, Bool rightside) { if (!CreateTitleButton (bitmapname, func, Action, pull, rightside, True)) { twmrc_error_prefix(); fprintf (stderr, "unable to create %s titlebutton \"%s\"\n", rightside ? "right" : "left", bitmapname); } Action = ""; pull = NULL; } static Bool CheckWarpScreenArg (register char *s) { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, WARPSCREEN_NEXT) == 0 || strcmp (s, WARPSCREEN_PREV) == 0 || strcmp (s, WARPSCREEN_BACK) == 0) return True; for (; *s && Isascii(*s) && Isdigit(*s); s++) ; /* SUPPRESS 530 */ return (*s ? False : True); } static Bool CheckWarpRingArg (register char *s) { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, WARPSCREEN_NEXT) == 0 || strcmp (s, WARPSCREEN_PREV) == 0) return True; return False; } static Bool CheckColormapArg (register char *s) { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, COLORMAP_NEXT) == 0 || strcmp (s, COLORMAP_PREV) == 0 || strcmp (s, COLORMAP_DEFAULT) == 0) return True; return False; } void twmrc_error_prefix (void) { fprintf (stderr, "%s: line %d: ", ProgramName, twmrc_lineno); } #line 1892 "gram.tab.c" #if YYDEBUG #include /* needed for printf */ #endif #include /* needed for malloc, etc */ #include /* needed for memset */ /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(YYSTACKDATA *data) { int i; unsigned newsize; YYINT *newss; YYSTYPE *newvs; if ((newsize = data->stacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return YYENOMEM; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; i = (int) (data->s_mark - data->s_base); newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); if (newss == 0) return YYENOMEM; data->s_base = newss; data->s_mark = newss + i; newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); if (newvs == 0) return YYENOMEM; data->l_base = newvs; data->l_mark = newvs + i; data->stacksize = newsize; data->s_last = data->s_base + newsize - 1; return 0; } #if YYPURE || defined(YY_NO_LEAKS) static void yyfreestack(YYSTACKDATA *data) { free(data->s_base); free(data->l_base); memset(data, 0, sizeof(*data)); } #else #define yyfreestack(data) /* nothing */ #endif #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int YYPARSE_DECL() { int yym, yyn, yystate; #if YYDEBUG const char *yys; if ((yys = getenv("YYDEBUG")) != 0) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif yynerrs = 0; yyerrflag = 0; yychar = YYEMPTY; yystate = 0; #if YYPURE memset(&yystack, 0, sizeof(yystack)); #endif if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; yystack.s_mark = yystack.s_base; yystack.l_mark = yystack.l_base; yystate = 0; *yystack.s_mark = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) goto yyreduce; if (yychar < 0) { if ((yychar = YYLEX) < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { yys = yyname[YYTRANSLATE(yychar)]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif } if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, shifting to state %d\n", YYPREFIX, yystate, yytable[yyn]); #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) { goto yyoverflow; } yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; yychar = YYEMPTY; if (yyerrflag > 0) --yyerrflag; goto yyloop; } if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == yychar) { yyn = yytable[yyn]; goto yyreduce; } if (yyerrflag) goto yyinrecovery; YYERROR_CALL("syntax error"); goto yyerrlab; yyerrlab: ++yynerrs; yyinrecovery: if (yyerrflag < 3) { yyerrflag = 3; for (;;) { if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) { #if YYDEBUG if (yydebug) printf("%sdebug: state %d, error recovery shifting\ to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) { goto yyoverflow; } yystate = yytable[yyn]; *++yystack.s_mark = yytable[yyn]; *++yystack.l_mark = yylval; goto yyloop; } else { #if YYDEBUG if (yydebug) printf("%sdebug: error recovery discarding state %d\n", YYPREFIX, *yystack.s_mark); #endif if (yystack.s_mark <= yystack.s_base) goto yyabort; --yystack.s_mark; --yystack.l_mark; } } } else { if (yychar == YYEOF) goto yyabort; #if YYDEBUG if (yydebug) { yys = yyname[YYTRANSLATE(yychar)]; printf("%sdebug: state %d, error recovery discards token %d (%s)\n", YYPREFIX, yystate, yychar, yys); } #endif yychar = YYEMPTY; 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]; if (yym) yyval = yystack.l_mark[1-yym]; else memset(&yyval, 0, sizeof yyval); switch (yyn) { case 9: #line 167 "gram.y" { (void) AddIconRegion(yystack.l_mark[-4].ptr, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].num, "undef", "undef", "undef"); } break; case 10: #line 170 "gram.y" { (void) AddIconRegion(yystack.l_mark[-5].ptr, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].ptr, "undef", "undef"); } break; case 11: #line 173 "gram.y" { (void) AddIconRegion(yystack.l_mark[-6].ptr, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, "undef"); } break; case 12: #line 176 "gram.y" { (void) AddIconRegion(yystack.l_mark[-7].ptr, yystack.l_mark[-6].num, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 13: #line 179 "gram.y" { list = AddIconRegion(yystack.l_mark[-4].ptr, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].num, "undef", "undef", "undef"); } break; case 15: #line 183 "gram.y" { list = AddIconRegion(yystack.l_mark[-5].ptr, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].ptr, "undef", "undef"); } break; case 17: #line 187 "gram.y" { list = AddIconRegion(yystack.l_mark[-6].ptr, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, "undef"); } break; case 19: #line 191 "gram.y" { list = AddIconRegion(yystack.l_mark[-7].ptr, yystack.l_mark[-6].num, yystack.l_mark[-5].num, yystack.l_mark[-4].num, yystack.l_mark[-3].num, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 21: #line 196 "gram.y" { list = AddWindowRegion (yystack.l_mark[-2].ptr, yystack.l_mark[-1].num, yystack.l_mark[0].num); } break; case 23: #line 201 "gram.y" { list = addWindowBox (yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 25: #line 206 "gram.y" { if (Scr->FirstTime) { Scr->iconmgr->geometry= (char*)yystack.l_mark[-1].ptr; Scr->iconmgr->columns=yystack.l_mark[0].num; } } break; case 26: #line 212 "gram.y" { if (Scr->FirstTime) Scr->iconmgr->geometry = (char*)yystack.l_mark[0].ptr; } break; case 27: #line 215 "gram.y" { if (Scr->FirstTime) { Scr->workSpaceMgr.geometry= (char*)yystack.l_mark[-1].ptr; Scr->workSpaceMgr.columns=yystack.l_mark[0].num; } } break; case 28: #line 221 "gram.y" { if (Scr->FirstTime) Scr->workSpaceMgr.geometry = (char*)yystack.l_mark[0].ptr; } break; case 29: #line 224 "gram.y" {} break; case 31: #line 227 "gram.y" {} break; case 33: #line 230 "gram.y" { if (Scr->FirstTime) { Scr->DoZoom = TRUE; Scr->ZoomCount = yystack.l_mark[0].num; } } break; case 34: #line 236 "gram.y" { if (Scr->FirstTime) Scr->DoZoom = TRUE; } break; case 35: #line 238 "gram.y" {} break; case 36: #line 239 "gram.y" {} break; case 37: #line 240 "gram.y" { list = &Scr->IconifyByUn; } break; case 39: #line 242 "gram.y" { if (Scr->FirstTime) Scr->IconifyByUnmapping = TRUE; } break; case 40: #line 245 "gram.y" { list = &Scr->OpaqueMoveList; } break; case 42: #line 247 "gram.y" { if (Scr->FirstTime) Scr->DoOpaqueMove = TRUE; } break; case 43: #line 248 "gram.y" { list = &Scr->NoOpaqueMoveList; } break; case 45: #line 250 "gram.y" { if (Scr->FirstTime) Scr->DoOpaqueMove = FALSE; } break; case 46: #line 251 "gram.y" { list = &Scr->OpaqueMoveList; } break; case 48: #line 253 "gram.y" { if (Scr->FirstTime) Scr->DoOpaqueResize = TRUE; } break; case 49: #line 254 "gram.y" { list = &Scr->NoOpaqueResizeList; } break; case 51: #line 256 "gram.y" { if (Scr->FirstTime) Scr->DoOpaqueResize = FALSE; } break; case 52: #line 258 "gram.y" { GotTitleButton (yystack.l_mark[-2].ptr, yystack.l_mark[0].num, False); } break; case 53: #line 261 "gram.y" { GotTitleButton (yystack.l_mark[-2].ptr, yystack.l_mark[0].num, True); } break; case 54: #line 264 "gram.y" { CreateTitleButton(yystack.l_mark[0].ptr, 0, NULL, NULL, FALSE, TRUE); } break; case 56: #line 266 "gram.y" { CreateTitleButton(yystack.l_mark[0].ptr, 0, NULL, NULL, TRUE, TRUE); } break; case 58: #line 268 "gram.y" { root = GetRoot(yystack.l_mark[0].ptr, NULLSTR, NULLSTR); AddFuncButton (yystack.l_mark[-1].num, C_ROOT, 0, F_MENU, root, (MenuItem*) 0); } break; case 59: #line 272 "gram.y" { if (yystack.l_mark[0].num == F_MENU) { pull->prev = NULL; AddFuncButton (yystack.l_mark[-1].num, C_ROOT, 0, yystack.l_mark[0].num, pull, (MenuItem*) 0); } else { MenuItem *item; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); item = AddToMenu (root, "x", Action, NULL, yystack.l_mark[0].num, NULLSTR, NULLSTR); AddFuncButton (yystack.l_mark[-1].num, C_ROOT, 0, yystack.l_mark[0].num, (MenuRoot*) 0, item); } Action = ""; pull = NULL; } break; case 60: #line 288 "gram.y" { GotKey(yystack.l_mark[-1].ptr, yystack.l_mark[0].num); } break; case 61: #line 289 "gram.y" { GotButton(yystack.l_mark[-1].num, yystack.l_mark[0].num); } break; case 62: #line 291 "gram.y" { list = &Scr->DontIconify; } break; case 64: #line 293 "gram.y" {} break; case 66: #line 295 "gram.y" {} break; case 67: #line 295 "gram.y" { Scr->IgnoreModifier = mods; mods = 0; } break; case 69: #line 296 "gram.y" { list = &Scr->OccupyAll; } break; case 71: #line 298 "gram.y" { list = &Scr->IconMenuDontShow; } break; case 73: #line 300 "gram.y" {} break; case 75: #line 302 "gram.y" { list = &Scr->UnmapByMovingFarAway; } break; case 77: #line 304 "gram.y" { list = &Scr->AutoSqueeze; } break; case 79: #line 306 "gram.y" { list = &Scr->StartSqueezed; } break; case 81: #line 308 "gram.y" { Scr->AlwaysSqueezeToGravity = TRUE; } break; case 82: #line 309 "gram.y" { list = &Scr->AlwaysSqueezeToGravityL; } break; case 84: #line 311 "gram.y" { list = &Scr->DontSetInactive; } break; case 86: #line 313 "gram.y" { list = &Scr->IconMgrNoShow; } break; case 88: #line 315 "gram.y" { Scr->IconManagerDontShow = TRUE; } break; case 89: #line 316 "gram.y" { list = &Scr->IconMgrs; } break; case 91: #line 318 "gram.y" { list = &Scr->IconMgrShow; } break; case 93: #line 320 "gram.y" { list = &Scr->NoTitleHighlight; } break; case 95: #line 322 "gram.y" { if (Scr->FirstTime) Scr->TitleHighlight = FALSE; } break; case 96: #line 324 "gram.y" { list = &Scr->NoHighlight; } break; case 98: #line 326 "gram.y" { if (Scr->FirstTime) Scr->Highlight = FALSE; } break; case 99: #line 328 "gram.y" { list = &Scr->AlwaysOnTopL; } break; case 101: #line 330 "gram.y" { list = &Scr->NoStackModeL; } break; case 103: #line 332 "gram.y" { if (Scr->FirstTime) Scr->StackMode = FALSE; } break; case 104: #line 334 "gram.y" { list = &Scr->NoBorder; } break; case 106: #line 336 "gram.y" { list = &Scr->DontSave; } break; case 108: #line 338 "gram.y" { list = &Scr->NoIconTitle; } break; case 110: #line 340 "gram.y" { if (Scr->FirstTime) Scr->NoIconTitlebar = TRUE; } break; case 111: #line 342 "gram.y" { list = &Scr->NoTitle; } break; case 113: #line 344 "gram.y" { if (Scr->FirstTime) Scr->NoTitlebar = TRUE; } break; case 114: #line 346 "gram.y" { list = &Scr->IgnoreTransientL; } break; case 116: #line 348 "gram.y" { donttoggleworkspacemanagerstate = TRUE; } break; case 117: #line 349 "gram.y" { list = &Scr->MakeTitle; } break; case 119: #line 351 "gram.y" { list = &Scr->StartIconified; } break; case 121: #line 353 "gram.y" { list = &Scr->AutoRaise; } break; case 123: #line 355 "gram.y" { Scr->AutoRaiseDefault = TRUE; } break; case 124: #line 356 "gram.y" { list = &Scr->AutoLower; } break; case 126: #line 358 "gram.y" { Scr->AutoLowerDefault = TRUE; } break; case 127: #line 359 "gram.y" { root = GetRoot(yystack.l_mark[-5].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-1].ptr); } break; case 128: #line 361 "gram.y" { root->real_menu = TRUE;} break; case 129: #line 362 "gram.y" { root = GetRoot(yystack.l_mark[0].ptr, NULLSTR, NULLSTR); } break; case 130: #line 363 "gram.y" { root->real_menu = TRUE; } break; case 131: #line 364 "gram.y" { root = GetRoot(yystack.l_mark[0].ptr, NULLSTR, NULLSTR); } break; case 133: #line 366 "gram.y" { list = &Scr->IconNames; } break; case 135: #line 368 "gram.y" { color = COLOR; } break; case 137: #line 370 "gram.y" {} break; case 139: #line 372 "gram.y" { color = MONOCHROME; } break; case 141: #line 374 "gram.y" { Scr->DefaultFunction.func = yystack.l_mark[0].num; if (yystack.l_mark[0].num == F_MENU) { pull->prev = NULL; Scr->DefaultFunction.menu = pull; } else { root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->DefaultFunction.item = AddToMenu(root,"x",Action, NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR); } Action = ""; pull = NULL; } break; case 142: #line 390 "gram.y" { Scr->WindowFunction.func = yystack.l_mark[0].num; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->WindowFunction.item = AddToMenu(root,"x",Action, NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } break; case 143: #line 398 "gram.y" { Scr->ChangeWorkspaceFunction.func = yystack.l_mark[0].num; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->ChangeWorkspaceFunction.item = AddToMenu(root,"x",Action, NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } break; case 144: #line 406 "gram.y" { Scr->DeIconifyFunction.func = yystack.l_mark[0].num; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->DeIconifyFunction.item = AddToMenu(root,"x",Action, NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } break; case 145: #line 414 "gram.y" { Scr->IconifyFunction.func = yystack.l_mark[0].num; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->IconifyFunction.item = AddToMenu(root,"x",Action, NULL,yystack.l_mark[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } break; case 146: #line 422 "gram.y" { list = &Scr->WarpCursorL; } break; case 148: #line 424 "gram.y" { if (Scr->FirstTime) Scr->WarpCursor = TRUE; } break; case 149: #line 426 "gram.y" { list = &Scr->WindowRingL; } break; case 151: #line 428 "gram.y" { Scr->WindowRingAll = TRUE; } break; case 152: #line 429 "gram.y" { if (!Scr->WindowRingL) Scr->WindowRingAll = TRUE; list = &Scr->WindowRingExcludeL; } break; case 154: #line 433 "gram.y" { } break; case 156: #line 435 "gram.y" { } break; case 158: #line 439 "gram.y" { if (!do_single_keyword (yystack.l_mark[0].num)) { twmrc_error_prefix(); fprintf (stderr, "unknown singleton keyword %d\n", yystack.l_mark[0].num); ParseError = 1; } } break; case 159: #line 449 "gram.y" { if (!do_string_keyword (yystack.l_mark[-1].num, yystack.l_mark[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unknown string keyword %d (value \"%s\")\n", yystack.l_mark[-1].num, yystack.l_mark[0].ptr); ParseError = 1; } } break; case 160: #line 457 "gram.y" { if (!do_string_keyword (yystack.l_mark[0].num, defstring)) { twmrc_error_prefix(); fprintf (stderr, "unknown string keyword %d (no value)\n", yystack.l_mark[0].num); ParseError = 1; } } break; case 161: #line 468 "gram.y" { if (!do_string_string_keyword (yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unknown strings keyword %d (value \"%s\" and \"%s\")\n", yystack.l_mark[-2].num, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); ParseError = 1; } } break; case 162: #line 476 "gram.y" { if (!do_string_string_keyword (yystack.l_mark[-1].num, yystack.l_mark[0].ptr, defstring)) { twmrc_error_prefix(); fprintf (stderr, "unknown string keyword %d (value \"%s\")\n", yystack.l_mark[-1].num, yystack.l_mark[0].ptr); ParseError = 1; } } break; case 163: #line 484 "gram.y" { if (!do_string_string_keyword (yystack.l_mark[0].num, defstring, defstring)) { twmrc_error_prefix(); fprintf (stderr, "unknown string keyword %d (no value)\n", yystack.l_mark[0].num); ParseError = 1; } } break; case 164: #line 494 "gram.y" { if (!do_number_keyword (yystack.l_mark[-1].num, yystack.l_mark[0].num)) { twmrc_error_prefix(); fprintf (stderr, "unknown numeric keyword %d (value %d)\n", yystack.l_mark[-1].num, yystack.l_mark[0].num); ParseError = 1; } } break; case 165: #line 506 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; case 166: #line 509 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; case 167: #line 512 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; case 170: #line 519 "gram.y" { mods |= Mod1Mask; } break; case 171: #line 520 "gram.y" { mods |= ShiftMask; } break; case 172: #line 521 "gram.y" { mods |= LockMask; } break; case 173: #line 522 "gram.y" { mods |= ControlMask; } break; case 174: #line 523 "gram.y" { if (yystack.l_mark[0].num < 1 || yystack.l_mark[0].num > 5) { twmrc_error_prefix(); fprintf (stderr, "bad modifier number (%d), must be 1-5\n", yystack.l_mark[0].num); ParseError = 1; } else { mods |= (Alt1Mask << (yystack.l_mark[0].num - 1)); } } break; case 175: #line 533 "gram.y" { if (yystack.l_mark[0].num < 1 || yystack.l_mark[0].num > 5) { twmrc_error_prefix(); fprintf (stderr, "bad modifier number (%d), must be 1-5\n", yystack.l_mark[0].num); ParseError = 1; } else { mods |= (Mod1Mask << (yystack.l_mark[0].num - 1)); } } break; case 176: #line 543 "gram.y" { } break; case 179: #line 550 "gram.y" { cont |= C_WINDOW_BIT; } break; case 180: #line 551 "gram.y" { cont |= C_TITLE_BIT; } break; case 181: #line 552 "gram.y" { cont |= C_ICON_BIT; } break; case 182: #line 553 "gram.y" { cont |= C_ROOT_BIT; } break; case 183: #line 554 "gram.y" { cont |= C_FRAME_BIT; } break; case 184: #line 555 "gram.y" { cont |= C_WORKSPACE_BIT; } break; case 185: #line 556 "gram.y" { cont |= C_ICONMGR_BIT; } break; case 186: #line 557 "gram.y" { cont |= C_ICONMGR_BIT; } break; case 187: #line 558 "gram.y" { cont |= C_ALTER_BIT; } break; case 188: #line 559 "gram.y" { cont |= C_ALL_BITS; } break; case 189: #line 560 "gram.y" { } break; case 192: #line 567 "gram.y" { cont |= C_WINDOW_BIT; } break; case 193: #line 568 "gram.y" { cont |= C_TITLE_BIT; } break; case 194: #line 569 "gram.y" { cont |= C_ICON_BIT; } break; case 195: #line 570 "gram.y" { cont |= C_ROOT_BIT; } break; case 196: #line 571 "gram.y" { cont |= C_FRAME_BIT; } break; case 197: #line 572 "gram.y" { cont |= C_WORKSPACE_BIT; } break; case 198: #line 573 "gram.y" { cont |= C_ICONMGR_BIT; } break; case 199: #line 574 "gram.y" { cont |= C_ICONMGR_BIT; } break; case 200: #line 575 "gram.y" { cont |= C_ALL_BITS; } break; case 201: #line 576 "gram.y" { cont |= C_ALTER_BIT; } break; case 202: #line 577 "gram.y" { } break; case 203: #line 578 "gram.y" { Name = (char*)yystack.l_mark[0].ptr; cont |= C_NAME_BIT; } break; case 204: #line 582 "gram.y" {} break; case 207: #line 589 "gram.y" { ModifyCurrentTB(yystack.l_mark[-1].num, mods, yystack.l_mark[0].num, Action, pull); mods = 0;} break; case 208: #line 590 "gram.y" { ModifyCurrentTB(yystack.l_mark[-2].num, 0, yystack.l_mark[0].num, Action, pull);} break; case 209: #line 592 "gram.y" { ModifyCurrentTB(yystack.l_mark[-2].num, 0, yystack.l_mark[0].num, Action, pull);} break; case 210: #line 596 "gram.y" {} break; case 213: #line 603 "gram.y" { SetHighlightPixmap (yystack.l_mark[0].ptr); } break; case 214: #line 607 "gram.y" {} break; case 217: #line 614 "gram.y" { NewBitmapCursor(&Scr->FrameCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 218: #line 616 "gram.y" { NewFontCursor(&Scr->FrameCursor, yystack.l_mark[0].ptr); } break; case 219: #line 618 "gram.y" { NewBitmapCursor(&Scr->TitleCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 220: #line 620 "gram.y" { NewFontCursor(&Scr->TitleCursor, yystack.l_mark[0].ptr); } break; case 221: #line 622 "gram.y" { NewBitmapCursor(&Scr->IconCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 222: #line 624 "gram.y" { NewFontCursor(&Scr->IconCursor, yystack.l_mark[0].ptr); } break; case 223: #line 626 "gram.y" { NewBitmapCursor(&Scr->IconMgrCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 224: #line 628 "gram.y" { NewFontCursor(&Scr->IconMgrCursor, yystack.l_mark[0].ptr); } break; case 225: #line 630 "gram.y" { NewBitmapCursor(&Scr->ButtonCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 226: #line 632 "gram.y" { NewFontCursor(&Scr->ButtonCursor, yystack.l_mark[0].ptr); } break; case 227: #line 634 "gram.y" { NewBitmapCursor(&Scr->MoveCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 228: #line 636 "gram.y" { NewFontCursor(&Scr->MoveCursor, yystack.l_mark[0].ptr); } break; case 229: #line 638 "gram.y" { NewBitmapCursor(&Scr->ResizeCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 230: #line 640 "gram.y" { NewFontCursor(&Scr->ResizeCursor, yystack.l_mark[0].ptr); } break; case 231: #line 642 "gram.y" { NewBitmapCursor(&Scr->WaitCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 232: #line 644 "gram.y" { NewFontCursor(&Scr->WaitCursor, yystack.l_mark[0].ptr); } break; case 233: #line 646 "gram.y" { NewBitmapCursor(&Scr->MenuCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 234: #line 648 "gram.y" { NewFontCursor(&Scr->MenuCursor, yystack.l_mark[0].ptr); } break; case 235: #line 650 "gram.y" { NewBitmapCursor(&Scr->SelectCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 236: #line 652 "gram.y" { NewFontCursor(&Scr->SelectCursor, yystack.l_mark[0].ptr); } break; case 237: #line 654 "gram.y" { NewBitmapCursor(&Scr->DestroyCursor, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 238: #line 656 "gram.y" { NewFontCursor(&Scr->DestroyCursor, yystack.l_mark[0].ptr); } break; case 239: #line 660 "gram.y" {} break; case 242: #line 668 "gram.y" { if (!do_colorlist_keyword (yystack.l_mark[-1].num, color, yystack.l_mark[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unhandled list color keyword %d (string \"%s\")\n", yystack.l_mark[-1].num, yystack.l_mark[0].ptr); ParseError = 1; } } break; case 243: #line 677 "gram.y" { list = do_colorlist_keyword(yystack.l_mark[-1].num,color, yystack.l_mark[0].ptr); if (!list) { twmrc_error_prefix(); fprintf (stderr, "unhandled color list keyword %d (string \"%s\")\n", yystack.l_mark[-1].num, yystack.l_mark[0].ptr); ParseError = 1; } } break; case 245: #line 688 "gram.y" { if (!do_color_keyword (yystack.l_mark[-1].num, color, yystack.l_mark[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unhandled color keyword %d (string \"%s\")\n", yystack.l_mark[-1].num, yystack.l_mark[0].ptr); ParseError = 1; } } break; case 246: #line 699 "gram.y" {} break; case 249: #line 706 "gram.y" { do_string_savecolor(color, yystack.l_mark[0].ptr); } break; case 250: #line 707 "gram.y" { do_var_savecolor(yystack.l_mark[0].num); } break; case 251: #line 710 "gram.y" {} break; case 254: #line 717 "gram.y" { if (Scr->FirstTime && color == Scr->Monochrome) AddToList(list, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 255: #line 722 "gram.y" {} break; case 258: #line 729 "gram.y" { AddToList (&Scr->WindowGeometries, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 259: #line 732 "gram.y" {} break; case 262: #line 739 "gram.y" { AddToList (&Scr->VirtualScreens, yystack.l_mark[0].ptr, ""); } break; case 263: #line 742 "gram.y" { if (HasShape) Scr->SqueezeTitle = TRUE; } break; case 264: #line 745 "gram.y" { list = &Scr->SqueezeTitleL; if (HasShape && Scr->SqueezeTitle == -1) Scr->SqueezeTitle = TRUE; } break; case 266: #line 750 "gram.y" { Scr->SqueezeTitle = FALSE; } break; case 267: #line 751 "gram.y" { list = &Scr->DontSqueezeTitleL; } break; case 270: #line 756 "gram.y" { if (Scr->FirstTime) { do_squeeze_entry (list, yystack.l_mark[-3].ptr, yystack.l_mark[-2].num, yystack.l_mark[-1].num, yystack.l_mark[0].num); } } break; case 271: #line 764 "gram.y" {} break; case 274: #line 771 "gram.y" { if (Scr->FirstTime) AddToList(list, yystack.l_mark[-2].ptr, (char *) AllocateIconManager(yystack.l_mark[-2].ptr, NULLSTR, yystack.l_mark[-1].ptr,yystack.l_mark[0].num)); } break; case 275: #line 777 "gram.y" { if (Scr->FirstTime) AddToList(list, yystack.l_mark[-3].ptr, (char *) AllocateIconManager(yystack.l_mark[-3].ptr,yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].num)); } break; case 276: #line 784 "gram.y" {} break; case 279: #line 791 "gram.y" { AddWorkSpace (yystack.l_mark[0].ptr, NULLSTR, NULLSTR, NULLSTR, NULLSTR, NULLSTR); } break; case 280: #line 794 "gram.y" { curWorkSpc = (char*)yystack.l_mark[0].ptr; } break; case 282: #line 800 "gram.y" {} break; case 285: #line 807 "gram.y" { AddWorkSpace (curWorkSpc, yystack.l_mark[0].ptr, NULLSTR, NULLSTR, NULLSTR, NULLSTR); } break; case 286: #line 810 "gram.y" { AddWorkSpace (curWorkSpc, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, NULLSTR, NULLSTR, NULLSTR); } break; case 287: #line 813 "gram.y" { AddWorkSpace (curWorkSpc, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, NULLSTR, NULLSTR); } break; case 288: #line 816 "gram.y" { AddWorkSpace (curWorkSpc, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr, NULLSTR); } break; case 289: #line 819 "gram.y" { AddWorkSpace (curWorkSpc, yystack.l_mark[-4].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 290: #line 824 "gram.y" { WMapCreateCurrentBackGround (yystack.l_mark[-1].ptr, NULL, NULL, NULL); } break; case 291: #line 827 "gram.y" { WMapCreateCurrentBackGround (yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL, NULL); } break; case 292: #line 830 "gram.y" { WMapCreateCurrentBackGround (yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL); } break; case 293: #line 833 "gram.y" { WMapCreateCurrentBackGround (yystack.l_mark[-4].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr); } break; case 294: #line 838 "gram.y" { WMapCreateDefaultBackGround (yystack.l_mark[-1].ptr, NULL, NULL, NULL); } break; case 295: #line 841 "gram.y" { WMapCreateDefaultBackGround (yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL, NULL); } break; case 296: #line 844 "gram.y" { WMapCreateDefaultBackGround (yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr, NULL); } break; case 297: #line 847 "gram.y" { WMapCreateDefaultBackGround (yystack.l_mark[-4].ptr, yystack.l_mark[-3].ptr, yystack.l_mark[-2].ptr, yystack.l_mark[-1].ptr); } break; case 298: #line 852 "gram.y" {} break; case 301: #line 859 "gram.y" { if (Scr->FirstTime) AddToList(list, yystack.l_mark[0].ptr, 0); } break; case 302: #line 864 "gram.y" {} break; case 305: #line 871 "gram.y" {client = (char*)yystack.l_mark[0].ptr;} break; case 307: #line 873 "gram.y" {client = (char*)yystack.l_mark[0].ptr;} break; case 309: #line 875 "gram.y" {workspace = (char*)yystack.l_mark[0].ptr;} break; case 311: #line 879 "gram.y" {} break; case 314: #line 886 "gram.y" { AddToClientsList (yystack.l_mark[0].ptr, client); } break; case 315: #line 891 "gram.y" {} break; case 318: #line 898 "gram.y" { AddToClientsList (workspace, yystack.l_mark[0].ptr); } break; case 319: #line 903 "gram.y" {} break; case 322: #line 910 "gram.y" { if (Scr->FirstTime) AddToList(list, yystack.l_mark[-1].ptr, yystack.l_mark[0].ptr); } break; case 323: #line 913 "gram.y" {} break; case 326: #line 920 "gram.y" { AddToMenu(root, "", Action, NULL, yystack.l_mark[0].num, NULLSTR, NULLSTR); Action = ""; } break; case 327: #line 926 "gram.y" {lastmenuitem = (MenuItem*) 0;} break; case 330: #line 933 "gram.y" { if (yystack.l_mark[0].num == F_SEPARATOR) { if (lastmenuitem) lastmenuitem->separated = 1; } else { lastmenuitem = AddToMenu(root, yystack.l_mark[-1].ptr, Action, pull, yystack.l_mark[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } } break; case 331: #line 943 "gram.y" { if (yystack.l_mark[0].num == F_SEPARATOR) { if (lastmenuitem) lastmenuitem->separated = 1; } else { lastmenuitem = AddToMenu(root, yystack.l_mark[-6].ptr, Action, pull, yystack.l_mark[0].num, yystack.l_mark[-4].ptr, yystack.l_mark[-2].ptr); Action = ""; pull = NULL; } } break; case 332: #line 955 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; case 333: #line 956 "gram.y" { yyval.num = yystack.l_mark[-1].num; Action = (char*)yystack.l_mark[0].ptr; switch (yystack.l_mark[-1].num) { case F_MENU: pull = GetRoot (yystack.l_mark[0].ptr, NULLSTR,NULLSTR); pull->prev = root; break; case F_WARPRING: if (!CheckWarpRingArg (Action)) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.warptoring argument \"%s\"\n", Action); yyval.num = F_NOP; } case F_WARPTOSCREEN: if (!CheckWarpScreenArg (Action)) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.warptoscreen argument \"%s\"\n", Action); yyval.num = F_NOP; } break; case F_COLORMAP: if (CheckColormapArg (Action)) { yyval.num = F_COLORMAP; } else { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.colormap argument \"%s\"\n", Action); yyval.num = F_NOP; } break; } /* end switch */ } break; case 334: #line 997 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; case 335: #line 998 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; case 336: #line 999 "gram.y" { yyval.num = -(yystack.l_mark[0].num); } break; case 337: #line 1002 "gram.y" { yyval.num = yystack.l_mark[0].num; if (yystack.l_mark[0].num == 0) yyerror("bad button 0"); if (yystack.l_mark[0].num > MAX_BUTTONS) { yyval.num = 0; yyerror("button number too large"); } } break; case 338: #line 1014 "gram.y" { ptr = (char *)malloc(strlen((char*)yystack.l_mark[0].ptr)+1); strcpy(ptr, yystack.l_mark[0].ptr); RemoveDQuote(ptr); yyval.ptr = ptr; } break; case 339: #line 1021 "gram.y" { yyval.num = yystack.l_mark[0].num; } break; #line 3365 "gram.tab.c" } yystack.s_mark -= yym; yystate = *yystack.s_mark; yystack.l_mark -= 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; *++yystack.s_mark = YYFINAL; *++yystack.l_mark = yyval; if (yychar < 0) { if ((yychar = YYLEX) < 0) yychar = YYEOF; #if YYDEBUG if (yydebug) { yys = yyname[YYTRANSLATE(yychar)]; printf("%sdebug: state %d, reading %d (%s)\n", YYPREFIX, YYFINAL, yychar, yys); } #endif } if (yychar == YYEOF) 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, *yystack.s_mark, yystate); #endif if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) { goto yyoverflow; } *++yystack.s_mark = (YYINT) yystate; *++yystack.l_mark = yyval; goto yyloop; yyoverflow: YYERROR_CALL("yacc stack overflow"); yyabort: yyfreestack(&yystack); return (1); yyaccept: yyfreestack(&yystack); return (0); }