/* file contains automatically generated code, DO NOT MODIFY *
 *
 * The code in this file implements a function that determines whether
 * or not a given identifier is really an SQL keyword.  The same thing
 * might be implemented more directly using a hand-written hash table.
 * But by using this automatically generated code, the size of the code
 * is substantially reduced.  This is important for embedded applications
 * on platforms with limited memory.
 *
 * This code has been copied from SQLite's mkkeywordhash.c file and modified.
 * to read the SQL keywords from a file instead of static ones
 */

/* Parsed keywords
 *
 * From line: ADD 	ALL 	ALTER
 * KEYWORD: 'ADD'
 * KEYWORD: 'ALL'
 * KEYWORD: 'ALTER'
 *
 * From line: ANALYZE 	AND 	AS
 * KEYWORD: 'ANALYZE'
 * KEYWORD: 'AND'
 * KEYWORD: 'AS'
 *
 * From line: ASC 	ASENSITIVE 	BEFORE
 * KEYWORD: 'ASC'
 * KEYWORD: 'ASENSITIVE'
 * KEYWORD: 'BEFORE'
 *
 * From line: BETWEEN 	BIGINT 	BINARY
 * KEYWORD: 'BETWEEN'
 * KEYWORD: 'BIGINT'
 * KEYWORD: 'BINARY'
 *
 * From line: BLOB 	BOTH 	BY
 * KEYWORD: 'BLOB'
 * KEYWORD: 'BOTH'
 * KEYWORD: 'BY'
 *
 * From line: CALL 	CASCADE 	CASE
 * KEYWORD: 'CALL'
 * KEYWORD: 'CASCADE'
 * KEYWORD: 'CASE'
 *
 * From line: CHANGE 	CHAR 	CHARACTER
 * KEYWORD: 'CHANGE'
 * KEYWORD: 'CHAR'
 * KEYWORD: 'CHARACTER'
 *
 * From line: CHECK 	COLLATE 	COLUMN
 * KEYWORD: 'CHECK'
 * KEYWORD: 'COLLATE'
 * KEYWORD: 'COLUMN'
 *
 * From line: COLUMNS 	CONDITION 	CONNECTION
 * KEYWORD: 'COLUMNS'
 * KEYWORD: 'CONDITION'
 * KEYWORD: 'CONNECTION'
 *
 * From line: CONSTRAINT 	CONTINUE 	CONVERT
 * KEYWORD: 'CONSTRAINT'
 * KEYWORD: 'CONTINUE'
 * KEYWORD: 'CONVERT'
 *
 * From line: CREATE 	CROSS 	CURRENT_DATE
 * KEYWORD: 'CREATE'
 * KEYWORD: 'CROSS'
 * KEYWORD: 'CURRENT_DATE'
 *
 * From line: CURRENT_TIME 	CURRENT_TIMESTAMP 	CURRENT_USER
 * KEYWORD: 'CURRENT_TIME'
 * KEYWORD: 'CURRENT_TIMESTAMP'
 * KEYWORD: 'CURRENT_USER'
 *
 * From line: CURSOR 	DATABASE 	DATABASES
 * KEYWORD: 'CURSOR'
 * KEYWORD: 'DATABASE'
 * KEYWORD: 'DATABASES'
 *
 * From line: DAY_HOUR 	DAY_MICROSECOND 	DAY_MINUTE
 * KEYWORD: 'DAY_HOUR'
 * KEYWORD: 'DAY_MICROSECOND'
 * KEYWORD: 'DAY_MINUTE'
 *
 * From line: DAY_SECOND 	DEC 	DECIMAL
 * KEYWORD: 'DAY_SECOND'
 * KEYWORD: 'DEC'
 * KEYWORD: 'DECIMAL'
 *
 * From line: DECLARE 	DEFAULT 	DELAYED
 * KEYWORD: 'DECLARE'
 * KEYWORD: 'DEFAULT'
 * KEYWORD: 'DELAYED'
 *
 * From line: DELETE 	DESC 	DESCRIBE
 * KEYWORD: 'DELETE'
 * KEYWORD: 'DESC'
 * KEYWORD: 'DESCRIBE'
 *
 * From line: DETERMINISTIC 	DISTINCT 	DISTINCTROW
 * KEYWORD: 'DETERMINISTIC'
 * KEYWORD: 'DISTINCT'
 * KEYWORD: 'DISTINCTROW'
 *
 * From line: DIV 	DOUBLE 	DROP
 * KEYWORD: 'DIV'
 * KEYWORD: 'DOUBLE'
 * KEYWORD: 'DROP'
 *
 * From line: DUAL 	EACH 	ELSE
 * KEYWORD: 'DUAL'
 * KEYWORD: 'EACH'
 * KEYWORD: 'ELSE'
 *
 * From line: ELSEIF 	ENCLOSED 	ESCAPED
 * KEYWORD: 'ELSEIF'
 * KEYWORD: 'ENCLOSED'
 * KEYWORD: 'ESCAPED'
 *
 * From line: EXISTS 	EXIT 	EXPLAIN
 * KEYWORD: 'EXISTS'
 * KEYWORD: 'EXIT'
 * KEYWORD: 'EXPLAIN'
 *
 * From line: FALSE 	FETCH 	FIELDS
 * KEYWORD: 'FALSE'
 * KEYWORD: 'FETCH'
 * KEYWORD: 'FIELDS'
 *
 * From line: FLOAT 	FLOAT4 	FLOAT8
 * KEYWORD: 'FLOAT'
 * KEYWORD: 'FLOAT4'
 * KEYWORD: 'FLOAT8'
 *
 * From line: FOR 	FORCE 	FOREIGN
 * KEYWORD: 'FOR'
 * KEYWORD: 'FORCE'
 * KEYWORD: 'FOREIGN'
 *
 * From line: FROM 	FULLTEXT 	GOTO
 * KEYWORD: 'FROM'
 * KEYWORD: 'FULLTEXT'
 * KEYWORD: 'GOTO'
 *
 * From line: GRANT 	GROUP 	HAVING
 * KEYWORD: 'GRANT'
 * KEYWORD: 'GROUP'
 * KEYWORD: 'HAVING'
 *
 * From line: HIGH_PRIORITY 	HOUR_MICROSECOND 	HOUR_MINUTE
 * KEYWORD: 'HIGH_PRIORITY'
 * KEYWORD: 'HOUR_MICROSECOND'
 * KEYWORD: 'HOUR_MINUTE'
 *
 * From line: HOUR_SECOND 	IF 	IGNORE
 * KEYWORD: 'HOUR_SECOND'
 * KEYWORD: 'IF'
 * KEYWORD: 'IGNORE'
 *
 * From line: IN 	INDEX 	INFILE
 * KEYWORD: 'IN'
 * KEYWORD: 'INDEX'
 * KEYWORD: 'INFILE'
 *
 * From line: INNER 	INOUT 	INSENSITIVE
 * KEYWORD: 'INNER'
 * KEYWORD: 'INOUT'
 * KEYWORD: 'INSENSITIVE'
 *
 * From line: INSERT 	INT 	INT1
 * KEYWORD: 'INSERT'
 * KEYWORD: 'INT'
 * KEYWORD: 'INT1'
 *
 * From line: INT2 	INT3 	INT4
 * KEYWORD: 'INT2'
 * KEYWORD: 'INT3'
 * KEYWORD: 'INT4'
 *
 * From line: INT8 	INTEGER 	INTERVAL
 * KEYWORD: 'INT8'
 * KEYWORD: 'INTEGER'
 * KEYWORD: 'INTERVAL'
 *
 * From line: INTO 	IS 	ITERATE
 * KEYWORD: 'INTO'
 * KEYWORD: 'IS'
 * KEYWORD: 'ITERATE'
 *
 * From line: JOIN 	KEY 	KEYS
 * KEYWORD: 'JOIN'
 * KEYWORD: 'KEY'
 * KEYWORD: 'KEYS'
 *
 * From line: KILL 	LABEL 	LEADING
 * KEYWORD: 'KILL'
 * KEYWORD: 'LABEL'
 * KEYWORD: 'LEADING'
 *
 * From line: LEAVE 	LEFT 	LIKE
 * KEYWORD: 'LEAVE'
 * KEYWORD: 'LEFT'
 * KEYWORD: 'LIKE'
 *
 * From line: LIMIT 	LINES 	LOAD
 * KEYWORD: 'LIMIT'
 * KEYWORD: 'LINES'
 * KEYWORD: 'LOAD'
 *
 * From line: LOCALTIME 	LOCALTIMESTAMP 	LOCK
 * KEYWORD: 'LOCALTIME'
 * KEYWORD: 'LOCALTIMESTAMP'
 * KEYWORD: 'LOCK'
 *
 * From line: LONG 	LONGBLOB 	LONGTEXT
 * KEYWORD: 'LONG'
 * KEYWORD: 'LONGBLOB'
 * KEYWORD: 'LONGTEXT'
 *
 * From line: LOOP 	LOW_PRIORITY 	MATCH
 * KEYWORD: 'LOOP'
 * KEYWORD: 'LOW_PRIORITY'
 * KEYWORD: 'MATCH'
 *
 * From line: MEDIUMBLOB 	MEDIUMINT 	MEDIUMTEXT
 * KEYWORD: 'MEDIUMBLOB'
 * KEYWORD: 'MEDIUMINT'
 * KEYWORD: 'MEDIUMTEXT'
 *
 * From line: MIDDLEINT 	MINUTE_MICROSECOND 	MINUTE_SECOND
 * KEYWORD: 'MIDDLEINT'
 * KEYWORD: 'MINUTE_MICROSECOND'
 * KEYWORD: 'MINUTE_SECOND'
 *
 * From line: MOD 	MODIFIES 	NATURAL
 * KEYWORD: 'MOD'
 * KEYWORD: 'MODIFIES'
 * KEYWORD: 'NATURAL'
 *
 * From line: NOT 	NO_WRITE_TO_BINLOG 	NULL
 * KEYWORD: 'NOT'
 * KEYWORD: 'NO_WRITE_TO_BINLOG'
 * KEYWORD: 'NULL'
 *
 * From line: NUMERIC 	ON 	OPTIMIZE
 * KEYWORD: 'NUMERIC'
 * KEYWORD: 'ON'
 * KEYWORD: 'OPTIMIZE'
 *
 * From line: OPTION 	OPTIONALLY 	OR
 * KEYWORD: 'OPTION'
 * KEYWORD: 'OPTIONALLY'
 * KEYWORD: 'OR'
 *
 * From line: ORDER 	OUT 	OUTER
 * KEYWORD: 'ORDER'
 * KEYWORD: 'OUT'
 * KEYWORD: 'OUTER'
 *
 * From line: OUTFILE 	PRECISION 	PRIMARY
 * KEYWORD: 'OUTFILE'
 * KEYWORD: 'PRECISION'
 * KEYWORD: 'PRIMARY'
 *
 * From line: PRIVILEGES 	PROCEDURE 	PURGE
 * KEYWORD: 'PRIVILEGES'
 * KEYWORD: 'PROCEDURE'
 * KEYWORD: 'PURGE'
 *
 * From line: READ 	READS 	REAL
 * KEYWORD: 'READ'
 * KEYWORD: 'READS'
 * KEYWORD: 'REAL'
 *
 * From line: REFERENCES 	REGEXP 	RELEASE
 * KEYWORD: 'REFERENCES'
 * KEYWORD: 'REGEXP'
 * KEYWORD: 'RELEASE'
 *
 * From line: RENAME 	REPEAT 	REPLACE
 * KEYWORD: 'RENAME'
 * KEYWORD: 'REPEAT'
 * KEYWORD: 'REPLACE'
 *
 * From line: REQUIRE 	RESTRICT 	RETURN
 * KEYWORD: 'REQUIRE'
 * KEYWORD: 'RESTRICT'
 * KEYWORD: 'RETURN'
 *
 * From line: REVOKE 	RIGHT 	RLIKE
 * KEYWORD: 'REVOKE'
 * KEYWORD: 'RIGHT'
 * KEYWORD: 'RLIKE'
 *
 * From line: SCHEMA 	SCHEMAS 	SECOND_MICROSECOND
 * KEYWORD: 'SCHEMA'
 * KEYWORD: 'SCHEMAS'
 * KEYWORD: 'SECOND_MICROSECOND'
 *
 * From line: SELECT 	SENSITIVE 	SEPARATOR
 * KEYWORD: 'SELECT'
 * KEYWORD: 'SENSITIVE'
 * KEYWORD: 'SEPARATOR'
 *
 * From line: SET 	SHOW 	SMALLINT
 * KEYWORD: 'SET'
 * KEYWORD: 'SHOW'
 * KEYWORD: 'SMALLINT'
 *
 * From line: SONAME 	SPATIAL 	SPECIFIC
 * KEYWORD: 'SONAME'
 * KEYWORD: 'SPATIAL'
 * KEYWORD: 'SPECIFIC'
 *
 * From line: SQL 	SQLEXCEPTION 	SQLSTATE
 * KEYWORD: 'SQL'
 * KEYWORD: 'SQLEXCEPTION'
 * KEYWORD: 'SQLSTATE'
 *
 * From line: SQLWARNING 	SQL_BIG_RESULT 	SQL_CALC_FOUND_ROWS
 * KEYWORD: 'SQLWARNING'
 * KEYWORD: 'SQL_BIG_RESULT'
 * KEYWORD: 'SQL_CALC_FOUND_ROWS'
 *
 * From line: SQL_SMALL_RESULT 	SSL 	STARTING
 * KEYWORD: 'SQL_SMALL_RESULT'
 * KEYWORD: 'SSL'
 * KEYWORD: 'STARTING'
 *
 * From line: STRAIGHT_JOIN 	TABLE 	TABLES
 * KEYWORD: 'STRAIGHT_JOIN'
 * KEYWORD: 'TABLE'
 * KEYWORD: 'TABLES'
 *
 * From line: TERMINATED 	THEN 	TINYBLOB
 * KEYWORD: 'TERMINATED'
 * KEYWORD: 'THEN'
 * KEYWORD: 'TINYBLOB'
 *
 * From line: TINYINT 	TINYTEXT 	TO
 * KEYWORD: 'TINYINT'
 * KEYWORD: 'TINYTEXT'
 * KEYWORD: 'TO'
 *
 * From line: TRAILING 	TRIGGER 	TRUE
 * KEYWORD: 'TRAILING'
 * KEYWORD: 'TRIGGER'
 * KEYWORD: 'TRUE'
 *
 * From line: UNDO 	UNION 	UNIQUE
 * KEYWORD: 'UNDO'
 * KEYWORD: 'UNION'
 * KEYWORD: 'UNIQUE'
 *
 * From line: UNLOCK 	UNSIGNED 	UPDATE
 * KEYWORD: 'UNLOCK'
 * KEYWORD: 'UNSIGNED'
 * KEYWORD: 'UPDATE'
 *
 * From line: UPGRADE 	USAGE 	USE
 * KEYWORD: 'UPGRADE'
 * KEYWORD: 'USAGE'
 * KEYWORD: 'USE'
 *
 * From line: USING 	UTC_DATE 	UTC_TIME
 * KEYWORD: 'USING'
 * KEYWORD: 'UTC_DATE'
 * KEYWORD: 'UTC_TIME'
 *
 * From line: UTC_TIMESTAMP 	VALUES 	VARBINARY
 * KEYWORD: 'UTC_TIMESTAMP'
 * KEYWORD: 'VALUES'
 * KEYWORD: 'VARBINARY'
 *
 * From line: VARCHAR 	VARCHARACTER 	VARYING
 * KEYWORD: 'VARCHAR'
 * KEYWORD: 'VARCHARACTER'
 * KEYWORD: 'VARYING'
 *
 * From line: WHEN 	WHERE 	WHILE
 * KEYWORD: 'WHEN'
 * KEYWORD: 'WHERE'
 * KEYWORD: 'WHILE'
 *
 * From line: WITH 	WRITE 	XOR
 * KEYWORD: 'WITH'
 * KEYWORD: 'WRITE'
 * KEYWORD: 'XOR'
 *
 * From line: YEAR_MONTH 	ZEROFILL
 * KEYWORD: 'YEAR_MONTH'
 * KEYWORD: 'ZEROFILL'
 */
