/* Automatically generated by Kelbt from "xmlparse.kl". * * Parts of this file are copied from Kelbt source covered by the GNU * GPL. As a special exception, you may use the parts of this file copied * from Kelbt source without restriction. The remainder is derived from * "xmlparse.kl" and inherits the copyright status of that file. */ #line 1 "xmlparse.kl" /* * Copyright 2001-2007 Adrian Thurston */ /* This file is part of Ragel. * * Ragel is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Ragel is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Ragel; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "xmlparse.h" #include "common.h" #include "gendata.h" #include "version.h" #include #include using std::cout; using std::ostream; using std::istream; using std::cerr; using std::endl; Key readKey( char *td, char **end ); long readOffsetPtr( char *td, char **end ); unsigned long readLength( char *td ); #line 121 "xmlparse.kh" #line 124 "xmlparse.kh" #line 168 "xmlparse.kh" #line 845 "xmlparse.kl" #line 55 "xmlparse.cpp" struct Parser_Lel_inline_item_type { #line 513 "xmlparse.kl" InlineItem *inlineItem; #line 61 "xmlparse.cpp" }; struct Parser_Lel_inline_list { #line 481 "xmlparse.kl" InlineList *inlineList; #line 71 "xmlparse.cpp" }; struct Parser_Lel_lm_action_list { #line 709 "xmlparse.kl" InlineList *inlineList; #line 81 "xmlparse.cpp" }; struct Parser_Lel_tag_arg { #line 243 "xmlparse.kl" char *option; #line 91 "xmlparse.cpp" }; struct Parser_Lel_tag_write_head { #line 228 "xmlparse.kl" InputLoc loc; #line 101 "xmlparse.cpp" }; union Parser_UserData { struct Parser_Lel_inline_item_type inline_item_type; struct Parser_Lel_inline_list inline_list; struct Parser_Lel_lm_action_list lm_action_list; struct Parser_Lel_tag_arg tag_arg; struct Parser_Lel_tag_write_head tag_write_head; struct Token token; }; struct Parser_LangEl { char *file; int line; int type; int reduction; int state; union Parser_UserData user; unsigned int retry; struct Parser_LangEl *next, *child, *prev; }; struct Parser_Block { struct Parser_LangEl data[8128]; struct Parser_Block *next; }; #line 134 "xmlparse.cpp" unsigned int Parser_startState = 0; short Parser_indicies[] = { 161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 159, 158, 0, 1, 314, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 162, -1, -1, -1, 4, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, 166, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 172, -1, 172, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 172, 172, 172, 172, 172, 172, 172, 172, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, 160, 9, 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 206, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, -1, -1, -1, -1, -1, -1, 12, -1, 13, -1, -1, -1, -1, -1, -1, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, -1, -1, 19, 17, 18, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 171, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, -1, -1, -1, -1, -1, -1, 16, 168, 26, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 205, 169, 28, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, -1, -1, -1, -1, 211, 211, 211, 211, -1, -1, -1, -1, -1, -1, 211, -1, 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 36, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 203, 42, 191, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 73, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 75, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 78, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 226, -1, -1, -1, -1, 81, 82, 247, 305, -1, -1, -1, -1, -1, -1, 83, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 210, 212, 213, 214, 215, 216, 217, 218, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, 87, 207, 192, 89, 90, 91, 92, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, 96, 111, 97, 98, 99, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, 109, 105, 108, 110, 107, 106, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 302, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 302, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, 187, 112, 193, 196, 194, 195, 197, 198, 199, 200, 201, 202, 208, 113, 114, 223, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 223, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 115, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 119, 312, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 284, 286, 287, 288, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 290, 291, 292, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301, 294, 298, 297, 295, 293, 296, 285, 190, 219, 220, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 222, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 306, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 311, 136, 299, 281, 282, 283, 289, 300, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 221, 139, 225, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 231, -1, -1, -1, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 140, 246, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, -1, 252, 252, 252, 252, 252, 252, 252, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 141, 304, 142, 313, 309, 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 224, 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 145, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 230, 232, 233, 234, 146, -1, -1, 147, 148, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, -1, 67, 61, 65, 64, 62, 60, 63, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 251, -1, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 308, 303, 229, 149, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 150, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, 250, 235, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 238, 154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 155, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 243, 236, 156, 241, 157, 240, 245, }; unsigned short Parser_keys[] = { 129, 194, 191, 191, 47, 195, 47, 201, 47, 221, 47, 202, 129, 129, 47, 47, 47, 222, 47, 224, 131, 131, 47, 223, 130, 130, 47, 47, 47, 220, 47, 220, 47, 218, 47, 225, 47, 220, 47, 220, 47, 220, 47, 220, 47, 220, 47, 220, 47, 220, 47, 220, 47, 220, 178, 178, 47, 47, 143, 143, 47, 278, 47, 219, 47, 278, 47, 278, 47, 278, 47, 278, 47, 278, 47, 278, 47, 278, 47, 278, 47, 278, 47, 278, 47, 284, 181, 181, 145, 145, 47, 47, 47, 47, 47, 47, 47, 47, 47, 220, 47, 220, 47, 220, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 220, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 220, 47, 279, 153, 153, 47, 47, 179, 179, 182, 182, 183, 183, 184, 184, 185, 185, 186, 186, 187, 187, 188, 188, 189, 189, 190, 190, 136, 136, 47, 47, 47, 47, 47, 234, 47, 237, 47, 251, 47, 282, 150, 286, 47, 278, 155, 155, 156, 156, 157, 157, 158, 158, 47, 278, 47, 278, 47, 278, 162, 162, 163, 163, 164, 164, 165, 165, 47, 278, 167, 167, 168, 168, 169, 169, 47, 280, 172, 172, 173, 173, 174, 174, 175, 175, 176, 176, 177, 177, 180, 180, 154, 154, 137, 137, 138, 138, 47, 235, 47, 238, 47, 252, 47, 283, 47, 286, 47, 47, 148, 148, 159, 159, 160, 160, 161, 161, 166, 166, 171, 171, 47, 220, 147, 147, 47, 47, 132, 132, 47, 239, 139, 139, 47, 220, 140, 140, 47, 47, 150, 150, 149, 149, 47, 278, 169, 169, 47, 247, 47, 278, 142, 142, 148, 148, 133, 133, 47, 47, 47, 245, 47, 248, 141, 141, 146, 146, 47, 246, 47, 249, 151, 151, 47, 47, 134, 134, 47, 47, 152, 152, 135, 135, 0, 0 }; unsigned int Parser_offsets[] = { 0, 66, 67, 216, 371, 546, 702, 703, 704, 880, 1058, 1059, 1236, 1237, 1238, 1412, 1586, 1758, 1937, 2111, 2285, 2459, 2633, 2807, 2981, 3155, 3329, 3503, 3504, 3505, 3506, 3738, 3911, 4143, 4375, 4607, 4839, 5071, 5303, 5535, 5767, 5999, 6231, 6469, 6470, 6471, 6472, 6473, 6474, 6475, 6649, 6823, 6997, 6998, 6999, 7000, 7001, 7002, 7176, 7177, 7178, 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7359, 7592, 7593, 7594, 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, 7603, 7604, 7605, 7606, 7607, 7795, 7986, 8191, 8427, 8564, 8796, 8797, 8798, 8799, 8800, 9032, 9264, 9496, 9497, 9498, 9499, 9500, 9732, 9733, 9734, 9735, 9969, 9970, 9971, 9972, 9973, 9974, 9975, 9976, 9977, 9978, 9979, 10168, 10360, 10566, 10803, 11043, 11044, 11045, 11046, 11047, 11048, 11049, 11050, 11224, 11225, 11226, 11227, 11420, 11421, 11595, 11596, 11597, 11598, 11599, 11831, 11832, 12033, 12265, 12266, 12267, 12268, 12269, 12468, 12670, 12671, 12672, 12872, 13075, 13076, 13077, 13078, 13079, 13080, 13081 }; unsigned short Parser_targs[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 }; unsigned int Parser_actInds[] = { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628 }; unsigned int Parser_actions[] = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 6, 0, 11, 0, 15, 0, 19, 0, 22, 0, 27, 0, 30, 0, 35, 0, 39, 0, 43, 0, 47, 0, 51, 0, 55, 0, 58, 0, 63, 0, 67, 0, 71, 0, 75, 0, 79, 0, 83, 0, 87, 0, 91, 0, 95, 0, 99, 0, 103, 0, 107, 0, 111, 0, 115, 0, 119, 0, 123, 0, 126, 0, 131, 0, 135, 0, 139, 0, 143, 0, 147, 0, 151, 0, 155, 0, 159, 0, 163, 0, 167, 0, 171, 0, 175, 0, 179, 0, 183, 0, 187, 0, 191, 0, 194, 0, 199, 0, 203, 0, 207, 0, 211, 0, 214, 0, 219, 0, 223, 0, 227, 0, 231, 0, 235, 0, 239, 0, 243, 0, 247, 0, 251, 0, 255, 0, 259, 0, 262, 0, 267, 0, 271, 0, 275, 0, 279, 0, 282, 0, 287, 0, 291, 0, 294, 0, 299, 0, 303, 0, 307, 0, 311, 0, 315, 0, 319, 0, 323, 0, 326, 0, 331, 0, 335, 0, 339, 0, 343, 0, 346, 0, 351, 0, 355, 0, 359, 0, 363, 0, 366, 0, 371, 0, 375, 0, 378, 0, 383, 0, 387, 0, 391, 0, 395, 0, 399, 0, 403, 0, 407, 0, 411, 0, 415, 0, 419, 0, 423, 0, 427, 0, 431, 0, 435, 0, 439, 0, 443, 0, 447, 0, 451, 0, 455, 0, 459, 0, 463, 0, 467, 0, 471, 0, 475, 0, 479, 0, 483, 0, 487, 0, 491, 0, 495, 0, 499, 0, 503, 0, 507, 0, 511, 0, 515, 0, 519, 0, 523, 0, 527, 0, 531, 0, 535, 0, 539, 0, 543, 0, 547, 0, 551, 0, 555, 0, 559, 0, 563, 0, 567, 0, 571, 0, 575, 0, 578, 0, 583, 0, 587, 0, 591, 0, 595, 0, 598, 0, 603, 0, 607, 0, 611, 0, 615, 0, 619, 0, 623, 0, 1, 0 }; int Parser_commitLen[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2 }; char Parser_prodLengths[] = { 1, 0, 5, 1, 2, 0, 2, 0, 1, 1, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 0, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 0, 3, 4, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 2, 0, 3, 4, 1, 2, 0, 4, 2, 0, 1, 1, 1, 3, 4, 1, 2, 0, 3, 4, 1, 2, 0, 3, 4, 1, 2, 0, 4, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 2, 0, 4, 4, 1, 2, 0, 3, 4, 1, 2, 1, 3, 1 }; unsigned short Parser_prodLhsIds[] = { 193, 193, 192, 194, 195, 195, 196, 196, 198, 198, 199, 197, 201, 202, 202, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 207, 218, 218, 219, 204, 205, 206, 209, 210, 211, 212, 213, 214, 215, 216, 217, 200, 221, 222, 222, 223, 208, 224, 225, 225, 226, 226, 226, 226, 226, 226, 226, 227, 228, 229, 234, 234, 235, 230, 236, 237, 237, 238, 239, 239, 240, 240, 240, 241, 242, 244, 245, 245, 246, 243, 247, 248, 248, 249, 231, 250, 251, 251, 252, 220, 220, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 279, 280, 232, 281, 282, 282, 283, 233, 284, 285, 285, 286, 287 }; char *Parser_prodNames[] = { "start-1", "start-2", "tag_ragel-1", "tag_ragel_head-1", "ragel_def_list-1", "ragel_def_list-2", "host_or_write_list-1", "host_or_write_list-2", "host_or_write-1", "host_or_write-2", "tag_host-1", "ragel_def-1", "tag_ragel_def_head-1", "ragel_def_item_list-1", "ragel_def_item_list-2", "ragel_def_item-1", "ragel_def_item-2", "ragel_def_item-3", "ragel_def_item-4", "ragel_def_item-5", "ragel_def_item-6", "ragel_def_item-7", "ragel_def_item-8", "ragel_def_item-9", "ragel_def_item-10", "ragel_def_item-11", "ragel_def_item-12", "ragel_def_item-13", "ragel_def_item-14", "tag_export_list-1", "export_list-1", "export_list-2", "tag_export-1", "tag_alph_type-1", "tag_getkey_expr-1", "tag_access_expr-1", "tag_p_expr-1", "tag_pe_expr-1", "tag_cs_expr-1", "tag_top_expr-1", "tag_stack_expr-1", "tag_act_expr-1", "tag_tokstart_expr-1", "tag_tokend_expr-1", "tag_data_expr-1", "tag_write-1", "tag_write_head-1", "write_option_list-1", "write_option_list-2", "tag_arg-1", "tag_machine-1", "tag_machine_head-1", "machine_item_list-1", "machine_item_list-2", "machine_item-1", "machine_item-2", "machine_item-3", "machine_item-4", "machine_item-5", "machine_item-6", "machine_item-7", "tag_start_state-1", "tag_error_state-1", "tag_entry_points-1", "entry_point_list-1", "entry_point_list-2", "tag_entry-1", "tag_state_list-1", "tag_state_list_head-1", "state_list-1", "state_list-2", "tag_state-1", "state_item_list-1", "state_item_list-2", "state_item-1", "state_item-2", "state_item-3", "tag_state_actions-1", "tag_state_cond_list-1", "tag_state_cond_list_head-1", "state_cond_list-1", "state_cond_list-2", "state_cond-1", "tag_trans_list-1", "tag_trans_list_head-1", "trans_list-1", "trans_list-2", "tag_trans-1", "tag_action_list-1", "tag_action_list_head-1", "action_list-1", "action_list-2", "tag_action-1", "inline_list-1", "inline_list-2", "inline_item-1", "inline_item-2", "inline_item-3", "inline_item-4", "inline_item-5", "inline_item-6", "inline_item-7", "inline_item-8", "inline_item-9", "inline_item-10", "inline_item-11", "inline_item-12", "inline_item-13", "inline_item-14", "inline_item-15", "inline_item-16", "inline_item-17", "inline_item-18", "inline_item-19", "inline_item-20", "inline_item-21", "inline_item-22", "inline_item-23", "inline_item-24", "tag_text-1", "tag_goto-1", "tag_call-1", "tag_next-1", "tag_goto_expr-1", "tag_call_expr-1", "tag_next_expr-1", "tag_ret-1", "tag_break-1", "tag_pchar-1", "tag_char-1", "tag_hold-1", "tag_exec-1", "tag_curs-1", "tag_targs-1", "tag_il_entry-1", "tag_init_tokstart-1", "tag_init_act-1", "tag_get_tokend-1", "tag_set_tokstart-1", "tag_set_tokend-1", "tag_set_act-1", "tag_sub_action-1", "tag_lm_switch-1", "lm_action_list-1", "lm_action_list-2", "tag_inline_action-1", "tag_action_table_list-1", "tag_action_table_list_head-1", "action_table_list-1", "action_table_list-2", "tag_action_table-1", "tag_cond_space_list-1", "tag_cond_space_list_head-1", "cond_space_list-1", "cond_space_list-2", "tag_cond_space-1", "_start-1" }; char *Parser_lelNames[] = { "D-0", "D-1", "D-2", "D-3", "D-4", "D-5", "D-6", "D-7", "D-8", "D-9", "D-10", "D-11", "D-12", "D-13", "D-14", "D-15", "D-16", "D-17", "D-18", "D-19", "D-20", "D-21", "D-22", "D-23", "D-24", "D-25", "D-26", "D-27", "D-28", "D-29", "D-30", "D-31", "D-32", "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "\\", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~", "D-127", "TAG_unknown", "TAG_ragel", "TAG_ragel_def", "TAG_host", "TAG_state_list", "TAG_state", "TAG_trans_list", "TAG_t", "TAG_machine", "TAG_start_state", "TAG_error_state", "TAG_action_list", "TAG_action_table_list", "TAG_action", "TAG_action_table", "TAG_alphtype", "TAG_element", "TAG_getkey", "TAG_state_actions", "TAG_entry_points", "TAG_sub_action", "TAG_cond_space_list", "TAG_cond_space", "TAG_cond_list", "TAG_c", "TAG_exports", "TAG_ex", "TAG_text", "TAG_goto", "TAG_call", "TAG_next", "TAG_goto_expr", "TAG_call_expr", "TAG_next_expr", "TAG_ret", "TAG_pchar", "TAG_char", "TAG_hold", "TAG_exec", "TAG_curs", "TAG_targs", "TAG_entry", "TAG_data", "TAG_lm_switch", "TAG_init_act", "TAG_set_act", "TAG_set_tokend", "TAG_get_tokend", "TAG_init_tokstart", "TAG_set_tokstart", "TAG_write", "TAG_access", "TAG_break", "TAG_arg", "TAG_cs_expr", "TAG_p_expr", "TAG_pe_expr", "TAG_top_expr", "TAG_stack_expr", "TAG_act_expr", "TAG_tokstart_expr", "TAG_tokend_expr", "TAG_data_expr", "_eof", "tag_ragel", "start", "tag_ragel_head", "ragel_def_list", "host_or_write_list", "ragel_def", "host_or_write", "tag_host", "tag_write", "tag_ragel_def_head", "ragel_def_item_list", "ragel_def_item", "tag_alph_type", "tag_getkey_expr", "tag_access_expr", "tag_export_list", "tag_machine", "tag_p_expr", "tag_pe_expr", "tag_cs_expr", "tag_top_expr", "tag_stack_expr", "tag_act_expr", "tag_tokstart_expr", "tag_tokend_expr", "tag_data_expr", "export_list", "tag_export", "inline_list", "tag_write_head", "write_option_list", "tag_arg", "tag_machine_head", "machine_item_list", "machine_item", "tag_start_state", "tag_error_state", "tag_entry_points", "tag_state_list", "tag_action_list", "tag_action_table_list", "tag_cond_space_list", "entry_point_list", "tag_entry", "tag_state_list_head", "state_list", "tag_state", "state_item_list", "state_item", "tag_state_actions", "tag_state_cond_list", "tag_trans_list", "tag_state_cond_list_head", "state_cond_list", "state_cond", "tag_trans_list_head", "trans_list", "tag_trans", "tag_action_list_head", "action_list", "tag_action", "inline_item", "inline_item_type", "tag_text", "tag_goto", "tag_call", "tag_next", "tag_goto_expr", "tag_call_expr", "tag_next_expr", "tag_ret", "tag_break", "tag_pchar", "tag_char", "tag_hold", "tag_exec", "tag_curs", "tag_targs", "tag_il_entry", "tag_init_tokstart", "tag_init_act", "tag_get_tokend", "tag_set_tokstart", "tag_set_tokend", "tag_set_act", "tag_sub_action", "tag_lm_switch", "lm_action_list", "tag_inline_action", "tag_action_table_list_head", "action_table_list", "tag_action_table", "tag_cond_space_list_head", "cond_space_list", "tag_cond_space", "_start" }; #line 850 "xmlparse.kl" void Parser::init() { #line 2555 "xmlparse.cpp" curs = Parser_startState; pool = 0; block = (struct Parser_Block*) malloc( sizeof(struct Parser_Block) ); block->next = 0; freshEl = block->data; #ifdef LOG_ACTIONS cerr << "allocating 8128 LangEls" << endl; #endif stackTop = freshEl; stackTop->type = 0; stackTop->state = -1; stackTop->next = 0; stackTop->child = 0; freshPos = 1; lastFinal = stackTop; numRetry = 0; numNodes = 0; errCount = 0; #line 855 "xmlparse.kl" } int Parser::parseLangEl( int type, const Token *token ) { #line 2579 "xmlparse.cpp" #define reject() induceReject = 1 int pos, targState; unsigned int *action; int rhsLen; struct Parser_LangEl *rhs[32]; struct Parser_LangEl *lel; struct Parser_LangEl *input; char induceReject; if ( curs < 0 ) return 0; if ( pool == 0 ) { if ( freshPos == 8128 ) { struct Parser_Block* newBlock = (struct Parser_Block*) malloc( sizeof(struct Parser_Block) ); newBlock->next = block; block = newBlock; freshEl = newBlock->data; #ifdef LOG_ACTIONS cerr << "allocating 8128 LangEls" << endl; #endif freshPos = 0; } input = freshEl + freshPos++; } else { input = pool; pool = pool->next; } numNodes += 1; input->type = type; input->user.token = *token; input->next = 0; input->retry = 0; input->child = 0; again: if ( input == 0 ) goto _out; lel = input; if ( lel->type < Parser_keys[curs<<1] || lel->type > Parser_keys[(curs<<1)+1] ) goto parseError; pos = Parser_indicies[Parser_offsets[curs] + (lel->type - Parser_keys[curs<<1])]; if ( pos < 0 ) goto parseError; induceReject = 0; targState = Parser_targs[pos]; action = Parser_actions + Parser_actInds[pos]; if ( lel->retry & 0x0000ffff ) action += (lel->retry & 0x0000ffff); if ( *action & 0x1 ) { #ifdef LOG_ACTIONS cerr << "shifted: " << Parser_lelNames[lel->type]; #endif input = input->next; lel->state = curs; lel->next = stackTop; stackTop = lel; if ( action[1] == 0 ) lel->retry &= 0xffff0000; else { lel->retry += 1; numRetry += 1; #ifdef LOG_ACTIONS cerr << " retry: " << stackTop; #endif } #ifdef LOG_ACTIONS cerr << endl; #endif } if ( Parser_commitLen[pos] != 0 ) { struct Parser_LangEl *commitHead = stackTop, *lel; int sp = 0, doExec = 0; #ifdef LOG_ACTIONS cerr << "commit encountered, executing final actions" << endl; #endif if ( Parser_commitLen[pos] < 0 ) commitHead = commitHead->next; lel = commitHead; commit_head: if ( lel == lastFinal ) { doExec = 1; goto commit_base; } if ( lel->next != 0 ) { sp += 1; lel->next->prev = lel; lel = lel->next; lel->retry = 0; goto commit_head; } commit_reverse: if ( lel->child != 0 ) { sp += 1; lel->child->prev = lel; lel = lel->child; lel->retry = 1; goto commit_head; } commit_upwards: if ( doExec ) { if ( lel->type < 192 ) { } else { struct Parser_LangEl *redLel = lel; if ( redLel->child != 0 ) { int r = Parser_prodLengths[redLel->reduction] - 1; struct Parser_LangEl *rhsEl = redLel->child; while ( rhsEl != 0 ) { rhs[r--] = rhsEl; rhsEl = rhsEl->next; } } switch ( lel->reduction ) { case 1: { #line 47 "xmlparse.kl" /* If we get no input the assumption is that the frontend died and * emitted an error. This forces the backend to return a non-zero * exit status, but does not print an error. */ gblErrorCount += 1; #line 2716 "xmlparse.cpp" } break; case 3: { #line 57 "xmlparse.kl" /* Check version used to generated the intermediate file. */ Attribute *versionAttr = (&rhs[0]->user.token)->tag->findAttr( "version" ); if ( versionAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a version attribute" << endp; if ( strcmp( versionAttr->value, VERSION ) != 0 ) error((&rhs[0]->user.token)->loc) << "version mismatch between frontend and backend" << endp; /* Check for file name attribute. */ Attribute *fileNameAttr = (&rhs[0]->user.token)->tag->findAttr( "filename" ); if ( fileNameAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a filename attribute" << endp; sourceFileName = fileNameAttr->value; /* Check for language attribute. */ Attribute *langAttr = (&rhs[0]->user.token)->tag->findAttr( "lang" ); if ( langAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a lang attribute" << endp; if ( strcmp( langAttr->value, "C" ) == 0 ) hostLang = &hostLangC; else if ( strcmp( langAttr->value, "D" ) == 0 ) hostLang = &hostLangD; else if ( strcmp( langAttr->value, "Java" ) == 0 ) hostLang = &hostLangJava; else if ( strcmp( langAttr->value, "Ruby" ) == 0 ) hostLang = &hostLangRuby; else { error((&rhs[0]->user.token)->loc) << "expecting lang attribute to be " "one of C, D, Java or Ruby" << endp; } outStream = openOutput( sourceFileName ); #line 2755 "xmlparse.cpp" } break; case 10: { #line 103 "xmlparse.kl" Attribute *lineAttr = (&rhs[0]->user.token)->tag->findAttr( "line" ); if ( lineAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a line attribute" << endp; else { int line = atoi( lineAttr->value ); if ( outputActive ) lineDirective( *outStream, sourceFileName, line ); } if ( outputActive ) *outStream << (&rhs[2]->user.token)->tag->content; #line 2773 "xmlparse.cpp" } break; case 11: { #line 119 "xmlparse.kl" /* Do this before distributing transitions out to singles and defaults * makes life easier. */ cgd->redFsm->maxKey = cgd->findMaxKey(); cgd->redFsm->assignActionLocs(); /* Find the first final state (The final state with the lowest id). */ cgd->redFsm->findFirstFinState(); /* Call the user's callback. */ cgd->finishRagelDef(); #line 2791 "xmlparse.cpp" } break; case 12: { #line 134 "xmlparse.kl" char *fsmName = 0; Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); if ( nameAttr != 0 ) { fsmName = nameAttr->value; CodeGenMapEl *mapEl = codeGenMap.find( fsmName ); if ( mapEl != 0 ) cgd = mapEl->value; else { cgd = makeCodeGen( sourceFileName, fsmName, *outStream, wantComplete ); codeGenMap.insert( fsmName, cgd ); } } else { cgd = makeCodeGen( sourceFileName, fsmName, *outStream, wantComplete ); } ::keyOps = &cgd->thisKeyOps; #line 2817 "xmlparse.cpp" } break; case 32: { #line 180 "xmlparse.kl" Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); if ( nameAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a name attribute" << endp; else { char *td = (&rhs[2]->user.token)->tag->content; Key exportKey = readKey( td, &td ); cgd->exportList.append( new Export( nameAttr->value, exportKey ) ); } #line 2832 "xmlparse.cpp" } break; case 33: { #line 192 "xmlparse.kl" if ( ! cgd->setAlphType( (&rhs[2]->user.token)->tag->content ) ) error((&rhs[0]->user.token)->loc) << "tag specifies unknown alphabet type" << endp; #line 2841 "xmlparse.cpp" } break; case 34: { #line 198 "xmlparse.kl" cgd->getKeyExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2849 "xmlparse.cpp" } break; case 35: { #line 203 "xmlparse.kl" cgd->accessExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2857 "xmlparse.cpp" } break; case 36: { #line 208 "xmlparse.kl" cgd->pExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2863 "xmlparse.cpp" } break; case 37: { #line 210 "xmlparse.kl" cgd->peExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2869 "xmlparse.cpp" } break; case 38: { #line 212 "xmlparse.kl" cgd->csExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2875 "xmlparse.cpp" } break; case 39: { #line 214 "xmlparse.kl" cgd->topExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2881 "xmlparse.cpp" } break; case 40: { #line 216 "xmlparse.kl" cgd->stackExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2887 "xmlparse.cpp" } break; case 41: { #line 218 "xmlparse.kl" cgd->actExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2893 "xmlparse.cpp" } break; case 42: { #line 220 "xmlparse.kl" cgd->tokstartExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2899 "xmlparse.cpp" } break; case 43: { #line 222 "xmlparse.kl" cgd->tokendExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2905 "xmlparse.cpp" } break; case 44: { #line 224 "xmlparse.kl" cgd->dataExpr = (&rhs[1]->user.inline_list)->inlineList; #line 2911 "xmlparse.cpp" } break; case 45: { #line 228 "xmlparse.kl" /* Terminate the options list and call the write statement handler. */ writeOptions.append(0); cgd->writeStatement( (&rhs[0]->user.tag_write_head)->loc, writeOptions.length()-1, writeOptions.data ); /* Clear the options in prep for the next write statement. */ writeOptions.empty(); #line 2924 "xmlparse.cpp" } break; case 46: { #line 243 "xmlparse.kl" Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "def_name" ); Attribute *lineAttr = (&rhs[0]->user.token)->tag->findAttr( "line" ); Attribute *colAttr = (&rhs[0]->user.token)->tag->findAttr( "col" ); if ( nameAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a def_name attribute" << endp; if ( lineAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a line attribute" << endp; if ( colAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a col attribute" << endp; if ( nameAttr != 0 && lineAttr != 0 && colAttr != 0 ) { (&redLel->user.tag_write_head)->loc.line = atoi(lineAttr->value); (&redLel->user.tag_write_head)->loc.col = atoi(colAttr->value); CodeGenMapEl *mapEl = codeGenMap.find( nameAttr->value ); if ( mapEl == 0 ) { source_error((&redLel->user.tag_write_head)->loc) << "write statement given " "but there are no machine instantiations" << endp; } else { cgd = mapEl->value; ::keyOps = &cgd->thisKeyOps; } } #line 2956 "xmlparse.cpp" } break; case 49: { #line 281 "xmlparse.kl" writeOptions.append( (&rhs[2]->user.token)->tag->content ); #line 2964 "xmlparse.cpp" } break; case 50: { #line 286 "xmlparse.kl" cgd->closeMachine(); #line 2972 "xmlparse.cpp" } break; case 51: { #line 291 "xmlparse.kl" cgd->createMachine(); #line 2980 "xmlparse.cpp" } break; case 61: { #line 311 "xmlparse.kl" unsigned long startState = strtoul( (&rhs[2]->user.token)->tag->content, 0, 10 ); cgd->setStartState( startState ); #line 2989 "xmlparse.cpp" } break; case 62: { #line 317 "xmlparse.kl" unsigned long errorState = strtoul( (&rhs[2]->user.token)->tag->content, 0, 10 ); cgd->setErrorState( errorState ); #line 2998 "xmlparse.cpp" } break; case 63: { #line 323 "xmlparse.kl" Attribute *errorAttr = (&rhs[0]->user.token)->tag->findAttr( "error" ); if ( errorAttr != 0 ) cgd->setForcedErrorState(); #line 3008 "xmlparse.cpp" } break; case 66: { #line 333 "xmlparse.kl" Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); if ( nameAttr == 0 ) { error((&rhs[0]->user.token)->loc) << "tag :: " "requires a name attribute" << endp; } else { char *data = (&rhs[2]->user.token)->tag->content; unsigned long entry = strtoul( data, &data, 10 ); cgd->addEntryPoint( nameAttr->value, entry ); } #line 3025 "xmlparse.cpp" } break; case 68: { #line 349 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a length attribute" << endp; else { unsigned long length = strtoul( lengthAttr->value, 0, 10 ); cgd->initStateList( length ); curState = 0; } #line 3040 "xmlparse.cpp" } break; case 71: { #line 364 "xmlparse.kl" Attribute *idAttr = (&rhs[0]->user.token)->tag->findAttr( "id" ); if ( idAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires an id attribute" << endp; else { int id = atoi( idAttr->value ); cgd->setId( curState, id ); } Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "final" ); if ( lengthAttr != 0 ) cgd->setFinal( curState ); curState += 1; #line 3059 "xmlparse.cpp" } break; case 77: { #line 387 "xmlparse.kl" char *ad = (&rhs[2]->user.token)->tag->content; long toStateAction = readOffsetPtr( ad, &ad ); long fromStateAction = readOffsetPtr( ad, &ad ); long eofAction = readOffsetPtr( ad, &ad ); cgd->setStateActions( curState, toStateAction, fromStateAction, eofAction ); #line 3074 "xmlparse.cpp" } break; case 79: { #line 401 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a length attribute" << endp; else { ulong length = readLength( lengthAttr->value ); cgd->initStateCondList( curState, length ); curStateCond = 0; } #line 3089 "xmlparse.cpp" } break; case 82: { #line 416 "xmlparse.kl" char *td = (&rhs[2]->user.token)->tag->content; Key lowKey = readKey( td, &td ); Key highKey = readKey( td, &td ); long condId = readOffsetPtr( td, &td ); cgd->addStateCond( curState, lowKey, highKey, condId ); #line 3101 "xmlparse.cpp" } break; case 83: { #line 425 "xmlparse.kl" cgd->finishTransList( curState ); #line 3109 "xmlparse.cpp" } break; case 84: { #line 430 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a length attribute" << endp; else { unsigned long length = strtoul( lengthAttr->value, 0, 10 ); cgd->initTransList( curState, length ); curTrans = 0; } #line 3124 "xmlparse.cpp" } break; case 87: { #line 445 "xmlparse.kl" char *td = (&rhs[2]->user.token)->tag->content; Key lowKey = readKey( td, &td ); Key highKey = readKey( td, &td ); long targ = readOffsetPtr( td, &td ); long action = readOffsetPtr( td, &td ); cgd->newTrans( curState, curTrans++, lowKey, highKey, targ, action ); #line 3138 "xmlparse.cpp" } break; case 89: { #line 462 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a length attribute" << endp; else { unsigned long length = strtoul( lengthAttr->value, 0, 10 ); cgd->initActionList( length ); curAction = 0; } #line 3153 "xmlparse.cpp" } break; case 92: { #line 481 "xmlparse.kl" Attribute *lineAttr = (&rhs[0]->user.token)->tag->findAttr( "line" ); Attribute *colAttr = (&rhs[0]->user.token)->tag->findAttr( "col" ); Attribute *nameAttr = (&rhs[0]->user.token)->tag->findAttr( "name" ); if ( lineAttr == 0 || colAttr == 0) error((&rhs[0]->user.token)->loc) << "tag requires a line and col attributes" << endp; else { unsigned long line = strtoul( lineAttr->value, 0, 10 ); unsigned long col = strtoul( colAttr->value, 0, 10 ); char *name = 0; if ( nameAttr != 0 ) name = nameAttr->value; cgd->newAction( curAction++, name, line, col, (&rhs[1]->user.inline_list)->inlineList ); } #line 3175 "xmlparse.cpp" } break; case 93: { #line 506 "xmlparse.kl" /* Append the item to the list, return the list. */ (&rhs[0]->user.inline_list)->inlineList->append( (&rhs[1]->user.inline_item_type)->inlineItem ); (&redLel->user.inline_list)->inlineList = (&rhs[0]->user.inline_list)->inlineList; #line 3185 "xmlparse.cpp" } break; case 94: { #line 513 "xmlparse.kl" /* Start with empty list. */ (&redLel->user.inline_list)->inlineList = new InlineList; #line 3194 "xmlparse.cpp" } break; case 95: { #line 525 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3200 "xmlparse.cpp" } break; case 96: { #line 526 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3206 "xmlparse.cpp" } break; case 97: { #line 527 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3212 "xmlparse.cpp" } break; case 98: { #line 528 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3218 "xmlparse.cpp" } break; case 99: { #line 529 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3224 "xmlparse.cpp" } break; case 100: { #line 530 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3230 "xmlparse.cpp" } break; case 101: { #line 531 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3236 "xmlparse.cpp" } break; case 102: { #line 532 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3242 "xmlparse.cpp" } break; case 103: { #line 533 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3248 "xmlparse.cpp" } break; case 104: { #line 534 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3254 "xmlparse.cpp" } break; case 105: { #line 535 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3260 "xmlparse.cpp" } break; case 106: { #line 536 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3266 "xmlparse.cpp" } break; case 107: { #line 537 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3272 "xmlparse.cpp" } break; case 108: { #line 538 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3278 "xmlparse.cpp" } break; case 109: { #line 539 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3284 "xmlparse.cpp" } break; case 110: { #line 540 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3290 "xmlparse.cpp" } break; case 111: { #line 541 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3296 "xmlparse.cpp" } break; case 112: { #line 542 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3302 "xmlparse.cpp" } break; case 113: { #line 543 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3308 "xmlparse.cpp" } break; case 114: { #line 544 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3314 "xmlparse.cpp" } break; case 115: { #line 545 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3320 "xmlparse.cpp" } break; case 116: { #line 546 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3326 "xmlparse.cpp" } break; case 117: { #line 547 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3332 "xmlparse.cpp" } break; case 118: { #line 548 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = (&rhs[0]->user.inline_item_type)->inlineItem; #line 3338 "xmlparse.cpp" } break; case 119: { #line 576 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Text ); (&redLel->user.inline_item_type)->inlineItem->data = (&rhs[2]->user.token)->tag->content; #line 3347 "xmlparse.cpp" } break; case 120: { #line 582 "xmlparse.kl" int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Goto ); (&redLel->user.inline_item_type)->inlineItem->targId = targ; #line 3357 "xmlparse.cpp" } break; case 121: { #line 589 "xmlparse.kl" int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Call ); (&redLel->user.inline_item_type)->inlineItem->targId = targ; #line 3367 "xmlparse.cpp" } break; case 122: { #line 596 "xmlparse.kl" int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Next ); (&redLel->user.inline_item_type)->inlineItem->targId = targ; #line 3377 "xmlparse.cpp" } break; case 123: { #line 603 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::GotoExpr ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; #line 3386 "xmlparse.cpp" } break; case 124: { #line 609 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::CallExpr ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; #line 3395 "xmlparse.cpp" } break; case 125: { #line 615 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::NextExpr ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; #line 3404 "xmlparse.cpp" } break; case 126: { #line 621 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Ret ); #line 3412 "xmlparse.cpp" } break; case 127: { #line 626 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Break ); #line 3420 "xmlparse.cpp" } break; case 128: { #line 631 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::PChar ); #line 3428 "xmlparse.cpp" } break; case 129: { #line 636 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Char ); #line 3436 "xmlparse.cpp" } break; case 130: { #line 641 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Hold ); #line 3444 "xmlparse.cpp" } break; case 131: { #line 646 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Exec ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; #line 3453 "xmlparse.cpp" } break; case 132: { #line 652 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Curs ); #line 3461 "xmlparse.cpp" } break; case 133: { #line 657 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Targs ); #line 3469 "xmlparse.cpp" } break; case 134: { #line 662 "xmlparse.kl" int targ = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::Entry ); (&redLel->user.inline_item_type)->inlineItem->targId = targ; #line 3479 "xmlparse.cpp" } break; case 135: { #line 669 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmInitTokStart ); #line 3487 "xmlparse.cpp" } break; case 136: { #line 674 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmInitAct ); #line 3495 "xmlparse.cpp" } break; case 137: { #line 679 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmGetTokEnd ); #line 3503 "xmlparse.cpp" } break; case 138: { #line 684 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSetTokStart ); cgd->hasLongestMatch = true; #line 3512 "xmlparse.cpp" } break; case 139: { #line 690 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSetTokEnd ); (&redLel->user.inline_item_type)->inlineItem->offset = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); #line 3521 "xmlparse.cpp" } break; case 140: { #line 696 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSetActId ); (&redLel->user.inline_item_type)->inlineItem->lmId = strtol( (&rhs[2]->user.token)->tag->content, 0, 10 ); #line 3530 "xmlparse.cpp" } break; case 141: { #line 702 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::SubAction ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; #line 3539 "xmlparse.cpp" } break; case 142: { #line 709 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::LmSwitch ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.lm_action_list)->inlineList; #line 3548 "xmlparse.cpp" } break; case 143: { #line 720 "xmlparse.kl" (&redLel->user.lm_action_list)->inlineList = (&rhs[0]->user.lm_action_list)->inlineList; (&redLel->user.lm_action_list)->inlineList->append( (&rhs[1]->user.inline_item_type)->inlineItem ); #line 3557 "xmlparse.cpp" } break; case 144: { #line 725 "xmlparse.kl" (&redLel->user.lm_action_list)->inlineList = new InlineList; #line 3565 "xmlparse.cpp" } break; case 145: { #line 732 "xmlparse.kl" (&redLel->user.inline_item_type)->inlineItem = new InlineItem( InputLoc(), InlineItem::SubAction ); (&redLel->user.inline_item_type)->inlineItem->children = (&rhs[1]->user.inline_list)->inlineList; Attribute *idAttr = (&rhs[0]->user.token)->tag->findAttr( "id" ); if ( idAttr != 0 ) { unsigned long id = strtoul( idAttr->value, 0, 10 ); (&redLel->user.inline_item_type)->inlineItem->lmId = id; } #line 3580 "xmlparse.cpp" } break; case 147: { #line 751 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) { error((&rhs[0]->user.token)->loc) << "tag requires " "a length attribute" << endp; } else { unsigned long length = strtoul( lengthAttr->value, 0, 10 ); cgd->initActionTableList( length ); curActionTable = 0; } #line 3597 "xmlparse.cpp" } break; case 150: { #line 768 "xmlparse.kl" /* Find the length of the action table. */ Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a length attribute" << endp; else { unsigned long length = strtoul( lengthAttr->value, 0, 10 ); /* Collect the action table. */ RedAction *redAct = cgd->allActionTables + curActionTable; redAct->actListId = curActionTable; redAct->key.setAsNew( length ); char *ptr = (&rhs[2]->user.token)->tag->content; int pos = 0; while ( *ptr != 0 ) { unsigned long actionId = strtoul( ptr, &ptr, 10 ); redAct->key[pos].key = 0; redAct->key[pos].value = cgd->allActions+actionId; pos += 1; } /* Insert into the action table map. */ cgd->redFsm->actionMap.insert( redAct ); } curActionTable += 1; #line 3629 "xmlparse.cpp" } break; case 152: { #line 803 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); if ( lengthAttr == 0 ) { error((&rhs[0]->user.token)->loc) << "tag " "requires a length attribute" << endp; } else { ulong length = readLength( lengthAttr->value ); cgd->initCondSpaceList( length ); curCondSpace = 0; } #line 3646 "xmlparse.cpp" } break; case 155: { #line 820 "xmlparse.kl" Attribute *lengthAttr = (&rhs[0]->user.token)->tag->findAttr( "length" ); Attribute *idAttr = (&rhs[0]->user.token)->tag->findAttr( "id" ); if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires a length attribute" << endp; else { if ( lengthAttr == 0 ) error((&rhs[0]->user.token)->loc) << "tag requires an id attribute" << endp; else { unsigned long condSpaceId = strtoul( idAttr->value, 0, 10 ); ulong length = readLength( lengthAttr->value ); char *td = (&rhs[2]->user.token)->tag->content; Key baseKey = readKey( td, &td ); cgd->newCondSpace( curCondSpace, condSpaceId, baseKey ); for ( ulong a = 0; a < length; a++ ) { long actionOffset = readOffsetPtr( td, &td ); cgd->condSpaceItem( curCondSpace, actionOffset ); } curCondSpace += 1; } } #line 3675 "xmlparse.cpp" } break; } } if ( lel->child != 0 ) { struct Parser_LangEl *first = lel->child; struct Parser_LangEl *child = lel->child; lel->child = 0; while ( 1 ) { if ( child->type < 192 ) { } else { } numNodes -= 1; if ( child->next == 0 ) break; child = child->next; } child->next = pool; pool = first; } } commit_base: if ( sp > 0 ) { sp -= 1; if ( lel->retry == 0 ) { lel = lel->prev; goto commit_reverse; } else { lel->retry = 0; lel = lel->prev; goto commit_upwards; } } lel->retry = 0; lastFinal = lel; numRetry = 0; } if ( *action & 0x2 ) { int reduction = *action >> 2; struct Parser_LangEl *redLel; if ( pool == 0 ) { if ( freshPos == 8128 ) { struct Parser_Block* newBlock = (struct Parser_Block*) malloc( sizeof(struct Parser_Block) ); newBlock->next = block; block = newBlock; freshEl = newBlock->data; #ifdef LOG_ACTIONS cerr << "allocating 8128 LangEls" << endl; #endif freshPos = 0; } redLel = freshEl + freshPos++; } else { redLel = pool; pool = pool->next; } numNodes += 1; redLel->type = Parser_prodLhsIds[reduction]; redLel->reduction = reduction; redLel->child = 0; redLel->next = 0; redLel->retry = (lel->retry << 16); lel->retry &= 0xffff0000; rhsLen = Parser_prodLengths[reduction]; if ( rhsLen > 0 ) { int r; for ( r = rhsLen-1; r > 0; r-- ) { rhs[r] = stackTop; stackTop = stackTop->next; } rhs[0] = stackTop; stackTop = stackTop->next; rhs[0]->next = 0; } #ifdef LOG_ACTIONS cerr << "reduced: " << Parser_prodNames[reduction] << " rhsLen: " << rhsLen; #endif if ( action[1] == 0 ) redLel->retry = 0; else { redLel->retry += 0x10000; numRetry += 1; #ifdef LOG_ACTIONS cerr << " retry: " << redLel; #endif } #ifdef LOG_ACTIONS cerr << endl; #endif if ( rhsLen == 0 ) { redLel->file = lel->file; redLel->line = lel->line; targState = curs; } else { redLel->child = rhs[rhsLen-1]; redLel->file = rhs[0]->file; redLel->line = rhs[0]->line; targState = rhs[0]->state; } if ( induceReject ) { #ifdef LOG_ACTIONS cerr << "error induced during reduction of " << Parser_lelNames[redLel->type] << endl; #endif redLel->state = curs; redLel->next = stackTop; stackTop = redLel; curs = targState; goto parseError; } else { redLel->next = input; input = redLel; } } curs = targState; goto again; parseError: #ifdef LOG_BACKTRACK cerr << "hit error" << endl; #endif if ( numRetry > 0 ) { while ( 1 ) { struct Parser_LangEl *redLel = stackTop; if ( stackTop->type < 192 ) { #ifdef LOG_BACKTRACK cerr << "backing up over terminal: " << Parser_lelNames[stackTop->type] << endl; #endif stackTop = stackTop->next; redLel->next = input; input = redLel; } else { #ifdef LOG_BACKTRACK cerr << "backing up over non-terminal: " << Parser_lelNames[stackTop->type] << endl; #endif stackTop = stackTop->next; struct Parser_LangEl *first = redLel->child; if ( first == 0 ) rhsLen = 0; else { rhsLen = 1; while ( first->next != 0 ) { first = first->next; rhsLen += 1; } first->next = stackTop; stackTop = redLel->child; struct Parser_LangEl *rhsEl = stackTop; int p = rhsLen; while ( p > 0 ) { rhs[--p] = rhsEl; rhsEl = rhsEl->next; } } redLel->next = pool; pool = redLel; numNodes -= 1; } if ( redLel->retry > 0 ) { #ifdef LOG_BACKTRACK cerr << "found retry targ: " << redLel << endl; #endif numRetry -= 1; #ifdef LOG_BACKTRACK cerr << "found retry: " << redLel << endl; #endif if ( redLel->retry & 0x0000ffff ) curs = input->state; else { input->retry = redLel->retry >> 16; if ( stackTop->state < 0 ) curs = Parser_startState; else { curs = Parser_targs[(int)Parser_indicies[Parser_offsets[stackTop->state] + (stackTop->type - Parser_keys[stackTop->state<<1])]]; } } goto again; } } } curs = -1; errCount += 1; _out: {} #line 860 "xmlparse.kl" return errCount == 0 ? 0 : -1; } unsigned long readLength( char *td ) { return strtoul( td, 0, 10 ); } Key readKey( char *td, char **end ) { if ( keyOps->isSigned ) return Key( strtol( td, end, 10 ) ); else return Key( strtoul( td, end, 10 ) ); } long readOffsetPtr( char *td, char **end ) { while ( *td == ' ' || *td == '\t' ) td++; if ( *td == 'x' ) { if ( end != 0 ) *end = td + 1; return -1; } return strtol( td, end, 10 ); } ostream &Parser::warning( const InputLoc &loc ) { cerr << fileName << ":" << loc.line << ":" << loc.col << ": warning: "; return cerr; } ostream &Parser::error( const InputLoc &loc ) { gblErrorCount += 1; assert( fileName != 0 ); cerr << fileName << ":" << loc.line << ":" << loc.col << ": "; return cerr; } ostream &Parser::parser_error( int tokId, Token &token ) { gblErrorCount += 1; assert( fileName != 0 ); cerr << fileName << ":" << token.loc.line << ":" << token.loc.col; if ( token.tag != 0 ) { if ( token.tag->tagId == 0 ) cerr << ": at unknown tag"; else cerr << ": at tag <" << token.tag->tagId->name << ">"; } cerr << ": "; return cerr; } ostream &Parser::source_error( const InputLoc &loc ) { gblErrorCount += 1; assert( sourceFileName != 0 ); cerr << sourceFileName << ":" << loc.line << ":" << loc.col << ": "; return cerr; } int Parser::token( int tokenId, Token &tok ) { int res = parseLangEl( tokenId, &tok ); if ( res < 0 ) parser_error( tokenId, tok ) << "parse error" << endp; return res; } int Parser::token( int tokenId, int col, int line ) { Token tok; tok.loc.col = col; tok.loc.line = line; tok.tag = 0; return token( tokenId, tok ); } int Parser::token( XMLTag *tag, int col, int line ) { Token tok; tok.loc.col = col; tok.loc.line = line; tok.tag = tag; if ( tag->type == XMLTag::Close ) { int res = token( '/', tok ); if ( res < 0 ) return res; } tok.tag = tag; return token( tag->tagId != 0 ? tag->tagId->id : TAG_unknown, tok ); }