ModSecurity/apache2/libinjection/libinjection_sqli_data.h
2013-05-17 23:41:45 +09:00

3324 lines
53 KiB
C

#ifndef _LIBINJECTION_SQLI_DATA_H
#define _LIBINJECTION_SQLI_DATA_H
#include "libinjection.h"
typedef struct {
const char *word;
char type;
} keyword_t;
static size_t parse_money(sfilter * sf);
static size_t parse_other(sfilter * sf);
static size_t parse_white(sfilter * sf);
static size_t parse_operator1(sfilter *sf);
static size_t parse_char(sfilter *sf);
static size_t parse_eol_comment(sfilter *sf);
static size_t parse_dash(sfilter *sf);
static size_t parse_slash(sfilter *sf);
static size_t parse_backslash(sfilter * sf);
static size_t parse_operator2(sfilter *sf);
static size_t parse_string(sfilter *sf);
static size_t parse_word(sfilter * sf);
static size_t parse_var(sfilter * sf);
static size_t parse_number(sfilter * sf);
static const char* operators2[] = {
"!!",
"!<",
"!=",
"!>",
"!~",
"%=",
"&&",
"&=",
"*=",
"+=",
"-=",
"/=",
":=",
"<<",
"<=",
"<>",
"<@",
">=",
">>",
"@>",
"^=",
"|/",
"|=",
"||",
"~*",
};
static const size_t operators2_sz = 25;
static const keyword_t sql_keywords[] = {
{"ABORT", 'k'},
{"ABS", 'f'},
{"ACCESSIBLE", 'k'},
{"ACOS", 'f'},
{"ADD", 'k'},
{"ADDDATE", 'f'},
{"ADDTIME", 'f'},
{"AES_DECRYPT", 'f'},
{"AES_ENCRYPT", 'f'},
{"AGAINST", 'k'},
{"AGE", 'f'},
{"ALL_USERS", 'k'},
{"ALTER", 'k'},
{"ANALYZE", 'k'},
{"AND", '&'},
{"APPLOCK_MODE", 'f'},
{"APPLOCK_TEST", 'f'},
{"APP_NAME", 'f'},
{"ARRAY_AGG", 'f'},
{"ARRAY_CAT", 'f'},
{"ARRAY_DIM", 'f'},
{"ARRAY_FILL", 'f'},
{"ARRAY_LENGTH", 'f'},
{"ARRAY_LOWER", 'f'},
{"ARRAY_NDIMS", 'f'},
{"ARRAY_PREPEND", 'f'},
{"ARRAY_TO_JSON", 'f'},
{"ARRAY_TO_STRING", 'f'},
{"ARRAY_UPPER", 'f'},
{"AS", 'k'},
{"ASC", 'k'},
{"ASCII", 'f'},
{"ASENSITIVE", 'k'},
{"ASIN", 'f'},
{"ASSEMBLYPROPERTY", 'f'},
{"ASYMKEY_ID", 'f'},
{"ATAN", 'f'},
{"ATAN2", 'f'},
{"AUTOINCREMENT", 'k'},
{"AVG", 'f'},
{"BEFORE", 'k'},
{"BEGIN", 'k'},
{"BENCHMARK", 'f'},
{"BETWEEN", 'k'},
{"BIGINT", 'k'},
{"BIN", 'f'},
{"BINARY", 'k'},
{"BINARY_DOUBLE_INFINITY", '1'},
{"BINARY_DOUBLE_NAN", '1'},
{"BINARY_FLOAT_INFINITY", '1'},
{"BINARY_FLOAT_NAN", '1'},
{"BINBINARY", 'f'},
{"BIT_AND", 'f'},
{"BIT_COUNT", 'f'},
{"BIT_LENGTH", 'f'},
{"BIT_OR", 'f'},
{"BIT_XOR", 'f'},
{"BLOB", 'k'},
{"BOOLEAN", 'k'},
{"BOOL_AND", 'f'},
{"BOOL_OR", 'f'},
{"BOTH", 'k'},
{"BTRIM", 'f'},
{"BY", 'n'},
{"CALL", 'k'},
{"CASCADE", 'k'},
{"CASE", 'o'},
{"CAST", 'f'},
{"CBOOL", 'f'},
{"CBRT", 'f'},
{"CBYTE", 'f'},
{"CCUR", 'f'},
{"CDATE", 'f'},
{"CDBL", 'f'},
{"CEIL", 'f'},
{"CEILING", 'f'},
{"CERTENCODED", 'f'},
{"CERTPRIVATEKEY", 'f'},
{"CERT_ID", 'f'},
{"CERT_PROPERTY", 'f'},
{"CHANGE", 'k'},
{"CHANGES", 'f'},
{"CHAR", 'f'},
{"CHARACTER", 'k'},
{"CHARACTER_LENGTH", 'f'},
{"CHARINDEX", 'f'},
{"CHARSET", 'f'},
{"CHAR_LENGTH", 'f'},
{"CHDIR", 'f'},
{"CHDRIVE", 'f'},
{"CHECK", 'k'},
{"CHECKSUM_AGG", 'f'},
{"CHOOSE", 'f'},
{"CHR", 'f'},
{"CINT", 'f'},
{"CLNG", 'f'},
{"CLOCK_TIMESTAMP", 'f'},
{"COALESCE", 'k'},
{"COERCIBILITY", 'f'},
{"COLLATE", 'k'},
{"COLLATION", 'f'},
{"COLLATIONPROPERTY", 'f'},
{"COLUMN", 'k'},
{"COLUMNPROPERTY", 'f'},
{"COLUMNS_UPDATED", 'f'},
{"COL_LENGTH", 'f'},
{"COL_NAME", 'f'},
{"COMPRESS", 'f'},
{"CONCAT", 'f'},
{"CONCAT_WS", 'f'},
{"CONDITION", 'k'},
{"CONNECTION_ID", 'f'},
{"CONSTRAINT", 'k'},
{"CONTINUE", 'k'},
{"CONV", 'f'},
{"CONVERT", 'f'},
{"CONVERT_FROM", 'f'},
{"CONVERT_TO", 'f'},
{"CONVERT_TZ", 'f'},
{"COS", 'f'},
{"COT", 'f'},
{"COUNT", 'f'},
{"COUNT_BIG", 'k'},
{"CRC32", 'f'},
{"CREATE", 'k'},
{"CROSS", 'n'},
{"CSNG", 'f'},
{"CTXSYS.DRITHSX.SN", 'f'},
{"CUME_DIST", 'f'},
{"CURDATE", 'f'},
{"CURDIR", 'f'},
{"CURRENTUSER", 'f'},
{"CURRENT_DATABASE", 'f'},
{"CURRENT_DATE", 'k'},
{"CURRENT_QUERY", 'f'},
{"CURRENT_SCHEMA", 'f'},
{"CURRENT_SCHEMAS", 'f'},
{"CURRENT_SETTING", 'p'},
{"CURRENT_TIME", 'k'},
{"CURRENT_TIMESTAMP", 'k'},
{"CURRENT_USER", 'k'},
{"CURRVAL", 'f'},
{"CURSOR", 'k'},
{"CURSOR_STATUS", 'f'},
{"CURTIME", 'f'},
{"CVAR", 'f'},
{"DATABASE", 'k'},
{"DATABASEPROPERTYEX", 'f'},
{"DATABASES", 'k'},
{"DATABASE_PRINCIPAL_ID", 'f'},
{"DATALENGTH", 'f'},
{"DATE", 'f'},
{"DATEADD", 'f'},
{"DATEDIFF", 'f'},
{"DATEFROMPARTS", 'f'},
{"DATENAME", 'f'},
{"DATEPART", 'f'},
{"DATESERIAL", 'f'},
{"DATETIME2FROMPARTS", 'f'},
{"DATETIMEFROMPARTS", 'f'},
{"DATETIMEOFFSETFROMPARTS", 'f'},
{"DATEVALUE", 'f'},
{"DATE_ADD", 'f'},
{"DATE_FORMAT", 'f'},
{"DATE_PART", 'f'},
{"DATE_SUB", 'f'},
{"DATE_TRUNC", 'f'},
{"DAVG", 'f'},
{"DAY", 'f'},
{"DAYNAME", 'f'},
{"DAYOFMONTH", 'f'},
{"DAYOFWEEK", 'f'},
{"DAYOFYEAR", 'f'},
{"DAY_HOUR", 'k'},
{"DAY_MICROSECOND", 'k'},
{"DAY_MINUTE", 'k'},
{"DAY_SECOND", 'k'},
{"DBMS_PIPE.RECEIVE_MESSAGE", 'f'},
{"DB_ID", 'f'},
{"DB_NAME", 'f'},
{"DCOUNT", 'f'},
{"DEC", 'k'},
{"DECIMAL", 'k'},
{"DECLARE", 'k'},
{"DECODE", 'f'},
{"DECRYPTBYASMKEY", 'f'},
{"DECRYPTBYCERT", 'f'},
{"DECRYPTBYKEY", 'f'},
{"DECRYPTBYKEYAUTOCERT", 'f'},
{"DECRYPTBYPASSPHRASE", 'f'},
{"DEFAULT", 'k'},
{"DEGREES", 'f'},
{"DELAY", 'k'},
{"DELAYED", 'k'},
{"DELETE", 'k'},
{"DENSE_RANK", 'f'},
{"DESC", 'k'},
{"DESCRIBE", 'k'},
{"DES_DECRYPT", 'f'},
{"DES_ENCRYPT", 'f'},
{"DETERMINISTIC", 'k'},
{"DFIRST", 'f'},
{"DIFFERENCE", 'f'},
{"DISTINCROW", 'k'},
{"DISTINCT", 'k'},
{"DIV", 'o'},
{"DLAST", 'f'},
{"DLOOKUP", 'f'},
{"DMAX", 'f'},
{"DMIN", 'f'},
{"DROP", 'k'},
{"DSUM", 'f'},
{"DUAL", 'k'},
{"EACH", 'k'},
{"ELSE", 'k'},
{"ELSEIF", 'k'},
{"ELT", 'f'},
{"ENCLOSED", 'k'},
{"ENCODE", 'f'},
{"ENCRYPT", 'f'},
{"ENCRYPTBYASMKEY", 'f'},
{"ENCRYPTBYCERT", 'f'},
{"ENCRYPTBYKEY", 'f'},
{"ENCRYPTBYPASSPHRASE", 'f'},
{"ENUM_FIRST", 'f'},
{"ENUM_LAST", 'f'},
{"ENUM_RANGE", 'f'},
{"EOMONTH", 'f'},
{"ESCAPED", 'k'},
{"EVENTDATA", 'f'},
{"EXEC", 'k'},
{"EXECUTE", 'k'},
{"EXISTS", 'k'},
{"EXIT", 'k'},
{"EXP", 'f'},
{"EXPLAIN", 'k'},
{"EXPORT_SET", 'f'},
{"EXTRACT", 'f'},
{"EXTRACTVALUE", 'f'},
{"EXTRACT_VALUE", 'f'},
{"FALSE", '1'},
{"FETCH", 'k'},
{"FIELD", 'f'},
{"FILEDATETIME", 'f'},
{"FILEGROUPPROPERTY", 'f'},
{"FILEGROUP_ID", 'f'},
{"FILEGROUP_NAME", 'f'},
{"FILELEN", 'f'},
{"FILEPROPERTY", 'f'},
{"FILE_ID", 'f'},
{"FILE_IDEX", 'f'},
{"FILE_NAME", 'f'},
{"FIND_IN_SET", 'f'},
{"FIRST_VALUE", 'f'},
{"FLOOR", 'f'},
{"FN_VIRTUALFILESTATS", 'f'},
{"FOR", 'n'},
{"FORCE", 'k'},
{"FOREIGN", 'k'},
{"FORMAT", 'f'},
{"FOUND_ROWS", 'f'},
{"FROM", 'k'},
{"FROM_DAYS", 'f'},
{"FROM_UNIXTIME", 'f'},
{"FULLTEXT", 'k'},
{"FULLTEXTCATALOGPROPERTY", 'f'},
{"FULLTEXTSERVICEPROPERTY", 'f'},
{"GENERATE_SERIES", 'f'},
{"GENERATE_SUBSCRIPTS", 'f'},
{"GETATTR", 'f'},
{"GETDATE", 'f'},
{"GETUTCDATE", 'f'},
{"GET_BIT", 'f'},
{"GET_BYTE", 'f'},
{"GET_FORMAT", 'f'},
{"GET_LOCK", 'f'},
{"GOTO", 'k'},
{"GRANT", 'k'},
{"GREATEST", 'f'},
{"GROUP", 'n'},
{"GROUPING", 'f'},
{"GROUPING_ID", 'f'},
{"GROUP_CONCAT", 'f'},
{"HASHBYTES", 'f'},
{"HAS_PERMS_BY_NAME", 'f'},
{"HAVING", 'k'},
{"HEX", 'f'},
{"HIGH_PRIORITY", 'k'},
{"HOST_NAME", 'f'},
{"HOUR", 'f'},
{"HOUR_MICROSECOND", 'k'},
{"HOUR_MINUTE", 'k'},
{"HOUR_SECOND", 'k'},
{"IDENTIFY", 'f'},
{"IDENT_CURRENT", 'f'},
{"IDENT_INCR", 'f'},
{"IDENT_SEED", 'f'},
{"IF", 'k'},
{"IFF", 'f'},
{"IFNULL", 'f'},
{"IGNORE", 'k'},
{"IIF", 'f'},
{"IN", 'n'},
{"INDEX", 'k'},
{"INDEXKEY_PROPERTY", 'f'},
{"INDEXPROPERTY", 'f'},
{"INDEX_COL", 'f'},
{"INET_ATON", 'f'},
{"INET_NTOA", 'f'},
{"INFILE", 'k'},
{"INITCAP", 'f'},
{"INNER", 'k'},
{"INOUT", 'k'},
{"INSENSITIVE", 'k'},
{"INSERT", 'k'},
{"INSTR", 'f'},
{"INSTRREV", 'f'},
{"INT", 'k'},
{"INT1", 'k'},
{"INT2", 'k'},
{"INT3", 'k'},
{"INT4", 'k'},
{"INT8", 'k'},
{"INTEGER", 'k'},
{"INTERVAL", 'k'},
{"INTO", 'k'},
{"IS", 'o'},
{"ISDATE", 'f'},
{"ISEMPTY", 'f'},
{"ISFINITE", 'f'},
{"ISNULL", 'f'},
{"ISNUMERIC", 'f'},
{"IS_FREE_LOCK", 'f'},
{"IS_MEMBER", 'f'},
{"IS_OBJECTSIGNED", 'f'},
{"IS_ROLEMEMBER", 'f'},
{"IS_SRVROLEMEMBER", 'f'},
{"IS_USED_LOCK", 'f'},
{"ITERATE", 'k'},
{"JOIN", 'k'},
{"JULIANDAY", 'f'},
{"JUSTIFY_DAYS", 'f'},
{"JUSTIFY_HOURS", 'f'},
{"JUSTIFY_INTERVAL", 'f'},
{"KEYS", 'k'},
{"KEY_GUID", 'f'},
{"KEY_ID", 'f'},
{"KILL", 'k'},
{"LAG", 'f'},
{"LASTVAL", 'f'},
{"LAST_INSERT_ID", 'f'},
{"LAST_INSERT_ROWID", 'f'},
{"LAST_VALUE", 'f'},
{"LCASE", 'f'},
{"LEAD", 'f'},
{"LEADING", 'k'},
{"LEAST", 'f'},
{"LEAVE", 'k'},
{"LEFT", 'n'},
{"LENGTH", 'f'},
{"LIKE", 'o'},
{"LIMIT", 'k'},
{"LINEAR", 'k'},
{"LINES", 'k'},
{"LN", 'f'},
{"LOAD", 'k'},
{"LOAD_EXTENSION", 'f'},
{"LOAD_FILE", 'f'},
{"LOCALTIME", 'k'},
{"LOCALTIMESTAMP", 'k'},
{"LOCATE", 'f'},
{"LOCK", 'n'},
{"LOG", 'f'},
{"LOG10", 'f'},
{"LOG2", 'f'},
{"LONGBLOB", 'k'},
{"LONGTEXT", 'k'},
{"LOOP", 'k'},
{"LOWER", 'f'},
{"LOWER_INC", 'f'},
{"LOWER_INF", 'f'},
{"LOW_PRIORITY", 'k'},
{"LPAD", 'f'},
{"LTRIM", 'f'},
{"MAKEDATE", 'f'},
{"MAKE_SET", 'f'},
{"MASKLEN", 'f'},
{"MASTER_BIND", 'k'},
{"MASTER_POS_WAIT", 'f'},
{"MASTER_SSL_VERIFY_SERVER_CERT", 'k'},
{"MATCH", 'k'},
{"MAX", 'f'},
{"MAXVALUE", 'k'},
{"MD5", 'f'},
{"MEDIUMBLOB", 'k'},
{"MEDIUMINT", 'k'},
{"MEDIUMTEXT", 'k'},
{"MERGE", 'k'},
{"MICROSECOND", 'f'},
{"MID", 'f'},
{"MIDDLEINT", 'k'},
{"MIN", 'f'},
{"MINUTE", 'f'},
{"MINUTE_MICROSECOND", 'k'},
{"MINUTE_SECOND", 'k'},
{"MKDIR", 'f'},
{"MOD", 'o'},
{"MODE", 'n'},
{"MODIFIES", 'k'},
{"MONTH", 'f'},
{"MONTHNAME", 'f'},
{"NAME_CONST", 'f'},
{"NATURAL", 'n'},
{"NETMASK", 'f'},
{"NEXTVAL", 'f'},
{"NOT", 'o'},
{"NOTNULL", 'k'},
{"NOW", 'f'},
{"NO_WRITE_TO_BINLOG", 'k'},
{"NTH_VALUE", 'f'},
{"NTILE", 'f'},
{"NULL", '1'},
{"NULLIF", 'f'},
{"NUMERIC", 'k'},
{"NZ", 'f'},
{"OBJECTPROPERTY", 'f'},
{"OBJECTPROPERTYEX", 'f'},
{"OBJECT_DEFINITION", 'f'},
{"OBJECT_ID", 'f'},
{"OBJECT_NAME", 'f'},
{"OBJECT_SCHEMA_NAME", 'f'},
{"OCT", 'f'},
{"OCTET_LENGTH", 'f'},
{"OFFSET", 'k'},
{"OLD_PASSWORD", 'f'},
{"ONE_SHOT", 'k'},
{"OPEN", 'k'},
{"OPENDATASOURCE", 'f'},
{"OPENQUERY", 'f'},
{"OPENROWSET", 'f'},
{"OPENXML", 'f'},
{"OPTIMIZE", 'k'},
{"OPTION", 'k'},
{"OPTIONALLY", 'k'},
{"OR", '&'},
{"ORD", 'f'},
{"ORDER", 'n'},
{"ORIGINAL_DB_NAME", 'f'},
{"ORIGINAL_LOGIN", 'f'},
{"OUT", 'k'},
{"OUTER", 'n'},
{"OUTFILE", 'k'},
{"OVERLAPS", 'f'},
{"OVERLAY", 'f'},
{"OWN3D", 'k'},
{"PARSENAME", 'f'},
{"PARTITION", 'k'},
{"PASSWORD", 'k'},
{"PATHINDEX", 'f'},
{"PATINDEX", 'f'},
{"PERCENTILE_COUNT", 'f'},
{"PERCENTILE_DISC", 'f'},
{"PERCENTILE_RANK", 'f'},
{"PERCENT_RANK", 'f'},
{"PERIOD_ADD", 'f'},
{"PERIOD_DIFF", 'f'},
{"PERMISSIONS", 'f'},
{"PG_ADVISORY_LOCK", 'f'},
{"PG_BACKEND_PID", 'f'},
{"PG_CANCEL_BACKEND", 'f'},
{"PG_CLIENT_ENCODING", 'f'},
{"PG_CONF_LOAD_TIME", 'f'},
{"PG_CREATE_RESTORE_POINT", 'f'},
{"PG_HAS_ROLE", 'f'},
{"PG_IS_IN_RECOVERY", 'f'},
{"PG_IS_OTHER_TEMP_SCHEMA", 'f'},
{"PG_LISTENING_CHANNELS", 'f'},
{"PG_LS_DIR", 'f'},
{"PG_MY_TEMP_SCHEMA", 'f'},
{"PG_POSTMASTER_START_TIME", 'f'},
{"PG_READ_BINARY_FILE", 'f'},
{"PG_READ_FILE", 'f'},
{"PG_RELOAD_CONF", 'f'},
{"PG_ROTATE_LOGFILE", 'f'},
{"PG_SLEEP", 'f'},
{"PG_START_BACKUP", 'f'},
{"PG_STAT_FILE", 'f'},
{"PG_STOP_BACKUP", 'f'},
{"PG_SWITCH_XLOG", 'f'},
{"PG_TERMINATE_BACKEND", 'f'},
{"PG_TRIGGER_DEPTH", 'f'},
{"PI", 'f'},
{"POSITION", 'f'},
{"POW", 'f'},
{"POWER", 'f'},
{"PRECISION", 'k'},
{"PRIMARY", 'k'},
{"PROCEDURE", 'k'},
{"PUBLISHINGSERVERNAME", 'f'},
{"PURGE", 'k'},
{"PWDCOMPARE", 'f'},
{"PWDENCRYPT", 'f'},
{"QUARTER", 'f'},
{"QUOTE", 'f'},
{"QUOTENAME", 'f'},
{"QUOTE_IDENT", 'f'},
{"QUOTE_LITERAL", 'f'},
{"QUOTE_NULLABLE", 'f'},
{"RADIANS", 'f'},
{"RAND", 'f'},
{"RANDOM", 'f'},
{"RANDOMBLOB", 'f'},
{"RANGE", 'k'},
{"RANK", 'f'},
{"READ", 'k'},
{"READS", 'k'},
{"READ_WRITE", 'k'},
{"REAL", 'n'},
{"REFERENCES", 'k'},
{"REGEXP", 'o'},
{"REGEXP_MATCHES", 'f'},
{"REGEXP_REPLACE", 'f'},
{"REGEXP_SPLIT_TO_ARRAY", 'f'},
{"REGEXP_SPLIT_TO_TABLE", 'f'},
{"RELEASE", 'k'},
{"RELEASE_LOCK", 'f'},
{"RENAME", 'k'},
{"REPEAT", 'k'},
{"REPLACE", 'k'},
{"REPLICATE", 'f'},
{"REQUIRE", 'k'},
{"RESIGNAL", 'k'},
{"RESTRICT", 'k'},
{"RETURN", 'k'},
{"REVERSE", 'f'},
{"REVOKE", 'k'},
{"RIGHT", 'n'},
{"RLIKE", 'o'},
{"ROUND", 'f'},
{"ROW", 'f'},
{"ROW_COUNT", 'f'},
{"ROW_NUMBER", 'f'},
{"ROW_TO_JSON", 'f'},
{"RPAD", 'f'},
{"RTRIM", 'f'},
{"SCHAMA_NAME", 'f'},
{"SCHEMA", 'k'},
{"SCHEMAS", 'k'},
{"SCHEMA_ID", 'f'},
{"SCOPE_IDENTITY", 'f'},
{"SECOND_MICROSECOND", 'k'},
{"SEC_TO_TIME", 'f'},
{"SELECT", 'k'},
{"SENSITIVE", 'k'},
{"SEPARATOR", 'k'},
{"SESSION_USER", 'f'},
{"SET", 'k'},
{"SETATTR", 'f'},
{"SETSEED", 'f'},
{"SETVAL", 'f'},
{"SET_BIT", 'f'},
{"SET_BYTE", 'f'},
{"SET_CONFIG", 'f'},
{"SET_MASKLEN", 'f'},
{"SHA", 'f'},
{"SHA1", 'f'},
{"SHA2", 'f'},
{"SHOW", 'n'},
{"SHUTDOWN", 'k'},
{"SIGN", 'f'},
{"SIGNAL", 'k'},
{"SIGNBYASMKEY", 'f'},
{"SIGNBYCERT", 'f'},
{"SIMILAR", 'k'},
{"SIN", 'f'},
{"SLEEP", 'f'},
{"SMALLDATETIMEFROMPARTS", 'f'},
{"SMALLINT", 'k'},
{"SOUNDEX", 'f'},
{"SOUNDS", 'o'},
{"SPACE", 'f'},
{"SPATIAL", 'k'},
{"SPECIFIC", 'k'},
{"SPLIT_PART", 'f'},
{"SQL", 'k'},
{"SQLEXCEPTION", 'k'},
{"SQLSTATE", 'k'},
{"SQLWARNING", 'k'},
{"SQL_BIG_RESULT", 'k'},
{"SQL_CALC_FOUND_ROWS", 'k'},
{"SQL_SMALL_RESULT", 'k'},
{"SQL_VARIANT_PROPERTY", 'f'},
{"SQRT", 'f'},
{"SSL", 'k'},
{"STARTING", 'k'},
{"STATEMENT_TIMESTAMP", 'f'},
{"STATS_DATE", 'f'},
{"STDDEV", 'f'},
{"STDDEV_POP", 'f'},
{"STDDEV_SAMP", 'f'},
{"STRAIGHT_JOIN", 'k'},
{"STRCMP", 'f'},
{"STRCONV", 'f'},
{"STRING_AGG", 'f'},
{"STRING_TO_ARRAY", 'f'},
{"STRPOS", 'f'},
{"STR_TO_DATE", 'f'},
{"STUFF", 'f'},
{"SUBDATE", 'f'},
{"SUBSTR", 'f'},
{"SUBSTRING", 'f'},
{"SUBSTRING_INDEX", 'f'},
{"SUBTIME", 'f'},
{"SUM", 'f'},
{"SUSER_ID", 'f'},
{"SUSER_NAME", 'f'},
{"SUSER_SID", 'f'},
{"SUSER_SNAME", 'f'},
{"SWITCHOFFET", 'f'},
{"SYS.FN_BUILTIN_PERMISSIONS", 'f'},
{"SYS.FN_GET_AUDIT_FILE", 'f'},
{"SYS.FN_MY_PERMISSIONS", 'f'},
{"SYS.STRAGG", 'f'},
{"SYSCOLUMNS", 'k'},
{"SYSDATE", 'f'},
{"SYSDATETIME", 'f'},
{"SYSDATETIMEOFFSET", 'f'},
{"SYSOBJECTS", 'k'},
{"SYSTEM_USER", 'f'},
{"SYSUSERS", 'k'},
{"SYSUTCDATETME", 'f'},
{"TABLE", 'k'},
{"TAN", 'f'},
{"TERMINATED", 'k'},
{"TERTIARY_WEIGHTS", 'f'},
{"TEXTPTR", 'f'},
{"TEXTVALID", 'f'},
{"THEN", 'k'},
{"TIME", 'k'},
{"TIMEDIFF", 'f'},
{"TIMEFROMPARTS", 'f'},
{"TIMEOFDAY", 'f'},
{"TIMESERIAL", 'f'},
{"TIMESTAMP", 'f'},
{"TIMESTAMPADD", 'f'},
{"TIMEVALUE", 'f'},
{"TIME_FORMAT", 'f'},
{"TIME_TO_SEC", 'f'},
{"TINYBLOB", 'k'},
{"TINYINT", 'k'},
{"TINYTEXT", 'k'},
{"TODATETIMEOFFSET", 'f'},
{"TOP", 'k'},
{"TOTAL", 'f'},
{"TOTAL_CHANGES", 'f'},
{"TO_ASCII", 'f'},
{"TO_CHAR", 'f'},
{"TO_DATE", 'f'},
{"TO_DAYS", 'f'},
{"TO_HEX", 'f'},
{"TO_NUMBER", 'f'},
{"TO_SECONDS", 'f'},
{"TO_TIMESTAMP", 'f'},
{"TRAILING", 'n'},
{"TRANSACTION_TIMESTAMP", 'f'},
{"TRANSLATE", 'f'},
{"TRIGGER", 'k'},
{"TRIGGER_NESTLEVEL", 'f'},
{"TRIM", 'f'},
{"TRUE", '1'},
{"TRUNC", 'f'},
{"TRUNCATE", 'f'},
{"TRY_CAST", 'f'},
{"TRY_CONVERT", 'f'},
{"TRY_PARSE", 'f'},
{"TYPEOF", 'f'},
{"TYPEPROPERTY", 'f'},
{"TYPE_ID", 'f'},
{"TYPE_NAME", 'f'},
{"UCASE", 'f'},
{"UNCOMPRESS", 'f'},
{"UNCOMPRESS_LENGTH", 'f'},
{"UNDO", 'k'},
{"UNHEX", 'f'},
{"UNICODE", 'f'},
{"UNION", 'U'},
{"UNIQUE", 'n'},
{"UNIX_TIMESTAMP", 'f'},
{"UNI_ON", 'U'},
{"UNKNOWN", 'k'},
{"UNLOCK", 'k'},
{"UNNEST", 'f'},
{"UNSIGNED", 'k'},
{"UPDATE", 'k'},
{"UPDATEXML", 'f'},
{"UPPER", 'f'},
{"UPPER_INC", 'f'},
{"UPPER_INF", 'f'},
{"USAGE", 'k'},
{"USE", 'k'},
{"USER_ID", 'n'},
{"USER_NAME", 'f'},
{"USING", 'f'},
{"UTC_DATE", 'k'},
{"UTC_TIME", 'k'},
{"UTC_TIMESTAMP", 'k'},
{"UTL_INADDR.GET_HOST_ADDRESS", 'f'},
{"UUID", 'f'},
{"UUID_SHORT", 'f'},
{"VALUES", 'k'},
{"VAR", 'f'},
{"VARBINARY", 'k'},
{"VARCHAR", 'k'},
{"VARCHARACTER", 'k'},
{"VARIANCE", 'f'},
{"VARP", 'f'},
{"VARYING", 'k'},
{"VAR_POP", 'f'},
{"VAR_SAMP", 'f'},
{"VERIFYSIGNEDBYASMKEY", 'f'},
{"VERIFYSIGNEDBYCERT", 'f'},
{"VERSION", 'f'},
{"WAITFOR", 'k'},
{"WEEK", 'f'},
{"WEEKDAY", 'f'},
{"WEEKDAYNAME", 'f'},
{"WEEKOFYEAR", 'f'},
{"WHEN", 'k'},
{"WHERE", 'k'},
{"WHILE", 'k'},
{"WIDTH_BUCKET", 'f'},
{"WITH", 'k'},
{"XMLAGG", 'f'},
{"XMLCOMMENT", 'f'},
{"XMLCONCAT", 'f'},
{"XMLELEMENT", 'f'},
{"XMLEXISTS", 'f'},
{"XMLFOREST", 'f'},
{"XMLFORMAT", 'f'},
{"XMLPI", 'f'},
{"XMLROOT", 'f'},
{"XMLTYPE", 'f'},
{"XML_IS_WELL_FORMED", 'f'},
{"XOR", 'o'},
{"XPATH", 'f'},
{"XPATH_EXISTS", 'f'},
{"XP_EXECRESULTSET", 'k'},
{"YEAR", 'f'},
{"YEARWEEK", 'f'},
{"YEAR_MONTH", 'k'},
{"ZEROBLOB", 'f'},
{"ZEROFILL", 'k'},
};
static const size_t sql_keywords_sz = 752;
static const char* multikeywords_start[] = {
"ALTER",
"AT",
"AT TIME",
"CROSS",
"FULL",
"GROUP",
"IN",
"IN BOOLEAN",
"INTERSECT",
"IS",
"IS DISTINCT",
"IS NOT",
"LEFT",
"LOCK",
"NATURAL",
"NEXT",
"NEXT VALUE",
"NOT",
"NOT SIMILAR",
"ORDER",
"OWN3D",
"READ",
"RIGHT",
"SELECT",
"SIMILAR",
"SOUNDS",
"UNION",
};
static const size_t multikeywords_start_sz = 27;
static const keyword_t multikeywords[] = {
{"ALTER DOMAIN", 'k'},
{"ALTER TABLE", 'k'},
{"AT TIME", 'n'},
{"AT TIME ZONE", 'k'},
{"CROSS JOIN", 'k'},
{"FULL OUTER", 'k'},
{"GROUP BY", 'B'},
{"IN BOOLEAN", 'n'},
{"IN BOOLEAN MODE", 'k'},
{"INTERSECT ALL", 'o'},
{"IS DISTINCT", 'n'},
{"IS DISTINCT FROM", 'k'},
{"IS NOT", 'o'},
{"IS NOT DISTINCT", 'n'},
{"IS NOT DISTINCT FROM", 'k'},
{"LEFT JOIN", 'k'},
{"LEFT OUTER", 'k'},
{"LOCK TABLE", 'k'},
{"LOCK TABLES", 'k'},
{"NATURAL FULL", 'k'},
{"NATURAL INNER", 'k'},
{"NATURAL JOIN", 'k'},
{"NATURAL LEFT", 'k'},
{"NATURAL OUTER", 'k'},
{"NATURAL RIGHT", 'k'},
{"NEXT VALUE", 'n'},
{"NEXT VALUE FOR", 'k'},
{"NOT BETWEEN", 'o'},
{"NOT IN", 'o'},
{"NOT LIKE", 'o'},
{"NOT REGEXP", 'o'},
{"NOT RLIKE", 'o'},
{"NOT SIMILAR", 'o'},
{"NOT SIMILAR TO", 'o'},
{"ORDER BY", 'B'},
{"OWN3D BY", 'B'},
{"READ WRITE", 'k'},
{"RIGHT JOIN", 'k'},
{"RIGHT OUTER", 'k'},
{"SELECT ALL", 'k'},
{"SIMILAR TO", 'o'},
{"SOUNDS LIKE", 'o'},
{"UNION ALL", 'U'},
};
static const size_t multikeywords_sz = 43;
typedef size_t (*pt2Function)(sfilter *sf);
static const pt2Function char_parse_map[] = {
&parse_white, /* 0 */
&parse_white, /* 1 */
&parse_white, /* 2 */
&parse_white, /* 3 */
&parse_white, /* 4 */
&parse_white, /* 5 */
&parse_white, /* 6 */
&parse_white, /* 7 */
&parse_white, /* 8 */
&parse_white, /* 9 */
&parse_white, /* 10 */
&parse_white, /* 11 */
&parse_white, /* 12 */
&parse_white, /* 13 */
&parse_white, /* 14 */
&parse_white, /* 15 */
&parse_white, /* 16 */
&parse_white, /* 17 */
&parse_white, /* 18 */
&parse_white, /* 19 */
&parse_white, /* 20 */
&parse_white, /* 21 */
&parse_white, /* 22 */
&parse_white, /* 23 */
&parse_white, /* 24 */
&parse_white, /* 25 */
&parse_white, /* 26 */
&parse_white, /* 27 */
&parse_white, /* 28 */
&parse_white, /* 29 */
&parse_white, /* 30 */
&parse_white, /* 31 */
&parse_white, /* 32 */
&parse_operator2, /* 33 */
&parse_string, /* 34 */
&parse_eol_comment, /* 35 */
&parse_money, /* 36 */
&parse_operator1, /* 37 */
&parse_operator2, /* 38 */
&parse_string, /* 39 */
&parse_char, /* 40 */
&parse_char, /* 41 */
&parse_operator2, /* 42 */
&parse_operator1, /* 43 */
&parse_char, /* 44 */
&parse_dash, /* 45 */
&parse_number, /* 46 */
&parse_slash, /* 47 */
&parse_number, /* 48 */
&parse_number, /* 49 */
&parse_number, /* 50 */
&parse_number, /* 51 */
&parse_number, /* 52 */
&parse_number, /* 53 */
&parse_number, /* 54 */
&parse_number, /* 55 */
&parse_number, /* 56 */
&parse_number, /* 57 */
&parse_char, /* 58 */
&parse_char, /* 59 */
&parse_operator2, /* 60 */
&parse_operator2, /* 61 */
&parse_operator2, /* 62 */
&parse_other, /* 63 */
&parse_var, /* 64 */
&parse_word, /* 65 */
&parse_word, /* 66 */
&parse_word, /* 67 */
&parse_word, /* 68 */
&parse_word, /* 69 */
&parse_word, /* 70 */
&parse_word, /* 71 */
&parse_word, /* 72 */
&parse_word, /* 73 */
&parse_word, /* 74 */
&parse_word, /* 75 */
&parse_word, /* 76 */
&parse_word, /* 77 */
&parse_word, /* 78 */
&parse_word, /* 79 */
&parse_word, /* 80 */
&parse_word, /* 81 */
&parse_word, /* 82 */
&parse_word, /* 83 */
&parse_word, /* 84 */
&parse_word, /* 85 */
&parse_word, /* 86 */
&parse_word, /* 87 */
&parse_word, /* 88 */
&parse_word, /* 89 */
&parse_word, /* 90 */
&parse_other, /* 91 */
&parse_backslash, /* 92 */
&parse_other, /* 93 */
&parse_operator1, /* 94 */
&parse_word, /* 95 */
&parse_word, /* 96 */
&parse_word, /* 97 */
&parse_word, /* 98 */
&parse_word, /* 99 */
&parse_word, /* 100 */
&parse_word, /* 101 */
&parse_word, /* 102 */
&parse_word, /* 103 */
&parse_word, /* 104 */
&parse_word, /* 105 */
&parse_word, /* 106 */
&parse_word, /* 107 */
&parse_word, /* 108 */
&parse_word, /* 109 */
&parse_word, /* 110 */
&parse_word, /* 111 */
&parse_word, /* 112 */
&parse_word, /* 113 */
&parse_word, /* 114 */
&parse_word, /* 115 */
&parse_word, /* 116 */
&parse_word, /* 117 */
&parse_word, /* 118 */
&parse_word, /* 119 */
&parse_word, /* 120 */
&parse_word, /* 121 */
&parse_word, /* 122 */
&parse_other, /* 123 */
&parse_operator2, /* 124 */
&parse_other, /* 125 */
&parse_operator1, /* 126 */
&parse_white, /* 127 */
};
static const char* sql_fingerprints[] = {
"&1o1U",
"&1osU",
"&1ovU",
"&f()o",
"&f(1)",
"&f(1o",
"&f(s)",
"&f(v)",
"&f(vo",
"&so1U",
"&sosU",
"&sovU",
"&vo1U",
"&vosU",
"&vovU",
"1&((f",
"1&((k",
"1&(1)",
"1&(1,",
"1&(1o",
"1&(f(",
"1&(k(",
"1&(k1",
"1&(kf",
"1&(kk",
"1&(kn",
"1&(ko",
"1&(ks",
"1&(kv",
"1&(s)",
"1&(s,",
"1&(so",
"1&(v)",
"1&(v,",
"1&(vo",
"1&1",
"1&1Bf",
"1&1Uk",
"1&1c",
"1&1f(",
"1&1o(",
"1&1o1",
"1&1of",
"1&1ok",
"1&1on",
"1&1oo",
"1&1os",
"1&1ov",
"1&f((",
"1&f()",
"1&f(1",
"1&f(f",
"1&f(k",
"1&f(n",
"1&f(s",
"1&f(v",
"1&k(1",
"1&k(f",
"1&k(s",
"1&k(v",
"1&k1k",
"1&kUk",
"1&kk1",
"1&kks",
"1&kkv",
"1&ksk",
"1&kvk",
"1&n()",
"1&no1",
"1&nos",
"1&nov",
"1&o(1",
"1&o(s",
"1&o(v",
"1&o1o",
"1&oso",
"1&ovo",
"1&sBf",
"1&sU(",
"1&sUk",
"1&sf(",
"1&so(",
"1&so1",
"1&sof",
"1&sok",
"1&son",
"1&soo",
"1&sos",
"1&sov",
"1&v",
"1&vBf",
"1&vU(",
"1&vUk",
"1&vc",
"1&vf(",
"1&vo(",
"1&vo1",
"1&vof",
"1&vok",
"1&von",
"1&voo",
"1&vos",
"1&vov",
"1)&(1",
"1)&(f",
"1)&(k",
"1)&(n",
"1)&(s",
"1)&(v",
"1)&1B",
"1)&1U",
"1)&1f",
"1)&1o",
"1)&f(",
"1)&o(",
"1)&sB",
"1)&sU",
"1)&sf",
"1)&so",
"1)&vB",
"1)&vU",
"1)&vf",
"1)&vo",
"1)()s",
"1)()v",
"1))&(",
"1))&1",
"1))&f",
"1))&o",
"1))&s",
"1))&v",
"1)))&",
"1))))",
"1)));",
"1)))B",
"1)))U",
"1)))c",
"1)))k",
"1)))o",
"1));c",
"1));k",
"1))B1",
"1))Bs",
"1))Bv",
"1))Uk",
"1))Un",
"1))c",
"1))k1",
"1))kk",
"1))ks",
"1))kv",
"1))o(",
"1))o1",
"1))of",
"1))ok",
"1))on",
"1))os",
"1))ov",
"1),(1",
"1),(s",
"1),(v",
"1);c",
"1);k&",
"1);k(",
"1);kf",
"1);kk",
"1);kn",
"1);ko",
"1)B1",
"1)B1&",
"1)B1c",
"1)B1o",
"1)Bs",
"1)Bs&",
"1)Bsc",
"1)Bso",
"1)Bv",
"1)Bv&",
"1)Bvc",
"1)Bvo",
"1)U(k",
"1)Uk(",
"1)Uk1",
"1)Ukf",
"1)Ukk",
"1)Ukn",
"1)Uko",
"1)Uks",
"1)Ukv",
"1)Unk",
"1)c",
"1)k1",
"1)k1c",
"1)k1o",
"1)kks",
"1)kkv",
"1)knk",
"1)ks",
"1)ksc",
"1)kso",
"1)kv",
"1)kvc",
"1)kvo",
"1)o(1",
"1)o(k",
"1)o(n",
"1)o(s",
"1)o(v",
"1)o1)",
"1)o1B",
"1)o1U",
"1)o1f",
"1)o1k",
"1)o1o",
"1)of(",
"1)ok(",
"1)ok1",
"1)oks",
"1)okv",
"1)on&",
"1)os)",
"1)osB",
"1)osU",
"1)osf",
"1)osk",
"1)oso",
"1)ov)",
"1)ovB",
"1)ovU",
"1)ovf",
"1)ovk",
"1)ovo",
"1,(f(",
"1,(k(",
"1,(k1",
"1,(kf",
"1,(ks",
"1,(kv",
"1,1),",
"1,1)o",
"1,1B1",
"1,1Bs",
"1,1Bv",
"1,1Uk",
"1,f(1",
"1,f(s",
"1,f(v",
"1,s),",
"1,s)o",
"1,sB1",
"1,sBs",
"1,sBv",
"1,sUk",
"1,v),",
"1,v)o",
"1,vB1",
"1,vBs",
"1,vBv",
"1,vUk",
"1;c",
"1;k&k",
"1;k((",
"1;k(1",
"1;k(o",
"1;k(s",
"1;k(v",
"1;k1,",
"1;kf(",
"1;kks",
"1;kkv",
"1;kn(",
"1;kn,",
"1;knc",
"1;ko(",
"1;kok",
"1;ks,",
"1;kv,",
"1B1",
"1B1,1",
"1B1,n",
"1B1,s",
"1B1,v",
"1B1Uk",
"1B1c",
"1B1k1",
"1B1ks",
"1B1kv",
"1Bf(1",
"1Bf(f",
"1Bf(s",
"1Bf(v",
"1Bk(1",
"1Bk(s",
"1Bk(v",
"1Bn,n",
"1Bnk1",
"1Bnks",
"1Bnkv",
"1Bs",
"1Bs,1",
"1Bs,n",
"1Bs,s",
"1Bs,v",
"1BsUk",
"1Bsc",
"1Bsk1",
"1Bsks",
"1Bskv",
"1Bv",
"1Bv,1",
"1Bv,n",
"1Bv,s",
"1Bv,v",
"1BvUk",
"1Bvc",
"1Bvk1",
"1Bvks",
"1Bvkv",
"1U",
"1U((k",
"1U(k1",
"1U(kf",
"1U(kn",
"1U(ks",
"1U(kv",
"1U1,1",
"1U1,s",
"1U1,v",
"1Uc",
"1Uk",
"1Uk(1",
"1Uk(k",
"1Uk(n",
"1Uk(s",
"1Uk(v",
"1Uk1",
"1Uk1,",
"1Uk1c",
"1Uk1f",
"1Uk1k",
"1Uk1n",
"1Uk1o",
"1Ukf",
"1Ukf(",
"1Ukf,",
"1Ukk(",
"1Ukk,",
"1Ukk1",
"1Ukkk",
"1Ukkn",
"1Ukks",
"1Ukkv",
"1Ukn&",
"1Ukn(",
"1Ukn,",
"1Ukn1",
"1Uknc",
"1Uknk",
"1Ukno",
"1Ukns",
"1Uknv",
"1Uko1",
"1Ukok",
"1Ukos",
"1Ukov",
"1Uks",
"1Uks,",
"1Uksc",
"1Uksf",
"1Uksk",
"1Uksn",
"1Ukso",
"1Ukv",
"1Ukv,",
"1Ukvc",
"1Ukvf",
"1Ukvk",
"1Ukvn",
"1Ukvo",
"1Un,1",
"1Un,s",
"1Un,v",
"1Un1,",
"1Unk(",
"1Unk1",
"1Unkf",
"1Unks",
"1Unkv",
"1Uns,",
"1Unv,",
"1Uon1",
"1Uons",
"1Uonv",
"1Us,1",
"1Us,s",
"1Us,v",
"1Uv,1",
"1Uv,s",
"1Uv,v",
"1c",
"1f()k",
"1k1U(",
"1k1Uk",
"1k1c",
"1k1o1",
"1k1ov",
"1kU1,",
"1kUs,",
"1kUv,",
"1kf(1",
"1kf(s",
"1kf(v",
"1kk(1",
"1kk(s",
"1kk(v",
"1kksc",
"1kkvc",
"1knkn",
"1kno1",
"1knov",
"1kokn",
"1ksU(",
"1ksUk",
"1ksc",
"1kvU(",
"1kvUk",
"1kvc",
"1kvo1",
"1kvov",
"1n&f(",
"1n)Uk",
"1nUk1",
"1nUkn",
"1nUks",
"1nUkv",
"1nk1c",
"1nkf(",
"1nksc",
"1nkvc",
"1o(((",
"1o((1",
"1o((f",
"1o((s",
"1o((v",
"1o(1)",
"1o(1o",
"1o(f(",
"1o(k(",
"1o(k1",
"1o(kf",
"1o(kn",
"1o(ks",
"1o(kv",
"1o(n)",
"1o(o1",
"1o(os",
"1o(ov",
"1o(s)",
"1o(so",
"1o(v)",
"1o(vo",
"1o1)&",
"1o1)o",
"1o1Bf",
"1o1Uk",
"1o1f(",
"1o1kf",
"1o1o(",
"1o1o1",
"1o1of",
"1o1oo",
"1o1os",
"1o1ov",
"1of()",
"1of(1",
"1of(f",
"1of(n",
"1of(s",
"1of(v",
"1ok(1",
"1ok(k",
"1ok(s",
"1ok(v",
"1ok)U",
"1ok)o",
"1ok1",
"1ok1,",
"1ok1c",
"1ok1k",
"1okUk",
"1okf(",
"1oks",
"1oks,",
"1oksc",
"1oksk",
"1okv",
"1okv,",
"1okvc",
"1okvk",
"1onos",
"1onov",
"1os)&",
"1os)U",
"1os)o",
"1osBf",
"1osUk",
"1osf(",
"1oskf",
"1oso(",
"1oso1",
"1osof",
"1osoo",
"1osos",
"1osov",
"1ov)&",
"1ov)U",
"1ov)o",
"1ovBf",
"1ovUk",
"1ovf(",
"1ovkf",
"1ovo(",
"1ovo1",
"1ovof",
"1ovoo",
"1ovos",
"1ovov",
";kknc",
"Uk1,1",
"Uk1,f",
"Uk1,n",
"Uk1,s",
"Uk1,v",
"Ukkkn",
"Uks,1",
"Uks,f",
"Uks,n",
"Uks,s",
"Uks,v",
"Ukv,1",
"Ukv,f",
"Ukv,n",
"Ukv,s",
"Ukv,v",
"f((f(",
"f((k(",
"f((kf",
"f()&f",
"f()of",
"f(1)&",
"f(1)U",
"f(1)o",
"f(1,1",
"f(1,f",
"f(1,s",
"f(1,v",
"f(1o1",
"f(1os",
"f(1ov",
"f(f()",
"f(f(1",
"f(f(f",
"f(f(s",
"f(f(v",
"f(k()",
"f(k,(",
"f(k,f",
"f(k,n",
"f(n()",
"f(s)&",
"f(s)U",
"f(s)o",
"f(s,1",
"f(s,f",
"f(s,s",
"f(s,v",
"f(so1",
"f(sos",
"f(sov",
"f(v)&",
"f(v)U",
"f(v)o",
"f(v,1",
"f(v,f",
"f(v,s",
"f(v,v",
"f(vo1",
"f(vos",
"f(vov",
"k()ok",
"k(1)U",
"k(f(1",
"k(f(v",
"k(ok(",
"k(s)U",
"k(sv)",
"k(v)U",
"k(vs)",
"k(vv)",
"k1,1,",
"k1,1c",
"k1,1k",
"k1,f(",
"k1,n,",
"k1,s,",
"k1,sc",
"k1,sk",
"k1,v,",
"k1,vc",
"k1,vk",
"k1k(k",
"k1kf(",
"k1o(s",
"k1o(v",
"k;non",
"kc",
"kf((f",
"kf(1)",
"kf(1,",
"kf(f(",
"kf(n,",
"kf(o)",
"kf(s)",
"kf(s,",
"kf(s:",
"kf(v)",
"kf(v,",
"kf(v:",
"kk(f(",
"kk1f(",
"kk1fn",
"kk1kk",
"kk1nk",
"kk1sf",
"kk1sk",
"kk1sn",
"kk1vf",
"kk1vk",
"kk1vn",
"kksf(",
"kksfn",
"kkskk",
"kksnk",
"kksvk",
"kksvn",
"kkvf(",
"kkvfn",
"kkvkk",
"kkvnk",
"kkvsf",
"kkvsk",
"kkvsn",
"kkvvf",
"kkvvk",
"kkvvn",
"kn1kk",
"kn1sk",
"kn1sn",
"kn1vk",
"kn1vn",
"knk(k",
"knskk",
"knsvk",
"knsvn",
"knvkk",
"knvsk",
"knvsn",
"knvvk",
"knvvn",
"ko(k(",
"ko(kf",
"ko(n,",
"ko(s,",
"ko(v,",
"kok(k",
"ks&(k",
"ks&(o",
"ks)",
"ks,1,",
"ks,1c",
"ks,1k",
"ks,f(",
"ks,s,",
"ks,sc",
"ks,sk",
"ks,v,",
"ks,vc",
"ks,vk",
"ksf(1",
"ksf(s",
"ksf(v",
"ksk(1",
"ksk(k",
"ksk(s",
"ksk(v",
"kso(s",
"kso(v",
"kv&(k",
"kv&(o",
"kv)",
"kv,1,",
"kv,1c",
"kv,1k",
"kv,f(",
"kv,n,",
"kv,s,",
"kv,sc",
"kv,sk",
"kv,v,",
"kv,vc",
"kv,vk",
"kvf(1",
"kvf(s",
"kvf(v",
"kvk(1",
"kvk(k",
"kvk(s",
"kvk(v",
"kvkf(",
"kvo(s",
"kvo(v",
"n&(1)",
"n&(1,",
"n&(k1",
"n&(ks",
"n&(kv",
"n&(o1",
"n&(os",
"n&(ov",
"n&(s)",
"n&(s,",
"n&(v)",
"n&(v,",
"n&1Bf",
"n&1f(",
"n&1o(",
"n&1o1",
"n&1of",
"n&1oo",
"n&1os",
"n&1ov",
"n&f(1",
"n&f(f",
"n&f(s",
"n&f(v",
"n&k(1",
"n&k(s",
"n&k(v",
"n&o1o",
"n&oso",
"n&ovo",
"n&sf(",
"n&so(",
"n&so1",
"n&sof",
"n&soo",
"n&sos",
"n&sov",
"n&vBf",
"n&vf(",
"n&vo(",
"n&vo1",
"n&vof",
"n&voo",
"n&vos",
"n&vov",
"n)&(k",
"n)&1f",
"n)&1o",
"n)&f(",
"n)&sf",
"n)&so",
"n)&vf",
"n)&vo",
"n))&(",
"n))&1",
"n))&f",
"n))&s",
"n))&v",
"n)))&",
"n)));",
"n)))B",
"n)))U",
"n)))c",
"n)))k",
"n)))o",
"n));c",
"n));k",
"n))B1",
"n))Bv",
"n))Uk",
"n))c",
"n))kk",
"n))o(",
"n))o1",
"n))of",
"n))ok",
"n))os",
"n))ov",
"n);c",
"n);k&",
"n);k(",
"n);kf",
"n);kk",
"n);kn",
"n);ko",
"n)B1c",
"n)Bvc",
"n)Uk1",
"n)Ukv",
"n)c",
"n)k1o",
"n)kks",
"n)kkv",
"n)kso",
"n)kvo",
"n)o(k",
"n)o1&",
"n)o1f",
"n)o1o",
"n)of(",
"n)ok(",
"n)os&",
"n)osf",
"n)oso",
"n)ov&",
"n)ovf",
"n)ovo",
"n,(f(",
"n,(k(",
"n,(k1",
"n,(kf",
"n,(ks",
"n,(kv",
"n,f(1",
"n,f(s",
"n,f(v",
"n:o1U",
"n:osU",
"n:ovU",
"n;c",
"n;k&k",
"n;k((",
"n;k(1",
"n;k(s",
"n;k(v",
"n;kf(",
"n;kks",
"n;kkv",
"n;kn(",
"n;ko(",
"n;kok",
"nB1c",
"nBvc",
"nUk(k",
"nUk1,",
"nUk1c",
"nUkf(",
"nUkn,",
"nUks,",
"nUkv,",
"nUkvc",
"nUnk(",
"nc",
"nk1Uk",
"nk1o1",
"nk1ov",
"nkf(1",
"nkf(s",
"nkf(v",
"nkksc",
"nkkvc",
"nksUk",
"nkvUk",
"nkvo1",
"nkvov",
"nnn)U",
"nno1U",
"nnosU",
"nnovU",
"no(k1",
"no(ks",
"no(kv",
"no(o1",
"no(os",
"no(ov",
"no1&1",
"no1&s",
"no1&v",
"no1Uk",
"no1f(",
"no1o(",
"no1of",
"no1oo",
"no1os",
"no1ov",
"nof(1",
"nof(s",
"nof(v",
"nok(1",
"nok(f",
"nok(k",
"nok(s",
"nok(v",
"nono1",
"nonov",
"nos&1",
"nos&s",
"nos&v",
"nosUk",
"nosf(",
"noso(",
"noso1",
"nosof",
"nosoo",
"nosos",
"nosov",
"nov&1",
"nov&s",
"nov&v",
"novUk",
"novf(",
"novo(",
"novo1",
"novof",
"novoo",
"novos",
"novov",
"o1kf(",
"oUk1,",
"oUks,",
"oUkv,",
"oc",
"of()o",
"of(1)",
"of(s)",
"of(v)",
"ok1o1",
"ok1os",
"ok1ov",
"okkkn",
"okso1",
"oksos",
"oksov",
"okvo1",
"okvos",
"okvov",
"ook1,",
"ooks,",
"ookv,",
"oskf(",
"ovkf(",
"s&((f",
"s&((k",
"s&(1)",
"s&(1,",
"s&(1o",
"s&(f(",
"s&(k(",
"s&(k)",
"s&(k1",
"s&(kc",
"s&(kf",
"s&(kk",
"s&(kn",
"s&(ko",
"s&(ks",
"s&(kv",
"s&(s)",
"s&(s,",
"s&(so",
"s&(v)",
"s&(v,",
"s&(vo",
"s&1",
"s&1Bf",
"s&1Uk",
"s&1c",
"s&1f(",
"s&1o(",
"s&1o1",
"s&1of",
"s&1ok",
"s&1on",
"s&1oo",
"s&1os",
"s&1ov",
"s&f((",
"s&f()",
"s&f(1",
"s&f(f",
"s&f(k",
"s&f(n",
"s&f(s",
"s&f(v",
"s&k&s",
"s&k&v",
"s&k(1",
"s&k(f",
"s&k(o",
"s&k(s",
"s&k(v",
"s&k1k",
"s&k1o",
"s&kUk",
"s&kc",
"s&kk1",
"s&kks",
"s&kkv",
"s&knk",
"s&ko(",
"s&ko1",
"s&kok",
"s&kos",
"s&kov",
"s&ksk",
"s&kso",
"s&kvk",
"s&kvo",
"s&n&s",
"s&n&v",
"s&n()",
"s&no1",
"s&nos",
"s&nov",
"s&o(1",
"s&o(k",
"s&o(s",
"s&o(v",
"s&o1o",
"s&okc",
"s&oko",
"s&os",
"s&oso",
"s&ov",
"s&ovo",
"s&s",
"s&s:o",
"s&sBf",
"s&sU(",
"s&sUk",
"s&sc",
"s&sf(",
"s&so(",
"s&so1",
"s&sof",
"s&sok",
"s&son",
"s&soo",
"s&sos",
"s&sov",
"s&svo",
"s&v",
"s&v:o",
"s&vBf",
"s&vU(",
"s&vUk",
"s&vc",
"s&vf(",
"s&vo(",
"s&vo1",
"s&vof",
"s&vok",
"s&von",
"s&voo",
"s&vos",
"s&vov",
"s&vso",
"s&vvo",
"s(c",
"s)&(1",
"s)&(f",
"s)&(k",
"s)&(n",
"s)&(s",
"s)&(v",
"s)&1B",
"s)&1U",
"s)&1f",
"s)&1o",
"s)&f(",
"s)&o(",
"s)&sB",
"s)&sU",
"s)&sf",
"s)&so",
"s)&vB",
"s)&vU",
"s)&vf",
"s)&vo",
"s)()s",
"s)()v",
"s))&(",
"s))&1",
"s))&f",
"s))&n",
"s))&o",
"s))&s",
"s))&v",
"s)))&",
"s))))",
"s)));",
"s)))B",
"s)))U",
"s)))c",
"s)))k",
"s)))o",
"s));c",
"s));k",
"s))B1",
"s))Bs",
"s))Bv",
"s))Uk",
"s))Un",
"s))c",
"s))k1",
"s))kk",
"s))ks",
"s))kv",
"s))o(",
"s))o1",
"s))of",
"s))ok",
"s))on",
"s))os",
"s))ov",
"s),(1",
"s),(s",
"s),(v",
"s);c",
"s);k&",
"s);k(",
"s);kf",
"s);kk",
"s);kn",
"s);ko",
"s)B1",
"s)B1&",
"s)B1c",
"s)B1o",
"s)Bs",
"s)Bs&",
"s)Bsc",
"s)Bso",
"s)Bv",
"s)Bv&",
"s)Bvc",
"s)Bvo",
"s)U(k",
"s)Uk(",
"s)Uk1",
"s)Ukf",
"s)Ukk",
"s)Ukn",
"s)Uko",
"s)Uks",
"s)Ukv",
"s)Unk",
"s)c",
"s)k1",
"s)k1c",
"s)k1o",
"s)kks",
"s)kkv",
"s)ks",
"s)ksc",
"s)kso",
"s)kv",
"s)kvc",
"s)kvo",
"s)o(1",
"s)o(k",
"s)o(n",
"s)o(s",
"s)o(v",
"s)o1B",
"s)o1U",
"s)o1f",
"s)o1k",
"s)o1o",
"s)of(",
"s)ok(",
"s)ok1",
"s)oks",
"s)okv",
"s)on&",
"s)os)",
"s)osB",
"s)osU",
"s)osf",
"s)osk",
"s)oso",
"s)ov)",
"s)ovB",
"s)ovU",
"s)ovf",
"s)ovk",
"s)ovo",
"s,(f(",
"s,(k(",
"s,(k1",
"s,(kf",
"s,(ks",
"s,(kv",
"s,1),",
"s,1)o",
"s,1B1",
"s,1Bs",
"s,1Bv",
"s,1Uk",
"s,f(1",
"s,f(s",
"s,f(v",
"s,s),",
"s,s)o",
"s,sB1",
"s,sBs",
"s,sBv",
"s,sUk",
"s,v),",
"s,v)o",
"s,vB1",
"s,vBs",
"s,vBv",
"s,vUk",
"s:o1)",
"s:os)",
"s:ov)",
"s;c",
"s;k&k",
"s;k((",
"s;k(1",
"s;k(o",
"s;k(s",
"s;k(v",
"s;k1,",
"s;k1o",
"s;k;",
"s;k[k",
"s;k[n",
"s;kf(",
"s;kkn",
"s;kks",
"s;kkv",
"s;kn(",
"s;kn,",
"s;knc",
"s;knk",
"s;knn",
"s;ko(",
"s;kok",
"s;ks,",
"s;ksc",
"s;ksk",
"s;kso",
"s;kv,",
"s;kvc",
"s;kvk",
"s;kvo",
"s;n:k",
"sB1",
"sB1&s",
"sB1&v",
"sB1,1",
"sB1,n",
"sB1,s",
"sB1,v",
"sB1Uk",
"sB1c",
"sB1k1",
"sB1ks",
"sB1kv",
"sB1os",
"sB1ov",
"sBf(1",
"sBf(f",
"sBf(s",
"sBf(v",
"sBk(1",
"sBk(s",
"sBk(v",
"sBn,n",
"sBnk1",
"sBnks",
"sBnkv",
"sBs",
"sBs&s",
"sBs&v",
"sBs,1",
"sBs,n",
"sBs,s",
"sBs,v",
"sBsUk",
"sBsc",
"sBsk1",
"sBsks",
"sBskv",
"sBsos",
"sBsov",
"sBv",
"sBv&s",
"sBv&v",
"sBv,1",
"sBv,n",
"sBv,s",
"sBv,v",
"sBvUk",
"sBvc",
"sBvk1",
"sBvks",
"sBvkv",
"sBvos",
"sBvov",
"sU((k",
"sU(k(",
"sU(k1",
"sU(kf",
"sU(kk",
"sU(kn",
"sU(ks",
"sU(kv",
"sU1,1",
"sU1,s",
"sU1,v",
"sUc",
"sUk",
"sUk(1",
"sUk(k",
"sUk(n",
"sUk(s",
"sUk(v",
"sUk1",
"sUk1&",
"sUk1,",
"sUk1c",
"sUk1f",
"sUk1k",
"sUk1n",
"sUk1o",
"sUkf",
"sUkf(",
"sUkf,",
"sUkk(",
"sUkk,",
"sUkk1",
"sUkkk",
"sUkkn",
"sUkks",
"sUkkv",
"sUkn&",
"sUkn(",
"sUkn,",
"sUkn1",
"sUknc",
"sUknk",
"sUkno",
"sUkns",
"sUknv",
"sUko1",
"sUkok",
"sUkos",
"sUkov",
"sUks",
"sUks&",
"sUks,",
"sUksc",
"sUksf",
"sUksk",
"sUksn",
"sUkso",
"sUkv",
"sUkv&",
"sUkv,",
"sUkvc",
"sUkvf",
"sUkvk",
"sUkvn",
"sUkvo",
"sUn(k",
"sUn,1",
"sUn,s",
"sUn,v",
"sUn1,",
"sUnk(",
"sUnk1",
"sUnkf",
"sUnks",
"sUnkv",
"sUno1",
"sUnos",
"sUnov",
"sUns,",
"sUnv,",
"sUon1",
"sUons",
"sUonv",
"sUs,1",
"sUs,s",
"sUs,v",
"sUv,1",
"sUv,s",
"sUv,v",
"sc",
"sf()k",
"sf(1)",
"sf(n,",
"sf(s)",
"sf(v)",
"sk)&(",
"sk)&1",
"sk)&f",
"sk)&s",
"sk)&v",
"sk);k",
"sk)B1",
"sk)Bs",
"sk)Bv",
"sk)Uk",
"sk)Un",
"sk)k1",
"sk)kk",
"sk)ks",
"sk)kv",
"sk)o(",
"sk)o1",
"sk)of",
"sk)ok",
"sk)os",
"sk)ov",
"sk1&1",
"sk1&s",
"sk1&v",
"sk1U(",
"sk1Uk",
"sk1c",
"sk1o1",
"sk1os",
"sk1ov",
"skU1,",
"skUs,",
"skUv,",
"skf(1",
"skf(s",
"skf(v",
"skk(1",
"skk(s",
"skk(v",
"skks",
"skksc",
"skkv",
"skkvc",
"sknkn",
"sks&1",
"sks&s",
"sks&v",
"sksU(",
"sksUk",
"sksc",
"skso1",
"sksos",
"sksov",
"skv&1",
"skv&s",
"skv&v",
"skvU(",
"skvUk",
"skvc",
"skvo1",
"skvos",
"skvov",
"sn&f(",
"sn,f(",
"snUk1",
"snUkn",
"snUks",
"snUkv",
"snk1c",
"snkf(",
"snksc",
"snkvc",
"sno(s",
"sno(v",
"sno1U",
"snosU",
"snovU",
"so(((",
"so((1",
"so((f",
"so((k",
"so((s",
"so((v",
"so(1)",
"so(1o",
"so(f(",
"so(k(",
"so(k)",
"so(k1",
"so(kc",
"so(kf",
"so(kk",
"so(kn",
"so(ko",
"so(ks",
"so(kv",
"so(n)",
"so(o1",
"so(os",
"so(ov",
"so(s)",
"so(so",
"so(v)",
"so(vo",
"so1&1",
"so1&o",
"so1&s",
"so1&v",
"so1)&",
"so1)o",
"so1Bf",
"so1Uk",
"so1c",
"so1f(",
"so1kf",
"so1o(",
"so1o1",
"so1of",
"so1ok",
"so1oo",
"so1os",
"so1ov",
"sof()",
"sof(1",
"sof(f",
"sof(k",
"sof(n",
"sof(s",
"sof(v",
"sok&s",
"sok&v",
"sok(1",
"sok(k",
"sok(o",
"sok(s",
"sok(v",
"sok1",
"sok1,",
"sok1c",
"sok1k",
"sok1o",
"sokUk",
"sokc",
"sokf(",
"sokn,",
"soknk",
"soko(",
"soko1",
"sokok",
"sokos",
"sokov",
"soks",
"soks,",
"soksc",
"soksk",
"sokso",
"sokv",
"sokv,",
"sokvc",
"sokvk",
"sokvo",
"sonk1",
"sonks",
"sonkv",
"sonos",
"sonov",
"sos",
"sos&(",
"sos&1",
"sos&o",
"sos&s",
"sos&v",
"sos)&",
"sos)o",
"sos:o",
"sosBf",
"sosUk",
"sosc",
"sosf(",
"soskf",
"soso(",
"soso1",
"sosof",
"sosok",
"sosoo",
"sosos",
"sosov",
"sosvo",
"sov",
"sov&(",
"sov&1",
"sov&o",
"sov&s",
"sov&v",
"sov)&",
"sov)o",
"sov:o",
"sovBf",
"sovUk",
"sovc",
"sovf(",
"sovkf",
"sovo(",
"sovo1",
"sovof",
"sovok",
"sovoo",
"sovos",
"sovov",
"sovso",
"sovvo",
"v&((f",
"v&((k",
"v&(1)",
"v&(1,",
"v&(1o",
"v&(f(",
"v&(k(",
"v&(k)",
"v&(k1",
"v&(kc",
"v&(kf",
"v&(kk",
"v&(kn",
"v&(ko",
"v&(ks",
"v&(kv",
"v&(s)",
"v&(s,",
"v&(so",
"v&(v)",
"v&(v,",
"v&(vo",
"v&1",
"v&1Bf",
"v&1Uk",
"v&1c",
"v&1f(",
"v&1o(",
"v&1o1",
"v&1of",
"v&1ok",
"v&1on",
"v&1oo",
"v&1os",
"v&1ov",
"v&f((",
"v&f()",
"v&f(1",
"v&f(f",
"v&f(k",
"v&f(n",
"v&f(s",
"v&f(v",
"v&k&s",
"v&k&v",
"v&k(1",
"v&k(f",
"v&k(o",
"v&k(s",
"v&k(v",
"v&k1k",
"v&k1o",
"v&kUk",
"v&kc",
"v&kk1",
"v&kks",
"v&kkv",
"v&knk",
"v&ko(",
"v&ko1",
"v&kok",
"v&kos",
"v&kov",
"v&ksk",
"v&kso",
"v&kvk",
"v&kvo",
"v&n&s",
"v&n&v",
"v&n()",
"v&no1",
"v&nos",
"v&nov",
"v&o(1",
"v&o(k",
"v&o(s",
"v&o(v",
"v&o1o",
"v&okc",
"v&oko",
"v&os",
"v&oso",
"v&ov",
"v&ovo",
"v&s",
"v&s:o",
"v&sBf",
"v&sU(",
"v&sUk",
"v&sc",
"v&sf(",
"v&so(",
"v&so1",
"v&sof",
"v&sok",
"v&son",
"v&soo",
"v&sos",
"v&sov",
"v&svo",
"v&v",
"v&v:o",
"v&vBf",
"v&vU(",
"v&vUk",
"v&vc",
"v&vf(",
"v&vo(",
"v&vo1",
"v&vof",
"v&vok",
"v&von",
"v&voo",
"v&vos",
"v&vov",
"v&vso",
"v&vvo",
"v(c",
"v)&(1",
"v)&(f",
"v)&(k",
"v)&(n",
"v)&(s",
"v)&(v",
"v)&1B",
"v)&1U",
"v)&1f",
"v)&1o",
"v)&f(",
"v)&o(",
"v)&sB",
"v)&sU",
"v)&sf",
"v)&so",
"v)&vB",
"v)&vU",
"v)&vf",
"v)&vo",
"v)()s",
"v)()v",
"v))&(",
"v))&1",
"v))&f",
"v))&n",
"v))&o",
"v))&s",
"v))&v",
"v)))&",
"v))))",
"v)));",
"v)))B",
"v)))U",
"v)))c",
"v)))k",
"v)))o",
"v));c",
"v));k",
"v))B1",
"v))Bs",
"v))Bv",
"v))Uk",
"v))Un",
"v))c",
"v))k1",
"v))kk",
"v))ks",
"v))kv",
"v))o(",
"v))o1",
"v))of",
"v))ok",
"v))on",
"v))os",
"v))ov",
"v),(1",
"v),(s",
"v),(v",
"v);c",
"v);k&",
"v);k(",
"v);kf",
"v);kk",
"v);kn",
"v);ko",
"v)B1",
"v)B1&",
"v)B1c",
"v)B1o",
"v)Bs",
"v)Bs&",
"v)Bsc",
"v)Bso",
"v)Bv",
"v)Bv&",
"v)Bvc",
"v)Bvo",
"v)U(k",
"v)Uk(",
"v)Uk1",
"v)Ukf",
"v)Ukk",
"v)Ukn",
"v)Uko",
"v)Uks",
"v)Ukv",
"v)Unk",
"v)c",
"v)k1",
"v)k1c",
"v)k1o",
"v)kks",
"v)kkv",
"v)knk",
"v)ks",
"v)ksc",
"v)kso",
"v)kv",
"v)kvc",
"v)kvo",
"v)o(1",
"v)o(k",
"v)o(n",
"v)o(s",
"v)o(v",
"v)o1)",
"v)o1B",
"v)o1U",
"v)o1f",
"v)o1k",
"v)o1o",
"v)of(",
"v)ok(",
"v)ok1",
"v)oks",
"v)okv",
"v)on&",
"v)os)",
"v)osB",
"v)osU",
"v)osf",
"v)osk",
"v)oso",
"v)ov)",
"v)ovB",
"v)ovU",
"v)ovf",
"v)ovk",
"v)ovo",
"v,(f(",
"v,(k(",
"v,(k1",
"v,(kf",
"v,(ks",
"v,(kv",
"v,1),",
"v,1)o",
"v,1B1",
"v,1Bs",
"v,1Bv",
"v,1Uk",
"v,f(1",
"v,f(s",
"v,f(v",
"v,s),",
"v,s)o",
"v,sB1",
"v,sBs",
"v,sBv",
"v,sUk",
"v,v),",
"v,v)o",
"v,vB1",
"v,vBs",
"v,vBv",
"v,vUk",
"v:o1)",
"v:os)",
"v:ov)",
"v;c",
"v;k&k",
"v;k((",
"v;k(1",
"v;k(o",
"v;k(s",
"v;k(v",
"v;k1,",
"v;k1o",
"v;k;",
"v;k[k",
"v;k[n",
"v;kf(",
"v;kkn",
"v;kks",
"v;kkv",
"v;kn(",
"v;kn,",
"v;knc",
"v;knk",
"v;knn",
"v;ko(",
"v;kok",
"v;ks,",
"v;ksc",
"v;ksk",
"v;kso",
"v;kv,",
"v;kvc",
"v;kvk",
"v;kvo",
"v;n:k",
"vB1",
"vB1&s",
"vB1&v",
"vB1,1",
"vB1,n",
"vB1,s",
"vB1,v",
"vB1Uk",
"vB1c",
"vB1k1",
"vB1ks",
"vB1kv",
"vB1os",
"vB1ov",
"vBf(1",
"vBf(f",
"vBf(s",
"vBf(v",
"vBk(1",
"vBk(s",
"vBk(v",
"vBn,n",
"vBnk1",
"vBnks",
"vBnkv",
"vBs",
"vBs&s",
"vBs&v",
"vBs,1",
"vBs,n",
"vBs,s",
"vBs,v",
"vBsUk",
"vBsc",
"vBsk1",
"vBsks",
"vBskv",
"vBsos",
"vBsov",
"vBv",
"vBv&s",
"vBv&v",
"vBv,1",
"vBv,n",
"vBv,s",
"vBv,v",
"vBvUk",
"vBvc",
"vBvk1",
"vBvks",
"vBvkv",
"vBvos",
"vBvov",
"vU",
"vU((k",
"vU(k(",
"vU(k1",
"vU(kf",
"vU(kk",
"vU(kn",
"vU(ks",
"vU(kv",
"vU1,1",
"vU1,s",
"vU1,v",
"vUc",
"vUk",
"vUk(1",
"vUk(k",
"vUk(n",
"vUk(s",
"vUk(v",
"vUk1",
"vUk1&",
"vUk1,",
"vUk1c",
"vUk1f",
"vUk1k",
"vUk1n",
"vUk1o",
"vUkf",
"vUkf(",
"vUkf,",
"vUkk(",
"vUkk,",
"vUkk1",
"vUkkk",
"vUkkn",
"vUkks",
"vUkkv",
"vUkn&",
"vUkn(",
"vUkn,",
"vUkn1",
"vUknc",
"vUknk",
"vUkno",
"vUkns",
"vUknv",
"vUko1",
"vUkok",
"vUkos",
"vUkov",
"vUks",
"vUks&",
"vUks,",
"vUksc",
"vUksf",
"vUksk",
"vUksn",
"vUkso",
"vUkv",
"vUkv&",
"vUkv,",
"vUkvc",
"vUkvf",
"vUkvk",
"vUkvn",
"vUkvo",
"vUn(k",
"vUn,1",
"vUn,s",
"vUn,v",
"vUn1,",
"vUnk(",
"vUnk1",
"vUnkf",
"vUnks",
"vUnkv",
"vUno1",
"vUnos",
"vUnov",
"vUns,",
"vUnv,",
"vUon1",
"vUons",
"vUonv",
"vUs,1",
"vUs,s",
"vUs,v",
"vUv,1",
"vUv,s",
"vUv,v",
"vc",
"vf()k",
"vf(1)",
"vf(n,",
"vf(s)",
"vf(v)",
"vk)&(",
"vk)&1",
"vk)&f",
"vk)&s",
"vk)&v",
"vk);k",
"vk)B1",
"vk)Bs",
"vk)Bv",
"vk)Uk",
"vk)Un",
"vk)k1",
"vk)kk",
"vk)ks",
"vk)kv",
"vk)o(",
"vk)o1",
"vk)of",
"vk)ok",
"vk)os",
"vk)ov",
"vk1&1",
"vk1&s",
"vk1&v",
"vk1U(",
"vk1Uk",
"vk1c",
"vk1o1",
"vk1os",
"vk1ov",
"vkU1,",
"vkUs,",
"vkUv,",
"vkf(1",
"vkf(s",
"vkf(v",
"vkk(1",
"vkk(s",
"vkk(v",
"vkks",
"vkksc",
"vkkv",
"vkkvc",
"vknkn",
"vkno1",
"vknov",
"vkokn",
"vks&1",
"vks&s",
"vks&v",
"vksU(",
"vksUk",
"vksc",
"vkso1",
"vksos",
"vksov",
"vkv&1",
"vkv&s",
"vkv&v",
"vkvU(",
"vkvUk",
"vkvc",
"vkvo1",
"vkvos",
"vkvov",
"vn&f(",
"vn)Uk",
"vn,f(",
"vnUk1",
"vnUkn",
"vnUks",
"vnUkv",
"vnk1c",
"vnkf(",
"vnksc",
"vnkvc",
"vno(s",
"vno(v",
"vno1U",
"vnosU",
"vnovU",
"vo(((",
"vo((1",
"vo((f",
"vo((k",
"vo((s",
"vo((v",
"vo(1)",
"vo(1o",
"vo(f(",
"vo(k(",
"vo(k)",
"vo(k1",
"vo(kc",
"vo(kf",
"vo(kk",
"vo(kn",
"vo(ko",
"vo(ks",
"vo(kv",
"vo(n)",
"vo(o1",
"vo(os",
"vo(ov",
"vo(s)",
"vo(so",
"vo(v)",
"vo(vo",
"vo1&1",
"vo1&o",
"vo1&s",
"vo1&v",
"vo1)&",
"vo1)o",
"vo1Bf",
"vo1Uk",
"vo1c",
"vo1f(",
"vo1kf",
"vo1o(",
"vo1o1",
"vo1of",
"vo1ok",
"vo1oo",
"vo1os",
"vo1ov",
"vof()",
"vof(1",
"vof(f",
"vof(k",
"vof(n",
"vof(s",
"vof(v",
"vok&s",
"vok&v",
"vok(1",
"vok(k",
"vok(o",
"vok(s",
"vok(v",
"vok)U",
"vok)o",
"vok1",
"vok1,",
"vok1c",
"vok1k",
"vok1o",
"vokUk",
"vokc",
"vokf(",
"vokn,",
"voknk",
"voko(",
"voko1",
"vokok",
"vokos",
"vokov",
"voks",
"voks,",
"voksc",
"voksk",
"vokso",
"vokv",
"vokv,",
"vokvc",
"vokvk",
"vokvo",
"vonk1",
"vonks",
"vonkv",
"vono1",
"vonos",
"vonov",
"vos",
"vos&(",
"vos&1",
"vos&o",
"vos&s",
"vos&v",
"vos)&",
"vos)U",
"vos)o",
"vos:o",
"vosBf",
"vosUk",
"vosc",
"vosf(",
"voskf",
"voso(",
"voso1",
"vosof",
"vosok",
"vosoo",
"vosos",
"vosov",
"vosvo",
"vov",
"vov&(",
"vov&1",
"vov&o",
"vov&s",
"vov&v",
"vov)&",
"vov)U",
"vov)o",
"vov:o",
"vovBf",
"vovUk",
"vovc",
"vovf(",
"vovkf",
"vovo(",
"vovo1",
"vovof",
"vovok",
"vovoo",
"vovos",
"vovov",
"vovso",
"vovvo",
};
static const size_t sqli_fingerprints_sz = 2298;
#endif