/* Hash score: 514 */
static int V50keywordCode(const char *z, int n){
  /* zText[] encodes 1761 bytes of keywords in 1145 bytes */
  /*   DAY_MICROSECOND_MICROSECONDITIONATURALTERMINATEDAY_MINUTE          */
  /*   _MICROSECONDAY_SECONDAY_HOUR_MICROSECONDATABASESCAPEDECIMAL        */
  /*   ABELSEIFOREIGNOREGEXPLAINOUTERELEASENSITIVEACHANGEXITERATE         */
  /*   NCLOSEDECLAREALIMITINYINTERVALUESMALLINTEGEREFERENCESCHEMAS        */
  /*   EPARATORDERENAMEDIUMINTOPTIMIZEROFILLINESONAMEDIUMBLOBEFORE        */
  /*   QUIREVOKEYSPATIALOADDELETEXISTSQLSTATEHOUR_MINUTE_SECOND           */
  /*   ESCRIBETWEENOTABLESTRAIGHT_JOINDEXORLIKEHOUR_SECONDOUBLEADING      */
  /*   ROUPDATEBIGINT1CASELECTHENO_WRITE_TO_BINLOGOTOUTFILEAVE            */
  /*   CONSTRAINT2MIDDLEINT3VARCHARACTEREADSETINYBLOBOTHAVINGRANT         */
  /*   INYTEXTRAILINGANALYZECASCADEFAULTRIGGEREPEATRUECOLLATECREATE       */
  /*   CROSSLOOPTIONALLYEAR_MONTHIGH_PRIORITYCURRENT_DATECURSOREPLACE     */
  /*   DROPRIVILEGESHOWHENULLEFTDUALOCALTIMESTAMPROCEDURESTRICTFALSE      */
  /*   FETCHECKILLONGBLOBYINFILEMATCHMODIFIESPECIFICALLONGTEXTUNDO        */
  /*   UPGRADELAYEDETERMINISTICOLUMNSQLEXCEPTIONUMERICONNECTION           */
  /*   UTC_DATEWHERETURNWHILEWITHANDISTINCTROWCONTINUECONVERT             */
  /*   CURRENT_TIMESTAMPRECISIONCURRENT_USERIGHTDIVARBINARYFIELDS         */
  /*   QLWARNINGFORCEFROMEDIUMTEXTFULLTEXTINNERINSENSITIVEINSERT          */
  /*   LOW_PRIORITYPRIMARYPURGESQL_BIG_RESULTSQL_CALC_FOUND_ROWS          */
  /*   QL_SMALL_RESULTSTARTINGUNIONUNIQUEUNLOCKUNSIGNEDUSAGEUSING         */
  /*   UTC_TIMESTAMPVARYINGFLOAT4FLOAT8INT4INT8                           */
  static const char V50zText[1144] = {
    'D','A','Y','_','M','I','C','R','O','S','E','C','O','N','D','_','M','I',
    'C','R','O','S','E','C','O','N','D','I','T','I','O','N','A','T','U','R',
    'A','L','T','E','R','M','I','N','A','T','E','D','A','Y','_','M','I','N',
    'U','T','E','_','M','I','C','R','O','S','E','C','O','N','D','A','Y','_',
    'S','E','C','O','N','D','A','Y','_','H','O','U','R','_','M','I','C','R',
    'O','S','E','C','O','N','D','A','T','A','B','A','S','E','S','C','A','P',
    'E','D','E','C','I','M','A','L','A','B','E','L','S','E','I','F','O','R',
    'E','I','G','N','O','R','E','G','E','X','P','L','A','I','N','O','U','T',
    'E','R','E','L','E','A','S','E','N','S','I','T','I','V','E','A','C','H',
    'A','N','G','E','X','I','T','E','R','A','T','E','N','C','L','O','S','E',
    'D','E','C','L','A','R','E','A','L','I','M','I','T','I','N','Y','I','N',
    'T','E','R','V','A','L','U','E','S','M','A','L','L','I','N','T','E','G',
    'E','R','E','F','E','R','E','N','C','E','S','C','H','E','M','A','S','E',
    'P','A','R','A','T','O','R','D','E','R','E','N','A','M','E','D','I','U',
    'M','I','N','T','O','P','T','I','M','I','Z','E','R','O','F','I','L','L',
    'I','N','E','S','O','N','A','M','E','D','I','U','M','B','L','O','B','E',
    'F','O','R','E','Q','U','I','R','E','V','O','K','E','Y','S','P','A','T',
    'I','A','L','O','A','D','D','E','L','E','T','E','X','I','S','T','S','Q',
    'L','S','T','A','T','E','H','O','U','R','_','M','I','N','U','T','E','_',
    'S','E','C','O','N','D','E','S','C','R','I','B','E','T','W','E','E','N',
    'O','T','A','B','L','E','S','T','R','A','I','G','H','T','_','J','O','I',
    'N','D','E','X','O','R','L','I','K','E','H','O','U','R','_','S','E','C',
    'O','N','D','O','U','B','L','E','A','D','I','N','G','R','O','U','P','D',
    'A','T','E','B','I','G','I','N','T','1','C','A','S','E','L','E','C','T',
    'H','E','N','O','_','W','R','I','T','E','_','T','O','_','B','I','N','L',
    'O','G','O','T','O','U','T','F','I','L','E','A','V','E','C','O','N','S',
    'T','R','A','I','N','T','2','M','I','D','D','L','E','I','N','T','3','V',
    'A','R','C','H','A','R','A','C','T','E','R','E','A','D','S','E','T','I',
    'N','Y','B','L','O','B','O','T','H','A','V','I','N','G','R','A','N','T',
    'I','N','Y','T','E','X','T','R','A','I','L','I','N','G','A','N','A','L',
    'Y','Z','E','C','A','S','C','A','D','E','F','A','U','L','T','R','I','G',
    'G','E','R','E','P','E','A','T','R','U','E','C','O','L','L','A','T','E',
    'C','R','E','A','T','E','C','R','O','S','S','L','O','O','P','T','I','O',
    'N','A','L','L','Y','E','A','R','_','M','O','N','T','H','I','G','H','_',
    'P','R','I','O','R','I','T','Y','C','U','R','R','E','N','T','_','D','A',
    'T','E','C','U','R','S','O','R','E','P','L','A','C','E','D','R','O','P',
    'R','I','V','I','L','E','G','E','S','H','O','W','H','E','N','U','L','L',
    'E','F','T','D','U','A','L','O','C','A','L','T','I','M','E','S','T','A',
    'M','P','R','O','C','E','D','U','R','E','S','T','R','I','C','T','F','A',
    'L','S','E','F','E','T','C','H','E','C','K','I','L','L','O','N','G','B',
    'L','O','B','Y','I','N','F','I','L','E','M','A','T','C','H','M','O','D',
    'I','F','I','E','S','P','E','C','I','F','I','C','A','L','L','O','N','G',
    'T','E','X','T','U','N','D','O','U','P','G','R','A','D','E','L','A','Y',
    'E','D','E','T','E','R','M','I','N','I','S','T','I','C','O','L','U','M',
    'N','S','Q','L','E','X','C','E','P','T','I','O','N','U','M','E','R','I',
    'C','O','N','N','E','C','T','I','O','N','U','T','C','_','D','A','T','E',
    'W','H','E','R','E','T','U','R','N','W','H','I','L','E','W','I','T','H',
    'A','N','D','I','S','T','I','N','C','T','R','O','W','C','O','N','T','I',
    'N','U','E','C','O','N','V','E','R','T','C','U','R','R','E','N','T','_',
    'T','I','M','E','S','T','A','M','P','R','E','C','I','S','I','O','N','C',
    'U','R','R','E','N','T','_','U','S','E','R','I','G','H','T','D','I','V',
    'A','R','B','I','N','A','R','Y','F','I','E','L','D','S','Q','L','W','A',
    'R','N','I','N','G','F','O','R','C','E','F','R','O','M','E','D','I','U',
    'M','T','E','X','T','F','U','L','L','T','E','X','T','I','N','N','E','R',
    'I','N','S','E','N','S','I','T','I','V','E','I','N','S','E','R','T','L',
    'O','W','_','P','R','I','O','R','I','T','Y','P','R','I','M','A','R','Y',
    'P','U','R','G','E','S','Q','L','_','B','I','G','_','R','E','S','U','L',
    'T','S','Q','L','_','C','A','L','C','_','F','O','U','N','D','_','R','O',
    'W','S','Q','L','_','S','M','A','L','L','_','R','E','S','U','L','T','S',
    'T','A','R','T','I','N','G','U','N','I','O','N','U','N','I','Q','U','E',
    'U','N','L','O','C','K','U','N','S','I','G','N','E','D','U','S','A','G',
    'E','U','S','I','N','G','U','T','C','_','T','I','M','E','S','T','A','M',
    'P','V','A','R','Y','I','N','G','F','L','O','A','T','4','F','L','O','A',
    'T','8','I','N','T','4','I','N','T','8',
  };
  static const unsigned int V50aHash[189] = {
     72, 0, 19, 170, 224, 0, 211, 181, 116, 134, 194, 152, 86,
     0, 122, 199, 186, 11, 4, 145, 0, 171, 109, 0, 97, 188,
     204, 0, 24, 101, 197, 137, 132, 108, 28, 179, 155, 198, 98,
     219, 193, 148, 74, 144, 46, 222, 68, 153, 160, 146, 48, 217,
     212, 2, 220, 3, 216, 178, 200, 189, 0, 76, 125, 166, 214,
     218, 169, 0, 0, 223, 0, 0, 0, 0, 0, 227, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 89, 0, 0, 225, 0, 0, 105, 0, 0, 226, 210, 164,
     106, 187, 177, 0, 208, 83, 37, 221, 172, 209, 33, 156, 0,
     75, 0, 190, 142, 215, 161, 70, 173, 0, 64, 0, 100, 213,
     149, 165, 207, 95, 18, 58, 0, 0, 126, 151, 0, 90, 30,
     0, 57, 183, 205, 141, 121, 185, 34, 0, 196, 1, 168, 80,
     10, 71, 36, 84, 192, 167, 0,
  };
  static const unsigned int V50aNext[227] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,  38,   0,  26,   0,  49,   0,  44,
       0,   0,   0,  42,   0,  29,  27,  50,   0,  17,   0,  56,   0,
       0,   0,   0,   0,   0,  13,   0,   0,   0,  63,   0,  39,   0,
       0,   8,   0,  52,  41,  66,   0,  79,  25,   0,   0,   0,   0,
      23,   0,   7,  93,  54,  21,   0,   0,   0,   0,   5,   0,  60,
       0,  85,   0,   0,  16,  59,  99,  47,   0,   0, 112,  73,  69,
      51,   0,  53,   0,  67,   0,  45, 102, 120,  31,   0,  77,   0,
       0,   0,   0,   0,  40,   0,   0, 110,  61, 115,   0, 124,   0,
     135, 128,   0,  91,  78,  12,   0, 127,   0,  96,  92, 104,  22,
     107,  55,  82, 118, 111,  32, 130, 123,   0,   0,   0, 114,   0,
      14,  88,   9, 147, 162,   0,  94, 117, 176, 138,  65, 139, 113,
     180,   6, 136,  20,   0, 133, 143,   0,  62,  35, 158,   0, 175,
     150,   0,  81, 174,   0,   0,   0, 182, 184, 119, 202, 154,   0,
     129, 201,   0, 191, 159,  87, 140,  43, 131, 203, 163, 195, 157,
     206,   0,   0, 103,   0,   0,
  };
  static const unsigned char V50aLen[227] = {
      15,  18,   2,   9,   7,   5,  10,  10,  18,  10,   8,  16,   8,
       9,   7,   7,   5,   6,   4,   3,   7,   6,   6,   7,   5,   5,
       7,   2,  10,   4,   6,   4,   7,   8,   3,   7,   4,   5,   7,
       8,   6,   8,   7,  10,   7,   6,   9,   5,   6,   9,   4,   8,
       8,   5,   6,  10,   4,   6,   7,   6,   3,   4,   7,   4,   3,
       6,   6,   8,  11,  13,   8,   4,   7,   3,   6,   5,  13,   4,
       5,   3,   5,   4,  11,   6,   7,   5,   6,   6,   4,   4,   6,
       4,  18,   5,   2,   2,   4,   3,   7,   5,  10,   3,   4,   9,
       4,  12,   7,   4,   9,   4,   5,   3,   8,   4,   6,   5,   8,
       8,   7,   7,   3,   7,   7,   6,   4,   7,   6,   5,   3,   4,
       6,  10,  10,  13,   2,  12,   6,   7,   4,  10,   4,   4,   4,
       4,   4,  14,   9,   9,   8,   5,   5,   5,   4,   8,   2,   6,
       5,   8,   3,   8,   2,   4,   8,   4,   4,   7,   7,  13,   2,
       6,   7,  12,   7,  10,   8,   5,   6,   5,   4,   3,   8,  11,
       8,   7,  12,  17,   9,  12,   3,   5,   3,   9,   6,   6,  10,
       5,   4,  10,   8,   5,  11,   9,   6,  12,   7,   5,  14,  19,
       3,  16,   3,   8,   5,   6,   6,   4,   8,   5,   5,   8,  13,
       7,   6,   5,   6,   4,   4,
  };
  static const unsigned short int V50aOffset[227] = {
       0,   9,  12,  23,  31,  36,  38,  47,  51,  68,  77,  81,  96,
      96, 103, 109, 115, 118, 118, 123, 123, 127, 131, 134, 139, 141,
     145, 149, 149, 158, 160, 165, 167, 173, 180, 180, 185, 188, 192,
     196, 201, 206, 211, 217, 226, 226, 232, 239, 243, 247, 253, 256,
     262, 269, 273, 277, 283, 286, 290, 295, 299, 299, 302, 308, 310,
     312, 317, 322, 330, 335, 347, 347, 353, 359, 361, 361, 366, 375,
     377, 381, 383, 384, 388, 398, 402, 408, 411, 417, 420, 424, 426,
     431, 434, 437, 443, 447, 451, 454, 454, 459, 464, 471, 471, 475,
     481, 485, 485, 488, 488, 496, 496, 500, 502, 509, 512, 517, 521,
     528, 536, 543, 544, 548, 554, 560, 565, 569, 576, 582, 585, 587,
     589, 589, 598, 607, 615, 620, 632, 637, 644, 647, 656, 659, 662,
     665, 669, 672, 672, 685, 692, 700, 705, 708, 712, 715, 722, 724,
     730, 735, 735, 742, 746, 749, 752, 752, 760, 764, 769, 775, 783,
     787, 787, 793, 804, 810, 820, 828, 831, 837, 842, 846, 848, 848,
     859, 867, 874, 874, 890, 899, 907, 910, 915, 917, 920, 926, 931,
     941, 946, 949, 959, 967, 972, 974, 983, 989, 1001, 1008, 1013, 1027,
     1027, 1045, 1051, 1061, 1069, 1074, 1080, 1082, 1086, 1094, 1099, 1104, 1104,
     1117, 1124, 1130, 1130, 1136, 1140,
  };
  int h, i;
  if( n<2 ) return 0;
  h = ((charMap(z[0])*4) ^
      (charMap(z[n-1])*3) ^
      n) % 189;
  for(i=((int)V50aHash[h])-1; i>=0; i=((int)V50aNext[i])-1){
    if( V50aLen[i]==n && casecmp(&V50zText[V50aOffset[i]],z,n)==0 ){
      return 1;
    }
  }
  return 0;
}

static gboolean
V50is_keyword (const char *z)
{
	return V50keywordCode(z, strlen (z));
}

/* file contains automatically generated code, DO NOT MODIFY *
 *
 * The code in this file implements a function that determines whether
 * or not a given identifier is really an SQL keyword.  The same thing
 * might be implemented more directly using a hand-written hash table.
 * But by using this automatically generated code, the size of the code
 * is substantially reduced.  This is important for embedded applications
 * on platforms with limited memory.
 *
 * This code has been copied from SQLite's mkkeywordhash.c file and modified.
 * to read the SQL keywords from a file instead of static ones
 */

/* Parsed keywords
 *
 * From line: ACCESSIBLE 	ADD 	ALL
 * KEYWORD: 'ACCESSIBLE'
 * KEYWORD: 'ADD'
 * KEYWORD: 'ALL'
 *
 * From line: ALTER 	ANALYZE 	AND
 * KEYWORD: 'ALTER'
 * KEYWORD: 'ANALYZE'
 * KEYWORD: 'AND'
 *
 * From line: AS 	ASC 	ASENSITIVE
 * KEYWORD: 'AS'
 * KEYWORD: 'ASC'
 * KEYWORD: 'ASENSITIVE'
 *
 * From line: BEFORE 	BETWEEN 	BIGINT
 * KEYWORD: 'BEFORE'
 * KEYWORD: 'BETWEEN'
 * KEYWORD: 'BIGINT'
 *
 * From line: BINARY 	BLOB 	BOTH
 * KEYWORD: 'BINARY'
 * KEYWORD: 'BLOB'
 * KEYWORD: 'BOTH'
 *
 * From line: BY 	CALL 	CASCADE
 * KEYWORD: 'BY'
 * KEYWORD: 'CALL'
 * KEYWORD: 'CASCADE'
 *
 * From line: CASE 	CHANGE 	CHAR
 * KEYWORD: 'CASE'
 * KEYWORD: 'CHANGE'
 * KEYWORD: 'CHAR'
 *
 * From line: CHARACTER 	CHECK 	COLLATE
 * KEYWORD: 'CHARACTER'
 * KEYWORD: 'CHECK'
 * KEYWORD: 'COLLATE'
 *
 * From line: COLUMN 	CONDITION 	CONNECTION
 * KEYWORD: 'COLUMN'
 * KEYWORD: 'CONDITION'
 * KEYWORD: 'CONNECTION'
 *
 * From line: CONSTRAINT 	CONTINUE 	CONVERT
 * KEYWORD: 'CONSTRAINT'
 * KEYWORD: 'CONTINUE'
 * KEYWORD: 'CONVERT'
 *
 * From line: CREATE 	CROSS 	CURRENT_DATE
 * KEYWORD: 'CREATE'
 * KEYWORD: 'CROSS'
 * KEYWORD: 'CURRENT_DATE'
 *
 * From line: CURRENT_TIME 	CURRENT_TIMESTAMP 	CURRENT_USER
 * KEYWORD: 'CURRENT_TIME'
 * KEYWORD: 'CURRENT_TIMESTAMP'
 * KEYWORD: 'CURRENT_USER'
 *
 * From line: CURSOR 	DATABASE 	DATABASES
 * KEYWORD: 'CURSOR'
 * KEYWORD: 'DATABASE'
 * KEYWORD: 'DATABASES'
 *
 * From line: DAY_HOUR 	DAY_MICROSECOND 	DAY_MINUTE
 * KEYWORD: 'DAY_HOUR'
 * KEYWORD: 'DAY_MICROSECOND'
 * KEYWORD: 'DAY_MINUTE'
 *
 * From line: DAY_SECOND 	DEC 	DECIMAL
 * KEYWORD: 'DAY_SECOND'
 * KEYWORD: 'DEC'
 * KEYWORD: 'DECIMAL'
 *
 * From line: DECLARE 	DEFAULT 	DELAYED
 * KEYWORD: 'DECLARE'
 * KEYWORD: 'DEFAULT'
 * KEYWORD: 'DELAYED'
 *
 * From line: DELETE 	DESC 	DESCRIBE
 * KEYWORD: 'DELETE'
 * KEYWORD: 'DESC'
 * KEYWORD: 'DESCRIBE'
 *
 * From line: DETERMINISTIC 	DISTINCT 	DISTINCTROW
 * KEYWORD: 'DETERMINISTIC'
 * KEYWORD: 'DISTINCT'
 * KEYWORD: 'DISTINCTROW'
 *
 * From line: DIV 	DOUBLE 	DROP
 * KEYWORD: 'DIV'
 * KEYWORD: 'DOUBLE'
 * KEYWORD: 'DROP'
 *
 * From line: DUAL 	EACH 	ELSE
 * KEYWORD: 'DUAL'
 * KEYWORD: 'EACH'
 * KEYWORD: 'ELSE'
 *
 * From line: ELSEIF 	ENCLOSED 	ESCAPED
 * KEYWORD: 'ELSEIF'
 * KEYWORD: 'ENCLOSED'
 * KEYWORD: 'ESCAPED'
 *
 * From line: EXISTS 	EXIT 	EXPLAIN
 * KEYWORD: 'EXISTS'
 * KEYWORD: 'EXIT'
 * KEYWORD: 'EXPLAIN'
 *
 * From line: FALSE 	FETCH 	FLOAT
 * KEYWORD: 'FALSE'
 * KEYWORD: 'FETCH'
 * KEYWORD: 'FLOAT'
 *
 * From line: FLOAT4 	FLOAT8 	FOR
 * KEYWORD: 'FLOAT4'
 * KEYWORD: 'FLOAT8'
 * KEYWORD: 'FOR'
 *
 * From line: FORCE 	FOREIGN 	FROM
 * KEYWORD: 'FORCE'
 * KEYWORD: 'FOREIGN'
 * KEYWORD: 'FROM'
 *
 * From line: FULLTEXT 	GOTO 	GRANT
 * KEYWORD: 'FULLTEXT'
 * KEYWORD: 'GOTO'
 * KEYWORD: 'GRANT'
 *
 * From line: GROUP 	HAVING 	HIGH_PRIORITY
 * KEYWORD: 'GROUP'
 * KEYWORD: 'HAVING'
 * KEYWORD: 'HIGH_PRIORITY'
 *
 * From line: HOUR_MICROSECOND 	HOUR_MINUTE 	HOUR_SECOND
 * KEYWORD: 'HOUR_MICROSECOND'
 * KEYWORD: 'HOUR_MINUTE'
 * KEYWORD: 'HOUR_SECOND'
 *
 * From line: IF 	IGNORE 	IN
 * KEYWORD: 'IF'
 * KEYWORD: 'IGNORE'
 * KEYWORD: 'IN'
 *
 * From line: INDEX 	INFILE 	INNER
 * KEYWORD: 'INDEX'
 * KEYWORD: 'INFILE'
 * KEYWORD: 'INNER'
 *
 * From line: INOUT 	INSENSITIVE 	INSERT
 * KEYWORD: 'INOUT'
 * KEYWORD: 'INSENSITIVE'
 * KEYWORD: 'INSERT'
 *
 * From line: INT 	INT1 	INT2
 * KEYWORD: 'INT'
 * KEYWORD: 'INT1'
 * KEYWORD: 'INT2'
 *
 * From line: INT3 	INT4 	INT8
 * KEYWORD: 'INT3'
 * KEYWORD: 'INT4'
 * KEYWORD: 'INT8'
 *
 * From line: INTEGER 	INTERVAL 	INTO
 * KEYWORD: 'INTEGER'
 * KEYWORD: 'INTERVAL'
 * KEYWORD: 'INTO'
 *
 * From line: IS 	ITERATE 	JOIN
 * KEYWORD: 'IS'
 * KEYWORD: 'ITERATE'
 * KEYWORD: 'JOIN'
 *
 * From line: KEY 	KEYS 	KILL
 * KEYWORD: 'KEY'
 * KEYWORD: 'KEYS'
 * KEYWORD: 'KILL'
 *
 * From line: LABEL 	LEADING 	LEAVE
 * KEYWORD: 'LABEL'
 * KEYWORD: 'LEADING'
 * KEYWORD: 'LEAVE'
 *
 * From line: LEFT 	LIKE 	LIMIT
 * KEYWORD: 'LEFT'
 * KEYWORD: 'LIKE'
 * KEYWORD: 'LIMIT'
 *
 * From line: LINEAR 	LINES 	LOAD
 * KEYWORD: 'LINEAR'
 * KEYWORD: 'LINES'
 * KEYWORD: 'LOAD'
 *
 * From line: LOCALTIME 	LOCALTIMESTAMP 	LOCK
 * KEYWORD: 'LOCALTIME'
 * KEYWORD: 'LOCALTIMESTAMP'
 * KEYWORD: 'LOCK'
 *
 * From line: LONG 	LONGBLOB 	LONGTEXT
 * KEYWORD: 'LONG'
 * KEYWORD: 'LONGBLOB'
 * KEYWORD: 'LONGTEXT'
 *
 * From line: LOOP 	LOW_PRIORITY 	MASTER_SSL_VERIFY_SERVER_CERT
 * KEYWORD: 'LOOP'
 * KEYWORD: 'LOW_PRIORITY'
 * KEYWORD: 'MASTER_SSL_VERIFY_SERVER_CERT'
 *
 * From line: MATCH 	MEDIUMBLOB 	MEDIUMINT
 * KEYWORD: 'MATCH'
 * KEYWORD: 'MEDIUMBLOB'
 * KEYWORD: 'MEDIUMINT'
 *
 * From line: MEDIUMTEXT 	MIDDLEINT 	MINUTE_MICROSECOND
 * KEYWORD: 'MEDIUMTEXT'
 * KEYWORD: 'MIDDLEINT'
 * KEYWORD: 'MINUTE_MICROSECOND'
 *
 * From line: MINUTE_SECOND 	MOD 	MODIFIES
 * KEYWORD: 'MINUTE_SECOND'
 * KEYWORD: 'MOD'
 * KEYWORD: 'MODIFIES'
 *
 * From line: NATURAL 	NOT 	NO_WRITE_TO_BINLOG
 * KEYWORD: 'NATURAL'
 * KEYWORD: 'NOT'
 * KEYWORD: 'NO_WRITE_TO_BINLOG'
 *
 * From line: NULL 	NUMERIC 	ON
 * KEYWORD: 'NULL'
 * KEYWORD: 'NUMERIC'
 * KEYWORD: 'ON'
 *
 * From line: OPTIMIZE 	OPTION 	OPTIONALLY
 * KEYWORD: 'OPTIMIZE'
 * KEYWORD: 'OPTION'
 * KEYWORD: 'OPTIONALLY'
 *
 * From line: OR 	ORDER 	OUT
 * KEYWORD: 'OR'
 * KEYWORD: 'ORDER'
 * KEYWORD: 'OUT'
 *
 * From line: OUTER 	OUTFILE 	PRECISION
 * KEYWORD: 'OUTER'
 * KEYWORD: 'OUTFILE'
 * KEYWORD: 'PRECISION'
 *
 * From line: PRIMARY 	PROCEDURE 	PURGE
 * KEYWORD: 'PRIMARY'
 * KEYWORD: 'PROCEDURE'
 * KEYWORD: 'PURGE'
 *
 * From line: RANGE 	READ 	READS
 * KEYWORD: 'RANGE'
 * KEYWORD: 'READ'
 * KEYWORD: 'READS'
 *
 * From line: READ_ONLY 	READ_WRITE 	REAL
 * KEYWORD: 'READ_ONLY'
 * KEYWORD: 'READ_WRITE'
 * KEYWORD: 'REAL'
 *
 * From line: REFERENCES 	REGEXP 	RELEASE
 * KEYWORD: 'REFERENCES'
 * KEYWORD: 'REGEXP'
 * KEYWORD: 'RELEASE'
 *
 * From line: RENAME 	REPEAT 	REPLACE
 * KEYWORD: 'RENAME'
 * KEYWORD: 'REPEAT'
 * KEYWORD: 'REPLACE'
 *
 * From line: REQUIRE 	RESTRICT 	RETURN
 * KEYWORD: 'REQUIRE'
 * KEYWORD: 'RESTRICT'
 * KEYWORD: 'RETURN'
 *
 * From line: REVOKE 	RIGHT 	RLIKE
 * KEYWORD: 'REVOKE'
 * KEYWORD: 'RIGHT'
 * KEYWORD: 'RLIKE'
 *
 * From line: SCHEMA 	SCHEMAS 	SECOND_MICROSECOND
 * KEYWORD: 'SCHEMA'
 * KEYWORD: 'SCHEMAS'
 * KEYWORD: 'SECOND_MICROSECOND'
 *
 * From line: SELECT 	SENSITIVE 	SEPARATOR
 * KEYWORD: 'SELECT'
 * KEYWORD: 'SENSITIVE'
 * KEYWORD: 'SEPARATOR'
 *
 * From line: SET 	SHOW 	SMALLINT
 * KEYWORD: 'SET'
 * KEYWORD: 'SHOW'
 * KEYWORD: 'SMALLINT'
 *
 * From line: SPATIAL 	SPECIFIC 	SQL
 * KEYWORD: 'SPATIAL'
 * KEYWORD: 'SPECIFIC'
 * KEYWORD: 'SQL'
 *
 * From line: SQLEXCEPTION 	SQLSTATE 	SQLWARNING
 * KEYWORD: 'SQLEXCEPTION'
 * KEYWORD: 'SQLSTATE'
 * KEYWORD: 'SQLWARNING'
 *
 * From line: SQL_BIG_RESULT 	SQL_CALC_FOUND_ROWS 	SQL_SMALL_RESULT
 * KEYWORD: 'SQL_BIG_RESULT'
 * KEYWORD: 'SQL_CALC_FOUND_ROWS'
 * KEYWORD: 'SQL_SMALL_RESULT'
 *
 * From line: SSL 	STARTING 	STRAIGHT_JOIN
 * KEYWORD: 'SSL'
 * KEYWORD: 'STARTING'
 * KEYWORD: 'STRAIGHT_JOIN'
 *
 * From line: TABLE 	TERMINATED 	THEN
 * KEYWORD: 'TABLE'
 * KEYWORD: 'TERMINATED'
 * KEYWORD: 'THEN'
 *
 * From line: TINYBLOB 	TINYINT 	TINYTEXT
 * KEYWORD: 'TINYBLOB'
 * KEYWORD: 'TINYINT'
 * KEYWORD: 'TINYTEXT'
 *
 * From line: TO 	TRAILING 	TRIGGER
 * KEYWORD: 'TO'
 * KEYWORD: 'TRAILING'
 * KEYWORD: 'TRIGGER'
 *
 * From line: TRUE 	UNDO 	UNION
 * KEYWORD: 'TRUE'
 * KEYWORD: 'UNDO'
 * KEYWORD: 'UNION'
 *
 * From line: UNIQUE 	UNLOCK 	UNSIGNED
 * KEYWORD: 'UNIQUE'
 * KEYWORD: 'UNLOCK'
 * KEYWORD: 'UNSIGNED'
 *
 * From line: UPDATE 	UPGRADE 	USAGE
 * KEYWORD: 'UPDATE'
 * KEYWORD: 'UPGRADE'
 * KEYWORD: 'USAGE'
 *
 * From line: USE 	USING 	UTC_DATE
 * KEYWORD: 'USE'
 * KEYWORD: 'USING'
 * KEYWORD: 'UTC_DATE'
 *
 * From line: UTC_TIME 	UTC_TIMESTAMP 	VALUES
 * KEYWORD: 'UTC_TIME'
 * KEYWORD: 'UTC_TIMESTAMP'
 * KEYWORD: 'VALUES'
 *
 * From line: VARBINARY 	VARCHAR 	VARCHARACTER
 * KEYWORD: 'VARBINARY'
 * KEYWORD: 'VARCHAR'
 * KEYWORD: 'VARCHARACTER'
 *
 * From line: VARYING 	WHEN 	WHERE
 * KEYWORD: 'VARYING'
 * KEYWORD: 'WHEN'
 * KEYWORD: 'WHERE'
 *
 * From line: WHILE 	WITH 	WRITE
 * KEYWORD: 'WHILE'
 * KEYWORD: 'WITH'
 * KEYWORD: 'WRITE'
 */
/* Hash score: 535 */
static int V51keywordCode(const char *z, int n){
  /* zText[] encodes 1772 bytes of keywords in 1175 bytes */
  /*   DAY_MICROSECOND_MICROSECONDITIONATURALTERMINATEDAY_MINUTE          */
  /*   _MICROSECONDAY_SECONDAY_HOUR_MICROSECONDATABASESCAPEDECIMAL        */
  /*   ABELSEIFOREIGNOREAD_WRITERATEACHANGEXITINYINTERVALUESCHEMAS        */
  /*   TER_SSL_VERIFY_SERVER_CERTABLEADINGROUPDATEXPLAINOUTEREGEXP        */
  /*   ROCEDURELEASENSITIVENCLOSEDECLAREALIMITHENOTINYBLOBEFORE           */
  /*   FERENCESMALLINTEGERENAMEDIUMINTOUTFILEAVEXISTSEPARATORDER          */
  /*   EQUIREVOKEYSPATIALINESQLSTATEHOUR_MINUTE_SECONDELETE               */
  /*   HOUR_SECONDESCRIBETWEENO_WRITE_TO_BINLOGOTOPTIMIZEBIGINT1CASE      */
  /*   LECTINYTEXTRAILINGRANTRIGGERLIKECONSTRAINT2MIDDLEINT3              */
  /*   VARCHARACTERANGEACCESSIBLEFTRUEBOTHAVINGCASCADEFAULTCOLLATE        */
  /*   CREATECURRENT_DATECURSOREADSTRAIGHT_JOINDEXDOUBLEDROPTIONALLY      */
  /*   DUALOADDELAYEDETERMINISTICALLOOPRECISIONULLINEAREPEATFALSET        */
  /*   FETCHECKILLOCALTIMESTAMPURGEINFILEMATCHIGH_PRIORITYMODIFIESHOW     */
  /*   HENUMERICOLUMNUNDOUPGRADEUTC_DATEWHEREPLACEWHILEWITHANALYZEAND     */
  /*   ISTINCTROWCONNECTIONCONTINUECONVERTCROSSPECIFIC                    */
  /*   URRENT_TIMESTAMPRIMARYCURRENT_USERESTRICTDIVARYINGFORCEFROM        */
  /*   EDIUMBLOBYFULLTEXTINNERETURNINSENSITIVEINSERTLONGBLOBLONGTEXT      */
  /*   MEDIUMTEXTRIGHTSQLEXCEPTIONSQLWARNINGSQL_BIG_RESULT                */
  /*   SQL_CALC_FOUND_ROWSQL_SMALL_RESULTSTARTINGUNIONUNIQUEUNLOCK        */
  /*   UNSIGNEDUSAGEUSINGUTC_TIMESTAMPFLOAT4FLOAT8INT4INT8                */
  /*   LOW_PRIORITYREAD_ONLYVARBINARY                                     */
  static const char V51zText[1174] = {
    'D','A','Y','_','M','I','C','R','O','S','E','C','O','N','D','_','M','I',
    'C','R','O','S','E','C','O','N','D','I','T','I','O','N','A','T','U','R',
    'A','L','T','E','R','M','I','N','A','T','E','D','A','Y','_','M','I','N',
    'U','T','E','_','M','I','C','R','O','S','E','C','O','N','D','A','Y','_',
    'S','E','C','O','N','D','A','Y','_','H','O','U','R','_','M','I','C','R',
    'O','S','E','C','O','N','D','A','T','A','B','A','S','E','S','C','A','P',
    'E','D','E','C','I','M','A','L','A','B','E','L','S','E','I','F','O','R',
    'E','I','G','N','O','R','E','A','D','_','W','R','I','T','E','R','A','T',
    'E','A','C','H','A','N','G','E','X','I','T','I','N','Y','I','N','T','E',
    'R','V','A','L','U','E','S','C','H','E','M','A','S','T','E','R','_','S',
    'S','L','_','V','E','R','I','F','Y','_','S','E','R','V','E','R','_','C',
    'E','R','T','A','B','L','E','A','D','I','N','G','R','O','U','P','D','A',
    'T','E','X','P','L','A','I','N','O','U','T','E','R','E','G','E','X','P',
    'R','O','C','E','D','U','R','E','L','E','A','S','E','N','S','I','T','I',
    'V','E','N','C','L','O','S','E','D','E','C','L','A','R','E','A','L','I',
    'M','I','T','H','E','N','O','T','I','N','Y','B','L','O','B','E','F','O',
    'R','E','F','E','R','E','N','C','E','S','M','A','L','L','I','N','T','E',
    'G','E','R','E','N','A','M','E','D','I','U','M','I','N','T','O','U','T',
    'F','I','L','E','A','V','E','X','I','S','T','S','E','P','A','R','A','T',
    'O','R','D','E','R','E','Q','U','I','R','E','V','O','K','E','Y','S','P',
    'A','T','I','A','L','I','N','E','S','Q','L','S','T','A','T','E','H','O',
    'U','R','_','M','I','N','U','T','E','_','S','E','C','O','N','D','E','L',
    'E','T','E','H','O','U','R','_','S','E','C','O','N','D','E','S','C','R',
    'I','B','E','T','W','E','E','N','O','_','W','R','I','T','E','_','T','O',
    '_','B','I','N','L','O','G','O','T','O','P','T','I','M','I','Z','E','B',
    'I','G','I','N','T','1','C','A','S','E','L','E','C','T','I','N','Y','T',
    'E','X','T','R','A','I','L','I','N','G','R','A','N','T','R','I','G','G',
    'E','R','L','I','K','E','C','O','N','S','T','R','A','I','N','T','2','M',
    'I','D','D','L','E','I','N','T','3','V','A','R','C','H','A','R','A','C',
    'T','E','R','A','N','G','E','A','C','C','E','S','S','I','B','L','E','F',
    'T','R','U','E','B','O','T','H','A','V','I','N','G','C','A','S','C','A',
    'D','E','F','A','U','L','T','C','O','L','L','A','T','E','C','R','E','A',
    'T','E','C','U','R','R','E','N','T','_','D','A','T','E','C','U','R','S',
    'O','R','E','A','D','S','T','R','A','I','G','H','T','_','J','O','I','N',
    'D','E','X','D','O','U','B','L','E','D','R','O','P','T','I','O','N','A',
    'L','L','Y','D','U','A','L','O','A','D','D','E','L','A','Y','E','D','E',
    'T','E','R','M','I','N','I','S','T','I','C','A','L','L','O','O','P','R',
    'E','C','I','S','I','O','N','U','L','L','I','N','E','A','R','E','P','E',
    'A','T','F','A','L','S','E','T','F','E','T','C','H','E','C','K','I','L',
    'L','O','C','A','L','T','I','M','E','S','T','A','M','P','U','R','G','E',
    'I','N','F','I','L','E','M','A','T','C','H','I','G','H','_','P','R','I',
    'O','R','I','T','Y','M','O','D','I','F','I','E','S','H','O','W','H','E',
    'N','U','M','E','R','I','C','O','L','U','M','N','U','N','D','O','U','P',
    'G','R','A','D','E','U','T','C','_','D','A','T','E','W','H','E','R','E',
    'P','L','A','C','E','W','H','I','L','E','W','I','T','H','A','N','A','L',
    'Y','Z','E','A','N','D','I','S','T','I','N','C','T','R','O','W','C','O',
    'N','N','E','C','T','I','O','N','C','O','N','T','I','N','U','E','C','O',
    'N','V','E','R','T','C','R','O','S','S','P','E','C','I','F','I','C','U',
    'R','R','E','N','T','_','T','I','M','E','S','T','A','M','P','R','I','M',
    'A','R','Y','C','U','R','R','E','N','T','_','U','S','E','R','E','S','T',
    'R','I','C','T','D','I','V','A','R','Y','I','N','G','F','O','R','C','E',
    'F','R','O','M','E','D','I','U','M','B','L','O','B','Y','F','U','L','L',
    'T','E','X','T','I','N','N','E','R','E','T','U','R','N','I','N','S','E',
    'N','S','I','T','I','V','E','I','N','S','E','R','T','L','O','N','G','B',
    'L','O','B','L','O','N','G','T','E','X','T','M','E','D','I','U','M','T',
    'E','X','T','R','I','G','H','T','S','Q','L','E','X','C','E','P','T','I',
    'O','N','S','Q','L','W','A','R','N','I','N','G','S','Q','L','_','B','I',
    'G','_','R','E','S','U','L','T','S','Q','L','_','C','A','L','C','_','F',
    'O','U','N','D','_','R','O','W','S','Q','L','_','S','M','A','L','L','_',
    'R','E','S','U','L','T','S','T','A','R','T','I','N','G','U','N','I','O',
    'N','U','N','I','Q','U','E','U','N','L','O','C','K','U','N','S','I','G',
    'N','E','D','U','S','A','G','E','U','S','I','N','G','U','T','C','_','T',
    'I','M','E','S','T','A','M','P','F','L','O','A','T','4','F','L','O','A',
    'T','8','I','N','T','4','I','N','T','8','L','O','W','_','P','R','I','O',
    'R','I','T','Y','R','E','A','D','_','O','N','L','Y','V','A','R','B','I',
    'N','A','R','Y',
  };
  static const unsigned int V51aHash[189] = {
     81, 0, 19, 159, 218, 0, 206, 169, 96, 152, 0, 145, 125,
     0, 117, 189, 176, 11, 4, 174, 0, 90, 107, 0, 88, 179,
     222, 0, 42, 100, 185, 121, 129, 108, 35, 166, 188, 198, 64,
     214, 225, 124, 55, 153, 53, 193, 76, 146, 175, 148, 69, 212,
     207, 2, 215, 3, 211, 165, 190, 180, 0, 38, 112, 161, 209,
     213, 135, 0, 0, 217, 0, 0, 0, 0, 0, 221, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 91, 0, 0, 219, 0, 0, 104, 0, 0, 220, 205, 197,
     105, 138, 191, 0, 204, 80, 52, 216, 200, 203, 25, 150, 0,
     74, 0, 199, 157, 210, 122, 78, 158, 0, 186, 0, 66, 208,
     181, 160, 202, 86, 18, 110, 0, 0, 118, 144, 0, 92, 26,
     0, 223, 172, 178, 156, 116, 177, 49, 0, 184, 1, 134, 8,
     10, 82, 50, 126, 224, 133, 0,
  };
  static const unsigned int V51aNext[225] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,  15,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,  29,   0,   0,   0,
       0,   0,   0,  41,   0,   0,   0,  24,   0,   0,   0,   0,   0,
      33,  45,   0,   0,  48,   0,   0,  34,   0,  61,  23,   0,  37,
       0,   0,   0,  44,  47,  62,  17,   0,   0,   0,   0,   0,   0,
       0,  31,   0,  14,   0,   0,   7,  84,  75,  20,  58,   0,   0,
       0,   0,  77,  63,  83,   0,   0,  89,   0,   5,   0,  71,   0,
      39,   0,  16,   0,  98,  57,  30, 101,   0,  68,   0,   0,  67,
     115,  27,   0,   0,  65,  36,  46,  40,  79,  73,   0,   0,   0,
      59,   0,   0, 113,   0,  28,   0,   0,   0,  70,  32,   0, 114,
     119,   0,  87,  93,   0,   0,  22, 106,   0, 111,  99,   0,   0,
     141, 147,  13,   0,   0,   0,  85, 140, 163, 164,   0, 132, 127,
      56, 136, 168,   6, 130,  95,  21, 120, 167,   0, 139,  12,  72,
     149, 142,   0, 131,   0, 103, 171,   0,  94,   0, 183, 170,  54,
     137,  97, 109,   0,   9, 162, 195, 123,   0, 192,   0, 182, 154,
      43, 143,  60, 128, 194, 196, 201, 151,   0,   0, 102,   0,   0,
     173, 187,  51, 155,
  };
  static const unsigned char V51aLen[225] = {
      15,  18,   2,   9,   7,   5,  10,  10,  18,  10,   8,  16,   9,
       8,   7,   7,   5,   6,   4,   7,   3,   6,  10,   4,   7,   4,
       6,   4,   7,   8,   6,   7,   6,  29,   2,   3,   2,   5,   7,
       5,   6,   7,   5,   5,   6,   9,   7,  10,   8,   7,   3,   4,
       5,   4,   3,   8,   6,  10,   8,   7,   6,   9,   4,   3,   7,
       5,   6,   9,   5,   7,   6,   4,   3,   7,   5,   8,  11,  13,
       6,  11,   4,   8,   7,  18,   5,   2,   2,   4,   8,   6,   4,
       4,   6,   8,   8,   5,   7,   5,   4,  10,   3,   4,   9,   4,
      12,   7,   9,   4,   5,  10,   4,   4,   4,   6,   7,   3,   7,
       7,   6,  12,   6,   5,  13,   4,   5,   6,   4,   6,  10,   4,
       4,   3,   7,  13,   2,   4,   4,   9,   4,   6,   6,   5,   3,
       5,   5,   4,   9,  14,   5,   6,   5,  13,   2,   3,   8,   4,
       4,   7,   6,   4,   7,   8,   5,   7,   5,   4,   7,   3,   8,
      11,  10,   8,   7,   5,   8,  17,  12,   7,  12,   3,   8,   3,
       7,   5,   4,  10,   4,   2,   8,   5,   6,  11,   9,   6,   8,
       8,   4,  10,   5,  12,  10,  14,   3,  19,  16,   3,   8,   5,
       6,   6,   4,   8,   5,   5,   8,  13,   6,   5,   6,   4,   4,
      12,   9,   9,   6,
  };
  static const unsigned short int V51aOffset[225] = {
       0,   9,  12,  23,  31,  36,  38,  47,  51,  68,  77,  81,  96,
      96, 103, 109, 115, 118, 118, 123, 123, 127, 131, 131, 138, 144,
     146, 151, 154, 158, 163, 168, 168, 172, 173, 179, 186, 200, 203,
     209, 212, 217, 222, 224, 228, 233, 240, 244, 253, 260, 260, 265,
     268, 272, 275, 277, 284, 288, 297, 302, 308, 312, 318, 321, 321,
     326, 330, 335, 342, 346, 351, 355, 355, 358, 364, 368, 376, 381,
     393, 399, 409, 409, 415, 421, 424, 430, 434, 438, 441, 449, 452,
     456, 458, 463, 470, 477, 481, 487, 488, 492, 499, 499, 503, 509,
     513, 513, 516, 516, 524, 529, 537, 540, 544, 547, 553, 554, 558,
     565, 572, 578, 590, 595, 599, 608, 610, 615, 621, 623, 623, 633,
     636, 638, 640, 646, 654, 658, 661, 664, 672, 675, 680, 686, 689,
     692, 695, 699, 702, 702, 715, 720, 726, 730, 738, 743, 743, 750,
     753, 756, 762, 768, 772, 779, 787, 790, 797, 802, 806, 813, 815,
     815, 826, 836, 844, 851, 855, 862, 862, 878, 885, 893, 896, 904,
     906, 913, 918, 921, 927, 930, 932, 940, 944, 950, 952, 961, 967,
     975, 975, 983, 993, 998, 1010, 1020, 1034, 1034, 1052, 1058, 1068, 1076,
     1081, 1087, 1089, 1093, 1101, 1106, 1111, 1111, 1124, 1130, 1130, 1136, 1140,
     1144, 1156, 1165, 1168,
  };
  int h, i;
  if( n<2 ) return 0;
  h = ((charMap(z[0])*4) ^
      (charMap(z[n-1])*3) ^
      n) % 189;
  for(i=((int)V51aHash[h])-1; i>=0; i=((int)V51aNext[i])-1){
    if( V51aLen[i]==n && casecmp(&V51zText[V51aOffset[i]],z,n)==0 ){
      return 1;
    }
  }
  return 0;
}

static gboolean
V51is_keyword (const char *z)
{
	return V51keywordCode(z, strlen (z));
}

/* file contains automatically generated code, DO NOT MODIFY *
 *
 * The code in this file implements a function that determines whether
 * or not a given identifier is really an SQL keyword.  The same thing
 * might be implemented more directly using a hand-written hash table.
 * But by using this automatically generated code, the size of the code
 * is substantially reduced.  This is important for embedded applications
 * on platforms with limited memory.
 *
 * This code has been copied from SQLite's mkkeywordhash.c file and modified.
 * to read the SQL keywords from a file instead of static ones
 */

/* Parsed keywords
 *
 * From line: ACCESSIBLE 	ADD 	ALL
 * KEYWORD: 'ACCESSIBLE'
 * KEYWORD: 'ADD'
 * KEYWORD: 'ALL'
 *
 * From line: ALTER 	ANALYZE 	AND
 * KEYWORD: 'ALTER'
 * KEYWORD: 'ANALYZE'
 * KEYWORD: 'AND'
 *
 * From line: AS 	ASC 	ASENSITIVE
 * KEYWORD: 'AS'
 * KEYWORD: 'ASC'
 * KEYWORD: 'ASENSITIVE'
 *
 * From line: BEFORE 	BETWEEN 	BIGINT
 * KEYWORD: 'BEFORE'
 * KEYWORD: 'BETWEEN'
 * KEYWORD: 'BIGINT'
 *
 * From line: BINARY 	BLOB 	BOTH
 * KEYWORD: 'BINARY'
 * KEYWORD: 'BLOB'
 * KEYWORD: 'BOTH'
 *
 * From line: BY 	CALL 	CASCADE
 * KEYWORD: 'BY'
 * KEYWORD: 'CALL'
 * KEYWORD: 'CASCADE'
 *
 * From line: CASE 	CHANGE 	CHAR
 * KEYWORD: 'CASE'
 * KEYWORD: 'CHANGE'
 * KEYWORD: 'CHAR'
 *
 * From line: CHARACTER 	CHECK 	COLLATE
 * KEYWORD: 'CHARACTER'
 * KEYWORD: 'CHECK'
 * KEYWORD: 'COLLATE'
 *
 * From line: COLUMN 	CONDITION 	CONSTRAINT
 * KEYWORD: 'COLUMN'
 * KEYWORD: 'CONDITION'
 * KEYWORD: 'CONSTRAINT'
 *
 * From line: CONTINUE 	CONVERT 	CREATE
 * KEYWORD: 'CONTINUE'
 * KEYWORD: 'CONVERT'
 * KEYWORD: 'CREATE'
 *
 * From line: CROSS 	CURRENT_DATE 	CURRENT_TIME
 * KEYWORD: 'CROSS'
 * KEYWORD: 'CURRENT_DATE'
 * KEYWORD: 'CURRENT_TIME'
 *
 * From line: CURRENT_TIMESTAMP 	CURRENT_USER 	CURSOR
 * KEYWORD: 'CURRENT_TIMESTAMP'
 * KEYWORD: 'CURRENT_USER'
 * KEYWORD: 'CURSOR'
 *
 * From line: DATABASE 	DATABASES 	DAY_HOUR
 * KEYWORD: 'DATABASE'
 * KEYWORD: 'DATABASES'
 * KEYWORD: 'DAY_HOUR'
 *
 * From line: DAY_MICROSECOND 	DAY_MINUTE 	DAY_SECOND
 * KEYWORD: 'DAY_MICROSECOND'
 * KEYWORD: 'DAY_MINUTE'
 * KEYWORD: 'DAY_SECOND'
 *
 * From line: DEC 	DECIMAL 	DECLARE
 * KEYWORD: 'DEC'
 * KEYWORD: 'DECIMAL'
 * KEYWORD: 'DECLARE'
 *
 * From line: DEFAULT 	DELAYED 	DELETE
 * KEYWORD: 'DEFAULT'
 * KEYWORD: 'DELAYED'
 * KEYWORD: 'DELETE'
 *
 * From line: DESC 	DESCRIBE 	DETERMINISTIC
 * KEYWORD: 'DESC'
 * KEYWORD: 'DESCRIBE'
 * KEYWORD: 'DETERMINISTIC'
 *
 * From line: DISTINCT 	DISTINCTROW 	DIV
 * KEYWORD: 'DISTINCT'
 * KEYWORD: 'DISTINCTROW'
 * KEYWORD: 'DIV'
 *
 * From line: DOUBLE 	DROP 	DUAL
 * KEYWORD: 'DOUBLE'
 * KEYWORD: 'DROP'
 * KEYWORD: 'DUAL'
 *
 * From line: EACH 	ELSE 	ELSEIF
 * KEYWORD: 'EACH'
 * KEYWORD: 'ELSE'
 * KEYWORD: 'ELSEIF'
 *
 * From line: ENCLOSED 	ESCAPED 	EXISTS
 * KEYWORD: 'ENCLOSED'
 * KEYWORD: 'ESCAPED'
 * KEYWORD: 'EXISTS'
 *
 * From line: EXIT 	EXPLAIN 	FALSE
 * KEYWORD: 'EXIT'
 * KEYWORD: 'EXPLAIN'
 * KEYWORD: 'FALSE'
 *
 * From line: FETCH 	FLOAT 	FLOAT4
 * KEYWORD: 'FETCH'
 * KEYWORD: 'FLOAT'
 * KEYWORD: 'FLOAT4'
 *
 * From line: FLOAT8 	FOR 	FORCE
 * KEYWORD: 'FLOAT8'
 * KEYWORD: 'FOR'
 * KEYWORD: 'FORCE'
 *
 * From line: FOREIGN 	FROM 	FULLTEXT
 * KEYWORD: 'FOREIGN'
 * KEYWORD: 'FROM'
 * KEYWORD: 'FULLTEXT'
 *
 * From line: GRANT 	GROUP 	HAVING
 * KEYWORD: 'GRANT'
 * KEYWORD: 'GROUP'
 * KEYWORD: 'HAVING'
 *
 * From line: HIGH_PRIORITY 	HOUR_MICROSECOND 	HOUR_MINUTE
 * KEYWORD: 'HIGH_PRIORITY'
 * KEYWORD: 'HOUR_MICROSECOND'
 * KEYWORD: 'HOUR_MINUTE'
 *
 * From line: HOUR_SECOND 	IF 	IGNORE
 * KEYWORD: 'HOUR_SECOND'
 * KEYWORD: 'IF'
 * KEYWORD: 'IGNORE'
 *
 * From line: IN 	INDEX 	INFILE
 * KEYWORD: 'IN'
 * KEYWORD: 'INDEX'
 * KEYWORD: 'INFILE'
 *
 * From line: INNER 	INOUT 	INSENSITIVE
 * KEYWORD: 'INNER'
 * KEYWORD: 'INOUT'
 * KEYWORD: 'INSENSITIVE'
 *
 * From line: INSERT 	INT 	INT1
 * KEYWORD: 'INSERT'
 * KEYWORD: 'INT'
 * KEYWORD: 'INT1'
 *
 * From line: INT2 	INT3 	INT4
 * KEYWORD: 'INT2'
 * KEYWORD: 'INT3'
 * KEYWORD: 'INT4'
 *
 * From line: INT8 	INTEGER 	INTERVAL
 * KEYWORD: 'INT8'
 * KEYWORD: 'INTEGER'
 * KEYWORD: 'INTERVAL'
 *
 * From line: INTO 	IS 	ITERATE
 * KEYWORD: 'INTO'
 * KEYWORD: 'IS'
 * KEYWORD: 'ITERATE'
 *
 * From line: JOIN 	KEY 	KEYS
 * KEYWORD: 'JOIN'
 * KEYWORD: 'KEY'
 * KEYWORD: 'KEYS'
 *
 * From line: KILL 	LEADING 	LEAVE
 * KEYWORD: 'KILL'
 * KEYWORD: 'LEADING'
 * KEYWORD: 'LEAVE'
 *
 * From line: LEFT 	LIKE 	LIMIT
 * KEYWORD: 'LEFT'
 * KEYWORD: 'LIKE'
 * KEYWORD: 'LIMIT'
 *
 * From line: LINEAR 	LINES 	LOAD
 * KEYWORD: 'LINEAR'
 * KEYWORD: 'LINES'
 * KEYWORD: 'LOAD'
 *
 * From line: LOCALTIME 	LOCALTIMESTAMP 	LOCK
 * KEYWORD: 'LOCALTIME'
 * KEYWORD: 'LOCALTIMESTAMP'
 * KEYWORD: 'LOCK'
 *
 * From line: LONG 	LONGBLOB 	LONGTEXT
 * KEYWORD: 'LONG'
 * KEYWORD: 'LONGBLOB'
 * KEYWORD: 'LONGTEXT'
 *
 * From line: LOOP 	LOW_PRIORITY 	MASTER_SSL_VERIFY_SERVER_CERT
 * KEYWORD: 'LOOP'
 * KEYWORD: 'LOW_PRIORITY'
 * KEYWORD: 'MASTER_SSL_VERIFY_SERVER_CERT'
 *
 * From line: MATCH 	MEDIUMBLOB 	MEDIUMINT
 * KEYWORD: 'MATCH'
 * KEYWORD: 'MEDIUMBLOB'
 * KEYWORD: 'MEDIUMINT'
 *
 * From line: MEDIUMTEXT 	MIDDLEINT 	MINUTE_MICROSECOND
 * KEYWORD: 'MEDIUMTEXT'
 * KEYWORD: 'MIDDLEINT'
 * KEYWORD: 'MINUTE_MICROSECOND'
 *
 * From line: MINUTE_SECOND 	MOD 	MODIFIES
 * KEYWORD: 'MINUTE_SECOND'
 * KEYWORD: 'MOD'
 * KEYWORD: 'MODIFIES'
 *
 * From line: NATURAL 	NOT 	NO_WRITE_TO_BINLOG
 * KEYWORD: 'NATURAL'
 * KEYWORD: 'NOT'
 * KEYWORD: 'NO_WRITE_TO_BINLOG'
 *
 * From line: NULL 	NUMERIC 	ON
 * KEYWORD: 'NULL'
 * KEYWORD: 'NUMERIC'
 * KEYWORD: 'ON'
 *
 * From line: OPTIMIZE 	OPTION 	OPTIONALLY
 * KEYWORD: 'OPTIMIZE'
 * KEYWORD: 'OPTION'
 * KEYWORD: 'OPTIONALLY'
 *
 * From line: OR 	ORDER 	OUT
 * KEYWORD: 'OR'
 * KEYWORD: 'ORDER'
 * KEYWORD: 'OUT'
 *
 * From line: OUTER 	OUTFILE 	PRECISION
 * KEYWORD: 'OUTER'
 * KEYWORD: 'OUTFILE'
 * KEYWORD: 'PRECISION'
 *
 * From line: PRIMARY 	PROCEDURE 	PURGE
 * KEYWORD: 'PRIMARY'
 * KEYWORD: 'PROCEDURE'
 * KEYWORD: 'PURGE'
 *
 * From line: RANGE 	READ 	READS
 * KEYWORD: 'RANGE'
 * KEYWORD: 'READ'
 * KEYWORD: 'READS'
 *
 * From line: READ_WRITE 	REAL 	REFERENCES
 * KEYWORD: 'READ_WRITE'
 * KEYWORD: 'REAL'
 * KEYWORD: 'REFERENCES'
 *
 * From line: REGEXP 	RELEASE 	RENAME
 * KEYWORD: 'REGEXP'
 * KEYWORD: 'RELEASE'
 * KEYWORD: 'RENAME'
 *
 * From line: REPEAT 	REPLACE 	REQUIRE
 * KEYWORD: 'REPEAT'
 * KEYWORD: 'REPLACE'
 * KEYWORD: 'REQUIRE'
 *
 * From line: RESTRICT 	RETURN 	REVOKE
 * KEYWORD: 'RESTRICT'
 * KEYWORD: 'RETURN'
 * KEYWORD: 'REVOKE'
 *
 * From line: RIGHT 	RLIKE 	SCHEMA
 * KEYWORD: 'RIGHT'
 * KEYWORD: 'RLIKE'
 * KEYWORD: 'SCHEMA'
 *
 * From line: SCHEMAS 	SECOND_MICROSECOND 	SELECT
 * KEYWORD: 'SCHEMAS'
 * KEYWORD: 'SECOND_MICROSECOND'
 * KEYWORD: 'SELECT'
 *
 * From line: SENSITIVE 	SEPARATOR 	SET
 * KEYWORD: 'SENSITIVE'
 * KEYWORD: 'SEPARATOR'
 * KEYWORD: 'SET'
 *
 * From line: SHOW 	SMALLINT 	SPATIAL
 * KEYWORD: 'SHOW'
 * KEYWORD: 'SMALLINT'
 * KEYWORD: 'SPATIAL'
 *
 * From line: SPECIFIC 	SQL 	SQLEXCEPTION
 * KEYWORD: 'SPECIFIC'
 * KEYWORD: 'SQL'
 * KEYWORD: 'SQLEXCEPTION'
 *
 * From line: SQLSTATE 	SQLWARNING 	SQL_BIG_RESULT
 * KEYWORD: 'SQLSTATE'
 * KEYWORD: 'SQLWARNING'
 * KEYWORD: 'SQL_BIG_RESULT'
 *
 * From line: SQL_CALC_FOUND_ROWS 	SQL_SMALL_RESULT 	SSL
 * KEYWORD: 'SQL_CALC_FOUND_ROWS'
 * KEYWORD: 'SQL_SMALL_RESULT'
 * KEYWORD: 'SSL'
 *
 * From line: STARTING 	STRAIGHT_JOIN 	TABLE
 * KEYWORD: 'STARTING'
 * KEYWORD: 'STRAIGHT_JOIN'
 * KEYWORD: 'TABLE'
 *
 * From line: TERMINATED 	THEN 	TINYBLOB
 * KEYWORD: 'TERMINATED'
 * KEYWORD: 'THEN'
 * KEYWORD: 'TINYBLOB'
 *
 * From line: TINYINT 	TINYTEXT 	TO
 * KEYWORD: 'TINYINT'
 * KEYWORD: 'TINYTEXT'
 * KEYWORD: 'TO'
 *
 * From line: TRAILING 	TRIGGER 	TRUE
 * KEYWORD: 'TRAILING'
 * KEYWORD: 'TRIGGER'
 * KEYWORD: 'TRUE'
 *
 * From line: UNDO 	UNION 	UNIQUE
 * KEYWORD: 'UNDO'
 * KEYWORD: 'UNION'
 * KEYWORD: 'UNIQUE'
 *
 * From line: UNLOCK 	UNSIGNED 	UPDATE
 * KEYWORD: 'UNLOCK'
 * KEYWORD: 'UNSIGNED'
 * KEYWORD: 'UPDATE'
 *
 * From line: USAGE 	USE 	USING
 * KEYWORD: 'USAGE'
 * KEYWORD: 'USE'
 * KEYWORD: 'USING'
 *
 * From line: UTC_DATE 	UTC_TIME 	UTC_TIMESTAMP
 * KEYWORD: 'UTC_DATE'
 * KEYWORD: 'UTC_TIME'
 * KEYWORD: 'UTC_TIMESTAMP'
 *
 * From line: VALUES 	VARBINARY 	VARCHAR
 * KEYWORD: 'VALUES'
 * KEYWORD: 'VARBINARY'
 * KEYWORD: 'VARCHAR'
 *
 * From line: VARCHARACTER 	VARYING 	WHEN
 * KEYWORD: 'VARCHARACTER'
 * KEYWORD: 'VARYING'
 * KEYWORD: 'WHEN'
 *
 * From line: WHERE 	WHILE 	WITH
 * KEYWORD: 'WHERE'
 * KEYWORD: 'WHILE'
 * KEYWORD: 'WITH'
 *
 * From line: WRITE 	XOR 	YEAR_MONTH
 * KEYWORD: 'WRITE'
 * KEYWORD: 'XOR'
 * KEYWORD: 'YEAR_MONTH'
 */
/* Hash score: 518 */
static int V54keywordCode(const char *z, int n){
  /* zText[] encodes 1747 bytes of keywords in 1153 bytes */
  /*   DAY_MICROSECOND_MICROSECONDITIONATURALTERMINATEDAY_MINUTE          */
  /*   _MICROSECONDAY_SECONDAY_HOUR_MICROSECONDATABASESCAPEDECIMAL        */
  /*   IMITERATEACHANGEXITINYINTERVALUESCHEMAS                            */
  /*   TER_SSL_VERIFY_SERVER_CERTABLEADINGROUPDATEXPLAINOUTER             */
  /*   EAD_WRITELSEIFOREIGNOREGEXPROCEDURELEASENSITIVENCLOSEDECLAREAL     */
  /*   INESMALLINTEGEREFERENCESEPARATORDERENAMEDIUMINTOUTFILEAVEXISTS     */
  /*   PATIALOADDELETEHOUR_MINUTE_SECONDESCRIBEFOREQUIREVOKEYSQLSTATE     */
  /*   HOUR_SECONDOUBLEFTHENOTINYBLOBIGINT1CASELECTINYTEXTRAILINGRANT     */
  /*   RIGGERLIKECONSTRAINT2MIDDLEINT3VARCHARACTERANGEACCESSIBLE          */
  /*   BETWEENO_WRITE_TO_BINLOGBOTHAVINGCASCADEFAULTRUECOLLATECREATE      */
  /*   CURRENT_DATECURSOREADSTRAIGHT_JOINDEXOREPEATDROPTIMIZEDUALOOP      */
  /*   TIONALLYEAR_MONTHIGH_PRIORITYFALSETFETCHECKILLINEAREPLACE          */
  /*   INFILEMATCHMODIFIESHOWHENULLOCALTIMESTAMPRECISIONUMERICALL         */
  /*   ONGBLOBYUNDOUTC_DATEWHERESTRICTWHILEWITHANALYZEANDELAYED           */
  /*   ETERMINISTICOLUMNCONTINUECONVERTCROSSPECIFICURRENT_TIMESTAMP       */
  /*   RIMARYCURRENT_USERETURNDISTINCTROWDIVARBINARYFORCEFROM             */
  /*   EDIUMBLOBFULLTEXTINNERIGHTINSENSITIVEINSERTLONGTEXT                */
  /*   LOW_PRIORITYMEDIUMTEXTPURGESQLEXCEPTIONSQLWARNING                  */
  /*   SQL_BIG_RESULTSQL_CALC_FOUND_ROWSQL_SMALL_RESULTSTARTINGUNION      */
  /*   UNIQUEUNLOCKUNSIGNEDUSAGEUSINGUTC_TIMESTAMPVARYINGFLOAT4FLOAT8     */
  /*   INT4INT8                                                           */
  static const char V54zText[1152] = {
    'D','A','Y','_','M','I','C','R','O','S','E','C','O','N','D','_','M','I',
    'C','R','O','S','E','C','O','N','D','I','T','I','O','N','A','T','U','R',
    'A','L','T','E','R','M','I','N','A','T','E','D','A','Y','_','M','I','N',
    'U','T','E','_','M','I','C','R','O','S','E','C','O','N','D','A','Y','_',
    'S','E','C','O','N','D','A','Y','_','H','O','U','R','_','M','I','C','R',
    'O','S','E','C','O','N','D','A','T','A','B','A','S','E','S','C','A','P',
    'E','D','E','C','I','M','A','L','I','M','I','T','E','R','A','T','E','A',
    'C','H','A','N','G','E','X','I','T','I','N','Y','I','N','T','E','R','V',
    'A','L','U','E','S','C','H','E','M','A','S','T','E','R','_','S','S','L',
    '_','V','E','R','I','F','Y','_','S','E','R','V','E','R','_','C','E','R',
    'T','A','B','L','E','A','D','I','N','G','R','O','U','P','D','A','T','E',
    'X','P','L','A','I','N','O','U','T','E','R','E','A','D','_','W','R','I',
    'T','E','L','S','E','I','F','O','R','E','I','G','N','O','R','E','G','E',
    'X','P','R','O','C','E','D','U','R','E','L','E','A','S','E','N','S','I',
    'T','I','V','E','N','C','L','O','S','E','D','E','C','L','A','R','E','A',
    'L','I','N','E','S','M','A','L','L','I','N','T','E','G','E','R','E','F',
    'E','R','E','N','C','E','S','E','P','A','R','A','T','O','R','D','E','R',
    'E','N','A','M','E','D','I','U','M','I','N','T','O','U','T','F','I','L',
    'E','A','V','E','X','I','S','T','S','P','A','T','I','A','L','O','A','D',
    'D','E','L','E','T','E','H','O','U','R','_','M','I','N','U','T','E','_',
    'S','E','C','O','N','D','E','S','C','R','I','B','E','F','O','R','E','Q',
    'U','I','R','E','V','O','K','E','Y','S','Q','L','S','T','A','T','E','H',
    'O','U','R','_','S','E','C','O','N','D','O','U','B','L','E','F','T','H',
    'E','N','O','T','I','N','Y','B','L','O','B','I','G','I','N','T','1','C',
    'A','S','E','L','E','C','T','I','N','Y','T','E','X','T','R','A','I','L',
    'I','N','G','R','A','N','T','R','I','G','G','E','R','L','I','K','E','C',
    'O','N','S','T','R','A','I','N','T','2','M','I','D','D','L','E','I','N',
    'T','3','V','A','R','C','H','A','R','A','C','T','E','R','A','N','G','E',
    'A','C','C','E','S','S','I','B','L','E','B','E','T','W','E','E','N','O',
    '_','W','R','I','T','E','_','T','O','_','B','I','N','L','O','G','B','O',
    'T','H','A','V','I','N','G','C','A','S','C','A','D','E','F','A','U','L',
    'T','R','U','E','C','O','L','L','A','T','E','C','R','E','A','T','E','C',
    'U','R','R','E','N','T','_','D','A','T','E','C','U','R','S','O','R','E',
    'A','D','S','T','R','A','I','G','H','T','_','J','O','I','N','D','E','X',
    'O','R','E','P','E','A','T','D','R','O','P','T','I','M','I','Z','E','D',
    'U','A','L','O','O','P','T','I','O','N','A','L','L','Y','E','A','R','_',
    'M','O','N','T','H','I','G','H','_','P','R','I','O','R','I','T','Y','F',
    'A','L','S','E','T','F','E','T','C','H','E','C','K','I','L','L','I','N',
    'E','A','R','E','P','L','A','C','E','I','N','F','I','L','E','M','A','T',
    'C','H','M','O','D','I','F','I','E','S','H','O','W','H','E','N','U','L',
    'L','O','C','A','L','T','I','M','E','S','T','A','M','P','R','E','C','I',
    'S','I','O','N','U','M','E','R','I','C','A','L','L','O','N','G','B','L',
    'O','B','Y','U','N','D','O','U','T','C','_','D','A','T','E','W','H','E',
    'R','E','S','T','R','I','C','T','W','H','I','L','E','W','I','T','H','A',
    'N','A','L','Y','Z','E','A','N','D','E','L','A','Y','E','D','E','T','E',
    'R','M','I','N','I','S','T','I','C','O','L','U','M','N','C','O','N','T',
    'I','N','U','E','C','O','N','V','E','R','T','C','R','O','S','S','P','E',
    'C','I','F','I','C','U','R','R','E','N','T','_','T','I','M','E','S','T',
    'A','M','P','R','I','M','A','R','Y','C','U','R','R','E','N','T','_','U',
    'S','E','R','E','T','U','R','N','D','I','S','T','I','N','C','T','R','O',
    'W','D','I','V','A','R','B','I','N','A','R','Y','F','O','R','C','E','F',
    'R','O','M','E','D','I','U','M','B','L','O','B','F','U','L','L','T','E',
    'X','T','I','N','N','E','R','I','G','H','T','I','N','S','E','N','S','I',
    'T','I','V','E','I','N','S','E','R','T','L','O','N','G','T','E','X','T',
    'L','O','W','_','P','R','I','O','R','I','T','Y','M','E','D','I','U','M',
    'T','E','X','T','P','U','R','G','E','S','Q','L','E','X','C','E','P','T',
    'I','O','N','S','Q','L','W','A','R','N','I','N','G','S','Q','L','_','B',
    'I','G','_','R','E','S','U','L','T','S','Q','L','_','C','A','L','C','_',
    'F','O','U','N','D','_','R','O','W','S','Q','L','_','S','M','A','L','L',
    '_','R','E','S','U','L','T','S','T','A','R','T','I','N','G','U','N','I',
    'O','N','U','N','I','Q','U','E','U','N','L','O','C','K','U','N','S','I',
    'G','N','E','D','U','S','A','G','E','U','S','I','N','G','U','T','C','_',
    'T','I','M','E','S','T','A','M','P','V','A','R','Y','I','N','G','F','L',
    'O','A','T','4','F','L','O','A','T','8','I','N','T','4','I','N','T','8',
  };
  static const unsigned int V54aHash[189] = {
     72, 0, 40, 169, 220, 0, 206, 181, 107, 135, 0, 140, 125,
     0, 116, 189, 174, 11, 4, 172, 0, 86, 103, 0, 42, 177,
     197, 0, 35, 96, 186, 121, 132, 104, 28, 163, 157, 198, 63,
     214, 184, 124, 84, 136, 26, 217, 79, 141, 173, 152, 58, 212,
     207, 2, 216, 3, 211, 162, 190, 178, 0, 31, 117, 0, 209,
     213, 168, 0, 0, 218, 0, 0, 0, 0, 0, 222, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 87, 0, 0, 219, 0, 0, 100, 0, 0, 221, 205, 195,
     102, 153, 179, 0, 203, 80, 52, 215, 200, 204, 18, 144, 0,
     66, 0, 191, 149, 210, 122, 71, 154, 0, 187, 0, 64, 208,
     161, 158, 202, 110, 41, 106, 0, 0, 118, 139, 0, 88, 19,
     0, 188, 170, 176, 148, 115, 175, 49, 0, 185, 1, 167, 126,
     10, 73, 51, 81, 183, 166, 0,
  };
  static const unsigned int V54aNext[222] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  17,
       0,   0,  22,   0,   0,   0,   0,   0,   0,  34,   0,   0,   0,
      15,   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
       0,   0,  27,   0,   0,  37,   0,  59,  39,  30,   0,   0,   0,
       0,  54,   0,   0,   0,   0,   0,  14,  48,  47,  60,   0,   0,
       0,  24,  69,  23,  45,   0,   0,   0,   0,   0,   0,  70,  61,
       0,   0,   0,  56,   0,   0,   5,  76,   0,   0,  32,  16,   0,
      94,  74,  92,   0,   7, 108,  53,   0,  57,   0,   0,  65,  98,
     114,  20,   0,   0,  62,  29,  46,  33,   8,  25,  77,  95,   0,
       0,   0,   0,   0,   0,  82,   0, 113, 119,   0, 111,  75, 142,
      44, 101,   0, 129,   0, 127,   0,  89,   0,   0, 151,  21,  83,
      99,   0,   0, 109,  12, 160, 143,   0,  68,   0, 112,   0,  13,
     165,   6, 130,  91,  43, 120, 164, 134, 150,  90,  85, 128,  78,
      50, 146, 137,   0,  67,   0, 155,   0,   0,   0,   0, 180,  93,
     131, 171, 105, 193,   9, 159, 156,   0, 123, 192,   0, 182, 147,
      36, 138,  55, 133, 194, 196, 145, 201, 199,   0,  97,   0,   0,
       0,
  };
  static const unsigned char V54aLen[222] = {
      15,  18,   2,   9,   7,   5,  10,  10,  18,  10,   8,  16,   9,
       8,   7,   7,   5,   7,   4,   6,   4,   7,   8,   6,   7,   6,
      29,   2,   3,   2,   5,   7,   5,   6,   7,   5,   5,   4,  10,
       4,   6,   7,   3,   6,   6,   9,   7,  10,   8,   3,   7,   4,
       5,   8,   7,  10,   9,   5,   6,   9,   4,   7,   3,   5,   6,
       7,   4,   3,   6,  11,  13,   4,   8,   6,   7,   6,   3,   4,
       8,  11,   6,   4,   4,   3,   8,   6,   4,   4,   6,   8,   8,
       5,   7,   5,   4,  10,   4,   3,   9,   4,   7,  12,   9,   4,
       5,  10,   7,  18,   5,   2,   2,   4,   6,   7,   3,   7,   4,
       7,   6,  12,   6,   5,  13,   4,   5,   3,   6,   4,   8,   4,
       4,  10,   6,  10,  13,   2,   5,   3,   5,   5,   4,   6,   7,
       6,   5,   8,   3,   4,   4,   4,   9,  14,   9,   7,   4,   8,
       2,   4,   8,   5,   8,   5,   4,   7,   3,   7,  13,   2,   6,
       8,   7,   5,   8,  17,  12,   7,  12,   3,   6,  11,   8,   3,
       9,   6,   5,   4,  10,   4,   8,   5,   5,  11,   9,   6,   4,
       8,  12,  10,   5,  12,  10,  14,  19,   3,  16,   3,   8,   5,
       6,   6,   4,   8,   5,   5,  13,   8,   7,   6,   6,   5,   4,
       4,
  };
  static const unsigned short int V54aOffset[222] = {
       0,   9,  12,  23,  31,  36,  38,  47,  51,  68,  77,  81,  96,
      96, 103, 109, 115, 118, 124, 126, 131, 134, 138, 143, 148, 148,
     152, 153, 159, 166, 180, 183, 189, 192, 197, 202, 204, 208, 208,
     217, 217, 222, 222, 226, 230, 235, 242, 246, 255, 262, 262, 267,
     270, 274, 279, 285, 294, 301, 305, 309, 315, 318, 318, 323, 327,
     332, 338, 340, 342, 348, 353, 365, 365, 371, 375, 380, 384, 384,
     387, 395, 405, 409, 412, 415, 417, 424, 427, 431, 433, 438, 445,
     452, 456, 462, 463, 467, 474, 474, 478, 484, 488, 488, 491, 491,
     499, 504, 514, 520, 523, 529, 533, 538, 541, 547, 548, 552, 558,
     562, 569, 575, 587, 592, 596, 605, 607, 611, 613, 619, 621, 629,
     632, 634, 634, 643, 652, 660, 665, 668, 671, 674, 678, 681, 686,
     693, 699, 704, 704, 711, 714, 717, 720, 720, 733, 741, 747, 750,
     757, 759, 763, 771, 774, 782, 787, 791, 798, 800, 806, 814, 818,
     824, 832, 839, 843, 850, 850, 866, 873, 881, 884, 890, 890, 901,
     903, 906, 912, 917, 920, 926, 930, 938, 942, 947, 949, 958, 964,
     964, 972, 984, 994, 999, 1011, 1021, 1035, 1035, 1053, 1059, 1069, 1077,
     1082, 1088, 1090, 1094, 1102, 1107, 1112, 1112, 1125, 1132, 1138, 1138, 1144,
     1148,
  };
  int h, i;
  if( n<2 ) return 0;
  h = ((charMap(z[0])*4) ^
      (charMap(z[n-1])*3) ^
      n) % 189;
  for(i=((int)V54aHash[h])-1; i>=0; i=((int)V54aNext[i])-1){
    if( V54aLen[i]==n && casecmp(&V54zText[V54aOffset[i]],z,n)==0 ){
      return 1;
    }
  }
  return 0;
}

static gboolean
V54is_keyword (const char *z)
{
	return V54keywordCode(z, strlen (z));
}

/* file contains automatically generated code, DO NOT MODIFY *
 *
 * The code in this file implements a function that determines whether
 * or not a given identifier is really an SQL keyword.  The same thing
 * might be implemented more directly using a hand-written hash table.
 * But by using this automatically generated code, the size of the code
 * is substantially reduced.  This is important for embedded applications
 * on platforms with limited memory.
 *
 * This code has been copied from SQLite's mkkeywordhash.c file and modified.
 * to read the SQL keywords from a file instead of static ones
 */

/* Parsed keywords
 *
 * From line: ACCESSIBLE 	ADD 	ALL
 * KEYWORD: 'ACCESSIBLE'
 * KEYWORD: 'ADD'
 * KEYWORD: 'ALL'
 *
 * From line: ALTER 	ANALYZE 	AND
 * KEYWORD: 'ALTER'
 * KEYWORD: 'ANALYZE'
 * KEYWORD: 'AND'
 *
 * From line: AS 	ASC 	ASENSITIVE
 * KEYWORD: 'AS'
 * KEYWORD: 'ASC'
 * KEYWORD: 'ASENSITIVE'
 *
 * From line: BEFORE 	BETWEEN 	BIGINT
 * KEYWORD: 'BEFORE'
 * KEYWORD: 'BETWEEN'
 * KEYWORD: 'BIGINT'
 *
 * From line: BINARY 	BLOB 	BOTH
 * KEYWORD: 'BINARY'
 * KEYWORD: 'BLOB'
 * KEYWORD: 'BOTH'
 *
 * From line: BY 	CALL 	CASCADE
 * KEYWORD: 'BY'
 * KEYWORD: 'CALL'
 * KEYWORD: 'CASCADE'
 *
 * From line: CASE 	CHANGE 	CHAR
 * KEYWORD: 'CASE'
 * KEYWORD: 'CHANGE'
 * KEYWORD: 'CHAR'
 *
 * From line: CHARACTER 	CHECK 	COLLATE
 * KEYWORD: 'CHARACTER'
 * KEYWORD: 'CHECK'
 * KEYWORD: 'COLLATE'
 *
 * From line: COLUMN 	CONDITION 	CONSTRAINT
 * KEYWORD: 'COLUMN'
 * KEYWORD: 'CONDITION'
 * KEYWORD: 'CONSTRAINT'
 *
 * From line: CONTINUE 	CONVERT 	CREATE
 * KEYWORD: 'CONTINUE'
 * KEYWORD: 'CONVERT'
 * KEYWORD: 'CREATE'
 *
 * From line: CROSS 	CURRENT_DATE 	CURRENT_TIME
 * KEYWORD: 'CROSS'
 * KEYWORD: 'CURRENT_DATE'
 * KEYWORD: 'CURRENT_TIME'
 *
 * From line: CURRENT_TIMESTAMP 	CURRENT_USER 	CURSOR
 * KEYWORD: 'CURRENT_TIMESTAMP'
 * KEYWORD: 'CURRENT_USER'
 * KEYWORD: 'CURSOR'
 *
 * From line: DATABASE 	DATABASES 	DAY_HOUR
 * KEYWORD: 'DATABASE'
 * KEYWORD: 'DATABASES'
 * KEYWORD: 'DAY_HOUR'
 *
 * From line: DAY_MICROSECOND 	DAY_MINUTE 	DAY_SECOND
 * KEYWORD: 'DAY_MICROSECOND'
 * KEYWORD: 'DAY_MINUTE'
 * KEYWORD: 'DAY_SECOND'
 *
 * From line: DEC 	DECIMAL 	DECLARE
 * KEYWORD: 'DEC'
 * KEYWORD: 'DECIMAL'
 * KEYWORD: 'DECLARE'
 *
 * From line: DEFAULT 	DELAYED 	DELETE
 * KEYWORD: 'DEFAULT'
 * KEYWORD: 'DELAYED'
 * KEYWORD: 'DELETE'
 *
 * From line: DESC 	DESCRIBE 	DETERMINISTIC
 * KEYWORD: 'DESC'
 * KEYWORD: 'DESCRIBE'
 * KEYWORD: 'DETERMINISTIC'
 *
 * From line: DISTINCT 	DISTINCTROW 	DIV
 * KEYWORD: 'DISTINCT'
 * KEYWORD: 'DISTINCTROW'
 * KEYWORD: 'DIV'
 *
 * From line: DOUBLE 	DROP 	DUAL
 * KEYWORD: 'DOUBLE'
 * KEYWORD: 'DROP'
 * KEYWORD: 'DUAL'
 *
 * From line: EACH 	ELSE 	ELSEIF
 * KEYWORD: 'EACH'
 * KEYWORD: 'ELSE'
 * KEYWORD: 'ELSEIF'
 *
 * From line: ENCLOSED 	ESCAPED 	EXISTS
 * KEYWORD: 'ENCLOSED'
 * KEYWORD: 'ESCAPED'
 * KEYWORD: 'EXISTS'
 *
 * From line: EXIT 	EXPLAIN 	FALSE
 * KEYWORD: 'EXIT'
 * KEYWORD: 'EXPLAIN'
 * KEYWORD: 'FALSE'
 *
 * From line: FETCH 	FLOAT 	FLOAT4
 * KEYWORD: 'FETCH'
 * KEYWORD: 'FLOAT'
 * KEYWORD: 'FLOAT4'
 *
 * From line: FLOAT8 	FOR 	FORCE
 * KEYWORD: 'FLOAT8'
 * KEYWORD: 'FOR'
 * KEYWORD: 'FORCE'
 *
 * From line: FOREIGN 	FROM 	FULLTEXT
 * KEYWORD: 'FOREIGN'
 * KEYWORD: 'FROM'
 * KEYWORD: 'FULLTEXT'
 *
 * From line: GRANT 	GROUP 	HAVING
 * KEYWORD: 'GRANT'
 * KEYWORD: 'GROUP'
 * KEYWORD: 'HAVING'
 *
 * From line: HIGH_PRIORITY 	HOUR_MICROSECOND 	HOUR_MINUTE
 * KEYWORD: 'HIGH_PRIORITY'
 * KEYWORD: 'HOUR_MICROSECOND'
 * KEYWORD: 'HOUR_MINUTE'
 *
 * From line: HOUR_SECOND 	IF 	IGNORE
 * KEYWORD: 'HOUR_SECOND'
 * KEYWORD: 'IF'
 * KEYWORD: 'IGNORE'
 *
 * From line: IGNORE_SERVER_IDS 	IN 	INDEX
 * KEYWORD: 'IGNORE_SERVER_IDS'
 * KEYWORD: 'IN'
 * KEYWORD: 'INDEX'
 *
 * From line: INFILE 	INNER 	INOUT
 * KEYWORD: 'INFILE'
 * KEYWORD: 'INNER'
 * KEYWORD: 'INOUT'
 *
 * From line: INSENSITIVE 	INSERT 	INT
 * KEYWORD: 'INSENSITIVE'
 * KEYWORD: 'INSERT'
 * KEYWORD: 'INT'
 *
 * From line: INT1 	INT2 	INT3
 * KEYWORD: 'INT1'
 * KEYWORD: 'INT2'
 * KEYWORD: 'INT3'
 *
 * From line: INT4 	INT8 	INTEGER
 * KEYWORD: 'INT4'
 * KEYWORD: 'INT8'
 * KEYWORD: 'INTEGER'
 *
 * From line: INTERVAL 	INTO 	IS
 * KEYWORD: 'INTERVAL'
 * KEYWORD: 'INTO'
 * KEYWORD: 'IS'
 *
 * From line: ITERATE 	JOIN 	KEY
 * KEYWORD: 'ITERATE'
 * KEYWORD: 'JOIN'
 * KEYWORD: 'KEY'
 *
 * From line: KEYS 	KILL 	LEADING
 * KEYWORD: 'KEYS'
 * KEYWORD: 'KILL'
 * KEYWORD: 'LEADING'
 *
 * From line: LEAVE 	LEFT 	LIKE
 * KEYWORD: 'LEAVE'
 * KEYWORD: 'LEFT'
 * KEYWORD: 'LIKE'
 *
 * From line: LIMIT 	LINEAR 	LINES
 * KEYWORD: 'LIMIT'
 * KEYWORD: 'LINEAR'
 * KEYWORD: 'LINES'
 *
 * From line: LOAD 	LOCALTIME 	LOCALTIMESTAMP
 * KEYWORD: 'LOAD'
 * KEYWORD: 'LOCALTIME'
 * KEYWORD: 'LOCALTIMESTAMP'
 *
 * From line: LOCK 	LONG 	LONGBLOB
 * KEYWORD: 'LOCK'
 * KEYWORD: 'LONG'
 * KEYWORD: 'LONGBLOB'
 *
 * From line: LONGTEXT 	LOOP 	LOW_PRIORITY
 * KEYWORD: 'LONGTEXT'
 * KEYWORD: 'LOOP'
 * KEYWORD: 'LOW_PRIORITY'
 *
 * From line: MASTER_HEARTBEAT_PERIOD 	MASTER_SSL_VERIFY_SERVER_CERT 	MATCH
 * KEYWORD: 'MASTER_HEARTBEAT_PERIOD'
 * KEYWORD: 'MASTER_SSL_VERIFY_SERVER_CERT'
 * KEYWORD: 'MATCH'
 *
 * From line: MEDIUMBLOB 	MEDIUMINT 	MEDIUMTEXT
 * KEYWORD: 'MEDIUMBLOB'
 * KEYWORD: 'MEDIUMINT'
 * KEYWORD: 'MEDIUMTEXT'
 *
 * From line: MIDDLEINT 	MINUTE_MICROSECOND 	MINUTE_SECOND
 * KEYWORD: 'MIDDLEINT'
 * KEYWORD: 'MINUTE_MICROSECOND'
 * KEYWORD: 'MINUTE_SECOND'
 *
 * From line: MOD 	MODIFIES 	NATURAL
 * KEYWORD: 'MOD'
 * KEYWORD: 'MODIFIES'
 * KEYWORD: 'NATURAL'
 *
 * From line: NOT 	NO_WRITE_TO_BINLOG 	NULL
 * KEYWORD: 'NOT'
 * KEYWORD: 'NO_WRITE_TO_BINLOG'
 * KEYWORD: 'NULL'
 *
 * From line: NUMERIC 	ON 	OPTIMIZE
 * KEYWORD: 'NUMERIC'
 * KEYWORD: 'ON'
 * KEYWORD: 'OPTIMIZE'
 *
 * From line: OPTION 	OPTIONALLY 	OR
 * KEYWORD: 'OPTION'
 * KEYWORD: 'OPTIONALLY'
 * KEYWORD: 'OR'
 *
 * From line: ORDER 	OUT 	OUTER
 * KEYWORD: 'ORDER'
 * KEYWORD: 'OUT'
 * KEYWORD: 'OUTER'
 *
 * From line: OUTFILE 	OVERWRITE 	PRECISION
 * KEYWORD: 'OUTFILE'
 * KEYWORD: 'OVERWRITE'
 * KEYWORD: 'PRECISION'
 *
 * From line: PRIMARY 	PROCEDURE 	PURGE
 * KEYWORD: 'PRIMARY'
 * KEYWORD: 'PROCEDURE'
 * KEYWORD: 'PURGE'
 *
 * From line: RANGE 	READ 	READS
 * KEYWORD: 'RANGE'
 * KEYWORD: 'READ'
 * KEYWORD: 'READS'
 *
 * From line: READ_ONLY 	READ_WRITE 	REAL
 * KEYWORD: 'READ_ONLY'
 * KEYWORD: 'READ_WRITE'
 * KEYWORD: 'REAL'
 *
 * From line: REFERENCES 	REGEXP 	RELEASE
 * KEYWORD: 'REFERENCES'
 * KEYWORD: 'REGEXP'
 * KEYWORD: 'RELEASE'
 *
 * From line: RENAME 	REPEAT 	REPLACE
 * KEYWORD: 'RENAME'
 * KEYWORD: 'REPEAT'
 * KEYWORD: 'REPLACE'
 *
 * From line: REQUIRE 	RESIGNAL 	RESTRICT
 * KEYWORD: 'REQUIRE'
 * KEYWORD: 'RESIGNAL'
 * KEYWORD: 'RESTRICT'
 *
 * From line: RETURN 	REVOKE 	RIGHT
 * KEYWORD: 'RETURN'
 * KEYWORD: 'REVOKE'
 * KEYWORD: 'RIGHT'
 *
 * From line: RLIKE 	SCHEMA 	SCHEMAS
 * KEYWORD: 'RLIKE'
 * KEYWORD: 'SCHEMA'
 * KEYWORD: 'SCHEMAS'
 *
 * From line: SECOND_MICROSECOND 	SELECT 	SENSITIVE
 * KEYWORD: 'SECOND_MICROSECOND'
 * KEYWORD: 'SELECT'
 * KEYWORD: 'SENSITIVE'
 *
 * From line: SEPARATOR 	SET 	SHOW
 * KEYWORD: 'SEPARATOR'
 * KEYWORD: 'SET'
 * KEYWORD: 'SHOW'
 *
 * From line: SIGNAL 	SKIP_GAP_EVENT 	SMALLINT
 * KEYWORD: 'SIGNAL'
 * KEYWORD: 'SKIP_GAP_EVENT'
 * KEYWORD: 'SMALLINT'
 *
 * From line: SPATIAL 	SPECIFIC 	SQL
 * KEYWORD: 'SPATIAL'
 * KEYWORD: 'SPECIFIC'
 * KEYWORD: 'SQL'
 *
 * From line: SQLEXCEPTION 	SQLSTATE 	SQLWARNING
 * KEYWORD: 'SQLEXCEPTION'
 * KEYWORD: 'SQLSTATE'
 * KEYWORD: 'SQLWARNING'
 *
 * From line: SQL_BIG_RESULT 	SQL_CALC_FOUND_ROWS 	SQL_SMALL_RESULT
 * KEYWORD: 'SQL_BIG_RESULT'
 * KEYWORD: 'SQL_CALC_FOUND_ROWS'
 * KEYWORD: 'SQL_SMALL_RESULT'
 *
 * From line: SSL 	STARTING 	STRAIGHT_JOIN
 * KEYWORD: 'SSL'
 * KEYWORD: 'STARTING'
 * KEYWORD: 'STRAIGHT_JOIN'
 *
 * From line: TABLE 	TERMINATED 	THEN
 * KEYWORD: 'TABLE'
 * KEYWORD: 'TERMINATED'
 * KEYWORD: 'THEN'
 *
 * From line: TINYBLOB 	TINYINT 	TINYTEXT
 * KEYWORD: 'TINYBLOB'
 * KEYWORD: 'TINYINT'
 * KEYWORD: 'TINYTEXT'
 *
 * From line: TO 	TRAILING 	TRIGGER
 * KEYWORD: 'TO'
 * KEYWORD: 'TRAILING'
 * KEYWORD: 'TRIGGER'
 *
 * From line: TRUE 	UNDO 	UNION
 * KEYWORD: 'TRUE'
 * KEYWORD: 'UNDO'
 * KEYWORD: 'UNION'
 *
 * From line: UNIQUE 	UNLOCK 	UNSIGNED
 * KEYWORD: 'UNIQUE'
 * KEYWORD: 'UNLOCK'
 * KEYWORD: 'UNSIGNED'
 *
 * From line: UPDATE 	USAGE 	USE
 * KEYWORD: 'UPDATE'
 * KEYWORD: 'USAGE'
 * KEYWORD: 'USE'
 *
 * From line: USING 	UTC_DATE 	UTC_TIME
 * KEYWORD: 'USING'
 * KEYWORD: 'UTC_DATE'
 * KEYWORD: 'UTC_TIME'
 *
 * From line: UTC_TIMESTAMP 	VALUES 	VARBINARY
 * KEYWORD: 'UTC_TIMESTAMP'
 * KEYWORD: 'VALUES'
 * KEYWORD: 'VARBINARY'
 *
 * From line: VARCHAR 	VARCHARACTER 	VARYING
 * KEYWORD: 'VARCHAR'
 * KEYWORD: 'VARCHARACTER'
 * KEYWORD: 'VARYING'
 *
 * From line: WHEN 	WHERE 	WHILE
 * KEYWORD: 'WHEN'
 * KEYWORD: 'WHERE'
 * KEYWORD: 'WHILE'
 *
 * From line: WITH 	WRITE 	XOR
 * KEYWORD: 'WITH'
 * KEYWORD: 'WRITE'
 * KEYWORD: 'XOR'
 */
/* Hash score: 555 */
static int V60keywordCode(const char *z, int n){
  /* zText[] encodes 1829 bytes of keywords in 1219 bytes */
  /*   DAY_MICROSECOND_MICROSECONDITIONATURALTERMINATEDAY_MINUTE          */
  /*   _MICROSECONDAY_SECONDAY_HOUR_MICROSECONDATABASESCAPEDECIMAL        */
  /*   IMITERATEACHANGEXITINYINTERVALUESCHEMASTER_HEARTBEAT_PERIOD        */
  /*   ECLAREAD_WRITEXPLAINOUTEREGEXPROCEDURELEASENSITIVELSEIFOREIGN      */
  /*   ORE_SERVER_IDSMALLINTEGEREALINESEPARATORDEREFERENCESPATIALOADD     */
  /*   ELETENCLOSEDESCRIBEFORENAMEDIUMINTOVERWRITEXISTSQLSTATE            */
  /*   HOUR_MINUTE_SECONDOUBLEADINGROUPDATEHOUR_SECONDROPTIMIZEBIGINT     */
  /*   1CASELECTABLEAVECONSTRAINT2MIDDLEINT3VARCHARACTEREQUIRESIGNAL      */
  /*   OOPTIONALLYACCESSIBLEFTHENOTINYBLOBETWEENO_WRITE_TO_BINLOGRANT     */
  /*   INYTEXTRAILINGBOTHAVINGCASCADEFAULTRIGGEREVOKEYSTRAIGHT_JOIN       */
  /*   DEXORLIKECOLLATECREATECURRENT_DATECURSORANGEDUALINEAREADSETRUE     */
  /*   FALSEFETCHECKILLOCALTIMESTAMPRECISIONULLONGBLOBYINFILEMATCH        */
  /*   IGH_PRIORITYMODIFIESHOWHENUMERICALLONGTEXTOUTFILEUNDOUTC_DATE      */
  /*   WHEREPEATWHILEWITHANALYZEANDELAYEDETERMINISTICOLUMNCONTINUE        */
  /*   CONVERTCROSSKIP_GAP_EVENTCURRENT_TIMESTAMPURGECURRENT_USER         */
  /*   EPLACEDISTINCTROWDIVARYINGFORCEFROM                                */
  /*   ASTER_SSL_VERIFY_SERVER_CERTFULLTEXTINNERESTRICTINSENSITIVE        */
  /*   INSERTMEDIUMBLOBMEDIUMTEXTRETURNRIGHTSPECIFICSQLEXCEPTION          */
  /*   SQLWARNINGSQL_BIG_RESULTSQL_CALC_FOUND_ROWSQL_SMALL_RESULT         */
  /*   STARTINGUNIONUNIQUEUNLOCKUNSIGNEDUSAGEUSINGUTC_TIMESTAMPRIMARY     */
  /*   FLOAT4FLOAT8INT4INT8LOW_PRIORITYREAD_ONLYVARBINARY                 */
  static const char V60zText[1218] = {
    'D','A','Y','_','M','I','C','R','O','S','E','C','O','N','D','_','M','I',
    'C','R','O','S','E','C','O','N','D','I','T','I','O','N','A','T','U','R',
    'A','L','T','E','R','M','I','N','A','T','E','D','A','Y','_','M','I','N',
    'U','T','E','_','M','I','C','R','O','S','E','C','O','N','D','A','Y','_',
    'S','E','C','O','N','D','A','Y','_','H','O','U','R','_','M','I','C','R',
    'O','S','E','C','O','N','D','A','T','A','B','A','S','E','S','C','A','P',
    'E','D','E','C','I','M','A','L','I','M','I','T','E','R','A','T','E','A',
    'C','H','A','N','G','E','X','I','T','I','N','Y','I','N','T','E','R','V',
    'A','L','U','E','S','C','H','E','M','A','S','T','E','R','_','H','E','A',
    'R','T','B','E','A','T','_','P','E','R','I','O','D','E','C','L','A','R',
    'E','A','D','_','W','R','I','T','E','X','P','L','A','I','N','O','U','T',
    'E','R','E','G','E','X','P','R','O','C','E','D','U','R','E','L','E','A',
    'S','E','N','S','I','T','I','V','E','L','S','E','I','F','O','R','E','I',
    'G','N','O','R','E','_','S','E','R','V','E','R','_','I','D','S','M','A',
    'L','L','I','N','T','E','G','E','R','E','A','L','I','N','E','S','E','P',
    'A','R','A','T','O','R','D','E','R','E','F','E','R','E','N','C','E','S',
    'P','A','T','I','A','L','O','A','D','D','E','L','E','T','E','N','C','L',
    'O','S','E','D','E','S','C','R','I','B','E','F','O','R','E','N','A','M',
    'E','D','I','U','M','I','N','T','O','V','E','R','W','R','I','T','E','X',
    'I','S','T','S','Q','L','S','T','A','T','E','H','O','U','R','_','M','I',
    'N','U','T','E','_','S','E','C','O','N','D','O','U','B','L','E','A','D',
    'I','N','G','R','O','U','P','D','A','T','E','H','O','U','R','_','S','E',
    'C','O','N','D','R','O','P','T','I','M','I','Z','E','B','I','G','I','N',
    'T','1','C','A','S','E','L','E','C','T','A','B','L','E','A','V','E','C',
    'O','N','S','T','R','A','I','N','T','2','M','I','D','D','L','E','I','N',
    'T','3','V','A','R','C','H','A','R','A','C','T','E','R','E','Q','U','I',
    'R','E','S','I','G','N','A','L','O','O','P','T','I','O','N','A','L','L',
    'Y','A','C','C','E','S','S','I','B','L','E','F','T','H','E','N','O','T',
    'I','N','Y','B','L','O','B','E','T','W','E','E','N','O','_','W','R','I',
    'T','E','_','T','O','_','B','I','N','L','O','G','R','A','N','T','I','N',
    'Y','T','E','X','T','R','A','I','L','I','N','G','B','O','T','H','A','V',
    'I','N','G','C','A','S','C','A','D','E','F','A','U','L','T','R','I','G',
    'G','E','R','E','V','O','K','E','Y','S','T','R','A','I','G','H','T','_',
    'J','O','I','N','D','E','X','O','R','L','I','K','E','C','O','L','L','A',
    'T','E','C','R','E','A','T','E','C','U','R','R','E','N','T','_','D','A',
    'T','E','C','U','R','S','O','R','A','N','G','E','D','U','A','L','I','N',
    'E','A','R','E','A','D','S','E','T','R','U','E','F','A','L','S','E','F',
    'E','T','C','H','E','C','K','I','L','L','O','C','A','L','T','I','M','E',
    'S','T','A','M','P','R','E','C','I','S','I','O','N','U','L','L','O','N',
    'G','B','L','O','B','Y','I','N','F','I','L','E','M','A','T','C','H','I',
    'G','H','_','P','R','I','O','R','I','T','Y','M','O','D','I','F','I','E',
    'S','H','O','W','H','E','N','U','M','E','R','I','C','A','L','L','O','N',
    'G','T','E','X','T','O','U','T','F','I','L','E','U','N','D','O','U','T',
    'C','_','D','A','T','E','W','H','E','R','E','P','E','A','T','W','H','I',
    'L','E','W','I','T','H','A','N','A','L','Y','Z','E','A','N','D','E','L',
    'A','Y','E','D','E','T','E','R','M','I','N','I','S','T','I','C','O','L',
    'U','M','N','C','O','N','T','I','N','U','E','C','O','N','V','E','R','T',
    'C','R','O','S','S','K','I','P','_','G','A','P','_','E','V','E','N','T',
    'C','U','R','R','E','N','T','_','T','I','M','E','S','T','A','M','P','U',
    'R','G','E','C','U','R','R','E','N','T','_','U','S','E','R','E','P','L',
    'A','C','E','D','I','S','T','I','N','C','T','R','O','W','D','I','V','A',
    'R','Y','I','N','G','F','O','R','C','E','F','R','O','M','A','S','T','E',
    'R','_','S','S','L','_','V','E','R','I','F','Y','_','S','E','R','V','E',
    'R','_','C','E','R','T','F','U','L','L','T','E','X','T','I','N','N','E',
    'R','E','S','T','R','I','C','T','I','N','S','E','N','S','I','T','I','V',
    'E','I','N','S','E','R','T','M','E','D','I','U','M','B','L','O','B','M',
    'E','D','I','U','M','T','E','X','T','R','E','T','U','R','N','R','I','G',
    'H','T','S','P','E','C','I','F','I','C','S','Q','L','E','X','C','E','P',
    'T','I','O','N','S','Q','L','W','A','R','N','I','N','G','S','Q','L','_',
    'B','I','G','_','R','E','S','U','L','T','S','Q','L','_','C','A','L','C',
    '_','F','O','U','N','D','_','R','O','W','S','Q','L','_','S','M','A','L',
    'L','_','R','E','S','U','L','T','S','T','A','R','T','I','N','G','U','N',
    'I','O','N','U','N','I','Q','U','E','U','N','L','O','C','K','U','N','S',
    'I','G','N','E','D','U','S','A','G','E','U','S','I','N','G','U','T','C',
    '_','T','I','M','E','S','T','A','M','P','R','I','M','A','R','Y','F','L',
    'O','A','T','4','F','L','O','A','T','8','I','N','T','4','I','N','T','8',
    'L','O','W','_','P','R','I','O','R','I','T','Y','R','E','A','D','_','O',
    'N','L','Y','V','A','R','B','I','N','A','R','Y',
  };
  static const unsigned int V60aHash[189] = {
     59, 0, 39, 169, 222, 0, 208, 181, 107, 147, 0, 137, 121,
     0, 114, 190, 175, 11, 4, 172, 0, 76, 89, 0, 41, 177,
     225, 0, 32, 82, 185, 128, 95, 90, 187, 179, 144, 198, 157,
     216, 228, 120, 100, 98, 25, 194, 66, 138, 201, 139, 51, 214,
     209, 2, 218, 3, 213, 162, 191, 178, 0, 80, 134, 0, 211,
     215, 168, 0, 0, 220, 0, 0, 0, 0, 0, 224, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 77, 0, 0, 221, 0, 0, 86, 0, 0, 223, 207, 155,
     87, 141, 199, 0, 205, 73, 48, 217, 202, 206, 18, 145, 93,
     53, 0, 200, 161, 212, 189, 68, 152, 0, 196, 0, 81, 210,
     192, 158, 204, 105, 40, 97, 0, 0, 125, 136, 0, 78, 19,
     0, 226, 170, 219, 150, 113, 174, 57, 0, 184, 1, 167, 122,
     10, 58, 28, 69, 227, 166, 0,
  };
  static const unsigned int V60aNext[228] = {
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  17,   0,
       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  31,   0,  15,
       0,   0,   0,   0,   0,  23,   0,   0,   0,  43,   0,  34,   0,
      27,  46,   0,   0,   0,  14,   0,  38,   0,  61,  30,   0,   0,
       0,   0,   0,  56,   0,   0,  33,  24,   0,  52,   0,   0,   0,
       0,   0,  64,   0,   5,   0,  62,   0,  70,   0,  16,   0,  37,
      67,   0,   0,   0,   0,  60,  45,  35,   0,   0,   0,   0,   7,
     103,  49, 102,  92,  63,   0,  50,   0,   0,  65,   0,  85,  74,
       0,  22,  36,  71,   8,   0,  75, 112,  20,   0,   0, 123,   0,
      91,   0, 111,  83,   0, 126,   0, 106,   0,  79,   0,   0,  99,
     116,  44,  88,   0, 124,   0,   0,  26, 140,  21,  94, 115, 132,
       0,   0,   0, 104, 151, 160, 131,   0,  55,   0, 110,   0,  13,
     165,   6, 130, 143, 127,  42,   0,   0, 142, 163, 101, 117, 118,
     176, 135,   0,  47,   0, 119, 156, 153,   0,  12,   0, 183, 180,
      54,   0, 129, 108,   0, 109,   9, 159, 173,   0, 188, 193,   0,
     182, 148,  72, 133, 186,  96, 195, 154, 146, 203, 164,   0,  84,
       0,   0,   0, 171, 197,  29, 149,
  };
  static const unsigned char V60aLen[228] = {
      15,  18,   2,   9,   7,   5,  10,  10,  18,  10,   8,  16,   9,
       8,   7,   7,   5,   7,   4,   6,   4,   7,   8,   6,   6,   7,
      23,   7,   3,  10,   4,   7,   5,   5,   6,   9,   7,  10,   4,
       6,   7,   3,  17,   6,   2,   8,   7,   4,   5,   9,   5,  10,
       7,   4,   3,   6,   8,   8,   4,   6,   6,   9,   4,   9,   6,
       8,  11,  13,   6,   7,   5,   6,  11,   4,   8,   6,   4,   4,
       6,   5,   5,  10,   3,   4,   9,   4,  12,   7,   9,   4,   7,
       8,   6,   4,  10,   6,  10,   4,   4,   3,   8,   7,  18,   5,
       2,   2,   5,   8,   8,   4,   6,   7,   3,   7,   7,   6,   3,
       4,  13,   4,   5,   3,   5,   4,   7,   6,  12,   6,   5,   4,
       6,   5,   3,   4,   5,   5,   5,   4,  14,   9,   9,   4,   8,
       2,   6,   5,  13,   3,   8,   4,   4,   7,   4,   8,   4,   7,
       3,   4,   8,   5,   6,   5,   4,   7,   3,   7,  13,   2,   6,
       8,   7,   5,  14,  12,  17,   5,  12,   3,   7,  11,   8,   3,
       7,   5,   4,  29,   2,   3,   2,   8,   5,   8,  11,   9,   6,
      10,   4,  10,   6,   5,   8,  12,  10,  14,  19,   3,  16,   3,
       8,   5,   6,   6,   4,   8,   5,   5,  13,   8,   7,   6,   6,
       5,   4,   4,  12,   9,   9,   6,
  };
  static const unsigned short int V60aOffset[228] = {
       0,   9,  12,  23,  31,  36,  38,  47,  51,  68,  77,  81,  96,
      96, 103, 109, 115, 118, 124, 126, 131, 134, 138, 143, 148, 148,
     152, 174, 174, 179, 179, 188, 193, 195, 199, 204, 211, 215, 224,
     224, 229, 229, 233, 233, 236, 249, 254, 260, 263, 267, 274, 278,
     287, 293, 295, 297, 302, 309, 309, 315, 319, 323, 329, 332, 340,
     345, 353, 358, 370, 374, 380, 383, 389, 399, 401, 409, 412, 416,
     418, 423, 426, 431, 438, 438, 442, 448, 452, 452, 455, 455, 463,
     468, 470, 475, 477, 477, 487, 495, 498, 501, 503, 510, 516, 519,
     525, 529, 533, 537, 544, 552, 555, 561, 562, 566, 572, 578, 582,
     582, 585, 594, 596, 600, 602, 603, 607, 614, 620, 632, 637, 642,
     645, 650, 654, 656, 660, 665, 668, 672, 675, 675, 688, 696, 699,
     706, 708, 714, 718, 731, 731, 738, 741, 744, 750, 753, 753, 761,
     761, 768, 772, 780, 783, 789, 794, 798, 805, 807, 813, 821, 825,
     831, 839, 846, 850, 864, 864, 880, 885, 893, 896, 903, 903, 914,
     916, 923, 928, 931, 932, 938, 945, 960, 968, 972, 980, 982, 991,
     997, 1003, 1007, 1017, 1023, 1028, 1036, 1048, 1058, 1072, 1072, 1090, 1096,
     1106, 1114, 1119, 1125, 1127, 1131, 1139, 1144, 1149, 1149, 1161, 1168, 1174,
     1174, 1180, 1184, 1188, 1200, 1209, 1212,
  };
  int h, i;
  if( n<2 ) return 0;
  h = ((charMap(z[0])*4) ^
      (charMap(z[n-1])*3) ^
      n) % 189;
  for(i=((int)V60aHash[h])-1; i>=0; i=((int)V60aNext[i])-1){
    if( V60aLen[i]==n && casecmp(&V60zText[V60aOffset[i]],z,n)==0 ){
      return 1;
    }
  }
  return 0;
}

static gboolean
V60is_keyword (const char *z)
{
	return V60keywordCode(z, strlen (z));
}

