All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser Maven / Gradle / Ivy

// Generated from org/apache/shardingsphere/sql/parser/autogen/MySQLStatement.g4 by ANTLR 4.10.1
package org.apache.shardingsphere.sql.parser.autogen;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.misc.*;
import org.antlr.v4.runtime.tree.*;
import java.util.List;
import java.util.Iterator;
import java.util.ArrayList;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class MySQLStatementParser extends Parser {
	static { RuntimeMetaData.checkVersion("4.10.1", RuntimeMetaData.VERSION); }

	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		T__0=1, T__1=2, BLOCK_COMMENT=3, INLINE_COMMENT=4, AND_=5, OR_=6, NOT_=7, 
		TILDE_=8, VERTICAL_BAR_=9, AMPERSAND_=10, SIGNED_LEFT_SHIFT_=11, SIGNED_RIGHT_SHIFT_=12, 
		CARET_=13, MOD_=14, COLON_=15, PLUS_=16, MINUS_=17, ASTERISK_=18, SLASH_=19, 
		BACKSLASH_=20, DOT_=21, DOT_ASTERISK_=22, SAFE_EQ_=23, DEQ_=24, EQ_=25, 
		NEQ_=26, GT_=27, GTE_=28, LT_=29, LTE_=30, POUND_=31, LP_=32, RP_=33, 
		LBE_=34, RBE_=35, LBT_=36, RBT_=37, COMMA_=38, DQ_=39, SQ_=40, BQ_=41, 
		QUESTION_=42, AT_=43, SEMI_=44, ASSIGNMENT_=45, JSON_SEPARATOR=46, JSON_UNQUOTED_SEPARATOR=47, 
		WS=48, MAX=49, MIN=50, SUM=51, COUNT=52, GROUP_CONCAT=53, CAST=54, POSITION=55, 
		SUBSTRING=56, SUBSTR=57, EXTRACT=58, TRIM=59, LAST_DAY=60, TRADITIONAL=61, 
		TREE=62, MYSQL_MAIN=63, MYSQL_ADMIN=64, INSTANT=65, INPLACE=66, COPY=67, 
		UL_BINARY=68, AUTOCOMMIT=69, INNODB=70, REDO_LOG=71, DELIMITER=72, FOR_GENERATOR=73, 
		ACCESSIBLE=74, ACCOUNT=75, ACTION=76, ACTIVE=77, ADD=78, ADMIN=79, AFTER=80, 
		AGAINST=81, AGGREGATE=82, ALGORITHM=83, ALL=84, ALTER=85, ALWAYS=86, ANALYZE=87, 
		AND=88, ANY=89, ARRAY=90, AS=91, ASC=92, ASCII=93, ASENSITIVE=94, AT=95, 
		ATTRIBUTE=96, AUTOEXTEND_SIZE=97, AUTO_INCREMENT=98, AVG=99, BIT_XOR=100, 
		AVG_ROW_LENGTH=101, BACKUP=102, BEFORE=103, BEGIN=104, BETWEEN=105, BIGINT=106, 
		BINARY=107, BINLOG=108, BIT=109, BLOB=110, BLOCK=111, BOOL=112, BOOLEAN=113, 
		BOTH=114, BTREE=115, BUCKETS=116, BY=117, BYTE=118, CACHE=119, CALL=120, 
		CASCADE=121, CASCADED=122, CASE=123, CATALOG_NAME=124, CHAIN=125, CHANGE=126, 
		CHANGED=127, CHANNEL=128, CHAR=129, CHARACTER=130, CHARSET=131, CHECK=132, 
		CHECKSUM=133, CIPHER=134, CLASS_ORIGIN=135, CLIENT=136, CLONE=137, CLOSE=138, 
		COALESCE=139, CODE=140, COLLATE=141, COLLATION=142, COLUMN=143, COLUMNS=144, 
		COLUMN_FORMAT=145, COLUMN_NAME=146, COMMENT=147, COMMIT=148, COMMITTED=149, 
		COMPACT=150, COMPLETION=151, COMPONENT=152, COMPRESSED=153, COMPRESSION=154, 
		CONCURRENT=155, CONDITION=156, CONNECTION=157, CONSISTENT=158, CONSTRAINT=159, 
		CONSTRAINT_CATALOG=160, CONSTRAINT_NAME=161, CONSTRAINT_SCHEMA=162, CONTAINS=163, 
		CONTEXT=164, CONTINUE=165, CONVERT=166, CPU=167, CREATE=168, CROSS=169, 
		CUBE=170, CUME_DIST=171, CURRENT=172, CURRENT_DATE=173, CURRENT_TIME=174, 
		CURRENT_TIMESTAMP=175, CURRENT_USER=176, CURSOR=177, CURSOR_NAME=178, 
		DATA=179, DATABASE=180, DATABASES=181, DATAFILE=182, DATE=183, DATETIME=184, 
		DAY=185, DAY_HOUR=186, DAY_MICROSECOND=187, DAY_MINUTE=188, DAY_SECOND=189, 
		DEALLOCATE=190, DEC=191, DECIMAL=192, DECLARE=193, DEFAULT=194, DEFAULT_AUTH=195, 
		DEFINER=196, DEFINITION=197, DELAYED=198, DELAY_KEY_WRITE=199, DELETE=200, 
		DENSE_RANK=201, DESC=202, DESCRIBE=203, DESCRIPTION=204, DETERMINISTIC=205, 
		DIAGNOSTICS=206, DIRECTORY=207, DISABLE=208, DISCARD=209, DISK=210, DISTINCT=211, 
		DISTINCTROW=212, DIV=213, DO=214, DOUBLE=215, DROP=216, DUAL=217, DUMPFILE=218, 
		DUPLICATE=219, DYNAMIC=220, EACH=221, ELSE=222, ELSEIF=223, EMPTY=224, 
		ENABLE=225, ENCLOSED=226, ENCRYPTION=227, END=228, ENDS=229, ENFORCED=230, 
		ENGINE=231, ENGINES=232, ENGINE_ATTRIBUTE=233, ENUM=234, ERROR=235, ERRORS=236, 
		ESCAPE=237, ESCAPED=238, EVENT=239, EVENTS=240, EVERY=241, EXCEPT=242, 
		EXCHANGE=243, EXCLUDE=244, EXECUTE=245, EXISTS=246, EXIT=247, EXPANSION=248, 
		EXPIRE=249, EXPLAIN=250, EXPORT=251, EXTENDED=252, EXTENT_SIZE=253, FAILED_LOGIN_ATTEMPTS=254, 
		FALSE=255, FAST=256, FAULTS=257, FETCH=258, FILE=259, FILE_BLOCK_SIZE=260, 
		FILTER=261, FIRST=262, FIRST_VALUE=263, FIXED=264, FLOAT=265, FLOAT4=266, 
		FLOAT8=267, FLUSH=268, FOLLOWING=269, FOLLOWS=270, FOR=271, FORCE=272, 
		FOREIGN=273, FORMAT=274, FOUND=275, FROM=276, FULL=277, FULLTEXT=278, 
		FUNCTION=279, GENERAL=280, GENERATED=281, GEOMETRY=282, GEOMETRYCOLLECTION=283, 
		GET=284, GET_FORMAT=285, GET_MASTER_PUBLIC_KEY=286, GLOBAL=287, GRANT=288, 
		GRANTS=289, GROUP=290, GROUPING=291, GROUPS=292, GROUP_REPLICATION=293, 
		HANDLER=294, HASH=295, HAVING=296, HELP=297, HIGH_PRIORITY=298, HISTOGRAM=299, 
		HISTORY=300, HOST=301, HOSTS=302, HOUR=303, HOUR_MICROSECOND=304, HOUR_MINUTE=305, 
		HOUR_SECOND=306, IDENTIFIED=307, IF=308, IGNORE=309, IGNORE_SERVER_IDS=310, 
		IMPORT=311, IN=312, INACTIVE=313, INDEX=314, INDEXES=315, INFILE=316, 
		INITIAL_SIZE=317, INNER=318, INOUT=319, INSENSITIVE=320, INSERT=321, INSERT_METHOD=322, 
		INSTALL=323, INSTANCE=324, INT=325, INT1=326, INT2=327, INT3=328, INT4=329, 
		INT8=330, INTEGER=331, INTERVAL=332, INTO=333, INVISIBLE=334, INVOKER=335, 
		IO=336, IO_AFTER_GTIDS=337, IO_BEFORE_GTIDS=338, IPC=339, IS=340, ISOLATION=341, 
		ISSUER=342, ITERATE=343, JOIN=344, JSON=345, JSON_TABLE=346, JSON_VALUE=347, 
		KEY=348, KEYS=349, KEY_BLOCK_SIZE=350, KILL=351, LAG=352, LANGUAGE=353, 
		LAST=354, LAST_VALUE=355, LATERAL=356, LEAD=357, LEADING=358, LEAVE=359, 
		LEAVES=360, LEFT=361, LESS=362, LEVEL=363, LIKE=364, LIMIT=365, LINEAR=366, 
		LINES=367, LINESTRING=368, LIST=369, LOAD=370, LOCAL=371, LOCALTIME=372, 
		LOCALTIMESTAMP=373, LOCK=374, LOCKED=375, LOCKS=376, LOGFILE=377, LOGS=378, 
		LONG=379, LONGBLOB=380, LONGTEXT=381, LOOP=382, LOW_PRIORITY=383, MASTER=384, 
		MASTER_AUTO_POSITION=385, MASTER_BIND=386, MASTER_COMPRESSION_ALGORITHM=387, 
		MASTER_CONNECT_RETRY=388, MASTER_DELAY=389, MASTER_HEARTBEAT_PERIOD=390, 
		MASTER_HOST=391, MASTER_LOG_FILE=392, MASTER_LOG_POS=393, MASTER_PASSWORD=394, 
		MASTER_PORT=395, MASTER_PUBLIC_KEY_PATH=396, MASTER_RETRY_COUNT=397, MASTER_SERVER_ID=398, 
		MASTER_SSL=399, MASTER_SSL_CA=400, MASTER_SSL_CAPATH=401, MASTER_SSL_CERT=402, 
		MASTER_SSL_CIPHER=403, MASTER_SSL_CRL=404, MASTER_SSL_CRLPATH=405, MASTER_SSL_KEY=406, 
		MASTER_SSL_VERIFY_SERVER_CERT=407, MASTER_TLS_CIPHERSUITES=408, MASTER_TLS_VERSION=409, 
		MASTER_USER=410, MASTER_ZSTD_COMPRESSION_LEVEL=411, MATCH=412, MAXVALUE=413, 
		MAX_CONNECTIONS_PER_HOUR=414, MAX_QUERIES_PER_HOUR=415, MAX_ROWS=416, 
		MAX_SIZE=417, MAX_UPDATES_PER_HOUR=418, MAX_USER_CONNECTIONS=419, MEDIUM=420, 
		MEDIUMBLOB=421, MEDIUMINT=422, MEDIUMTEXT=423, MEMBER=424, MEMORY=425, 
		MERGE=426, MESSAGE_TEXT=427, MICROSECOND=428, MIDDLEINT=429, MIGRATE=430, 
		MINUTE=431, MINUTE_MICROSECOND=432, MINUTE_SECOND=433, MIN_ROWS=434, MOD=435, 
		MODE=436, MODIFIES=437, MODIFY=438, MONTH=439, MULTILINESTRING=440, MULTIPOINT=441, 
		MULTIPOLYGON=442, MUTEX=443, MYSQL_ERRNO=444, NAME=445, NAMES=446, NATIONAL=447, 
		NATURAL=448, NCHAR=449, NDBCLUSTER=450, NESTED=451, NETWORK_NAMESPACE=452, 
		NEVER=453, NEW=454, NEXT=455, NO=456, NODEGROUP=457, NONE=458, NOT=459, 
		NOWAIT=460, NO_WAIT=461, NO_WRITE_TO_BINLOG=462, NTH_VALUE=463, NTILE=464, 
		NULL=465, NULLS=466, NUMBER=467, NUMERIC=468, NVARCHAR=469, OF=470, OFF=471, 
		OFFSET=472, OJ=473, OLD=474, ON=475, ONE=476, ONLY=477, OPEN=478, OPTIMIZE=479, 
		OPTIMIZER_COSTS=480, OPTION=481, OPTIONAL=482, OPTIONALLY=483, OPTIONS=484, 
		OR=485, ORDER=486, ORDINALITY=487, ORGANIZATION=488, OTHERS=489, OUT=490, 
		OUTER=491, OUTFILE=492, OVER=493, OWNER=494, PACK_KEYS=495, PAGE=496, 
		PARSER=497, PARTIAL=498, PARTITION=499, PARTITIONING=500, PARTITIONS=501, 
		PASSWORD=502, PASSWORD_LOCK_TIME=503, PATH=504, PERCENT_RANK=505, PERSIST=506, 
		PERSIST_ONLY=507, PHASE=508, PLUGIN=509, PLUGINS=510, PLUGIN_DIR=511, 
		POINT=512, POLYGON=513, PORT=514, PRECEDES=515, PRECEDING=516, PRECISION=517, 
		PREPARE=518, PRESERVE=519, PREV=520, PRIMARY=521, PRIVILEGES=522, PRIVILEGE_CHECKS_USER=523, 
		PROCEDURE=524, PROCESS=525, PROCESSLIST=526, PROFILE=527, PROFILES=528, 
		PROXY=529, PURGE=530, QUARTER=531, QUERY=532, QUICK=533, RANDOM=534, RANGE=535, 
		RANK=536, READ=537, READS=538, READ_ONLY=539, READ_WRITE=540, REAL=541, 
		REBUILD=542, RECOVER=543, RECURSIVE=544, REDO_BUFFER_SIZE=545, REDUNDANT=546, 
		REFERENCE=547, REFERENCES=548, REGEXP=549, RELAY=550, RELAYLOG=551, RELAY_LOG_FILE=552, 
		RELAY_LOG_POS=553, RELAY_THREAD=554, RELEASE=555, RELOAD=556, REMOVE=557, 
		RENAME=558, REORGANIZE=559, REPAIR=560, REPEAT=561, REPEATABLE=562, REPLACE=563, 
		REPLICA=564, REPLICAS=565, REPLICATE_DO_DB=566, REPLICATE_DO_TABLE=567, 
		REPLICATE_IGNORE_DB=568, REPLICATE_IGNORE_TABLE=569, REPLICATE_REWRITE_DB=570, 
		REPLICATE_WILD_DO_TABLE=571, REPLICATE_WILD_IGNORE_TABLE=572, REPLICATION=573, 
		REQUIRE=574, REQUIRE_ROW_FORMAT=575, RESET=576, RESIGNAL=577, RESOURCE=578, 
		RESPECT=579, RESTART=580, RESTORE=581, RESTRICT=582, RESUME=583, RETAIN=584, 
		RETURN=585, RETURNED_SQLSTATE=586, RETURNING=587, RETURNS=588, REUSE=589, 
		REVERSE=590, REVOKE=591, RIGHT=592, RLIKE=593, ROLE=594, ROLLBACK=595, 
		ROLLUP=596, ROTATE=597, ROUTINE=598, ROW=599, ROWS=600, ROW_COUNT=601, 
		ROW_FORMAT=602, ROW_NUMBER=603, RTREE=604, SAVEPOINT=605, SCHEDULE=606, 
		SCHEMA=607, SCHEMAS=608, SCHEMA_NAME=609, SECOND=610, SECONDARY=611, SECONDARY_ENGINE=612, 
		SECONDARY_ENGINE_ATTRIBUTE=613, SECONDARY_LOAD=614, SECONDARY_UNLOAD=615, 
		SECOND_MICROSECOND=616, SECURITY=617, SELECT=618, SENSITIVE=619, SEPARATOR=620, 
		SERIAL=621, SERIALIZABLE=622, SERVER=623, SESSION=624, SET=625, SHARE=626, 
		SHOW=627, SHUTDOWN=628, SIGNAL=629, SIGNED=630, SIMPLE=631, SKIP_SYMBOL=632, 
		SLAVE=633, SLOW=634, SMALLINT=635, SNAPSHOT=636, SOCKET=637, SONAME=638, 
		SOUNDS=639, SOURCE=640, SPATIAL=641, SPECIFIC=642, SQL=643, SQLEXCEPTION=644, 
		SQLSTATE=645, SQLWARNING=646, SQL_AFTER_GTIDS=647, SQL_AFTER_MTS_GAPS=648, 
		SQL_BEFORE_GTIDS=649, SQL_BIG_RESULT=650, SQL_BUFFER_RESULT=651, SQL_CALC_FOUND_ROWS=652, 
		SQL_NO_CACHE=653, SQL_SMALL_RESULT=654, SQL_THREAD=655, SRID=656, SSL=657, 
		STACKED=658, START=659, STARTING=660, STARTS=661, STATS_AUTO_RECALC=662, 
		STATS_PERSISTENT=663, STATS_SAMPLE_PAGES=664, STATUS=665, STOP=666, STORAGE=667, 
		STORED=668, STRAIGHT_JOIN=669, STREAM=670, STRING=671, SUBCLASS_ORIGIN=672, 
		SUBJECT=673, SUBPARTITION=674, SUBPARTITIONS=675, SUPER=676, SUSPEND=677, 
		SWAPS=678, SWITCHES=679, SYSTEM=680, TABLE=681, TABLES=682, TABLESPACE=683, 
		TABLE_CHECKSUM=684, TABLE_NAME=685, TEMPORARY=686, TEMPTABLE=687, TERMINATED=688, 
		TEXT=689, THAN=690, THEN=691, THREAD_PRIORITY=692, TIES=693, TIME=694, 
		TIMESTAMP=695, TIMESTAMP_ADD=696, TIMESTAMP_DIFF=697, TINYBLOB=698, TINYINT=699, 
		TINYTEXT=700, TLS=701, TO=702, TRAILING=703, TRANSACTION=704, TRIGGER=705, 
		TRIGGERS=706, TRUE=707, TRUNCATE=708, TYPE=709, TYPES=710, UNBOUNDED=711, 
		UNCOMMITTED=712, UNDEFINED=713, UNDO=714, UNDOFILE=715, UNDO_BUFFER_SIZE=716, 
		UNICODE=717, UNINSTALL=718, UNION=719, UNIQUE=720, UNKNOWN=721, UNLOCK=722, 
		UNSIGNED=723, UNTIL=724, UPDATE=725, UPGRADE=726, USAGE=727, USE=728, 
		USER=729, USER_RESOURCES=730, USE_FRM=731, USING=732, UTC_DATE=733, UTC_TIME=734, 
		UTC_TIMESTAMP=735, VALIDATION=736, VALUE=737, VALUES=738, VARBINARY=739, 
		VARCHAR=740, VARCHARACTER=741, VARIABLES=742, VARYING=743, VCPU=744, VIEW=745, 
		VIRTUAL=746, VISIBLE=747, WAIT=748, WARNINGS=749, WEEK=750, WEIGHT_STRING=751, 
		WHEN=752, WHERE=753, WHILE=754, WINDOW=755, WITH=756, WITHOUT=757, WORK=758, 
		WRAPPER=759, WRITE=760, X509=761, XA=762, XID=763, XML=764, XOR=765, YEAR=766, 
		YEAR_MONTH=767, ZEROFILL=768, JSON_ARRAY=769, JSON_ARRAY_APPEND=770, JSON_ARRAY_INSERT=771, 
		JSON_CONTAINS=772, JSON_CONTAINS_PATH=773, JSON_DEPTH=774, JSON_EXTRACT=775, 
		JSON_INSERT=776, JSON_KEYS=777, JSON_LENGTH=778, JSON_MERGE=779, JSON_MERGE_PATCH=780, 
		JSON_MERGE_PRESERVE=781, JSON_OBJECT=782, JSON_OVERLAPS=783, JSON_PRETTY=784, 
		JSON_QUOTE=785, JSON_REMOVE=786, JSON_REPLACE=787, JSON_SCHEMA_VALID=788, 
		JSON_SCHEMA_VALIDATION_REPORT=789, JSON_SEARCH=790, JSON_SET=791, JSON_STORAGE_FREE=792, 
		JSON_STORAGE_SIZE=793, JSON_TYPE=794, JSON_UNQUOTE=795, JSON_VALID=796, 
		FILESIZE_LITERAL=797, SINGLE_QUOTED_TEXT=798, DOUBLE_QUOTED_TEXT=799, 
		NCHAR_TEXT=800, UNDERSCORE_CHARSET=801, NUMBER_=802, INT_NUM_=803, FLOAT_NUM_=804, 
		DECIMAL_NUM_=805, HEX_DIGIT_=806, BIT_NUM_=807, IDENTIFIER_=808, NOT_SUPPORT_=809, 
		FIELDS=810;
	public static final int
		RULE_execute = 0, RULE_alterStatement = 1, RULE_createTable = 2, RULE_partitionClause = 3, 
		RULE_partitionTypeDef = 4, RULE_subPartitions = 5, RULE_partitionKeyAlgorithm = 6, 
		RULE_duplicateAsQueryExpression = 7, RULE_alterTable = 8, RULE_standaloneAlterTableAction = 9, 
		RULE_alterTableActions = 10, RULE_alterTablePartitionOptions = 11, RULE_alterCommandList = 12, 
		RULE_alterList = 13, RULE_createTableOptionsSpaceSeparated = 14, RULE_alterListItem = 15, 
		RULE_alterOrderList = 16, RULE_tableConstraintDef = 17, RULE_alterCommandsModifierList = 18, 
		RULE_alterCommandsModifier = 19, RULE_withValidation = 20, RULE_standaloneAlterCommands = 21, 
		RULE_alterPartition = 22, RULE_constraintClause = 23, RULE_tableElementList = 24, 
		RULE_tableElement = 25, RULE_restrict = 26, RULE_fulltextIndexOption = 27, 
		RULE_dropTable = 28, RULE_dropIndex = 29, RULE_alterAlgorithmOption = 30, 
		RULE_alterLockOption = 31, RULE_truncateTable = 32, RULE_createIndex = 33, 
		RULE_createDatabase = 34, RULE_alterDatabase = 35, RULE_createDatabaseSpecification_ = 36, 
		RULE_alterDatabaseSpecification_ = 37, RULE_dropDatabase = 38, RULE_alterInstance = 39, 
		RULE_instanceAction = 40, RULE_channel = 41, RULE_createEvent = 42, RULE_alterEvent = 43, 
		RULE_dropEvent = 44, RULE_createFunction = 45, RULE_alterFunction = 46, 
		RULE_dropFunction = 47, RULE_createProcedure = 48, RULE_alterProcedure = 49, 
		RULE_dropProcedure = 50, RULE_createServer = 51, RULE_alterServer = 52, 
		RULE_dropServer = 53, RULE_createView = 54, RULE_alterView = 55, RULE_dropView = 56, 
		RULE_createTablespace = 57, RULE_createTablespaceInnodb = 58, RULE_createTablespaceNdb = 59, 
		RULE_alterTablespace = 60, RULE_alterTablespaceNdb = 61, RULE_alterTablespaceInnodb = 62, 
		RULE_dropTablespace = 63, RULE_createLogfileGroup = 64, RULE_alterLogfileGroup = 65, 
		RULE_dropLogfileGroup = 66, RULE_createTrigger = 67, RULE_dropTrigger = 68, 
		RULE_renameTable = 69, RULE_createDefinitionClause = 70, RULE_columnDefinition = 71, 
		RULE_fieldDefinition = 72, RULE_columnAttribute = 73, RULE_checkConstraint = 74, 
		RULE_constraintEnforcement = 75, RULE_generatedOption = 76, RULE_referenceDefinition = 77, 
		RULE_onUpdateDelete = 78, RULE_referenceOption = 79, RULE_indexType = 80, 
		RULE_indexTypeClause = 81, RULE_keyParts = 82, RULE_keyPart = 83, RULE_keyPartWithExpression = 84, 
		RULE_keyListWithExpression = 85, RULE_indexOption = 86, RULE_commonIndexOption = 87, 
		RULE_visibility = 88, RULE_createLikeClause = 89, RULE_createIndexSpecification = 90, 
		RULE_createTableOptions = 91, RULE_createTableOption = 92, RULE_createSRSStatement = 93, 
		RULE_dropSRSStatement = 94, RULE_srsAttribute = 95, RULE_place = 96, RULE_partitionDefinitions = 97, 
		RULE_partitionDefinition = 98, RULE_partitionLessThanValue = 99, RULE_partitionValueList = 100, 
		RULE_partitionDefinitionOption = 101, RULE_subpartitionDefinition = 102, 
		RULE_ownerStatement = 103, RULE_scheduleExpression = 104, RULE_timestampValue = 105, 
		RULE_routineBody = 106, RULE_serverOption = 107, RULE_routineOption = 108, 
		RULE_procedureParameter = 109, RULE_fileSizeLiteral = 110, RULE_simpleStatement = 111, 
		RULE_compoundStatement = 112, RULE_validStatement = 113, RULE_beginStatement = 114, 
		RULE_declareStatement = 115, RULE_flowControlStatement = 116, RULE_caseStatement = 117, 
		RULE_ifStatement = 118, RULE_iterateStatement = 119, RULE_leaveStatement = 120, 
		RULE_loopStatement = 121, RULE_repeatStatement = 122, RULE_returnStatement = 123, 
		RULE_whileStatement = 124, RULE_cursorStatement = 125, RULE_cursorCloseStatement = 126, 
		RULE_cursorDeclareStatement = 127, RULE_cursorFetchStatement = 128, RULE_cursorOpenStatement = 129, 
		RULE_conditionHandlingStatement = 130, RULE_declareConditionStatement = 131, 
		RULE_declareHandlerStatement = 132, RULE_getDiagnosticsStatement = 133, 
		RULE_statementInformationItem = 134, RULE_conditionInformationItem = 135, 
		RULE_conditionNumber = 136, RULE_statementInformationItemName = 137, RULE_conditionInformationItemName = 138, 
		RULE_handlerAction = 139, RULE_conditionValue = 140, RULE_resignalStatement = 141, 
		RULE_signalStatement = 142, RULE_signalInformationItem = 143, RULE_prepare = 144, 
		RULE_executeStmt = 145, RULE_executeVarList = 146, RULE_deallocate = 147, 
		RULE_insert = 148, RULE_insertSpecification = 149, RULE_insertValuesClause = 150, 
		RULE_fields = 151, RULE_insertIdentifier = 152, RULE_tableWild = 153, 
		RULE_insertSelectClause = 154, RULE_onDuplicateKeyClause = 155, RULE_valueReference = 156, 
		RULE_derivedColumns = 157, RULE_replace = 158, RULE_replaceSpecification = 159, 
		RULE_replaceValuesClause = 160, RULE_replaceSelectClause = 161, RULE_update = 162, 
		RULE_updateSpecification_ = 163, RULE_assignment = 164, RULE_setAssignmentsClause = 165, 
		RULE_assignmentValues = 166, RULE_assignmentValue = 167, RULE_blobValue = 168, 
		RULE_delete = 169, RULE_deleteSpecification = 170, RULE_singleTableClause = 171, 
		RULE_multipleTablesClause = 172, RULE_select = 173, RULE_selectWithInto = 174, 
		RULE_queryExpression = 175, RULE_queryExpressionBody = 176, RULE_combineClause = 177, 
		RULE_queryExpressionParens = 178, RULE_queryPrimary = 179, RULE_querySpecification = 180, 
		RULE_call = 181, RULE_doStatement = 182, RULE_handlerStatement = 183, 
		RULE_handlerOpenStatement = 184, RULE_handlerReadIndexStatement = 185, 
		RULE_handlerReadStatement = 186, RULE_handlerCloseStatement = 187, RULE_importStatement = 188, 
		RULE_loadStatement = 189, RULE_loadDataStatement = 190, RULE_loadXmlStatement = 191, 
		RULE_tableStatement = 192, RULE_tableValueConstructor = 193, RULE_rowConstructorList = 194, 
		RULE_withClause = 195, RULE_cteClause = 196, RULE_selectSpecification = 197, 
		RULE_duplicateSpecification = 198, RULE_projections = 199, RULE_projection = 200, 
		RULE_unqualifiedShorthand = 201, RULE_qualifiedShorthand = 202, RULE_fromClause = 203, 
		RULE_tableReferences = 204, RULE_escapedTableReference = 205, RULE_tableReference = 206, 
		RULE_tableFactor = 207, RULE_partitionNames = 208, RULE_indexHintList = 209, 
		RULE_indexHint = 210, RULE_joinedTable = 211, RULE_innerJoinType = 212, 
		RULE_outerJoinType = 213, RULE_naturalJoinType = 214, RULE_joinSpecification = 215, 
		RULE_whereClause = 216, RULE_groupByClause = 217, RULE_havingClause = 218, 
		RULE_limitClause = 219, RULE_limitRowCount = 220, RULE_limitOffset = 221, 
		RULE_windowClause = 222, RULE_windowItem = 223, RULE_subquery = 224, RULE_selectLinesInto = 225, 
		RULE_selectFieldsInto = 226, RULE_selectIntoExpression = 227, RULE_lockClause = 228, 
		RULE_lockClauseList = 229, RULE_lockStrength = 230, RULE_lockedRowAction = 231, 
		RULE_tableLockingList = 232, RULE_tableIdentOptWild = 233, RULE_tableAliasRefList = 234, 
		RULE_parameterMarker = 235, RULE_customKeyword = 236, RULE_literals = 237, 
		RULE_string_ = 238, RULE_stringLiterals = 239, RULE_numberLiterals = 240, 
		RULE_temporalLiterals = 241, RULE_hexadecimalLiterals = 242, RULE_bitValueLiterals = 243, 
		RULE_booleanLiterals = 244, RULE_nullValueLiterals = 245, RULE_collationName = 246, 
		RULE_identifier = 247, RULE_identifierKeywordsUnambiguous = 248, RULE_identifierKeywordsAmbiguous1RolesAndLabels = 249, 
		RULE_identifierKeywordsAmbiguous2Labels = 250, RULE_identifierKeywordsAmbiguous3Roles = 251, 
		RULE_identifierKeywordsAmbiguous4SystemVariables = 252, RULE_textOrIdentifier = 253, 
		RULE_variable = 254, RULE_userVariable = 255, RULE_systemVariable = 256, 
		RULE_setSystemVariable = 257, RULE_optionType = 258, RULE_internalVariableName = 259, 
		RULE_setExprOrDefault = 260, RULE_transactionCharacteristics = 261, RULE_isolationLevel = 262, 
		RULE_isolationTypes = 263, RULE_transactionAccessMode = 264, RULE_schemaName = 265, 
		RULE_schemaNames = 266, RULE_charsetName = 267, RULE_schemaPairs = 268, 
		RULE_schemaPair = 269, RULE_tableName = 270, RULE_columnName = 271, RULE_indexName = 272, 
		RULE_constraintName = 273, RULE_delimiterName = 274, RULE_userIdentifierOrText = 275, 
		RULE_username = 276, RULE_eventName = 277, RULE_serverName = 278, RULE_wrapperName = 279, 
		RULE_functionName = 280, RULE_procedureName = 281, RULE_viewName = 282, 
		RULE_owner = 283, RULE_alias = 284, RULE_name = 285, RULE_tableList = 286, 
		RULE_viewNames = 287, RULE_columnNames = 288, RULE_groupName = 289, RULE_routineName = 290, 
		RULE_shardLibraryName = 291, RULE_componentName = 292, RULE_pluginName = 293, 
		RULE_hostname = 294, RULE_port = 295, RULE_cloneInstance = 296, RULE_cloneDir = 297, 
		RULE_channelName = 298, RULE_logName = 299, RULE_roleName = 300, RULE_roleIdentifierOrText = 301, 
		RULE_engineRef = 302, RULE_triggerName = 303, RULE_triggerTime = 304, 
		RULE_tableOrTables = 305, RULE_userOrRole = 306, RULE_partitionName = 307, 
		RULE_identifierList = 308, RULE_allOrPartitionNameList = 309, RULE_triggerEvent = 310, 
		RULE_triggerOrder = 311, RULE_expr = 312, RULE_andOperator = 313, RULE_orOperator = 314, 
		RULE_notOperator = 315, RULE_booleanPrimary = 316, RULE_assignmentOperator = 317, 
		RULE_comparisonOperator = 318, RULE_predicate = 319, RULE_bitExpr = 320, 
		RULE_simpleExpr = 321, RULE_path = 322, RULE_onEmptyError = 323, RULE_columnRef = 324, 
		RULE_columnRefList = 325, RULE_functionCall = 326, RULE_aggregationFunction = 327, 
		RULE_jsonFunction = 328, RULE_jsonFunctionName = 329, RULE_aggregationFunctionName = 330, 
		RULE_distinct = 331, RULE_overClause = 332, RULE_windowSpecification = 333, 
		RULE_frameClause = 334, RULE_frameStart = 335, RULE_frameEnd = 336, RULE_frameBetween = 337, 
		RULE_specialFunction = 338, RULE_currentUserFunction = 339, RULE_groupConcatFunction = 340, 
		RULE_windowFunction = 341, RULE_windowingClause = 342, RULE_leadLagInfo = 343, 
		RULE_nullTreatment = 344, RULE_checkType = 345, RULE_repairType = 346, 
		RULE_castFunction = 347, RULE_convertFunction = 348, RULE_castType = 349, 
		RULE_nchar = 350, RULE_positionFunction = 351, RULE_substringFunction = 352, 
		RULE_extractFunction = 353, RULE_charFunction = 354, RULE_trimFunction = 355, 
		RULE_valuesFunction = 356, RULE_weightStringFunction = 357, RULE_levelClause = 358, 
		RULE_levelInWeightListElement = 359, RULE_regularFunction = 360, RULE_shorthandRegularFunction = 361, 
		RULE_completeRegularFunction = 362, RULE_regularFunctionName = 363, RULE_matchExpression = 364, 
		RULE_matchSearchModifier = 365, RULE_caseExpression = 366, RULE_datetimeExpr = 367, 
		RULE_binaryLogFileIndexNumber = 368, RULE_caseWhen = 369, RULE_caseElse = 370, 
		RULE_intervalExpression = 371, RULE_intervalValue = 372, RULE_intervalUnit = 373, 
		RULE_orderByClause = 374, RULE_orderByItem = 375, RULE_dataType = 376, 
		RULE_stringList = 377, RULE_textString = 378, RULE_textStringHash = 379, 
		RULE_fieldOptions = 380, RULE_precision = 381, RULE_typeDatetimePrecision = 382, 
		RULE_charsetWithOptBinary = 383, RULE_ascii = 384, RULE_unicode = 385, 
		RULE_charset = 386, RULE_defaultCollation = 387, RULE_defaultEncryption = 388, 
		RULE_defaultCharset = 389, RULE_now = 390, RULE_columnFormat = 391, RULE_storageMedia = 392, 
		RULE_direction = 393, RULE_keyOrIndex = 394, RULE_fieldLength = 395, RULE_characterSet = 396, 
		RULE_collateClause = 397, RULE_fieldOrVarSpec = 398, RULE_ifNotExists = 399, 
		RULE_ifExists = 400, RULE_connectionId = 401, RULE_labelName = 402, RULE_cursorName = 403, 
		RULE_conditionName = 404, RULE_combineOption = 405, RULE_noWriteToBinLog = 406, 
		RULE_channelOption = 407, RULE_use = 408, RULE_help = 409, RULE_explain = 410, 
		RULE_fromSchema = 411, RULE_fromTable = 412, RULE_showLike = 413, RULE_showWhereClause = 414, 
		RULE_showFilter = 415, RULE_showProfileType = 416, RULE_setVariable = 417, 
		RULE_optionValueList = 418, RULE_optionValueNoOptionType = 419, RULE_equal = 420, 
		RULE_optionValue = 421, RULE_showBinaryLogs = 422, RULE_showBinlogEvents = 423, 
		RULE_showCharacterSet = 424, RULE_showCollation = 425, RULE_showColumns = 426, 
		RULE_showCreateDatabase = 427, RULE_showCreateEvent = 428, RULE_showCreateFunction = 429, 
		RULE_showCreateProcedure = 430, RULE_showCreateTable = 431, RULE_showCreateTrigger = 432, 
		RULE_showCreateUser = 433, RULE_showCreateView = 434, RULE_showDatabases = 435, 
		RULE_showEngine = 436, RULE_showEngines = 437, RULE_showErrors = 438, 
		RULE_showEvents = 439, RULE_showFunctionCode = 440, RULE_showFunctionStatus = 441, 
		RULE_showGrants = 442, RULE_showIndex = 443, RULE_showMasterStatus = 444, 
		RULE_showOpenTables = 445, RULE_showPlugins = 446, RULE_showPrivileges = 447, 
		RULE_showProcedureCode = 448, RULE_showProcedureStatus = 449, RULE_showProcesslist = 450, 
		RULE_showProfile = 451, RULE_showProfiles = 452, RULE_showRelaylogEvent = 453, 
		RULE_showReplicas = 454, RULE_showSlaveHosts = 455, RULE_showReplicaStatus = 456, 
		RULE_showSlaveStatus = 457, RULE_showStatus = 458, RULE_showTableStatus = 459, 
		RULE_showTables = 460, RULE_showTriggers = 461, RULE_showVariables = 462, 
		RULE_showWarnings = 463, RULE_showCharset = 464, RULE_setCharacter = 465, 
		RULE_clone = 466, RULE_cloneAction = 467, RULE_createLoadableFunction = 468, 
		RULE_install = 469, RULE_uninstall = 470, RULE_installComponent = 471, 
		RULE_installPlugin = 472, RULE_uninstallComponent = 473, RULE_uninstallPlugin = 474, 
		RULE_analyzeTable = 475, RULE_histogram = 476, RULE_checkTable = 477, 
		RULE_checkTableOption = 478, RULE_checksumTable = 479, RULE_optimizeTable = 480, 
		RULE_repairTable = 481, RULE_alterResourceGroup = 482, RULE_vcpuSpec = 483, 
		RULE_createResourceGroup = 484, RULE_dropResourceGroup = 485, RULE_setResourceGroup = 486, 
		RULE_binlog = 487, RULE_cacheIndex = 488, RULE_cacheTableIndexList = 489, 
		RULE_partitionList = 490, RULE_flush = 491, RULE_flushOption = 492, RULE_tablesOption = 493, 
		RULE_kill = 494, RULE_loadIndexInfo = 495, RULE_loadTableIndexList = 496, 
		RULE_resetStatement = 497, RULE_resetOption = 498, RULE_resetPersist = 499, 
		RULE_restart = 500, RULE_shutdown = 501, RULE_explainType = 502, RULE_explainableStatement = 503, 
		RULE_formatName = 504, RULE_delimiter = 505, RULE_show = 506, RULE_setTransaction = 507, 
		RULE_setAutoCommit = 508, RULE_beginTransaction = 509, RULE_transactionCharacteristic = 510, 
		RULE_commit = 511, RULE_rollback = 512, RULE_savepoint = 513, RULE_begin = 514, 
		RULE_lock = 515, RULE_unlock = 516, RULE_releaseSavepoint = 517, RULE_xa = 518, 
		RULE_optionChain = 519, RULE_optionRelease = 520, RULE_tableLock = 521, 
		RULE_lockOption = 522, RULE_xid = 523, RULE_grant = 524, RULE_revoke = 525, 
		RULE_userList = 526, RULE_roleOrPrivileges = 527, RULE_roleOrPrivilege = 528, 
		RULE_aclType = 529, RULE_grantIdentifier = 530, RULE_createUser = 531, 
		RULE_createUserEntry = 532, RULE_createUserList = 533, RULE_defaultRoleClause = 534, 
		RULE_requireClause = 535, RULE_connectOptions = 536, RULE_accountLockPasswordExpireOptions = 537, 
		RULE_accountLockPasswordExpireOption = 538, RULE_alterUser = 539, RULE_alterUserEntry = 540, 
		RULE_alterUserList = 541, RULE_dropUser = 542, RULE_createRole = 543, 
		RULE_dropRole = 544, RULE_renameUser = 545, RULE_setDefaultRole = 546, 
		RULE_setRole = 547, RULE_setPassword = 548, RULE_authOption = 549, RULE_withGrantOption = 550, 
		RULE_userOrRoles = 551, RULE_roles = 552, RULE_grantAs = 553, RULE_withRoles = 554, 
		RULE_userAuthOption = 555, RULE_identifiedBy = 556, RULE_identifiedWith = 557, 
		RULE_connectOption = 558, RULE_tlsOption = 559, RULE_userFuncAuthOption = 560, 
		RULE_change = 561, RULE_changeMasterTo = 562, RULE_changeReplicationFilter = 563, 
		RULE_startSlave = 564, RULE_stopSlave = 565, RULE_groupReplication = 566, 
		RULE_startGroupReplication = 567, RULE_stopGroupReplication = 568, RULE_purgeBinaryLog = 569, 
		RULE_threadTypes = 570, RULE_threadType = 571, RULE_utilOption = 572, 
		RULE_connectionOptions = 573, RULE_masterDefs = 574, RULE_masterDef = 575, 
		RULE_ignoreServerIds = 576, RULE_ignoreServerId = 577, RULE_filterDefs = 578, 
		RULE_filterDef = 579, RULE_wildTables = 580, RULE_wildTable = 581;
	private static String[] makeRuleNames() {
		return new String[] {
			"execute", "alterStatement", "createTable", "partitionClause", "partitionTypeDef", 
			"subPartitions", "partitionKeyAlgorithm", "duplicateAsQueryExpression", 
			"alterTable", "standaloneAlterTableAction", "alterTableActions", "alterTablePartitionOptions", 
			"alterCommandList", "alterList", "createTableOptionsSpaceSeparated", 
			"alterListItem", "alterOrderList", "tableConstraintDef", "alterCommandsModifierList", 
			"alterCommandsModifier", "withValidation", "standaloneAlterCommands", 
			"alterPartition", "constraintClause", "tableElementList", "tableElement", 
			"restrict", "fulltextIndexOption", "dropTable", "dropIndex", "alterAlgorithmOption", 
			"alterLockOption", "truncateTable", "createIndex", "createDatabase", 
			"alterDatabase", "createDatabaseSpecification_", "alterDatabaseSpecification_", 
			"dropDatabase", "alterInstance", "instanceAction", "channel", "createEvent", 
			"alterEvent", "dropEvent", "createFunction", "alterFunction", "dropFunction", 
			"createProcedure", "alterProcedure", "dropProcedure", "createServer", 
			"alterServer", "dropServer", "createView", "alterView", "dropView", "createTablespace", 
			"createTablespaceInnodb", "createTablespaceNdb", "alterTablespace", "alterTablespaceNdb", 
			"alterTablespaceInnodb", "dropTablespace", "createLogfileGroup", "alterLogfileGroup", 
			"dropLogfileGroup", "createTrigger", "dropTrigger", "renameTable", "createDefinitionClause", 
			"columnDefinition", "fieldDefinition", "columnAttribute", "checkConstraint", 
			"constraintEnforcement", "generatedOption", "referenceDefinition", "onUpdateDelete", 
			"referenceOption", "indexType", "indexTypeClause", "keyParts", "keyPart", 
			"keyPartWithExpression", "keyListWithExpression", "indexOption", "commonIndexOption", 
			"visibility", "createLikeClause", "createIndexSpecification", "createTableOptions", 
			"createTableOption", "createSRSStatement", "dropSRSStatement", "srsAttribute", 
			"place", "partitionDefinitions", "partitionDefinition", "partitionLessThanValue", 
			"partitionValueList", "partitionDefinitionOption", "subpartitionDefinition", 
			"ownerStatement", "scheduleExpression", "timestampValue", "routineBody", 
			"serverOption", "routineOption", "procedureParameter", "fileSizeLiteral", 
			"simpleStatement", "compoundStatement", "validStatement", "beginStatement", 
			"declareStatement", "flowControlStatement", "caseStatement", "ifStatement", 
			"iterateStatement", "leaveStatement", "loopStatement", "repeatStatement", 
			"returnStatement", "whileStatement", "cursorStatement", "cursorCloseStatement", 
			"cursorDeclareStatement", "cursorFetchStatement", "cursorOpenStatement", 
			"conditionHandlingStatement", "declareConditionStatement", "declareHandlerStatement", 
			"getDiagnosticsStatement", "statementInformationItem", "conditionInformationItem", 
			"conditionNumber", "statementInformationItemName", "conditionInformationItemName", 
			"handlerAction", "conditionValue", "resignalStatement", "signalStatement", 
			"signalInformationItem", "prepare", "executeStmt", "executeVarList", 
			"deallocate", "insert", "insertSpecification", "insertValuesClause", 
			"fields", "insertIdentifier", "tableWild", "insertSelectClause", "onDuplicateKeyClause", 
			"valueReference", "derivedColumns", "replace", "replaceSpecification", 
			"replaceValuesClause", "replaceSelectClause", "update", "updateSpecification_", 
			"assignment", "setAssignmentsClause", "assignmentValues", "assignmentValue", 
			"blobValue", "delete", "deleteSpecification", "singleTableClause", "multipleTablesClause", 
			"select", "selectWithInto", "queryExpression", "queryExpressionBody", 
			"combineClause", "queryExpressionParens", "queryPrimary", "querySpecification", 
			"call", "doStatement", "handlerStatement", "handlerOpenStatement", "handlerReadIndexStatement", 
			"handlerReadStatement", "handlerCloseStatement", "importStatement", "loadStatement", 
			"loadDataStatement", "loadXmlStatement", "tableStatement", "tableValueConstructor", 
			"rowConstructorList", "withClause", "cteClause", "selectSpecification", 
			"duplicateSpecification", "projections", "projection", "unqualifiedShorthand", 
			"qualifiedShorthand", "fromClause", "tableReferences", "escapedTableReference", 
			"tableReference", "tableFactor", "partitionNames", "indexHintList", "indexHint", 
			"joinedTable", "innerJoinType", "outerJoinType", "naturalJoinType", "joinSpecification", 
			"whereClause", "groupByClause", "havingClause", "limitClause", "limitRowCount", 
			"limitOffset", "windowClause", "windowItem", "subquery", "selectLinesInto", 
			"selectFieldsInto", "selectIntoExpression", "lockClause", "lockClauseList", 
			"lockStrength", "lockedRowAction", "tableLockingList", "tableIdentOptWild", 
			"tableAliasRefList", "parameterMarker", "customKeyword", "literals", 
			"string_", "stringLiterals", "numberLiterals", "temporalLiterals", "hexadecimalLiterals", 
			"bitValueLiterals", "booleanLiterals", "nullValueLiterals", "collationName", 
			"identifier", "identifierKeywordsUnambiguous", "identifierKeywordsAmbiguous1RolesAndLabels", 
			"identifierKeywordsAmbiguous2Labels", "identifierKeywordsAmbiguous3Roles", 
			"identifierKeywordsAmbiguous4SystemVariables", "textOrIdentifier", "variable", 
			"userVariable", "systemVariable", "setSystemVariable", "optionType", 
			"internalVariableName", "setExprOrDefault", "transactionCharacteristics", 
			"isolationLevel", "isolationTypes", "transactionAccessMode", "schemaName", 
			"schemaNames", "charsetName", "schemaPairs", "schemaPair", "tableName", 
			"columnName", "indexName", "constraintName", "delimiterName", "userIdentifierOrText", 
			"username", "eventName", "serverName", "wrapperName", "functionName", 
			"procedureName", "viewName", "owner", "alias", "name", "tableList", "viewNames", 
			"columnNames", "groupName", "routineName", "shardLibraryName", "componentName", 
			"pluginName", "hostname", "port", "cloneInstance", "cloneDir", "channelName", 
			"logName", "roleName", "roleIdentifierOrText", "engineRef", "triggerName", 
			"triggerTime", "tableOrTables", "userOrRole", "partitionName", "identifierList", 
			"allOrPartitionNameList", "triggerEvent", "triggerOrder", "expr", "andOperator", 
			"orOperator", "notOperator", "booleanPrimary", "assignmentOperator", 
			"comparisonOperator", "predicate", "bitExpr", "simpleExpr", "path", "onEmptyError", 
			"columnRef", "columnRefList", "functionCall", "aggregationFunction", 
			"jsonFunction", "jsonFunctionName", "aggregationFunctionName", "distinct", 
			"overClause", "windowSpecification", "frameClause", "frameStart", "frameEnd", 
			"frameBetween", "specialFunction", "currentUserFunction", "groupConcatFunction", 
			"windowFunction", "windowingClause", "leadLagInfo", "nullTreatment", 
			"checkType", "repairType", "castFunction", "convertFunction", "castType", 
			"nchar", "positionFunction", "substringFunction", "extractFunction", 
			"charFunction", "trimFunction", "valuesFunction", "weightStringFunction", 
			"levelClause", "levelInWeightListElement", "regularFunction", "shorthandRegularFunction", 
			"completeRegularFunction", "regularFunctionName", "matchExpression", 
			"matchSearchModifier", "caseExpression", "datetimeExpr", "binaryLogFileIndexNumber", 
			"caseWhen", "caseElse", "intervalExpression", "intervalValue", "intervalUnit", 
			"orderByClause", "orderByItem", "dataType", "stringList", "textString", 
			"textStringHash", "fieldOptions", "precision", "typeDatetimePrecision", 
			"charsetWithOptBinary", "ascii", "unicode", "charset", "defaultCollation", 
			"defaultEncryption", "defaultCharset", "now", "columnFormat", "storageMedia", 
			"direction", "keyOrIndex", "fieldLength", "characterSet", "collateClause", 
			"fieldOrVarSpec", "ifNotExists", "ifExists", "connectionId", "labelName", 
			"cursorName", "conditionName", "combineOption", "noWriteToBinLog", "channelOption", 
			"use", "help", "explain", "fromSchema", "fromTable", "showLike", "showWhereClause", 
			"showFilter", "showProfileType", "setVariable", "optionValueList", "optionValueNoOptionType", 
			"equal", "optionValue", "showBinaryLogs", "showBinlogEvents", "showCharacterSet", 
			"showCollation", "showColumns", "showCreateDatabase", "showCreateEvent", 
			"showCreateFunction", "showCreateProcedure", "showCreateTable", "showCreateTrigger", 
			"showCreateUser", "showCreateView", "showDatabases", "showEngine", "showEngines", 
			"showErrors", "showEvents", "showFunctionCode", "showFunctionStatus", 
			"showGrants", "showIndex", "showMasterStatus", "showOpenTables", "showPlugins", 
			"showPrivileges", "showProcedureCode", "showProcedureStatus", "showProcesslist", 
			"showProfile", "showProfiles", "showRelaylogEvent", "showReplicas", "showSlaveHosts", 
			"showReplicaStatus", "showSlaveStatus", "showStatus", "showTableStatus", 
			"showTables", "showTriggers", "showVariables", "showWarnings", "showCharset", 
			"setCharacter", "clone", "cloneAction", "createLoadableFunction", "install", 
			"uninstall", "installComponent", "installPlugin", "uninstallComponent", 
			"uninstallPlugin", "analyzeTable", "histogram", "checkTable", "checkTableOption", 
			"checksumTable", "optimizeTable", "repairTable", "alterResourceGroup", 
			"vcpuSpec", "createResourceGroup", "dropResourceGroup", "setResourceGroup", 
			"binlog", "cacheIndex", "cacheTableIndexList", "partitionList", "flush", 
			"flushOption", "tablesOption", "kill", "loadIndexInfo", "loadTableIndexList", 
			"resetStatement", "resetOption", "resetPersist", "restart", "shutdown", 
			"explainType", "explainableStatement", "formatName", "delimiter", "show", 
			"setTransaction", "setAutoCommit", "beginTransaction", "transactionCharacteristic", 
			"commit", "rollback", "savepoint", "begin", "lock", "unlock", "releaseSavepoint", 
			"xa", "optionChain", "optionRelease", "tableLock", "lockOption", "xid", 
			"grant", "revoke", "userList", "roleOrPrivileges", "roleOrPrivilege", 
			"aclType", "grantIdentifier", "createUser", "createUserEntry", "createUserList", 
			"defaultRoleClause", "requireClause", "connectOptions", "accountLockPasswordExpireOptions", 
			"accountLockPasswordExpireOption", "alterUser", "alterUserEntry", "alterUserList", 
			"dropUser", "createRole", "dropRole", "renameUser", "setDefaultRole", 
			"setRole", "setPassword", "authOption", "withGrantOption", "userOrRoles", 
			"roles", "grantAs", "withRoles", "userAuthOption", "identifiedBy", "identifiedWith", 
			"connectOption", "tlsOption", "userFuncAuthOption", "change", "changeMasterTo", 
			"changeReplicationFilter", "startSlave", "stopSlave", "groupReplication", 
			"startGroupReplication", "stopGroupReplication", "purgeBinaryLog", "threadTypes", 
			"threadType", "utilOption", "connectionOptions", "masterDefs", "masterDef", 
			"ignoreServerIds", "ignoreServerId", "filterDefs", "filterDef", "wildTables", 
			"wildTable"
		};
	}
	public static final String[] ruleNames = makeRuleNames();

	private static String[] makeLiteralNames() {
		return new String[] {
			null, "'SHARED'", "'EXCLUSIVE'", null, null, "'&&'", "'||'", "'!'", "'~'", 
			"'|'", "'&'", "'<<'", "'>>'", "'^'", "'%'", "':'", "'+'", "'-'", "'*'", 
			"'/'", "'\\'", "'.'", "'.*'", "'<=>'", "'=='", "'='", null, "'>'", "'>='", 
			"'<'", "'<='", "'#'", "'('", "')'", "'{'", "'}'", "'['", "']'", "','", 
			"'\"'", "'''", "'`'", "'?'", "'@'", "';'", "':='", "'->'", "'->>'", null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, "'INNODB'", "'REDO_LOG'", 
			null, "'DO NOT MATCH ANY THING, JUST FOR GENERATOR'", null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			null, null, null, null, null, null, null, null, null, null, null, null, 
			"'not support'"
		};
	}
	private static final String[] _LITERAL_NAMES = makeLiteralNames();
	private static String[] makeSymbolicNames() {
		return new String[] {
			null, null, null, "BLOCK_COMMENT", "INLINE_COMMENT", "AND_", "OR_", "NOT_", 
			"TILDE_", "VERTICAL_BAR_", "AMPERSAND_", "SIGNED_LEFT_SHIFT_", "SIGNED_RIGHT_SHIFT_", 
			"CARET_", "MOD_", "COLON_", "PLUS_", "MINUS_", "ASTERISK_", "SLASH_", 
			"BACKSLASH_", "DOT_", "DOT_ASTERISK_", "SAFE_EQ_", "DEQ_", "EQ_", "NEQ_", 
			"GT_", "GTE_", "LT_", "LTE_", "POUND_", "LP_", "RP_", "LBE_", "RBE_", 
			"LBT_", "RBT_", "COMMA_", "DQ_", "SQ_", "BQ_", "QUESTION_", "AT_", "SEMI_", 
			"ASSIGNMENT_", "JSON_SEPARATOR", "JSON_UNQUOTED_SEPARATOR", "WS", "MAX", 
			"MIN", "SUM", "COUNT", "GROUP_CONCAT", "CAST", "POSITION", "SUBSTRING", 
			"SUBSTR", "EXTRACT", "TRIM", "LAST_DAY", "TRADITIONAL", "TREE", "MYSQL_MAIN", 
			"MYSQL_ADMIN", "INSTANT", "INPLACE", "COPY", "UL_BINARY", "AUTOCOMMIT", 
			"INNODB", "REDO_LOG", "DELIMITER", "FOR_GENERATOR", "ACCESSIBLE", "ACCOUNT", 
			"ACTION", "ACTIVE", "ADD", "ADMIN", "AFTER", "AGAINST", "AGGREGATE", 
			"ALGORITHM", "ALL", "ALTER", "ALWAYS", "ANALYZE", "AND", "ANY", "ARRAY", 
			"AS", "ASC", "ASCII", "ASENSITIVE", "AT", "ATTRIBUTE", "AUTOEXTEND_SIZE", 
			"AUTO_INCREMENT", "AVG", "BIT_XOR", "AVG_ROW_LENGTH", "BACKUP", "BEFORE", 
			"BEGIN", "BETWEEN", "BIGINT", "BINARY", "BINLOG", "BIT", "BLOB", "BLOCK", 
			"BOOL", "BOOLEAN", "BOTH", "BTREE", "BUCKETS", "BY", "BYTE", "CACHE", 
			"CALL", "CASCADE", "CASCADED", "CASE", "CATALOG_NAME", "CHAIN", "CHANGE", 
			"CHANGED", "CHANNEL", "CHAR", "CHARACTER", "CHARSET", "CHECK", "CHECKSUM", 
			"CIPHER", "CLASS_ORIGIN", "CLIENT", "CLONE", "CLOSE", "COALESCE", "CODE", 
			"COLLATE", "COLLATION", "COLUMN", "COLUMNS", "COLUMN_FORMAT", "COLUMN_NAME", 
			"COMMENT", "COMMIT", "COMMITTED", "COMPACT", "COMPLETION", "COMPONENT", 
			"COMPRESSED", "COMPRESSION", "CONCURRENT", "CONDITION", "CONNECTION", 
			"CONSISTENT", "CONSTRAINT", "CONSTRAINT_CATALOG", "CONSTRAINT_NAME", 
			"CONSTRAINT_SCHEMA", "CONTAINS", "CONTEXT", "CONTINUE", "CONVERT", "CPU", 
			"CREATE", "CROSS", "CUBE", "CUME_DIST", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", 
			"CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "CURSOR_NAME", "DATA", 
			"DATABASE", "DATABASES", "DATAFILE", "DATE", "DATETIME", "DAY", "DAY_HOUR", 
			"DAY_MICROSECOND", "DAY_MINUTE", "DAY_SECOND", "DEALLOCATE", "DEC", "DECIMAL", 
			"DECLARE", "DEFAULT", "DEFAULT_AUTH", "DEFINER", "DEFINITION", "DELAYED", 
			"DELAY_KEY_WRITE", "DELETE", "DENSE_RANK", "DESC", "DESCRIBE", "DESCRIPTION", 
			"DETERMINISTIC", "DIAGNOSTICS", "DIRECTORY", "DISABLE", "DISCARD", "DISK", 
			"DISTINCT", "DISTINCTROW", "DIV", "DO", "DOUBLE", "DROP", "DUAL", "DUMPFILE", 
			"DUPLICATE", "DYNAMIC", "EACH", "ELSE", "ELSEIF", "EMPTY", "ENABLE", 
			"ENCLOSED", "ENCRYPTION", "END", "ENDS", "ENFORCED", "ENGINE", "ENGINES", 
			"ENGINE_ATTRIBUTE", "ENUM", "ERROR", "ERRORS", "ESCAPE", "ESCAPED", "EVENT", 
			"EVENTS", "EVERY", "EXCEPT", "EXCHANGE", "EXCLUDE", "EXECUTE", "EXISTS", 
			"EXIT", "EXPANSION", "EXPIRE", "EXPLAIN", "EXPORT", "EXTENDED", "EXTENT_SIZE", 
			"FAILED_LOGIN_ATTEMPTS", "FALSE", "FAST", "FAULTS", "FETCH", "FILE", 
			"FILE_BLOCK_SIZE", "FILTER", "FIRST", "FIRST_VALUE", "FIXED", "FLOAT", 
			"FLOAT4", "FLOAT8", "FLUSH", "FOLLOWING", "FOLLOWS", "FOR", "FORCE", 
			"FOREIGN", "FORMAT", "FOUND", "FROM", "FULL", "FULLTEXT", "FUNCTION", 
			"GENERAL", "GENERATED", "GEOMETRY", "GEOMETRYCOLLECTION", "GET", "GET_FORMAT", 
			"GET_MASTER_PUBLIC_KEY", "GLOBAL", "GRANT", "GRANTS", "GROUP", "GROUPING", 
			"GROUPS", "GROUP_REPLICATION", "HANDLER", "HASH", "HAVING", "HELP", "HIGH_PRIORITY", 
			"HISTOGRAM", "HISTORY", "HOST", "HOSTS", "HOUR", "HOUR_MICROSECOND", 
			"HOUR_MINUTE", "HOUR_SECOND", "IDENTIFIED", "IF", "IGNORE", "IGNORE_SERVER_IDS", 
			"IMPORT", "IN", "INACTIVE", "INDEX", "INDEXES", "INFILE", "INITIAL_SIZE", 
			"INNER", "INOUT", "INSENSITIVE", "INSERT", "INSERT_METHOD", "INSTALL", 
			"INSTANCE", "INT", "INT1", "INT2", "INT3", "INT4", "INT8", "INTEGER", 
			"INTERVAL", "INTO", "INVISIBLE", "INVOKER", "IO", "IO_AFTER_GTIDS", "IO_BEFORE_GTIDS", 
			"IPC", "IS", "ISOLATION", "ISSUER", "ITERATE", "JOIN", "JSON", "JSON_TABLE", 
			"JSON_VALUE", "KEY", "KEYS", "KEY_BLOCK_SIZE", "KILL", "LAG", "LANGUAGE", 
			"LAST", "LAST_VALUE", "LATERAL", "LEAD", "LEADING", "LEAVE", "LEAVES", 
			"LEFT", "LESS", "LEVEL", "LIKE", "LIMIT", "LINEAR", "LINES", "LINESTRING", 
			"LIST", "LOAD", "LOCAL", "LOCALTIME", "LOCALTIMESTAMP", "LOCK", "LOCKED", 
			"LOCKS", "LOGFILE", "LOGS", "LONG", "LONGBLOB", "LONGTEXT", "LOOP", "LOW_PRIORITY", 
			"MASTER", "MASTER_AUTO_POSITION", "MASTER_BIND", "MASTER_COMPRESSION_ALGORITHM", 
			"MASTER_CONNECT_RETRY", "MASTER_DELAY", "MASTER_HEARTBEAT_PERIOD", "MASTER_HOST", 
			"MASTER_LOG_FILE", "MASTER_LOG_POS", "MASTER_PASSWORD", "MASTER_PORT", 
			"MASTER_PUBLIC_KEY_PATH", "MASTER_RETRY_COUNT", "MASTER_SERVER_ID", "MASTER_SSL", 
			"MASTER_SSL_CA", "MASTER_SSL_CAPATH", "MASTER_SSL_CERT", "MASTER_SSL_CIPHER", 
			"MASTER_SSL_CRL", "MASTER_SSL_CRLPATH", "MASTER_SSL_KEY", "MASTER_SSL_VERIFY_SERVER_CERT", 
			"MASTER_TLS_CIPHERSUITES", "MASTER_TLS_VERSION", "MASTER_USER", "MASTER_ZSTD_COMPRESSION_LEVEL", 
			"MATCH", "MAXVALUE", "MAX_CONNECTIONS_PER_HOUR", "MAX_QUERIES_PER_HOUR", 
			"MAX_ROWS", "MAX_SIZE", "MAX_UPDATES_PER_HOUR", "MAX_USER_CONNECTIONS", 
			"MEDIUM", "MEDIUMBLOB", "MEDIUMINT", "MEDIUMTEXT", "MEMBER", "MEMORY", 
			"MERGE", "MESSAGE_TEXT", "MICROSECOND", "MIDDLEINT", "MIGRATE", "MINUTE", 
			"MINUTE_MICROSECOND", "MINUTE_SECOND", "MIN_ROWS", "MOD", "MODE", "MODIFIES", 
			"MODIFY", "MONTH", "MULTILINESTRING", "MULTIPOINT", "MULTIPOLYGON", "MUTEX", 
			"MYSQL_ERRNO", "NAME", "NAMES", "NATIONAL", "NATURAL", "NCHAR", "NDBCLUSTER", 
			"NESTED", "NETWORK_NAMESPACE", "NEVER", "NEW", "NEXT", "NO", "NODEGROUP", 
			"NONE", "NOT", "NOWAIT", "NO_WAIT", "NO_WRITE_TO_BINLOG", "NTH_VALUE", 
			"NTILE", "NULL", "NULLS", "NUMBER", "NUMERIC", "NVARCHAR", "OF", "OFF", 
			"OFFSET", "OJ", "OLD", "ON", "ONE", "ONLY", "OPEN", "OPTIMIZE", "OPTIMIZER_COSTS", 
			"OPTION", "OPTIONAL", "OPTIONALLY", "OPTIONS", "OR", "ORDER", "ORDINALITY", 
			"ORGANIZATION", "OTHERS", "OUT", "OUTER", "OUTFILE", "OVER", "OWNER", 
			"PACK_KEYS", "PAGE", "PARSER", "PARTIAL", "PARTITION", "PARTITIONING", 
			"PARTITIONS", "PASSWORD", "PASSWORD_LOCK_TIME", "PATH", "PERCENT_RANK", 
			"PERSIST", "PERSIST_ONLY", "PHASE", "PLUGIN", "PLUGINS", "PLUGIN_DIR", 
			"POINT", "POLYGON", "PORT", "PRECEDES", "PRECEDING", "PRECISION", "PREPARE", 
			"PRESERVE", "PREV", "PRIMARY", "PRIVILEGES", "PRIVILEGE_CHECKS_USER", 
			"PROCEDURE", "PROCESS", "PROCESSLIST", "PROFILE", "PROFILES", "PROXY", 
			"PURGE", "QUARTER", "QUERY", "QUICK", "RANDOM", "RANGE", "RANK", "READ", 
			"READS", "READ_ONLY", "READ_WRITE", "REAL", "REBUILD", "RECOVER", "RECURSIVE", 
			"REDO_BUFFER_SIZE", "REDUNDANT", "REFERENCE", "REFERENCES", "REGEXP", 
			"RELAY", "RELAYLOG", "RELAY_LOG_FILE", "RELAY_LOG_POS", "RELAY_THREAD", 
			"RELEASE", "RELOAD", "REMOVE", "RENAME", "REORGANIZE", "REPAIR", "REPEAT", 
			"REPEATABLE", "REPLACE", "REPLICA", "REPLICAS", "REPLICATE_DO_DB", "REPLICATE_DO_TABLE", 
			"REPLICATE_IGNORE_DB", "REPLICATE_IGNORE_TABLE", "REPLICATE_REWRITE_DB", 
			"REPLICATE_WILD_DO_TABLE", "REPLICATE_WILD_IGNORE_TABLE", "REPLICATION", 
			"REQUIRE", "REQUIRE_ROW_FORMAT", "RESET", "RESIGNAL", "RESOURCE", "RESPECT", 
			"RESTART", "RESTORE", "RESTRICT", "RESUME", "RETAIN", "RETURN", "RETURNED_SQLSTATE", 
			"RETURNING", "RETURNS", "REUSE", "REVERSE", "REVOKE", "RIGHT", "RLIKE", 
			"ROLE", "ROLLBACK", "ROLLUP", "ROTATE", "ROUTINE", "ROW", "ROWS", "ROW_COUNT", 
			"ROW_FORMAT", "ROW_NUMBER", "RTREE", "SAVEPOINT", "SCHEDULE", "SCHEMA", 
			"SCHEMAS", "SCHEMA_NAME", "SECOND", "SECONDARY", "SECONDARY_ENGINE", 
			"SECONDARY_ENGINE_ATTRIBUTE", "SECONDARY_LOAD", "SECONDARY_UNLOAD", "SECOND_MICROSECOND", 
			"SECURITY", "SELECT", "SENSITIVE", "SEPARATOR", "SERIAL", "SERIALIZABLE", 
			"SERVER", "SESSION", "SET", "SHARE", "SHOW", "SHUTDOWN", "SIGNAL", "SIGNED", 
			"SIMPLE", "SKIP_SYMBOL", "SLAVE", "SLOW", "SMALLINT", "SNAPSHOT", "SOCKET", 
			"SONAME", "SOUNDS", "SOURCE", "SPATIAL", "SPECIFIC", "SQL", "SQLEXCEPTION", 
			"SQLSTATE", "SQLWARNING", "SQL_AFTER_GTIDS", "SQL_AFTER_MTS_GAPS", "SQL_BEFORE_GTIDS", 
			"SQL_BIG_RESULT", "SQL_BUFFER_RESULT", "SQL_CALC_FOUND_ROWS", "SQL_NO_CACHE", 
			"SQL_SMALL_RESULT", "SQL_THREAD", "SRID", "SSL", "STACKED", "START", 
			"STARTING", "STARTS", "STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES", 
			"STATUS", "STOP", "STORAGE", "STORED", "STRAIGHT_JOIN", "STREAM", "STRING", 
			"SUBCLASS_ORIGIN", "SUBJECT", "SUBPARTITION", "SUBPARTITIONS", "SUPER", 
			"SUSPEND", "SWAPS", "SWITCHES", "SYSTEM", "TABLE", "TABLES", "TABLESPACE", 
			"TABLE_CHECKSUM", "TABLE_NAME", "TEMPORARY", "TEMPTABLE", "TERMINATED", 
			"TEXT", "THAN", "THEN", "THREAD_PRIORITY", "TIES", "TIME", "TIMESTAMP", 
			"TIMESTAMP_ADD", "TIMESTAMP_DIFF", "TINYBLOB", "TINYINT", "TINYTEXT", 
			"TLS", "TO", "TRAILING", "TRANSACTION", "TRIGGER", "TRIGGERS", "TRUE", 
			"TRUNCATE", "TYPE", "TYPES", "UNBOUNDED", "UNCOMMITTED", "UNDEFINED", 
			"UNDO", "UNDOFILE", "UNDO_BUFFER_SIZE", "UNICODE", "UNINSTALL", "UNION", 
			"UNIQUE", "UNKNOWN", "UNLOCK", "UNSIGNED", "UNTIL", "UPDATE", "UPGRADE", 
			"USAGE", "USE", "USER", "USER_RESOURCES", "USE_FRM", "USING", "UTC_DATE", 
			"UTC_TIME", "UTC_TIMESTAMP", "VALIDATION", "VALUE", "VALUES", "VARBINARY", 
			"VARCHAR", "VARCHARACTER", "VARIABLES", "VARYING", "VCPU", "VIEW", "VIRTUAL", 
			"VISIBLE", "WAIT", "WARNINGS", "WEEK", "WEIGHT_STRING", "WHEN", "WHERE", 
			"WHILE", "WINDOW", "WITH", "WITHOUT", "WORK", "WRAPPER", "WRITE", "X509", 
			"XA", "XID", "XML", "XOR", "YEAR", "YEAR_MONTH", "ZEROFILL", "JSON_ARRAY", 
			"JSON_ARRAY_APPEND", "JSON_ARRAY_INSERT", "JSON_CONTAINS", "JSON_CONTAINS_PATH", 
			"JSON_DEPTH", "JSON_EXTRACT", "JSON_INSERT", "JSON_KEYS", "JSON_LENGTH", 
			"JSON_MERGE", "JSON_MERGE_PATCH", "JSON_MERGE_PRESERVE", "JSON_OBJECT", 
			"JSON_OVERLAPS", "JSON_PRETTY", "JSON_QUOTE", "JSON_REMOVE", "JSON_REPLACE", 
			"JSON_SCHEMA_VALID", "JSON_SCHEMA_VALIDATION_REPORT", "JSON_SEARCH", 
			"JSON_SET", "JSON_STORAGE_FREE", "JSON_STORAGE_SIZE", "JSON_TYPE", "JSON_UNQUOTE", 
			"JSON_VALID", "FILESIZE_LITERAL", "SINGLE_QUOTED_TEXT", "DOUBLE_QUOTED_TEXT", 
			"NCHAR_TEXT", "UNDERSCORE_CHARSET", "NUMBER_", "INT_NUM_", "FLOAT_NUM_", 
			"DECIMAL_NUM_", "HEX_DIGIT_", "BIT_NUM_", "IDENTIFIER_", "NOT_SUPPORT_", 
			"FIELDS"
		};
	}
	private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
	public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);

	/**
	 * @deprecated Use {@link #VOCABULARY} instead.
	 */
	@Deprecated
	public static final String[] tokenNames;
	static {
		tokenNames = new String[_SYMBOLIC_NAMES.length];
		for (int i = 0; i < tokenNames.length; i++) {
			tokenNames[i] = VOCABULARY.getLiteralName(i);
			if (tokenNames[i] == null) {
				tokenNames[i] = VOCABULARY.getSymbolicName(i);
			}

			if (tokenNames[i] == null) {
				tokenNames[i] = "";
			}
		}
	}

	@Override
	@Deprecated
	public String[] getTokenNames() {
		return tokenNames;
	}

	@Override

	public Vocabulary getVocabulary() {
		return VOCABULARY;
	}

	@Override
	public String getGrammarFileName() { return "MySQLStatement.g4"; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String getSerializedATN() { return _serializedATN; }

	@Override
	public ATN getATN() { return _ATN; }

	public MySQLStatementParser(TokenStream input) {
		super(input);
		_interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	public static class ExecuteContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public ReplaceContext replace() {
			return getRuleContext(ReplaceContext.class,0);
		}
		public BinlogContext binlog() {
			return getRuleContext(BinlogContext.class,0);
		}
		public CreateTableContext createTable() {
			return getRuleContext(CreateTableContext.class,0);
		}
		public AlterStatementContext alterStatement() {
			return getRuleContext(AlterStatementContext.class,0);
		}
		public RepairTableContext repairTable() {
			return getRuleContext(RepairTableContext.class,0);
		}
		public DropTableContext dropTable() {
			return getRuleContext(DropTableContext.class,0);
		}
		public TruncateTableContext truncateTable() {
			return getRuleContext(TruncateTableContext.class,0);
		}
		public CreateIndexContext createIndex() {
			return getRuleContext(CreateIndexContext.class,0);
		}
		public DropIndexContext dropIndex() {
			return getRuleContext(DropIndexContext.class,0);
		}
		public CreateProcedureContext createProcedure() {
			return getRuleContext(CreateProcedureContext.class,0);
		}
		public DropProcedureContext dropProcedure() {
			return getRuleContext(DropProcedureContext.class,0);
		}
		public CreateFunctionContext createFunction() {
			return getRuleContext(CreateFunctionContext.class,0);
		}
		public DropFunctionContext dropFunction() {
			return getRuleContext(DropFunctionContext.class,0);
		}
		public CreateDatabaseContext createDatabase() {
			return getRuleContext(CreateDatabaseContext.class,0);
		}
		public DropDatabaseContext dropDatabase() {
			return getRuleContext(DropDatabaseContext.class,0);
		}
		public CreateEventContext createEvent() {
			return getRuleContext(CreateEventContext.class,0);
		}
		public DropEventContext dropEvent() {
			return getRuleContext(DropEventContext.class,0);
		}
		public CreateLogfileGroupContext createLogfileGroup() {
			return getRuleContext(CreateLogfileGroupContext.class,0);
		}
		public DropLogfileGroupContext dropLogfileGroup() {
			return getRuleContext(DropLogfileGroupContext.class,0);
		}
		public CreateServerContext createServer() {
			return getRuleContext(CreateServerContext.class,0);
		}
		public DropServerContext dropServer() {
			return getRuleContext(DropServerContext.class,0);
		}
		public CreateViewContext createView() {
			return getRuleContext(CreateViewContext.class,0);
		}
		public DropViewContext dropView() {
			return getRuleContext(DropViewContext.class,0);
		}
		public CreateTriggerContext createTrigger() {
			return getRuleContext(CreateTriggerContext.class,0);
		}
		public DropTriggerContext dropTrigger() {
			return getRuleContext(DropTriggerContext.class,0);
		}
		public AlterResourceGroupContext alterResourceGroup() {
			return getRuleContext(AlterResourceGroupContext.class,0);
		}
		public CreateResourceGroupContext createResourceGroup() {
			return getRuleContext(CreateResourceGroupContext.class,0);
		}
		public DropResourceGroupContext dropResourceGroup() {
			return getRuleContext(DropResourceGroupContext.class,0);
		}
		public PrepareContext prepare() {
			return getRuleContext(PrepareContext.class,0);
		}
		public ExecuteStmtContext executeStmt() {
			return getRuleContext(ExecuteStmtContext.class,0);
		}
		public DeallocateContext deallocate() {
			return getRuleContext(DeallocateContext.class,0);
		}
		public SetTransactionContext setTransaction() {
			return getRuleContext(SetTransactionContext.class,0);
		}
		public BeginTransactionContext beginTransaction() {
			return getRuleContext(BeginTransactionContext.class,0);
		}
		public SetAutoCommitContext setAutoCommit() {
			return getRuleContext(SetAutoCommitContext.class,0);
		}
		public CommitContext commit() {
			return getRuleContext(CommitContext.class,0);
		}
		public RollbackContext rollback() {
			return getRuleContext(RollbackContext.class,0);
		}
		public SavepointContext savepoint() {
			return getRuleContext(SavepointContext.class,0);
		}
		public GrantContext grant() {
			return getRuleContext(GrantContext.class,0);
		}
		public RevokeContext revoke() {
			return getRuleContext(RevokeContext.class,0);
		}
		public CreateUserContext createUser() {
			return getRuleContext(CreateUserContext.class,0);
		}
		public DropUserContext dropUser() {
			return getRuleContext(DropUserContext.class,0);
		}
		public AlterUserContext alterUser() {
			return getRuleContext(AlterUserContext.class,0);
		}
		public RenameUserContext renameUser() {
			return getRuleContext(RenameUserContext.class,0);
		}
		public CreateRoleContext createRole() {
			return getRuleContext(CreateRoleContext.class,0);
		}
		public DropRoleContext dropRole() {
			return getRuleContext(DropRoleContext.class,0);
		}
		public SetDefaultRoleContext setDefaultRole() {
			return getRuleContext(SetDefaultRoleContext.class,0);
		}
		public SetRoleContext setRole() {
			return getRuleContext(SetRoleContext.class,0);
		}
		public CreateSRSStatementContext createSRSStatement() {
			return getRuleContext(CreateSRSStatementContext.class,0);
		}
		public DropSRSStatementContext dropSRSStatement() {
			return getRuleContext(DropSRSStatementContext.class,0);
		}
		public FlushContext flush() {
			return getRuleContext(FlushContext.class,0);
		}
		public GetDiagnosticsStatementContext getDiagnosticsStatement() {
			return getRuleContext(GetDiagnosticsStatementContext.class,0);
		}
		public GroupReplicationContext groupReplication() {
			return getRuleContext(GroupReplicationContext.class,0);
		}
		public HandlerStatementContext handlerStatement() {
			return getRuleContext(HandlerStatementContext.class,0);
		}
		public HelpContext help() {
			return getRuleContext(HelpContext.class,0);
		}
		public ImportStatementContext importStatement() {
			return getRuleContext(ImportStatementContext.class,0);
		}
		public InstallContext install() {
			return getRuleContext(InstallContext.class,0);
		}
		public KillContext kill() {
			return getRuleContext(KillContext.class,0);
		}
		public LoadStatementContext loadStatement() {
			return getRuleContext(LoadStatementContext.class,0);
		}
		public LockContext lock() {
			return getRuleContext(LockContext.class,0);
		}
		public CacheIndexContext cacheIndex() {
			return getRuleContext(CacheIndexContext.class,0);
		}
		public LoadIndexInfoContext loadIndexInfo() {
			return getRuleContext(LoadIndexInfoContext.class,0);
		}
		public OptimizeTableContext optimizeTable() {
			return getRuleContext(OptimizeTableContext.class,0);
		}
		public PurgeBinaryLogContext purgeBinaryLog() {
			return getRuleContext(PurgeBinaryLogContext.class,0);
		}
		public ReleaseSavepointContext releaseSavepoint() {
			return getRuleContext(ReleaseSavepointContext.class,0);
		}
		public ResetStatementContext resetStatement() {
			return getRuleContext(ResetStatementContext.class,0);
		}
		public SetPasswordContext setPassword() {
			return getRuleContext(SetPasswordContext.class,0);
		}
		public SetResourceGroupContext setResourceGroup() {
			return getRuleContext(SetResourceGroupContext.class,0);
		}
		public ResignalStatementContext resignalStatement() {
			return getRuleContext(ResignalStatementContext.class,0);
		}
		public SignalStatementContext signalStatement() {
			return getRuleContext(SignalStatementContext.class,0);
		}
		public RestartContext restart() {
			return getRuleContext(RestartContext.class,0);
		}
		public ShutdownContext shutdown() {
			return getRuleContext(ShutdownContext.class,0);
		}
		public BeginContext begin() {
			return getRuleContext(BeginContext.class,0);
		}
		public UseContext use() {
			return getRuleContext(UseContext.class,0);
		}
		public ExplainContext explain() {
			return getRuleContext(ExplainContext.class,0);
		}
		public DoStatementContext doStatement() {
			return getRuleContext(DoStatementContext.class,0);
		}
		public ShowContext show() {
			return getRuleContext(ShowContext.class,0);
		}
		public SetVariableContext setVariable() {
			return getRuleContext(SetVariableContext.class,0);
		}
		public SetCharacterContext setCharacter() {
			return getRuleContext(SetCharacterContext.class,0);
		}
		public CallContext call() {
			return getRuleContext(CallContext.class,0);
		}
		public ChangeContext change() {
			return getRuleContext(ChangeContext.class,0);
		}
		public CheckTableContext checkTable() {
			return getRuleContext(CheckTableContext.class,0);
		}
		public ChecksumTableContext checksumTable() {
			return getRuleContext(ChecksumTableContext.class,0);
		}
		public CloneContext clone() {
			return getRuleContext(CloneContext.class,0);
		}
		public StartSlaveContext startSlave() {
			return getRuleContext(StartSlaveContext.class,0);
		}
		public StopSlaveContext stopSlave() {
			return getRuleContext(StopSlaveContext.class,0);
		}
		public AnalyzeTableContext analyzeTable() {
			return getRuleContext(AnalyzeTableContext.class,0);
		}
		public RenameTableContext renameTable() {
			return getRuleContext(RenameTableContext.class,0);
		}
		public UninstallContext uninstall() {
			return getRuleContext(UninstallContext.class,0);
		}
		public UnlockContext unlock() {
			return getRuleContext(UnlockContext.class,0);
		}
		public XaContext xa() {
			return getRuleContext(XaContext.class,0);
		}
		public CreateLoadableFunctionContext createLoadableFunction() {
			return getRuleContext(CreateLoadableFunctionContext.class,0);
		}
		public CreateTablespaceContext createTablespace() {
			return getRuleContext(CreateTablespaceContext.class,0);
		}
		public AlterTablespaceContext alterTablespace() {
			return getRuleContext(AlterTablespaceContext.class,0);
		}
		public DropTablespaceContext dropTablespace() {
			return getRuleContext(DropTablespaceContext.class,0);
		}
		public DelimiterContext delimiter() {
			return getRuleContext(DelimiterContext.class,0);
		}
		public TerminalNode SEMI_() { return getToken(MySQLStatementParser.SEMI_, 0); }
		public TerminalNode EOF() { return getToken(MySQLStatementParser.EOF, 0); }
		public ExecuteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_execute; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExecute(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteContext execute() throws RecognitionException {
		ExecuteContext _localctx = new ExecuteContext(_ctx, getState());
		enterRule(_localctx, 0, RULE_execute);
		try {
			setState(1274);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
			case DELIMITER:
			case ALTER:
			case ANALYZE:
			case BEGIN:
			case BINLOG:
			case CACHE:
			case CALL:
			case CHANGE:
			case CHECK:
			case CHECKSUM:
			case CLONE:
			case COMMIT:
			case CREATE:
			case DEALLOCATE:
			case DELETE:
			case DESC:
			case DESCRIBE:
			case DO:
			case DROP:
			case EXECUTE:
			case EXPLAIN:
			case FLUSH:
			case GET:
			case GRANT:
			case HANDLER:
			case HELP:
			case IMPORT:
			case INSERT:
			case INSTALL:
			case KILL:
			case LOAD:
			case LOCK:
			case OPTIMIZE:
			case PREPARE:
			case PURGE:
			case RELEASE:
			case RENAME:
			case REPAIR:
			case REPLACE:
			case RESET:
			case RESIGNAL:
			case RESTART:
			case REVOKE:
			case ROLLBACK:
			case SAVEPOINT:
			case SELECT:
			case SET:
			case SHOW:
			case SHUTDOWN:
			case SIGNAL:
			case START:
			case STOP:
			case TABLE:
			case TRUNCATE:
			case UNINSTALL:
			case UNLOCK:
			case UPDATE:
			case USE:
			case VALUES:
			case WITH:
			case XA:
				enterOuterAlt(_localctx, 1);
				{
				setState(1264);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
				case 1:
					{
					setState(1164);
					select();
					}
					break;
				case 2:
					{
					setState(1165);
					insert();
					}
					break;
				case 3:
					{
					setState(1166);
					update();
					}
					break;
				case 4:
					{
					setState(1167);
					delete();
					}
					break;
				case 5:
					{
					setState(1168);
					replace();
					}
					break;
				case 6:
					{
					setState(1169);
					binlog();
					}
					break;
				case 7:
					{
					setState(1170);
					createTable();
					}
					break;
				case 8:
					{
					setState(1171);
					alterStatement();
					}
					break;
				case 9:
					{
					setState(1172);
					repairTable();
					}
					break;
				case 10:
					{
					setState(1173);
					dropTable();
					}
					break;
				case 11:
					{
					setState(1174);
					truncateTable();
					}
					break;
				case 12:
					{
					setState(1175);
					createIndex();
					}
					break;
				case 13:
					{
					setState(1176);
					dropIndex();
					}
					break;
				case 14:
					{
					setState(1177);
					createProcedure();
					}
					break;
				case 15:
					{
					setState(1178);
					dropProcedure();
					}
					break;
				case 16:
					{
					setState(1179);
					createFunction();
					}
					break;
				case 17:
					{
					setState(1180);
					dropFunction();
					}
					break;
				case 18:
					{
					setState(1181);
					createDatabase();
					}
					break;
				case 19:
					{
					setState(1182);
					dropDatabase();
					}
					break;
				case 20:
					{
					setState(1183);
					createEvent();
					}
					break;
				case 21:
					{
					setState(1184);
					dropEvent();
					}
					break;
				case 22:
					{
					setState(1185);
					createLogfileGroup();
					}
					break;
				case 23:
					{
					setState(1186);
					dropLogfileGroup();
					}
					break;
				case 24:
					{
					setState(1187);
					createServer();
					}
					break;
				case 25:
					{
					setState(1188);
					dropServer();
					}
					break;
				case 26:
					{
					setState(1189);
					createView();
					}
					break;
				case 27:
					{
					setState(1190);
					dropView();
					}
					break;
				case 28:
					{
					setState(1191);
					createTrigger();
					}
					break;
				case 29:
					{
					setState(1192);
					dropTrigger();
					}
					break;
				case 30:
					{
					setState(1193);
					alterResourceGroup();
					}
					break;
				case 31:
					{
					setState(1194);
					createResourceGroup();
					}
					break;
				case 32:
					{
					setState(1195);
					dropResourceGroup();
					}
					break;
				case 33:
					{
					setState(1196);
					prepare();
					}
					break;
				case 34:
					{
					setState(1197);
					executeStmt();
					}
					break;
				case 35:
					{
					setState(1198);
					deallocate();
					}
					break;
				case 36:
					{
					setState(1199);
					setTransaction();
					}
					break;
				case 37:
					{
					setState(1200);
					beginTransaction();
					}
					break;
				case 38:
					{
					setState(1201);
					setAutoCommit();
					}
					break;
				case 39:
					{
					setState(1202);
					commit();
					}
					break;
				case 40:
					{
					setState(1203);
					rollback();
					}
					break;
				case 41:
					{
					setState(1204);
					savepoint();
					}
					break;
				case 42:
					{
					setState(1205);
					grant();
					}
					break;
				case 43:
					{
					setState(1206);
					revoke();
					}
					break;
				case 44:
					{
					setState(1207);
					createUser();
					}
					break;
				case 45:
					{
					setState(1208);
					dropUser();
					}
					break;
				case 46:
					{
					setState(1209);
					alterUser();
					}
					break;
				case 47:
					{
					setState(1210);
					renameUser();
					}
					break;
				case 48:
					{
					setState(1211);
					createRole();
					}
					break;
				case 49:
					{
					setState(1212);
					dropRole();
					}
					break;
				case 50:
					{
					setState(1213);
					setDefaultRole();
					}
					break;
				case 51:
					{
					setState(1214);
					setRole();
					}
					break;
				case 52:
					{
					setState(1215);
					createSRSStatement();
					}
					break;
				case 53:
					{
					setState(1216);
					dropSRSStatement();
					}
					break;
				case 54:
					{
					setState(1217);
					flush();
					}
					break;
				case 55:
					{
					setState(1218);
					getDiagnosticsStatement();
					}
					break;
				case 56:
					{
					setState(1219);
					groupReplication();
					}
					break;
				case 57:
					{
					setState(1220);
					handlerStatement();
					}
					break;
				case 58:
					{
					setState(1221);
					help();
					}
					break;
				case 59:
					{
					setState(1222);
					importStatement();
					}
					break;
				case 60:
					{
					setState(1223);
					install();
					}
					break;
				case 61:
					{
					setState(1224);
					kill();
					}
					break;
				case 62:
					{
					setState(1225);
					loadStatement();
					}
					break;
				case 63:
					{
					setState(1226);
					lock();
					}
					break;
				case 64:
					{
					setState(1227);
					cacheIndex();
					}
					break;
				case 65:
					{
					setState(1228);
					loadIndexInfo();
					}
					break;
				case 66:
					{
					setState(1229);
					optimizeTable();
					}
					break;
				case 67:
					{
					setState(1230);
					purgeBinaryLog();
					}
					break;
				case 68:
					{
					setState(1231);
					releaseSavepoint();
					}
					break;
				case 69:
					{
					setState(1232);
					resetStatement();
					}
					break;
				case 70:
					{
					setState(1233);
					setPassword();
					}
					break;
				case 71:
					{
					setState(1234);
					setTransaction();
					}
					break;
				case 72:
					{
					setState(1235);
					setResourceGroup();
					}
					break;
				case 73:
					{
					setState(1236);
					resignalStatement();
					}
					break;
				case 74:
					{
					setState(1237);
					signalStatement();
					}
					break;
				case 75:
					{
					setState(1238);
					restart();
					}
					break;
				case 76:
					{
					setState(1239);
					shutdown();
					}
					break;
				case 77:
					{
					setState(1240);
					begin();
					}
					break;
				case 78:
					{
					setState(1241);
					use();
					}
					break;
				case 79:
					{
					setState(1242);
					explain();
					}
					break;
				case 80:
					{
					setState(1243);
					doStatement();
					}
					break;
				case 81:
					{
					setState(1244);
					show();
					}
					break;
				case 82:
					{
					setState(1245);
					setVariable();
					}
					break;
				case 83:
					{
					setState(1246);
					setCharacter();
					}
					break;
				case 84:
					{
					setState(1247);
					call();
					}
					break;
				case 85:
					{
					setState(1248);
					change();
					}
					break;
				case 86:
					{
					setState(1249);
					checkTable();
					}
					break;
				case 87:
					{
					setState(1250);
					checksumTable();
					}
					break;
				case 88:
					{
					setState(1251);
					clone();
					}
					break;
				case 89:
					{
					setState(1252);
					startSlave();
					}
					break;
				case 90:
					{
					setState(1253);
					stopSlave();
					}
					break;
				case 91:
					{
					setState(1254);
					analyzeTable();
					}
					break;
				case 92:
					{
					setState(1255);
					renameTable();
					}
					break;
				case 93:
					{
					setState(1256);
					uninstall();
					}
					break;
				case 94:
					{
					setState(1257);
					unlock();
					}
					break;
				case 95:
					{
					setState(1258);
					xa();
					}
					break;
				case 96:
					{
					setState(1259);
					createLoadableFunction();
					}
					break;
				case 97:
					{
					setState(1260);
					createTablespace();
					}
					break;
				case 98:
					{
					setState(1261);
					alterTablespace();
					}
					break;
				case 99:
					{
					setState(1262);
					dropTablespace();
					}
					break;
				case 100:
					{
					setState(1263);
					delimiter();
					}
					break;
				}
				setState(1271);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SEMI_:
					{
					setState(1266);
					match(SEMI_);
					setState(1268);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,1,_ctx) ) {
					case 1:
						{
						setState(1267);
						match(EOF);
						}
						break;
					}
					}
					break;
				case EOF:
					{
					setState(1270);
					match(EOF);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case EOF:
				enterOuterAlt(_localctx, 2);
				{
				setState(1273);
				match(EOF);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterStatementContext extends ParserRuleContext {
		public AlterTableContext alterTable() {
			return getRuleContext(AlterTableContext.class,0);
		}
		public AlterDatabaseContext alterDatabase() {
			return getRuleContext(AlterDatabaseContext.class,0);
		}
		public AlterProcedureContext alterProcedure() {
			return getRuleContext(AlterProcedureContext.class,0);
		}
		public AlterFunctionContext alterFunction() {
			return getRuleContext(AlterFunctionContext.class,0);
		}
		public AlterEventContext alterEvent() {
			return getRuleContext(AlterEventContext.class,0);
		}
		public AlterViewContext alterView() {
			return getRuleContext(AlterViewContext.class,0);
		}
		public AlterLogfileGroupContext alterLogfileGroup() {
			return getRuleContext(AlterLogfileGroupContext.class,0);
		}
		public AlterInstanceContext alterInstance() {
			return getRuleContext(AlterInstanceContext.class,0);
		}
		public AlterServerContext alterServer() {
			return getRuleContext(AlterServerContext.class,0);
		}
		public AlterStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterStatementContext alterStatement() throws RecognitionException {
		AlterStatementContext _localctx = new AlterStatementContext(_ctx, getState());
		enterRule(_localctx, 2, RULE_alterStatement);
		try {
			setState(1285);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1276);
				alterTable();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1277);
				alterDatabase();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1278);
				alterProcedure();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1279);
				alterFunction();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1280);
				alterEvent();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1281);
				alterView();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(1282);
				alterLogfileGroup();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(1283);
				alterInstance();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(1284);
				alterServer();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public CreateLikeClauseContext createLikeClause() {
			return getRuleContext(CreateLikeClauseContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySQLStatementParser.TEMPORARY, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateDefinitionClauseContext createDefinitionClause() {
			return getRuleContext(CreateDefinitionClauseContext.class,0);
		}
		public CreateTableOptionsContext createTableOptions() {
			return getRuleContext(CreateTableOptionsContext.class,0);
		}
		public PartitionClauseContext partitionClause() {
			return getRuleContext(PartitionClauseContext.class,0);
		}
		public DuplicateAsQueryExpressionContext duplicateAsQueryExpression() {
			return getRuleContext(DuplicateAsQueryExpressionContext.class,0);
		}
		public CreateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableContext createTable() throws RecognitionException {
		CreateTableContext _localctx = new CreateTableContext(_ctx, getState());
		enterRule(_localctx, 4, RULE_createTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1287);
			match(CREATE);
			setState(1289);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMPORARY) {
				{
				setState(1288);
				match(TEMPORARY);
				}
			}

			setState(1291);
			match(TABLE);
			setState(1293);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1292);
				ifNotExists();
				}
			}

			setState(1295);
			tableName();
			setState(1309);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) {
			case 1:
				{
				setState(1297);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
				case 1:
					{
					setState(1296);
					createDefinitionClause();
					}
					break;
				}
				setState(1300);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) {
				case 1:
					{
					setState(1299);
					createTableOptions();
					}
					break;
				}
				setState(1303);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PARTITION) {
					{
					setState(1302);
					partitionClause();
					}
				}

				setState(1306);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
				case 1:
					{
					setState(1305);
					duplicateAsQueryExpression();
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(1308);
				createLikeClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionClauseContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public PartitionTypeDefContext partitionTypeDef() {
			return getRuleContext(PartitionTypeDefContext.class,0);
		}
		public TerminalNode PARTITIONS() { return getToken(MySQLStatementParser.PARTITIONS, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public SubPartitionsContext subPartitions() {
			return getRuleContext(SubPartitionsContext.class,0);
		}
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public PartitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionClauseContext partitionClause() throws RecognitionException {
		PartitionClauseContext _localctx = new PartitionClauseContext(_ctx, getState());
		enterRule(_localctx, 6, RULE_partitionClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1311);
			match(PARTITION);
			setState(1312);
			match(BY);
			setState(1313);
			partitionTypeDef();
			setState(1316);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
			case 1:
				{
				setState(1314);
				match(PARTITIONS);
				setState(1315);
				match(NUMBER_);
				}
				break;
			}
			setState(1319);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
			case 1:
				{
				setState(1318);
				subPartitions();
				}
				break;
			}
			setState(1322);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) {
			case 1:
				{
				setState(1321);
				partitionDefinitions();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionTypeDefContext extends ParserRuleContext {
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode LINEAR() { return getToken(MySQLStatementParser.LINEAR, 0); }
		public PartitionKeyAlgorithmContext partitionKeyAlgorithm() {
			return getRuleContext(PartitionKeyAlgorithmContext.class,0);
		}
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode HASH() { return getToken(MySQLStatementParser.HASH, 0); }
		public BitExprContext bitExpr() {
			return getRuleContext(BitExprContext.class,0);
		}
		public TerminalNode RANGE() { return getToken(MySQLStatementParser.RANGE, 0); }
		public TerminalNode LIST() { return getToken(MySQLStatementParser.LIST, 0); }
		public TerminalNode COLUMNS() { return getToken(MySQLStatementParser.COLUMNS, 0); }
		public PartitionTypeDefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionTypeDef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionTypeDef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionTypeDefContext partitionTypeDef() throws RecognitionException {
		PartitionTypeDefContext _localctx = new PartitionTypeDefContext(_ctx, getState());
		enterRule(_localctx, 8, RULE_partitionTypeDef);
		int _la;
		try {
			setState(1356);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1325);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(1324);
					match(LINEAR);
					}
				}

				setState(1327);
				match(KEY);
				setState(1329);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM) {
					{
					setState(1328);
					partitionKeyAlgorithm();
					}
				}

				setState(1331);
				match(LP_);
				setState(1333);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(1332);
					columnNames();
					}
				}

				setState(1335);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1337);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LINEAR) {
					{
					setState(1336);
					match(LINEAR);
					}
				}

				setState(1339);
				match(HASH);
				setState(1340);
				match(LP_);
				setState(1341);
				bitExpr(0);
				setState(1342);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1344);
				_la = _input.LA(1);
				if ( !(_la==LIST || _la==RANGE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1354);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LP_:
					{
					setState(1345);
					match(LP_);
					setState(1346);
					bitExpr(0);
					setState(1347);
					match(RP_);
					}
					break;
				case COLUMNS:
					{
					setState(1349);
					match(COLUMNS);
					setState(1350);
					match(LP_);
					setState(1351);
					columnNames();
					setState(1352);
					match(RP_);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubPartitionsContext extends ParserRuleContext {
		public TerminalNode SUBPARTITION() { return getToken(MySQLStatementParser.SUBPARTITION, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public TerminalNode HASH() { return getToken(MySQLStatementParser.HASH, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public BitExprContext bitExpr() {
			return getRuleContext(BitExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode LINEAR() { return getToken(MySQLStatementParser.LINEAR, 0); }
		public TerminalNode SUBPARTITIONS() { return getToken(MySQLStatementParser.SUBPARTITIONS, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public PartitionKeyAlgorithmContext partitionKeyAlgorithm() {
			return getRuleContext(PartitionKeyAlgorithmContext.class,0);
		}
		public SubPartitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subPartitions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSubPartitions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubPartitionsContext subPartitions() throws RecognitionException {
		SubPartitionsContext _localctx = new SubPartitionsContext(_ctx, getState());
		enterRule(_localctx, 10, RULE_subPartitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1358);
			match(SUBPARTITION);
			setState(1359);
			match(BY);
			setState(1361);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LINEAR) {
				{
				setState(1360);
				match(LINEAR);
				}
			}

			setState(1376);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case HASH:
				{
				setState(1363);
				match(HASH);
				setState(1364);
				match(LP_);
				setState(1365);
				bitExpr(0);
				setState(1366);
				match(RP_);
				}
				break;
			case KEY:
				{
				setState(1368);
				match(KEY);
				setState(1370);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM) {
					{
					setState(1369);
					partitionKeyAlgorithm();
					}
				}

				setState(1372);
				match(LP_);
				setState(1373);
				columnNames();
				setState(1374);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(1380);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) {
			case 1:
				{
				setState(1378);
				match(SUBPARTITIONS);
				setState(1379);
				match(NUMBER_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionKeyAlgorithmContext extends ParserRuleContext {
		public TerminalNode ALGORITHM() { return getToken(MySQLStatementParser.ALGORITHM, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public PartitionKeyAlgorithmContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionKeyAlgorithm; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionKeyAlgorithm(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionKeyAlgorithmContext partitionKeyAlgorithm() throws RecognitionException {
		PartitionKeyAlgorithmContext _localctx = new PartitionKeyAlgorithmContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_partitionKeyAlgorithm);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1382);
			match(ALGORITHM);
			setState(1383);
			match(EQ_);
			setState(1384);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DuplicateAsQueryExpressionContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public DuplicateAsQueryExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_duplicateAsQueryExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDuplicateAsQueryExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DuplicateAsQueryExpressionContext duplicateAsQueryExpression() throws RecognitionException {
		DuplicateAsQueryExpressionContext _localctx = new DuplicateAsQueryExpressionContext(_ctx, getState());
		enterRule(_localctx, 14, RULE_duplicateAsQueryExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1387);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(1386);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(1390);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(1389);
				match(AS);
				}
			}

			setState(1393);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) {
			case 1:
				{
				setState(1392);
				match(LP_);
				}
				break;
			}
			setState(1395);
			select();
			setState(1397);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RP_) {
				{
				setState(1396);
				match(RP_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public AlterTableActionsContext alterTableActions() {
			return getRuleContext(AlterTableActionsContext.class,0);
		}
		public StandaloneAlterTableActionContext standaloneAlterTableAction() {
			return getRuleContext(StandaloneAlterTableActionContext.class,0);
		}
		public AlterTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableContext alterTable() throws RecognitionException {
		AlterTableContext _localctx = new AlterTableContext(_ctx, getState());
		enterRule(_localctx, 16, RULE_alterTable);
		try {
			setState(1410);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1399);
				match(ALTER);
				setState(1400);
				match(TABLE);
				setState(1401);
				tableName();
				setState(1403);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,29,_ctx) ) {
				case 1:
					{
					setState(1402);
					alterTableActions();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1405);
				match(ALTER);
				setState(1406);
				match(TABLE);
				setState(1407);
				tableName();
				setState(1408);
				standaloneAlterTableAction();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StandaloneAlterTableActionContext extends ParserRuleContext {
		public StandaloneAlterCommandsContext standaloneAlterCommands() {
			return getRuleContext(StandaloneAlterCommandsContext.class,0);
		}
		public AlterCommandsModifierListContext alterCommandsModifierList() {
			return getRuleContext(AlterCommandsModifierListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public StandaloneAlterTableActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_standaloneAlterTableAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStandaloneAlterTableAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StandaloneAlterTableActionContext standaloneAlterTableAction() throws RecognitionException {
		StandaloneAlterTableActionContext _localctx = new StandaloneAlterTableActionContext(_ctx, getState());
		enterRule(_localctx, 18, RULE_standaloneAlterTableAction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1415);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM || _la==LOCK || _la==WITH || _la==WITHOUT) {
				{
				setState(1412);
				alterCommandsModifierList();
				setState(1413);
				match(COMMA_);
				}
			}

			setState(1417);
			standaloneAlterCommands();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTableActionsContext extends ParserRuleContext {
		public AlterCommandListContext alterCommandList() {
			return getRuleContext(AlterCommandListContext.class,0);
		}
		public AlterTablePartitionOptionsContext alterTablePartitionOptions() {
			return getRuleContext(AlterTablePartitionOptionsContext.class,0);
		}
		public AlterTableActionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTableActions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTableActions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTableActionsContext alterTableActions() throws RecognitionException {
		AlterTableActionsContext _localctx = new AlterTableActionsContext(_ctx, getState());
		enterRule(_localctx, 20, RULE_alterTableActions);
		try {
			setState(1424);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
			case ALGORITHM:
			case ALTER:
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case CHANGE:
			case CHAR:
			case CHARACTER:
			case CHARSET:
			case CHECKSUM:
			case COLLATE:
			case COMMENT:
			case COMPRESSION:
			case CONNECTION:
			case CONVERT:
			case DATA:
			case DEFAULT:
			case DELAY_KEY_WRITE:
			case DISABLE:
			case DROP:
			case ENABLE:
			case ENCRYPTION:
			case ENGINE:
			case ENGINE_ATTRIBUTE:
			case FORCE:
			case INDEX:
			case INSERT_METHOD:
			case KEY_BLOCK_SIZE:
			case LOCK:
			case MAX_ROWS:
			case MIN_ROWS:
			case MODIFY:
			case ORDER:
			case PACK_KEYS:
			case PASSWORD:
			case RENAME:
			case ROW_FORMAT:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STORAGE:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case UNION:
			case WITH:
			case WITHOUT:
				enterOuterAlt(_localctx, 1);
				{
				setState(1419);
				alterCommandList();
				setState(1421);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,32,_ctx) ) {
				case 1:
					{
					setState(1420);
					alterTablePartitionOptions();
					}
					break;
				}
				}
				break;
			case PARTITION:
			case REMOVE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1423);
				alterTablePartitionOptions();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablePartitionOptionsContext extends ParserRuleContext {
		public PartitionClauseContext partitionClause() {
			return getRuleContext(PartitionClauseContext.class,0);
		}
		public TerminalNode REMOVE() { return getToken(MySQLStatementParser.REMOVE, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySQLStatementParser.PARTITIONING, 0); }
		public AlterTablePartitionOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablePartitionOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTablePartitionOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTablePartitionOptionsContext alterTablePartitionOptions() throws RecognitionException {
		AlterTablePartitionOptionsContext _localctx = new AlterTablePartitionOptionsContext(_ctx, getState());
		enterRule(_localctx, 22, RULE_alterTablePartitionOptions);
		try {
			setState(1429);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PARTITION:
				enterOuterAlt(_localctx, 1);
				{
				setState(1426);
				partitionClause();
				}
				break;
			case REMOVE:
				enterOuterAlt(_localctx, 2);
				{
				setState(1427);
				match(REMOVE);
				setState(1428);
				match(PARTITIONING);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterCommandListContext extends ParserRuleContext {
		public AlterCommandsModifierListContext alterCommandsModifierList() {
			return getRuleContext(AlterCommandsModifierListContext.class,0);
		}
		public AlterListContext alterList() {
			return getRuleContext(AlterListContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public AlterCommandListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterCommandList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterCommandList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterCommandListContext alterCommandList() throws RecognitionException {
		AlterCommandListContext _localctx = new AlterCommandListContext(_ctx, getState());
		enterRule(_localctx, 24, RULE_alterCommandList);
		int _la;
		try {
			setState(1438);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1431);
				alterCommandsModifierList();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1435);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALGORITHM || _la==LOCK || _la==WITH || _la==WITHOUT) {
					{
					setState(1432);
					alterCommandsModifierList();
					setState(1433);
					match(COMMA_);
					}
				}

				setState(1437);
				alterList();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterListContext extends ParserRuleContext {
		public List alterListItem() {
			return getRuleContexts(AlterListItemContext.class);
		}
		public AlterListItemContext alterListItem(int i) {
			return getRuleContext(AlterListItemContext.class,i);
		}
		public List createTableOptionsSpaceSeparated() {
			return getRuleContexts(CreateTableOptionsSpaceSeparatedContext.class);
		}
		public CreateTableOptionsSpaceSeparatedContext createTableOptionsSpaceSeparated(int i) {
			return getRuleContext(CreateTableOptionsSpaceSeparatedContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public List alterCommandsModifier() {
			return getRuleContexts(AlterCommandsModifierContext.class);
		}
		public AlterCommandsModifierContext alterCommandsModifier(int i) {
			return getRuleContext(AlterCommandsModifierContext.class,i);
		}
		public AlterListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterListContext alterList() throws RecognitionException {
		AlterListContext _localctx = new AlterListContext(_ctx, getState());
		enterRule(_localctx, 26, RULE_alterList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1442);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
			case ALTER:
			case CHANGE:
			case CONVERT:
			case DISABLE:
			case DROP:
			case ENABLE:
			case FORCE:
			case MODIFY:
			case ORDER:
			case RENAME:
				{
				setState(1440);
				alterListItem();
				}
				break;
			case AUTO_INCREMENT:
			case AVG_ROW_LENGTH:
			case CHAR:
			case CHARACTER:
			case CHARSET:
			case CHECKSUM:
			case COLLATE:
			case COMMENT:
			case COMPRESSION:
			case CONNECTION:
			case DATA:
			case DEFAULT:
			case DELAY_KEY_WRITE:
			case ENCRYPTION:
			case ENGINE:
			case ENGINE_ATTRIBUTE:
			case INDEX:
			case INSERT_METHOD:
			case KEY_BLOCK_SIZE:
			case MAX_ROWS:
			case MIN_ROWS:
			case PACK_KEYS:
			case PASSWORD:
			case ROW_FORMAT:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STORAGE:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case UNION:
				{
				setState(1441);
				createTableOptionsSpaceSeparated();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(1452);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(1444);
				match(COMMA_);
				setState(1448);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ADD:
				case ALTER:
				case CHANGE:
				case CONVERT:
				case DISABLE:
				case DROP:
				case ENABLE:
				case FORCE:
				case MODIFY:
				case ORDER:
				case RENAME:
					{
					setState(1445);
					alterListItem();
					}
					break;
				case ALGORITHM:
				case LOCK:
				case WITH:
				case WITHOUT:
					{
					setState(1446);
					alterCommandsModifier();
					}
					break;
				case AUTO_INCREMENT:
				case AVG_ROW_LENGTH:
				case CHAR:
				case CHARACTER:
				case CHARSET:
				case CHECKSUM:
				case COLLATE:
				case COMMENT:
				case COMPRESSION:
				case CONNECTION:
				case DATA:
				case DEFAULT:
				case DELAY_KEY_WRITE:
				case ENCRYPTION:
				case ENGINE:
				case ENGINE_ATTRIBUTE:
				case INDEX:
				case INSERT_METHOD:
				case KEY_BLOCK_SIZE:
				case MAX_ROWS:
				case MIN_ROWS:
				case PACK_KEYS:
				case PASSWORD:
				case ROW_FORMAT:
				case SECONDARY_ENGINE:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STORAGE:
				case TABLESPACE:
				case TABLE_CHECKSUM:
				case UNION:
					{
					setState(1447);
					createTableOptionsSpaceSeparated();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				}
				setState(1454);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableOptionsSpaceSeparatedContext extends ParserRuleContext {
		public List createTableOption() {
			return getRuleContexts(CreateTableOptionContext.class);
		}
		public CreateTableOptionContext createTableOption(int i) {
			return getRuleContext(CreateTableOptionContext.class,i);
		}
		public CreateTableOptionsSpaceSeparatedContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTableOptionsSpaceSeparated; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTableOptionsSpaceSeparated(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableOptionsSpaceSeparatedContext createTableOptionsSpaceSeparated() throws RecognitionException {
		CreateTableOptionsSpaceSeparatedContext _localctx = new CreateTableOptionsSpaceSeparatedContext(_ctx, getState());
		enterRule(_localctx, 28, RULE_createTableOptionsSpaceSeparated);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1456); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(1455);
					createTableOption();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1458); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,40,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterListItemContext extends ParserRuleContext {
		public AlterListItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterListItem; }
	 
		public AlterListItemContext() { }
		public void copyFrom(AlterListItemContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class AddColumnContext extends AlterListItemContext {
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TableElementListContext tableElementList() {
			return getRuleContext(TableElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode COLUMN() { return getToken(MySQLStatementParser.COLUMN, 0); }
		public PlaceContext place() {
			return getRuleContext(PlaceContext.class,0);
		}
		public AddColumnContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAddColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class EnableKeysContext extends AlterListItemContext {
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode KEYS() { return getToken(MySQLStatementParser.KEYS, 0); }
		public EnableKeysContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitEnableKeys(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterTableDropContext extends AlterListItemContext {
		public IdentifierContext columnInternalRef;
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode FOREIGN() { return getToken(MySQLStatementParser.FOREIGN, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode PRIMARY() { return getToken(MySQLStatementParser.PRIMARY, 0); }
		public KeyOrIndexContext keyOrIndex() {
			return getRuleContext(KeyOrIndexContext.class,0);
		}
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode CONSTRAINT() { return getToken(MySQLStatementParser.CONSTRAINT, 0); }
		public TerminalNode COLUMN() { return getToken(MySQLStatementParser.COLUMN, 0); }
		public RestrictContext restrict() {
			return getRuleContext(RestrictContext.class,0);
		}
		public AlterTableDropContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTableDrop(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterConstraintContext extends AlterListItemContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode CONSTRAINT() { return getToken(MySQLStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public ConstraintEnforcementContext constraintEnforcement() {
			return getRuleContext(ConstraintEnforcementContext.class,0);
		}
		public AlterConstraintContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterColumnContext extends AlterListItemContext {
		public IdentifierContext columnInternalRef;
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public VisibilityContext visibility() {
			return getRuleContext(VisibilityContext.class,0);
		}
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode COLUMN() { return getToken(MySQLStatementParser.COLUMN, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public LiteralsContext literals() {
			return getRuleContext(LiteralsContext.class,0);
		}
		public AlterColumnContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterCheckContext extends AlterListItemContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public ConstraintEnforcementContext constraintEnforcement() {
			return getRuleContext(ConstraintEnforcementContext.class,0);
		}
		public AlterCheckContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterCheck(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ModifyColumnContext extends AlterListItemContext {
		public IdentifierContext columnInternalRef;
		public TerminalNode MODIFY() { return getToken(MySQLStatementParser.MODIFY, 0); }
		public FieldDefinitionContext fieldDefinition() {
			return getRuleContext(FieldDefinitionContext.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySQLStatementParser.COLUMN, 0); }
		public PlaceContext place() {
			return getRuleContext(PlaceContext.class,0);
		}
		public ModifyColumnContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitModifyColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterIndexContext extends AlterListItemContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public VisibilityContext visibility() {
			return getRuleContext(VisibilityContext.class,0);
		}
		public AlterIndexContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class ChangeColumnContext extends AlterListItemContext {
		public IdentifierContext columnInternalRef;
		public TerminalNode CHANGE() { return getToken(MySQLStatementParser.CHANGE, 0); }
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode COLUMN() { return getToken(MySQLStatementParser.COLUMN, 0); }
		public PlaceContext place() {
			return getRuleContext(PlaceContext.class,0);
		}
		public ChangeColumnContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChangeColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterTableOrderContext extends AlterListItemContext {
		public TerminalNode ORDER() { return getToken(MySQLStatementParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public AlterOrderListContext alterOrderList() {
			return getRuleContext(AlterOrderListContext.class,0);
		}
		public AlterTableOrderContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTableOrder(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterConvertContext extends AlterListItemContext {
		public TerminalNode CONVERT() { return getToken(MySQLStatementParser.CONVERT, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public CharsetContext charset() {
			return getRuleContext(CharsetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public AlterConvertContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterConvert(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RenameIndexContext extends AlterListItemContext {
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public KeyOrIndexContext keyOrIndex() {
			return getRuleContext(KeyOrIndexContext.class,0);
		}
		public List indexName() {
			return getRuleContexts(IndexNameContext.class);
		}
		public IndexNameContext indexName(int i) {
			return getRuleContext(IndexNameContext.class,i);
		}
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public RenameIndexContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRenameIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterTableForceContext extends AlterListItemContext {
		public TerminalNode FORCE() { return getToken(MySQLStatementParser.FORCE, 0); }
		public AlterTableForceContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTableForce(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AddTableConstraintContext extends AlterListItemContext {
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TableConstraintDefContext tableConstraintDef() {
			return getRuleContext(TableConstraintDefContext.class,0);
		}
		public AddTableConstraintContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAddTableConstraint(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RenameColumnContext extends AlterListItemContext {
		public IdentifierContext columnInternalRef;
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TerminalNode COLUMN() { return getToken(MySQLStatementParser.COLUMN, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public RenameColumnContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRenameColumn(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class DisableKeysContext extends AlterListItemContext {
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public TerminalNode KEYS() { return getToken(MySQLStatementParser.KEYS, 0); }
		public DisableKeysContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDisableKeys(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class AlterRenameTableContext extends AlterListItemContext {
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public AlterRenameTableContext(AlterListItemContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterRenameTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterListItemContext alterListItem() throws RecognitionException {
		AlterListItemContext _localctx = new AlterListItemContext(_ctx, getState());
		enterRule(_localctx, 30, RULE_alterListItem);
		int _la;
		try {
			setState(1583);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,56,_ctx) ) {
			case 1:
				_localctx = new AddColumnContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(1460);
				match(ADD);
				setState(1462);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(1461);
					match(COLUMN);
					}
				}

				setState(1472);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case MAX:
				case MIN:
				case SUM:
				case COUNT:
				case GROUP_CONCAT:
				case CAST:
				case POSITION:
				case SUBSTRING:
				case SUBSTR:
				case EXTRACT:
				case TRIM:
				case LAST_DAY:
				case TRADITIONAL:
				case TREE:
				case MYSQL_MAIN:
				case MYSQL_ADMIN:
				case INSTANT:
				case INPLACE:
				case COPY:
				case UL_BINARY:
				case AUTOCOMMIT:
				case INNODB:
				case REDO_LOG:
				case ACCOUNT:
				case ACTION:
				case ACTIVE:
				case ADMIN:
				case AFTER:
				case AGAINST:
				case AGGREGATE:
				case ALGORITHM:
				case ALWAYS:
				case ANY:
				case ARRAY:
				case ASCII:
				case AT:
				case ATTRIBUTE:
				case AUTOEXTEND_SIZE:
				case AUTO_INCREMENT:
				case AVG:
				case BIT_XOR:
				case AVG_ROW_LENGTH:
				case BACKUP:
				case BEGIN:
				case BINLOG:
				case BIT:
				case BLOCK:
				case BOOL:
				case BOOLEAN:
				case BTREE:
				case BUCKETS:
				case BYTE:
				case CACHE:
				case CASCADED:
				case CATALOG_NAME:
				case CHAIN:
				case CHANGED:
				case CHANNEL:
				case CHARSET:
				case CHECKSUM:
				case CIPHER:
				case CLASS_ORIGIN:
				case CLIENT:
				case CLONE:
				case CLOSE:
				case COALESCE:
				case CODE:
				case COLLATION:
				case COLUMNS:
				case COLUMN_FORMAT:
				case COLUMN_NAME:
				case COMMENT:
				case COMMIT:
				case COMMITTED:
				case COMPACT:
				case COMPLETION:
				case COMPONENT:
				case COMPRESSED:
				case COMPRESSION:
				case CONCURRENT:
				case CONNECTION:
				case CONSISTENT:
				case CONSTRAINT_CATALOG:
				case CONSTRAINT_NAME:
				case CONSTRAINT_SCHEMA:
				case CONTAINS:
				case CONTEXT:
				case CPU:
				case CREATE:
				case CURRENT:
				case CURSOR_NAME:
				case DATA:
				case DATAFILE:
				case DATE:
				case DATETIME:
				case DAY:
				case DEALLOCATE:
				case DEFAULT_AUTH:
				case DEFINER:
				case DEFINITION:
				case DELAY_KEY_WRITE:
				case DESCRIPTION:
				case DIAGNOSTICS:
				case DIRECTORY:
				case DISABLE:
				case DISCARD:
				case DISK:
				case DO:
				case DUMPFILE:
				case DUPLICATE:
				case DYNAMIC:
				case ENABLE:
				case ENCRYPTION:
				case END:
				case ENDS:
				case ENFORCED:
				case ENGINE:
				case ENGINES:
				case ENGINE_ATTRIBUTE:
				case ENUM:
				case ERROR:
				case ERRORS:
				case ESCAPE:
				case EVENT:
				case EVENTS:
				case EVERY:
				case EXCHANGE:
				case EXCLUDE:
				case EXECUTE:
				case EXPANSION:
				case EXPIRE:
				case EXPORT:
				case EXTENDED:
				case EXTENT_SIZE:
				case FAILED_LOGIN_ATTEMPTS:
				case FAST:
				case FAULTS:
				case FILE:
				case FILE_BLOCK_SIZE:
				case FILTER:
				case FIRST:
				case FIXED:
				case FLUSH:
				case FOLLOWING:
				case FOLLOWS:
				case FORMAT:
				case FOUND:
				case FULL:
				case GENERAL:
				case GEOMETRY:
				case GEOMETRYCOLLECTION:
				case GET_FORMAT:
				case GET_MASTER_PUBLIC_KEY:
				case GLOBAL:
				case GRANTS:
				case GROUP_REPLICATION:
				case HANDLER:
				case HASH:
				case HELP:
				case HISTOGRAM:
				case HISTORY:
				case HOST:
				case HOSTS:
				case HOUR:
				case IDENTIFIED:
				case IGNORE_SERVER_IDS:
				case IMPORT:
				case INACTIVE:
				case INDEXES:
				case INITIAL_SIZE:
				case INSERT_METHOD:
				case INSTALL:
				case INSTANCE:
				case INVISIBLE:
				case INVOKER:
				case IO:
				case IPC:
				case ISOLATION:
				case ISSUER:
				case JSON:
				case JSON_VALUE:
				case KEY:
				case KEY_BLOCK_SIZE:
				case LANGUAGE:
				case LAST:
				case LAST_VALUE:
				case LEAVES:
				case LESS:
				case LEVEL:
				case LINESTRING:
				case LIST:
				case LOCAL:
				case LOCKED:
				case LOCKS:
				case LOGFILE:
				case LOGS:
				case MASTER:
				case MASTER_AUTO_POSITION:
				case MASTER_COMPRESSION_ALGORITHM:
				case MASTER_CONNECT_RETRY:
				case MASTER_DELAY:
				case MASTER_HEARTBEAT_PERIOD:
				case MASTER_HOST:
				case MASTER_LOG_FILE:
				case MASTER_LOG_POS:
				case MASTER_PASSWORD:
				case MASTER_PORT:
				case MASTER_PUBLIC_KEY_PATH:
				case MASTER_RETRY_COUNT:
				case MASTER_SERVER_ID:
				case MASTER_SSL:
				case MASTER_SSL_CA:
				case MASTER_SSL_CAPATH:
				case MASTER_SSL_CERT:
				case MASTER_SSL_CIPHER:
				case MASTER_SSL_CRL:
				case MASTER_SSL_CRLPATH:
				case MASTER_SSL_KEY:
				case MASTER_TLS_CIPHERSUITES:
				case MASTER_TLS_VERSION:
				case MASTER_USER:
				case MASTER_ZSTD_COMPRESSION_LEVEL:
				case MAXVALUE:
				case MAX_CONNECTIONS_PER_HOUR:
				case MAX_QUERIES_PER_HOUR:
				case MAX_ROWS:
				case MAX_SIZE:
				case MAX_UPDATES_PER_HOUR:
				case MAX_USER_CONNECTIONS:
				case MEDIUM:
				case MEMBER:
				case MEMORY:
				case MERGE:
				case MESSAGE_TEXT:
				case MICROSECOND:
				case MIGRATE:
				case MINUTE:
				case MIN_ROWS:
				case MODE:
				case MODIFY:
				case MONTH:
				case MULTILINESTRING:
				case MULTIPOINT:
				case MULTIPOLYGON:
				case MUTEX:
				case MYSQL_ERRNO:
				case NAME:
				case NAMES:
				case NATIONAL:
				case NCHAR:
				case NDBCLUSTER:
				case NESTED:
				case NETWORK_NAMESPACE:
				case NEVER:
				case NEW:
				case NEXT:
				case NO:
				case NODEGROUP:
				case NONE:
				case NOWAIT:
				case NO_WAIT:
				case NULLS:
				case NUMBER:
				case NVARCHAR:
				case OFF:
				case OFFSET:
				case OJ:
				case OLD:
				case ONE:
				case ONLY:
				case OPEN:
				case OPTIONAL:
				case OPTIONS:
				case ORDINALITY:
				case ORGANIZATION:
				case OTHERS:
				case OWNER:
				case PACK_KEYS:
				case PAGE:
				case PARSER:
				case PARTIAL:
				case PARTITIONING:
				case PARTITIONS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
				case PATH:
				case PERSIST:
				case PERSIST_ONLY:
				case PHASE:
				case PLUGIN:
				case PLUGINS:
				case PLUGIN_DIR:
				case POINT:
				case POLYGON:
				case PORT:
				case PRECEDES:
				case PRECEDING:
				case PREPARE:
				case PRESERVE:
				case PREV:
				case PRIMARY:
				case PRIVILEGES:
				case PRIVILEGE_CHECKS_USER:
				case PROCESS:
				case PROCESSLIST:
				case PROFILE:
				case PROFILES:
				case PROXY:
				case QUARTER:
				case QUERY:
				case QUICK:
				case RANDOM:
				case READ_ONLY:
				case REBUILD:
				case RECOVER:
				case REDO_BUFFER_SIZE:
				case REDUNDANT:
				case REFERENCE:
				case RELAY:
				case RELAYLOG:
				case RELAY_LOG_FILE:
				case RELAY_LOG_POS:
				case RELAY_THREAD:
				case RELOAD:
				case REMOVE:
				case REORGANIZE:
				case REPAIR:
				case REPEATABLE:
				case REPLICATE_DO_DB:
				case REPLICATE_DO_TABLE:
				case REPLICATE_IGNORE_DB:
				case REPLICATE_IGNORE_TABLE:
				case REPLICATE_REWRITE_DB:
				case REPLICATE_WILD_DO_TABLE:
				case REPLICATE_WILD_IGNORE_TABLE:
				case REPLICATION:
				case REQUIRE_ROW_FORMAT:
				case RESET:
				case RESOURCE:
				case RESPECT:
				case RESTART:
				case RESTORE:
				case RESUME:
				case RETAIN:
				case RETURNED_SQLSTATE:
				case RETURNING:
				case RETURNS:
				case REUSE:
				case REVERSE:
				case ROLE:
				case ROLLBACK:
				case ROLLUP:
				case ROTATE:
				case ROUTINE:
				case ROW_COUNT:
				case ROW_FORMAT:
				case RTREE:
				case SAVEPOINT:
				case SCHEDULE:
				case SCHEMA_NAME:
				case SECOND:
				case SECONDARY:
				case SECONDARY_ENGINE:
				case SECONDARY_ENGINE_ATTRIBUTE:
				case SECONDARY_LOAD:
				case SECONDARY_UNLOAD:
				case SECURITY:
				case SERIAL:
				case SERIALIZABLE:
				case SERVER:
				case SESSION:
				case SHARE:
				case SHUTDOWN:
				case SIGNED:
				case SIMPLE:
				case SLAVE:
				case SLOW:
				case SNAPSHOT:
				case SOCKET:
				case SONAME:
				case SOUNDS:
				case SOURCE:
				case SQL_AFTER_GTIDS:
				case SQL_AFTER_MTS_GAPS:
				case SQL_BEFORE_GTIDS:
				case SQL_BUFFER_RESULT:
				case SQL_NO_CACHE:
				case SQL_THREAD:
				case SRID:
				case STACKED:
				case START:
				case STARTS:
				case STATS_AUTO_RECALC:
				case STATS_PERSISTENT:
				case STATS_SAMPLE_PAGES:
				case STATUS:
				case STOP:
				case STORAGE:
				case STREAM:
				case STRING:
				case SUBCLASS_ORIGIN:
				case SUBJECT:
				case SUBPARTITION:
				case SUBPARTITIONS:
				case SUPER:
				case SUSPEND:
				case SWAPS:
				case SWITCHES:
				case TABLES:
				case TABLESPACE:
				case TABLE_CHECKSUM:
				case TABLE_NAME:
				case TEMPORARY:
				case TEMPTABLE:
				case TEXT:
				case THAN:
				case THREAD_PRIORITY:
				case TIES:
				case TIME:
				case TIMESTAMP:
				case TIMESTAMP_ADD:
				case TIMESTAMP_DIFF:
				case TLS:
				case TRANSACTION:
				case TRIGGERS:
				case TRUNCATE:
				case TYPE:
				case TYPES:
				case UNBOUNDED:
				case UNCOMMITTED:
				case UNDEFINED:
				case UNDOFILE:
				case UNDO_BUFFER_SIZE:
				case UNICODE:
				case UNINSTALL:
				case UNKNOWN:
				case UNTIL:
				case UPGRADE:
				case USER:
				case USER_RESOURCES:
				case USE_FRM:
				case UTC_DATE:
				case UTC_TIME:
				case UTC_TIMESTAMP:
				case VALIDATION:
				case VALUE:
				case VARIABLES:
				case VCPU:
				case VIEW:
				case VISIBLE:
				case WAIT:
				case WARNINGS:
				case WEEK:
				case WEIGHT_STRING:
				case WITHOUT:
				case WORK:
				case WRAPPER:
				case X509:
				case XA:
				case XID:
				case XML:
				case YEAR:
				case DOUBLE_QUOTED_TEXT:
				case UNDERSCORE_CHARSET:
				case IDENTIFIER_:
					{
					setState(1464);
					columnDefinition();
					setState(1466);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
					case 1:
						{
						setState(1465);
						place();
						}
						break;
					}
					}
					break;
				case LP_:
					{
					setState(1468);
					match(LP_);
					setState(1469);
					tableElementList();
					setState(1470);
					match(RP_);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 2:
				_localctx = new AddTableConstraintContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(1474);
				match(ADD);
				setState(1475);
				tableConstraintDef();
				}
				break;
			case 3:
				_localctx = new ChangeColumnContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(1476);
				match(CHANGE);
				setState(1478);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(1477);
					match(COLUMN);
					}
				}

				setState(1480);
				((ChangeColumnContext)_localctx).columnInternalRef = identifier();
				setState(1481);
				columnDefinition();
				setState(1483);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,45,_ctx) ) {
				case 1:
					{
					setState(1482);
					place();
					}
					break;
				}
				}
				break;
			case 4:
				_localctx = new ModifyColumnContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(1485);
				match(MODIFY);
				setState(1487);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(1486);
					match(COLUMN);
					}
				}

				setState(1489);
				((ModifyColumnContext)_localctx).columnInternalRef = identifier();
				setState(1490);
				fieldDefinition();
				setState(1492);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) {
				case 1:
					{
					setState(1491);
					place();
					}
					break;
				}
				}
				break;
			case 5:
				_localctx = new AlterTableDropContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(1494);
				match(DROP);
				setState(1514);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) {
				case 1:
					{
					setState(1496);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COLUMN) {
						{
						setState(1495);
						match(COLUMN);
						}
					}

					setState(1498);
					((AlterTableDropContext)_localctx).columnInternalRef = identifier();
					setState(1500);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==CASCADE || _la==RESTRICT) {
						{
						setState(1499);
						restrict();
						}
					}

					}
					break;
				case 2:
					{
					setState(1502);
					match(FOREIGN);
					setState(1503);
					match(KEY);
					setState(1504);
					((AlterTableDropContext)_localctx).columnInternalRef = identifier();
					}
					break;
				case 3:
					{
					setState(1505);
					match(PRIMARY);
					setState(1506);
					match(KEY);
					}
					break;
				case 4:
					{
					setState(1507);
					keyOrIndex();
					setState(1508);
					indexName();
					}
					break;
				case 5:
					{
					setState(1510);
					match(CHECK);
					setState(1511);
					identifier();
					}
					break;
				case 6:
					{
					setState(1512);
					match(CONSTRAINT);
					setState(1513);
					identifier();
					}
					break;
				}
				}
				break;
			case 6:
				_localctx = new DisableKeysContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(1516);
				match(DISABLE);
				setState(1517);
				match(KEYS);
				}
				break;
			case 7:
				_localctx = new EnableKeysContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(1518);
				match(ENABLE);
				setState(1519);
				match(KEYS);
				}
				break;
			case 8:
				_localctx = new AlterColumnContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(1520);
				match(ALTER);
				setState(1522);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLUMN) {
					{
					setState(1521);
					match(COLUMN);
					}
				}

				setState(1524);
				((AlterColumnContext)_localctx).columnInternalRef = identifier();
				setState(1538);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
				case 1:
					{
					setState(1525);
					match(SET);
					setState(1526);
					match(DEFAULT);
					setState(1532);
					_errHandler.sync(this);
					switch (_input.LA(1)) {
					case LP_:
						{
						setState(1527);
						match(LP_);
						setState(1528);
						expr(0);
						setState(1529);
						match(RP_);
						}
						break;
					case PLUS_:
					case MINUS_:
					case UL_BINARY:
					case DATE:
					case FALSE:
					case NULL:
					case TIME:
					case TIMESTAMP:
					case TRUE:
					case SINGLE_QUOTED_TEXT:
					case DOUBLE_QUOTED_TEXT:
					case NCHAR_TEXT:
					case UNDERSCORE_CHARSET:
					case NUMBER_:
					case HEX_DIGIT_:
					case BIT_NUM_:
						{
						setState(1531);
						literals();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case 2:
					{
					setState(1534);
					match(SET);
					setState(1535);
					visibility();
					}
					break;
				case 3:
					{
					setState(1536);
					match(DROP);
					setState(1537);
					match(DEFAULT);
					}
					break;
				}
				}
				break;
			case 9:
				_localctx = new AlterIndexContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(1540);
				match(ALTER);
				setState(1541);
				match(INDEX);
				setState(1542);
				indexName();
				setState(1543);
				visibility();
				}
				break;
			case 10:
				_localctx = new AlterCheckContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(1545);
				match(ALTER);
				setState(1546);
				match(CHECK);
				setState(1547);
				constraintName();
				setState(1548);
				constraintEnforcement();
				}
				break;
			case 11:
				_localctx = new AlterConstraintContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(1550);
				match(ALTER);
				setState(1551);
				match(CONSTRAINT);
				setState(1552);
				constraintName();
				setState(1553);
				constraintEnforcement();
				}
				break;
			case 12:
				_localctx = new RenameColumnContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(1555);
				match(RENAME);
				setState(1556);
				match(COLUMN);
				setState(1557);
				((RenameColumnContext)_localctx).columnInternalRef = identifier();
				setState(1558);
				match(TO);
				setState(1559);
				identifier();
				}
				break;
			case 13:
				_localctx = new AlterRenameTableContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(1561);
				match(RENAME);
				setState(1563);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS || _la==TO) {
					{
					setState(1562);
					_la = _input.LA(1);
					if ( !(_la==AS || _la==TO) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(1565);
				tableName();
				}
				break;
			case 14:
				_localctx = new RenameIndexContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(1566);
				match(RENAME);
				setState(1567);
				keyOrIndex();
				setState(1568);
				indexName();
				setState(1569);
				match(TO);
				setState(1570);
				indexName();
				}
				break;
			case 15:
				_localctx = new AlterConvertContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(1572);
				match(CONVERT);
				setState(1573);
				match(TO);
				setState(1574);
				charset();
				setState(1575);
				charsetName();
				setState(1577);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(1576);
					collateClause();
					}
				}

				}
				break;
			case 16:
				_localctx = new AlterTableForceContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(1579);
				match(FORCE);
				}
				break;
			case 17:
				_localctx = new AlterTableOrderContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(1580);
				match(ORDER);
				setState(1581);
				match(BY);
				setState(1582);
				alterOrderList();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterOrderListContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public List direction() {
			return getRuleContexts(DirectionContext.class);
		}
		public DirectionContext direction(int i) {
			return getRuleContext(DirectionContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AlterOrderListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterOrderList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterOrderList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterOrderListContext alterOrderList() throws RecognitionException {
		AlterOrderListContext _localctx = new AlterOrderListContext(_ctx, getState());
		enterRule(_localctx, 32, RULE_alterOrderList);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1585);
			identifier();
			setState(1587);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(1586);
				direction();
				}
			}

			setState(1596);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,59,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1589);
					match(COMMA_);
					setState(1590);
					identifier();
					setState(1592);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==ASC || _la==DESC) {
						{
						setState(1591);
						direction();
						}
					}

					}
					} 
				}
				setState(1598);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,59,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableConstraintDefContext extends ParserRuleContext {
		public KeyOrIndexContext keyOrIndex() {
			return getRuleContext(KeyOrIndexContext.class,0);
		}
		public KeyListWithExpressionContext keyListWithExpression() {
			return getRuleContext(KeyListWithExpressionContext.class,0);
		}
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public IndexTypeClauseContext indexTypeClause() {
			return getRuleContext(IndexTypeClauseContext.class,0);
		}
		public List indexOption() {
			return getRuleContexts(IndexOptionContext.class);
		}
		public IndexOptionContext indexOption(int i) {
			return getRuleContext(IndexOptionContext.class,i);
		}
		public TerminalNode FULLTEXT() { return getToken(MySQLStatementParser.FULLTEXT, 0); }
		public List fulltextIndexOption() {
			return getRuleContexts(FulltextIndexOptionContext.class);
		}
		public FulltextIndexOptionContext fulltextIndexOption(int i) {
			return getRuleContext(FulltextIndexOptionContext.class,i);
		}
		public TerminalNode SPATIAL() { return getToken(MySQLStatementParser.SPATIAL, 0); }
		public List commonIndexOption() {
			return getRuleContexts(CommonIndexOptionContext.class);
		}
		public CommonIndexOptionContext commonIndexOption(int i) {
			return getRuleContext(CommonIndexOptionContext.class,i);
		}
		public TerminalNode PRIMARY() { return getToken(MySQLStatementParser.PRIMARY, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode UNIQUE() { return getToken(MySQLStatementParser.UNIQUE, 0); }
		public ConstraintClauseContext constraintClause() {
			return getRuleContext(ConstraintClauseContext.class,0);
		}
		public TerminalNode FOREIGN() { return getToken(MySQLStatementParser.FOREIGN, 0); }
		public KeyPartsContext keyParts() {
			return getRuleContext(KeyPartsContext.class,0);
		}
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public CheckConstraintContext checkConstraint() {
			return getRuleContext(CheckConstraintContext.class,0);
		}
		public ConstraintEnforcementContext constraintEnforcement() {
			return getRuleContext(ConstraintEnforcementContext.class,0);
		}
		public TableConstraintDefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableConstraintDef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableConstraintDef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableConstraintDefContext tableConstraintDef() throws RecognitionException {
		TableConstraintDefContext _localctx = new TableConstraintDefContext(_ctx, getState());
		enterRule(_localctx, 34, RULE_tableConstraintDef);
		int _la;
		try {
			int _alt;
			setState(1683);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,79,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1599);
				keyOrIndex();
				setState(1601);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,60,_ctx) ) {
				case 1:
					{
					setState(1600);
					indexName();
					}
					break;
				}
				setState(1604);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TYPE || _la==USING) {
					{
					setState(1603);
					indexTypeClause();
					}
				}

				setState(1606);
				keyListWithExpression();
				setState(1610);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,62,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1607);
						indexOption();
						}
						} 
					}
					setState(1612);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,62,_ctx);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1613);
				match(FULLTEXT);
				setState(1615);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
				case 1:
					{
					setState(1614);
					keyOrIndex();
					}
					break;
				}
				setState(1618);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(1617);
					indexName();
					}
				}

				setState(1620);
				keyListWithExpression();
				setState(1624);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,65,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1621);
						fulltextIndexOption();
						}
						} 
					}
					setState(1626);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,65,_ctx);
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1627);
				match(SPATIAL);
				setState(1629);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,66,_ctx) ) {
				case 1:
					{
					setState(1628);
					keyOrIndex();
					}
					break;
				}
				setState(1632);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(1631);
					indexName();
					}
				}

				setState(1634);
				keyListWithExpression();
				setState(1638);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,68,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1635);
						commonIndexOption();
						}
						} 
					}
					setState(1640);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,68,_ctx);
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1642);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1641);
					constraintClause();
					}
				}

				setState(1650);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PRIMARY:
					{
					setState(1644);
					match(PRIMARY);
					setState(1645);
					match(KEY);
					}
					break;
				case UNIQUE:
					{
					setState(1646);
					match(UNIQUE);
					setState(1648);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
					case 1:
						{
						setState(1647);
						keyOrIndex();
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(1653);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,72,_ctx) ) {
				case 1:
					{
					setState(1652);
					indexName();
					}
					break;
				}
				setState(1656);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TYPE || _la==USING) {
					{
					setState(1655);
					indexTypeClause();
					}
				}

				setState(1658);
				keyListWithExpression();
				setState(1662);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,74,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1659);
						indexOption();
						}
						} 
					}
					setState(1664);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,74,_ctx);
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(1666);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1665);
					constraintClause();
					}
				}

				setState(1668);
				match(FOREIGN);
				setState(1669);
				match(KEY);
				setState(1671);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(1670);
					indexName();
					}
				}

				setState(1673);
				keyParts();
				setState(1674);
				referenceDefinition();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(1677);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(1676);
					constraintClause();
					}
				}

				setState(1679);
				checkConstraint();
				setState(1681);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,78,_ctx) ) {
				case 1:
					{
					setState(1680);
					constraintEnforcement();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterCommandsModifierListContext extends ParserRuleContext {
		public List alterCommandsModifier() {
			return getRuleContexts(AlterCommandsModifierContext.class);
		}
		public AlterCommandsModifierContext alterCommandsModifier(int i) {
			return getRuleContext(AlterCommandsModifierContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AlterCommandsModifierListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterCommandsModifierList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterCommandsModifierList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterCommandsModifierListContext alterCommandsModifierList() throws RecognitionException {
		AlterCommandsModifierListContext _localctx = new AlterCommandsModifierListContext(_ctx, getState());
		enterRule(_localctx, 36, RULE_alterCommandsModifierList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1685);
			alterCommandsModifier();
			setState(1690);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,80,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1686);
					match(COMMA_);
					setState(1687);
					alterCommandsModifier();
					}
					} 
				}
				setState(1692);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,80,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterCommandsModifierContext extends ParserRuleContext {
		public AlterAlgorithmOptionContext alterAlgorithmOption() {
			return getRuleContext(AlterAlgorithmOptionContext.class,0);
		}
		public AlterLockOptionContext alterLockOption() {
			return getRuleContext(AlterLockOptionContext.class,0);
		}
		public WithValidationContext withValidation() {
			return getRuleContext(WithValidationContext.class,0);
		}
		public AlterCommandsModifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterCommandsModifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterCommandsModifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterCommandsModifierContext alterCommandsModifier() throws RecognitionException {
		AlterCommandsModifierContext _localctx = new AlterCommandsModifierContext(_ctx, getState());
		enterRule(_localctx, 38, RULE_alterCommandsModifier);
		try {
			setState(1696);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALGORITHM:
				enterOuterAlt(_localctx, 1);
				{
				setState(1693);
				alterAlgorithmOption();
				}
				break;
			case LOCK:
				enterOuterAlt(_localctx, 2);
				{
				setState(1694);
				alterLockOption();
				}
				break;
			case WITH:
			case WITHOUT:
				enterOuterAlt(_localctx, 3);
				{
				setState(1695);
				withValidation();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithValidationContext extends ParserRuleContext {
		public TerminalNode VALIDATION() { return getToken(MySQLStatementParser.VALIDATION, 0); }
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode WITHOUT() { return getToken(MySQLStatementParser.WITHOUT, 0); }
		public WithValidationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withValidation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWithValidation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithValidationContext withValidation() throws RecognitionException {
		WithValidationContext _localctx = new WithValidationContext(_ctx, getState());
		enterRule(_localctx, 40, RULE_withValidation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1698);
			_la = _input.LA(1);
			if ( !(_la==WITH || _la==WITHOUT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1699);
			match(VALIDATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StandaloneAlterCommandsContext extends ParserRuleContext {
		public TerminalNode DISCARD() { return getToken(MySQLStatementParser.DISCARD, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public TerminalNode IMPORT() { return getToken(MySQLStatementParser.IMPORT, 0); }
		public AlterPartitionContext alterPartition() {
			return getRuleContext(AlterPartitionContext.class,0);
		}
		public TerminalNode SECONDARY_LOAD() { return getToken(MySQLStatementParser.SECONDARY_LOAD, 0); }
		public TerminalNode SECONDARY_UNLOAD() { return getToken(MySQLStatementParser.SECONDARY_UNLOAD, 0); }
		public StandaloneAlterCommandsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_standaloneAlterCommands; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStandaloneAlterCommands(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StandaloneAlterCommandsContext standaloneAlterCommands() throws RecognitionException {
		StandaloneAlterCommandsContext _localctx = new StandaloneAlterCommandsContext(_ctx, getState());
		enterRule(_localctx, 42, RULE_standaloneAlterCommands);
		int _la;
		try {
			setState(1707);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,82,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1701);
				match(DISCARD);
				setState(1702);
				match(TABLESPACE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1703);
				match(IMPORT);
				setState(1704);
				match(TABLESPACE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1705);
				alterPartition();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1706);
				_la = _input.LA(1);
				if ( !(_la==SECONDARY_LOAD || _la==SECONDARY_UNLOAD) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterPartitionContext extends ParserRuleContext {
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public PartitionDefinitionsContext partitionDefinitions() {
			return getRuleContext(PartitionDefinitionsContext.class,0);
		}
		public TerminalNode PARTITIONS() { return getToken(MySQLStatementParser.PARTITIONS, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public List noWriteToBinLog() {
			return getRuleContexts(NoWriteToBinLogContext.class);
		}
		public NoWriteToBinLogContext noWriteToBinLog(int i) {
			return getRuleContext(NoWriteToBinLogContext.class,i);
		}
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public IdentifierListContext identifierList() {
			return getRuleContext(IdentifierListContext.class,0);
		}
		public TerminalNode REBUILD() { return getToken(MySQLStatementParser.REBUILD, 0); }
		public AllOrPartitionNameListContext allOrPartitionNameList() {
			return getRuleContext(AllOrPartitionNameListContext.class,0);
		}
		public TerminalNode OPTIMIZE() { return getToken(MySQLStatementParser.OPTIMIZE, 0); }
		public TerminalNode ANALYZE() { return getToken(MySQLStatementParser.ANALYZE, 0); }
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public List checkType() {
			return getRuleContexts(CheckTypeContext.class);
		}
		public CheckTypeContext checkType(int i) {
			return getRuleContext(CheckTypeContext.class,i);
		}
		public TerminalNode REPAIR() { return getToken(MySQLStatementParser.REPAIR, 0); }
		public List repairType() {
			return getRuleContexts(RepairTypeContext.class);
		}
		public RepairTypeContext repairType(int i) {
			return getRuleContext(RepairTypeContext.class,i);
		}
		public TerminalNode COALESCE() { return getToken(MySQLStatementParser.COALESCE, 0); }
		public TerminalNode TRUNCATE() { return getToken(MySQLStatementParser.TRUNCATE, 0); }
		public TerminalNode REORGANIZE() { return getToken(MySQLStatementParser.REORGANIZE, 0); }
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public TerminalNode EXCHANGE() { return getToken(MySQLStatementParser.EXCHANGE, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public WithValidationContext withValidation() {
			return getRuleContext(WithValidationContext.class,0);
		}
		public TerminalNode DISCARD() { return getToken(MySQLStatementParser.DISCARD, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public TerminalNode IMPORT() { return getToken(MySQLStatementParser.IMPORT, 0); }
		public AlterPartitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterPartition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterPartition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterPartitionContext alterPartition() throws RecognitionException {
		AlterPartitionContext _localctx = new AlterPartitionContext(_ctx, getState());
		enterRule(_localctx, 44, RULE_alterPartition);
		int _la;
		try {
			int _alt;
			setState(1803);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ADD:
				enterOuterAlt(_localctx, 1);
				{
				setState(1709);
				match(ADD);
				setState(1710);
				match(PARTITION);
				setState(1712);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL || _la==NO_WRITE_TO_BINLOG) {
					{
					setState(1711);
					noWriteToBinLog();
					}
				}

				setState(1717);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LP_:
					{
					setState(1714);
					partitionDefinitions();
					}
					break;
				case PARTITIONS:
					{
					setState(1715);
					match(PARTITIONS);
					setState(1716);
					match(NUMBER_);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case DROP:
				enterOuterAlt(_localctx, 2);
				{
				setState(1719);
				match(DROP);
				setState(1720);
				match(PARTITION);
				setState(1721);
				identifierList();
				}
				break;
			case REBUILD:
				enterOuterAlt(_localctx, 3);
				{
				setState(1722);
				match(REBUILD);
				setState(1723);
				match(PARTITION);
				setState(1725);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,85,_ctx) ) {
				case 1:
					{
					setState(1724);
					noWriteToBinLog();
					}
					break;
				}
				setState(1727);
				allOrPartitionNameList();
				}
				break;
			case OPTIMIZE:
				enterOuterAlt(_localctx, 4);
				{
				setState(1728);
				match(OPTIMIZE);
				setState(1729);
				match(PARTITION);
				setState(1731);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,86,_ctx) ) {
				case 1:
					{
					setState(1730);
					noWriteToBinLog();
					}
					break;
				}
				setState(1733);
				allOrPartitionNameList();
				setState(1735);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) {
				case 1:
					{
					setState(1734);
					noWriteToBinLog();
					}
					break;
				}
				}
				break;
			case ANALYZE:
				enterOuterAlt(_localctx, 5);
				{
				setState(1737);
				match(ANALYZE);
				setState(1738);
				match(PARTITION);
				setState(1740);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,88,_ctx) ) {
				case 1:
					{
					setState(1739);
					noWriteToBinLog();
					}
					break;
				}
				setState(1742);
				allOrPartitionNameList();
				}
				break;
			case CHECK:
				enterOuterAlt(_localctx, 6);
				{
				setState(1743);
				match(CHECK);
				setState(1744);
				match(PARTITION);
				setState(1745);
				allOrPartitionNameList();
				setState(1749);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,89,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1746);
						checkType();
						}
						} 
					}
					setState(1751);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,89,_ctx);
				}
				}
				break;
			case REPAIR:
				enterOuterAlt(_localctx, 7);
				{
				setState(1752);
				match(REPAIR);
				setState(1753);
				match(PARTITION);
				setState(1755);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,90,_ctx) ) {
				case 1:
					{
					setState(1754);
					noWriteToBinLog();
					}
					break;
				}
				setState(1757);
				allOrPartitionNameList();
				setState(1761);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,91,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(1758);
						repairType();
						}
						} 
					}
					setState(1763);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,91,_ctx);
				}
				}
				break;
			case COALESCE:
				enterOuterAlt(_localctx, 8);
				{
				setState(1764);
				match(COALESCE);
				setState(1765);
				match(PARTITION);
				setState(1767);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL || _la==NO_WRITE_TO_BINLOG) {
					{
					setState(1766);
					noWriteToBinLog();
					}
				}

				setState(1769);
				match(NUMBER_);
				}
				break;
			case TRUNCATE:
				enterOuterAlt(_localctx, 9);
				{
				setState(1770);
				match(TRUNCATE);
				setState(1771);
				match(PARTITION);
				setState(1772);
				allOrPartitionNameList();
				}
				break;
			case REORGANIZE:
				enterOuterAlt(_localctx, 10);
				{
				setState(1773);
				match(REORGANIZE);
				setState(1774);
				match(PARTITION);
				setState(1776);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,93,_ctx) ) {
				case 1:
					{
					setState(1775);
					noWriteToBinLog();
					}
					break;
				}
				setState(1782);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,94,_ctx) ) {
				case 1:
					{
					setState(1778);
					identifierList();
					setState(1779);
					match(INTO);
					setState(1780);
					partitionDefinitions();
					}
					break;
				}
				}
				break;
			case EXCHANGE:
				enterOuterAlt(_localctx, 11);
				{
				setState(1784);
				match(EXCHANGE);
				setState(1785);
				match(PARTITION);
				setState(1786);
				identifier();
				setState(1787);
				match(WITH);
				setState(1788);
				match(TABLE);
				setState(1789);
				tableName();
				setState(1791);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,95,_ctx) ) {
				case 1:
					{
					setState(1790);
					withValidation();
					}
					break;
				}
				}
				break;
			case DISCARD:
				enterOuterAlt(_localctx, 12);
				{
				setState(1793);
				match(DISCARD);
				setState(1794);
				match(PARTITION);
				setState(1795);
				allOrPartitionNameList();
				setState(1796);
				match(TABLESPACE);
				}
				break;
			case IMPORT:
				enterOuterAlt(_localctx, 13);
				{
				setState(1798);
				match(IMPORT);
				setState(1799);
				match(PARTITION);
				setState(1800);
				allOrPartitionNameList();
				setState(1801);
				match(TABLESPACE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintClauseContext extends ParserRuleContext {
		public TerminalNode CONSTRAINT() { return getToken(MySQLStatementParser.CONSTRAINT, 0); }
		public ConstraintNameContext constraintName() {
			return getRuleContext(ConstraintNameContext.class,0);
		}
		public ConstraintClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConstraintClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintClauseContext constraintClause() throws RecognitionException {
		ConstraintClauseContext _localctx = new ConstraintClauseContext(_ctx, getState());
		enterRule(_localctx, 46, RULE_constraintClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1805);
			match(CONSTRAINT);
			setState(1807);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,97,_ctx) ) {
			case 1:
				{
				setState(1806);
				constraintName();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableElementListContext extends ParserRuleContext {
		public List tableElement() {
			return getRuleContexts(TableElementContext.class);
		}
		public TableElementContext tableElement(int i) {
			return getRuleContext(TableElementContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TableElementListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableElementList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableElementList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableElementListContext tableElementList() throws RecognitionException {
		TableElementListContext _localctx = new TableElementListContext(_ctx, getState());
		enterRule(_localctx, 48, RULE_tableElementList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1809);
			tableElement();
			setState(1814);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(1810);
				match(COMMA_);
				setState(1811);
				tableElement();
				}
				}
				setState(1816);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableElementContext extends ParserRuleContext {
		public ColumnDefinitionContext columnDefinition() {
			return getRuleContext(ColumnDefinitionContext.class,0);
		}
		public TableConstraintDefContext tableConstraintDef() {
			return getRuleContext(TableConstraintDefContext.class,0);
		}
		public TableElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableElement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableElementContext tableElement() throws RecognitionException {
		TableElementContext _localctx = new TableElementContext(_ctx, getState());
		enterRule(_localctx, 50, RULE_tableElement);
		try {
			setState(1819);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,99,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1817);
				columnDefinition();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1818);
				tableConstraintDef();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RestrictContext extends ParserRuleContext {
		public TerminalNode RESTRICT() { return getToken(MySQLStatementParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySQLStatementParser.CASCADE, 0); }
		public RestrictContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_restrict; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRestrict(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RestrictContext restrict() throws RecognitionException {
		RestrictContext _localctx = new RestrictContext(_ctx, getState());
		enterRule(_localctx, 52, RULE_restrict);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1821);
			_la = _input.LA(1);
			if ( !(_la==CASCADE || _la==RESTRICT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FulltextIndexOptionContext extends ParserRuleContext {
		public CommonIndexOptionContext commonIndexOption() {
			return getRuleContext(CommonIndexOptionContext.class,0);
		}
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode PARSER() { return getToken(MySQLStatementParser.PARSER, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public FulltextIndexOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fulltextIndexOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFulltextIndexOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FulltextIndexOptionContext fulltextIndexOption() throws RecognitionException {
		FulltextIndexOptionContext _localctx = new FulltextIndexOptionContext(_ctx, getState());
		enterRule(_localctx, 54, RULE_fulltextIndexOption);
		try {
			setState(1827);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case COMMENT:
			case INVISIBLE:
			case KEY_BLOCK_SIZE:
			case VISIBLE:
				enterOuterAlt(_localctx, 1);
				{
				setState(1823);
				commonIndexOption();
				}
				break;
			case WITH:
				enterOuterAlt(_localctx, 2);
				{
				setState(1824);
				match(WITH);
				setState(1825);
				match(PARSER);
				setState(1826);
				identifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTableContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TableOrTablesContext tableOrTables() {
			return getRuleContext(TableOrTablesContext.class,0);
		}
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public TerminalNode TEMPORARY() { return getToken(MySQLStatementParser.TEMPORARY, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public RestrictContext restrict() {
			return getRuleContext(RestrictContext.class,0);
		}
		public DropTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTableContext dropTable() throws RecognitionException {
		DropTableContext _localctx = new DropTableContext(_ctx, getState());
		enterRule(_localctx, 56, RULE_dropTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1829);
			match(DROP);
			setState(1831);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TEMPORARY) {
				{
				setState(1830);
				match(TEMPORARY);
				}
			}

			setState(1833);
			tableOrTables();
			setState(1835);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1834);
				ifExists();
				}
			}

			setState(1837);
			tableList();
			setState(1839);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(1838);
				restrict();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropIndexContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public List alterAlgorithmOption() {
			return getRuleContexts(AlterAlgorithmOptionContext.class);
		}
		public AlterAlgorithmOptionContext alterAlgorithmOption(int i) {
			return getRuleContext(AlterAlgorithmOptionContext.class,i);
		}
		public List alterLockOption() {
			return getRuleContexts(AlterLockOptionContext.class);
		}
		public AlterLockOptionContext alterLockOption(int i) {
			return getRuleContext(AlterLockOptionContext.class,i);
		}
		public DropIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropIndexContext dropIndex() throws RecognitionException {
		DropIndexContext _localctx = new DropIndexContext(_ctx, getState());
		enterRule(_localctx, 58, RULE_dropIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1841);
			match(DROP);
			setState(1842);
			match(INDEX);
			setState(1843);
			indexName();
			setState(1846);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(1844);
				match(ON);
				setState(1845);
				tableName();
				}
			}

			setState(1852);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ALGORITHM || _la==LOCK) {
				{
				setState(1850);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALGORITHM:
					{
					setState(1848);
					alterAlgorithmOption();
					}
					break;
				case LOCK:
					{
					setState(1849);
					alterLockOption();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				setState(1854);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterAlgorithmOptionContext extends ParserRuleContext {
		public TerminalNode ALGORITHM() { return getToken(MySQLStatementParser.ALGORITHM, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode INSTANT() { return getToken(MySQLStatementParser.INSTANT, 0); }
		public TerminalNode INPLACE() { return getToken(MySQLStatementParser.INPLACE, 0); }
		public TerminalNode COPY() { return getToken(MySQLStatementParser.COPY, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public AlterAlgorithmOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterAlgorithmOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterAlgorithmOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterAlgorithmOptionContext alterAlgorithmOption() throws RecognitionException {
		AlterAlgorithmOptionContext _localctx = new AlterAlgorithmOptionContext(_ctx, getState());
		enterRule(_localctx, 60, RULE_alterAlgorithmOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1855);
			match(ALGORITHM);
			setState(1857);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(1856);
				match(EQ_);
				}
			}

			setState(1859);
			_la = _input.LA(1);
			if ( !(((((_la - 65)) & ~0x3f) == 0 && ((1L << (_la - 65)) & ((1L << (INSTANT - 65)) | (1L << (INPLACE - 65)) | (1L << (COPY - 65)))) != 0) || _la==DEFAULT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterLockOptionContext extends ParserRuleContext {
		public TerminalNode LOCK() { return getToken(MySQLStatementParser.LOCK, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public AlterLockOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterLockOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterLockOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterLockOptionContext alterLockOption() throws RecognitionException {
		AlterLockOptionContext _localctx = new AlterLockOptionContext(_ctx, getState());
		enterRule(_localctx, 62, RULE_alterLockOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1861);
			match(LOCK);
			setState(1863);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(1862);
				match(EQ_);
				}
			}

			setState(1865);
			_la = _input.LA(1);
			if ( !(_la==T__0 || _la==T__1 || _la==DEFAULT || _la==NONE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TruncateTableContext extends ParserRuleContext {
		public TerminalNode TRUNCATE() { return getToken(MySQLStatementParser.TRUNCATE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TruncateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_truncateTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTruncateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TruncateTableContext truncateTable() throws RecognitionException {
		TruncateTableContext _localctx = new TruncateTableContext(_ctx, getState());
		enterRule(_localctx, 64, RULE_truncateTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1867);
			match(TRUNCATE);
			setState(1869);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TABLE) {
				{
				setState(1868);
				match(TABLE);
				}
			}

			setState(1871);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateIndexContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public KeyListWithExpressionContext keyListWithExpression() {
			return getRuleContext(KeyListWithExpressionContext.class,0);
		}
		public CreateIndexSpecificationContext createIndexSpecification() {
			return getRuleContext(CreateIndexSpecificationContext.class,0);
		}
		public IndexTypeClauseContext indexTypeClause() {
			return getRuleContext(IndexTypeClauseContext.class,0);
		}
		public IndexOptionContext indexOption() {
			return getRuleContext(IndexOptionContext.class,0);
		}
		public List alterAlgorithmOption() {
			return getRuleContexts(AlterAlgorithmOptionContext.class);
		}
		public AlterAlgorithmOptionContext alterAlgorithmOption(int i) {
			return getRuleContext(AlterAlgorithmOptionContext.class,i);
		}
		public List alterLockOption() {
			return getRuleContexts(AlterLockOptionContext.class);
		}
		public AlterLockOptionContext alterLockOption(int i) {
			return getRuleContext(AlterLockOptionContext.class,i);
		}
		public CreateIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateIndexContext createIndex() throws RecognitionException {
		CreateIndexContext _localctx = new CreateIndexContext(_ctx, getState());
		enterRule(_localctx, 66, RULE_createIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1873);
			match(CREATE);
			setState(1875);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FULLTEXT || _la==SPATIAL || _la==UNIQUE) {
				{
				setState(1874);
				createIndexSpecification();
				}
			}

			setState(1877);
			match(INDEX);
			setState(1878);
			indexName();
			setState(1880);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==TYPE || _la==USING) {
				{
				setState(1879);
				indexTypeClause();
				}
			}

			setState(1882);
			match(ON);
			setState(1883);
			tableName();
			setState(1884);
			keyListWithExpression();
			setState(1886);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT || _la==INVISIBLE || _la==KEY_BLOCK_SIZE || ((((_la - 709)) & ~0x3f) == 0 && ((1L << (_la - 709)) & ((1L << (TYPE - 709)) | (1L << (USING - 709)) | (1L << (VISIBLE - 709)))) != 0)) {
				{
				setState(1885);
				indexOption();
				}
			}

			setState(1892);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ALGORITHM || _la==LOCK) {
				{
				setState(1890);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case ALGORITHM:
					{
					setState(1888);
					alterAlgorithmOption();
					}
					break;
				case LOCK:
					{
					setState(1889);
					alterLockOption();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				setState(1894);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySQLStatementParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySQLStatementParser.SCHEMA, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List createDatabaseSpecification_() {
			return getRuleContexts(CreateDatabaseSpecification_Context.class);
		}
		public CreateDatabaseSpecification_Context createDatabaseSpecification_(int i) {
			return getRuleContext(CreateDatabaseSpecification_Context.class,i);
		}
		public CreateDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDatabaseContext createDatabase() throws RecognitionException {
		CreateDatabaseContext _localctx = new CreateDatabaseContext(_ctx, getState());
		enterRule(_localctx, 68, RULE_createDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1895);
			match(CREATE);
			setState(1896);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1898);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1897);
				ifNotExists();
				}
			}

			setState(1900);
			schemaName();
			setState(1904);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (CHAR - 129)) | (1L << (CHARACTER - 129)) | (1L << (CHARSET - 129)) | (1L << (COLLATE - 129)))) != 0) || _la==DEFAULT || _la==ENCRYPTION) {
				{
				{
				setState(1901);
				createDatabaseSpecification_();
				}
				}
				setState(1906);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDatabaseContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode DATABASE() { return getToken(MySQLStatementParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySQLStatementParser.SCHEMA, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public List alterDatabaseSpecification_() {
			return getRuleContexts(AlterDatabaseSpecification_Context.class);
		}
		public AlterDatabaseSpecification_Context alterDatabaseSpecification_(int i) {
			return getRuleContext(AlterDatabaseSpecification_Context.class,i);
		}
		public AlterDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDatabaseContext alterDatabase() throws RecognitionException {
		AlterDatabaseContext _localctx = new AlterDatabaseContext(_ctx, getState());
		enterRule(_localctx, 70, RULE_alterDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1907);
			match(ALTER);
			setState(1908);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1910);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,117,_ctx) ) {
			case 1:
				{
				setState(1909);
				schemaName();
				}
				break;
			}
			setState(1915);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 129)) & ~0x3f) == 0 && ((1L << (_la - 129)) & ((1L << (CHAR - 129)) | (1L << (CHARACTER - 129)) | (1L << (CHARSET - 129)) | (1L << (COLLATE - 129)))) != 0) || _la==DEFAULT || _la==ENCRYPTION || _la==READ) {
				{
				{
				setState(1912);
				alterDatabaseSpecification_();
				}
				}
				setState(1917);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDatabaseSpecification_Context extends ParserRuleContext {
		public DefaultCharsetContext defaultCharset() {
			return getRuleContext(DefaultCharsetContext.class,0);
		}
		public DefaultCollationContext defaultCollation() {
			return getRuleContext(DefaultCollationContext.class,0);
		}
		public DefaultEncryptionContext defaultEncryption() {
			return getRuleContext(DefaultEncryptionContext.class,0);
		}
		public CreateDatabaseSpecification_Context(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDatabaseSpecification_; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateDatabaseSpecification_(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDatabaseSpecification_Context createDatabaseSpecification_() throws RecognitionException {
		CreateDatabaseSpecification_Context _localctx = new CreateDatabaseSpecification_Context(_ctx, getState());
		enterRule(_localctx, 72, RULE_createDatabaseSpecification_);
		try {
			setState(1921);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,119,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1918);
				defaultCharset();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1919);
				defaultCollation();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1920);
				defaultEncryption();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterDatabaseSpecification_Context extends ParserRuleContext {
		public CreateDatabaseSpecification_Context createDatabaseSpecification_() {
			return getRuleContext(CreateDatabaseSpecification_Context.class,0);
		}
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public TerminalNode ONLY() { return getToken(MySQLStatementParser.ONLY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public AlterDatabaseSpecification_Context(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterDatabaseSpecification_; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterDatabaseSpecification_(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterDatabaseSpecification_Context alterDatabaseSpecification_() throws RecognitionException {
		AlterDatabaseSpecification_Context _localctx = new AlterDatabaseSpecification_Context(_ctx, getState());
		enterRule(_localctx, 74, RULE_alterDatabaseSpecification_);
		int _la;
		try {
			setState(1930);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHAR:
			case CHARACTER:
			case CHARSET:
			case COLLATE:
			case DEFAULT:
			case ENCRYPTION:
				enterOuterAlt(_localctx, 1);
				{
				setState(1923);
				createDatabaseSpecification_();
				}
				break;
			case READ:
				enterOuterAlt(_localctx, 2);
				{
				setState(1924);
				match(READ);
				setState(1925);
				match(ONLY);
				setState(1927);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(1926);
					match(EQ_);
					}
				}

				setState(1929);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==NUMBER_) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropDatabaseContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySQLStatementParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySQLStatementParser.SCHEMA, 0); }
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropDatabaseContext dropDatabase() throws RecognitionException {
		DropDatabaseContext _localctx = new DropDatabaseContext(_ctx, getState());
		enterRule(_localctx, 76, RULE_dropDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1932);
			match(DROP);
			setState(1933);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(1935);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1934);
				ifExists();
				}
			}

			setState(1937);
			schemaName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterInstanceContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode INSTANCE() { return getToken(MySQLStatementParser.INSTANCE, 0); }
		public InstanceActionContext instanceAction() {
			return getRuleContext(InstanceActionContext.class,0);
		}
		public AlterInstanceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterInstance; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterInstance(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterInstanceContext alterInstance() throws RecognitionException {
		AlterInstanceContext _localctx = new AlterInstanceContext(_ctx, getState());
		enterRule(_localctx, 78, RULE_alterInstance);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1939);
			match(ALTER);
			setState(1940);
			match(INSTANCE);
			setState(1941);
			instanceAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InstanceActionContext extends ParserRuleContext {
		public TerminalNode INNODB() { return getToken(MySQLStatementParser.INNODB, 0); }
		public TerminalNode REDO_LOG() { return getToken(MySQLStatementParser.REDO_LOG, 0); }
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public TerminalNode ROTATE() { return getToken(MySQLStatementParser.ROTATE, 0); }
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode BINLOG() { return getToken(MySQLStatementParser.BINLOG, 0); }
		public TerminalNode RELOAD() { return getToken(MySQLStatementParser.RELOAD, 0); }
		public TerminalNode TLS() { return getToken(MySQLStatementParser.TLS, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public ChannelContext channel() {
			return getRuleContext(ChannelContext.class,0);
		}
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySQLStatementParser.ROLLBACK, 0); }
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TerminalNode ERROR() { return getToken(MySQLStatementParser.ERROR, 0); }
		public InstanceActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_instanceAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInstanceAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InstanceActionContext instanceAction() throws RecognitionException {
		InstanceActionContext _localctx = new InstanceActionContext(_ctx, getState());
		enterRule(_localctx, 80, RULE_instanceAction);
		int _la;
		try {
			setState(1967);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(1943);
				_la = _input.LA(1);
				if ( !(_la==DISABLE || _la==ENABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(1944);
				match(INNODB);
				setState(1945);
				match(REDO_LOG);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(1946);
				match(ROTATE);
				setState(1947);
				match(INNODB);
				setState(1948);
				match(MASTER);
				setState(1949);
				match(KEY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(1950);
				match(ROTATE);
				setState(1951);
				match(BINLOG);
				setState(1952);
				match(MASTER);
				setState(1953);
				match(KEY);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(1954);
				match(RELOAD);
				setState(1955);
				match(TLS);
				setState(1959);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(1956);
					match(FOR);
					setState(1957);
					match(CHANNEL);
					setState(1958);
					channel();
					}
				}

				setState(1965);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO) {
					{
					setState(1961);
					match(NO);
					setState(1962);
					match(ROLLBACK);
					setState(1963);
					match(ON);
					setState(1964);
					match(ERROR);
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChannelContext extends ParserRuleContext {
		public TerminalNode MYSQL_MAIN() { return getToken(MySQLStatementParser.MYSQL_MAIN, 0); }
		public TerminalNode MYSQL_ADMIN() { return getToken(MySQLStatementParser.MYSQL_ADMIN, 0); }
		public ChannelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_channel; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChannel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChannelContext channel() throws RecognitionException {
		ChannelContext _localctx = new ChannelContext(_ctx, getState());
		enterRule(_localctx, 82, RULE_channel);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1969);
			_la = _input.LA(1);
			if ( !(_la==MYSQL_MAIN || _la==MYSQL_ADMIN) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateEventContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode EVENT() { return getToken(MySQLStatementParser.EVENT, 0); }
		public EventNameContext eventName() {
			return getRuleContext(EventNameContext.class,0);
		}
		public List ON() { return getTokens(MySQLStatementParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySQLStatementParser.ON, i);
		}
		public TerminalNode SCHEDULE() { return getToken(MySQLStatementParser.SCHEDULE, 0); }
		public ScheduleExpressionContext scheduleExpression() {
			return getRuleContext(ScheduleExpressionContext.class,0);
		}
		public TerminalNode DO() { return getToken(MySQLStatementParser.DO, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public TerminalNode COMPLETION() { return getToken(MySQLStatementParser.COMPLETION, 0); }
		public TerminalNode PRESERVE() { return getToken(MySQLStatementParser.PRESERVE, 0); }
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public CreateEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateEventContext createEvent() throws RecognitionException {
		CreateEventContext _localctx = new CreateEventContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_createEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(1971);
			match(CREATE);
			setState(1973);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(1972);
				ownerStatement();
				}
			}

			setState(1975);
			match(EVENT);
			setState(1977);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(1976);
				ifNotExists();
				}
			}

			setState(1979);
			eventName();
			setState(1980);
			match(ON);
			setState(1981);
			match(SCHEDULE);
			setState(1982);
			scheduleExpression();
			setState(1989);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(1983);
				match(ON);
				setState(1984);
				match(COMPLETION);
				setState(1986);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(1985);
					match(NOT);
					}
				}

				setState(1988);
				match(PRESERVE);
				}
			}

			setState(1996);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,130,_ctx) ) {
			case 1:
				{
				setState(1991);
				match(ENABLE);
				}
				break;
			case 2:
				{
				setState(1992);
				match(DISABLE);
				}
				break;
			case 3:
				{
				setState(1993);
				match(DISABLE);
				setState(1994);
				match(ON);
				setState(1995);
				match(SLAVE);
				}
				break;
			}
			setState(2000);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(1998);
				match(COMMENT);
				setState(1999);
				string_();
				}
			}

			setState(2002);
			match(DO);
			setState(2003);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterEventContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode EVENT() { return getToken(MySQLStatementParser.EVENT, 0); }
		public List eventName() {
			return getRuleContexts(EventNameContext.class);
		}
		public EventNameContext eventName(int i) {
			return getRuleContext(EventNameContext.class,i);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List ON() { return getTokens(MySQLStatementParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySQLStatementParser.ON, i);
		}
		public TerminalNode SCHEDULE() { return getToken(MySQLStatementParser.SCHEDULE, 0); }
		public ScheduleExpressionContext scheduleExpression() {
			return getRuleContext(ScheduleExpressionContext.class,0);
		}
		public TerminalNode COMPLETION() { return getToken(MySQLStatementParser.COMPLETION, 0); }
		public TerminalNode PRESERVE() { return getToken(MySQLStatementParser.PRESERVE, 0); }
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode DO() { return getToken(MySQLStatementParser.DO, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public AlterEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterEventContext alterEvent() throws RecognitionException {
		AlterEventContext _localctx = new AlterEventContext(_ctx, getState());
		enterRule(_localctx, 86, RULE_alterEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2005);
			match(ALTER);
			setState(2007);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2006);
				ownerStatement();
				}
			}

			setState(2009);
			match(EVENT);
			setState(2010);
			eventName();
			setState(2014);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,133,_ctx) ) {
			case 1:
				{
				setState(2011);
				match(ON);
				setState(2012);
				match(SCHEDULE);
				setState(2013);
				scheduleExpression();
				}
				break;
			}
			setState(2022);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(2016);
				match(ON);
				setState(2017);
				match(COMPLETION);
				setState(2019);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(2018);
					match(NOT);
					}
				}

				setState(2021);
				match(PRESERVE);
				}
			}

			setState(2027);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RENAME) {
				{
				setState(2024);
				match(RENAME);
				setState(2025);
				match(TO);
				setState(2026);
				eventName();
				}
			}

			setState(2034);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,137,_ctx) ) {
			case 1:
				{
				setState(2029);
				match(ENABLE);
				}
				break;
			case 2:
				{
				setState(2030);
				match(DISABLE);
				}
				break;
			case 3:
				{
				setState(2031);
				match(DISABLE);
				setState(2032);
				match(ON);
				setState(2033);
				match(SLAVE);
				}
				break;
			}
			setState(2038);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(2036);
				match(COMMENT);
				setState(2037);
				string_();
				}
			}

			setState(2042);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DO) {
				{
				setState(2040);
				match(DO);
				setState(2041);
				routineBody();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropEventContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode EVENT() { return getToken(MySQLStatementParser.EVENT, 0); }
		public EventNameContext eventName() {
			return getRuleContext(EventNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropEventContext dropEvent() throws RecognitionException {
		DropEventContext _localctx = new DropEventContext(_ctx, getState());
		enterRule(_localctx, 88, RULE_dropEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2044);
			match(DROP);
			setState(2045);
			match(EVENT);
			setState(2047);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2046);
				ifExists();
				}
			}

			setState(2049);
			eventName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateFunctionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode RETURNS() { return getToken(MySQLStatementParser.RETURNS, 0); }
		public List dataType() {
			return getRuleContexts(DataTypeContext.class);
		}
		public DataTypeContext dataType(int i) {
			return getRuleContext(DataTypeContext.class,i);
		}
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public CreateFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateFunctionContext createFunction() throws RecognitionException {
		CreateFunctionContext _localctx = new CreateFunctionContext(_ctx, getState());
		enterRule(_localctx, 90, RULE_createFunction);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2051);
			match(CREATE);
			setState(2053);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2052);
				ownerStatement();
				}
			}

			setState(2055);
			match(FUNCTION);
			setState(2056);
			functionName();
			setState(2057);
			match(LP_);
			setState(2061);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(2058);
				identifier();
				setState(2059);
				dataType();
				}
			}

			setState(2069);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2063);
				match(COMMA_);
				setState(2064);
				identifier();
				setState(2065);
				dataType();
				}
				}
				setState(2071);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2072);
			match(RP_);
			setState(2073);
			match(RETURNS);
			setState(2074);
			dataType();
			setState(2078);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,144,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(2075);
					routineOption();
					}
					} 
				}
				setState(2080);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,144,_ctx);
			}
			setState(2081);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterFunctionContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public AlterFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterFunctionContext alterFunction() throws RecognitionException {
		AlterFunctionContext _localctx = new AlterFunctionContext(_ctx, getState());
		enterRule(_localctx, 92, RULE_alterFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2083);
			match(ALTER);
			setState(2084);
			match(FUNCTION);
			setState(2085);
			functionName();
			setState(2089);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 147)) & ~0x3f) == 0 && ((1L << (_la - 147)) & ((1L << (COMMENT - 147)) | (1L << (CONTAINS - 147)) | (1L << (DETERMINISTIC - 147)))) != 0) || _la==LANGUAGE || ((((_la - 437)) & ~0x3f) == 0 && ((1L << (_la - 437)) & ((1L << (MODIFIES - 437)) | (1L << (NO - 437)) | (1L << (NOT - 437)))) != 0) || _la==READS || _la==SQL) {
				{
				{
				setState(2086);
				routineOption();
				}
				}
				setState(2091);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropFunctionContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropFunctionContext dropFunction() throws RecognitionException {
		DropFunctionContext _localctx = new DropFunctionContext(_ctx, getState());
		enterRule(_localctx, 94, RULE_dropFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2092);
			match(DROP);
			setState(2093);
			match(FUNCTION);
			setState(2095);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2094);
				ifExists();
				}
			}

			setState(2097);
			functionName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateProcedureContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public List procedureParameter() {
			return getRuleContexts(ProcedureParameterContext.class);
		}
		public ProcedureParameterContext procedureParameter(int i) {
			return getRuleContext(ProcedureParameterContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public CreateProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateProcedureContext createProcedure() throws RecognitionException {
		CreateProcedureContext _localctx = new CreateProcedureContext(_ctx, getState());
		enterRule(_localctx, 96, RULE_createProcedure);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2099);
			match(CREATE);
			setState(2101);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2100);
				ownerStatement();
				}
			}

			setState(2103);
			match(PROCEDURE);
			setState(2104);
			functionName();
			setState(2105);
			match(LP_);
			setState(2107);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (IN - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INOUT - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OUT - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(2106);
				procedureParameter();
				}
			}

			setState(2113);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2109);
				match(COMMA_);
				setState(2110);
				procedureParameter();
				}
				}
				setState(2115);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2116);
			match(RP_);
			setState(2120);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,150,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(2117);
					routineOption();
					}
					} 
				}
				setState(2122);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,150,_ctx);
			}
			setState(2123);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterProcedureContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public List routineOption() {
			return getRuleContexts(RoutineOptionContext.class);
		}
		public RoutineOptionContext routineOption(int i) {
			return getRuleContext(RoutineOptionContext.class,i);
		}
		public AlterProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterProcedureContext alterProcedure() throws RecognitionException {
		AlterProcedureContext _localctx = new AlterProcedureContext(_ctx, getState());
		enterRule(_localctx, 98, RULE_alterProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2125);
			match(ALTER);
			setState(2126);
			match(PROCEDURE);
			setState(2127);
			functionName();
			setState(2131);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 147)) & ~0x3f) == 0 && ((1L << (_la - 147)) & ((1L << (COMMENT - 147)) | (1L << (CONTAINS - 147)) | (1L << (DETERMINISTIC - 147)))) != 0) || _la==LANGUAGE || ((((_la - 437)) & ~0x3f) == 0 && ((1L << (_la - 437)) & ((1L << (MODIFIES - 437)) | (1L << (NO - 437)) | (1L << (NOT - 437)))) != 0) || _la==READS || _la==SQL) {
				{
				{
				setState(2128);
				routineOption();
				}
				}
				setState(2133);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropProcedureContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropProcedureContext dropProcedure() throws RecognitionException {
		DropProcedureContext _localctx = new DropProcedureContext(_ctx, getState());
		enterRule(_localctx, 100, RULE_dropProcedure);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2134);
			match(DROP);
			setState(2135);
			match(PROCEDURE);
			setState(2137);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2136);
				ifExists();
				}
			}

			setState(2139);
			functionName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateServerContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode SERVER() { return getToken(MySQLStatementParser.SERVER, 0); }
		public ServerNameContext serverName() {
			return getRuleContext(ServerNameContext.class,0);
		}
		public TerminalNode FOREIGN() { return getToken(MySQLStatementParser.FOREIGN, 0); }
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode WRAPPER() { return getToken(MySQLStatementParser.WRAPPER, 0); }
		public WrapperNameContext wrapperName() {
			return getRuleContext(WrapperNameContext.class,0);
		}
		public TerminalNode OPTIONS() { return getToken(MySQLStatementParser.OPTIONS, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List serverOption() {
			return getRuleContexts(ServerOptionContext.class);
		}
		public ServerOptionContext serverOption(int i) {
			return getRuleContext(ServerOptionContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CreateServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createServer; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateServerContext createServer() throws RecognitionException {
		CreateServerContext _localctx = new CreateServerContext(_ctx, getState());
		enterRule(_localctx, 102, RULE_createServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2141);
			match(CREATE);
			setState(2142);
			match(SERVER);
			setState(2143);
			serverName();
			setState(2144);
			match(FOREIGN);
			setState(2145);
			match(DATA);
			setState(2146);
			match(WRAPPER);
			setState(2147);
			wrapperName();
			setState(2148);
			match(OPTIONS);
			setState(2149);
			match(LP_);
			setState(2150);
			serverOption();
			setState(2155);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2151);
				match(COMMA_);
				setState(2152);
				serverOption();
				}
				}
				setState(2157);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2158);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterServerContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode SERVER() { return getToken(MySQLStatementParser.SERVER, 0); }
		public ServerNameContext serverName() {
			return getRuleContext(ServerNameContext.class,0);
		}
		public TerminalNode OPTIONS() { return getToken(MySQLStatementParser.OPTIONS, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List serverOption() {
			return getRuleContexts(ServerOptionContext.class);
		}
		public ServerOptionContext serverOption(int i) {
			return getRuleContext(ServerOptionContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AlterServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterServer; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterServerContext alterServer() throws RecognitionException {
		AlterServerContext _localctx = new AlterServerContext(_ctx, getState());
		enterRule(_localctx, 104, RULE_alterServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2160);
			match(ALTER);
			setState(2161);
			match(SERVER);
			setState(2162);
			serverName();
			setState(2163);
			match(OPTIONS);
			setState(2164);
			match(LP_);
			setState(2165);
			serverOption();
			setState(2170);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2166);
				match(COMMA_);
				setState(2167);
				serverOption();
				}
				}
				setState(2172);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2173);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropServerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode SERVER() { return getToken(MySQLStatementParser.SERVER, 0); }
		public ServerNameContext serverName() {
			return getRuleContext(ServerNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public DropServerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropServer; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropServer(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropServerContext dropServer() throws RecognitionException {
		DropServerContext _localctx = new DropServerContext(_ctx, getState());
		enterRule(_localctx, 106, RULE_dropServer);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2175);
			match(DROP);
			setState(2176);
			match(SERVER);
			setState(2178);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2177);
				ifExists();
				}
			}

			setState(2180);
			serverName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateViewContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public ViewNameContext viewName() {
			return getRuleContext(ViewNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode OR() { return getToken(MySQLStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySQLStatementParser.ALGORITHM, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode SQL() { return getToken(MySQLStatementParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySQLStatementParser.SECURITY, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(MySQLStatementParser.OPTION, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySQLStatementParser.UNDEFINED, 0); }
		public TerminalNode MERGE() { return getToken(MySQLStatementParser.MERGE, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySQLStatementParser.TEMPTABLE, 0); }
		public TerminalNode DEFINER() { return getToken(MySQLStatementParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySQLStatementParser.INVOKER, 0); }
		public TerminalNode CASCADED() { return getToken(MySQLStatementParser.CASCADED, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public CreateViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateViewContext createView() throws RecognitionException {
		CreateViewContext _localctx = new CreateViewContext(_ctx, getState());
		enterRule(_localctx, 108, RULE_createView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2182);
			match(CREATE);
			setState(2185);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OR) {
				{
				setState(2183);
				match(OR);
				setState(2184);
				match(REPLACE);
				}
			}

			setState(2190);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM) {
				{
				setState(2187);
				match(ALGORITHM);
				setState(2188);
				match(EQ_);
				setState(2189);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==TEMPTABLE || _la==UNDEFINED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2193);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2192);
				ownerStatement();
				}
			}

			setState(2198);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SQL) {
				{
				setState(2195);
				match(SQL);
				setState(2196);
				match(SECURITY);
				setState(2197);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2200);
			match(VIEW);
			setState(2201);
			viewName();
			setState(2206);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(2202);
				match(LP_);
				setState(2203);
				columnNames();
				setState(2204);
				match(RP_);
				}
			}

			setState(2208);
			match(AS);
			setState(2209);
			select();
			setState(2216);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,162,_ctx) ) {
			case 1:
				{
				setState(2210);
				match(WITH);
				setState(2212);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADED || _la==LOCAL) {
					{
					setState(2211);
					_la = _input.LA(1);
					if ( !(_la==CASCADED || _la==LOCAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2214);
				match(CHECK);
				setState(2215);
				match(OPTION);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterViewContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public ViewNameContext viewName() {
			return getRuleContext(ViewNameContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public TerminalNode ALGORITHM() { return getToken(MySQLStatementParser.ALGORITHM, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TerminalNode SQL() { return getToken(MySQLStatementParser.SQL, 0); }
		public TerminalNode SECURITY() { return getToken(MySQLStatementParser.SECURITY, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public TerminalNode OPTION() { return getToken(MySQLStatementParser.OPTION, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySQLStatementParser.UNDEFINED, 0); }
		public TerminalNode MERGE() { return getToken(MySQLStatementParser.MERGE, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySQLStatementParser.TEMPTABLE, 0); }
		public TerminalNode DEFINER() { return getToken(MySQLStatementParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySQLStatementParser.INVOKER, 0); }
		public TerminalNode CASCADED() { return getToken(MySQLStatementParser.CASCADED, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public AlterViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterViewContext alterView() throws RecognitionException {
		AlterViewContext _localctx = new AlterViewContext(_ctx, getState());
		enterRule(_localctx, 110, RULE_alterView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2218);
			match(ALTER);
			setState(2222);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALGORITHM) {
				{
				setState(2219);
				match(ALGORITHM);
				setState(2220);
				match(EQ_);
				setState(2221);
				_la = _input.LA(1);
				if ( !(_la==MERGE || _la==TEMPTABLE || _la==UNDEFINED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2225);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2224);
				ownerStatement();
				}
			}

			setState(2230);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SQL) {
				{
				setState(2227);
				match(SQL);
				setState(2228);
				match(SECURITY);
				setState(2229);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(2232);
			match(VIEW);
			setState(2233);
			viewName();
			setState(2238);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(2234);
				match(LP_);
				setState(2235);
				columnNames();
				setState(2236);
				match(RP_);
				}
			}

			setState(2240);
			match(AS);
			setState(2241);
			select();
			setState(2248);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(2242);
				match(WITH);
				setState(2244);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CASCADED || _la==LOCAL) {
					{
					setState(2243);
					_la = _input.LA(1);
					if ( !(_la==CASCADED || _la==LOCAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2246);
				match(CHECK);
				setState(2247);
				match(OPTION);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropViewContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public ViewNamesContext viewNames() {
			return getRuleContext(ViewNamesContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public RestrictContext restrict() {
			return getRuleContext(RestrictContext.class,0);
		}
		public DropViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropViewContext dropView() throws RecognitionException {
		DropViewContext _localctx = new DropViewContext(_ctx, getState());
		enterRule(_localctx, 112, RULE_dropView);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2250);
			match(DROP);
			setState(2251);
			match(VIEW);
			setState(2253);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2252);
				ifExists();
				}
			}

			setState(2255);
			viewNames();
			setState(2257);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CASCADE || _la==RESTRICT) {
				{
				setState(2256);
				restrict();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceContext extends ParserRuleContext {
		public CreateTablespaceInnodbContext createTablespaceInnodb() {
			return getRuleContext(CreateTablespaceInnodbContext.class,0);
		}
		public CreateTablespaceNdbContext createTablespaceNdb() {
			return getRuleContext(CreateTablespaceNdbContext.class,0);
		}
		public CreateTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTablespaceContext createTablespace() throws RecognitionException {
		CreateTablespaceContext _localctx = new CreateTablespaceContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_createTablespace);
		try {
			setState(2261);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,171,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2259);
				createTablespaceInnodb();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2260);
				createTablespaceNdb();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceInnodbContext extends ParserRuleContext {
		public String_Context y_or_n;
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TerminalNode DATAFILE() { return getToken(MySQLStatementParser.DATAFILE, 0); }
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode UNDO() { return getToken(MySQLStatementParser.UNDO, 0); }
		public TerminalNode FILE_BLOCK_SIZE() { return getToken(MySQLStatementParser.FILE_BLOCK_SIZE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode ENCRYPTION() { return getToken(MySQLStatementParser.ENCRYPTION, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public CreateTablespaceInnodbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespaceInnodb; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTablespaceInnodb(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTablespaceInnodbContext createTablespaceInnodb() throws RecognitionException {
		CreateTablespaceInnodbContext _localctx = new CreateTablespaceInnodbContext(_ctx, getState());
		enterRule(_localctx, 116, RULE_createTablespaceInnodb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2263);
			match(CREATE);
			setState(2265);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO) {
				{
				setState(2264);
				match(UNDO);
				}
			}

			setState(2267);
			match(TABLESPACE);
			setState(2268);
			identifier();
			setState(2269);
			match(ADD);
			setState(2270);
			match(DATAFILE);
			setState(2271);
			string_();
			setState(2275);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FILE_BLOCK_SIZE) {
				{
				setState(2272);
				match(FILE_BLOCK_SIZE);
				setState(2273);
				match(EQ_);
				setState(2274);
				fileSizeLiteral();
				}
			}

			setState(2280);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENCRYPTION) {
				{
				setState(2277);
				match(ENCRYPTION);
				setState(2278);
				match(EQ_);
				setState(2279);
				((CreateTablespaceInnodbContext)_localctx).y_or_n = string_();
				}
			}

			setState(2287);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2282);
				match(ENGINE);
				setState(2284);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2283);
					match(EQ_);
					}
				}

				setState(2286);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTablespaceNdbContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TerminalNode DATAFILE() { return getToken(MySQLStatementParser.DATAFILE, 0); }
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode USE() { return getToken(MySQLStatementParser.USE, 0); }
		public TerminalNode LOGFILE() { return getToken(MySQLStatementParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public TerminalNode UNDO() { return getToken(MySQLStatementParser.UNDO, 0); }
		public TerminalNode EXTENT_SIZE() { return getToken(MySQLStatementParser.EXTENT_SIZE, 0); }
		public List fileSizeLiteral() {
			return getRuleContexts(FileSizeLiteralContext.class);
		}
		public FileSizeLiteralContext fileSizeLiteral(int i) {
			return getRuleContext(FileSizeLiteralContext.class,i);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySQLStatementParser.INITIAL_SIZE, 0); }
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySQLStatementParser.AUTOEXTEND_SIZE, 0); }
		public TerminalNode MAX_SIZE() { return getToken(MySQLStatementParser.MAX_SIZE, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySQLStatementParser.NODEGROUP, 0); }
		public TerminalNode WAIT() { return getToken(MySQLStatementParser.WAIT, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public CreateTablespaceNdbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTablespaceNdb; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTablespaceNdb(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTablespaceNdbContext createTablespaceNdb() throws RecognitionException {
		CreateTablespaceNdbContext _localctx = new CreateTablespaceNdbContext(_ctx, getState());
		enterRule(_localctx, 118, RULE_createTablespaceNdb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2289);
			match(CREATE);
			setState(2291);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO) {
				{
				setState(2290);
				match(UNDO);
				}
			}

			setState(2293);
			match(TABLESPACE);
			setState(2294);
			identifier();
			setState(2295);
			match(ADD);
			setState(2296);
			match(DATAFILE);
			setState(2297);
			string_();
			setState(2298);
			match(USE);
			setState(2299);
			match(LOGFILE);
			setState(2300);
			match(GROUP);
			setState(2301);
			identifier();
			setState(2307);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENT_SIZE) {
				{
				setState(2302);
				match(EXTENT_SIZE);
				setState(2304);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2303);
					match(EQ_);
					}
				}

				setState(2306);
				fileSizeLiteral();
				}
			}

			setState(2314);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2309);
				match(INITIAL_SIZE);
				setState(2311);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2310);
					match(EQ_);
					}
				}

				setState(2313);
				fileSizeLiteral();
				}
			}

			setState(2321);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AUTOEXTEND_SIZE) {
				{
				setState(2316);
				match(AUTOEXTEND_SIZE);
				setState(2318);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2317);
					match(EQ_);
					}
				}

				setState(2320);
				fileSizeLiteral();
				}
			}

			setState(2328);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==MAX_SIZE) {
				{
				setState(2323);
				match(MAX_SIZE);
				setState(2325);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2324);
					match(EQ_);
					}
				}

				setState(2327);
				fileSizeLiteral();
				}
			}

			setState(2335);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NODEGROUP) {
				{
				setState(2330);
				match(NODEGROUP);
				setState(2332);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2331);
					match(EQ_);
					}
				}

				setState(2334);
				identifier();
				}
			}

			setState(2338);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2337);
				match(WAIT);
				}
			}

			setState(2345);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(2340);
				match(COMMENT);
				setState(2342);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2341);
					match(EQ_);
					}
				}

				setState(2344);
				string_();
				}
			}

			setState(2352);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2347);
				match(ENGINE);
				setState(2349);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2348);
					match(EQ_);
					}
				}

				setState(2351);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablespaceContext extends ParserRuleContext {
		public AlterTablespaceInnodbContext alterTablespaceInnodb() {
			return getRuleContext(AlterTablespaceInnodbContext.class,0);
		}
		public AlterTablespaceNdbContext alterTablespaceNdb() {
			return getRuleContext(AlterTablespaceNdbContext.class,0);
		}
		public AlterTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablespace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTablespaceContext alterTablespace() throws RecognitionException {
		AlterTablespaceContext _localctx = new AlterTablespaceContext(_ctx, getState());
		enterRule(_localctx, 120, RULE_alterTablespace);
		try {
			setState(2356);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,193,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2354);
				alterTablespaceInnodb();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2355);
				alterTablespaceNdb();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablespaceNdbContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode DATAFILE() { return getToken(MySQLStatementParser.DATAFILE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode UNDO() { return getToken(MySQLStatementParser.UNDO, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySQLStatementParser.INITIAL_SIZE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode WAIT() { return getToken(MySQLStatementParser.WAIT, 0); }
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public AlterTablespaceNdbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablespaceNdb; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTablespaceNdb(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTablespaceNdbContext alterTablespaceNdb() throws RecognitionException {
		AlterTablespaceNdbContext _localctx = new AlterTablespaceNdbContext(_ctx, getState());
		enterRule(_localctx, 122, RULE_alterTablespaceNdb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2358);
			match(ALTER);
			setState(2360);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO) {
				{
				setState(2359);
				match(UNDO);
				}
			}

			setState(2362);
			match(TABLESPACE);
			setState(2363);
			identifier();
			setState(2364);
			_la = _input.LA(1);
			if ( !(_la==ADD || _la==DROP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2365);
			match(DATAFILE);
			setState(2366);
			string_();
			setState(2370);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2367);
				match(INITIAL_SIZE);
				setState(2368);
				match(EQ_);
				setState(2369);
				fileSizeLiteral();
				}
			}

			setState(2373);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2372);
				match(WAIT);
				}
			}

			setState(2378);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RENAME) {
				{
				setState(2375);
				match(RENAME);
				setState(2376);
				match(TO);
				setState(2377);
				identifier();
				}
			}

			setState(2385);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2380);
				match(ENGINE);
				setState(2382);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2381);
					match(EQ_);
					}
				}

				setState(2384);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterTablespaceInnodbContext extends ParserRuleContext {
		public String_Context y_or_n;
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode ENCRYPTION() { return getToken(MySQLStatementParser.ENCRYPTION, 0); }
		public TerminalNode UNDO() { return getToken(MySQLStatementParser.UNDO, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public TerminalNode ACTIVE() { return getToken(MySQLStatementParser.ACTIVE, 0); }
		public TerminalNode INACTIVE() { return getToken(MySQLStatementParser.INACTIVE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public AlterTablespaceInnodbContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterTablespaceInnodb; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterTablespaceInnodb(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterTablespaceInnodbContext alterTablespaceInnodb() throws RecognitionException {
		AlterTablespaceInnodbContext _localctx = new AlterTablespaceInnodbContext(_ctx, getState());
		enterRule(_localctx, 124, RULE_alterTablespaceInnodb);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2387);
			match(ALTER);
			setState(2389);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO) {
				{
				setState(2388);
				match(UNDO);
				}
			}

			setState(2391);
			match(TABLESPACE);
			setState(2392);
			identifier();
			setState(2395);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SET) {
				{
				setState(2393);
				match(SET);
				setState(2394);
				_la = _input.LA(1);
				if ( !(_la==ACTIVE || _la==INACTIVE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			{
			setState(2397);
			match(ENCRYPTION);
			setState(2399);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(2398);
				match(EQ_);
				}
			}

			setState(2401);
			((AlterTablespaceInnodbContext)_localctx).y_or_n = string_();
			}
			setState(2406);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RENAME) {
				{
				setState(2403);
				match(RENAME);
				setState(2404);
				match(TO);
				setState(2405);
				identifier();
				}
			}

			setState(2413);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2408);
				match(ENGINE);
				setState(2410);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2409);
					match(EQ_);
					}
				}

				setState(2412);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTablespaceContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode UNDO() { return getToken(MySQLStatementParser.UNDO, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public DropTablespaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTablespace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropTablespace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTablespaceContext dropTablespace() throws RecognitionException {
		DropTablespaceContext _localctx = new DropTablespaceContext(_ctx, getState());
		enterRule(_localctx, 126, RULE_dropTablespace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2415);
			match(DROP);
			setState(2417);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO) {
				{
				setState(2416);
				match(UNDO);
				}
			}

			setState(2419);
			match(TABLESPACE);
			setState(2420);
			identifier();
			setState(2426);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2421);
				match(ENGINE);
				setState(2423);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2422);
					match(EQ_);
					}
				}

				setState(2425);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateLogfileGroupContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode LOGFILE() { return getToken(MySQLStatementParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySQLStatementParser.UNDOFILE, 0); }
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySQLStatementParser.INITIAL_SIZE, 0); }
		public List fileSizeLiteral() {
			return getRuleContexts(FileSizeLiteralContext.class);
		}
		public FileSizeLiteralContext fileSizeLiteral(int i) {
			return getRuleContext(FileSizeLiteralContext.class,i);
		}
		public TerminalNode UNDO_BUFFER_SIZE() { return getToken(MySQLStatementParser.UNDO_BUFFER_SIZE, 0); }
		public TerminalNode REDO_BUFFER_SIZE() { return getToken(MySQLStatementParser.REDO_BUFFER_SIZE, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySQLStatementParser.NODEGROUP, 0); }
		public TerminalNode WAIT() { return getToken(MySQLStatementParser.WAIT, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public CreateLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createLogfileGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateLogfileGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateLogfileGroupContext createLogfileGroup() throws RecognitionException {
		CreateLogfileGroupContext _localctx = new CreateLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 128, RULE_createLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2428);
			match(CREATE);
			setState(2429);
			match(LOGFILE);
			setState(2430);
			match(GROUP);
			setState(2431);
			identifier();
			setState(2432);
			match(ADD);
			setState(2433);
			match(UNDOFILE);
			setState(2434);
			string_();
			setState(2440);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2435);
				match(INITIAL_SIZE);
				setState(2437);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2436);
					match(EQ_);
					}
				}

				setState(2439);
				fileSizeLiteral();
				}
			}

			setState(2447);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDO_BUFFER_SIZE) {
				{
				setState(2442);
				match(UNDO_BUFFER_SIZE);
				setState(2444);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2443);
					match(EQ_);
					}
				}

				setState(2446);
				fileSizeLiteral();
				}
			}

			setState(2454);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REDO_BUFFER_SIZE) {
				{
				setState(2449);
				match(REDO_BUFFER_SIZE);
				setState(2451);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2450);
					match(EQ_);
					}
				}

				setState(2453);
				fileSizeLiteral();
				}
			}

			setState(2461);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NODEGROUP) {
				{
				setState(2456);
				match(NODEGROUP);
				setState(2458);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2457);
					match(EQ_);
					}
				}

				setState(2460);
				identifier();
				}
			}

			setState(2464);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2463);
				match(WAIT);
				}
			}

			setState(2471);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMENT) {
				{
				setState(2466);
				match(COMMENT);
				setState(2468);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2467);
					match(EQ_);
					}
				}

				setState(2470);
				string_();
				}
			}

			setState(2478);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2473);
				match(ENGINE);
				setState(2475);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2474);
					match(EQ_);
					}
				}

				setState(2477);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterLogfileGroupContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode LOGFILE() { return getToken(MySQLStatementParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode ADD() { return getToken(MySQLStatementParser.ADD, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySQLStatementParser.UNDOFILE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode INITIAL_SIZE() { return getToken(MySQLStatementParser.INITIAL_SIZE, 0); }
		public FileSizeLiteralContext fileSizeLiteral() {
			return getRuleContext(FileSizeLiteralContext.class,0);
		}
		public TerminalNode WAIT() { return getToken(MySQLStatementParser.WAIT, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public AlterLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterLogfileGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterLogfileGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterLogfileGroupContext alterLogfileGroup() throws RecognitionException {
		AlterLogfileGroupContext _localctx = new AlterLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 130, RULE_alterLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2480);
			match(ALTER);
			setState(2481);
			match(LOGFILE);
			setState(2482);
			match(GROUP);
			setState(2483);
			identifier();
			setState(2484);
			match(ADD);
			setState(2485);
			match(UNDOFILE);
			setState(2486);
			string_();
			setState(2492);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INITIAL_SIZE) {
				{
				setState(2487);
				match(INITIAL_SIZE);
				setState(2489);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2488);
					match(EQ_);
					}
				}

				setState(2491);
				fileSizeLiteral();
				}
			}

			setState(2495);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WAIT) {
				{
				setState(2494);
				match(WAIT);
				}
			}

			setState(2502);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2497);
				match(ENGINE);
				setState(2499);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2498);
					match(EQ_);
					}
				}

				setState(2501);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropLogfileGroupContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode LOGFILE() { return getToken(MySQLStatementParser.LOGFILE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public DropLogfileGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropLogfileGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropLogfileGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropLogfileGroupContext dropLogfileGroup() throws RecognitionException {
		DropLogfileGroupContext _localctx = new DropLogfileGroupContext(_ctx, getState());
		enterRule(_localctx, 132, RULE_dropLogfileGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2504);
			match(DROP);
			setState(2505);
			match(LOGFILE);
			setState(2506);
			match(GROUP);
			setState(2507);
			identifier();
			setState(2513);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ENGINE) {
				{
				setState(2508);
				match(ENGINE);
				setState(2510);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2509);
					match(EQ_);
					}
				}

				setState(2512);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTriggerContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TRIGGER() { return getToken(MySQLStatementParser.TRIGGER, 0); }
		public TriggerNameContext triggerName() {
			return getRuleContext(TriggerNameContext.class,0);
		}
		public TriggerTimeContext triggerTime() {
			return getRuleContext(TriggerTimeContext.class,0);
		}
		public TriggerEventContext triggerEvent() {
			return getRuleContext(TriggerEventContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode EACH() { return getToken(MySQLStatementParser.EACH, 0); }
		public TerminalNode ROW() { return getToken(MySQLStatementParser.ROW, 0); }
		public RoutineBodyContext routineBody() {
			return getRuleContext(RoutineBodyContext.class,0);
		}
		public OwnerStatementContext ownerStatement() {
			return getRuleContext(OwnerStatementContext.class,0);
		}
		public TriggerOrderContext triggerOrder() {
			return getRuleContext(TriggerOrderContext.class,0);
		}
		public CreateTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTriggerContext createTrigger() throws RecognitionException {
		CreateTriggerContext _localctx = new CreateTriggerContext(_ctx, getState());
		enterRule(_localctx, 134, RULE_createTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2515);
			match(CREATE);
			setState(2517);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFINER) {
				{
				setState(2516);
				ownerStatement();
				}
			}

			setState(2519);
			match(TRIGGER);
			setState(2520);
			triggerName();
			setState(2521);
			triggerTime();
			setState(2522);
			triggerEvent();
			setState(2523);
			match(ON);
			setState(2524);
			tableName();
			setState(2525);
			match(FOR);
			setState(2526);
			match(EACH);
			setState(2527);
			match(ROW);
			setState(2529);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,230,_ctx) ) {
			case 1:
				{
				setState(2528);
				triggerOrder();
				}
				break;
			}
			setState(2531);
			routineBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropTriggerContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode TRIGGER() { return getToken(MySQLStatementParser.TRIGGER, 0); }
		public TriggerNameContext triggerName() {
			return getRuleContext(TriggerNameContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public DropTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropTriggerContext dropTrigger() throws RecognitionException {
		DropTriggerContext _localctx = new DropTriggerContext(_ctx, getState());
		enterRule(_localctx, 136, RULE_dropTrigger);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2533);
			match(DROP);
			setState(2534);
			match(TRIGGER);
			setState(2536);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2535);
				ifExists();
				}
			}

			setState(2541);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,232,_ctx) ) {
			case 1:
				{
				setState(2538);
				schemaName();
				setState(2539);
				match(DOT_);
				}
				break;
			}
			setState(2543);
			triggerName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameTableContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public List TO() { return getTokens(MySQLStatementParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(MySQLStatementParser.TO, i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public RenameTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRenameTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameTableContext renameTable() throws RecognitionException {
		RenameTableContext _localctx = new RenameTableContext(_ctx, getState());
		enterRule(_localctx, 138, RULE_renameTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2545);
			match(RENAME);
			setState(2546);
			match(TABLE);
			setState(2547);
			tableName();
			setState(2548);
			match(TO);
			setState(2549);
			tableName();
			setState(2557);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2550);
				match(COMMA_);
				setState(2551);
				tableName();
				setState(2552);
				match(TO);
				setState(2553);
				tableName();
				}
				}
				setState(2559);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateDefinitionClauseContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TableElementListContext tableElementList() {
			return getRuleContext(TableElementListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public CreateDefinitionClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createDefinitionClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateDefinitionClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateDefinitionClauseContext createDefinitionClause() throws RecognitionException {
		CreateDefinitionClauseContext _localctx = new CreateDefinitionClauseContext(_ctx, getState());
		enterRule(_localctx, 140, RULE_createDefinitionClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2560);
			match(LP_);
			setState(2561);
			tableElementList();
			setState(2562);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnDefinitionContext extends ParserRuleContext {
		public IdentifierContext column_name;
		public FieldDefinitionContext fieldDefinition() {
			return getRuleContext(FieldDefinitionContext.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ReferenceDefinitionContext referenceDefinition() {
			return getRuleContext(ReferenceDefinitionContext.class,0);
		}
		public ColumnDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnDefinitionContext columnDefinition() throws RecognitionException {
		ColumnDefinitionContext _localctx = new ColumnDefinitionContext(_ctx, getState());
		enterRule(_localctx, 142, RULE_columnDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2564);
			((ColumnDefinitionContext)_localctx).column_name = identifier();
			setState(2565);
			fieldDefinition();
			setState(2567);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REFERENCES) {
				{
				setState(2566);
				referenceDefinition();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FieldDefinitionContext extends ParserRuleContext {
		public Token storedAttribute;
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List columnAttribute() {
			return getRuleContexts(ColumnAttributeContext.class);
		}
		public ColumnAttributeContext columnAttribute(int i) {
			return getRuleContext(ColumnAttributeContext.class,i);
		}
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public GeneratedOptionContext generatedOption() {
			return getRuleContext(GeneratedOptionContext.class,0);
		}
		public TerminalNode VIRTUAL() { return getToken(MySQLStatementParser.VIRTUAL, 0); }
		public TerminalNode STORED() { return getToken(MySQLStatementParser.STORED, 0); }
		public FieldDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fieldDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFieldDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FieldDefinitionContext fieldDefinition() throws RecognitionException {
		FieldDefinitionContext _localctx = new FieldDefinitionContext(_ctx, getState());
		enterRule(_localctx, 144, RULE_fieldDefinition);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2569);
			dataType();
			setState(2595);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,240,_ctx) ) {
			case 1:
				{
				setState(2573);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,235,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2570);
						columnAttribute();
						}
						} 
					}
					setState(2575);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,235,_ctx);
				}
				}
				break;
			case 2:
				{
				setState(2577);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COLLATE) {
					{
					setState(2576);
					collateClause();
					}
				}

				setState(2580);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==GENERATED) {
					{
					setState(2579);
					generatedOption();
					}
				}

				setState(2582);
				match(AS);
				setState(2583);
				match(LP_);
				setState(2584);
				expr(0);
				setState(2585);
				match(RP_);
				setState(2587);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORED || _la==VIRTUAL) {
					{
					setState(2586);
					((FieldDefinitionContext)_localctx).storedAttribute = _input.LT(1);
					_la = _input.LA(1);
					if ( !(_la==STORED || _la==VIRTUAL) ) {
						((FieldDefinitionContext)_localctx).storedAttribute = (Token)_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(2592);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,239,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(2589);
						columnAttribute();
						}
						} 
					}
					setState(2594);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,239,_ctx);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnAttributeContext extends ParserRuleContext {
		public Token value;
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode SECONDARY() { return getToken(MySQLStatementParser.SECONDARY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public LiteralsContext literals() {
			return getRuleContext(LiteralsContext.class,0);
		}
		public NowContext now() {
			return getRuleContext(NowContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TerminalNode AUTO_INCREMENT() { return getToken(MySQLStatementParser.AUTO_INCREMENT, 0); }
		public TerminalNode VALUE() { return getToken(MySQLStatementParser.VALUE, 0); }
		public TerminalNode SERIAL() { return getToken(MySQLStatementParser.SERIAL, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode PRIMARY() { return getToken(MySQLStatementParser.PRIMARY, 0); }
		public TerminalNode UNIQUE() { return getToken(MySQLStatementParser.UNIQUE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public ColumnFormatContext columnFormat() {
			return getRuleContext(ColumnFormatContext.class,0);
		}
		public TerminalNode COLUMN_FORMAT() { return getToken(MySQLStatementParser.COLUMN_FORMAT, 0); }
		public StorageMediaContext storageMedia() {
			return getRuleContext(StorageMediaContext.class,0);
		}
		public TerminalNode STORAGE() { return getToken(MySQLStatementParser.STORAGE, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode SRID() { return getToken(MySQLStatementParser.SRID, 0); }
		public CheckConstraintContext checkConstraint() {
			return getRuleContext(CheckConstraintContext.class,0);
		}
		public ConstraintClauseContext constraintClause() {
			return getRuleContext(ConstraintClauseContext.class,0);
		}
		public ConstraintEnforcementContext constraintEnforcement() {
			return getRuleContext(ConstraintEnforcementContext.class,0);
		}
		public VisibilityContext visibility() {
			return getRuleContext(VisibilityContext.class,0);
		}
		public ColumnAttributeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnAttribute; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnAttribute(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnAttributeContext columnAttribute() throws RecognitionException {
		ColumnAttributeContext _localctx = new ColumnAttributeContext(_ctx, getState());
		enterRule(_localctx, 146, RULE_columnAttribute);
		int _la;
		try {
			setState(2642);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,246,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2598);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(2597);
					match(NOT);
					}
				}

				setState(2600);
				match(NULL);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2601);
				match(NOT);
				setState(2602);
				match(SECONDARY);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2603);
				((ColumnAttributeContext)_localctx).value = match(DEFAULT);
				setState(2610);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PLUS_:
				case MINUS_:
				case UL_BINARY:
				case DATE:
				case FALSE:
				case NULL:
				case TIME:
				case TIMESTAMP:
				case TRUE:
				case SINGLE_QUOTED_TEXT:
				case DOUBLE_QUOTED_TEXT:
				case NCHAR_TEXT:
				case UNDERSCORE_CHARSET:
				case NUMBER_:
				case HEX_DIGIT_:
				case BIT_NUM_:
					{
					setState(2604);
					literals();
					}
					break;
				case CURRENT_TIMESTAMP:
				case LOCALTIME:
				case LOCALTIMESTAMP:
					{
					setState(2605);
					now();
					}
					break;
				case LP_:
					{
					setState(2606);
					match(LP_);
					setState(2607);
					expr(0);
					setState(2608);
					match(RP_);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2612);
				((ColumnAttributeContext)_localctx).value = match(ON);
				setState(2613);
				match(UPDATE);
				setState(2614);
				now();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2615);
				((ColumnAttributeContext)_localctx).value = match(AUTO_INCREMENT);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(2616);
				((ColumnAttributeContext)_localctx).value = match(SERIAL);
				setState(2617);
				match(DEFAULT);
				setState(2618);
				match(VALUE);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(2620);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIMARY) {
					{
					setState(2619);
					match(PRIMARY);
					}
				}

				setState(2622);
				((ColumnAttributeContext)_localctx).value = match(KEY);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(2623);
				((ColumnAttributeContext)_localctx).value = match(UNIQUE);
				setState(2625);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) {
				case 1:
					{
					setState(2624);
					match(KEY);
					}
					break;
				}
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(2627);
				((ColumnAttributeContext)_localctx).value = match(COMMENT);
				setState(2628);
				string_();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(2629);
				collateClause();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(2630);
				((ColumnAttributeContext)_localctx).value = match(COLUMN_FORMAT);
				setState(2631);
				columnFormat();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(2632);
				((ColumnAttributeContext)_localctx).value = match(STORAGE);
				setState(2633);
				storageMedia();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(2634);
				((ColumnAttributeContext)_localctx).value = match(SRID);
				setState(2635);
				match(NUMBER_);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(2637);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONSTRAINT) {
					{
					setState(2636);
					constraintClause();
					}
				}

				setState(2639);
				checkConstraint();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(2640);
				constraintEnforcement();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(2641);
				visibility();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckConstraintContext extends ParserRuleContext {
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public CheckConstraintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkConstraint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCheckConstraint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckConstraintContext checkConstraint() throws RecognitionException {
		CheckConstraintContext _localctx = new CheckConstraintContext(_ctx, getState());
		enterRule(_localctx, 148, RULE_checkConstraint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2644);
			match(CHECK);
			setState(2645);
			match(LP_);
			setState(2646);
			expr(0);
			setState(2647);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintEnforcementContext extends ParserRuleContext {
		public TerminalNode ENFORCED() { return getToken(MySQLStatementParser.ENFORCED, 0); }
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public ConstraintEnforcementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintEnforcement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConstraintEnforcement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintEnforcementContext constraintEnforcement() throws RecognitionException {
		ConstraintEnforcementContext _localctx = new ConstraintEnforcementContext(_ctx, getState());
		enterRule(_localctx, 150, RULE_constraintEnforcement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2650);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NOT) {
				{
				setState(2649);
				match(NOT);
				}
			}

			setState(2652);
			match(ENFORCED);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GeneratedOptionContext extends ParserRuleContext {
		public TerminalNode GENERATED() { return getToken(MySQLStatementParser.GENERATED, 0); }
		public TerminalNode ALWAYS() { return getToken(MySQLStatementParser.ALWAYS, 0); }
		public GeneratedOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_generatedOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGeneratedOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GeneratedOptionContext generatedOption() throws RecognitionException {
		GeneratedOptionContext _localctx = new GeneratedOptionContext(_ctx, getState());
		enterRule(_localctx, 152, RULE_generatedOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2654);
			match(GENERATED);
			setState(2655);
			match(ALWAYS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceDefinitionContext extends ParserRuleContext {
		public TerminalNode REFERENCES() { return getToken(MySQLStatementParser.REFERENCES, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public KeyPartsContext keyParts() {
			return getRuleContext(KeyPartsContext.class,0);
		}
		public TerminalNode MATCH() { return getToken(MySQLStatementParser.MATCH, 0); }
		public TerminalNode FULL() { return getToken(MySQLStatementParser.FULL, 0); }
		public TerminalNode PARTIAL() { return getToken(MySQLStatementParser.PARTIAL, 0); }
		public TerminalNode SIMPLE() { return getToken(MySQLStatementParser.SIMPLE, 0); }
		public OnUpdateDeleteContext onUpdateDelete() {
			return getRuleContext(OnUpdateDeleteContext.class,0);
		}
		public ReferenceDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReferenceDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReferenceDefinitionContext referenceDefinition() throws RecognitionException {
		ReferenceDefinitionContext _localctx = new ReferenceDefinitionContext(_ctx, getState());
		enterRule(_localctx, 154, RULE_referenceDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2657);
			match(REFERENCES);
			setState(2658);
			tableName();
			setState(2659);
			keyParts();
			setState(2666);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,248,_ctx) ) {
			case 1:
				{
				setState(2660);
				match(MATCH);
				setState(2661);
				match(FULL);
				}
				break;
			case 2:
				{
				setState(2662);
				match(MATCH);
				setState(2663);
				match(PARTIAL);
				}
				break;
			case 3:
				{
				setState(2664);
				match(MATCH);
				setState(2665);
				match(SIMPLE);
				}
				break;
			}
			setState(2669);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(2668);
				onUpdateDelete();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnUpdateDeleteContext extends ParserRuleContext {
		public List ON() { return getTokens(MySQLStatementParser.ON); }
		public TerminalNode ON(int i) {
			return getToken(MySQLStatementParser.ON, i);
		}
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public List referenceOption() {
			return getRuleContexts(ReferenceOptionContext.class);
		}
		public ReferenceOptionContext referenceOption(int i) {
			return getRuleContext(ReferenceOptionContext.class,i);
		}
		public TerminalNode DELETE() { return getToken(MySQLStatementParser.DELETE, 0); }
		public OnUpdateDeleteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onUpdateDelete; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOnUpdateDelete(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnUpdateDeleteContext onUpdateDelete() throws RecognitionException {
		OnUpdateDeleteContext _localctx = new OnUpdateDeleteContext(_ctx, getState());
		enterRule(_localctx, 156, RULE_onUpdateDelete);
		int _la;
		try {
			setState(2687);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,252,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2671);
				match(ON);
				setState(2672);
				match(UPDATE);
				setState(2673);
				referenceOption();
				setState(2677);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(2674);
					match(ON);
					setState(2675);
					match(DELETE);
					setState(2676);
					referenceOption();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2679);
				match(ON);
				setState(2680);
				match(DELETE);
				setState(2681);
				referenceOption();
				setState(2685);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ON) {
					{
					setState(2682);
					match(ON);
					setState(2683);
					match(UPDATE);
					setState(2684);
					referenceOption();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReferenceOptionContext extends ParserRuleContext {
		public TerminalNode RESTRICT() { return getToken(MySQLStatementParser.RESTRICT, 0); }
		public TerminalNode CASCADE() { return getToken(MySQLStatementParser.CASCADE, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public TerminalNode ACTION() { return getToken(MySQLStatementParser.ACTION, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public ReferenceOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_referenceOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReferenceOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReferenceOptionContext referenceOption() throws RecognitionException {
		ReferenceOptionContext _localctx = new ReferenceOptionContext(_ctx, getState());
		enterRule(_localctx, 158, RULE_referenceOption);
		try {
			setState(2697);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,253,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2689);
				match(RESTRICT);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2690);
				match(CASCADE);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2691);
				match(SET);
				setState(2692);
				match(NULL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2693);
				match(NO);
				setState(2694);
				match(ACTION);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2695);
				match(SET);
				setState(2696);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexTypeContext extends ParserRuleContext {
		public TerminalNode BTREE() { return getToken(MySQLStatementParser.BTREE, 0); }
		public TerminalNode RTREE() { return getToken(MySQLStatementParser.RTREE, 0); }
		public TerminalNode HASH() { return getToken(MySQLStatementParser.HASH, 0); }
		public IndexTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIndexType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexTypeContext indexType() throws RecognitionException {
		IndexTypeContext _localctx = new IndexTypeContext(_ctx, getState());
		enterRule(_localctx, 160, RULE_indexType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2699);
			_la = _input.LA(1);
			if ( !(_la==BTREE || _la==HASH || _la==RTREE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexTypeClauseContext extends ParserRuleContext {
		public IndexTypeContext indexType() {
			return getRuleContext(IndexTypeContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public TerminalNode TYPE() { return getToken(MySQLStatementParser.TYPE, 0); }
		public IndexTypeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexTypeClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIndexTypeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexTypeClauseContext indexTypeClause() throws RecognitionException {
		IndexTypeClauseContext _localctx = new IndexTypeClauseContext(_ctx, getState());
		enterRule(_localctx, 162, RULE_indexTypeClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2701);
			_la = _input.LA(1);
			if ( !(_la==TYPE || _la==USING) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(2702);
			indexType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyPartsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List keyPart() {
			return getRuleContexts(KeyPartContext.class);
		}
		public KeyPartContext keyPart(int i) {
			return getRuleContext(KeyPartContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public KeyPartsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyParts; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitKeyParts(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyPartsContext keyParts() throws RecognitionException {
		KeyPartsContext _localctx = new KeyPartsContext(_ctx, getState());
		enterRule(_localctx, 164, RULE_keyParts);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2704);
			match(LP_);
			setState(2705);
			keyPart();
			setState(2710);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2706);
				match(COMMA_);
				setState(2707);
				keyPart();
				}
				}
				setState(2712);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2713);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyPartContext extends ParserRuleContext {
		public ColumnNameContext columnName() {
			return getRuleContext(ColumnNameContext.class,0);
		}
		public FieldLengthContext fieldLength() {
			return getRuleContext(FieldLengthContext.class,0);
		}
		public DirectionContext direction() {
			return getRuleContext(DirectionContext.class,0);
		}
		public KeyPartContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyPart; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitKeyPart(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyPartContext keyPart() throws RecognitionException {
		KeyPartContext _localctx = new KeyPartContext(_ctx, getState());
		enterRule(_localctx, 166, RULE_keyPart);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2715);
			columnName();
			setState(2717);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(2716);
				fieldLength();
				}
			}

			setState(2720);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(2719);
				direction();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyPartWithExpressionContext extends ParserRuleContext {
		public KeyPartContext keyPart() {
			return getRuleContext(KeyPartContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public DirectionContext direction() {
			return getRuleContext(DirectionContext.class,0);
		}
		public KeyPartWithExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyPartWithExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitKeyPartWithExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyPartWithExpressionContext keyPartWithExpression() throws RecognitionException {
		KeyPartWithExpressionContext _localctx = new KeyPartWithExpressionContext(_ctx, getState());
		enterRule(_localctx, 168, RULE_keyPartWithExpression);
		int _la;
		try {
			setState(2729);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(2722);
				keyPart();
				}
				break;
			case LP_:
				enterOuterAlt(_localctx, 2);
				{
				setState(2723);
				match(LP_);
				setState(2724);
				expr(0);
				setState(2725);
				match(RP_);
				setState(2727);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ASC || _la==DESC) {
					{
					setState(2726);
					direction();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyListWithExpressionContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List keyPartWithExpression() {
			return getRuleContexts(KeyPartWithExpressionContext.class);
		}
		public KeyPartWithExpressionContext keyPartWithExpression(int i) {
			return getRuleContext(KeyPartWithExpressionContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public KeyListWithExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyListWithExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitKeyListWithExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyListWithExpressionContext keyListWithExpression() throws RecognitionException {
		KeyListWithExpressionContext _localctx = new KeyListWithExpressionContext(_ctx, getState());
		enterRule(_localctx, 170, RULE_keyListWithExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2731);
			match(LP_);
			setState(2732);
			keyPartWithExpression();
			setState(2737);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2733);
				match(COMMA_);
				setState(2734);
				keyPartWithExpression();
				}
				}
				setState(2739);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2740);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexOptionContext extends ParserRuleContext {
		public CommonIndexOptionContext commonIndexOption() {
			return getRuleContext(CommonIndexOptionContext.class,0);
		}
		public IndexTypeClauseContext indexTypeClause() {
			return getRuleContext(IndexTypeClauseContext.class,0);
		}
		public IndexOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIndexOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexOptionContext indexOption() throws RecognitionException {
		IndexOptionContext _localctx = new IndexOptionContext(_ctx, getState());
		enterRule(_localctx, 172, RULE_indexOption);
		try {
			setState(2744);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case COMMENT:
			case INVISIBLE:
			case KEY_BLOCK_SIZE:
			case VISIBLE:
				enterOuterAlt(_localctx, 1);
				{
				setState(2742);
				commonIndexOption();
				}
				break;
			case TYPE:
			case USING:
				enterOuterAlt(_localctx, 2);
				{
				setState(2743);
				indexTypeClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommonIndexOptionContext extends ParserRuleContext {
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySQLStatementParser.KEY_BLOCK_SIZE, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public VisibilityContext visibility() {
			return getRuleContext(VisibilityContext.class,0);
		}
		public CommonIndexOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commonIndexOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCommonIndexOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommonIndexOptionContext commonIndexOption() throws RecognitionException {
		CommonIndexOptionContext _localctx = new CommonIndexOptionContext(_ctx, getState());
		enterRule(_localctx, 174, RULE_commonIndexOption);
		int _la;
		try {
			setState(2754);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case KEY_BLOCK_SIZE:
				enterOuterAlt(_localctx, 1);
				{
				setState(2746);
				match(KEY_BLOCK_SIZE);
				setState(2748);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2747);
					match(EQ_);
					}
				}

				setState(2750);
				match(NUMBER_);
				}
				break;
			case COMMENT:
				enterOuterAlt(_localctx, 2);
				{
				setState(2751);
				match(COMMENT);
				setState(2752);
				stringLiterals();
				}
				break;
			case INVISIBLE:
			case VISIBLE:
				enterOuterAlt(_localctx, 3);
				{
				setState(2753);
				visibility();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VisibilityContext extends ParserRuleContext {
		public TerminalNode VISIBLE() { return getToken(MySQLStatementParser.VISIBLE, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySQLStatementParser.INVISIBLE, 0); }
		public VisibilityContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_visibility; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitVisibility(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VisibilityContext visibility() throws RecognitionException {
		VisibilityContext _localctx = new VisibilityContext(_ctx, getState());
		enterRule(_localctx, 176, RULE_visibility);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2756);
			_la = _input.LA(1);
			if ( !(_la==INVISIBLE || _la==VISIBLE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateLikeClauseContext extends ParserRuleContext {
		public TerminalNode LIKE() { return getToken(MySQLStatementParser.LIKE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public CreateLikeClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createLikeClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateLikeClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateLikeClauseContext createLikeClause() throws RecognitionException {
		CreateLikeClauseContext _localctx = new CreateLikeClauseContext(_ctx, getState());
		enterRule(_localctx, 178, RULE_createLikeClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2759);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(2758);
				match(LP_);
				}
			}

			setState(2761);
			match(LIKE);
			setState(2762);
			tableName();
			setState(2764);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RP_) {
				{
				setState(2763);
				match(RP_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateIndexSpecificationContext extends ParserRuleContext {
		public TerminalNode UNIQUE() { return getToken(MySQLStatementParser.UNIQUE, 0); }
		public TerminalNode FULLTEXT() { return getToken(MySQLStatementParser.FULLTEXT, 0); }
		public TerminalNode SPATIAL() { return getToken(MySQLStatementParser.SPATIAL, 0); }
		public CreateIndexSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createIndexSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateIndexSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateIndexSpecificationContext createIndexSpecification() throws RecognitionException {
		CreateIndexSpecificationContext _localctx = new CreateIndexSpecificationContext(_ctx, getState());
		enterRule(_localctx, 180, RULE_createIndexSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2766);
			_la = _input.LA(1);
			if ( !(_la==FULLTEXT || _la==SPATIAL || _la==UNIQUE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableOptionsContext extends ParserRuleContext {
		public List createTableOption() {
			return getRuleContexts(CreateTableOptionContext.class);
		}
		public CreateTableOptionContext createTableOption(int i) {
			return getRuleContext(CreateTableOptionContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CreateTableOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTableOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTableOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableOptionsContext createTableOptions() throws RecognitionException {
		CreateTableOptionsContext _localctx = new CreateTableOptionsContext(_ctx, getState());
		enterRule(_localctx, 182, RULE_createTableOptions);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(2768);
			createTableOption();
			setState(2775);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,266,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(2770);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COMMA_) {
						{
						setState(2769);
						match(COMMA_);
						}
					}

					setState(2772);
					createTableOption();
					}
					} 
				}
				setState(2777);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,266,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateTableOptionContext extends ParserRuleContext {
		public Token option;
		public Token ternaryOption;
		public Token format;
		public Token method;
		public String_Context jsonAttribute;
		public EngineRefContext engineRef() {
			return getRuleContext(EngineRefContext.class,0);
		}
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode SECONDARY_ENGINE() { return getToken(MySQLStatementParser.SECONDARY_ENGINE, 0); }
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode MAX_ROWS() { return getToken(MySQLStatementParser.MAX_ROWS, 0); }
		public TerminalNode MIN_ROWS() { return getToken(MySQLStatementParser.MIN_ROWS, 0); }
		public TerminalNode AVG_ROW_LENGTH() { return getToken(MySQLStatementParser.AVG_ROW_LENGTH, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public TextStringContext textString() {
			return getRuleContext(TextStringContext.class,0);
		}
		public TerminalNode COMPRESSION() { return getToken(MySQLStatementParser.COMPRESSION, 0); }
		public TerminalNode ENCRYPTION() { return getToken(MySQLStatementParser.ENCRYPTION, 0); }
		public TerminalNode AUTO_INCREMENT() { return getToken(MySQLStatementParser.AUTO_INCREMENT, 0); }
		public TerminalNode PACK_KEYS() { return getToken(MySQLStatementParser.PACK_KEYS, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode STATS_AUTO_RECALC() { return getToken(MySQLStatementParser.STATS_AUTO_RECALC, 0); }
		public TerminalNode STATS_PERSISTENT() { return getToken(MySQLStatementParser.STATS_PERSISTENT, 0); }
		public TerminalNode STATS_SAMPLE_PAGES() { return getToken(MySQLStatementParser.STATS_SAMPLE_PAGES, 0); }
		public TerminalNode CHECKSUM() { return getToken(MySQLStatementParser.CHECKSUM, 0); }
		public TerminalNode TABLE_CHECKSUM() { return getToken(MySQLStatementParser.TABLE_CHECKSUM, 0); }
		public TerminalNode DELAY_KEY_WRITE() { return getToken(MySQLStatementParser.DELAY_KEY_WRITE, 0); }
		public TerminalNode ROW_FORMAT() { return getToken(MySQLStatementParser.ROW_FORMAT, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySQLStatementParser.DYNAMIC, 0); }
		public TerminalNode FIXED() { return getToken(MySQLStatementParser.FIXED, 0); }
		public TerminalNode COMPRESSED() { return getToken(MySQLStatementParser.COMPRESSED, 0); }
		public TerminalNode REDUNDANT() { return getToken(MySQLStatementParser.REDUNDANT, 0); }
		public TerminalNode COMPACT() { return getToken(MySQLStatementParser.COMPACT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode UNION() { return getToken(MySQLStatementParser.UNION, 0); }
		public DefaultCharsetContext defaultCharset() {
			return getRuleContext(DefaultCharsetContext.class,0);
		}
		public DefaultCollationContext defaultCollation() {
			return getRuleContext(DefaultCollationContext.class,0);
		}
		public TerminalNode INSERT_METHOD() { return getToken(MySQLStatementParser.INSERT_METHOD, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public TerminalNode FIRST() { return getToken(MySQLStatementParser.FIRST, 0); }
		public TerminalNode LAST() { return getToken(MySQLStatementParser.LAST, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySQLStatementParser.DIRECTORY, 0); }
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public TerminalNode STORAGE() { return getToken(MySQLStatementParser.STORAGE, 0); }
		public TerminalNode DISK() { return getToken(MySQLStatementParser.DISK, 0); }
		public TerminalNode MEMORY() { return getToken(MySQLStatementParser.MEMORY, 0); }
		public TerminalNode CONNECTION() { return getToken(MySQLStatementParser.CONNECTION, 0); }
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySQLStatementParser.KEY_BLOCK_SIZE, 0); }
		public TerminalNode ENGINE_ATTRIBUTE() { return getToken(MySQLStatementParser.ENGINE_ATTRIBUTE, 0); }
		public TerminalNode SECONDARY_ENGINE_ATTRIBUTE() { return getToken(MySQLStatementParser.SECONDARY_ENGINE_ATTRIBUTE, 0); }
		public CreateTableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createTableOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateTableOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateTableOptionContext createTableOption() throws RecognitionException {
		CreateTableOptionContext _localctx = new CreateTableOptionContext(_ctx, getState());
		enterRule(_localctx, 184, RULE_createTableOption);
		int _la;
		try {
			setState(2909);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,291,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2778);
				((CreateTableOptionContext)_localctx).option = match(ENGINE);
				setState(2780);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2779);
					match(EQ_);
					}
				}

				setState(2782);
				engineRef();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2783);
				((CreateTableOptionContext)_localctx).option = match(SECONDARY_ENGINE);
				setState(2785);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2784);
					match(EQ_);
					}
				}

				setState(2790);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,269,_ctx) ) {
				case 1:
					{
					setState(2787);
					match(NULL);
					}
					break;
				case 2:
					{
					setState(2788);
					string_();
					}
					break;
				case 3:
					{
					setState(2789);
					identifier();
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(2792);
				((CreateTableOptionContext)_localctx).option = match(MAX_ROWS);
				setState(2794);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2793);
					match(EQ_);
					}
				}

				setState(2796);
				match(NUMBER_);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(2797);
				((CreateTableOptionContext)_localctx).option = match(MIN_ROWS);
				setState(2799);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2798);
					match(EQ_);
					}
				}

				setState(2801);
				match(NUMBER_);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(2802);
				((CreateTableOptionContext)_localctx).option = match(AVG_ROW_LENGTH);
				setState(2804);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2803);
					match(EQ_);
					}
				}

				setState(2806);
				match(NUMBER_);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(2807);
				((CreateTableOptionContext)_localctx).option = match(PASSWORD);
				setState(2809);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2808);
					match(EQ_);
					}
				}

				setState(2811);
				string_();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(2812);
				((CreateTableOptionContext)_localctx).option = match(COMMENT);
				setState(2814);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2813);
					match(EQ_);
					}
				}

				setState(2816);
				string_();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(2817);
				((CreateTableOptionContext)_localctx).option = match(COMPRESSION);
				setState(2819);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2818);
					match(EQ_);
					}
				}

				setState(2821);
				textString();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(2822);
				((CreateTableOptionContext)_localctx).option = match(ENCRYPTION);
				setState(2824);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2823);
					match(EQ_);
					}
				}

				setState(2826);
				textString();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(2827);
				((CreateTableOptionContext)_localctx).option = match(AUTO_INCREMENT);
				setState(2829);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2828);
					match(EQ_);
					}
				}

				setState(2831);
				match(NUMBER_);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(2832);
				((CreateTableOptionContext)_localctx).option = match(PACK_KEYS);
				setState(2834);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2833);
					match(EQ_);
					}
				}

				setState(2836);
				((CreateTableOptionContext)_localctx).ternaryOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==NUMBER_) ) {
					((CreateTableOptionContext)_localctx).ternaryOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(2837);
				((CreateTableOptionContext)_localctx).option = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 662)) & ~0x3f) == 0 && ((1L << (_la - 662)) & ((1L << (STATS_AUTO_RECALC - 662)) | (1L << (STATS_PERSISTENT - 662)) | (1L << (STATS_SAMPLE_PAGES - 662)))) != 0)) ) {
					((CreateTableOptionContext)_localctx).option = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2839);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2838);
					match(EQ_);
					}
				}

				setState(2841);
				((CreateTableOptionContext)_localctx).ternaryOption = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==NUMBER_) ) {
					((CreateTableOptionContext)_localctx).ternaryOption = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(2842);
				((CreateTableOptionContext)_localctx).option = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CHECKSUM || _la==TABLE_CHECKSUM) ) {
					((CreateTableOptionContext)_localctx).option = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(2844);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2843);
					match(EQ_);
					}
				}

				setState(2846);
				match(NUMBER_);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(2847);
				((CreateTableOptionContext)_localctx).option = match(DELAY_KEY_WRITE);
				setState(2849);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2848);
					match(EQ_);
					}
				}

				setState(2851);
				match(NUMBER_);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(2852);
				((CreateTableOptionContext)_localctx).option = match(ROW_FORMAT);
				setState(2854);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2853);
					match(EQ_);
					}
				}

				setState(2856);
				((CreateTableOptionContext)_localctx).format = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 150)) & ~0x3f) == 0 && ((1L << (_la - 150)) & ((1L << (COMPACT - 150)) | (1L << (COMPRESSED - 150)) | (1L << (DEFAULT - 150)))) != 0) || _la==DYNAMIC || _la==FIXED || _la==REDUNDANT) ) {
					((CreateTableOptionContext)_localctx).format = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(2857);
				((CreateTableOptionContext)_localctx).option = match(UNION);
				setState(2859);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2858);
					match(EQ_);
					}
				}

				setState(2861);
				match(LP_);
				setState(2862);
				tableList();
				setState(2863);
				match(RP_);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(2865);
				defaultCharset();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(2866);
				defaultCollation();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(2867);
				((CreateTableOptionContext)_localctx).option = match(INSERT_METHOD);
				setState(2869);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2868);
					match(EQ_);
					}
				}

				setState(2871);
				((CreateTableOptionContext)_localctx).method = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FIRST || _la==LAST || _la==NO) ) {
					((CreateTableOptionContext)_localctx).method = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(2872);
				((CreateTableOptionContext)_localctx).option = match(DATA);
				setState(2873);
				match(DIRECTORY);
				setState(2875);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2874);
					match(EQ_);
					}
				}

				setState(2877);
				textString();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(2878);
				((CreateTableOptionContext)_localctx).option = match(INDEX);
				setState(2879);
				match(DIRECTORY);
				setState(2881);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2880);
					match(EQ_);
					}
				}

				setState(2883);
				textString();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(2884);
				((CreateTableOptionContext)_localctx).option = match(TABLESPACE);
				setState(2886);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2885);
					match(EQ_);
					}
				}

				setState(2888);
				identifier();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(2889);
				((CreateTableOptionContext)_localctx).option = match(STORAGE);
				setState(2890);
				_la = _input.LA(1);
				if ( !(_la==DISK || _la==MEMORY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(2891);
				((CreateTableOptionContext)_localctx).option = match(CONNECTION);
				setState(2893);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2892);
					match(EQ_);
					}
				}

				setState(2895);
				textString();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(2896);
				((CreateTableOptionContext)_localctx).option = match(KEY_BLOCK_SIZE);
				setState(2898);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2897);
					match(EQ_);
					}
				}

				setState(2900);
				match(NUMBER_);
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(2901);
				((CreateTableOptionContext)_localctx).option = match(ENGINE_ATTRIBUTE);
				setState(2903);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(2902);
					match(EQ_);
					}
				}

				setState(2905);
				((CreateTableOptionContext)_localctx).jsonAttribute = string_();
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(2906);
				((CreateTableOptionContext)_localctx).option = match(SECONDARY_ENGINE_ATTRIBUTE);
				setState(2907);
				match(EQ_);
				setState(2908);
				((CreateTableOptionContext)_localctx).jsonAttribute = string_();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateSRSStatementContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode OR() { return getToken(MySQLStatementParser.OR, 0); }
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode SPATIAL() { return getToken(MySQLStatementParser.SPATIAL, 0); }
		public TerminalNode REFERENCE() { return getToken(MySQLStatementParser.REFERENCE, 0); }
		public TerminalNode SYSTEM() { return getToken(MySQLStatementParser.SYSTEM, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public List srsAttribute() {
			return getRuleContexts(SrsAttributeContext.class);
		}
		public SrsAttributeContext srsAttribute(int i) {
			return getRuleContext(SrsAttributeContext.class,i);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public CreateSRSStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createSRSStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateSRSStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateSRSStatementContext createSRSStatement() throws RecognitionException {
		CreateSRSStatementContext _localctx = new CreateSRSStatementContext(_ctx, getState());
		enterRule(_localctx, 186, RULE_createSRSStatement);
		int _la;
		try {
			setState(2938);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(2911);
				match(CREATE);
				setState(2912);
				match(OR);
				setState(2913);
				match(REPLACE);
				setState(2914);
				match(SPATIAL);
				setState(2915);
				match(REFERENCE);
				setState(2916);
				match(SYSTEM);
				setState(2917);
				match(NUMBER_);
				setState(2921);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFINITION || _la==DESCRIPTION || _la==NAME || _la==ORGANIZATION) {
					{
					{
					setState(2918);
					srsAttribute();
					}
					}
					setState(2923);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(2924);
				match(CREATE);
				setState(2925);
				match(SPATIAL);
				setState(2926);
				match(REFERENCE);
				setState(2927);
				match(SYSTEM);
				setState(2929);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(2928);
					ifNotExists();
					}
				}

				setState(2931);
				match(NUMBER_);
				setState(2935);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==DEFINITION || _la==DESCRIPTION || _la==NAME || _la==ORGANIZATION) {
					{
					{
					setState(2932);
					srsAttribute();
					}
					}
					setState(2937);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropSRSStatementContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode SPATIAL() { return getToken(MySQLStatementParser.SPATIAL, 0); }
		public TerminalNode REFERENCE() { return getToken(MySQLStatementParser.REFERENCE, 0); }
		public TerminalNode SYSTEM() { return getToken(MySQLStatementParser.SYSTEM, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public DropSRSStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropSRSStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropSRSStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropSRSStatementContext dropSRSStatement() throws RecognitionException {
		DropSRSStatementContext _localctx = new DropSRSStatementContext(_ctx, getState());
		enterRule(_localctx, 188, RULE_dropSRSStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2940);
			match(DROP);
			setState(2941);
			match(SPATIAL);
			setState(2942);
			match(REFERENCE);
			setState(2943);
			match(SYSTEM);
			setState(2945);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(2944);
				ifNotExists();
				}
			}

			setState(2947);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SrsAttributeContext extends ParserRuleContext {
		public TerminalNode NAME() { return getToken(MySQLStatementParser.NAME, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode DEFINITION() { return getToken(MySQLStatementParser.DEFINITION, 0); }
		public TerminalNode ORGANIZATION() { return getToken(MySQLStatementParser.ORGANIZATION, 0); }
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode DESCRIPTION() { return getToken(MySQLStatementParser.DESCRIPTION, 0); }
		public SrsAttributeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_srsAttribute; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSrsAttribute(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SrsAttributeContext srsAttribute() throws RecognitionException {
		SrsAttributeContext _localctx = new SrsAttributeContext(_ctx, getState());
		enterRule(_localctx, 190, RULE_srsAttribute);
		try {
			setState(2961);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NAME:
				enterOuterAlt(_localctx, 1);
				{
				setState(2949);
				match(NAME);
				setState(2950);
				string_();
				}
				break;
			case DEFINITION:
				enterOuterAlt(_localctx, 2);
				{
				setState(2951);
				match(DEFINITION);
				setState(2952);
				string_();
				}
				break;
			case ORGANIZATION:
				enterOuterAlt(_localctx, 3);
				{
				setState(2953);
				match(ORGANIZATION);
				setState(2954);
				string_();
				setState(2955);
				match(IDENTIFIED);
				setState(2956);
				match(BY);
				setState(2957);
				match(NUMBER_);
				}
				break;
			case DESCRIPTION:
				enterOuterAlt(_localctx, 4);
				{
				setState(2959);
				match(DESCRIPTION);
				setState(2960);
				string_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PlaceContext extends ParserRuleContext {
		public TerminalNode FIRST() { return getToken(MySQLStatementParser.FIRST, 0); }
		public TerminalNode AFTER() { return getToken(MySQLStatementParser.AFTER, 0); }
		public ColumnNameContext columnName() {
			return getRuleContext(ColumnNameContext.class,0);
		}
		public PlaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_place; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPlace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PlaceContext place() throws RecognitionException {
		PlaceContext _localctx = new PlaceContext(_ctx, getState());
		enterRule(_localctx, 192, RULE_place);
		try {
			setState(2966);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FIRST:
				enterOuterAlt(_localctx, 1);
				{
				setState(2963);
				match(FIRST);
				}
				break;
			case AFTER:
				enterOuterAlt(_localctx, 2);
				{
				setState(2964);
				match(AFTER);
				setState(2965);
				columnName();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List partitionDefinition() {
			return getRuleContexts(PartitionDefinitionContext.class);
		}
		public PartitionDefinitionContext partitionDefinition(int i) {
			return getRuleContext(PartitionDefinitionContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public PartitionDefinitionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinitions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionDefinitions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinitionsContext partitionDefinitions() throws RecognitionException {
		PartitionDefinitionsContext _localctx = new PartitionDefinitionsContext(_ctx, getState());
		enterRule(_localctx, 194, RULE_partitionDefinitions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2968);
			match(LP_);
			setState(2969);
			partitionDefinition();
			setState(2974);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(2970);
				match(COMMA_);
				setState(2971);
				partitionDefinition();
				}
				}
				setState(2976);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(2977);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public PartitionNameContext partitionName() {
			return getRuleContext(PartitionNameContext.class,0);
		}
		public TerminalNode VALUES() { return getToken(MySQLStatementParser.VALUES, 0); }
		public List partitionDefinitionOption() {
			return getRuleContexts(PartitionDefinitionOptionContext.class);
		}
		public PartitionDefinitionOptionContext partitionDefinitionOption(int i) {
			return getRuleContext(PartitionDefinitionOptionContext.class,i);
		}
		public List LP_() { return getTokens(MySQLStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(MySQLStatementParser.LP_, i);
		}
		public List subpartitionDefinition() {
			return getRuleContexts(SubpartitionDefinitionContext.class);
		}
		public SubpartitionDefinitionContext subpartitionDefinition(int i) {
			return getRuleContext(SubpartitionDefinitionContext.class,i);
		}
		public List RP_() { return getTokens(MySQLStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(MySQLStatementParser.RP_, i);
		}
		public TerminalNode LESS() { return getToken(MySQLStatementParser.LESS, 0); }
		public TerminalNode THAN() { return getToken(MySQLStatementParser.THAN, 0); }
		public PartitionLessThanValueContext partitionLessThanValue() {
			return getRuleContext(PartitionLessThanValueContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public PartitionValueListContext partitionValueList() {
			return getRuleContext(PartitionValueListContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public PartitionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinitionContext partitionDefinition() throws RecognitionException {
		PartitionDefinitionContext _localctx = new PartitionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 196, RULE_partitionDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(2979);
			match(PARTITION);
			setState(2980);
			partitionName();
			setState(2992);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VALUES) {
				{
				setState(2981);
				match(VALUES);
				setState(2990);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LESS:
					{
					setState(2982);
					match(LESS);
					setState(2983);
					match(THAN);
					setState(2984);
					partitionLessThanValue();
					}
					break;
				case IN:
					{
					setState(2985);
					match(IN);
					setState(2986);
					match(LP_);
					setState(2987);
					partitionValueList();
					setState(2988);
					match(RP_);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(2997);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMENT || _la==DATA || _la==ENGINE || _la==INDEX || _la==MAX_ROWS || _la==MIN_ROWS || _la==STORAGE || _la==TABLESPACE) {
				{
				{
				setState(2994);
				partitionDefinitionOption();
				}
				}
				setState(2999);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3011);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(3000);
				match(LP_);
				setState(3001);
				subpartitionDefinition();
				setState(3006);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3002);
					match(COMMA_);
					setState(3003);
					subpartitionDefinition();
					}
					}
					setState(3008);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3009);
				match(RP_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionLessThanValueContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public PartitionValueListContext partitionValueList() {
			return getRuleContext(PartitionValueListContext.class,0);
		}
		public TerminalNode MAXVALUE() { return getToken(MySQLStatementParser.MAXVALUE, 0); }
		public PartitionLessThanValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionLessThanValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionLessThanValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionLessThanValueContext partitionLessThanValue() throws RecognitionException {
		PartitionLessThanValueContext _localctx = new PartitionLessThanValueContext(_ctx, getState());
		enterRule(_localctx, 198, RULE_partitionLessThanValue);
		try {
			setState(3021);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3013);
				match(LP_);
				setState(3016);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,305,_ctx) ) {
				case 1:
					{
					setState(3014);
					expr(0);
					}
					break;
				case 2:
					{
					setState(3015);
					partitionValueList();
					}
					break;
				}
				setState(3018);
				match(RP_);
				}
				break;
			case MAXVALUE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3020);
				match(MAXVALUE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionValueListContext extends ParserRuleContext {
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public PartitionValueListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionValueList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionValueList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionValueListContext partitionValueList() throws RecognitionException {
		PartitionValueListContext _localctx = new PartitionValueListContext(_ctx, getState());
		enterRule(_localctx, 200, RULE_partitionValueList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3023);
			expr(0);
			setState(3028);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3024);
				match(COMMA_);
				setState(3025);
				expr(0);
				}
				}
				setState(3030);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionDefinitionOptionContext extends ParserRuleContext {
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode STORAGE() { return getToken(MySQLStatementParser.STORAGE, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySQLStatementParser.DIRECTORY, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode MAX_ROWS() { return getToken(MySQLStatementParser.MAX_ROWS, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode MIN_ROWS() { return getToken(MySQLStatementParser.MIN_ROWS, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public PartitionDefinitionOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionDefinitionOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionDefinitionOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionDefinitionOptionContext partitionDefinitionOption() throws RecognitionException {
		PartitionDefinitionOptionContext _localctx = new PartitionDefinitionOptionContext(_ctx, getState());
		enterRule(_localctx, 202, RULE_partitionDefinitionOption);
		int _la;
		try {
			setState(3071);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENGINE:
			case STORAGE:
				enterOuterAlt(_localctx, 1);
				{
				setState(3032);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STORAGE) {
					{
					setState(3031);
					match(STORAGE);
					}
				}

				setState(3034);
				match(ENGINE);
				setState(3036);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3035);
					match(EQ_);
					}
				}

				setState(3038);
				identifier();
				}
				break;
			case COMMENT:
				enterOuterAlt(_localctx, 2);
				{
				setState(3039);
				match(COMMENT);
				setState(3041);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3040);
					match(EQ_);
					}
				}

				setState(3043);
				string_();
				}
				break;
			case DATA:
				enterOuterAlt(_localctx, 3);
				{
				setState(3044);
				match(DATA);
				setState(3045);
				match(DIRECTORY);
				setState(3047);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3046);
					match(EQ_);
					}
				}

				setState(3049);
				string_();
				}
				break;
			case INDEX:
				enterOuterAlt(_localctx, 4);
				{
				setState(3050);
				match(INDEX);
				setState(3051);
				match(DIRECTORY);
				setState(3053);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3052);
					match(EQ_);
					}
				}

				setState(3055);
				string_();
				}
				break;
			case MAX_ROWS:
				enterOuterAlt(_localctx, 5);
				{
				setState(3056);
				match(MAX_ROWS);
				setState(3058);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3057);
					match(EQ_);
					}
				}

				setState(3060);
				match(NUMBER_);
				}
				break;
			case MIN_ROWS:
				enterOuterAlt(_localctx, 6);
				{
				setState(3061);
				match(MIN_ROWS);
				setState(3063);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3062);
					match(EQ_);
					}
				}

				setState(3065);
				match(NUMBER_);
				}
				break;
			case TABLESPACE:
				enterOuterAlt(_localctx, 7);
				{
				setState(3066);
				match(TABLESPACE);
				setState(3068);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(3067);
					match(EQ_);
					}
				}

				setState(3070);
				identifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubpartitionDefinitionContext extends ParserRuleContext {
		public TerminalNode SUBPARTITION() { return getToken(MySQLStatementParser.SUBPARTITION, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public List partitionDefinitionOption() {
			return getRuleContexts(PartitionDefinitionOptionContext.class);
		}
		public PartitionDefinitionOptionContext partitionDefinitionOption(int i) {
			return getRuleContext(PartitionDefinitionOptionContext.class,i);
		}
		public SubpartitionDefinitionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subpartitionDefinition; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSubpartitionDefinition(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubpartitionDefinitionContext subpartitionDefinition() throws RecognitionException {
		SubpartitionDefinitionContext _localctx = new SubpartitionDefinitionContext(_ctx, getState());
		enterRule(_localctx, 204, RULE_subpartitionDefinition);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3073);
			match(SUBPARTITION);
			setState(3074);
			identifier();
			setState(3078);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMENT || _la==DATA || _la==ENGINE || _la==INDEX || _la==MAX_ROWS || _la==MIN_ROWS || _la==STORAGE || _la==TABLESPACE) {
				{
				{
				setState(3075);
				partitionDefinitionOption();
				}
				}
				setState(3080);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OwnerStatementContext extends ParserRuleContext {
		public TerminalNode DEFINER() { return getToken(MySQLStatementParser.DEFINER, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode CURRENT_USER() { return getToken(MySQLStatementParser.CURRENT_USER, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public OwnerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ownerStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOwnerStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OwnerStatementContext ownerStatement() throws RecognitionException {
		OwnerStatementContext _localctx = new OwnerStatementContext(_ctx, getState());
		enterRule(_localctx, 206, RULE_ownerStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3081);
			match(DEFINER);
			setState(3082);
			match(EQ_);
			setState(3089);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,319,_ctx) ) {
			case 1:
				{
				setState(3083);
				username();
				}
				break;
			case 2:
				{
				setState(3084);
				match(CURRENT_USER);
				setState(3087);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(3085);
					match(LP_);
					setState(3086);
					match(RP_);
					}
				}

				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ScheduleExpressionContext extends ParserRuleContext {
		public TerminalNode AT() { return getToken(MySQLStatementParser.AT, 0); }
		public List timestampValue() {
			return getRuleContexts(TimestampValueContext.class);
		}
		public TimestampValueContext timestampValue(int i) {
			return getRuleContext(TimestampValueContext.class,i);
		}
		public List PLUS_() { return getTokens(MySQLStatementParser.PLUS_); }
		public TerminalNode PLUS_(int i) {
			return getToken(MySQLStatementParser.PLUS_, i);
		}
		public List intervalExpression() {
			return getRuleContexts(IntervalExpressionContext.class);
		}
		public IntervalExpressionContext intervalExpression(int i) {
			return getRuleContext(IntervalExpressionContext.class,i);
		}
		public TerminalNode EVERY() { return getToken(MySQLStatementParser.EVERY, 0); }
		public IntervalValueContext intervalValue() {
			return getRuleContext(IntervalValueContext.class,0);
		}
		public TerminalNode STARTS() { return getToken(MySQLStatementParser.STARTS, 0); }
		public TerminalNode ENDS() { return getToken(MySQLStatementParser.ENDS, 0); }
		public ScheduleExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_scheduleExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitScheduleExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ScheduleExpressionContext scheduleExpression() throws RecognitionException {
		ScheduleExpressionContext _localctx = new ScheduleExpressionContext(_ctx, getState());
		enterRule(_localctx, 208, RULE_scheduleExpression);
		int _la;
		try {
			setState(3124);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AT:
				enterOuterAlt(_localctx, 1);
				{
				setState(3091);
				match(AT);
				setState(3092);
				timestampValue();
				setState(3097);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==PLUS_) {
					{
					{
					setState(3093);
					match(PLUS_);
					setState(3094);
					intervalExpression();
					}
					}
					setState(3099);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case EVERY:
				enterOuterAlt(_localctx, 2);
				{
				setState(3100);
				match(EVERY);
				setState(3101);
				intervalValue();
				setState(3111);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==STARTS) {
					{
					setState(3102);
					match(STARTS);
					setState(3103);
					timestampValue();
					setState(3108);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==PLUS_) {
						{
						{
						setState(3104);
						match(PLUS_);
						setState(3105);
						intervalExpression();
						}
						}
						setState(3110);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(3122);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ENDS) {
					{
					setState(3113);
					match(ENDS);
					setState(3114);
					timestampValue();
					setState(3119);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==PLUS_) {
						{
						{
						setState(3115);
						match(PLUS_);
						setState(3116);
						intervalExpression();
						}
						}
						setState(3121);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TimestampValueContext extends ParserRuleContext {
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySQLStatementParser.CURRENT_TIMESTAMP, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TimestampValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_timestampValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTimestampValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TimestampValueContext timestampValue() throws RecognitionException {
		TimestampValueContext _localctx = new TimestampValueContext(_ctx, getState());
		enterRule(_localctx, 210, RULE_timestampValue);
		try {
			setState(3130);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,326,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3126);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3127);
				stringLiterals();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3128);
				numberLiterals();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3129);
				expr(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineBodyContext extends ParserRuleContext {
		public SimpleStatementContext simpleStatement() {
			return getRuleContext(SimpleStatementContext.class,0);
		}
		public CompoundStatementContext compoundStatement() {
			return getRuleContext(CompoundStatementContext.class,0);
		}
		public RoutineBodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineBody; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoutineBody(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoutineBodyContext routineBody() throws RecognitionException {
		RoutineBodyContext _localctx = new RoutineBodyContext(_ctx, getState());
		enterRule(_localctx, 212, RULE_routineBody);
		try {
			setState(3134);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,327,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3132);
				simpleStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3133);
				compoundStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ServerOptionContext extends ParserRuleContext {
		public TerminalNode HOST() { return getToken(MySQLStatementParser.HOST, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySQLStatementParser.DATABASE, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public TerminalNode SOCKET() { return getToken(MySQLStatementParser.SOCKET, 0); }
		public TerminalNode OWNER() { return getToken(MySQLStatementParser.OWNER, 0); }
		public TerminalNode PORT() { return getToken(MySQLStatementParser.PORT, 0); }
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public ServerOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_serverOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitServerOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ServerOptionContext serverOption() throws RecognitionException {
		ServerOptionContext _localctx = new ServerOptionContext(_ctx, getState());
		enterRule(_localctx, 214, RULE_serverOption);
		try {
			setState(3150);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case HOST:
				enterOuterAlt(_localctx, 1);
				{
				setState(3136);
				match(HOST);
				setState(3137);
				string_();
				}
				break;
			case DATABASE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3138);
				match(DATABASE);
				setState(3139);
				string_();
				}
				break;
			case USER:
				enterOuterAlt(_localctx, 3);
				{
				setState(3140);
				match(USER);
				setState(3141);
				string_();
				}
				break;
			case PASSWORD:
				enterOuterAlt(_localctx, 4);
				{
				setState(3142);
				match(PASSWORD);
				setState(3143);
				string_();
				}
				break;
			case SOCKET:
				enterOuterAlt(_localctx, 5);
				{
				setState(3144);
				match(SOCKET);
				setState(3145);
				string_();
				}
				break;
			case OWNER:
				enterOuterAlt(_localctx, 6);
				{
				setState(3146);
				match(OWNER);
				setState(3147);
				string_();
				}
				break;
			case PORT:
				enterOuterAlt(_localctx, 7);
				{
				setState(3148);
				match(PORT);
				setState(3149);
				numberLiterals();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineOptionContext extends ParserRuleContext {
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode LANGUAGE() { return getToken(MySQLStatementParser.LANGUAGE, 0); }
		public TerminalNode SQL() { return getToken(MySQLStatementParser.SQL, 0); }
		public TerminalNode DETERMINISTIC() { return getToken(MySQLStatementParser.DETERMINISTIC, 0); }
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode CONTAINS() { return getToken(MySQLStatementParser.CONTAINS, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public TerminalNode READS() { return getToken(MySQLStatementParser.READS, 0); }
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode MODIFIES() { return getToken(MySQLStatementParser.MODIFIES, 0); }
		public TerminalNode SECURITY() { return getToken(MySQLStatementParser.SECURITY, 0); }
		public TerminalNode DEFINER() { return getToken(MySQLStatementParser.DEFINER, 0); }
		public TerminalNode INVOKER() { return getToken(MySQLStatementParser.INVOKER, 0); }
		public RoutineOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoutineOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoutineOptionContext routineOption() throws RecognitionException {
		RoutineOptionContext _localctx = new RoutineOptionContext(_ctx, getState());
		enterRule(_localctx, 216, RULE_routineOption);
		int _la;
		try {
			setState(3175);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case COMMENT:
				enterOuterAlt(_localctx, 1);
				{
				setState(3152);
				match(COMMENT);
				setState(3153);
				string_();
				}
				break;
			case LANGUAGE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3154);
				match(LANGUAGE);
				setState(3155);
				match(SQL);
				}
				break;
			case DETERMINISTIC:
			case NOT:
				enterOuterAlt(_localctx, 3);
				{
				setState(3157);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(3156);
					match(NOT);
					}
				}

				setState(3159);
				match(DETERMINISTIC);
				}
				break;
			case CONTAINS:
			case MODIFIES:
			case NO:
			case READS:
				enterOuterAlt(_localctx, 4);
				{
				setState(3170);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CONTAINS:
					{
					setState(3160);
					match(CONTAINS);
					setState(3161);
					match(SQL);
					}
					break;
				case NO:
					{
					setState(3162);
					match(NO);
					setState(3163);
					match(SQL);
					}
					break;
				case READS:
					{
					setState(3164);
					match(READS);
					setState(3165);
					match(SQL);
					setState(3166);
					match(DATA);
					}
					break;
				case MODIFIES:
					{
					setState(3167);
					match(MODIFIES);
					setState(3168);
					match(SQL);
					setState(3169);
					match(DATA);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case SQL:
				enterOuterAlt(_localctx, 5);
				{
				setState(3172);
				match(SQL);
				setState(3173);
				match(SECURITY);
				setState(3174);
				_la = _input.LA(1);
				if ( !(_la==DEFINER || _la==INVOKER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProcedureParameterContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public TerminalNode OUT() { return getToken(MySQLStatementParser.OUT, 0); }
		public TerminalNode INOUT() { return getToken(MySQLStatementParser.INOUT, 0); }
		public ProcedureParameterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedureParameter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitProcedureParameter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ProcedureParameterContext procedureParameter() throws RecognitionException {
		ProcedureParameterContext _localctx = new ProcedureParameterContext(_ctx, getState());
		enterRule(_localctx, 218, RULE_procedureParameter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3178);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IN || _la==INOUT || _la==OUT) {
				{
				setState(3177);
				_la = _input.LA(1);
				if ( !(_la==IN || _la==INOUT || _la==OUT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3180);
			identifier();
			setState(3181);
			dataType();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FileSizeLiteralContext extends ParserRuleContext {
		public TerminalNode FILESIZE_LITERAL() { return getToken(MySQLStatementParser.FILESIZE_LITERAL, 0); }
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public FileSizeLiteralContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fileSizeLiteral; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFileSizeLiteral(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FileSizeLiteralContext fileSizeLiteral() throws RecognitionException {
		FileSizeLiteralContext _localctx = new FileSizeLiteralContext(_ctx, getState());
		enterRule(_localctx, 220, RULE_fileSizeLiteral);
		try {
			setState(3185);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FILESIZE_LITERAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(3183);
				match(FILESIZE_LITERAL);
				}
				break;
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(3184);
				numberLiterals();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SimpleStatementContext extends ParserRuleContext {
		public ValidStatementContext validStatement() {
			return getRuleContext(ValidStatementContext.class,0);
		}
		public SimpleStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSimpleStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleStatementContext simpleStatement() throws RecognitionException {
		SimpleStatementContext _localctx = new SimpleStatementContext(_ctx, getState());
		enterRule(_localctx, 222, RULE_simpleStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3187);
			validStatement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CompoundStatementContext extends ParserRuleContext {
		public BeginStatementContext beginStatement() {
			return getRuleContext(BeginStatementContext.class,0);
		}
		public CompoundStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_compoundStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCompoundStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CompoundStatementContext compoundStatement() throws RecognitionException {
		CompoundStatementContext _localctx = new CompoundStatementContext(_ctx, getState());
		enterRule(_localctx, 224, RULE_compoundStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3189);
			beginStatement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValidStatementContext extends ParserRuleContext {
		public CreateTableContext createTable() {
			return getRuleContext(CreateTableContext.class,0);
		}
		public AlterTableContext alterTable() {
			return getRuleContext(AlterTableContext.class,0);
		}
		public DropTableContext dropTable() {
			return getRuleContext(DropTableContext.class,0);
		}
		public TruncateTableContext truncateTable() {
			return getRuleContext(TruncateTableContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public ReplaceContext replace() {
			return getRuleContext(ReplaceContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public CallContext call() {
			return getRuleContext(CallContext.class,0);
		}
		public CreateViewContext createView() {
			return getRuleContext(CreateViewContext.class,0);
		}
		public PrepareContext prepare() {
			return getRuleContext(PrepareContext.class,0);
		}
		public ExecuteStmtContext executeStmt() {
			return getRuleContext(ExecuteStmtContext.class,0);
		}
		public CommitContext commit() {
			return getRuleContext(CommitContext.class,0);
		}
		public DeallocateContext deallocate() {
			return getRuleContext(DeallocateContext.class,0);
		}
		public SetVariableContext setVariable() {
			return getRuleContext(SetVariableContext.class,0);
		}
		public BeginStatementContext beginStatement() {
			return getRuleContext(BeginStatementContext.class,0);
		}
		public DeclareStatementContext declareStatement() {
			return getRuleContext(DeclareStatementContext.class,0);
		}
		public FlowControlStatementContext flowControlStatement() {
			return getRuleContext(FlowControlStatementContext.class,0);
		}
		public CursorStatementContext cursorStatement() {
			return getRuleContext(CursorStatementContext.class,0);
		}
		public ConditionHandlingStatementContext conditionHandlingStatement() {
			return getRuleContext(ConditionHandlingStatementContext.class,0);
		}
		public TerminalNode SEMI_() { return getToken(MySQLStatementParser.SEMI_, 0); }
		public ValidStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_validStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitValidStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ValidStatementContext validStatement() throws RecognitionException {
		ValidStatementContext _localctx = new ValidStatementContext(_ctx, getState());
		enterRule(_localctx, 226, RULE_validStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3212);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,334,_ctx) ) {
			case 1:
				{
				setState(3191);
				createTable();
				}
				break;
			case 2:
				{
				setState(3192);
				alterTable();
				}
				break;
			case 3:
				{
				setState(3193);
				dropTable();
				}
				break;
			case 4:
				{
				setState(3194);
				truncateTable();
				}
				break;
			case 5:
				{
				setState(3195);
				insert();
				}
				break;
			case 6:
				{
				setState(3196);
				replace();
				}
				break;
			case 7:
				{
				setState(3197);
				update();
				}
				break;
			case 8:
				{
				setState(3198);
				delete();
				}
				break;
			case 9:
				{
				setState(3199);
				select();
				}
				break;
			case 10:
				{
				setState(3200);
				call();
				}
				break;
			case 11:
				{
				setState(3201);
				createView();
				}
				break;
			case 12:
				{
				setState(3202);
				prepare();
				}
				break;
			case 13:
				{
				setState(3203);
				executeStmt();
				}
				break;
			case 14:
				{
				setState(3204);
				commit();
				}
				break;
			case 15:
				{
				setState(3205);
				deallocate();
				}
				break;
			case 16:
				{
				setState(3206);
				setVariable();
				}
				break;
			case 17:
				{
				setState(3207);
				beginStatement();
				}
				break;
			case 18:
				{
				setState(3208);
				declareStatement();
				}
				break;
			case 19:
				{
				setState(3209);
				flowControlStatement();
				}
				break;
			case 20:
				{
				setState(3210);
				cursorStatement();
				}
				break;
			case 21:
				{
				setState(3211);
				conditionHandlingStatement();
				}
				break;
			}
			setState(3215);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,335,_ctx) ) {
			case 1:
				{
				setState(3214);
				match(SEMI_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BeginStatementContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySQLStatementParser.BEGIN, 0); }
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public List labelName() {
			return getRuleContexts(LabelNameContext.class);
		}
		public LabelNameContext labelName(int i) {
			return getRuleContext(LabelNameContext.class,i);
		}
		public TerminalNode COLON_() { return getToken(MySQLStatementParser.COLON_, 0); }
		public List validStatement() {
			return getRuleContexts(ValidStatementContext.class);
		}
		public ValidStatementContext validStatement(int i) {
			return getRuleContext(ValidStatementContext.class,i);
		}
		public TerminalNode SEMI_() { return getToken(MySQLStatementParser.SEMI_, 0); }
		public BeginStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_beginStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBeginStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BeginStatementContext beginStatement() throws RecognitionException {
		BeginStatementContext _localctx = new BeginStatementContext(_ctx, getState());
		enterRule(_localctx, 228, RULE_beginStatement);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3220);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,336,_ctx) ) {
			case 1:
				{
				setState(3217);
				labelName();
				setState(3218);
				match(COLON_);
				}
				break;
			}
			setState(3222);
			match(BEGIN);
			setState(3226);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,337,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(3223);
					validStatement();
					}
					} 
				}
				setState(3228);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,337,_ctx);
			}
			setState(3229);
			match(END);
			setState(3231);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,338,_ctx) ) {
			case 1:
				{
				setState(3230);
				labelName();
				}
				break;
			}
			setState(3234);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,339,_ctx) ) {
			case 1:
				{
				setState(3233);
				match(SEMI_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareStatementContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySQLStatementParser.DECLARE, 0); }
		public List variable() {
			return getRuleContexts(VariableContext.class);
		}
		public VariableContext variable(int i) {
			return getRuleContext(VariableContext.class,i);
		}
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public List DEFAULT() { return getTokens(MySQLStatementParser.DEFAULT); }
		public TerminalNode DEFAULT(int i) {
			return getToken(MySQLStatementParser.DEFAULT, i);
		}
		public List simpleExpr() {
			return getRuleContexts(SimpleExprContext.class);
		}
		public SimpleExprContext simpleExpr(int i) {
			return getRuleContext(SimpleExprContext.class,i);
		}
		public DeclareStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDeclareStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareStatementContext declareStatement() throws RecognitionException {
		DeclareStatementContext _localctx = new DeclareStatementContext(_ctx, getState());
		enterRule(_localctx, 230, RULE_declareStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3236);
			match(DECLARE);
			setState(3237);
			variable();
			setState(3242);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3238);
				match(COMMA_);
				setState(3239);
				variable();
				}
				}
				setState(3244);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3245);
			dataType();
			setState(3250);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==DEFAULT) {
				{
				{
				setState(3246);
				match(DEFAULT);
				setState(3247);
				simpleExpr(0);
				}
				}
				setState(3252);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlowControlStatementContext extends ParserRuleContext {
		public CaseStatementContext caseStatement() {
			return getRuleContext(CaseStatementContext.class,0);
		}
		public IfStatementContext ifStatement() {
			return getRuleContext(IfStatementContext.class,0);
		}
		public IterateStatementContext iterateStatement() {
			return getRuleContext(IterateStatementContext.class,0);
		}
		public LeaveStatementContext leaveStatement() {
			return getRuleContext(LeaveStatementContext.class,0);
		}
		public LoopStatementContext loopStatement() {
			return getRuleContext(LoopStatementContext.class,0);
		}
		public RepeatStatementContext repeatStatement() {
			return getRuleContext(RepeatStatementContext.class,0);
		}
		public ReturnStatementContext returnStatement() {
			return getRuleContext(ReturnStatementContext.class,0);
		}
		public WhileStatementContext whileStatement() {
			return getRuleContext(WhileStatementContext.class,0);
		}
		public FlowControlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flowControlStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFlowControlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FlowControlStatementContext flowControlStatement() throws RecognitionException {
		FlowControlStatementContext _localctx = new FlowControlStatementContext(_ctx, getState());
		enterRule(_localctx, 232, RULE_flowControlStatement);
		try {
			setState(3261);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,342,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3253);
				caseStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3254);
				ifStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3255);
				iterateStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3256);
				leaveStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3257);
				loopStatement();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(3258);
				repeatStatement();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(3259);
				returnStatement();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(3260);
				whileStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseStatementContext extends ParserRuleContext {
		public List CASE() { return getTokens(MySQLStatementParser.CASE); }
		public TerminalNode CASE(int i) {
			return getToken(MySQLStatementParser.CASE, i);
		}
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public List WHEN() { return getTokens(MySQLStatementParser.WHEN); }
		public TerminalNode WHEN(int i) {
			return getToken(MySQLStatementParser.WHEN, i);
		}
		public List THEN() { return getTokens(MySQLStatementParser.THEN); }
		public TerminalNode THEN(int i) {
			return getToken(MySQLStatementParser.THEN, i);
		}
		public TerminalNode ELSE() { return getToken(MySQLStatementParser.ELSE, 0); }
		public List validStatement() {
			return getRuleContexts(ValidStatementContext.class);
		}
		public ValidStatementContext validStatement(int i) {
			return getRuleContext(ValidStatementContext.class,i);
		}
		public CaseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCaseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseStatementContext caseStatement() throws RecognitionException {
		CaseStatementContext _localctx = new CaseStatementContext(_ctx, getState());
		enterRule(_localctx, 234, RULE_caseStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3263);
			match(CASE);
			setState(3265);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << AT_) | (1L << MAX) | (1L << MIN) | (1L << SUM) | (1L << COUNT) | (1L << GROUP_CONCAT) | (1L << CAST) | (1L << POSITION) | (1L << SUBSTRING) | (1L << SUBSTR) | (1L << EXTRACT) | (1L << TRIM) | (1L << LAST_DAY) | (1L << TRADITIONAL) | (1L << TREE) | (1L << MYSQL_MAIN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (MYSQL_ADMIN - 64)) | (1L << (INSTANT - 64)) | (1L << (INPLACE - 64)) | (1L << (COPY - 64)) | (1L << (UL_BINARY - 64)) | (1L << (AUTOCOMMIT - 64)) | (1L << (INNODB - 64)) | (1L << (REDO_LOG - 64)) | (1L << (ACCOUNT - 64)) | (1L << (ACTION - 64)) | (1L << (ACTIVE - 64)) | (1L << (ADMIN - 64)) | (1L << (AFTER - 64)) | (1L << (AGAINST - 64)) | (1L << (AGGREGATE - 64)) | (1L << (ALGORITHM - 64)) | (1L << (ALWAYS - 64)) | (1L << (ANY - 64)) | (1L << (ARRAY - 64)) | (1L << (ASCII - 64)) | (1L << (AT - 64)) | (1L << (ATTRIBUTE - 64)) | (1L << (AUTOEXTEND_SIZE - 64)) | (1L << (AUTO_INCREMENT - 64)) | (1L << (AVG - 64)) | (1L << (BIT_XOR - 64)) | (1L << (AVG_ROW_LENGTH - 64)) | (1L << (BACKUP - 64)) | (1L << (BEGIN - 64)) | (1L << (BINARY - 64)) | (1L << (BINLOG - 64)) | (1L << (BIT - 64)) | (1L << (BLOCK - 64)) | (1L << (BOOL - 64)) | (1L << (BOOLEAN - 64)) | (1L << (BTREE - 64)) | (1L << (BUCKETS - 64)) | (1L << (BYTE - 64)) | (1L << (CACHE - 64)) | (1L << (CASCADED - 64)) | (1L << (CASE - 64)) | (1L << (CATALOG_NAME - 64)) | (1L << (CHAIN - 64)) | (1L << (CHANGED - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (CHANNEL - 128)) | (1L << (CHAR - 128)) | (1L << (CHARSET - 128)) | (1L << (CHECKSUM - 128)) | (1L << (CIPHER - 128)) | (1L << (CLASS_ORIGIN - 128)) | (1L << (CLIENT - 128)) | (1L << (CLONE - 128)) | (1L << (CLOSE - 128)) | (1L << (COALESCE - 128)) | (1L << (CODE - 128)) | (1L << (COLLATION - 128)) | (1L << (COLUMNS - 128)) | (1L << (COLUMN_FORMAT - 128)) | (1L << (COLUMN_NAME - 128)) | (1L << (COMMENT - 128)) | (1L << (COMMIT - 128)) | (1L << (COMMITTED - 128)) | (1L << (COMPACT - 128)) | (1L << (COMPLETION - 128)) | (1L << (COMPONENT - 128)) | (1L << (COMPRESSED - 128)) | (1L << (COMPRESSION - 128)) | (1L << (CONCURRENT - 128)) | (1L << (CONNECTION - 128)) | (1L << (CONSISTENT - 128)) | (1L << (CONSTRAINT_CATALOG - 128)) | (1L << (CONSTRAINT_NAME - 128)) | (1L << (CONSTRAINT_SCHEMA - 128)) | (1L << (CONTAINS - 128)) | (1L << (CONTEXT - 128)) | (1L << (CONVERT - 128)) | (1L << (CPU - 128)) | (1L << (CREATE - 128)) | (1L << (CUME_DIST - 128)) | (1L << (CURRENT - 128)) | (1L << (CURRENT_DATE - 128)) | (1L << (CURRENT_TIME - 128)) | (1L << (CURRENT_TIMESTAMP - 128)) | (1L << (CURRENT_USER - 128)) | (1L << (CURSOR_NAME - 128)) | (1L << (DATA - 128)) | (1L << (DATABASE - 128)) | (1L << (DATAFILE - 128)) | (1L << (DATE - 128)) | (1L << (DATETIME - 128)) | (1L << (DAY - 128)) | (1L << (DEALLOCATE - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (DEFAULT_AUTH - 195)) | (1L << (DEFINER - 195)) | (1L << (DEFINITION - 195)) | (1L << (DELAY_KEY_WRITE - 195)) | (1L << (DENSE_RANK - 195)) | (1L << (DESCRIPTION - 195)) | (1L << (DIAGNOSTICS - 195)) | (1L << (DIRECTORY - 195)) | (1L << (DISABLE - 195)) | (1L << (DISCARD - 195)) | (1L << (DISK - 195)) | (1L << (DO - 195)) | (1L << (DUMPFILE - 195)) | (1L << (DUPLICATE - 195)) | (1L << (DYNAMIC - 195)) | (1L << (ENABLE - 195)) | (1L << (ENCRYPTION - 195)) | (1L << (END - 195)) | (1L << (ENDS - 195)) | (1L << (ENFORCED - 195)) | (1L << (ENGINE - 195)) | (1L << (ENGINES - 195)) | (1L << (ENGINE_ATTRIBUTE - 195)) | (1L << (ENUM - 195)) | (1L << (ERROR - 195)) | (1L << (ERRORS - 195)) | (1L << (ESCAPE - 195)) | (1L << (EVENT - 195)) | (1L << (EVENTS - 195)) | (1L << (EVERY - 195)) | (1L << (EXCHANGE - 195)) | (1L << (EXCLUDE - 195)) | (1L << (EXECUTE - 195)) | (1L << (EXISTS - 195)) | (1L << (EXPANSION - 195)) | (1L << (EXPIRE - 195)) | (1L << (EXPORT - 195)) | (1L << (EXTENDED - 195)) | (1L << (EXTENT_SIZE - 195)) | (1L << (FAILED_LOGIN_ATTEMPTS - 195)) | (1L << (FALSE - 195)) | (1L << (FAST - 195)) | (1L << (FAULTS - 195)))) != 0) || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & ((1L << (FILE - 259)) | (1L << (FILE_BLOCK_SIZE - 259)) | (1L << (FILTER - 259)) | (1L << (FIRST - 259)) | (1L << (FIRST_VALUE - 259)) | (1L << (FIXED - 259)) | (1L << (FLUSH - 259)) | (1L << (FOLLOWING - 259)) | (1L << (FOLLOWS - 259)) | (1L << (FORMAT - 259)) | (1L << (FOUND - 259)) | (1L << (FULL - 259)) | (1L << (GENERAL - 259)) | (1L << (GEOMETRY - 259)) | (1L << (GEOMETRYCOLLECTION - 259)) | (1L << (GET_FORMAT - 259)) | (1L << (GET_MASTER_PUBLIC_KEY - 259)) | (1L << (GLOBAL - 259)) | (1L << (GRANTS - 259)) | (1L << (GROUP_REPLICATION - 259)) | (1L << (HANDLER - 259)) | (1L << (HASH - 259)) | (1L << (HELP - 259)) | (1L << (HISTOGRAM - 259)) | (1L << (HISTORY - 259)) | (1L << (HOST - 259)) | (1L << (HOSTS - 259)) | (1L << (HOUR - 259)) | (1L << (IDENTIFIED - 259)) | (1L << (IF - 259)) | (1L << (IGNORE_SERVER_IDS - 259)) | (1L << (IMPORT - 259)) | (1L << (INACTIVE - 259)) | (1L << (INDEXES - 259)) | (1L << (INITIAL_SIZE - 259)) | (1L << (INSERT - 259)) | (1L << (INSERT_METHOD - 259)))) != 0) || ((((_la - 323)) & ~0x3f) == 0 && ((1L << (_la - 323)) & ((1L << (INSTALL - 323)) | (1L << (INSTANCE - 323)) | (1L << (INTERVAL - 323)) | (1L << (INVISIBLE - 323)) | (1L << (INVOKER - 323)) | (1L << (IO - 323)) | (1L << (IPC - 323)) | (1L << (ISOLATION - 323)) | (1L << (ISSUER - 323)) | (1L << (JSON - 323)) | (1L << (JSON_TABLE - 323)) | (1L << (JSON_VALUE - 323)) | (1L << (KEY - 323)) | (1L << (KEY_BLOCK_SIZE - 323)) | (1L << (LAG - 323)) | (1L << (LANGUAGE - 323)) | (1L << (LAST - 323)) | (1L << (LAST_VALUE - 323)) | (1L << (LEAD - 323)) | (1L << (LEAVES - 323)) | (1L << (LEFT - 323)) | (1L << (LESS - 323)) | (1L << (LEVEL - 323)) | (1L << (LINESTRING - 323)) | (1L << (LIST - 323)) | (1L << (LOCAL - 323)) | (1L << (LOCALTIME - 323)) | (1L << (LOCALTIMESTAMP - 323)) | (1L << (LOCKED - 323)) | (1L << (LOCKS - 323)) | (1L << (LOGFILE - 323)) | (1L << (LOGS - 323)) | (1L << (MASTER - 323)) | (1L << (MASTER_AUTO_POSITION - 323)))) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & ((1L << (MASTER_COMPRESSION_ALGORITHM - 387)) | (1L << (MASTER_CONNECT_RETRY - 387)) | (1L << (MASTER_DELAY - 387)) | (1L << (MASTER_HEARTBEAT_PERIOD - 387)) | (1L << (MASTER_HOST - 387)) | (1L << (MASTER_LOG_FILE - 387)) | (1L << (MASTER_LOG_POS - 387)) | (1L << (MASTER_PASSWORD - 387)) | (1L << (MASTER_PORT - 387)) | (1L << (MASTER_PUBLIC_KEY_PATH - 387)) | (1L << (MASTER_RETRY_COUNT - 387)) | (1L << (MASTER_SERVER_ID - 387)) | (1L << (MASTER_SSL - 387)) | (1L << (MASTER_SSL_CA - 387)) | (1L << (MASTER_SSL_CAPATH - 387)) | (1L << (MASTER_SSL_CERT - 387)) | (1L << (MASTER_SSL_CIPHER - 387)) | (1L << (MASTER_SSL_CRL - 387)) | (1L << (MASTER_SSL_CRLPATH - 387)) | (1L << (MASTER_SSL_KEY - 387)) | (1L << (MASTER_TLS_CIPHERSUITES - 387)) | (1L << (MASTER_TLS_VERSION - 387)) | (1L << (MASTER_USER - 387)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 387)) | (1L << (MATCH - 387)) | (1L << (MAXVALUE - 387)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 387)) | (1L << (MAX_QUERIES_PER_HOUR - 387)) | (1L << (MAX_ROWS - 387)) | (1L << (MAX_SIZE - 387)) | (1L << (MAX_UPDATES_PER_HOUR - 387)) | (1L << (MAX_USER_CONNECTIONS - 387)) | (1L << (MEDIUM - 387)) | (1L << (MEMBER - 387)) | (1L << (MEMORY - 387)) | (1L << (MERGE - 387)) | (1L << (MESSAGE_TEXT - 387)) | (1L << (MICROSECOND - 387)) | (1L << (MIGRATE - 387)) | (1L << (MINUTE - 387)) | (1L << (MIN_ROWS - 387)) | (1L << (MOD - 387)) | (1L << (MODE - 387)) | (1L << (MODIFY - 387)) | (1L << (MONTH - 387)) | (1L << (MULTILINESTRING - 387)) | (1L << (MULTIPOINT - 387)) | (1L << (MULTIPOLYGON - 387)) | (1L << (MUTEX - 387)) | (1L << (MYSQL_ERRNO - 387)) | (1L << (NAME - 387)) | (1L << (NAMES - 387)) | (1L << (NATIONAL - 387)) | (1L << (NCHAR - 387)) | (1L << (NDBCLUSTER - 387)))) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & ((1L << (NESTED - 451)) | (1L << (NETWORK_NAMESPACE - 451)) | (1L << (NEVER - 451)) | (1L << (NEW - 451)) | (1L << (NEXT - 451)) | (1L << (NO - 451)) | (1L << (NODEGROUP - 451)) | (1L << (NONE - 451)) | (1L << (NOT - 451)) | (1L << (NOWAIT - 451)) | (1L << (NO_WAIT - 451)) | (1L << (NTH_VALUE - 451)) | (1L << (NTILE - 451)) | (1L << (NULL - 451)) | (1L << (NULLS - 451)) | (1L << (NUMBER - 451)) | (1L << (NVARCHAR - 451)) | (1L << (OFF - 451)) | (1L << (OFFSET - 451)) | (1L << (OJ - 451)) | (1L << (OLD - 451)) | (1L << (ONE - 451)) | (1L << (ONLY - 451)) | (1L << (OPEN - 451)) | (1L << (OPTIONAL - 451)) | (1L << (OPTIONS - 451)) | (1L << (ORDINALITY - 451)) | (1L << (ORGANIZATION - 451)) | (1L << (OTHERS - 451)) | (1L << (OWNER - 451)) | (1L << (PACK_KEYS - 451)) | (1L << (PAGE - 451)) | (1L << (PARSER - 451)) | (1L << (PARTIAL - 451)) | (1L << (PARTITIONING - 451)) | (1L << (PARTITIONS - 451)) | (1L << (PASSWORD - 451)) | (1L << (PASSWORD_LOCK_TIME - 451)) | (1L << (PATH - 451)) | (1L << (PERCENT_RANK - 451)) | (1L << (PERSIST - 451)) | (1L << (PERSIST_ONLY - 451)) | (1L << (PHASE - 451)) | (1L << (PLUGIN - 451)) | (1L << (PLUGINS - 451)) | (1L << (PLUGIN_DIR - 451)) | (1L << (POINT - 451)) | (1L << (POLYGON - 451)) | (1L << (PORT - 451)))) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & ((1L << (PRECEDES - 515)) | (1L << (PRECEDING - 515)) | (1L << (PREPARE - 515)) | (1L << (PRESERVE - 515)) | (1L << (PREV - 515)) | (1L << (PRIMARY - 515)) | (1L << (PRIVILEGES - 515)) | (1L << (PRIVILEGE_CHECKS_USER - 515)) | (1L << (PROCESS - 515)) | (1L << (PROCESSLIST - 515)) | (1L << (PROFILE - 515)) | (1L << (PROFILES - 515)) | (1L << (PROXY - 515)) | (1L << (QUARTER - 515)) | (1L << (QUERY - 515)) | (1L << (QUICK - 515)) | (1L << (RANDOM - 515)) | (1L << (RANK - 515)) | (1L << (READ_ONLY - 515)) | (1L << (REBUILD - 515)) | (1L << (RECOVER - 515)) | (1L << (REDO_BUFFER_SIZE - 515)) | (1L << (REDUNDANT - 515)) | (1L << (REFERENCE - 515)) | (1L << (RELAY - 515)) | (1L << (RELAYLOG - 515)) | (1L << (RELAY_LOG_FILE - 515)) | (1L << (RELAY_LOG_POS - 515)) | (1L << (RELAY_THREAD - 515)) | (1L << (RELOAD - 515)) | (1L << (REMOVE - 515)) | (1L << (REORGANIZE - 515)) | (1L << (REPAIR - 515)) | (1L << (REPEAT - 515)) | (1L << (REPEATABLE - 515)) | (1L << (REPLACE - 515)) | (1L << (REPLICATE_DO_DB - 515)) | (1L << (REPLICATE_DO_TABLE - 515)) | (1L << (REPLICATE_IGNORE_DB - 515)) | (1L << (REPLICATE_IGNORE_TABLE - 515)) | (1L << (REPLICATE_REWRITE_DB - 515)) | (1L << (REPLICATE_WILD_DO_TABLE - 515)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 515)) | (1L << (REPLICATION - 515)) | (1L << (REQUIRE_ROW_FORMAT - 515)) | (1L << (RESET - 515)) | (1L << (RESOURCE - 515)))) != 0) || ((((_la - 579)) & ~0x3f) == 0 && ((1L << (_la - 579)) & ((1L << (RESPECT - 579)) | (1L << (RESTART - 579)) | (1L << (RESTORE - 579)) | (1L << (RESUME - 579)) | (1L << (RETAIN - 579)) | (1L << (RETURNED_SQLSTATE - 579)) | (1L << (RETURNING - 579)) | (1L << (RETURNS - 579)) | (1L << (REUSE - 579)) | (1L << (REVERSE - 579)) | (1L << (RIGHT - 579)) | (1L << (ROLE - 579)) | (1L << (ROLLBACK - 579)) | (1L << (ROLLUP - 579)) | (1L << (ROTATE - 579)) | (1L << (ROUTINE - 579)) | (1L << (ROW - 579)) | (1L << (ROW_COUNT - 579)) | (1L << (ROW_FORMAT - 579)) | (1L << (ROW_NUMBER - 579)) | (1L << (RTREE - 579)) | (1L << (SAVEPOINT - 579)) | (1L << (SCHEDULE - 579)) | (1L << (SCHEMA - 579)) | (1L << (SCHEMA_NAME - 579)) | (1L << (SECOND - 579)) | (1L << (SECONDARY - 579)) | (1L << (SECONDARY_ENGINE - 579)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 579)) | (1L << (SECONDARY_LOAD - 579)) | (1L << (SECONDARY_UNLOAD - 579)) | (1L << (SECURITY - 579)) | (1L << (SERIAL - 579)) | (1L << (SERIALIZABLE - 579)) | (1L << (SERVER - 579)) | (1L << (SESSION - 579)) | (1L << (SHARE - 579)) | (1L << (SHUTDOWN - 579)) | (1L << (SIGNED - 579)) | (1L << (SIMPLE - 579)) | (1L << (SLAVE - 579)) | (1L << (SLOW - 579)) | (1L << (SNAPSHOT - 579)) | (1L << (SOCKET - 579)) | (1L << (SONAME - 579)) | (1L << (SOUNDS - 579)) | (1L << (SOURCE - 579)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (SQL_AFTER_GTIDS - 647)) | (1L << (SQL_AFTER_MTS_GAPS - 647)) | (1L << (SQL_BEFORE_GTIDS - 647)) | (1L << (SQL_BUFFER_RESULT - 647)) | (1L << (SQL_NO_CACHE - 647)) | (1L << (SQL_THREAD - 647)) | (1L << (SRID - 647)) | (1L << (STACKED - 647)) | (1L << (START - 647)) | (1L << (STARTS - 647)) | (1L << (STATS_AUTO_RECALC - 647)) | (1L << (STATS_PERSISTENT - 647)) | (1L << (STATS_SAMPLE_PAGES - 647)) | (1L << (STATUS - 647)) | (1L << (STOP - 647)) | (1L << (STORAGE - 647)) | (1L << (STREAM - 647)) | (1L << (STRING - 647)) | (1L << (SUBCLASS_ORIGIN - 647)) | (1L << (SUBJECT - 647)) | (1L << (SUBPARTITION - 647)) | (1L << (SUBPARTITIONS - 647)) | (1L << (SUPER - 647)) | (1L << (SUSPEND - 647)) | (1L << (SWAPS - 647)) | (1L << (SWITCHES - 647)) | (1L << (TABLES - 647)) | (1L << (TABLESPACE - 647)) | (1L << (TABLE_CHECKSUM - 647)) | (1L << (TABLE_NAME - 647)) | (1L << (TEMPORARY - 647)) | (1L << (TEMPTABLE - 647)) | (1L << (TEXT - 647)) | (1L << (THAN - 647)) | (1L << (THREAD_PRIORITY - 647)) | (1L << (TIES - 647)) | (1L << (TIME - 647)) | (1L << (TIMESTAMP - 647)) | (1L << (TIMESTAMP_ADD - 647)) | (1L << (TIMESTAMP_DIFF - 647)) | (1L << (TLS - 647)) | (1L << (TRANSACTION - 647)) | (1L << (TRIGGERS - 647)) | (1L << (TRUE - 647)) | (1L << (TRUNCATE - 647)) | (1L << (TYPE - 647)) | (1L << (TYPES - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (UNBOUNDED - 711)) | (1L << (UNCOMMITTED - 711)) | (1L << (UNDEFINED - 711)) | (1L << (UNDOFILE - 711)) | (1L << (UNDO_BUFFER_SIZE - 711)) | (1L << (UNICODE - 711)) | (1L << (UNINSTALL - 711)) | (1L << (UNKNOWN - 711)) | (1L << (UNTIL - 711)) | (1L << (UPGRADE - 711)) | (1L << (USER - 711)) | (1L << (USER_RESOURCES - 711)) | (1L << (USE_FRM - 711)) | (1L << (UTC_DATE - 711)) | (1L << (UTC_TIME - 711)) | (1L << (UTC_TIMESTAMP - 711)) | (1L << (VALIDATION - 711)) | (1L << (VALUE - 711)) | (1L << (VALUES - 711)) | (1L << (VARIABLES - 711)) | (1L << (VCPU - 711)) | (1L << (VIEW - 711)) | (1L << (VISIBLE - 711)) | (1L << (WAIT - 711)) | (1L << (WARNINGS - 711)) | (1L << (WEEK - 711)) | (1L << (WEIGHT_STRING - 711)) | (1L << (WITHOUT - 711)) | (1L << (WORK - 711)) | (1L << (WRAPPER - 711)) | (1L << (X509 - 711)) | (1L << (XA - 711)) | (1L << (XID - 711)) | (1L << (XML - 711)) | (1L << (YEAR - 711)) | (1L << (JSON_ARRAY - 711)) | (1L << (JSON_ARRAY_APPEND - 711)) | (1L << (JSON_ARRAY_INSERT - 711)) | (1L << (JSON_CONTAINS - 711)) | (1L << (JSON_CONTAINS_PATH - 711)) | (1L << (JSON_DEPTH - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (JSON_EXTRACT - 775)) | (1L << (JSON_INSERT - 775)) | (1L << (JSON_KEYS - 775)) | (1L << (JSON_LENGTH - 775)) | (1L << (JSON_MERGE - 775)) | (1L << (JSON_MERGE_PATCH - 775)) | (1L << (JSON_MERGE_PRESERVE - 775)) | (1L << (JSON_OBJECT - 775)) | (1L << (JSON_OVERLAPS - 775)) | (1L << (JSON_PRETTY - 775)) | (1L << (JSON_QUOTE - 775)) | (1L << (JSON_REMOVE - 775)) | (1L << (JSON_REPLACE - 775)) | (1L << (JSON_SCHEMA_VALID - 775)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 775)) | (1L << (JSON_SEARCH - 775)) | (1L << (JSON_SET - 775)) | (1L << (JSON_STORAGE_FREE - 775)) | (1L << (JSON_STORAGE_SIZE - 775)) | (1L << (JSON_TYPE - 775)) | (1L << (JSON_UNQUOTE - 775)) | (1L << (JSON_VALID - 775)) | (1L << (SINGLE_QUOTED_TEXT - 775)) | (1L << (DOUBLE_QUOTED_TEXT - 775)) | (1L << (NCHAR_TEXT - 775)) | (1L << (UNDERSCORE_CHARSET - 775)) | (1L << (NUMBER_ - 775)) | (1L << (HEX_DIGIT_ - 775)) | (1L << (BIT_NUM_ - 775)) | (1L << (IDENTIFIER_ - 775)))) != 0)) {
				{
				setState(3264);
				expr(0);
				}
			}

			setState(3275); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(3267);
				match(WHEN);
				setState(3268);
				expr(0);
				setState(3269);
				match(THEN);
				setState(3271); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3270);
						validStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3273); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,344,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				}
				setState(3277); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==WHEN );
			setState(3285);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(3279);
				match(ELSE);
				setState(3281); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3280);
						validStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3283); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,346,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
			}

			setState(3287);
			match(END);
			setState(3288);
			match(CASE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfStatementContext extends ParserRuleContext {
		public List IF() { return getTokens(MySQLStatementParser.IF); }
		public TerminalNode IF(int i) {
			return getToken(MySQLStatementParser.IF, i);
		}
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public List THEN() { return getTokens(MySQLStatementParser.THEN); }
		public TerminalNode THEN(int i) {
			return getToken(MySQLStatementParser.THEN, i);
		}
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public List validStatement() {
			return getRuleContexts(ValidStatementContext.class);
		}
		public ValidStatementContext validStatement(int i) {
			return getRuleContext(ValidStatementContext.class,i);
		}
		public List ELSEIF() { return getTokens(MySQLStatementParser.ELSEIF); }
		public TerminalNode ELSEIF(int i) {
			return getToken(MySQLStatementParser.ELSEIF, i);
		}
		public TerminalNode ELSE() { return getToken(MySQLStatementParser.ELSE, 0); }
		public IfStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIfStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfStatementContext ifStatement() throws RecognitionException {
		IfStatementContext _localctx = new IfStatementContext(_ctx, getState());
		enterRule(_localctx, 236, RULE_ifStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3290);
			match(IF);
			setState(3291);
			expr(0);
			setState(3292);
			match(THEN);
			setState(3294); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(3293);
					validStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3296); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,348,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(3308);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==ELSEIF) {
				{
				{
				setState(3298);
				match(ELSEIF);
				setState(3299);
				expr(0);
				setState(3300);
				match(THEN);
				setState(3302); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3301);
						validStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3304); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,349,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				}
				setState(3310);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3317);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(3311);
				match(ELSE);
				setState(3313); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						{
						setState(3312);
						validStatement();
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(3315); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,351,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
			}

			setState(3319);
			match(END);
			setState(3320);
			match(IF);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IterateStatementContext extends ParserRuleContext {
		public TerminalNode ITERATE() { return getToken(MySQLStatementParser.ITERATE, 0); }
		public LabelNameContext labelName() {
			return getRuleContext(LabelNameContext.class,0);
		}
		public IterateStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_iterateStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIterateStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IterateStatementContext iterateStatement() throws RecognitionException {
		IterateStatementContext _localctx = new IterateStatementContext(_ctx, getState());
		enterRule(_localctx, 238, RULE_iterateStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3322);
			match(ITERATE);
			setState(3323);
			labelName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LeaveStatementContext extends ParserRuleContext {
		public TerminalNode LEAVE() { return getToken(MySQLStatementParser.LEAVE, 0); }
		public LabelNameContext labelName() {
			return getRuleContext(LabelNameContext.class,0);
		}
		public LeaveStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_leaveStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLeaveStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LeaveStatementContext leaveStatement() throws RecognitionException {
		LeaveStatementContext _localctx = new LeaveStatementContext(_ctx, getState());
		enterRule(_localctx, 240, RULE_leaveStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3325);
			match(LEAVE);
			setState(3326);
			labelName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoopStatementContext extends ParserRuleContext {
		public List LOOP() { return getTokens(MySQLStatementParser.LOOP); }
		public TerminalNode LOOP(int i) {
			return getToken(MySQLStatementParser.LOOP, i);
		}
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public List labelName() {
			return getRuleContexts(LabelNameContext.class);
		}
		public LabelNameContext labelName(int i) {
			return getRuleContext(LabelNameContext.class,i);
		}
		public TerminalNode COLON_() { return getToken(MySQLStatementParser.COLON_, 0); }
		public List validStatement() {
			return getRuleContexts(ValidStatementContext.class);
		}
		public ValidStatementContext validStatement(int i) {
			return getRuleContext(ValidStatementContext.class,i);
		}
		public LoopStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loopStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLoopStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoopStatementContext loopStatement() throws RecognitionException {
		LoopStatementContext _localctx = new LoopStatementContext(_ctx, getState());
		enterRule(_localctx, 242, RULE_loopStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3331);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(3328);
				labelName();
				setState(3329);
				match(COLON_);
				}
			}

			setState(3333);
			match(LOOP);
			setState(3335); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(3334);
					validStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3337); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,354,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(3339);
			match(END);
			setState(3340);
			match(LOOP);
			setState(3342);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,355,_ctx) ) {
			case 1:
				{
				setState(3341);
				labelName();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepeatStatementContext extends ParserRuleContext {
		public List REPEAT() { return getTokens(MySQLStatementParser.REPEAT); }
		public TerminalNode REPEAT(int i) {
			return getToken(MySQLStatementParser.REPEAT, i);
		}
		public TerminalNode UNTIL() { return getToken(MySQLStatementParser.UNTIL, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public List labelName() {
			return getRuleContexts(LabelNameContext.class);
		}
		public LabelNameContext labelName(int i) {
			return getRuleContext(LabelNameContext.class,i);
		}
		public TerminalNode COLON_() { return getToken(MySQLStatementParser.COLON_, 0); }
		public List validStatement() {
			return getRuleContexts(ValidStatementContext.class);
		}
		public ValidStatementContext validStatement(int i) {
			return getRuleContext(ValidStatementContext.class,i);
		}
		public RepeatStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repeatStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRepeatStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RepeatStatementContext repeatStatement() throws RecognitionException {
		RepeatStatementContext _localctx = new RepeatStatementContext(_ctx, getState());
		enterRule(_localctx, 244, RULE_repeatStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3347);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(3344);
				labelName();
				setState(3345);
				match(COLON_);
				}
			}

			setState(3349);
			match(REPEAT);
			setState(3351); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(3350);
					validStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3353); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,357,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(3355);
			match(UNTIL);
			setState(3356);
			expr(0);
			setState(3357);
			match(END);
			setState(3358);
			match(REPEAT);
			setState(3360);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,358,_ctx) ) {
			case 1:
				{
				setState(3359);
				labelName();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReturnStatementContext extends ParserRuleContext {
		public TerminalNode RETURN() { return getToken(MySQLStatementParser.RETURN, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public ReturnStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_returnStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReturnStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReturnStatementContext returnStatement() throws RecognitionException {
		ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState());
		enterRule(_localctx, 246, RULE_returnStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3362);
			match(RETURN);
			setState(3363);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhileStatementContext extends ParserRuleContext {
		public List WHILE() { return getTokens(MySQLStatementParser.WHILE); }
		public TerminalNode WHILE(int i) {
			return getToken(MySQLStatementParser.WHILE, i);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode DO() { return getToken(MySQLStatementParser.DO, 0); }
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public List labelName() {
			return getRuleContexts(LabelNameContext.class);
		}
		public LabelNameContext labelName(int i) {
			return getRuleContext(LabelNameContext.class,i);
		}
		public TerminalNode COLON_() { return getToken(MySQLStatementParser.COLON_, 0); }
		public List validStatement() {
			return getRuleContexts(ValidStatementContext.class);
		}
		public ValidStatementContext validStatement(int i) {
			return getRuleContext(ValidStatementContext.class,i);
		}
		public WhileStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whileStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWhileStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhileStatementContext whileStatement() throws RecognitionException {
		WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState());
		enterRule(_localctx, 248, RULE_whileStatement);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3368);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(3365);
				labelName();
				setState(3366);
				match(COLON_);
				}
			}

			setState(3370);
			match(WHILE);
			setState(3371);
			expr(0);
			setState(3372);
			match(DO);
			setState(3374); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(3373);
					validStatement();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(3376); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,360,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			setState(3378);
			match(END);
			setState(3379);
			match(WHILE);
			setState(3381);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,361,_ctx) ) {
			case 1:
				{
				setState(3380);
				labelName();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorStatementContext extends ParserRuleContext {
		public CursorCloseStatementContext cursorCloseStatement() {
			return getRuleContext(CursorCloseStatementContext.class,0);
		}
		public CursorDeclareStatementContext cursorDeclareStatement() {
			return getRuleContext(CursorDeclareStatementContext.class,0);
		}
		public CursorFetchStatementContext cursorFetchStatement() {
			return getRuleContext(CursorFetchStatementContext.class,0);
		}
		public CursorOpenStatementContext cursorOpenStatement() {
			return getRuleContext(CursorOpenStatementContext.class,0);
		}
		public CursorStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCursorStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorStatementContext cursorStatement() throws RecognitionException {
		CursorStatementContext _localctx = new CursorStatementContext(_ctx, getState());
		enterRule(_localctx, 250, RULE_cursorStatement);
		try {
			setState(3387);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CLOSE:
				enterOuterAlt(_localctx, 1);
				{
				setState(3383);
				cursorCloseStatement();
				}
				break;
			case DECLARE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3384);
				cursorDeclareStatement();
				}
				break;
			case FETCH:
				enterOuterAlt(_localctx, 3);
				{
				setState(3385);
				cursorFetchStatement();
				}
				break;
			case OPEN:
				enterOuterAlt(_localctx, 4);
				{
				setState(3386);
				cursorOpenStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorCloseStatementContext extends ParserRuleContext {
		public TerminalNode CLOSE() { return getToken(MySQLStatementParser.CLOSE, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public CursorCloseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorCloseStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCursorCloseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorCloseStatementContext cursorCloseStatement() throws RecognitionException {
		CursorCloseStatementContext _localctx = new CursorCloseStatementContext(_ctx, getState());
		enterRule(_localctx, 252, RULE_cursorCloseStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3389);
			match(CLOSE);
			setState(3390);
			cursorName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorDeclareStatementContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySQLStatementParser.DECLARE, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public TerminalNode CURSOR() { return getToken(MySQLStatementParser.CURSOR, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public CursorDeclareStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorDeclareStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCursorDeclareStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorDeclareStatementContext cursorDeclareStatement() throws RecognitionException {
		CursorDeclareStatementContext _localctx = new CursorDeclareStatementContext(_ctx, getState());
		enterRule(_localctx, 254, RULE_cursorDeclareStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3392);
			match(DECLARE);
			setState(3393);
			cursorName();
			setState(3394);
			match(CURSOR);
			setState(3395);
			match(FOR);
			setState(3396);
			select();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorFetchStatementContext extends ParserRuleContext {
		public TerminalNode FETCH() { return getToken(MySQLStatementParser.FETCH, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public List variable() {
			return getRuleContexts(VariableContext.class);
		}
		public VariableContext variable(int i) {
			return getRuleContext(VariableContext.class,i);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode NEXT() { return getToken(MySQLStatementParser.NEXT, 0); }
		public CursorFetchStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorFetchStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCursorFetchStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorFetchStatementContext cursorFetchStatement() throws RecognitionException {
		CursorFetchStatementContext _localctx = new CursorFetchStatementContext(_ctx, getState());
		enterRule(_localctx, 256, RULE_cursorFetchStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3398);
			match(FETCH);
			setState(3403);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,364,_ctx) ) {
			case 1:
				{
				setState(3400);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NEXT) {
					{
					setState(3399);
					match(NEXT);
					}
				}

				setState(3402);
				match(FROM);
				}
				break;
			}
			setState(3405);
			cursorName();
			setState(3406);
			match(INTO);
			setState(3407);
			variable();
			setState(3412);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3408);
				match(COMMA_);
				setState(3409);
				variable();
				}
				}
				setState(3414);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorOpenStatementContext extends ParserRuleContext {
		public TerminalNode OPEN() { return getToken(MySQLStatementParser.OPEN, 0); }
		public CursorNameContext cursorName() {
			return getRuleContext(CursorNameContext.class,0);
		}
		public CursorOpenStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorOpenStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCursorOpenStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorOpenStatementContext cursorOpenStatement() throws RecognitionException {
		CursorOpenStatementContext _localctx = new CursorOpenStatementContext(_ctx, getState());
		enterRule(_localctx, 258, RULE_cursorOpenStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3415);
			match(OPEN);
			setState(3416);
			cursorName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConditionHandlingStatementContext extends ParserRuleContext {
		public DeclareConditionStatementContext declareConditionStatement() {
			return getRuleContext(DeclareConditionStatementContext.class,0);
		}
		public DeclareHandlerStatementContext declareHandlerStatement() {
			return getRuleContext(DeclareHandlerStatementContext.class,0);
		}
		public GetDiagnosticsStatementContext getDiagnosticsStatement() {
			return getRuleContext(GetDiagnosticsStatementContext.class,0);
		}
		public ResignalStatementContext resignalStatement() {
			return getRuleContext(ResignalStatementContext.class,0);
		}
		public SignalStatementContext signalStatement() {
			return getRuleContext(SignalStatementContext.class,0);
		}
		public ConditionHandlingStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conditionHandlingStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConditionHandlingStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConditionHandlingStatementContext conditionHandlingStatement() throws RecognitionException {
		ConditionHandlingStatementContext _localctx = new ConditionHandlingStatementContext(_ctx, getState());
		enterRule(_localctx, 260, RULE_conditionHandlingStatement);
		try {
			setState(3423);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,366,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3418);
				declareConditionStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3419);
				declareHandlerStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3420);
				getDiagnosticsStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3421);
				resignalStatement();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(3422);
				signalStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareConditionStatementContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySQLStatementParser.DECLARE, 0); }
		public ConditionNameContext conditionName() {
			return getRuleContext(ConditionNameContext.class,0);
		}
		public TerminalNode CONDITION() { return getToken(MySQLStatementParser.CONDITION, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public ConditionValueContext conditionValue() {
			return getRuleContext(ConditionValueContext.class,0);
		}
		public DeclareConditionStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareConditionStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDeclareConditionStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareConditionStatementContext declareConditionStatement() throws RecognitionException {
		DeclareConditionStatementContext _localctx = new DeclareConditionStatementContext(_ctx, getState());
		enterRule(_localctx, 262, RULE_declareConditionStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3425);
			match(DECLARE);
			setState(3426);
			conditionName();
			setState(3427);
			match(CONDITION);
			setState(3428);
			match(FOR);
			setState(3429);
			conditionValue();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeclareHandlerStatementContext extends ParserRuleContext {
		public TerminalNode DECLARE() { return getToken(MySQLStatementParser.DECLARE, 0); }
		public HandlerActionContext handlerAction() {
			return getRuleContext(HandlerActionContext.class,0);
		}
		public TerminalNode HANDLER() { return getToken(MySQLStatementParser.HANDLER, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public List conditionValue() {
			return getRuleContexts(ConditionValueContext.class);
		}
		public ConditionValueContext conditionValue(int i) {
			return getRuleContext(ConditionValueContext.class,i);
		}
		public ValidStatementContext validStatement() {
			return getRuleContext(ValidStatementContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public DeclareHandlerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_declareHandlerStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDeclareHandlerStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeclareHandlerStatementContext declareHandlerStatement() throws RecognitionException {
		DeclareHandlerStatementContext _localctx = new DeclareHandlerStatementContext(_ctx, getState());
		enterRule(_localctx, 264, RULE_declareHandlerStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3431);
			match(DECLARE);
			setState(3432);
			handlerAction();
			setState(3433);
			match(HANDLER);
			setState(3434);
			match(FOR);
			setState(3435);
			conditionValue();
			setState(3440);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3436);
				match(COMMA_);
				setState(3437);
				conditionValue();
				}
				}
				setState(3442);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3443);
			validStatement();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GetDiagnosticsStatementContext extends ParserRuleContext {
		public TerminalNode GET() { return getToken(MySQLStatementParser.GET, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(MySQLStatementParser.DIAGNOSTICS, 0); }
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public TerminalNode STACKED() { return getToken(MySQLStatementParser.STACKED, 0); }
		public List statementInformationItem() {
			return getRuleContexts(StatementInformationItemContext.class);
		}
		public StatementInformationItemContext statementInformationItem(int i) {
			return getRuleContext(StatementInformationItemContext.class,i);
		}
		public TerminalNode CONDITION() { return getToken(MySQLStatementParser.CONDITION, 0); }
		public ConditionNumberContext conditionNumber() {
			return getRuleContext(ConditionNumberContext.class,0);
		}
		public List conditionInformationItem() {
			return getRuleContexts(ConditionInformationItemContext.class);
		}
		public ConditionInformationItemContext conditionInformationItem(int i) {
			return getRuleContext(ConditionInformationItemContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public GetDiagnosticsStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_getDiagnosticsStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGetDiagnosticsStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GetDiagnosticsStatementContext getDiagnosticsStatement() throws RecognitionException {
		GetDiagnosticsStatementContext _localctx = new GetDiagnosticsStatementContext(_ctx, getState());
		enterRule(_localctx, 266, RULE_getDiagnosticsStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3445);
			match(GET);
			setState(3447);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CURRENT || _la==STACKED) {
				{
				setState(3446);
				_la = _input.LA(1);
				if ( !(_la==CURRENT || _la==STACKED) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3449);
			match(DIAGNOSTICS);
			{
			setState(3468);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(3450);
				statementInformationItem();
				setState(3455);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3451);
					match(COMMA_);
					setState(3452);
					statementInformationItem();
					}
					}
					setState(3457);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case CONDITION:
				{
				{
				setState(3458);
				match(CONDITION);
				setState(3459);
				conditionNumber();
				setState(3460);
				conditionInformationItem();
				setState(3465);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3461);
					match(COMMA_);
					setState(3462);
					conditionInformationItem();
					}
					}
					setState(3467);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StatementInformationItemContext extends ParserRuleContext {
		public VariableContext variable() {
			return getRuleContext(VariableContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public StatementInformationItemNameContext statementInformationItemName() {
			return getRuleContext(StatementInformationItemNameContext.class,0);
		}
		public StatementInformationItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_statementInformationItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStatementInformationItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StatementInformationItemContext statementInformationItem() throws RecognitionException {
		StatementInformationItemContext _localctx = new StatementInformationItemContext(_ctx, getState());
		enterRule(_localctx, 268, RULE_statementInformationItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3470);
			variable();
			setState(3471);
			match(EQ_);
			setState(3472);
			statementInformationItemName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConditionInformationItemContext extends ParserRuleContext {
		public VariableContext variable() {
			return getRuleContext(VariableContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public ConditionInformationItemNameContext conditionInformationItemName() {
			return getRuleContext(ConditionInformationItemNameContext.class,0);
		}
		public ConditionInformationItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conditionInformationItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConditionInformationItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConditionInformationItemContext conditionInformationItem() throws RecognitionException {
		ConditionInformationItemContext _localctx = new ConditionInformationItemContext(_ctx, getState());
		enterRule(_localctx, 270, RULE_conditionInformationItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3474);
			variable();
			setState(3475);
			match(EQ_);
			setState(3476);
			conditionInformationItemName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConditionNumberContext extends ParserRuleContext {
		public VariableContext variable() {
			return getRuleContext(VariableContext.class,0);
		}
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public ConditionNumberContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conditionNumber; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConditionNumber(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConditionNumberContext conditionNumber() throws RecognitionException {
		ConditionNumberContext _localctx = new ConditionNumberContext(_ctx, getState());
		enterRule(_localctx, 272, RULE_conditionNumber);
		try {
			setState(3480);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3478);
				variable();
				}
				break;
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(3479);
				numberLiterals();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StatementInformationItemNameContext extends ParserRuleContext {
		public TerminalNode NUMBER() { return getToken(MySQLStatementParser.NUMBER, 0); }
		public TerminalNode ROW_COUNT() { return getToken(MySQLStatementParser.ROW_COUNT, 0); }
		public StatementInformationItemNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_statementInformationItemName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStatementInformationItemName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StatementInformationItemNameContext statementInformationItemName() throws RecognitionException {
		StatementInformationItemNameContext _localctx = new StatementInformationItemNameContext(_ctx, getState());
		enterRule(_localctx, 274, RULE_statementInformationItemName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3482);
			_la = _input.LA(1);
			if ( !(_la==NUMBER || _la==ROW_COUNT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConditionInformationItemNameContext extends ParserRuleContext {
		public TerminalNode CLASS_ORIGIN() { return getToken(MySQLStatementParser.CLASS_ORIGIN, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySQLStatementParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode RETURNED_SQLSTATE() { return getToken(MySQLStatementParser.RETURNED_SQLSTATE, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySQLStatementParser.MESSAGE_TEXT, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySQLStatementParser.MYSQL_ERRNO, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySQLStatementParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySQLStatementParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySQLStatementParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySQLStatementParser.CATALOG_NAME, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySQLStatementParser.SCHEMA_NAME, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySQLStatementParser.TABLE_NAME, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySQLStatementParser.COLUMN_NAME, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySQLStatementParser.CURSOR_NAME, 0); }
		public ConditionInformationItemNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conditionInformationItemName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConditionInformationItemName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConditionInformationItemNameContext conditionInformationItemName() throws RecognitionException {
		ConditionInformationItemNameContext _localctx = new ConditionInformationItemNameContext(_ctx, getState());
		enterRule(_localctx, 276, RULE_conditionInformationItemName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3484);
			_la = _input.LA(1);
			if ( !(((((_la - 124)) & ~0x3f) == 0 && ((1L << (_la - 124)) & ((1L << (CATALOG_NAME - 124)) | (1L << (CLASS_ORIGIN - 124)) | (1L << (COLUMN_NAME - 124)) | (1L << (CONSTRAINT_CATALOG - 124)) | (1L << (CONSTRAINT_NAME - 124)) | (1L << (CONSTRAINT_SCHEMA - 124)) | (1L << (CURSOR_NAME - 124)))) != 0) || _la==MESSAGE_TEXT || _la==MYSQL_ERRNO || _la==RETURNED_SQLSTATE || _la==SCHEMA_NAME || _la==SUBCLASS_ORIGIN || _la==TABLE_NAME) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerActionContext extends ParserRuleContext {
		public TerminalNode CONTINUE() { return getToken(MySQLStatementParser.CONTINUE, 0); }
		public TerminalNode EXIT() { return getToken(MySQLStatementParser.EXIT, 0); }
		public TerminalNode UNDO() { return getToken(MySQLStatementParser.UNDO, 0); }
		public HandlerActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHandlerAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerActionContext handlerAction() throws RecognitionException {
		HandlerActionContext _localctx = new HandlerActionContext(_ctx, getState());
		enterRule(_localctx, 278, RULE_handlerAction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3486);
			_la = _input.LA(1);
			if ( !(_la==CONTINUE || _la==EXIT || _la==UNDO) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConditionValueContext extends ParserRuleContext {
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public TerminalNode SQLSTATE() { return getToken(MySQLStatementParser.SQLSTATE, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public TerminalNode VALUE() { return getToken(MySQLStatementParser.VALUE, 0); }
		public ConditionNameContext conditionName() {
			return getRuleContext(ConditionNameContext.class,0);
		}
		public TerminalNode SQLWARNING() { return getToken(MySQLStatementParser.SQLWARNING, 0); }
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode FOUND() { return getToken(MySQLStatementParser.FOUND, 0); }
		public TerminalNode SQLEXCEPTION() { return getToken(MySQLStatementParser.SQLEXCEPTION, 0); }
		public ConditionValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conditionValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConditionValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConditionValueContext conditionValue() throws RecognitionException {
		ConditionValueContext _localctx = new ConditionValueContext(_ctx, getState());
		enterRule(_localctx, 280, RULE_conditionValue);
		int _la;
		try {
			setState(3499);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3488);
				numberLiterals();
				}
				break;
			case SQLSTATE:
				enterOuterAlt(_localctx, 2);
				{
				setState(3489);
				match(SQLSTATE);
				setState(3491);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==VALUE) {
					{
					setState(3490);
					match(VALUE);
					}
				}

				setState(3493);
				stringLiterals();
				}
				break;
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 3);
				{
				setState(3494);
				conditionName();
				}
				break;
			case SQLWARNING:
				enterOuterAlt(_localctx, 4);
				{
				setState(3495);
				match(SQLWARNING);
				}
				break;
			case NOT:
				enterOuterAlt(_localctx, 5);
				{
				setState(3496);
				match(NOT);
				setState(3497);
				match(FOUND);
				}
				break;
			case SQLEXCEPTION:
				enterOuterAlt(_localctx, 6);
				{
				setState(3498);
				match(SQLEXCEPTION);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResignalStatementContext extends ParserRuleContext {
		public TerminalNode RESIGNAL() { return getToken(MySQLStatementParser.RESIGNAL, 0); }
		public ConditionValueContext conditionValue() {
			return getRuleContext(ConditionValueContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public List signalInformationItem() {
			return getRuleContexts(SignalInformationItemContext.class);
		}
		public SignalInformationItemContext signalInformationItem(int i) {
			return getRuleContext(SignalInformationItemContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ResignalStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resignalStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitResignalStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResignalStatementContext resignalStatement() throws RecognitionException {
		ResignalStatementContext _localctx = new ResignalStatementContext(_ctx, getState());
		enterRule(_localctx, 282, RULE_resignalStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3501);
			match(RESIGNAL);
			setState(3503);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,375,_ctx) ) {
			case 1:
				{
				setState(3502);
				conditionValue();
				}
				break;
			}
			setState(3514);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,377,_ctx) ) {
			case 1:
				{
				setState(3505);
				match(SET);
				setState(3506);
				signalInformationItem();
				setState(3511);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3507);
					match(COMMA_);
					setState(3508);
					signalInformationItem();
					}
					}
					setState(3513);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignalStatementContext extends ParserRuleContext {
		public TerminalNode SIGNAL() { return getToken(MySQLStatementParser.SIGNAL, 0); }
		public ConditionValueContext conditionValue() {
			return getRuleContext(ConditionValueContext.class,0);
		}
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public List signalInformationItem() {
			return getRuleContexts(SignalInformationItemContext.class);
		}
		public SignalInformationItemContext signalInformationItem(int i) {
			return getRuleContext(SignalInformationItemContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SignalStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signalStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSignalStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SignalStatementContext signalStatement() throws RecognitionException {
		SignalStatementContext _localctx = new SignalStatementContext(_ctx, getState());
		enterRule(_localctx, 284, RULE_signalStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3516);
			match(SIGNAL);
			setState(3517);
			conditionValue();
			setState(3527);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,379,_ctx) ) {
			case 1:
				{
				setState(3518);
				match(SET);
				setState(3519);
				signalInformationItem();
				setState(3524);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3520);
					match(COMMA_);
					setState(3521);
					signalInformationItem();
					}
					}
					setState(3526);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SignalInformationItemContext extends ParserRuleContext {
		public ConditionInformationItemNameContext conditionInformationItemName() {
			return getRuleContext(ConditionInformationItemNameContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public SignalInformationItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_signalInformationItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSignalInformationItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SignalInformationItemContext signalInformationItem() throws RecognitionException {
		SignalInformationItemContext _localctx = new SignalInformationItemContext(_ctx, getState());
		enterRule(_localctx, 286, RULE_signalInformationItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3529);
			conditionInformationItemName();
			setState(3530);
			match(EQ_);
			setState(3531);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrepareContext extends ParserRuleContext {
		public TerminalNode PREPARE() { return getToken(MySQLStatementParser.PREPARE, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public UserVariableContext userVariable() {
			return getRuleContext(UserVariableContext.class,0);
		}
		public PrepareContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_prepare; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPrepare(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrepareContext prepare() throws RecognitionException {
		PrepareContext _localctx = new PrepareContext(_ctx, getState());
		enterRule(_localctx, 288, RULE_prepare);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3533);
			match(PREPARE);
			setState(3534);
			identifier();
			setState(3535);
			match(FROM);
			setState(3538);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,380,_ctx) ) {
			case 1:
				{
				setState(3536);
				stringLiterals();
				}
				break;
			case 2:
				{
				setState(3537);
				userVariable();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExecuteStmtContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(MySQLStatementParser.EXECUTE, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public ExecuteVarListContext executeVarList() {
			return getRuleContext(ExecuteVarListContext.class,0);
		}
		public ExecuteStmtContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_executeStmt; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExecuteStmt(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteStmtContext executeStmt() throws RecognitionException {
		ExecuteStmtContext _localctx = new ExecuteStmtContext(_ctx, getState());
		enterRule(_localctx, 290, RULE_executeStmt);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3540);
			match(EXECUTE);
			setState(3541);
			identifier();
			setState(3544);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(3542);
				match(USING);
				setState(3543);
				executeVarList();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExecuteVarListContext extends ParserRuleContext {
		public List userVariable() {
			return getRuleContexts(UserVariableContext.class);
		}
		public UserVariableContext userVariable(int i) {
			return getRuleContext(UserVariableContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ExecuteVarListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_executeVarList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExecuteVarList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExecuteVarListContext executeVarList() throws RecognitionException {
		ExecuteVarListContext _localctx = new ExecuteVarListContext(_ctx, getState());
		enterRule(_localctx, 292, RULE_executeVarList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3546);
			userVariable();
			setState(3551);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3547);
				match(COMMA_);
				setState(3548);
				userVariable();
				}
				}
				setState(3553);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeallocateContext extends ParserRuleContext {
		public TerminalNode PREPARE() { return getToken(MySQLStatementParser.PREPARE, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode DEALLOCATE() { return getToken(MySQLStatementParser.DEALLOCATE, 0); }
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public DeallocateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deallocate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDeallocate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeallocateContext deallocate() throws RecognitionException {
		DeallocateContext _localctx = new DeallocateContext(_ctx, getState());
		enterRule(_localctx, 294, RULE_deallocate);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3554);
			_la = _input.LA(1);
			if ( !(_la==DEALLOCATE || _la==DROP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3555);
			match(PREPARE);
			setState(3556);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(MySQLStatementParser.INSERT, 0); }
		public InsertSpecificationContext insertSpecification() {
			return getRuleContext(InsertSpecificationContext.class,0);
		}
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public InsertValuesClauseContext insertValuesClause() {
			return getRuleContext(InsertValuesClauseContext.class,0);
		}
		public SetAssignmentsClauseContext setAssignmentsClause() {
			return getRuleContext(SetAssignmentsClauseContext.class,0);
		}
		public InsertSelectClauseContext insertSelectClause() {
			return getRuleContext(InsertSelectClauseContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public PartitionNamesContext partitionNames() {
			return getRuleContext(PartitionNamesContext.class,0);
		}
		public OnDuplicateKeyClauseContext onDuplicateKeyClause() {
			return getRuleContext(OnDuplicateKeyClauseContext.class,0);
		}
		public InsertContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insert; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInsert(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertContext insert() throws RecognitionException {
		InsertContext _localctx = new InsertContext(_ctx, getState());
		enterRule(_localctx, 296, RULE_insert);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3558);
			match(INSERT);
			setState(3559);
			insertSpecification();
			setState(3561);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(3560);
				match(INTO);
				}
			}

			setState(3563);
			tableName();
			setState(3565);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3564);
				partitionNames();
				}
			}

			setState(3570);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,385,_ctx) ) {
			case 1:
				{
				setState(3567);
				insertValuesClause();
				}
				break;
			case 2:
				{
				setState(3568);
				setAssignmentsClause();
				}
				break;
			case 3:
				{
				setState(3569);
				insertSelectClause();
				}
				break;
			}
			setState(3573);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ON) {
				{
				setState(3572);
				onDuplicateKeyClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertSpecificationContext extends ParserRuleContext {
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public TerminalNode DELAYED() { return getToken(MySQLStatementParser.DELAYED, 0); }
		public TerminalNode HIGH_PRIORITY() { return getToken(MySQLStatementParser.HIGH_PRIORITY, 0); }
		public InsertSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInsertSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertSpecificationContext insertSpecification() throws RecognitionException {
		InsertSpecificationContext _localctx = new InsertSpecificationContext(_ctx, getState());
		enterRule(_localctx, 298, RULE_insertSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3576);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DELAYED || _la==HIGH_PRIORITY || _la==LOW_PRIORITY) {
				{
				setState(3575);
				_la = _input.LA(1);
				if ( !(_la==DELAYED || _la==HIGH_PRIORITY || _la==LOW_PRIORITY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(3579);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3578);
				match(IGNORE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertValuesClauseContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(MySQLStatementParser.VALUES, 0); }
		public TerminalNode VALUE() { return getToken(MySQLStatementParser.VALUE, 0); }
		public List assignmentValues() {
			return getRuleContexts(AssignmentValuesContext.class);
		}
		public AssignmentValuesContext assignmentValues(int i) {
			return getRuleContext(AssignmentValuesContext.class,i);
		}
		public RowConstructorListContext rowConstructorList() {
			return getRuleContext(RowConstructorListContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public ValueReferenceContext valueReference() {
			return getRuleContext(ValueReferenceContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public FieldsContext fields() {
			return getRuleContext(FieldsContext.class,0);
		}
		public InsertValuesClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertValuesClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInsertValuesClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertValuesClauseContext insertValuesClause() throws RecognitionException {
		InsertValuesClauseContext _localctx = new InsertValuesClauseContext(_ctx, getState());
		enterRule(_localctx, 300, RULE_insertValuesClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3586);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(3581);
				match(LP_);
				setState(3583);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(3582);
					fields();
					}
				}

				setState(3585);
				match(RP_);
				}
			}

			setState(3588);
			_la = _input.LA(1);
			if ( !(_la==VALUE || _la==VALUES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3598);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
				{
				setState(3589);
				assignmentValues();
				setState(3594);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3590);
					match(COMMA_);
					setState(3591);
					assignmentValues();
					}
					}
					setState(3596);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case ROW:
				{
				setState(3597);
				rowConstructorList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3601);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(3600);
				valueReference();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FieldsContext extends ParserRuleContext {
		public List insertIdentifier() {
			return getRuleContexts(InsertIdentifierContext.class);
		}
		public InsertIdentifierContext insertIdentifier(int i) {
			return getRuleContext(InsertIdentifierContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public FieldsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fields; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFields(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FieldsContext fields() throws RecognitionException {
		FieldsContext _localctx = new FieldsContext(_ctx, getState());
		enterRule(_localctx, 302, RULE_fields);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3603);
			insertIdentifier();
			setState(3608);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3604);
				match(COMMA_);
				setState(3605);
				insertIdentifier();
				}
				}
				setState(3610);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertIdentifierContext extends ParserRuleContext {
		public ColumnRefContext columnRef() {
			return getRuleContext(ColumnRefContext.class,0);
		}
		public TableWildContext tableWild() {
			return getRuleContext(TableWildContext.class,0);
		}
		public InsertIdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertIdentifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInsertIdentifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertIdentifierContext insertIdentifier() throws RecognitionException {
		InsertIdentifierContext _localctx = new InsertIdentifierContext(_ctx, getState());
		enterRule(_localctx, 304, RULE_insertIdentifier);
		try {
			setState(3613);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,395,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3611);
				columnRef();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3612);
				tableWild();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableWildContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public List DOT_() { return getTokens(MySQLStatementParser.DOT_); }
		public TerminalNode DOT_(int i) {
			return getToken(MySQLStatementParser.DOT_, i);
		}
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public TableWildContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableWild; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableWild(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableWildContext tableWild() throws RecognitionException {
		TableWildContext _localctx = new TableWildContext(_ctx, getState());
		enterRule(_localctx, 306, RULE_tableWild);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3615);
			identifier();
			setState(3616);
			match(DOT_);
			setState(3620);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(3617);
				identifier();
				setState(3618);
				match(DOT_);
				}
			}

			setState(3622);
			match(ASTERISK_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InsertSelectClauseContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public ValueReferenceContext valueReference() {
			return getRuleContext(ValueReferenceContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public FieldsContext fields() {
			return getRuleContext(FieldsContext.class,0);
		}
		public InsertSelectClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_insertSelectClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInsertSelectClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InsertSelectClauseContext insertSelectClause() throws RecognitionException {
		InsertSelectClauseContext _localctx = new InsertSelectClauseContext(_ctx, getState());
		enterRule(_localctx, 308, RULE_insertSelectClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3625);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(3624);
				valueReference();
				}
			}

			setState(3632);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,399,_ctx) ) {
			case 1:
				{
				setState(3627);
				match(LP_);
				setState(3629);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(3628);
					fields();
					}
				}

				setState(3631);
				match(RP_);
				}
				break;
			}
			setState(3634);
			select();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnDuplicateKeyClauseContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TerminalNode DUPLICATE() { return getToken(MySQLStatementParser.DUPLICATE, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public List assignment() {
			return getRuleContexts(AssignmentContext.class);
		}
		public AssignmentContext assignment(int i) {
			return getRuleContext(AssignmentContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public OnDuplicateKeyClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onDuplicateKeyClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOnDuplicateKeyClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnDuplicateKeyClauseContext onDuplicateKeyClause() throws RecognitionException {
		OnDuplicateKeyClauseContext _localctx = new OnDuplicateKeyClauseContext(_ctx, getState());
		enterRule(_localctx, 310, RULE_onDuplicateKeyClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3636);
			match(ON);
			setState(3637);
			match(DUPLICATE);
			setState(3638);
			match(KEY);
			setState(3639);
			match(UPDATE);
			setState(3640);
			assignment();
			setState(3645);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3641);
				match(COMMA_);
				setState(3642);
				assignment();
				}
				}
				setState(3647);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValueReferenceContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public AliasContext alias() {
			return getRuleContext(AliasContext.class,0);
		}
		public DerivedColumnsContext derivedColumns() {
			return getRuleContext(DerivedColumnsContext.class,0);
		}
		public ValueReferenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_valueReference; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitValueReference(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ValueReferenceContext valueReference() throws RecognitionException {
		ValueReferenceContext _localctx = new ValueReferenceContext(_ctx, getState());
		enterRule(_localctx, 312, RULE_valueReference);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3648);
			match(AS);
			setState(3649);
			alias();
			setState(3651);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,401,_ctx) ) {
			case 1:
				{
				setState(3650);
				derivedColumns();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DerivedColumnsContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List alias() {
			return getRuleContexts(AliasContext.class);
		}
		public AliasContext alias(int i) {
			return getRuleContext(AliasContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public DerivedColumnsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_derivedColumns; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDerivedColumns(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DerivedColumnsContext derivedColumns() throws RecognitionException {
		DerivedColumnsContext _localctx = new DerivedColumnsContext(_ctx, getState());
		enterRule(_localctx, 314, RULE_derivedColumns);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3653);
			match(LP_);
			setState(3654);
			alias();
			setState(3659);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3655);
				match(COMMA_);
				setState(3656);
				alias();
				}
				}
				setState(3661);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(3662);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplaceContext extends ParserRuleContext {
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public ReplaceValuesClauseContext replaceValuesClause() {
			return getRuleContext(ReplaceValuesClauseContext.class,0);
		}
		public SetAssignmentsClauseContext setAssignmentsClause() {
			return getRuleContext(SetAssignmentsClauseContext.class,0);
		}
		public ReplaceSelectClauseContext replaceSelectClause() {
			return getRuleContext(ReplaceSelectClauseContext.class,0);
		}
		public ReplaceSpecificationContext replaceSpecification() {
			return getRuleContext(ReplaceSpecificationContext.class,0);
		}
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public PartitionNamesContext partitionNames() {
			return getRuleContext(PartitionNamesContext.class,0);
		}
		public ReplaceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replace; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReplace(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplaceContext replace() throws RecognitionException {
		ReplaceContext _localctx = new ReplaceContext(_ctx, getState());
		enterRule(_localctx, 316, RULE_replace);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3664);
			match(REPLACE);
			setState(3666);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DELAYED || _la==LOW_PRIORITY) {
				{
				setState(3665);
				replaceSpecification();
				}
			}

			setState(3669);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INTO) {
				{
				setState(3668);
				match(INTO);
				}
			}

			setState(3671);
			tableName();
			setState(3673);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3672);
				partitionNames();
				}
			}

			setState(3678);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,406,_ctx) ) {
			case 1:
				{
				setState(3675);
				replaceValuesClause();
				}
				break;
			case 2:
				{
				setState(3676);
				setAssignmentsClause();
				}
				break;
			case 3:
				{
				setState(3677);
				replaceSelectClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplaceSpecificationContext extends ParserRuleContext {
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public TerminalNode DELAYED() { return getToken(MySQLStatementParser.DELAYED, 0); }
		public ReplaceSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replaceSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReplaceSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplaceSpecificationContext replaceSpecification() throws RecognitionException {
		ReplaceSpecificationContext _localctx = new ReplaceSpecificationContext(_ctx, getState());
		enterRule(_localctx, 318, RULE_replaceSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3680);
			_la = _input.LA(1);
			if ( !(_la==DELAYED || _la==LOW_PRIORITY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplaceValuesClauseContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(MySQLStatementParser.VALUES, 0); }
		public TerminalNode VALUE() { return getToken(MySQLStatementParser.VALUE, 0); }
		public List assignmentValues() {
			return getRuleContexts(AssignmentValuesContext.class);
		}
		public AssignmentValuesContext assignmentValues(int i) {
			return getRuleContext(AssignmentValuesContext.class,i);
		}
		public RowConstructorListContext rowConstructorList() {
			return getRuleContext(RowConstructorListContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public ValueReferenceContext valueReference() {
			return getRuleContext(ValueReferenceContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public FieldsContext fields() {
			return getRuleContext(FieldsContext.class,0);
		}
		public ReplaceValuesClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replaceValuesClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReplaceValuesClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplaceValuesClauseContext replaceValuesClause() throws RecognitionException {
		ReplaceValuesClauseContext _localctx = new ReplaceValuesClauseContext(_ctx, getState());
		enterRule(_localctx, 320, RULE_replaceValuesClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3687);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(3682);
				match(LP_);
				setState(3684);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(3683);
					fields();
					}
				}

				setState(3686);
				match(RP_);
				}
			}

			setState(3689);
			_la = _input.LA(1);
			if ( !(_la==VALUE || _la==VALUES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3699);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
				{
				setState(3690);
				assignmentValues();
				setState(3695);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3691);
					match(COMMA_);
					setState(3692);
					assignmentValues();
					}
					}
					setState(3697);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case ROW:
				{
				setState(3698);
				rowConstructorList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3702);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(3701);
				valueReference();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReplaceSelectClauseContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public ValueReferenceContext valueReference() {
			return getRuleContext(ValueReferenceContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public FieldsContext fields() {
			return getRuleContext(FieldsContext.class,0);
		}
		public ReplaceSelectClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_replaceSelectClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReplaceSelectClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReplaceSelectClauseContext replaceSelectClause() throws RecognitionException {
		ReplaceSelectClauseContext _localctx = new ReplaceSelectClauseContext(_ctx, getState());
		enterRule(_localctx, 322, RULE_replaceSelectClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3705);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(3704);
				valueReference();
				}
			}

			setState(3712);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,414,_ctx) ) {
			case 1:
				{
				setState(3707);
				match(LP_);
				setState(3709);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(3708);
					fields();
					}
				}

				setState(3711);
				match(RP_);
				}
				break;
			}
			setState(3714);
			select();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdateContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public UpdateSpecification_Context updateSpecification_() {
			return getRuleContext(UpdateSpecification_Context.class,0);
		}
		public TableReferencesContext tableReferences() {
			return getRuleContext(TableReferencesContext.class,0);
		}
		public SetAssignmentsClauseContext setAssignmentsClause() {
			return getRuleContext(SetAssignmentsClauseContext.class,0);
		}
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public UpdateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_update; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUpdate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UpdateContext update() throws RecognitionException {
		UpdateContext _localctx = new UpdateContext(_ctx, getState());
		enterRule(_localctx, 324, RULE_update);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3717);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(3716);
				withClause();
				}
			}

			setState(3719);
			match(UPDATE);
			setState(3720);
			updateSpecification_();
			setState(3721);
			tableReferences();
			setState(3722);
			setAssignmentsClause();
			setState(3724);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3723);
				whereClause();
				}
			}

			setState(3727);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3726);
				orderByClause();
				}
			}

			setState(3730);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3729);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UpdateSpecification_Context extends ParserRuleContext {
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public UpdateSpecification_Context(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_updateSpecification_; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUpdateSpecification_(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UpdateSpecification_Context updateSpecification_() throws RecognitionException {
		UpdateSpecification_Context _localctx = new UpdateSpecification_Context(_ctx, getState());
		enterRule(_localctx, 326, RULE_updateSpecification_);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3733);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3732);
				match(LOW_PRIORITY);
				}
			}

			setState(3736);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3735);
				match(IGNORE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AssignmentContext extends ParserRuleContext {
		public ColumnRefContext columnRef() {
			return getRuleContext(ColumnRefContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public AssignmentValueContext assignmentValue() {
			return getRuleContext(AssignmentValueContext.class,0);
		}
		public AssignmentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignment; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAssignment(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AssignmentContext assignment() throws RecognitionException {
		AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
		enterRule(_localctx, 328, RULE_assignment);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3738);
			columnRef();
			setState(3739);
			match(EQ_);
			setState(3740);
			assignmentValue();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetAssignmentsClauseContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public List assignment() {
			return getRuleContexts(AssignmentContext.class);
		}
		public AssignmentContext assignment(int i) {
			return getRuleContext(AssignmentContext.class,i);
		}
		public ValueReferenceContext valueReference() {
			return getRuleContext(ValueReferenceContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SetAssignmentsClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setAssignmentsClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetAssignmentsClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetAssignmentsClauseContext setAssignmentsClause() throws RecognitionException {
		SetAssignmentsClauseContext _localctx = new SetAssignmentsClauseContext(_ctx, getState());
		enterRule(_localctx, 330, RULE_setAssignmentsClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3743);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(3742);
				valueReference();
				}
			}

			setState(3745);
			match(SET);
			setState(3746);
			assignment();
			setState(3751);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3747);
				match(COMMA_);
				setState(3748);
				assignment();
				}
				}
				setState(3753);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AssignmentValuesContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List assignmentValue() {
			return getRuleContexts(AssignmentValueContext.class);
		}
		public AssignmentValueContext assignmentValue(int i) {
			return getRuleContext(AssignmentValueContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AssignmentValuesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignmentValues; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAssignmentValues(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AssignmentValuesContext assignmentValues() throws RecognitionException {
		AssignmentValuesContext _localctx = new AssignmentValuesContext(_ctx, getState());
		enterRule(_localctx, 332, RULE_assignmentValues);
		int _la;
		try {
			setState(3767);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,424,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3754);
				match(LP_);
				setState(3755);
				assignmentValue();
				setState(3760);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(3756);
					match(COMMA_);
					setState(3757);
					assignmentValue();
					}
					}
					setState(3762);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(3763);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3765);
				match(LP_);
				setState(3766);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AssignmentValueContext extends ParserRuleContext {
		public BlobValueContext blobValue() {
			return getRuleContext(BlobValueContext.class,0);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public AssignmentValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignmentValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAssignmentValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AssignmentValueContext assignmentValue() throws RecognitionException {
		AssignmentValueContext _localctx = new AssignmentValueContext(_ctx, getState());
		enterRule(_localctx, 334, RULE_assignmentValue);
		try {
			setState(3772);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,425,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3769);
				blobValue();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3770);
				expr(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3771);
				match(DEFAULT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BlobValueContext extends ParserRuleContext {
		public TerminalNode UL_BINARY() { return getToken(MySQLStatementParser.UL_BINARY, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public BlobValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_blobValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBlobValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BlobValueContext blobValue() throws RecognitionException {
		BlobValueContext _localctx = new BlobValueContext(_ctx, getState());
		enterRule(_localctx, 336, RULE_blobValue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3774);
			match(UL_BINARY);
			setState(3775);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeleteContext extends ParserRuleContext {
		public TerminalNode DELETE() { return getToken(MySQLStatementParser.DELETE, 0); }
		public DeleteSpecificationContext deleteSpecification() {
			return getRuleContext(DeleteSpecificationContext.class,0);
		}
		public SingleTableClauseContext singleTableClause() {
			return getRuleContext(SingleTableClauseContext.class,0);
		}
		public MultipleTablesClauseContext multipleTablesClause() {
			return getRuleContext(MultipleTablesClauseContext.class,0);
		}
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public DeleteContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delete; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDelete(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeleteContext delete() throws RecognitionException {
		DeleteContext _localctx = new DeleteContext(_ctx, getState());
		enterRule(_localctx, 338, RULE_delete);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3777);
			match(DELETE);
			setState(3778);
			deleteSpecification();
			setState(3781);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,426,_ctx) ) {
			case 1:
				{
				setState(3779);
				singleTableClause();
				}
				break;
			case 2:
				{
				setState(3780);
				multipleTablesClause();
				}
				break;
			}
			setState(3784);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3783);
				whereClause();
				}
			}

			setState(3787);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3786);
				orderByClause();
				}
			}

			setState(3790);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3789);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DeleteSpecificationContext extends ParserRuleContext {
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public DeleteSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_deleteSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDeleteSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DeleteSpecificationContext deleteSpecification() throws RecognitionException {
		DeleteSpecificationContext _localctx = new DeleteSpecificationContext(_ctx, getState());
		enterRule(_localctx, 340, RULE_deleteSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3793);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOW_PRIORITY) {
				{
				setState(3792);
				match(LOW_PRIORITY);
				}
			}

			setState(3796);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,431,_ctx) ) {
			case 1:
				{
				setState(3795);
				match(QUICK);
				}
				break;
			}
			setState(3799);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(3798);
				match(IGNORE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SingleTableClauseContext extends ParserRuleContext {
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public AliasContext alias() {
			return getRuleContext(AliasContext.class,0);
		}
		public PartitionNamesContext partitionNames() {
			return getRuleContext(PartitionNamesContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public SingleTableClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_singleTableClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSingleTableClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SingleTableClauseContext singleTableClause() throws RecognitionException {
		SingleTableClauseContext _localctx = new SingleTableClauseContext(_ctx, getState());
		enterRule(_localctx, 342, RULE_singleTableClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3801);
			match(FROM);
			setState(3802);
			tableName();
			setState(3807);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,434,_ctx) ) {
			case 1:
				{
				setState(3804);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3803);
					match(AS);
					}
				}

				setState(3806);
				alias();
				}
				break;
			}
			setState(3810);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(3809);
				partitionNames();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MultipleTablesClauseContext extends ParserRuleContext {
		public TableAliasRefListContext tableAliasRefList() {
			return getRuleContext(TableAliasRefListContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TableReferencesContext tableReferences() {
			return getRuleContext(TableReferencesContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public MultipleTablesClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_multipleTablesClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitMultipleTablesClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MultipleTablesClauseContext multipleTablesClause() throws RecognitionException {
		MultipleTablesClauseContext _localctx = new MultipleTablesClauseContext(_ctx, getState());
		enterRule(_localctx, 344, RULE_multipleTablesClause);
		try {
			setState(3821);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(3812);
				tableAliasRefList();
				setState(3813);
				match(FROM);
				setState(3814);
				tableReferences();
				}
				break;
			case FROM:
				enterOuterAlt(_localctx, 2);
				{
				setState(3816);
				match(FROM);
				setState(3817);
				tableAliasRefList();
				setState(3818);
				match(USING);
				setState(3819);
				tableReferences();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectContext extends ParserRuleContext {
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public LockClauseListContext lockClauseList() {
			return getRuleContext(LockClauseListContext.class,0);
		}
		public QueryExpressionParensContext queryExpressionParens() {
			return getRuleContext(QueryExpressionParensContext.class,0);
		}
		public SelectWithIntoContext selectWithInto() {
			return getRuleContext(SelectWithIntoContext.class,0);
		}
		public SelectContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_select; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSelect(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectContext select() throws RecognitionException {
		SelectContext _localctx = new SelectContext(_ctx, getState());
		enterRule(_localctx, 346, RULE_select);
		int _la;
		try {
			setState(3829);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,438,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3823);
				queryExpression();
				setState(3825);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR || _la==LOCK) {
					{
					setState(3824);
					lockClauseList();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3827);
				queryExpressionParens();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3828);
				selectWithInto();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectWithIntoContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public SelectWithIntoContext selectWithInto() {
			return getRuleContext(SelectWithIntoContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public SelectIntoExpressionContext selectIntoExpression() {
			return getRuleContext(SelectIntoExpressionContext.class,0);
		}
		public LockClauseListContext lockClauseList() {
			return getRuleContext(LockClauseListContext.class,0);
		}
		public SelectWithIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectWithInto; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSelectWithInto(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectWithIntoContext selectWithInto() throws RecognitionException {
		SelectWithIntoContext _localctx = new SelectWithIntoContext(_ctx, getState());
		enterRule(_localctx, 348, RULE_selectWithInto);
		int _la;
		try {
			setState(3844);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,440,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3831);
				match(LP_);
				setState(3832);
				selectWithInto();
				setState(3833);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3835);
				queryExpression();
				setState(3836);
				selectIntoExpression();
				setState(3838);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR || _la==LOCK) {
					{
					setState(3837);
					lockClauseList();
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3840);
				queryExpression();
				setState(3841);
				lockClauseList();
				setState(3842);
				selectIntoExpression();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionContext extends ParserRuleContext {
		public QueryExpressionBodyContext queryExpressionBody() {
			return getRuleContext(QueryExpressionBodyContext.class,0);
		}
		public QueryExpressionParensContext queryExpressionParens() {
			return getRuleContext(QueryExpressionParensContext.class,0);
		}
		public WithClauseContext withClause() {
			return getRuleContext(WithClauseContext.class,0);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public QueryExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitQueryExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QueryExpressionContext queryExpression() throws RecognitionException {
		QueryExpressionContext _localctx = new QueryExpressionContext(_ctx, getState());
		enterRule(_localctx, 350, RULE_queryExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3847);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(3846);
				withClause();
				}
			}

			setState(3851);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,442,_ctx) ) {
			case 1:
				{
				setState(3849);
				queryExpressionBody(0);
				}
				break;
			case 2:
				{
				setState(3850);
				queryExpressionParens();
				}
				break;
			}
			setState(3854);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(3853);
				orderByClause();
				}
			}

			setState(3857);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3856);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionBodyContext extends ParserRuleContext {
		public QueryPrimaryContext queryPrimary() {
			return getRuleContext(QueryPrimaryContext.class,0);
		}
		public QueryExpressionParensContext queryExpressionParens() {
			return getRuleContext(QueryExpressionParensContext.class,0);
		}
		public CombineClauseContext combineClause() {
			return getRuleContext(CombineClauseContext.class,0);
		}
		public QueryExpressionBodyContext queryExpressionBody() {
			return getRuleContext(QueryExpressionBodyContext.class,0);
		}
		public QueryExpressionBodyContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpressionBody; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitQueryExpressionBody(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QueryExpressionBodyContext queryExpressionBody() throws RecognitionException {
		return queryExpressionBody(0);
	}

	private QueryExpressionBodyContext queryExpressionBody(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		QueryExpressionBodyContext _localctx = new QueryExpressionBodyContext(_ctx, _parentState);
		QueryExpressionBodyContext _prevctx = _localctx;
		int _startState = 352;
		enterRecursionRule(_localctx, 352, RULE_queryExpressionBody, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3864);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case TABLE:
			case VALUES:
				{
				setState(3860);
				queryPrimary();
				}
				break;
			case LP_:
				{
				setState(3861);
				queryExpressionParens();
				setState(3862);
				combineClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			_ctx.stop = _input.LT(-1);
			setState(3870);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,446,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					{
					_localctx = new QueryExpressionBodyContext(_parentctx, _parentState);
					pushNewRecursionContext(_localctx, _startState, RULE_queryExpressionBody);
					setState(3866);
					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
					setState(3867);
					combineClause();
					}
					} 
				}
				setState(3872);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,446,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class CombineClauseContext extends ParserRuleContext {
		public TerminalNode UNION() { return getToken(MySQLStatementParser.UNION, 0); }
		public QueryPrimaryContext queryPrimary() {
			return getRuleContext(QueryPrimaryContext.class,0);
		}
		public QueryExpressionParensContext queryExpressionParens() {
			return getRuleContext(QueryExpressionParensContext.class,0);
		}
		public CombineOptionContext combineOption() {
			return getRuleContext(CombineOptionContext.class,0);
		}
		public CombineClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_combineClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCombineClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CombineClauseContext combineClause() throws RecognitionException {
		CombineClauseContext _localctx = new CombineClauseContext(_ctx, getState());
		enterRule(_localctx, 354, RULE_combineClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3873);
			match(UNION);
			setState(3875);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==DISTINCT) {
				{
				setState(3874);
				combineOption();
				}
			}

			setState(3879);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
			case TABLE:
			case VALUES:
				{
				setState(3877);
				queryPrimary();
				}
				break;
			case LP_:
				{
				setState(3878);
				queryExpressionParens();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryExpressionParensContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public QueryExpressionParensContext queryExpressionParens() {
			return getRuleContext(QueryExpressionParensContext.class,0);
		}
		public QueryExpressionContext queryExpression() {
			return getRuleContext(QueryExpressionContext.class,0);
		}
		public LockClauseListContext lockClauseList() {
			return getRuleContext(LockClauseListContext.class,0);
		}
		public QueryExpressionParensContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryExpressionParens; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitQueryExpressionParens(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QueryExpressionParensContext queryExpressionParens() throws RecognitionException {
		QueryExpressionParensContext _localctx = new QueryExpressionParensContext(_ctx, getState());
		enterRule(_localctx, 356, RULE_queryExpressionParens);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3881);
			match(LP_);
			setState(3887);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,450,_ctx) ) {
			case 1:
				{
				setState(3882);
				queryExpressionParens();
				}
				break;
			case 2:
				{
				setState(3883);
				queryExpression();
				setState(3885);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR || _la==LOCK) {
					{
					setState(3884);
					lockClauseList();
					}
				}

				}
				break;
			}
			setState(3889);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QueryPrimaryContext extends ParserRuleContext {
		public QuerySpecificationContext querySpecification() {
			return getRuleContext(QuerySpecificationContext.class,0);
		}
		public TableValueConstructorContext tableValueConstructor() {
			return getRuleContext(TableValueConstructorContext.class,0);
		}
		public TableStatementContext tableStatement() {
			return getRuleContext(TableStatementContext.class,0);
		}
		public QueryPrimaryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_queryPrimary; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitQueryPrimary(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QueryPrimaryContext queryPrimary() throws RecognitionException {
		QueryPrimaryContext _localctx = new QueryPrimaryContext(_ctx, getState());
		enterRule(_localctx, 358, RULE_queryPrimary);
		try {
			setState(3894);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SELECT:
				enterOuterAlt(_localctx, 1);
				{
				setState(3891);
				querySpecification();
				}
				break;
			case VALUES:
				enterOuterAlt(_localctx, 2);
				{
				setState(3892);
				tableValueConstructor();
				}
				break;
			case TABLE:
				enterOuterAlt(_localctx, 3);
				{
				setState(3893);
				tableStatement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QuerySpecificationContext extends ParserRuleContext {
		public TerminalNode SELECT() { return getToken(MySQLStatementParser.SELECT, 0); }
		public ProjectionsContext projections() {
			return getRuleContext(ProjectionsContext.class,0);
		}
		public List selectSpecification() {
			return getRuleContexts(SelectSpecificationContext.class);
		}
		public SelectSpecificationContext selectSpecification(int i) {
			return getRuleContext(SelectSpecificationContext.class,i);
		}
		public SelectIntoExpressionContext selectIntoExpression() {
			return getRuleContext(SelectIntoExpressionContext.class,0);
		}
		public FromClauseContext fromClause() {
			return getRuleContext(FromClauseContext.class,0);
		}
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public GroupByClauseContext groupByClause() {
			return getRuleContext(GroupByClauseContext.class,0);
		}
		public HavingClauseContext havingClause() {
			return getRuleContext(HavingClauseContext.class,0);
		}
		public WindowClauseContext windowClause() {
			return getRuleContext(WindowClauseContext.class,0);
		}
		public QuerySpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_querySpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitQuerySpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QuerySpecificationContext querySpecification() throws RecognitionException {
		QuerySpecificationContext _localctx = new QuerySpecificationContext(_ctx, getState());
		enterRule(_localctx, 360, RULE_querySpecification);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(3896);
			match(SELECT);
			setState(3900);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,452,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(3897);
					selectSpecification();
					}
					} 
				}
				setState(3902);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,452,_ctx);
			}
			setState(3903);
			projections();
			setState(3905);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,453,_ctx) ) {
			case 1:
				{
				setState(3904);
				selectIntoExpression();
				}
				break;
			}
			setState(3908);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,454,_ctx) ) {
			case 1:
				{
				setState(3907);
				fromClause();
				}
				break;
			}
			setState(3911);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,455,_ctx) ) {
			case 1:
				{
				setState(3910);
				whereClause();
				}
				break;
			}
			setState(3914);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,456,_ctx) ) {
			case 1:
				{
				setState(3913);
				groupByClause();
				}
				break;
			}
			setState(3917);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,457,_ctx) ) {
			case 1:
				{
				setState(3916);
				havingClause();
				}
				break;
			}
			setState(3920);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,458,_ctx) ) {
			case 1:
				{
				setState(3919);
				windowClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CallContext extends ParserRuleContext {
		public TerminalNode CALL() { return getToken(MySQLStatementParser.CALL, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_call; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CallContext call() throws RecognitionException {
		CallContext _localctx = new CallContext(_ctx, getState());
		enterRule(_localctx, 362, RULE_call);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3922);
			match(CALL);
			setState(3923);
			identifier();
			setState(3936);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,461,_ctx) ) {
			case 1:
				{
				setState(3924);
				match(LP_);
				setState(3933);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << AT_) | (1L << MAX) | (1L << MIN) | (1L << SUM) | (1L << COUNT) | (1L << GROUP_CONCAT) | (1L << CAST) | (1L << POSITION) | (1L << SUBSTRING) | (1L << SUBSTR) | (1L << EXTRACT) | (1L << TRIM) | (1L << LAST_DAY) | (1L << TRADITIONAL) | (1L << TREE) | (1L << MYSQL_MAIN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (MYSQL_ADMIN - 64)) | (1L << (INSTANT - 64)) | (1L << (INPLACE - 64)) | (1L << (COPY - 64)) | (1L << (UL_BINARY - 64)) | (1L << (AUTOCOMMIT - 64)) | (1L << (INNODB - 64)) | (1L << (REDO_LOG - 64)) | (1L << (ACCOUNT - 64)) | (1L << (ACTION - 64)) | (1L << (ACTIVE - 64)) | (1L << (ADMIN - 64)) | (1L << (AFTER - 64)) | (1L << (AGAINST - 64)) | (1L << (AGGREGATE - 64)) | (1L << (ALGORITHM - 64)) | (1L << (ALWAYS - 64)) | (1L << (ANY - 64)) | (1L << (ARRAY - 64)) | (1L << (ASCII - 64)) | (1L << (AT - 64)) | (1L << (ATTRIBUTE - 64)) | (1L << (AUTOEXTEND_SIZE - 64)) | (1L << (AUTO_INCREMENT - 64)) | (1L << (AVG - 64)) | (1L << (BIT_XOR - 64)) | (1L << (AVG_ROW_LENGTH - 64)) | (1L << (BACKUP - 64)) | (1L << (BEGIN - 64)) | (1L << (BINARY - 64)) | (1L << (BINLOG - 64)) | (1L << (BIT - 64)) | (1L << (BLOCK - 64)) | (1L << (BOOL - 64)) | (1L << (BOOLEAN - 64)) | (1L << (BTREE - 64)) | (1L << (BUCKETS - 64)) | (1L << (BYTE - 64)) | (1L << (CACHE - 64)) | (1L << (CASCADED - 64)) | (1L << (CASE - 64)) | (1L << (CATALOG_NAME - 64)) | (1L << (CHAIN - 64)) | (1L << (CHANGED - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (CHANNEL - 128)) | (1L << (CHAR - 128)) | (1L << (CHARSET - 128)) | (1L << (CHECKSUM - 128)) | (1L << (CIPHER - 128)) | (1L << (CLASS_ORIGIN - 128)) | (1L << (CLIENT - 128)) | (1L << (CLONE - 128)) | (1L << (CLOSE - 128)) | (1L << (COALESCE - 128)) | (1L << (CODE - 128)) | (1L << (COLLATION - 128)) | (1L << (COLUMNS - 128)) | (1L << (COLUMN_FORMAT - 128)) | (1L << (COLUMN_NAME - 128)) | (1L << (COMMENT - 128)) | (1L << (COMMIT - 128)) | (1L << (COMMITTED - 128)) | (1L << (COMPACT - 128)) | (1L << (COMPLETION - 128)) | (1L << (COMPONENT - 128)) | (1L << (COMPRESSED - 128)) | (1L << (COMPRESSION - 128)) | (1L << (CONCURRENT - 128)) | (1L << (CONNECTION - 128)) | (1L << (CONSISTENT - 128)) | (1L << (CONSTRAINT_CATALOG - 128)) | (1L << (CONSTRAINT_NAME - 128)) | (1L << (CONSTRAINT_SCHEMA - 128)) | (1L << (CONTAINS - 128)) | (1L << (CONTEXT - 128)) | (1L << (CONVERT - 128)) | (1L << (CPU - 128)) | (1L << (CREATE - 128)) | (1L << (CUME_DIST - 128)) | (1L << (CURRENT - 128)) | (1L << (CURRENT_DATE - 128)) | (1L << (CURRENT_TIME - 128)) | (1L << (CURRENT_TIMESTAMP - 128)) | (1L << (CURRENT_USER - 128)) | (1L << (CURSOR_NAME - 128)) | (1L << (DATA - 128)) | (1L << (DATABASE - 128)) | (1L << (DATAFILE - 128)) | (1L << (DATE - 128)) | (1L << (DATETIME - 128)) | (1L << (DAY - 128)) | (1L << (DEALLOCATE - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (DEFAULT_AUTH - 195)) | (1L << (DEFINER - 195)) | (1L << (DEFINITION - 195)) | (1L << (DELAY_KEY_WRITE - 195)) | (1L << (DENSE_RANK - 195)) | (1L << (DESCRIPTION - 195)) | (1L << (DIAGNOSTICS - 195)) | (1L << (DIRECTORY - 195)) | (1L << (DISABLE - 195)) | (1L << (DISCARD - 195)) | (1L << (DISK - 195)) | (1L << (DO - 195)) | (1L << (DUMPFILE - 195)) | (1L << (DUPLICATE - 195)) | (1L << (DYNAMIC - 195)) | (1L << (ENABLE - 195)) | (1L << (ENCRYPTION - 195)) | (1L << (END - 195)) | (1L << (ENDS - 195)) | (1L << (ENFORCED - 195)) | (1L << (ENGINE - 195)) | (1L << (ENGINES - 195)) | (1L << (ENGINE_ATTRIBUTE - 195)) | (1L << (ENUM - 195)) | (1L << (ERROR - 195)) | (1L << (ERRORS - 195)) | (1L << (ESCAPE - 195)) | (1L << (EVENT - 195)) | (1L << (EVENTS - 195)) | (1L << (EVERY - 195)) | (1L << (EXCHANGE - 195)) | (1L << (EXCLUDE - 195)) | (1L << (EXECUTE - 195)) | (1L << (EXISTS - 195)) | (1L << (EXPANSION - 195)) | (1L << (EXPIRE - 195)) | (1L << (EXPORT - 195)) | (1L << (EXTENDED - 195)) | (1L << (EXTENT_SIZE - 195)) | (1L << (FAILED_LOGIN_ATTEMPTS - 195)) | (1L << (FALSE - 195)) | (1L << (FAST - 195)) | (1L << (FAULTS - 195)))) != 0) || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & ((1L << (FILE - 259)) | (1L << (FILE_BLOCK_SIZE - 259)) | (1L << (FILTER - 259)) | (1L << (FIRST - 259)) | (1L << (FIRST_VALUE - 259)) | (1L << (FIXED - 259)) | (1L << (FLUSH - 259)) | (1L << (FOLLOWING - 259)) | (1L << (FOLLOWS - 259)) | (1L << (FORMAT - 259)) | (1L << (FOUND - 259)) | (1L << (FULL - 259)) | (1L << (GENERAL - 259)) | (1L << (GEOMETRY - 259)) | (1L << (GEOMETRYCOLLECTION - 259)) | (1L << (GET_FORMAT - 259)) | (1L << (GET_MASTER_PUBLIC_KEY - 259)) | (1L << (GLOBAL - 259)) | (1L << (GRANTS - 259)) | (1L << (GROUP_REPLICATION - 259)) | (1L << (HANDLER - 259)) | (1L << (HASH - 259)) | (1L << (HELP - 259)) | (1L << (HISTOGRAM - 259)) | (1L << (HISTORY - 259)) | (1L << (HOST - 259)) | (1L << (HOSTS - 259)) | (1L << (HOUR - 259)) | (1L << (IDENTIFIED - 259)) | (1L << (IF - 259)) | (1L << (IGNORE_SERVER_IDS - 259)) | (1L << (IMPORT - 259)) | (1L << (INACTIVE - 259)) | (1L << (INDEXES - 259)) | (1L << (INITIAL_SIZE - 259)) | (1L << (INSERT - 259)) | (1L << (INSERT_METHOD - 259)))) != 0) || ((((_la - 323)) & ~0x3f) == 0 && ((1L << (_la - 323)) & ((1L << (INSTALL - 323)) | (1L << (INSTANCE - 323)) | (1L << (INTERVAL - 323)) | (1L << (INVISIBLE - 323)) | (1L << (INVOKER - 323)) | (1L << (IO - 323)) | (1L << (IPC - 323)) | (1L << (ISOLATION - 323)) | (1L << (ISSUER - 323)) | (1L << (JSON - 323)) | (1L << (JSON_TABLE - 323)) | (1L << (JSON_VALUE - 323)) | (1L << (KEY - 323)) | (1L << (KEY_BLOCK_SIZE - 323)) | (1L << (LAG - 323)) | (1L << (LANGUAGE - 323)) | (1L << (LAST - 323)) | (1L << (LAST_VALUE - 323)) | (1L << (LEAD - 323)) | (1L << (LEAVES - 323)) | (1L << (LEFT - 323)) | (1L << (LESS - 323)) | (1L << (LEVEL - 323)) | (1L << (LINESTRING - 323)) | (1L << (LIST - 323)) | (1L << (LOCAL - 323)) | (1L << (LOCALTIME - 323)) | (1L << (LOCALTIMESTAMP - 323)) | (1L << (LOCKED - 323)) | (1L << (LOCKS - 323)) | (1L << (LOGFILE - 323)) | (1L << (LOGS - 323)) | (1L << (MASTER - 323)) | (1L << (MASTER_AUTO_POSITION - 323)))) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & ((1L << (MASTER_COMPRESSION_ALGORITHM - 387)) | (1L << (MASTER_CONNECT_RETRY - 387)) | (1L << (MASTER_DELAY - 387)) | (1L << (MASTER_HEARTBEAT_PERIOD - 387)) | (1L << (MASTER_HOST - 387)) | (1L << (MASTER_LOG_FILE - 387)) | (1L << (MASTER_LOG_POS - 387)) | (1L << (MASTER_PASSWORD - 387)) | (1L << (MASTER_PORT - 387)) | (1L << (MASTER_PUBLIC_KEY_PATH - 387)) | (1L << (MASTER_RETRY_COUNT - 387)) | (1L << (MASTER_SERVER_ID - 387)) | (1L << (MASTER_SSL - 387)) | (1L << (MASTER_SSL_CA - 387)) | (1L << (MASTER_SSL_CAPATH - 387)) | (1L << (MASTER_SSL_CERT - 387)) | (1L << (MASTER_SSL_CIPHER - 387)) | (1L << (MASTER_SSL_CRL - 387)) | (1L << (MASTER_SSL_CRLPATH - 387)) | (1L << (MASTER_SSL_KEY - 387)) | (1L << (MASTER_TLS_CIPHERSUITES - 387)) | (1L << (MASTER_TLS_VERSION - 387)) | (1L << (MASTER_USER - 387)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 387)) | (1L << (MATCH - 387)) | (1L << (MAXVALUE - 387)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 387)) | (1L << (MAX_QUERIES_PER_HOUR - 387)) | (1L << (MAX_ROWS - 387)) | (1L << (MAX_SIZE - 387)) | (1L << (MAX_UPDATES_PER_HOUR - 387)) | (1L << (MAX_USER_CONNECTIONS - 387)) | (1L << (MEDIUM - 387)) | (1L << (MEMBER - 387)) | (1L << (MEMORY - 387)) | (1L << (MERGE - 387)) | (1L << (MESSAGE_TEXT - 387)) | (1L << (MICROSECOND - 387)) | (1L << (MIGRATE - 387)) | (1L << (MINUTE - 387)) | (1L << (MIN_ROWS - 387)) | (1L << (MOD - 387)) | (1L << (MODE - 387)) | (1L << (MODIFY - 387)) | (1L << (MONTH - 387)) | (1L << (MULTILINESTRING - 387)) | (1L << (MULTIPOINT - 387)) | (1L << (MULTIPOLYGON - 387)) | (1L << (MUTEX - 387)) | (1L << (MYSQL_ERRNO - 387)) | (1L << (NAME - 387)) | (1L << (NAMES - 387)) | (1L << (NATIONAL - 387)) | (1L << (NCHAR - 387)) | (1L << (NDBCLUSTER - 387)))) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & ((1L << (NESTED - 451)) | (1L << (NETWORK_NAMESPACE - 451)) | (1L << (NEVER - 451)) | (1L << (NEW - 451)) | (1L << (NEXT - 451)) | (1L << (NO - 451)) | (1L << (NODEGROUP - 451)) | (1L << (NONE - 451)) | (1L << (NOT - 451)) | (1L << (NOWAIT - 451)) | (1L << (NO_WAIT - 451)) | (1L << (NTH_VALUE - 451)) | (1L << (NTILE - 451)) | (1L << (NULL - 451)) | (1L << (NULLS - 451)) | (1L << (NUMBER - 451)) | (1L << (NVARCHAR - 451)) | (1L << (OFF - 451)) | (1L << (OFFSET - 451)) | (1L << (OJ - 451)) | (1L << (OLD - 451)) | (1L << (ONE - 451)) | (1L << (ONLY - 451)) | (1L << (OPEN - 451)) | (1L << (OPTIONAL - 451)) | (1L << (OPTIONS - 451)) | (1L << (ORDINALITY - 451)) | (1L << (ORGANIZATION - 451)) | (1L << (OTHERS - 451)) | (1L << (OWNER - 451)) | (1L << (PACK_KEYS - 451)) | (1L << (PAGE - 451)) | (1L << (PARSER - 451)) | (1L << (PARTIAL - 451)) | (1L << (PARTITIONING - 451)) | (1L << (PARTITIONS - 451)) | (1L << (PASSWORD - 451)) | (1L << (PASSWORD_LOCK_TIME - 451)) | (1L << (PATH - 451)) | (1L << (PERCENT_RANK - 451)) | (1L << (PERSIST - 451)) | (1L << (PERSIST_ONLY - 451)) | (1L << (PHASE - 451)) | (1L << (PLUGIN - 451)) | (1L << (PLUGINS - 451)) | (1L << (PLUGIN_DIR - 451)) | (1L << (POINT - 451)) | (1L << (POLYGON - 451)) | (1L << (PORT - 451)))) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & ((1L << (PRECEDES - 515)) | (1L << (PRECEDING - 515)) | (1L << (PREPARE - 515)) | (1L << (PRESERVE - 515)) | (1L << (PREV - 515)) | (1L << (PRIMARY - 515)) | (1L << (PRIVILEGES - 515)) | (1L << (PRIVILEGE_CHECKS_USER - 515)) | (1L << (PROCESS - 515)) | (1L << (PROCESSLIST - 515)) | (1L << (PROFILE - 515)) | (1L << (PROFILES - 515)) | (1L << (PROXY - 515)) | (1L << (QUARTER - 515)) | (1L << (QUERY - 515)) | (1L << (QUICK - 515)) | (1L << (RANDOM - 515)) | (1L << (RANK - 515)) | (1L << (READ_ONLY - 515)) | (1L << (REBUILD - 515)) | (1L << (RECOVER - 515)) | (1L << (REDO_BUFFER_SIZE - 515)) | (1L << (REDUNDANT - 515)) | (1L << (REFERENCE - 515)) | (1L << (RELAY - 515)) | (1L << (RELAYLOG - 515)) | (1L << (RELAY_LOG_FILE - 515)) | (1L << (RELAY_LOG_POS - 515)) | (1L << (RELAY_THREAD - 515)) | (1L << (RELOAD - 515)) | (1L << (REMOVE - 515)) | (1L << (REORGANIZE - 515)) | (1L << (REPAIR - 515)) | (1L << (REPEAT - 515)) | (1L << (REPEATABLE - 515)) | (1L << (REPLACE - 515)) | (1L << (REPLICATE_DO_DB - 515)) | (1L << (REPLICATE_DO_TABLE - 515)) | (1L << (REPLICATE_IGNORE_DB - 515)) | (1L << (REPLICATE_IGNORE_TABLE - 515)) | (1L << (REPLICATE_REWRITE_DB - 515)) | (1L << (REPLICATE_WILD_DO_TABLE - 515)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 515)) | (1L << (REPLICATION - 515)) | (1L << (REQUIRE_ROW_FORMAT - 515)) | (1L << (RESET - 515)) | (1L << (RESOURCE - 515)))) != 0) || ((((_la - 579)) & ~0x3f) == 0 && ((1L << (_la - 579)) & ((1L << (RESPECT - 579)) | (1L << (RESTART - 579)) | (1L << (RESTORE - 579)) | (1L << (RESUME - 579)) | (1L << (RETAIN - 579)) | (1L << (RETURNED_SQLSTATE - 579)) | (1L << (RETURNING - 579)) | (1L << (RETURNS - 579)) | (1L << (REUSE - 579)) | (1L << (REVERSE - 579)) | (1L << (RIGHT - 579)) | (1L << (ROLE - 579)) | (1L << (ROLLBACK - 579)) | (1L << (ROLLUP - 579)) | (1L << (ROTATE - 579)) | (1L << (ROUTINE - 579)) | (1L << (ROW - 579)) | (1L << (ROW_COUNT - 579)) | (1L << (ROW_FORMAT - 579)) | (1L << (ROW_NUMBER - 579)) | (1L << (RTREE - 579)) | (1L << (SAVEPOINT - 579)) | (1L << (SCHEDULE - 579)) | (1L << (SCHEMA - 579)) | (1L << (SCHEMA_NAME - 579)) | (1L << (SECOND - 579)) | (1L << (SECONDARY - 579)) | (1L << (SECONDARY_ENGINE - 579)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 579)) | (1L << (SECONDARY_LOAD - 579)) | (1L << (SECONDARY_UNLOAD - 579)) | (1L << (SECURITY - 579)) | (1L << (SERIAL - 579)) | (1L << (SERIALIZABLE - 579)) | (1L << (SERVER - 579)) | (1L << (SESSION - 579)) | (1L << (SHARE - 579)) | (1L << (SHUTDOWN - 579)) | (1L << (SIGNED - 579)) | (1L << (SIMPLE - 579)) | (1L << (SLAVE - 579)) | (1L << (SLOW - 579)) | (1L << (SNAPSHOT - 579)) | (1L << (SOCKET - 579)) | (1L << (SONAME - 579)) | (1L << (SOUNDS - 579)) | (1L << (SOURCE - 579)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (SQL_AFTER_GTIDS - 647)) | (1L << (SQL_AFTER_MTS_GAPS - 647)) | (1L << (SQL_BEFORE_GTIDS - 647)) | (1L << (SQL_BUFFER_RESULT - 647)) | (1L << (SQL_NO_CACHE - 647)) | (1L << (SQL_THREAD - 647)) | (1L << (SRID - 647)) | (1L << (STACKED - 647)) | (1L << (START - 647)) | (1L << (STARTS - 647)) | (1L << (STATS_AUTO_RECALC - 647)) | (1L << (STATS_PERSISTENT - 647)) | (1L << (STATS_SAMPLE_PAGES - 647)) | (1L << (STATUS - 647)) | (1L << (STOP - 647)) | (1L << (STORAGE - 647)) | (1L << (STREAM - 647)) | (1L << (STRING - 647)) | (1L << (SUBCLASS_ORIGIN - 647)) | (1L << (SUBJECT - 647)) | (1L << (SUBPARTITION - 647)) | (1L << (SUBPARTITIONS - 647)) | (1L << (SUPER - 647)) | (1L << (SUSPEND - 647)) | (1L << (SWAPS - 647)) | (1L << (SWITCHES - 647)) | (1L << (TABLES - 647)) | (1L << (TABLESPACE - 647)) | (1L << (TABLE_CHECKSUM - 647)) | (1L << (TABLE_NAME - 647)) | (1L << (TEMPORARY - 647)) | (1L << (TEMPTABLE - 647)) | (1L << (TEXT - 647)) | (1L << (THAN - 647)) | (1L << (THREAD_PRIORITY - 647)) | (1L << (TIES - 647)) | (1L << (TIME - 647)) | (1L << (TIMESTAMP - 647)) | (1L << (TIMESTAMP_ADD - 647)) | (1L << (TIMESTAMP_DIFF - 647)) | (1L << (TLS - 647)) | (1L << (TRANSACTION - 647)) | (1L << (TRIGGERS - 647)) | (1L << (TRUE - 647)) | (1L << (TRUNCATE - 647)) | (1L << (TYPE - 647)) | (1L << (TYPES - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (UNBOUNDED - 711)) | (1L << (UNCOMMITTED - 711)) | (1L << (UNDEFINED - 711)) | (1L << (UNDOFILE - 711)) | (1L << (UNDO_BUFFER_SIZE - 711)) | (1L << (UNICODE - 711)) | (1L << (UNINSTALL - 711)) | (1L << (UNKNOWN - 711)) | (1L << (UNTIL - 711)) | (1L << (UPGRADE - 711)) | (1L << (USER - 711)) | (1L << (USER_RESOURCES - 711)) | (1L << (USE_FRM - 711)) | (1L << (UTC_DATE - 711)) | (1L << (UTC_TIME - 711)) | (1L << (UTC_TIMESTAMP - 711)) | (1L << (VALIDATION - 711)) | (1L << (VALUE - 711)) | (1L << (VALUES - 711)) | (1L << (VARIABLES - 711)) | (1L << (VCPU - 711)) | (1L << (VIEW - 711)) | (1L << (VISIBLE - 711)) | (1L << (WAIT - 711)) | (1L << (WARNINGS - 711)) | (1L << (WEEK - 711)) | (1L << (WEIGHT_STRING - 711)) | (1L << (WITHOUT - 711)) | (1L << (WORK - 711)) | (1L << (WRAPPER - 711)) | (1L << (X509 - 711)) | (1L << (XA - 711)) | (1L << (XID - 711)) | (1L << (XML - 711)) | (1L << (YEAR - 711)) | (1L << (JSON_ARRAY - 711)) | (1L << (JSON_ARRAY_APPEND - 711)) | (1L << (JSON_ARRAY_INSERT - 711)) | (1L << (JSON_CONTAINS - 711)) | (1L << (JSON_CONTAINS_PATH - 711)) | (1L << (JSON_DEPTH - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (JSON_EXTRACT - 775)) | (1L << (JSON_INSERT - 775)) | (1L << (JSON_KEYS - 775)) | (1L << (JSON_LENGTH - 775)) | (1L << (JSON_MERGE - 775)) | (1L << (JSON_MERGE_PATCH - 775)) | (1L << (JSON_MERGE_PRESERVE - 775)) | (1L << (JSON_OBJECT - 775)) | (1L << (JSON_OVERLAPS - 775)) | (1L << (JSON_PRETTY - 775)) | (1L << (JSON_QUOTE - 775)) | (1L << (JSON_REMOVE - 775)) | (1L << (JSON_REPLACE - 775)) | (1L << (JSON_SCHEMA_VALID - 775)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 775)) | (1L << (JSON_SEARCH - 775)) | (1L << (JSON_SET - 775)) | (1L << (JSON_STORAGE_FREE - 775)) | (1L << (JSON_STORAGE_SIZE - 775)) | (1L << (JSON_TYPE - 775)) | (1L << (JSON_UNQUOTE - 775)) | (1L << (JSON_VALID - 775)) | (1L << (SINGLE_QUOTED_TEXT - 775)) | (1L << (DOUBLE_QUOTED_TEXT - 775)) | (1L << (NCHAR_TEXT - 775)) | (1L << (UNDERSCORE_CHARSET - 775)) | (1L << (NUMBER_ - 775)) | (1L << (HEX_DIGIT_ - 775)) | (1L << (BIT_NUM_ - 775)) | (1L << (IDENTIFIER_ - 775)))) != 0)) {
					{
					setState(3925);
					expr(0);
					setState(3930);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA_) {
						{
						{
						setState(3926);
						match(COMMA_);
						setState(3927);
						expr(0);
						}
						}
						setState(3932);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				setState(3935);
				match(RP_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DoStatementContext extends ParserRuleContext {
		public TerminalNode DO() { return getToken(MySQLStatementParser.DO, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public DoStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_doStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDoStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DoStatementContext doStatement() throws RecognitionException {
		DoStatementContext _localctx = new DoStatementContext(_ctx, getState());
		enterRule(_localctx, 364, RULE_doStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3938);
			match(DO);
			setState(3939);
			expr(0);
			setState(3944);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(3940);
				match(COMMA_);
				setState(3941);
				expr(0);
				}
				}
				setState(3946);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerStatementContext extends ParserRuleContext {
		public HandlerOpenStatementContext handlerOpenStatement() {
			return getRuleContext(HandlerOpenStatementContext.class,0);
		}
		public HandlerReadIndexStatementContext handlerReadIndexStatement() {
			return getRuleContext(HandlerReadIndexStatementContext.class,0);
		}
		public HandlerReadStatementContext handlerReadStatement() {
			return getRuleContext(HandlerReadStatementContext.class,0);
		}
		public HandlerCloseStatementContext handlerCloseStatement() {
			return getRuleContext(HandlerCloseStatementContext.class,0);
		}
		public HandlerStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHandlerStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerStatementContext handlerStatement() throws RecognitionException {
		HandlerStatementContext _localctx = new HandlerStatementContext(_ctx, getState());
		enterRule(_localctx, 366, RULE_handlerStatement);
		try {
			setState(3951);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,463,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(3947);
				handlerOpenStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(3948);
				handlerReadIndexStatement();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(3949);
				handlerReadStatement();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(3950);
				handlerCloseStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerOpenStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySQLStatementParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode OPEN() { return getToken(MySQLStatementParser.OPEN, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public HandlerOpenStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerOpenStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHandlerOpenStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerOpenStatementContext handlerOpenStatement() throws RecognitionException {
		HandlerOpenStatementContext _localctx = new HandlerOpenStatementContext(_ctx, getState());
		enterRule(_localctx, 368, RULE_handlerOpenStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3953);
			match(HANDLER);
			setState(3954);
			tableName();
			setState(3955);
			match(OPEN);
			setState(3960);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (AS - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(3957);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(3956);
					match(AS);
					}
				}

				setState(3959);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerReadIndexStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySQLStatementParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public IndexNameContext indexName() {
			return getRuleContext(IndexNameContext.class,0);
		}
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode FIRST() { return getToken(MySQLStatementParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(MySQLStatementParser.NEXT, 0); }
		public TerminalNode PREV() { return getToken(MySQLStatementParser.PREV, 0); }
		public TerminalNode LAST() { return getToken(MySQLStatementParser.LAST, 0); }
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public HandlerReadIndexStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerReadIndexStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHandlerReadIndexStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerReadIndexStatementContext handlerReadIndexStatement() throws RecognitionException {
		HandlerReadIndexStatementContext _localctx = new HandlerReadIndexStatementContext(_ctx, getState());
		enterRule(_localctx, 370, RULE_handlerReadIndexStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3962);
			match(HANDLER);
			setState(3963);
			tableName();
			setState(3964);
			match(READ);
			setState(3965);
			indexName();
			setState(3972);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case EQ_:
			case NEQ_:
			case GT_:
			case GTE_:
			case LT_:
			case LTE_:
				{
				setState(3966);
				comparisonOperator();
				setState(3967);
				match(LP_);
				setState(3968);
				identifier();
				setState(3969);
				match(RP_);
				}
				break;
			case FIRST:
			case LAST:
			case NEXT:
			case PREV:
				{
				setState(3971);
				_la = _input.LA(1);
				if ( !(_la==FIRST || _la==LAST || _la==NEXT || _la==PREV) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(3975);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3974);
				whereClause();
				}
			}

			setState(3978);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3977);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerReadStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySQLStatementParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public TerminalNode FIRST() { return getToken(MySQLStatementParser.FIRST, 0); }
		public TerminalNode NEXT() { return getToken(MySQLStatementParser.NEXT, 0); }
		public WhereClauseContext whereClause() {
			return getRuleContext(WhereClauseContext.class,0);
		}
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public HandlerReadStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerReadStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHandlerReadStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerReadStatementContext handlerReadStatement() throws RecognitionException {
		HandlerReadStatementContext _localctx = new HandlerReadStatementContext(_ctx, getState());
		enterRule(_localctx, 372, RULE_handlerReadStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3980);
			match(HANDLER);
			setState(3981);
			tableName();
			setState(3982);
			match(READ);
			setState(3983);
			_la = _input.LA(1);
			if ( !(_la==FIRST || _la==NEXT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(3985);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(3984);
				whereClause();
				}
			}

			setState(3988);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(3987);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HandlerCloseStatementContext extends ParserRuleContext {
		public TerminalNode HANDLER() { return getToken(MySQLStatementParser.HANDLER, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode CLOSE() { return getToken(MySQLStatementParser.CLOSE, 0); }
		public HandlerCloseStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_handlerCloseStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHandlerCloseStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HandlerCloseStatementContext handlerCloseStatement() throws RecognitionException {
		HandlerCloseStatementContext _localctx = new HandlerCloseStatementContext(_ctx, getState());
		enterRule(_localctx, 374, RULE_handlerCloseStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3990);
			match(HANDLER);
			setState(3991);
			tableName();
			setState(3992);
			match(CLOSE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ImportStatementContext extends ParserRuleContext {
		public TerminalNode IMPORT() { return getToken(MySQLStatementParser.IMPORT, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public ImportStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_importStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitImportStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ImportStatementContext importStatement() throws RecognitionException {
		ImportStatementContext _localctx = new ImportStatementContext(_ctx, getState());
		enterRule(_localctx, 376, RULE_importStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(3994);
			match(IMPORT);
			setState(3995);
			match(TABLE);
			setState(3996);
			match(FROM);
			setState(3997);
			string_();
			setState(4000);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA_) {
				{
				setState(3998);
				match(COMMA_);
				setState(3999);
				string_();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadStatementContext extends ParserRuleContext {
		public LoadDataStatementContext loadDataStatement() {
			return getRuleContext(LoadDataStatementContext.class,0);
		}
		public LoadXmlStatementContext loadXmlStatement() {
			return getRuleContext(LoadXmlStatementContext.class,0);
		}
		public LoadStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLoadStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadStatementContext loadStatement() throws RecognitionException {
		LoadStatementContext _localctx = new LoadStatementContext(_ctx, getState());
		enterRule(_localctx, 378, RULE_loadStatement);
		try {
			setState(4004);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,472,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4002);
				loadDataStatement();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4003);
				loadXmlStatement();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadDataStatementContext extends ParserRuleContext {
		public TerminalNode LOAD() { return getToken(MySQLStatementParser.LOAD, 0); }
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode INFILE() { return getToken(MySQLStatementParser.INFILE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public PartitionNamesContext partitionNames() {
			return getRuleContext(PartitionNamesContext.class,0);
		}
		public TerminalNode CHARACTER() { return getToken(MySQLStatementParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode COLUMNS() { return getToken(MySQLStatementParser.COLUMNS, 0); }
		public List LINES() { return getTokens(MySQLStatementParser.LINES); }
		public TerminalNode LINES(int i) {
			return getToken(MySQLStatementParser.LINES, i);
		}
		public List IGNORE() { return getTokens(MySQLStatementParser.IGNORE); }
		public TerminalNode IGNORE(int i) {
			return getToken(MySQLStatementParser.IGNORE, i);
		}
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public FieldOrVarSpecContext fieldOrVarSpec() {
			return getRuleContext(FieldOrVarSpecContext.class,0);
		}
		public SetAssignmentsClauseContext setAssignmentsClause() {
			return getRuleContext(SetAssignmentsClauseContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySQLStatementParser.CONCURRENT, 0); }
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode ROWS() { return getToken(MySQLStatementParser.ROWS, 0); }
		public List selectFieldsInto() {
			return getRuleContexts(SelectFieldsIntoContext.class);
		}
		public SelectFieldsIntoContext selectFieldsInto(int i) {
			return getRuleContext(SelectFieldsIntoContext.class,i);
		}
		public List selectLinesInto() {
			return getRuleContexts(SelectLinesIntoContext.class);
		}
		public SelectLinesIntoContext selectLinesInto(int i) {
			return getRuleContext(SelectLinesIntoContext.class,i);
		}
		public LoadDataStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadDataStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLoadDataStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadDataStatementContext loadDataStatement() throws RecognitionException {
		LoadDataStatementContext _localctx = new LoadDataStatementContext(_ctx, getState());
		enterRule(_localctx, 380, RULE_loadDataStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4006);
			match(LOAD);
			setState(4007);
			match(DATA);
			setState(4009);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONCURRENT || _la==LOW_PRIORITY) {
				{
				setState(4008);
				_la = _input.LA(1);
				if ( !(_la==CONCURRENT || _la==LOW_PRIORITY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4012);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL) {
				{
				setState(4011);
				match(LOCAL);
				}
			}

			setState(4014);
			match(INFILE);
			setState(4015);
			string_();
			setState(4017);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(4016);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4019);
			match(INTO);
			setState(4020);
			match(TABLE);
			setState(4021);
			tableName();
			setState(4023);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(4022);
				partitionNames();
				}
			}

			setState(4028);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHARACTER) {
				{
				setState(4025);
				match(CHARACTER);
				setState(4026);
				match(SET);
				setState(4027);
				identifier();
				}
			}

			setState(4036);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLUMNS) {
				{
				setState(4030);
				match(COLUMNS);
				setState(4032); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(4031);
					selectFieldsInto();
					}
					}
					setState(4034); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==ENCLOSED || _la==ESCAPED || _la==OPTIONALLY || _la==TERMINATED );
				}
			}

			setState(4044);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LINES) {
				{
				setState(4038);
				match(LINES);
				setState(4040); 
				_errHandler.sync(this);
				_la = _input.LA(1);
				do {
					{
					{
					setState(4039);
					selectLinesInto();
					}
					}
					setState(4042); 
					_errHandler.sync(this);
					_la = _input.LA(1);
				} while ( _la==STARTING || _la==TERMINATED );
				}
			}

			setState(4050);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(4046);
				match(IGNORE);
				setState(4047);
				numberLiterals();
				setState(4048);
				_la = _input.LA(1);
				if ( !(_la==LINES || _la==ROWS) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4053);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(4052);
				fieldOrVarSpec();
				}
			}

			setState(4056);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS || _la==SET) {
				{
				setState(4055);
				setAssignmentsClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadXmlStatementContext extends ParserRuleContext {
		public TerminalNode LOAD() { return getToken(MySQLStatementParser.LOAD, 0); }
		public TerminalNode XML() { return getToken(MySQLStatementParser.XML, 0); }
		public TerminalNode INFILE() { return getToken(MySQLStatementParser.INFILE, 0); }
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public TerminalNode CHARACTER() { return getToken(MySQLStatementParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public List ROWS() { return getTokens(MySQLStatementParser.ROWS); }
		public TerminalNode ROWS(int i) {
			return getToken(MySQLStatementParser.ROWS, i);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public TerminalNode LT_() { return getToken(MySQLStatementParser.LT_, 0); }
		public TerminalNode GT_() { return getToken(MySQLStatementParser.GT_, 0); }
		public List IGNORE() { return getTokens(MySQLStatementParser.IGNORE); }
		public TerminalNode IGNORE(int i) {
			return getToken(MySQLStatementParser.IGNORE, i);
		}
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public FieldOrVarSpecContext fieldOrVarSpec() {
			return getRuleContext(FieldOrVarSpecContext.class,0);
		}
		public SetAssignmentsClauseContext setAssignmentsClause() {
			return getRuleContext(SetAssignmentsClauseContext.class,0);
		}
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySQLStatementParser.CONCURRENT, 0); }
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode LINES() { return getToken(MySQLStatementParser.LINES, 0); }
		public LoadXmlStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadXmlStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLoadXmlStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadXmlStatementContext loadXmlStatement() throws RecognitionException {
		LoadXmlStatementContext _localctx = new LoadXmlStatementContext(_ctx, getState());
		enterRule(_localctx, 382, RULE_loadXmlStatement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4058);
			match(LOAD);
			setState(4059);
			match(XML);
			setState(4061);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONCURRENT || _la==LOW_PRIORITY) {
				{
				setState(4060);
				_la = _input.LA(1);
				if ( !(_la==CONCURRENT || _la==LOW_PRIORITY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4064);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL) {
				{
				setState(4063);
				match(LOCAL);
				}
			}

			setState(4066);
			match(INFILE);
			setState(4067);
			string_();
			setState(4069);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE || _la==REPLACE) {
				{
				setState(4068);
				_la = _input.LA(1);
				if ( !(_la==IGNORE || _la==REPLACE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4071);
			match(INTO);
			setState(4072);
			match(TABLE);
			setState(4073);
			tableName();
			setState(4077);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHARACTER) {
				{
				setState(4074);
				match(CHARACTER);
				setState(4075);
				match(SET);
				setState(4076);
				identifier();
				}
			}

			setState(4086);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ROWS) {
				{
				setState(4079);
				match(ROWS);
				setState(4080);
				match(IDENTIFIED);
				setState(4081);
				match(BY);
				setState(4082);
				match(LT_);
				setState(4083);
				string_();
				setState(4084);
				match(GT_);
				}
			}

			setState(4092);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(4088);
				match(IGNORE);
				setState(4089);
				numberLiterals();
				setState(4090);
				_la = _input.LA(1);
				if ( !(_la==LINES || _la==ROWS) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4095);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(4094);
				fieldOrVarSpec();
				}
			}

			setState(4098);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS || _la==SET) {
				{
				setState(4097);
				setAssignmentsClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableStatementContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TableStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableStatementContext tableStatement() throws RecognitionException {
		TableStatementContext _localctx = new TableStatementContext(_ctx, getState());
		enterRule(_localctx, 384, RULE_tableStatement);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4100);
			match(TABLE);
			setState(4101);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableValueConstructorContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(MySQLStatementParser.VALUES, 0); }
		public RowConstructorListContext rowConstructorList() {
			return getRuleContext(RowConstructorListContext.class,0);
		}
		public TableValueConstructorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableValueConstructor; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableValueConstructor(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableValueConstructorContext tableValueConstructor() throws RecognitionException {
		TableValueConstructorContext _localctx = new TableValueConstructorContext(_ctx, getState());
		enterRule(_localctx, 386, RULE_tableValueConstructor);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4103);
			match(VALUES);
			setState(4104);
			rowConstructorList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RowConstructorListContext extends ParserRuleContext {
		public List ROW() { return getTokens(MySQLStatementParser.ROW); }
		public TerminalNode ROW(int i) {
			return getToken(MySQLStatementParser.ROW, i);
		}
		public List assignmentValues() {
			return getRuleContexts(AssignmentValuesContext.class);
		}
		public AssignmentValuesContext assignmentValues(int i) {
			return getRuleContext(AssignmentValuesContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public RowConstructorListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rowConstructorList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRowConstructorList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RowConstructorListContext rowConstructorList() throws RecognitionException {
		RowConstructorListContext _localctx = new RowConstructorListContext(_ctx, getState());
		enterRule(_localctx, 388, RULE_rowConstructorList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4106);
			match(ROW);
			setState(4107);
			assignmentValues();
			setState(4113);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,493,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4108);
					match(COMMA_);
					setState(4109);
					match(ROW);
					setState(4110);
					assignmentValues();
					}
					} 
				}
				setState(4115);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,493,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithClauseContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public List cteClause() {
			return getRuleContexts(CteClauseContext.class);
		}
		public CteClauseContext cteClause(int i) {
			return getRuleContext(CteClauseContext.class,i);
		}
		public TerminalNode RECURSIVE() { return getToken(MySQLStatementParser.RECURSIVE, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public WithClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWithClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithClauseContext withClause() throws RecognitionException {
		WithClauseContext _localctx = new WithClauseContext(_ctx, getState());
		enterRule(_localctx, 390, RULE_withClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4116);
			match(WITH);
			setState(4118);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RECURSIVE) {
				{
				setState(4117);
				match(RECURSIVE);
				}
			}

			setState(4120);
			cteClause();
			setState(4125);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4121);
				match(COMMA_);
				setState(4122);
				cteClause();
				}
				}
				setState(4127);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CteClauseContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public CteClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cteClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCteClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CteClauseContext cteClause() throws RecognitionException {
		CteClauseContext _localctx = new CteClauseContext(_ctx, getState());
		enterRule(_localctx, 392, RULE_cteClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4128);
			identifier();
			setState(4133);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LP_) {
				{
				setState(4129);
				match(LP_);
				setState(4130);
				columnNames();
				setState(4131);
				match(RP_);
				}
			}

			setState(4135);
			match(AS);
			setState(4136);
			subquery();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectSpecificationContext extends ParserRuleContext {
		public DuplicateSpecificationContext duplicateSpecification() {
			return getRuleContext(DuplicateSpecificationContext.class,0);
		}
		public TerminalNode HIGH_PRIORITY() { return getToken(MySQLStatementParser.HIGH_PRIORITY, 0); }
		public TerminalNode STRAIGHT_JOIN() { return getToken(MySQLStatementParser.STRAIGHT_JOIN, 0); }
		public TerminalNode SQL_SMALL_RESULT() { return getToken(MySQLStatementParser.SQL_SMALL_RESULT, 0); }
		public TerminalNode SQL_BIG_RESULT() { return getToken(MySQLStatementParser.SQL_BIG_RESULT, 0); }
		public TerminalNode SQL_BUFFER_RESULT() { return getToken(MySQLStatementParser.SQL_BUFFER_RESULT, 0); }
		public TerminalNode SQL_NO_CACHE() { return getToken(MySQLStatementParser.SQL_NO_CACHE, 0); }
		public TerminalNode SQL_CALC_FOUND_ROWS() { return getToken(MySQLStatementParser.SQL_CALC_FOUND_ROWS, 0); }
		public SelectSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSelectSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectSpecificationContext selectSpecification() throws RecognitionException {
		SelectSpecificationContext _localctx = new SelectSpecificationContext(_ctx, getState());
		enterRule(_localctx, 394, RULE_selectSpecification);
		try {
			setState(4146);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
			case DISTINCT:
			case DISTINCTROW:
				enterOuterAlt(_localctx, 1);
				{
				setState(4138);
				duplicateSpecification();
				}
				break;
			case HIGH_PRIORITY:
				enterOuterAlt(_localctx, 2);
				{
				setState(4139);
				match(HIGH_PRIORITY);
				}
				break;
			case STRAIGHT_JOIN:
				enterOuterAlt(_localctx, 3);
				{
				setState(4140);
				match(STRAIGHT_JOIN);
				}
				break;
			case SQL_SMALL_RESULT:
				enterOuterAlt(_localctx, 4);
				{
				setState(4141);
				match(SQL_SMALL_RESULT);
				}
				break;
			case SQL_BIG_RESULT:
				enterOuterAlt(_localctx, 5);
				{
				setState(4142);
				match(SQL_BIG_RESULT);
				}
				break;
			case SQL_BUFFER_RESULT:
				enterOuterAlt(_localctx, 6);
				{
				setState(4143);
				match(SQL_BUFFER_RESULT);
				}
				break;
			case SQL_NO_CACHE:
				enterOuterAlt(_localctx, 7);
				{
				setState(4144);
				match(SQL_NO_CACHE);
				}
				break;
			case SQL_CALC_FOUND_ROWS:
				enterOuterAlt(_localctx, 8);
				{
				setState(4145);
				match(SQL_CALC_FOUND_ROWS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DuplicateSpecificationContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySQLStatementParser.DISTINCT, 0); }
		public TerminalNode DISTINCTROW() { return getToken(MySQLStatementParser.DISTINCTROW, 0); }
		public DuplicateSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_duplicateSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDuplicateSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DuplicateSpecificationContext duplicateSpecification() throws RecognitionException {
		DuplicateSpecificationContext _localctx = new DuplicateSpecificationContext(_ctx, getState());
		enterRule(_localctx, 396, RULE_duplicateSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4148);
			_la = _input.LA(1);
			if ( !(_la==ALL || _la==DISTINCT || _la==DISTINCTROW) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProjectionsContext extends ParserRuleContext {
		public UnqualifiedShorthandContext unqualifiedShorthand() {
			return getRuleContext(UnqualifiedShorthandContext.class,0);
		}
		public List projection() {
			return getRuleContexts(ProjectionContext.class);
		}
		public ProjectionContext projection(int i) {
			return getRuleContext(ProjectionContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ProjectionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_projections; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitProjections(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ProjectionsContext projections() throws RecognitionException {
		ProjectionsContext _localctx = new ProjectionsContext(_ctx, getState());
		enterRule(_localctx, 398, RULE_projections);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4152);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ASTERISK_:
				{
				setState(4150);
				unqualifiedShorthand();
				}
				break;
			case NOT_:
			case TILDE_:
			case PLUS_:
			case MINUS_:
			case LP_:
			case LBE_:
			case QUESTION_:
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINARY:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CASE:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHAR:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CONVERT:
			case CPU:
			case CREATE:
			case CUME_DIST:
			case CURRENT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case CURRENT_USER:
			case CURSOR_NAME:
			case DATA:
			case DATABASE:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DENSE_RANK:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXISTS:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FALSE:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IF:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INTERVAL:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_TABLE:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LAG:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEAVES:
			case LEFT:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MATCH:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MOD:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOT:
			case NOWAIT:
			case NO_WAIT:
			case NTH_VALUE:
			case NTILE:
			case NULL:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERCENT_RANK:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case RANK:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEAT:
			case REPEATABLE:
			case REPLACE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case RIGHT:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW:
			case ROW_COUNT:
			case ROW_FORMAT:
			case ROW_NUMBER:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUE:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VALUES:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case JSON_ARRAY:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case NCHAR_TEXT:
			case UNDERSCORE_CHARSET:
			case NUMBER_:
			case HEX_DIGIT_:
			case BIT_NUM_:
			case IDENTIFIER_:
				{
				setState(4151);
				projection();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(4158);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,499,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4154);
					match(COMMA_);
					setState(4155);
					projection();
					}
					} 
				}
				setState(4160);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,499,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProjectionContext extends ParserRuleContext {
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public AliasContext alias() {
			return getRuleContext(AliasContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public QualifiedShorthandContext qualifiedShorthand() {
			return getRuleContext(QualifiedShorthandContext.class,0);
		}
		public ProjectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_projection; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitProjection(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ProjectionContext projection() throws RecognitionException {
		ProjectionContext _localctx = new ProjectionContext(_ctx, getState());
		enterRule(_localctx, 400, RULE_projection);
		int _la;
		try {
			setState(4169);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,502,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4161);
				expr(0);
				setState(4166);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,501,_ctx) ) {
				case 1:
					{
					setState(4163);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4162);
						match(AS);
						}
					}

					setState(4165);
					alias();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4168);
				qualifiedShorthand();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnqualifiedShorthandContext extends ParserRuleContext {
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public UnqualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unqualifiedShorthand; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUnqualifiedShorthand(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnqualifiedShorthandContext unqualifiedShorthand() throws RecognitionException {
		UnqualifiedShorthandContext _localctx = new UnqualifiedShorthandContext(_ctx, getState());
		enterRule(_localctx, 402, RULE_unqualifiedShorthand);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4171);
			match(ASTERISK_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class QualifiedShorthandContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode DOT_ASTERISK_() { return getToken(MySQLStatementParser.DOT_ASTERISK_, 0); }
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public QualifiedShorthandContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_qualifiedShorthand; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitQualifiedShorthand(this);
			else return visitor.visitChildren(this);
		}
	}

	public final QualifiedShorthandContext qualifiedShorthand() throws RecognitionException {
		QualifiedShorthandContext _localctx = new QualifiedShorthandContext(_ctx, getState());
		enterRule(_localctx, 404, RULE_qualifiedShorthand);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4176);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,503,_ctx) ) {
			case 1:
				{
				setState(4173);
				identifier();
				setState(4174);
				match(DOT_);
				}
				break;
			}
			setState(4178);
			identifier();
			setState(4179);
			match(DOT_ASTERISK_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromClauseContext extends ParserRuleContext {
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode DUAL() { return getToken(MySQLStatementParser.DUAL, 0); }
		public TableReferencesContext tableReferences() {
			return getRuleContext(TableReferencesContext.class,0);
		}
		public FromClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFromClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FromClauseContext fromClause() throws RecognitionException {
		FromClauseContext _localctx = new FromClauseContext(_ctx, getState());
		enterRule(_localctx, 406, RULE_fromClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4181);
			match(FROM);
			setState(4184);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case DUAL:
				{
				setState(4182);
				match(DUAL);
				}
				break;
			case LP_:
			case LBE_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(4183);
				tableReferences();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableReferencesContext extends ParserRuleContext {
		public List tableReference() {
			return getRuleContexts(TableReferenceContext.class);
		}
		public TableReferenceContext tableReference(int i) {
			return getRuleContext(TableReferenceContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TableReferencesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableReferences; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableReferences(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableReferencesContext tableReferences() throws RecognitionException {
		TableReferencesContext _localctx = new TableReferencesContext(_ctx, getState());
		enterRule(_localctx, 408, RULE_tableReferences);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4186);
			tableReference();
			setState(4191);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,505,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4187);
					match(COMMA_);
					setState(4188);
					tableReference();
					}
					} 
				}
				setState(4193);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,505,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EscapedTableReferenceContext extends ParserRuleContext {
		public TableFactorContext tableFactor() {
			return getRuleContext(TableFactorContext.class,0);
		}
		public List joinedTable() {
			return getRuleContexts(JoinedTableContext.class);
		}
		public JoinedTableContext joinedTable(int i) {
			return getRuleContext(JoinedTableContext.class,i);
		}
		public EscapedTableReferenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_escapedTableReference; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitEscapedTableReference(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EscapedTableReferenceContext escapedTableReference() throws RecognitionException {
		EscapedTableReferenceContext _localctx = new EscapedTableReferenceContext(_ctx, getState());
		enterRule(_localctx, 410, RULE_escapedTableReference);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4194);
			tableFactor();
			setState(4198);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==CROSS || ((((_la - 318)) & ~0x3f) == 0 && ((1L << (_la - 318)) & ((1L << (INNER - 318)) | (1L << (JOIN - 318)) | (1L << (LEFT - 318)))) != 0) || _la==NATURAL || _la==RIGHT || _la==STRAIGHT_JOIN) {
				{
				{
				setState(4195);
				joinedTable();
				}
				}
				setState(4200);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableReferenceContext extends ParserRuleContext {
		public TableFactorContext tableFactor() {
			return getRuleContext(TableFactorContext.class,0);
		}
		public TerminalNode LBE_() { return getToken(MySQLStatementParser.LBE_, 0); }
		public TerminalNode OJ() { return getToken(MySQLStatementParser.OJ, 0); }
		public EscapedTableReferenceContext escapedTableReference() {
			return getRuleContext(EscapedTableReferenceContext.class,0);
		}
		public TerminalNode RBE_() { return getToken(MySQLStatementParser.RBE_, 0); }
		public List joinedTable() {
			return getRuleContexts(JoinedTableContext.class);
		}
		public JoinedTableContext joinedTable(int i) {
			return getRuleContext(JoinedTableContext.class,i);
		}
		public TableReferenceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableReference; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableReference(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableReferenceContext tableReference() throws RecognitionException {
		TableReferenceContext _localctx = new TableReferenceContext(_ctx, getState());
		enterRule(_localctx, 412, RULE_tableReference);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4207);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(4201);
				tableFactor();
				}
				break;
			case LBE_:
				{
				setState(4202);
				match(LBE_);
				setState(4203);
				match(OJ);
				setState(4204);
				escapedTableReference();
				setState(4205);
				match(RBE_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(4212);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,508,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4209);
					joinedTable();
					}
					} 
				}
				setState(4214);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,508,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableFactorContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public PartitionNamesContext partitionNames() {
			return getRuleContext(PartitionNamesContext.class,0);
		}
		public AliasContext alias() {
			return getRuleContext(AliasContext.class,0);
		}
		public IndexHintListContext indexHintList() {
			return getRuleContext(IndexHintListContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TableReferencesContext tableReferences() {
			return getRuleContext(TableReferencesContext.class,0);
		}
		public TableFactorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableFactor; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableFactor(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableFactorContext tableFactor() throws RecognitionException {
		TableFactorContext _localctx = new TableFactorContext(_ctx, getState());
		enterRule(_localctx, 414, RULE_tableFactor);
		int _la;
		try {
			setState(4243);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,515,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4215);
				tableName();
				setState(4217);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,509,_ctx) ) {
				case 1:
					{
					setState(4216);
					partitionNames();
					}
					break;
				}
				setState(4223);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,511,_ctx) ) {
				case 1:
					{
					setState(4220);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AS) {
						{
						setState(4219);
						match(AS);
						}
					}

					setState(4222);
					alias();
					}
					break;
				}
				setState(4226);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,512,_ctx) ) {
				case 1:
					{
					setState(4225);
					indexHintList();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4228);
				subquery();
				setState(4230);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(4229);
					match(AS);
					}
				}

				setState(4232);
				alias();
				setState(4237);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,514,_ctx) ) {
				case 1:
					{
					setState(4233);
					match(LP_);
					setState(4234);
					columnNames();
					setState(4235);
					match(RP_);
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4239);
				match(LP_);
				setState(4240);
				tableReferences();
				setState(4241);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionNamesContext extends ParserRuleContext {
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public PartitionNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionNamesContext partitionNames() throws RecognitionException {
		PartitionNamesContext _localctx = new PartitionNamesContext(_ctx, getState());
		enterRule(_localctx, 416, RULE_partitionNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4245);
			match(PARTITION);
			setState(4246);
			match(LP_);
			setState(4247);
			identifier();
			setState(4252);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4248);
				match(COMMA_);
				setState(4249);
				identifier();
				}
				}
				setState(4254);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4255);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexHintListContext extends ParserRuleContext {
		public List indexHint() {
			return getRuleContexts(IndexHintContext.class);
		}
		public IndexHintContext indexHint(int i) {
			return getRuleContext(IndexHintContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public IndexHintListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexHintList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIndexHintList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexHintListContext indexHintList() throws RecognitionException {
		IndexHintListContext _localctx = new IndexHintListContext(_ctx, getState());
		enterRule(_localctx, 418, RULE_indexHintList);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4257);
			indexHint();
			setState(4262);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,517,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4258);
					match(COMMA_);
					setState(4259);
					indexHint();
					}
					} 
				}
				setState(4264);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,517,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexHintContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List indexName() {
			return getRuleContexts(IndexNameContext.class);
		}
		public IndexNameContext indexName(int i) {
			return getRuleContext(IndexNameContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode USE() { return getToken(MySQLStatementParser.USE, 0); }
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public TerminalNode FORCE() { return getToken(MySQLStatementParser.FORCE, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode JOIN() { return getToken(MySQLStatementParser.JOIN, 0); }
		public TerminalNode ORDER() { return getToken(MySQLStatementParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public IndexHintContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexHint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIndexHint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexHintContext indexHint() throws RecognitionException {
		IndexHintContext _localctx = new IndexHintContext(_ctx, getState());
		enterRule(_localctx, 420, RULE_indexHint);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4265);
			_la = _input.LA(1);
			if ( !(_la==FORCE || _la==IGNORE || _la==USE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4266);
			_la = _input.LA(1);
			if ( !(_la==INDEX || _la==KEY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4275);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(4267);
				match(FOR);
				setState(4273);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case JOIN:
					{
					setState(4268);
					match(JOIN);
					}
					break;
				case ORDER:
					{
					setState(4269);
					match(ORDER);
					setState(4270);
					match(BY);
					}
					break;
				case GROUP:
					{
					setState(4271);
					match(GROUP);
					setState(4272);
					match(BY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			setState(4277);
			match(LP_);
			setState(4278);
			indexName();
			setState(4283);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4279);
				match(COMMA_);
				setState(4280);
				indexName();
				}
				}
				setState(4285);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(4286);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JoinedTableContext extends ParserRuleContext {
		public InnerJoinTypeContext innerJoinType() {
			return getRuleContext(InnerJoinTypeContext.class,0);
		}
		public TableReferenceContext tableReference() {
			return getRuleContext(TableReferenceContext.class,0);
		}
		public JoinSpecificationContext joinSpecification() {
			return getRuleContext(JoinSpecificationContext.class,0);
		}
		public OuterJoinTypeContext outerJoinType() {
			return getRuleContext(OuterJoinTypeContext.class,0);
		}
		public NaturalJoinTypeContext naturalJoinType() {
			return getRuleContext(NaturalJoinTypeContext.class,0);
		}
		public TableFactorContext tableFactor() {
			return getRuleContext(TableFactorContext.class,0);
		}
		public JoinedTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinedTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitJoinedTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JoinedTableContext joinedTable() throws RecognitionException {
		JoinedTableContext _localctx = new JoinedTableContext(_ctx, getState());
		enterRule(_localctx, 422, RULE_joinedTable);
		try {
			setState(4300);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CROSS:
			case INNER:
			case JOIN:
			case STRAIGHT_JOIN:
				enterOuterAlt(_localctx, 1);
				{
				setState(4288);
				innerJoinType();
				setState(4289);
				tableReference();
				setState(4291);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,521,_ctx) ) {
				case 1:
					{
					setState(4290);
					joinSpecification();
					}
					break;
				}
				}
				break;
			case LEFT:
			case RIGHT:
				enterOuterAlt(_localctx, 2);
				{
				setState(4293);
				outerJoinType();
				setState(4294);
				tableReference();
				setState(4295);
				joinSpecification();
				}
				break;
			case NATURAL:
				enterOuterAlt(_localctx, 3);
				{
				setState(4297);
				naturalJoinType();
				setState(4298);
				tableFactor();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InnerJoinTypeContext extends ParserRuleContext {
		public TerminalNode JOIN() { return getToken(MySQLStatementParser.JOIN, 0); }
		public TerminalNode INNER() { return getToken(MySQLStatementParser.INNER, 0); }
		public TerminalNode CROSS() { return getToken(MySQLStatementParser.CROSS, 0); }
		public TerminalNode STRAIGHT_JOIN() { return getToken(MySQLStatementParser.STRAIGHT_JOIN, 0); }
		public InnerJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_innerJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInnerJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InnerJoinTypeContext innerJoinType() throws RecognitionException {
		InnerJoinTypeContext _localctx = new InnerJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 424, RULE_innerJoinType);
		int _la;
		try {
			setState(4307);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CROSS:
			case INNER:
			case JOIN:
				enterOuterAlt(_localctx, 1);
				{
				setState(4303);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CROSS || _la==INNER) {
					{
					setState(4302);
					_la = _input.LA(1);
					if ( !(_la==CROSS || _la==INNER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(4305);
				match(JOIN);
				}
				break;
			case STRAIGHT_JOIN:
				enterOuterAlt(_localctx, 2);
				{
				setState(4306);
				match(STRAIGHT_JOIN);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OuterJoinTypeContext extends ParserRuleContext {
		public TerminalNode JOIN() { return getToken(MySQLStatementParser.JOIN, 0); }
		public TerminalNode LEFT() { return getToken(MySQLStatementParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySQLStatementParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(MySQLStatementParser.OUTER, 0); }
		public OuterJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_outerJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOuterJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OuterJoinTypeContext outerJoinType() throws RecognitionException {
		OuterJoinTypeContext _localctx = new OuterJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 426, RULE_outerJoinType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4309);
			_la = _input.LA(1);
			if ( !(_la==LEFT || _la==RIGHT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4311);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==OUTER) {
				{
				setState(4310);
				match(OUTER);
				}
			}

			setState(4313);
			match(JOIN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NaturalJoinTypeContext extends ParserRuleContext {
		public TerminalNode NATURAL() { return getToken(MySQLStatementParser.NATURAL, 0); }
		public TerminalNode JOIN() { return getToken(MySQLStatementParser.JOIN, 0); }
		public TerminalNode INNER() { return getToken(MySQLStatementParser.INNER, 0); }
		public TerminalNode LEFT() { return getToken(MySQLStatementParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySQLStatementParser.RIGHT, 0); }
		public TerminalNode OUTER() { return getToken(MySQLStatementParser.OUTER, 0); }
		public NaturalJoinTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_naturalJoinType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNaturalJoinType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NaturalJoinTypeContext naturalJoinType() throws RecognitionException {
		NaturalJoinTypeContext _localctx = new NaturalJoinTypeContext(_ctx, getState());
		enterRule(_localctx, 428, RULE_naturalJoinType);
		int _la;
		try {
			setState(4326);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,528,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4315);
				match(NATURAL);
				setState(4317);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INNER) {
					{
					setState(4316);
					match(INNER);
					}
				}

				setState(4319);
				match(JOIN);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4320);
				match(NATURAL);
				setState(4321);
				_la = _input.LA(1);
				if ( !(_la==LEFT || _la==RIGHT) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(4323);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OUTER) {
					{
					setState(4322);
					match(OUTER);
					}
				}

				setState(4325);
				match(JOIN);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JoinSpecificationContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public JoinSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_joinSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitJoinSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JoinSpecificationContext joinSpecification() throws RecognitionException {
		JoinSpecificationContext _localctx = new JoinSpecificationContext(_ctx, getState());
		enterRule(_localctx, 430, RULE_joinSpecification);
		try {
			setState(4335);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ON:
				enterOuterAlt(_localctx, 1);
				{
				setState(4328);
				match(ON);
				setState(4329);
				expr(0);
				}
				break;
			case USING:
				enterOuterAlt(_localctx, 2);
				{
				setState(4330);
				match(USING);
				setState(4331);
				match(LP_);
				setState(4332);
				columnNames();
				setState(4333);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WhereClauseContext extends ParserRuleContext {
		public TerminalNode WHERE() { return getToken(MySQLStatementParser.WHERE, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public WhereClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_whereClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWhereClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WhereClauseContext whereClause() throws RecognitionException {
		WhereClauseContext _localctx = new WhereClauseContext(_ctx, getState());
		enterRule(_localctx, 432, RULE_whereClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4337);
			match(WHERE);
			setState(4338);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupByClauseContext extends ParserRuleContext {
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public List orderByItem() {
			return getRuleContexts(OrderByItemContext.class);
		}
		public OrderByItemContext orderByItem(int i) {
			return getRuleContext(OrderByItemContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode ROLLUP() { return getToken(MySQLStatementParser.ROLLUP, 0); }
		public GroupByClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupByClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGroupByClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupByClauseContext groupByClause() throws RecognitionException {
		GroupByClauseContext _localctx = new GroupByClauseContext(_ctx, getState());
		enterRule(_localctx, 434, RULE_groupByClause);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4340);
			match(GROUP);
			setState(4341);
			match(BY);
			setState(4342);
			orderByItem();
			setState(4347);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,530,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4343);
					match(COMMA_);
					setState(4344);
					orderByItem();
					}
					} 
				}
				setState(4349);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,530,_ctx);
			}
			setState(4352);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,531,_ctx) ) {
			case 1:
				{
				setState(4350);
				match(WITH);
				setState(4351);
				match(ROLLUP);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HavingClauseContext extends ParserRuleContext {
		public TerminalNode HAVING() { return getToken(MySQLStatementParser.HAVING, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public HavingClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_havingClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHavingClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HavingClauseContext havingClause() throws RecognitionException {
		HavingClauseContext _localctx = new HavingClauseContext(_ctx, getState());
		enterRule(_localctx, 436, RULE_havingClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4354);
			match(HAVING);
			setState(4355);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitClauseContext extends ParserRuleContext {
		public TerminalNode LIMIT() { return getToken(MySQLStatementParser.LIMIT, 0); }
		public LimitRowCountContext limitRowCount() {
			return getRuleContext(LimitRowCountContext.class,0);
		}
		public TerminalNode OFFSET() { return getToken(MySQLStatementParser.OFFSET, 0); }
		public LimitOffsetContext limitOffset() {
			return getRuleContext(LimitOffsetContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public LimitClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLimitClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LimitClauseContext limitClause() throws RecognitionException {
		LimitClauseContext _localctx = new LimitClauseContext(_ctx, getState());
		enterRule(_localctx, 438, RULE_limitClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4357);
			match(LIMIT);
			setState(4368);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,533,_ctx) ) {
			case 1:
				{
				setState(4361);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,532,_ctx) ) {
				case 1:
					{
					setState(4358);
					limitOffset();
					setState(4359);
					match(COMMA_);
					}
					break;
				}
				setState(4363);
				limitRowCount();
				}
				break;
			case 2:
				{
				setState(4364);
				limitRowCount();
				setState(4365);
				match(OFFSET);
				setState(4366);
				limitOffset();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitRowCountContext extends ParserRuleContext {
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public ParameterMarkerContext parameterMarker() {
			return getRuleContext(ParameterMarkerContext.class,0);
		}
		public LimitRowCountContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitRowCount; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLimitRowCount(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LimitRowCountContext limitRowCount() throws RecognitionException {
		LimitRowCountContext _localctx = new LimitRowCountContext(_ctx, getState());
		enterRule(_localctx, 440, RULE_limitRowCount);
		try {
			setState(4372);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4370);
				numberLiterals();
				}
				break;
			case QUESTION_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4371);
				parameterMarker();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LimitOffsetContext extends ParserRuleContext {
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public ParameterMarkerContext parameterMarker() {
			return getRuleContext(ParameterMarkerContext.class,0);
		}
		public LimitOffsetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_limitOffset; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLimitOffset(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LimitOffsetContext limitOffset() throws RecognitionException {
		LimitOffsetContext _localctx = new LimitOffsetContext(_ctx, getState());
		enterRule(_localctx, 442, RULE_limitOffset);
		try {
			setState(4376);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case PLUS_:
			case MINUS_:
			case NUMBER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4374);
				numberLiterals();
				}
				break;
			case QUESTION_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4375);
				parameterMarker();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowClauseContext extends ParserRuleContext {
		public TerminalNode WINDOW() { return getToken(MySQLStatementParser.WINDOW, 0); }
		public List windowItem() {
			return getRuleContexts(WindowItemContext.class);
		}
		public WindowItemContext windowItem(int i) {
			return getRuleContext(WindowItemContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public WindowClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWindowClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowClauseContext windowClause() throws RecognitionException {
		WindowClauseContext _localctx = new WindowClauseContext(_ctx, getState());
		enterRule(_localctx, 444, RULE_windowClause);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4378);
			match(WINDOW);
			setState(4379);
			windowItem();
			setState(4384);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,536,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(4380);
					match(COMMA_);
					setState(4381);
					windowItem();
					}
					} 
				}
				setState(4386);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,536,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowItemContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public WindowSpecificationContext windowSpecification() {
			return getRuleContext(WindowSpecificationContext.class,0);
		}
		public WindowItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWindowItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowItemContext windowItem() throws RecognitionException {
		WindowItemContext _localctx = new WindowItemContext(_ctx, getState());
		enterRule(_localctx, 446, RULE_windowItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4387);
			identifier();
			setState(4388);
			match(AS);
			setState(4389);
			windowSpecification();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubqueryContext extends ParserRuleContext {
		public QueryExpressionParensContext queryExpressionParens() {
			return getRuleContext(QueryExpressionParensContext.class,0);
		}
		public SubqueryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_subquery; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSubquery(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubqueryContext subquery() throws RecognitionException {
		SubqueryContext _localctx = new SubqueryContext(_ctx, getState());
		enterRule(_localctx, 448, RULE_subquery);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4391);
			queryExpressionParens();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectLinesIntoContext extends ParserRuleContext {
		public TerminalNode STARTING() { return getToken(MySQLStatementParser.STARTING, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode TERMINATED() { return getToken(MySQLStatementParser.TERMINATED, 0); }
		public SelectLinesIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectLinesInto; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSelectLinesInto(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectLinesIntoContext selectLinesInto() throws RecognitionException {
		SelectLinesIntoContext _localctx = new SelectLinesIntoContext(_ctx, getState());
		enterRule(_localctx, 450, RULE_selectLinesInto);
		try {
			setState(4399);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case STARTING:
				enterOuterAlt(_localctx, 1);
				{
				setState(4393);
				match(STARTING);
				setState(4394);
				match(BY);
				setState(4395);
				string_();
				}
				break;
			case TERMINATED:
				enterOuterAlt(_localctx, 2);
				{
				setState(4396);
				match(TERMINATED);
				setState(4397);
				match(BY);
				setState(4398);
				string_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectFieldsIntoContext extends ParserRuleContext {
		public TerminalNode TERMINATED() { return getToken(MySQLStatementParser.TERMINATED, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode ENCLOSED() { return getToken(MySQLStatementParser.ENCLOSED, 0); }
		public TerminalNode OPTIONALLY() { return getToken(MySQLStatementParser.OPTIONALLY, 0); }
		public TerminalNode ESCAPED() { return getToken(MySQLStatementParser.ESCAPED, 0); }
		public SelectFieldsIntoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectFieldsInto; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSelectFieldsInto(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectFieldsIntoContext selectFieldsInto() throws RecognitionException {
		SelectFieldsIntoContext _localctx = new SelectFieldsIntoContext(_ctx, getState());
		enterRule(_localctx, 452, RULE_selectFieldsInto);
		int _la;
		try {
			setState(4413);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TERMINATED:
				enterOuterAlt(_localctx, 1);
				{
				setState(4401);
				match(TERMINATED);
				setState(4402);
				match(BY);
				setState(4403);
				string_();
				}
				break;
			case ENCLOSED:
			case OPTIONALLY:
				enterOuterAlt(_localctx, 2);
				{
				setState(4405);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OPTIONALLY) {
					{
					setState(4404);
					match(OPTIONALLY);
					}
				}

				setState(4407);
				match(ENCLOSED);
				setState(4408);
				match(BY);
				setState(4409);
				string_();
				}
				break;
			case ESCAPED:
				enterOuterAlt(_localctx, 3);
				{
				setState(4410);
				match(ESCAPED);
				setState(4411);
				match(BY);
				setState(4412);
				string_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SelectIntoExpressionContext extends ParserRuleContext {
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public List variable() {
			return getRuleContexts(VariableContext.class);
		}
		public VariableContext variable(int i) {
			return getRuleContext(VariableContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode DUMPFILE() { return getToken(MySQLStatementParser.DUMPFILE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode OUTFILE() { return getToken(MySQLStatementParser.OUTFILE, 0); }
		public TerminalNode CHARACTER() { return getToken(MySQLStatementParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode COLUMNS() { return getToken(MySQLStatementParser.COLUMNS, 0); }
		public TerminalNode LINES() { return getToken(MySQLStatementParser.LINES, 0); }
		public List selectFieldsInto() {
			return getRuleContexts(SelectFieldsIntoContext.class);
		}
		public SelectFieldsIntoContext selectFieldsInto(int i) {
			return getRuleContext(SelectFieldsIntoContext.class,i);
		}
		public List selectLinesInto() {
			return getRuleContexts(SelectLinesIntoContext.class);
		}
		public SelectLinesIntoContext selectLinesInto(int i) {
			return getRuleContext(SelectLinesIntoContext.class,i);
		}
		public SelectIntoExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_selectIntoExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSelectIntoExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SelectIntoExpressionContext selectIntoExpression() throws RecognitionException {
		SelectIntoExpressionContext _localctx = new SelectIntoExpressionContext(_ctx, getState());
		enterRule(_localctx, 454, RULE_selectIntoExpression);
		try {
			int _alt;
			setState(4451);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,546,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4415);
				match(INTO);
				setState(4416);
				variable();
				setState(4421);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,540,_ctx);
				while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
					if ( _alt==1 ) {
						{
						{
						setState(4417);
						match(COMMA_);
						setState(4418);
						variable();
						}
						} 
					}
					setState(4423);
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,540,_ctx);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4424);
				match(INTO);
				setState(4425);
				match(DUMPFILE);
				setState(4426);
				string_();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				{
				setState(4427);
				match(INTO);
				setState(4428);
				match(OUTFILE);
				setState(4429);
				string_();
				setState(4433);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,541,_ctx) ) {
				case 1:
					{
					setState(4430);
					match(CHARACTER);
					setState(4431);
					match(SET);
					setState(4432);
					charsetName();
					}
					break;
				}
				setState(4441);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,543,_ctx) ) {
				case 1:
					{
					setState(4435);
					match(COLUMNS);
					setState(4437); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							{
							setState(4436);
							selectFieldsInto();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(4439); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,542,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					break;
				}
				setState(4449);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,545,_ctx) ) {
				case 1:
					{
					setState(4443);
					match(LINES);
					setState(4445); 
					_errHandler.sync(this);
					_alt = 1;
					do {
						switch (_alt) {
						case 1:
							{
							{
							setState(4444);
							selectLinesInto();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						setState(4447); 
						_errHandler.sync(this);
						_alt = getInterpreter().adaptivePredict(_input,544,_ctx);
					} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
					}
					break;
				}
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockClauseContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public LockStrengthContext lockStrength() {
			return getRuleContext(LockStrengthContext.class,0);
		}
		public TableLockingListContext tableLockingList() {
			return getRuleContext(TableLockingListContext.class,0);
		}
		public LockedRowActionContext lockedRowAction() {
			return getRuleContext(LockedRowActionContext.class,0);
		}
		public TerminalNode LOCK() { return getToken(MySQLStatementParser.LOCK, 0); }
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public TerminalNode SHARE() { return getToken(MySQLStatementParser.SHARE, 0); }
		public TerminalNode MODE() { return getToken(MySQLStatementParser.MODE, 0); }
		public LockClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLockClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockClauseContext lockClause() throws RecognitionException {
		LockClauseContext _localctx = new LockClauseContext(_ctx, getState());
		enterRule(_localctx, 456, RULE_lockClause);
		int _la;
		try {
			setState(4465);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(4453);
				match(FOR);
				setState(4454);
				lockStrength();
				setState(4456);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==OF) {
					{
					setState(4455);
					tableLockingList();
					}
				}

				setState(4459);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,548,_ctx) ) {
				case 1:
					{
					setState(4458);
					lockedRowAction();
					}
					break;
				}
				}
				break;
			case LOCK:
				enterOuterAlt(_localctx, 2);
				{
				setState(4461);
				match(LOCK);
				setState(4462);
				match(IN);
				setState(4463);
				match(SHARE);
				setState(4464);
				match(MODE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockClauseListContext extends ParserRuleContext {
		public List lockClause() {
			return getRuleContexts(LockClauseContext.class);
		}
		public LockClauseContext lockClause(int i) {
			return getRuleContext(LockClauseContext.class,i);
		}
		public LockClauseListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockClauseList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLockClauseList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockClauseListContext lockClauseList() throws RecognitionException {
		LockClauseListContext _localctx = new LockClauseListContext(_ctx, getState());
		enterRule(_localctx, 458, RULE_lockClauseList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4468); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(4467);
				lockClause();
				}
				}
				setState(4470); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==FOR || _la==LOCK );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockStrengthContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public TerminalNode SHARE() { return getToken(MySQLStatementParser.SHARE, 0); }
		public LockStrengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockStrength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLockStrength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockStrengthContext lockStrength() throws RecognitionException {
		LockStrengthContext _localctx = new LockStrengthContext(_ctx, getState());
		enterRule(_localctx, 460, RULE_lockStrength);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4472);
			_la = _input.LA(1);
			if ( !(_la==SHARE || _la==UPDATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockedRowActionContext extends ParserRuleContext {
		public TerminalNode SKIP_SYMBOL() { return getToken(MySQLStatementParser.SKIP_SYMBOL, 0); }
		public TerminalNode LOCKED() { return getToken(MySQLStatementParser.LOCKED, 0); }
		public TerminalNode NOWAIT() { return getToken(MySQLStatementParser.NOWAIT, 0); }
		public LockedRowActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockedRowAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLockedRowAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockedRowActionContext lockedRowAction() throws RecognitionException {
		LockedRowActionContext _localctx = new LockedRowActionContext(_ctx, getState());
		enterRule(_localctx, 462, RULE_lockedRowAction);
		try {
			setState(4477);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SKIP_SYMBOL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4474);
				match(SKIP_SYMBOL);
				setState(4475);
				match(LOCKED);
				}
				break;
			case NOWAIT:
				enterOuterAlt(_localctx, 2);
				{
				setState(4476);
				match(NOWAIT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableLockingListContext extends ParserRuleContext {
		public TerminalNode OF() { return getToken(MySQLStatementParser.OF, 0); }
		public TableAliasRefListContext tableAliasRefList() {
			return getRuleContext(TableAliasRefListContext.class,0);
		}
		public TableLockingListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableLockingList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableLockingList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableLockingListContext tableLockingList() throws RecognitionException {
		TableLockingListContext _localctx = new TableLockingListContext(_ctx, getState());
		enterRule(_localctx, 464, RULE_tableLockingList);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4479);
			match(OF);
			setState(4480);
			tableAliasRefList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableIdentOptWildContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode DOT_ASTERISK_() { return getToken(MySQLStatementParser.DOT_ASTERISK_, 0); }
		public TableIdentOptWildContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableIdentOptWild; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableIdentOptWild(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableIdentOptWildContext tableIdentOptWild() throws RecognitionException {
		TableIdentOptWildContext _localctx = new TableIdentOptWildContext(_ctx, getState());
		enterRule(_localctx, 466, RULE_tableIdentOptWild);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4482);
			tableName();
			setState(4484);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT_ASTERISK_) {
				{
				setState(4483);
				match(DOT_ASTERISK_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableAliasRefListContext extends ParserRuleContext {
		public List tableIdentOptWild() {
			return getRuleContexts(TableIdentOptWildContext.class);
		}
		public TableIdentOptWildContext tableIdentOptWild(int i) {
			return getRuleContext(TableIdentOptWildContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TableAliasRefListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableAliasRefList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableAliasRefList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableAliasRefListContext tableAliasRefList() throws RecognitionException {
		TableAliasRefListContext _localctx = new TableAliasRefListContext(_ctx, getState());
		enterRule(_localctx, 468, RULE_tableAliasRefList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4486);
			tableIdentOptWild();
			setState(4491);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4487);
				match(COMMA_);
				setState(4488);
				tableIdentOptWild();
				}
				}
				setState(4493);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ParameterMarkerContext extends ParserRuleContext {
		public TerminalNode QUESTION_() { return getToken(MySQLStatementParser.QUESTION_, 0); }
		public ParameterMarkerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_parameterMarker; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitParameterMarker(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ParameterMarkerContext parameterMarker() throws RecognitionException {
		ParameterMarkerContext _localctx = new ParameterMarkerContext(_ctx, getState());
		enterRule(_localctx, 470, RULE_parameterMarker);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4494);
			match(QUESTION_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CustomKeywordContext extends ParserRuleContext {
		public TerminalNode MAX() { return getToken(MySQLStatementParser.MAX, 0); }
		public TerminalNode MIN() { return getToken(MySQLStatementParser.MIN, 0); }
		public TerminalNode SUM() { return getToken(MySQLStatementParser.SUM, 0); }
		public TerminalNode COUNT() { return getToken(MySQLStatementParser.COUNT, 0); }
		public TerminalNode GROUP_CONCAT() { return getToken(MySQLStatementParser.GROUP_CONCAT, 0); }
		public TerminalNode CAST() { return getToken(MySQLStatementParser.CAST, 0); }
		public TerminalNode POSITION() { return getToken(MySQLStatementParser.POSITION, 0); }
		public TerminalNode SUBSTRING() { return getToken(MySQLStatementParser.SUBSTRING, 0); }
		public TerminalNode SUBSTR() { return getToken(MySQLStatementParser.SUBSTR, 0); }
		public TerminalNode EXTRACT() { return getToken(MySQLStatementParser.EXTRACT, 0); }
		public TerminalNode TRIM() { return getToken(MySQLStatementParser.TRIM, 0); }
		public TerminalNode LAST_DAY() { return getToken(MySQLStatementParser.LAST_DAY, 0); }
		public TerminalNode TRADITIONAL() { return getToken(MySQLStatementParser.TRADITIONAL, 0); }
		public TerminalNode TREE() { return getToken(MySQLStatementParser.TREE, 0); }
		public TerminalNode MYSQL_ADMIN() { return getToken(MySQLStatementParser.MYSQL_ADMIN, 0); }
		public TerminalNode INSTANT() { return getToken(MySQLStatementParser.INSTANT, 0); }
		public TerminalNode INPLACE() { return getToken(MySQLStatementParser.INPLACE, 0); }
		public TerminalNode COPY() { return getToken(MySQLStatementParser.COPY, 0); }
		public TerminalNode UL_BINARY() { return getToken(MySQLStatementParser.UL_BINARY, 0); }
		public TerminalNode AUTOCOMMIT() { return getToken(MySQLStatementParser.AUTOCOMMIT, 0); }
		public TerminalNode INNODB() { return getToken(MySQLStatementParser.INNODB, 0); }
		public TerminalNode REDO_LOG() { return getToken(MySQLStatementParser.REDO_LOG, 0); }
		public TerminalNode LAST_VALUE() { return getToken(MySQLStatementParser.LAST_VALUE, 0); }
		public TerminalNode PRIMARY() { return getToken(MySQLStatementParser.PRIMARY, 0); }
		public TerminalNode MAXVALUE() { return getToken(MySQLStatementParser.MAXVALUE, 0); }
		public TerminalNode BIT_XOR() { return getToken(MySQLStatementParser.BIT_XOR, 0); }
		public TerminalNode MYSQL_MAIN() { return getToken(MySQLStatementParser.MYSQL_MAIN, 0); }
		public TerminalNode UTC_DATE() { return getToken(MySQLStatementParser.UTC_DATE, 0); }
		public TerminalNode UTC_TIME() { return getToken(MySQLStatementParser.UTC_TIME, 0); }
		public TerminalNode UTC_TIMESTAMP() { return getToken(MySQLStatementParser.UTC_TIMESTAMP, 0); }
		public CustomKeywordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_customKeyword; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCustomKeyword(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CustomKeywordContext customKeyword() throws RecognitionException {
		CustomKeywordContext _localctx = new CustomKeywordContext(_ctx, getState());
		enterRule(_localctx, 472, RULE_customKeyword);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4496);
			_la = _input.LA(1);
			if ( !(((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (BIT_XOR - 49)))) != 0) || _la==LAST_VALUE || _la==MAXVALUE || _la==PRIMARY || ((((_la - 733)) & ~0x3f) == 0 && ((1L << (_la - 733)) & ((1L << (UTC_DATE - 733)) | (1L << (UTC_TIME - 733)) | (1L << (UTC_TIMESTAMP - 733)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LiteralsContext extends ParserRuleContext {
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public TemporalLiteralsContext temporalLiterals() {
			return getRuleContext(TemporalLiteralsContext.class,0);
		}
		public HexadecimalLiteralsContext hexadecimalLiterals() {
			return getRuleContext(HexadecimalLiteralsContext.class,0);
		}
		public BitValueLiteralsContext bitValueLiterals() {
			return getRuleContext(BitValueLiteralsContext.class,0);
		}
		public BooleanLiteralsContext booleanLiterals() {
			return getRuleContext(BooleanLiteralsContext.class,0);
		}
		public NullValueLiteralsContext nullValueLiterals() {
			return getRuleContext(NullValueLiteralsContext.class,0);
		}
		public LiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_literals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LiteralsContext literals() throws RecognitionException {
		LiteralsContext _localctx = new LiteralsContext(_ctx, getState());
		enterRule(_localctx, 474, RULE_literals);
		try {
			setState(4505);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,554,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4498);
				stringLiterals();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4499);
				numberLiterals();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4500);
				temporalLiterals();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4501);
				hexadecimalLiterals();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4502);
				bitValueLiterals();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4503);
				booleanLiterals();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4504);
				nullValueLiterals();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class String_Context extends ParserRuleContext {
		public TerminalNode DOUBLE_QUOTED_TEXT() { return getToken(MySQLStatementParser.DOUBLE_QUOTED_TEXT, 0); }
		public TerminalNode SINGLE_QUOTED_TEXT() { return getToken(MySQLStatementParser.SINGLE_QUOTED_TEXT, 0); }
		public String_Context(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_string_; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitString_(this);
			else return visitor.visitChildren(this);
		}
	}

	public final String_Context string_() throws RecognitionException {
		String_Context _localctx = new String_Context(_ctx, getState());
		enterRule(_localctx, 476, RULE_string_);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4507);
			_la = _input.LA(1);
			if ( !(_la==SINGLE_QUOTED_TEXT || _la==DOUBLE_QUOTED_TEXT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StringLiteralsContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode UNDERSCORE_CHARSET() { return getToken(MySQLStatementParser.UNDERSCORE_CHARSET, 0); }
		public TerminalNode UL_BINARY() { return getToken(MySQLStatementParser.UL_BINARY, 0); }
		public TerminalNode NCHAR_TEXT() { return getToken(MySQLStatementParser.NCHAR_TEXT, 0); }
		public StringLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stringLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStringLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StringLiteralsContext stringLiterals() throws RecognitionException {
		StringLiteralsContext _localctx = new StringLiteralsContext(_ctx, getState());
		enterRule(_localctx, 478, RULE_stringLiterals);
		int _la;
		try {
			setState(4514);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UL_BINARY:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
				enterOuterAlt(_localctx, 1);
				{
				setState(4510);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==UL_BINARY || _la==UNDERSCORE_CHARSET) {
					{
					setState(4509);
					_la = _input.LA(1);
					if ( !(_la==UL_BINARY || _la==UNDERSCORE_CHARSET) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(4512);
				string_();
				}
				break;
			case NCHAR_TEXT:
				enterOuterAlt(_localctx, 2);
				{
				setState(4513);
				match(NCHAR_TEXT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NumberLiteralsContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode PLUS_() { return getToken(MySQLStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(MySQLStatementParser.MINUS_, 0); }
		public NumberLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_numberLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNumberLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NumberLiteralsContext numberLiterals() throws RecognitionException {
		NumberLiteralsContext _localctx = new NumberLiteralsContext(_ctx, getState());
		enterRule(_localctx, 480, RULE_numberLiterals);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4517);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PLUS_ || _la==MINUS_) {
				{
				setState(4516);
				_la = _input.LA(1);
				if ( !(_la==PLUS_ || _la==MINUS_) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(4519);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TemporalLiteralsContext extends ParserRuleContext {
		public TerminalNode SINGLE_QUOTED_TEXT() { return getToken(MySQLStatementParser.SINGLE_QUOTED_TEXT, 0); }
		public TerminalNode DATE() { return getToken(MySQLStatementParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySQLStatementParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySQLStatementParser.TIMESTAMP, 0); }
		public TemporalLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_temporalLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTemporalLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TemporalLiteralsContext temporalLiterals() throws RecognitionException {
		TemporalLiteralsContext _localctx = new TemporalLiteralsContext(_ctx, getState());
		enterRule(_localctx, 482, RULE_temporalLiterals);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4521);
			_la = _input.LA(1);
			if ( !(_la==DATE || _la==TIME || _la==TIMESTAMP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4522);
			match(SINGLE_QUOTED_TEXT);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HexadecimalLiteralsContext extends ParserRuleContext {
		public TerminalNode HEX_DIGIT_() { return getToken(MySQLStatementParser.HEX_DIGIT_, 0); }
		public TerminalNode UNDERSCORE_CHARSET() { return getToken(MySQLStatementParser.UNDERSCORE_CHARSET, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public HexadecimalLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hexadecimalLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHexadecimalLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HexadecimalLiteralsContext hexadecimalLiterals() throws RecognitionException {
		HexadecimalLiteralsContext _localctx = new HexadecimalLiteralsContext(_ctx, getState());
		enterRule(_localctx, 484, RULE_hexadecimalLiterals);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4525);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDERSCORE_CHARSET) {
				{
				setState(4524);
				match(UNDERSCORE_CHARSET);
				}
			}

			setState(4527);
			match(HEX_DIGIT_);
			setState(4529);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,559,_ctx) ) {
			case 1:
				{
				setState(4528);
				collateClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitValueLiteralsContext extends ParserRuleContext {
		public TerminalNode BIT_NUM_() { return getToken(MySQLStatementParser.BIT_NUM_, 0); }
		public TerminalNode UNDERSCORE_CHARSET() { return getToken(MySQLStatementParser.UNDERSCORE_CHARSET, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public BitValueLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bitValueLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBitValueLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BitValueLiteralsContext bitValueLiterals() throws RecognitionException {
		BitValueLiteralsContext _localctx = new BitValueLiteralsContext(_ctx, getState());
		enterRule(_localctx, 486, RULE_bitValueLiterals);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4532);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNDERSCORE_CHARSET) {
				{
				setState(4531);
				match(UNDERSCORE_CHARSET);
				}
			}

			setState(4534);
			match(BIT_NUM_);
			setState(4536);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,561,_ctx) ) {
			case 1:
				{
				setState(4535);
				collateClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BooleanLiteralsContext extends ParserRuleContext {
		public TerminalNode TRUE() { return getToken(MySQLStatementParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySQLStatementParser.FALSE, 0); }
		public BooleanLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_booleanLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBooleanLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BooleanLiteralsContext booleanLiterals() throws RecognitionException {
		BooleanLiteralsContext _localctx = new BooleanLiteralsContext(_ctx, getState());
		enterRule(_localctx, 488, RULE_booleanLiterals);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4538);
			_la = _input.LA(1);
			if ( !(_la==FALSE || _la==TRUE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NullValueLiteralsContext extends ParserRuleContext {
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public NullValueLiteralsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nullValueLiterals; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNullValueLiterals(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NullValueLiteralsContext nullValueLiterals() throws RecognitionException {
		NullValueLiteralsContext _localctx = new NullValueLiteralsContext(_ctx, getState());
		enterRule(_localctx, 490, RULE_nullValueLiterals);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4540);
			match(NULL);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollationNameContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public CollationNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collationName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCollationName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollationNameContext collationName() throws RecognitionException {
		CollationNameContext _localctx = new CollationNameContext(_ctx, getState());
		enterRule(_localctx, 492, RULE_collationName);
		try {
			setState(4544);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4542);
				textOrIdentifier();
				}
				break;
			case BINARY:
				enterOuterAlt(_localctx, 2);
				{
				setState(4543);
				match(BINARY);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierContext extends ParserRuleContext {
		public TerminalNode IDENTIFIER_() { return getToken(MySQLStatementParser.IDENTIFIER_, 0); }
		public IdentifierKeywordsUnambiguousContext identifierKeywordsUnambiguous() {
			return getRuleContext(IdentifierKeywordsUnambiguousContext.class,0);
		}
		public IdentifierKeywordsAmbiguous1RolesAndLabelsContext identifierKeywordsAmbiguous1RolesAndLabels() {
			return getRuleContext(IdentifierKeywordsAmbiguous1RolesAndLabelsContext.class,0);
		}
		public IdentifierKeywordsAmbiguous2LabelsContext identifierKeywordsAmbiguous2Labels() {
			return getRuleContext(IdentifierKeywordsAmbiguous2LabelsContext.class,0);
		}
		public IdentifierKeywordsAmbiguous3RolesContext identifierKeywordsAmbiguous3Roles() {
			return getRuleContext(IdentifierKeywordsAmbiguous3RolesContext.class,0);
		}
		public IdentifierKeywordsAmbiguous4SystemVariablesContext identifierKeywordsAmbiguous4SystemVariables() {
			return getRuleContext(IdentifierKeywordsAmbiguous4SystemVariablesContext.class,0);
		}
		public CustomKeywordContext customKeyword() {
			return getRuleContext(CustomKeywordContext.class,0);
		}
		public TerminalNode DOUBLE_QUOTED_TEXT() { return getToken(MySQLStatementParser.DOUBLE_QUOTED_TEXT, 0); }
		public TerminalNode UNDERSCORE_CHARSET() { return getToken(MySQLStatementParser.UNDERSCORE_CHARSET, 0); }
		public IdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierContext identifier() throws RecognitionException {
		IdentifierContext _localctx = new IdentifierContext(_ctx, getState());
		enterRule(_localctx, 494, RULE_identifier);
		try {
			setState(4555);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4546);
				match(IDENTIFIER_);
				}
				break;
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FOLLOWING:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GRANTS:
			case GROUP_REPLICATION:
			case HASH:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LAST:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NODEGROUP:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDING:
			case PRESERVE:
			case PREV:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case REMOVE:
			case REORGANIZE:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REQUIRE_ROW_FORMAT:
			case RESPECT:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SHARE:
			case SIMPLE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XID:
			case XML:
			case YEAR:
				enterOuterAlt(_localctx, 2);
				{
				setState(4547);
				identifierKeywordsUnambiguous();
				}
				break;
			case EXECUTE:
			case RESTART:
			case SHUTDOWN:
				enterOuterAlt(_localctx, 3);
				{
				setState(4548);
				identifierKeywordsAmbiguous1RolesAndLabels();
				}
				break;
			case ASCII:
			case BEGIN:
			case BYTE:
			case CACHE:
			case CHARSET:
			case CHECKSUM:
			case CLONE:
			case COMMENT:
			case COMMIT:
			case CONTAINS:
			case DEALLOCATE:
			case DO:
			case END:
			case FLUSH:
			case FOLLOWS:
			case HANDLER:
			case HELP:
			case IMPORT:
			case INSTALL:
			case LANGUAGE:
			case NO:
			case PRECEDES:
			case PREPARE:
			case REPAIR:
			case RESET:
			case ROLLBACK:
			case SAVEPOINT:
			case SIGNED:
			case SLAVE:
			case START:
			case STOP:
			case TRUNCATE:
			case UNICODE:
			case UNINSTALL:
			case XA:
				enterOuterAlt(_localctx, 4);
				{
				setState(4549);
				identifierKeywordsAmbiguous2Labels();
				}
				break;
			case EVENT:
			case FILE:
			case NONE:
			case PROCESS:
			case PROXY:
			case RELOAD:
			case REPLICATION:
			case RESOURCE:
			case SUPER:
				enterOuterAlt(_localctx, 5);
				{
				setState(4550);
				identifierKeywordsAmbiguous3Roles();
				}
				break;
			case GLOBAL:
			case LOCAL:
			case PERSIST:
			case PERSIST_ONLY:
			case SESSION:
				enterOuterAlt(_localctx, 6);
				{
				setState(4551);
				identifierKeywordsAmbiguous4SystemVariables();
				}
				break;
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case BIT_XOR:
			case LAST_VALUE:
			case MAXVALUE:
			case PRIMARY:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
				enterOuterAlt(_localctx, 7);
				{
				setState(4552);
				customKeyword();
				}
				break;
			case DOUBLE_QUOTED_TEXT:
				enterOuterAlt(_localctx, 8);
				{
				setState(4553);
				match(DOUBLE_QUOTED_TEXT);
				}
				break;
			case UNDERSCORE_CHARSET:
				enterOuterAlt(_localctx, 9);
				{
				setState(4554);
				match(UNDERSCORE_CHARSET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierKeywordsUnambiguousContext extends ParserRuleContext {
		public TerminalNode ACTION() { return getToken(MySQLStatementParser.ACTION, 0); }
		public TerminalNode ACCOUNT() { return getToken(MySQLStatementParser.ACCOUNT, 0); }
		public TerminalNode ACTIVE() { return getToken(MySQLStatementParser.ACTIVE, 0); }
		public TerminalNode ADMIN() { return getToken(MySQLStatementParser.ADMIN, 0); }
		public TerminalNode AFTER() { return getToken(MySQLStatementParser.AFTER, 0); }
		public TerminalNode AGAINST() { return getToken(MySQLStatementParser.AGAINST, 0); }
		public TerminalNode AGGREGATE() { return getToken(MySQLStatementParser.AGGREGATE, 0); }
		public TerminalNode ALGORITHM() { return getToken(MySQLStatementParser.ALGORITHM, 0); }
		public TerminalNode ALWAYS() { return getToken(MySQLStatementParser.ALWAYS, 0); }
		public TerminalNode ANY() { return getToken(MySQLStatementParser.ANY, 0); }
		public TerminalNode ARRAY() { return getToken(MySQLStatementParser.ARRAY, 0); }
		public TerminalNode AT() { return getToken(MySQLStatementParser.AT, 0); }
		public TerminalNode ATTRIBUTE() { return getToken(MySQLStatementParser.ATTRIBUTE, 0); }
		public TerminalNode AUTOEXTEND_SIZE() { return getToken(MySQLStatementParser.AUTOEXTEND_SIZE, 0); }
		public TerminalNode AUTO_INCREMENT() { return getToken(MySQLStatementParser.AUTO_INCREMENT, 0); }
		public TerminalNode AVG_ROW_LENGTH() { return getToken(MySQLStatementParser.AVG_ROW_LENGTH, 0); }
		public TerminalNode AVG() { return getToken(MySQLStatementParser.AVG, 0); }
		public TerminalNode BACKUP() { return getToken(MySQLStatementParser.BACKUP, 0); }
		public TerminalNode BINLOG() { return getToken(MySQLStatementParser.BINLOG, 0); }
		public TerminalNode BIT() { return getToken(MySQLStatementParser.BIT, 0); }
		public TerminalNode BLOCK() { return getToken(MySQLStatementParser.BLOCK, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySQLStatementParser.BOOLEAN, 0); }
		public TerminalNode BOOL() { return getToken(MySQLStatementParser.BOOL, 0); }
		public TerminalNode BTREE() { return getToken(MySQLStatementParser.BTREE, 0); }
		public TerminalNode BUCKETS() { return getToken(MySQLStatementParser.BUCKETS, 0); }
		public TerminalNode CASCADED() { return getToken(MySQLStatementParser.CASCADED, 0); }
		public TerminalNode CATALOG_NAME() { return getToken(MySQLStatementParser.CATALOG_NAME, 0); }
		public TerminalNode CHAIN() { return getToken(MySQLStatementParser.CHAIN, 0); }
		public TerminalNode CHANGED() { return getToken(MySQLStatementParser.CHANGED, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public TerminalNode CIPHER() { return getToken(MySQLStatementParser.CIPHER, 0); }
		public TerminalNode CLASS_ORIGIN() { return getToken(MySQLStatementParser.CLASS_ORIGIN, 0); }
		public TerminalNode CLIENT() { return getToken(MySQLStatementParser.CLIENT, 0); }
		public TerminalNode CLOSE() { return getToken(MySQLStatementParser.CLOSE, 0); }
		public TerminalNode COALESCE() { return getToken(MySQLStatementParser.COALESCE, 0); }
		public TerminalNode CODE() { return getToken(MySQLStatementParser.CODE, 0); }
		public TerminalNode COLLATION() { return getToken(MySQLStatementParser.COLLATION, 0); }
		public TerminalNode COLUMNS() { return getToken(MySQLStatementParser.COLUMNS, 0); }
		public TerminalNode COLUMN_FORMAT() { return getToken(MySQLStatementParser.COLUMN_FORMAT, 0); }
		public TerminalNode COLUMN_NAME() { return getToken(MySQLStatementParser.COLUMN_NAME, 0); }
		public TerminalNode COMMITTED() { return getToken(MySQLStatementParser.COMMITTED, 0); }
		public TerminalNode COMPACT() { return getToken(MySQLStatementParser.COMPACT, 0); }
		public TerminalNode COMPLETION() { return getToken(MySQLStatementParser.COMPLETION, 0); }
		public TerminalNode COMPONENT() { return getToken(MySQLStatementParser.COMPONENT, 0); }
		public TerminalNode COMPRESSED() { return getToken(MySQLStatementParser.COMPRESSED, 0); }
		public TerminalNode COMPRESSION() { return getToken(MySQLStatementParser.COMPRESSION, 0); }
		public TerminalNode CONCURRENT() { return getToken(MySQLStatementParser.CONCURRENT, 0); }
		public TerminalNode CONNECTION() { return getToken(MySQLStatementParser.CONNECTION, 0); }
		public TerminalNode CONSISTENT() { return getToken(MySQLStatementParser.CONSISTENT, 0); }
		public TerminalNode CONSTRAINT_CATALOG() { return getToken(MySQLStatementParser.CONSTRAINT_CATALOG, 0); }
		public TerminalNode CONSTRAINT_NAME() { return getToken(MySQLStatementParser.CONSTRAINT_NAME, 0); }
		public TerminalNode CONSTRAINT_SCHEMA() { return getToken(MySQLStatementParser.CONSTRAINT_SCHEMA, 0); }
		public TerminalNode CONTEXT() { return getToken(MySQLStatementParser.CONTEXT, 0); }
		public TerminalNode CPU() { return getToken(MySQLStatementParser.CPU, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public TerminalNode CURSOR_NAME() { return getToken(MySQLStatementParser.CURSOR_NAME, 0); }
		public TerminalNode DATAFILE() { return getToken(MySQLStatementParser.DATAFILE, 0); }
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode DATETIME() { return getToken(MySQLStatementParser.DATETIME, 0); }
		public TerminalNode DATE() { return getToken(MySQLStatementParser.DATE, 0); }
		public TerminalNode DAY() { return getToken(MySQLStatementParser.DAY, 0); }
		public TerminalNode DEFAULT_AUTH() { return getToken(MySQLStatementParser.DEFAULT_AUTH, 0); }
		public TerminalNode DEFINER() { return getToken(MySQLStatementParser.DEFINER, 0); }
		public TerminalNode DEFINITION() { return getToken(MySQLStatementParser.DEFINITION, 0); }
		public TerminalNode DELAY_KEY_WRITE() { return getToken(MySQLStatementParser.DELAY_KEY_WRITE, 0); }
		public TerminalNode DESCRIPTION() { return getToken(MySQLStatementParser.DESCRIPTION, 0); }
		public TerminalNode DIAGNOSTICS() { return getToken(MySQLStatementParser.DIAGNOSTICS, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySQLStatementParser.DIRECTORY, 0); }
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public TerminalNode DISCARD() { return getToken(MySQLStatementParser.DISCARD, 0); }
		public TerminalNode DISK() { return getToken(MySQLStatementParser.DISK, 0); }
		public TerminalNode DUMPFILE() { return getToken(MySQLStatementParser.DUMPFILE, 0); }
		public TerminalNode DUPLICATE() { return getToken(MySQLStatementParser.DUPLICATE, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySQLStatementParser.DYNAMIC, 0); }
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode ENCRYPTION() { return getToken(MySQLStatementParser.ENCRYPTION, 0); }
		public TerminalNode ENDS() { return getToken(MySQLStatementParser.ENDS, 0); }
		public TerminalNode ENFORCED() { return getToken(MySQLStatementParser.ENFORCED, 0); }
		public TerminalNode ENGINES() { return getToken(MySQLStatementParser.ENGINES, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public TerminalNode ENGINE_ATTRIBUTE() { return getToken(MySQLStatementParser.ENGINE_ATTRIBUTE, 0); }
		public TerminalNode ENUM() { return getToken(MySQLStatementParser.ENUM, 0); }
		public TerminalNode ERRORS() { return getToken(MySQLStatementParser.ERRORS, 0); }
		public TerminalNode ERROR() { return getToken(MySQLStatementParser.ERROR, 0); }
		public TerminalNode ESCAPE() { return getToken(MySQLStatementParser.ESCAPE, 0); }
		public TerminalNode EVENTS() { return getToken(MySQLStatementParser.EVENTS, 0); }
		public TerminalNode EVERY() { return getToken(MySQLStatementParser.EVERY, 0); }
		public TerminalNode EXCHANGE() { return getToken(MySQLStatementParser.EXCHANGE, 0); }
		public TerminalNode EXCLUDE() { return getToken(MySQLStatementParser.EXCLUDE, 0); }
		public TerminalNode EXPANSION() { return getToken(MySQLStatementParser.EXPANSION, 0); }
		public TerminalNode EXPIRE() { return getToken(MySQLStatementParser.EXPIRE, 0); }
		public TerminalNode EXPORT() { return getToken(MySQLStatementParser.EXPORT, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode EXTENT_SIZE() { return getToken(MySQLStatementParser.EXTENT_SIZE, 0); }
		public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(MySQLStatementParser.FAILED_LOGIN_ATTEMPTS, 0); }
		public TerminalNode FAST() { return getToken(MySQLStatementParser.FAST, 0); }
		public TerminalNode FAULTS() { return getToken(MySQLStatementParser.FAULTS, 0); }
		public TerminalNode FILE_BLOCK_SIZE() { return getToken(MySQLStatementParser.FILE_BLOCK_SIZE, 0); }
		public TerminalNode FILTER() { return getToken(MySQLStatementParser.FILTER, 0); }
		public TerminalNode FIRST() { return getToken(MySQLStatementParser.FIRST, 0); }
		public TerminalNode FIXED() { return getToken(MySQLStatementParser.FIXED, 0); }
		public TerminalNode FOLLOWING() { return getToken(MySQLStatementParser.FOLLOWING, 0); }
		public TerminalNode FORMAT() { return getToken(MySQLStatementParser.FORMAT, 0); }
		public TerminalNode FOUND() { return getToken(MySQLStatementParser.FOUND, 0); }
		public TerminalNode FULL() { return getToken(MySQLStatementParser.FULL, 0); }
		public TerminalNode GENERAL() { return getToken(MySQLStatementParser.GENERAL, 0); }
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySQLStatementParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode GEOMETRY() { return getToken(MySQLStatementParser.GEOMETRY, 0); }
		public TerminalNode GET_FORMAT() { return getToken(MySQLStatementParser.GET_FORMAT, 0); }
		public TerminalNode GET_MASTER_PUBLIC_KEY() { return getToken(MySQLStatementParser.GET_MASTER_PUBLIC_KEY, 0); }
		public TerminalNode GRANTS() { return getToken(MySQLStatementParser.GRANTS, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySQLStatementParser.GROUP_REPLICATION, 0); }
		public TerminalNode HASH() { return getToken(MySQLStatementParser.HASH, 0); }
		public TerminalNode HISTOGRAM() { return getToken(MySQLStatementParser.HISTOGRAM, 0); }
		public TerminalNode HISTORY() { return getToken(MySQLStatementParser.HISTORY, 0); }
		public TerminalNode HOSTS() { return getToken(MySQLStatementParser.HOSTS, 0); }
		public TerminalNode HOST() { return getToken(MySQLStatementParser.HOST, 0); }
		public TerminalNode HOUR() { return getToken(MySQLStatementParser.HOUR, 0); }
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode IGNORE_SERVER_IDS() { return getToken(MySQLStatementParser.IGNORE_SERVER_IDS, 0); }
		public TerminalNode INACTIVE() { return getToken(MySQLStatementParser.INACTIVE, 0); }
		public TerminalNode INDEXES() { return getToken(MySQLStatementParser.INDEXES, 0); }
		public TerminalNode INITIAL_SIZE() { return getToken(MySQLStatementParser.INITIAL_SIZE, 0); }
		public TerminalNode INSERT_METHOD() { return getToken(MySQLStatementParser.INSERT_METHOD, 0); }
		public TerminalNode INSTANCE() { return getToken(MySQLStatementParser.INSTANCE, 0); }
		public TerminalNode INVISIBLE() { return getToken(MySQLStatementParser.INVISIBLE, 0); }
		public TerminalNode INVOKER() { return getToken(MySQLStatementParser.INVOKER, 0); }
		public TerminalNode IO() { return getToken(MySQLStatementParser.IO, 0); }
		public TerminalNode IPC() { return getToken(MySQLStatementParser.IPC, 0); }
		public TerminalNode ISOLATION() { return getToken(MySQLStatementParser.ISOLATION, 0); }
		public TerminalNode ISSUER() { return getToken(MySQLStatementParser.ISSUER, 0); }
		public TerminalNode JSON() { return getToken(MySQLStatementParser.JSON, 0); }
		public TerminalNode JSON_VALUE() { return getToken(MySQLStatementParser.JSON_VALUE, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode KEY_BLOCK_SIZE() { return getToken(MySQLStatementParser.KEY_BLOCK_SIZE, 0); }
		public TerminalNode LAST() { return getToken(MySQLStatementParser.LAST, 0); }
		public TerminalNode LEAVES() { return getToken(MySQLStatementParser.LEAVES, 0); }
		public TerminalNode LESS() { return getToken(MySQLStatementParser.LESS, 0); }
		public TerminalNode LEVEL() { return getToken(MySQLStatementParser.LEVEL, 0); }
		public TerminalNode LINESTRING() { return getToken(MySQLStatementParser.LINESTRING, 0); }
		public TerminalNode LIST() { return getToken(MySQLStatementParser.LIST, 0); }
		public TerminalNode LOCKED() { return getToken(MySQLStatementParser.LOCKED, 0); }
		public TerminalNode LOCKS() { return getToken(MySQLStatementParser.LOCKS, 0); }
		public TerminalNode LOGFILE() { return getToken(MySQLStatementParser.LOGFILE, 0); }
		public TerminalNode LOGS() { return getToken(MySQLStatementParser.LOGS, 0); }
		public TerminalNode MASTER_AUTO_POSITION() { return getToken(MySQLStatementParser.MASTER_AUTO_POSITION, 0); }
		public TerminalNode MASTER_COMPRESSION_ALGORITHM() { return getToken(MySQLStatementParser.MASTER_COMPRESSION_ALGORITHM, 0); }
		public TerminalNode MASTER_CONNECT_RETRY() { return getToken(MySQLStatementParser.MASTER_CONNECT_RETRY, 0); }
		public TerminalNode MASTER_DELAY() { return getToken(MySQLStatementParser.MASTER_DELAY, 0); }
		public TerminalNode MASTER_HEARTBEAT_PERIOD() { return getToken(MySQLStatementParser.MASTER_HEARTBEAT_PERIOD, 0); }
		public TerminalNode MASTER_HOST() { return getToken(MySQLStatementParser.MASTER_HOST, 0); }
		public TerminalNode NETWORK_NAMESPACE() { return getToken(MySQLStatementParser.NETWORK_NAMESPACE, 0); }
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySQLStatementParser.MASTER_LOG_FILE, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySQLStatementParser.MASTER_LOG_POS, 0); }
		public TerminalNode MASTER_PASSWORD() { return getToken(MySQLStatementParser.MASTER_PASSWORD, 0); }
		public TerminalNode MASTER_PORT() { return getToken(MySQLStatementParser.MASTER_PORT, 0); }
		public TerminalNode MASTER_PUBLIC_KEY_PATH() { return getToken(MySQLStatementParser.MASTER_PUBLIC_KEY_PATH, 0); }
		public TerminalNode MASTER_RETRY_COUNT() { return getToken(MySQLStatementParser.MASTER_RETRY_COUNT, 0); }
		public TerminalNode MASTER_SERVER_ID() { return getToken(MySQLStatementParser.MASTER_SERVER_ID, 0); }
		public TerminalNode MASTER_SSL_CAPATH() { return getToken(MySQLStatementParser.MASTER_SSL_CAPATH, 0); }
		public TerminalNode MASTER_SSL_CA() { return getToken(MySQLStatementParser.MASTER_SSL_CA, 0); }
		public TerminalNode MASTER_SSL_CERT() { return getToken(MySQLStatementParser.MASTER_SSL_CERT, 0); }
		public TerminalNode MASTER_SSL_CIPHER() { return getToken(MySQLStatementParser.MASTER_SSL_CIPHER, 0); }
		public TerminalNode MASTER_SSL_CRLPATH() { return getToken(MySQLStatementParser.MASTER_SSL_CRLPATH, 0); }
		public TerminalNode MASTER_SSL_CRL() { return getToken(MySQLStatementParser.MASTER_SSL_CRL, 0); }
		public TerminalNode MASTER_SSL_KEY() { return getToken(MySQLStatementParser.MASTER_SSL_KEY, 0); }
		public TerminalNode MASTER_SSL() { return getToken(MySQLStatementParser.MASTER_SSL, 0); }
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public TerminalNode MASTER_TLS_CIPHERSUITES() { return getToken(MySQLStatementParser.MASTER_TLS_CIPHERSUITES, 0); }
		public TerminalNode MASTER_TLS_VERSION() { return getToken(MySQLStatementParser.MASTER_TLS_VERSION, 0); }
		public TerminalNode MASTER_USER() { return getToken(MySQLStatementParser.MASTER_USER, 0); }
		public TerminalNode MASTER_ZSTD_COMPRESSION_LEVEL() { return getToken(MySQLStatementParser.MASTER_ZSTD_COMPRESSION_LEVEL, 0); }
		public TerminalNode MAX_CONNECTIONS_PER_HOUR() { return getToken(MySQLStatementParser.MAX_CONNECTIONS_PER_HOUR, 0); }
		public TerminalNode MAX_QUERIES_PER_HOUR() { return getToken(MySQLStatementParser.MAX_QUERIES_PER_HOUR, 0); }
		public TerminalNode MAX_ROWS() { return getToken(MySQLStatementParser.MAX_ROWS, 0); }
		public TerminalNode MAX_SIZE() { return getToken(MySQLStatementParser.MAX_SIZE, 0); }
		public TerminalNode MAX_UPDATES_PER_HOUR() { return getToken(MySQLStatementParser.MAX_UPDATES_PER_HOUR, 0); }
		public TerminalNode MAX_USER_CONNECTIONS() { return getToken(MySQLStatementParser.MAX_USER_CONNECTIONS, 0); }
		public TerminalNode MEDIUM() { return getToken(MySQLStatementParser.MEDIUM, 0); }
		public TerminalNode MEMBER() { return getToken(MySQLStatementParser.MEMBER, 0); }
		public TerminalNode MEMORY() { return getToken(MySQLStatementParser.MEMORY, 0); }
		public TerminalNode MERGE() { return getToken(MySQLStatementParser.MERGE, 0); }
		public TerminalNode MESSAGE_TEXT() { return getToken(MySQLStatementParser.MESSAGE_TEXT, 0); }
		public TerminalNode MICROSECOND() { return getToken(MySQLStatementParser.MICROSECOND, 0); }
		public TerminalNode MIGRATE() { return getToken(MySQLStatementParser.MIGRATE, 0); }
		public TerminalNode MINUTE() { return getToken(MySQLStatementParser.MINUTE, 0); }
		public TerminalNode MIN_ROWS() { return getToken(MySQLStatementParser.MIN_ROWS, 0); }
		public TerminalNode MODE() { return getToken(MySQLStatementParser.MODE, 0); }
		public TerminalNode MODIFY() { return getToken(MySQLStatementParser.MODIFY, 0); }
		public TerminalNode MONTH() { return getToken(MySQLStatementParser.MONTH, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySQLStatementParser.MULTILINESTRING, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySQLStatementParser.MULTIPOINT, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySQLStatementParser.MULTIPOLYGON, 0); }
		public TerminalNode MUTEX() { return getToken(MySQLStatementParser.MUTEX, 0); }
		public TerminalNode MYSQL_ERRNO() { return getToken(MySQLStatementParser.MYSQL_ERRNO, 0); }
		public TerminalNode NAMES() { return getToken(MySQLStatementParser.NAMES, 0); }
		public TerminalNode NAME() { return getToken(MySQLStatementParser.NAME, 0); }
		public TerminalNode NATIONAL() { return getToken(MySQLStatementParser.NATIONAL, 0); }
		public TerminalNode NCHAR() { return getToken(MySQLStatementParser.NCHAR, 0); }
		public TerminalNode NDBCLUSTER() { return getToken(MySQLStatementParser.NDBCLUSTER, 0); }
		public TerminalNode NESTED() { return getToken(MySQLStatementParser.NESTED, 0); }
		public TerminalNode NEVER() { return getToken(MySQLStatementParser.NEVER, 0); }
		public TerminalNode NEW() { return getToken(MySQLStatementParser.NEW, 0); }
		public TerminalNode NEXT() { return getToken(MySQLStatementParser.NEXT, 0); }
		public TerminalNode NODEGROUP() { return getToken(MySQLStatementParser.NODEGROUP, 0); }
		public TerminalNode NOWAIT() { return getToken(MySQLStatementParser.NOWAIT, 0); }
		public TerminalNode NO_WAIT() { return getToken(MySQLStatementParser.NO_WAIT, 0); }
		public TerminalNode NULLS() { return getToken(MySQLStatementParser.NULLS, 0); }
		public TerminalNode NUMBER() { return getToken(MySQLStatementParser.NUMBER, 0); }
		public TerminalNode NVARCHAR() { return getToken(MySQLStatementParser.NVARCHAR, 0); }
		public TerminalNode OFF() { return getToken(MySQLStatementParser.OFF, 0); }
		public TerminalNode OFFSET() { return getToken(MySQLStatementParser.OFFSET, 0); }
		public TerminalNode OJ() { return getToken(MySQLStatementParser.OJ, 0); }
		public TerminalNode OLD() { return getToken(MySQLStatementParser.OLD, 0); }
		public TerminalNode ONE() { return getToken(MySQLStatementParser.ONE, 0); }
		public TerminalNode ONLY() { return getToken(MySQLStatementParser.ONLY, 0); }
		public TerminalNode OPEN() { return getToken(MySQLStatementParser.OPEN, 0); }
		public TerminalNode OPTIONAL() { return getToken(MySQLStatementParser.OPTIONAL, 0); }
		public TerminalNode OPTIONS() { return getToken(MySQLStatementParser.OPTIONS, 0); }
		public TerminalNode ORDINALITY() { return getToken(MySQLStatementParser.ORDINALITY, 0); }
		public TerminalNode ORGANIZATION() { return getToken(MySQLStatementParser.ORGANIZATION, 0); }
		public TerminalNode OTHERS() { return getToken(MySQLStatementParser.OTHERS, 0); }
		public TerminalNode OWNER() { return getToken(MySQLStatementParser.OWNER, 0); }
		public TerminalNode PACK_KEYS() { return getToken(MySQLStatementParser.PACK_KEYS, 0); }
		public TerminalNode PAGE() { return getToken(MySQLStatementParser.PAGE, 0); }
		public TerminalNode PARSER() { return getToken(MySQLStatementParser.PARSER, 0); }
		public TerminalNode PARTIAL() { return getToken(MySQLStatementParser.PARTIAL, 0); }
		public TerminalNode PARTITIONING() { return getToken(MySQLStatementParser.PARTITIONING, 0); }
		public TerminalNode PARTITIONS() { return getToken(MySQLStatementParser.PARTITIONS, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public TerminalNode PASSWORD_LOCK_TIME() { return getToken(MySQLStatementParser.PASSWORD_LOCK_TIME, 0); }
		public TerminalNode PATH() { return getToken(MySQLStatementParser.PATH, 0); }
		public TerminalNode PHASE() { return getToken(MySQLStatementParser.PHASE, 0); }
		public TerminalNode PLUGINS() { return getToken(MySQLStatementParser.PLUGINS, 0); }
		public TerminalNode PLUGIN_DIR() { return getToken(MySQLStatementParser.PLUGIN_DIR, 0); }
		public TerminalNode PLUGIN() { return getToken(MySQLStatementParser.PLUGIN, 0); }
		public TerminalNode POINT() { return getToken(MySQLStatementParser.POINT, 0); }
		public TerminalNode POLYGON() { return getToken(MySQLStatementParser.POLYGON, 0); }
		public TerminalNode PORT() { return getToken(MySQLStatementParser.PORT, 0); }
		public TerminalNode PRECEDING() { return getToken(MySQLStatementParser.PRECEDING, 0); }
		public TerminalNode PRESERVE() { return getToken(MySQLStatementParser.PRESERVE, 0); }
		public TerminalNode PREV() { return getToken(MySQLStatementParser.PREV, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySQLStatementParser.PRIVILEGES, 0); }
		public TerminalNode PRIVILEGE_CHECKS_USER() { return getToken(MySQLStatementParser.PRIVILEGE_CHECKS_USER, 0); }
		public TerminalNode PROCESSLIST() { return getToken(MySQLStatementParser.PROCESSLIST, 0); }
		public TerminalNode PROFILES() { return getToken(MySQLStatementParser.PROFILES, 0); }
		public TerminalNode PROFILE() { return getToken(MySQLStatementParser.PROFILE, 0); }
		public TerminalNode QUARTER() { return getToken(MySQLStatementParser.QUARTER, 0); }
		public TerminalNode QUERY() { return getToken(MySQLStatementParser.QUERY, 0); }
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode RANDOM() { return getToken(MySQLStatementParser.RANDOM, 0); }
		public TerminalNode READ_ONLY() { return getToken(MySQLStatementParser.READ_ONLY, 0); }
		public TerminalNode REBUILD() { return getToken(MySQLStatementParser.REBUILD, 0); }
		public TerminalNode RECOVER() { return getToken(MySQLStatementParser.RECOVER, 0); }
		public TerminalNode REDO_BUFFER_SIZE() { return getToken(MySQLStatementParser.REDO_BUFFER_SIZE, 0); }
		public TerminalNode REDUNDANT() { return getToken(MySQLStatementParser.REDUNDANT, 0); }
		public TerminalNode REFERENCE() { return getToken(MySQLStatementParser.REFERENCE, 0); }
		public TerminalNode RELAY() { return getToken(MySQLStatementParser.RELAY, 0); }
		public TerminalNode RELAYLOG() { return getToken(MySQLStatementParser.RELAYLOG, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySQLStatementParser.RELAY_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySQLStatementParser.RELAY_LOG_POS, 0); }
		public TerminalNode RELAY_THREAD() { return getToken(MySQLStatementParser.RELAY_THREAD, 0); }
		public TerminalNode REMOVE() { return getToken(MySQLStatementParser.REMOVE, 0); }
		public TerminalNode REORGANIZE() { return getToken(MySQLStatementParser.REORGANIZE, 0); }
		public TerminalNode REPEATABLE() { return getToken(MySQLStatementParser.REPEATABLE, 0); }
		public TerminalNode REPLICATE_DO_DB() { return getToken(MySQLStatementParser.REPLICATE_DO_DB, 0); }
		public TerminalNode REPLICATE_DO_TABLE() { return getToken(MySQLStatementParser.REPLICATE_DO_TABLE, 0); }
		public TerminalNode REPLICATE_IGNORE_DB() { return getToken(MySQLStatementParser.REPLICATE_IGNORE_DB, 0); }
		public TerminalNode REPLICATE_IGNORE_TABLE() { return getToken(MySQLStatementParser.REPLICATE_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATE_REWRITE_DB() { return getToken(MySQLStatementParser.REPLICATE_REWRITE_DB, 0); }
		public TerminalNode REPLICATE_WILD_DO_TABLE() { return getToken(MySQLStatementParser.REPLICATE_WILD_DO_TABLE, 0); }
		public TerminalNode REPLICATE_WILD_IGNORE_TABLE() { return getToken(MySQLStatementParser.REPLICATE_WILD_IGNORE_TABLE, 0); }
		public TerminalNode REQUIRE_ROW_FORMAT() { return getToken(MySQLStatementParser.REQUIRE_ROW_FORMAT, 0); }
		public TerminalNode USER_RESOURCES() { return getToken(MySQLStatementParser.USER_RESOURCES, 0); }
		public TerminalNode RESPECT() { return getToken(MySQLStatementParser.RESPECT, 0); }
		public TerminalNode RESTORE() { return getToken(MySQLStatementParser.RESTORE, 0); }
		public TerminalNode RESUME() { return getToken(MySQLStatementParser.RESUME, 0); }
		public TerminalNode RETAIN() { return getToken(MySQLStatementParser.RETAIN, 0); }
		public TerminalNode RETURNED_SQLSTATE() { return getToken(MySQLStatementParser.RETURNED_SQLSTATE, 0); }
		public TerminalNode RETURNING() { return getToken(MySQLStatementParser.RETURNING, 0); }
		public TerminalNode RETURNS() { return getToken(MySQLStatementParser.RETURNS, 0); }
		public TerminalNode REUSE() { return getToken(MySQLStatementParser.REUSE, 0); }
		public TerminalNode REVERSE() { return getToken(MySQLStatementParser.REVERSE, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public TerminalNode ROLLUP() { return getToken(MySQLStatementParser.ROLLUP, 0); }
		public TerminalNode ROTATE() { return getToken(MySQLStatementParser.ROTATE, 0); }
		public TerminalNode ROUTINE() { return getToken(MySQLStatementParser.ROUTINE, 0); }
		public TerminalNode ROW_COUNT() { return getToken(MySQLStatementParser.ROW_COUNT, 0); }
		public TerminalNode ROW_FORMAT() { return getToken(MySQLStatementParser.ROW_FORMAT, 0); }
		public TerminalNode RTREE() { return getToken(MySQLStatementParser.RTREE, 0); }
		public TerminalNode SCHEDULE() { return getToken(MySQLStatementParser.SCHEDULE, 0); }
		public TerminalNode SCHEMA_NAME() { return getToken(MySQLStatementParser.SCHEMA_NAME, 0); }
		public TerminalNode SECONDARY_ENGINE() { return getToken(MySQLStatementParser.SECONDARY_ENGINE, 0); }
		public TerminalNode SECONDARY_ENGINE_ATTRIBUTE() { return getToken(MySQLStatementParser.SECONDARY_ENGINE_ATTRIBUTE, 0); }
		public TerminalNode SECONDARY_LOAD() { return getToken(MySQLStatementParser.SECONDARY_LOAD, 0); }
		public TerminalNode SECONDARY() { return getToken(MySQLStatementParser.SECONDARY, 0); }
		public TerminalNode SECONDARY_UNLOAD() { return getToken(MySQLStatementParser.SECONDARY_UNLOAD, 0); }
		public TerminalNode SECOND() { return getToken(MySQLStatementParser.SECOND, 0); }
		public TerminalNode SECURITY() { return getToken(MySQLStatementParser.SECURITY, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(MySQLStatementParser.SERIALIZABLE, 0); }
		public TerminalNode SERIAL() { return getToken(MySQLStatementParser.SERIAL, 0); }
		public TerminalNode SERVER() { return getToken(MySQLStatementParser.SERVER, 0); }
		public TerminalNode SHARE() { return getToken(MySQLStatementParser.SHARE, 0); }
		public TerminalNode SIMPLE() { return getToken(MySQLStatementParser.SIMPLE, 0); }
		public TerminalNode SLOW() { return getToken(MySQLStatementParser.SLOW, 0); }
		public TerminalNode SNAPSHOT() { return getToken(MySQLStatementParser.SNAPSHOT, 0); }
		public TerminalNode SOCKET() { return getToken(MySQLStatementParser.SOCKET, 0); }
		public TerminalNode SONAME() { return getToken(MySQLStatementParser.SONAME, 0); }
		public TerminalNode SOUNDS() { return getToken(MySQLStatementParser.SOUNDS, 0); }
		public TerminalNode SOURCE() { return getToken(MySQLStatementParser.SOURCE, 0); }
		public TerminalNode SQL_AFTER_GTIDS() { return getToken(MySQLStatementParser.SQL_AFTER_GTIDS, 0); }
		public TerminalNode SQL_AFTER_MTS_GAPS() { return getToken(MySQLStatementParser.SQL_AFTER_MTS_GAPS, 0); }
		public TerminalNode SQL_BEFORE_GTIDS() { return getToken(MySQLStatementParser.SQL_BEFORE_GTIDS, 0); }
		public TerminalNode SQL_BUFFER_RESULT() { return getToken(MySQLStatementParser.SQL_BUFFER_RESULT, 0); }
		public TerminalNode SQL_NO_CACHE() { return getToken(MySQLStatementParser.SQL_NO_CACHE, 0); }
		public TerminalNode SQL_THREAD() { return getToken(MySQLStatementParser.SQL_THREAD, 0); }
		public TerminalNode SRID() { return getToken(MySQLStatementParser.SRID, 0); }
		public TerminalNode STACKED() { return getToken(MySQLStatementParser.STACKED, 0); }
		public TerminalNode STARTS() { return getToken(MySQLStatementParser.STARTS, 0); }
		public TerminalNode STATS_AUTO_RECALC() { return getToken(MySQLStatementParser.STATS_AUTO_RECALC, 0); }
		public TerminalNode STATS_PERSISTENT() { return getToken(MySQLStatementParser.STATS_PERSISTENT, 0); }
		public TerminalNode STATS_SAMPLE_PAGES() { return getToken(MySQLStatementParser.STATS_SAMPLE_PAGES, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public TerminalNode STORAGE() { return getToken(MySQLStatementParser.STORAGE, 0); }
		public TerminalNode STREAM() { return getToken(MySQLStatementParser.STREAM, 0); }
		public TerminalNode STRING() { return getToken(MySQLStatementParser.STRING, 0); }
		public TerminalNode SUBCLASS_ORIGIN() { return getToken(MySQLStatementParser.SUBCLASS_ORIGIN, 0); }
		public TerminalNode SUBJECT() { return getToken(MySQLStatementParser.SUBJECT, 0); }
		public TerminalNode SUBPARTITIONS() { return getToken(MySQLStatementParser.SUBPARTITIONS, 0); }
		public TerminalNode SUBPARTITION() { return getToken(MySQLStatementParser.SUBPARTITION, 0); }
		public TerminalNode SUSPEND() { return getToken(MySQLStatementParser.SUSPEND, 0); }
		public TerminalNode SWAPS() { return getToken(MySQLStatementParser.SWAPS, 0); }
		public TerminalNode SWITCHES() { return getToken(MySQLStatementParser.SWITCHES, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public TerminalNode TABLE_CHECKSUM() { return getToken(MySQLStatementParser.TABLE_CHECKSUM, 0); }
		public TerminalNode TABLE_NAME() { return getToken(MySQLStatementParser.TABLE_NAME, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySQLStatementParser.TEMPORARY, 0); }
		public TerminalNode TEMPTABLE() { return getToken(MySQLStatementParser.TEMPTABLE, 0); }
		public TerminalNode TEXT() { return getToken(MySQLStatementParser.TEXT, 0); }
		public TerminalNode THAN() { return getToken(MySQLStatementParser.THAN, 0); }
		public TerminalNode THREAD_PRIORITY() { return getToken(MySQLStatementParser.THREAD_PRIORITY, 0); }
		public TerminalNode TIES() { return getToken(MySQLStatementParser.TIES, 0); }
		public TerminalNode TIMESTAMP_ADD() { return getToken(MySQLStatementParser.TIMESTAMP_ADD, 0); }
		public TerminalNode TIMESTAMP_DIFF() { return getToken(MySQLStatementParser.TIMESTAMP_DIFF, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySQLStatementParser.TIMESTAMP, 0); }
		public TerminalNode TIME() { return getToken(MySQLStatementParser.TIME, 0); }
		public TerminalNode TLS() { return getToken(MySQLStatementParser.TLS, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySQLStatementParser.TRANSACTION, 0); }
		public TerminalNode TRIGGERS() { return getToken(MySQLStatementParser.TRIGGERS, 0); }
		public TerminalNode TYPES() { return getToken(MySQLStatementParser.TYPES, 0); }
		public TerminalNode TYPE() { return getToken(MySQLStatementParser.TYPE, 0); }
		public TerminalNode UNBOUNDED() { return getToken(MySQLStatementParser.UNBOUNDED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(MySQLStatementParser.UNCOMMITTED, 0); }
		public TerminalNode UNDEFINED() { return getToken(MySQLStatementParser.UNDEFINED, 0); }
		public TerminalNode UNDOFILE() { return getToken(MySQLStatementParser.UNDOFILE, 0); }
		public TerminalNode UNDO_BUFFER_SIZE() { return getToken(MySQLStatementParser.UNDO_BUFFER_SIZE, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySQLStatementParser.UNKNOWN, 0); }
		public TerminalNode UNTIL() { return getToken(MySQLStatementParser.UNTIL, 0); }
		public TerminalNode UPGRADE() { return getToken(MySQLStatementParser.UPGRADE, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public TerminalNode USE_FRM() { return getToken(MySQLStatementParser.USE_FRM, 0); }
		public TerminalNode VALIDATION() { return getToken(MySQLStatementParser.VALIDATION, 0); }
		public TerminalNode VALUE() { return getToken(MySQLStatementParser.VALUE, 0); }
		public TerminalNode VARIABLES() { return getToken(MySQLStatementParser.VARIABLES, 0); }
		public TerminalNode VCPU() { return getToken(MySQLStatementParser.VCPU, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public TerminalNode VISIBLE() { return getToken(MySQLStatementParser.VISIBLE, 0); }
		public TerminalNode WAIT() { return getToken(MySQLStatementParser.WAIT, 0); }
		public TerminalNode WARNINGS() { return getToken(MySQLStatementParser.WARNINGS, 0); }
		public TerminalNode WEEK() { return getToken(MySQLStatementParser.WEEK, 0); }
		public TerminalNode WEIGHT_STRING() { return getToken(MySQLStatementParser.WEIGHT_STRING, 0); }
		public TerminalNode WITHOUT() { return getToken(MySQLStatementParser.WITHOUT, 0); }
		public TerminalNode WORK() { return getToken(MySQLStatementParser.WORK, 0); }
		public TerminalNode WRAPPER() { return getToken(MySQLStatementParser.WRAPPER, 0); }
		public TerminalNode X509() { return getToken(MySQLStatementParser.X509, 0); }
		public TerminalNode XID() { return getToken(MySQLStatementParser.XID, 0); }
		public TerminalNode XML() { return getToken(MySQLStatementParser.XML, 0); }
		public TerminalNode YEAR() { return getToken(MySQLStatementParser.YEAR, 0); }
		public IdentifierKeywordsUnambiguousContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifierKeywordsUnambiguous; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifierKeywordsUnambiguous(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierKeywordsUnambiguousContext identifierKeywordsUnambiguous() throws RecognitionException {
		IdentifierKeywordsUnambiguousContext _localctx = new IdentifierKeywordsUnambiguousContext(_ctx, getState());
		enterRule(_localctx, 496, RULE_identifierKeywordsUnambiguous);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4557);
			_la = _input.LA(1);
			if ( !(((((_la - 75)) & ~0x3f) == 0 && ((1L << (_la - 75)) & ((1L << (ACCOUNT - 75)) | (1L << (ACTION - 75)) | (1L << (ACTIVE - 75)) | (1L << (ADMIN - 75)) | (1L << (AFTER - 75)) | (1L << (AGAINST - 75)) | (1L << (AGGREGATE - 75)) | (1L << (ALGORITHM - 75)) | (1L << (ALWAYS - 75)) | (1L << (ANY - 75)) | (1L << (ARRAY - 75)) | (1L << (AT - 75)) | (1L << (ATTRIBUTE - 75)) | (1L << (AUTOEXTEND_SIZE - 75)) | (1L << (AUTO_INCREMENT - 75)) | (1L << (AVG - 75)) | (1L << (AVG_ROW_LENGTH - 75)) | (1L << (BACKUP - 75)) | (1L << (BINLOG - 75)) | (1L << (BIT - 75)) | (1L << (BLOCK - 75)) | (1L << (BOOL - 75)) | (1L << (BOOLEAN - 75)) | (1L << (BTREE - 75)) | (1L << (BUCKETS - 75)) | (1L << (CASCADED - 75)) | (1L << (CATALOG_NAME - 75)) | (1L << (CHAIN - 75)) | (1L << (CHANGED - 75)) | (1L << (CHANNEL - 75)) | (1L << (CIPHER - 75)) | (1L << (CLASS_ORIGIN - 75)) | (1L << (CLIENT - 75)) | (1L << (CLOSE - 75)))) != 0) || ((((_la - 139)) & ~0x3f) == 0 && ((1L << (_la - 139)) & ((1L << (COALESCE - 139)) | (1L << (CODE - 139)) | (1L << (COLLATION - 139)) | (1L << (COLUMNS - 139)) | (1L << (COLUMN_FORMAT - 139)) | (1L << (COLUMN_NAME - 139)) | (1L << (COMMITTED - 139)) | (1L << (COMPACT - 139)) | (1L << (COMPLETION - 139)) | (1L << (COMPONENT - 139)) | (1L << (COMPRESSED - 139)) | (1L << (COMPRESSION - 139)) | (1L << (CONCURRENT - 139)) | (1L << (CONNECTION - 139)) | (1L << (CONSISTENT - 139)) | (1L << (CONSTRAINT_CATALOG - 139)) | (1L << (CONSTRAINT_NAME - 139)) | (1L << (CONSTRAINT_SCHEMA - 139)) | (1L << (CONTEXT - 139)) | (1L << (CPU - 139)) | (1L << (CREATE - 139)) | (1L << (CURRENT - 139)) | (1L << (CURSOR_NAME - 139)) | (1L << (DATA - 139)) | (1L << (DATAFILE - 139)) | (1L << (DATE - 139)) | (1L << (DATETIME - 139)) | (1L << (DAY - 139)) | (1L << (DEFAULT_AUTH - 139)) | (1L << (DEFINER - 139)) | (1L << (DEFINITION - 139)) | (1L << (DELAY_KEY_WRITE - 139)))) != 0) || ((((_la - 204)) & ~0x3f) == 0 && ((1L << (_la - 204)) & ((1L << (DESCRIPTION - 204)) | (1L << (DIAGNOSTICS - 204)) | (1L << (DIRECTORY - 204)) | (1L << (DISABLE - 204)) | (1L << (DISCARD - 204)) | (1L << (DISK - 204)) | (1L << (DUMPFILE - 204)) | (1L << (DUPLICATE - 204)) | (1L << (DYNAMIC - 204)) | (1L << (ENABLE - 204)) | (1L << (ENCRYPTION - 204)) | (1L << (ENDS - 204)) | (1L << (ENFORCED - 204)) | (1L << (ENGINE - 204)) | (1L << (ENGINES - 204)) | (1L << (ENGINE_ATTRIBUTE - 204)) | (1L << (ENUM - 204)) | (1L << (ERROR - 204)) | (1L << (ERRORS - 204)) | (1L << (ESCAPE - 204)) | (1L << (EVENTS - 204)) | (1L << (EVERY - 204)) | (1L << (EXCHANGE - 204)) | (1L << (EXCLUDE - 204)) | (1L << (EXPANSION - 204)) | (1L << (EXPIRE - 204)) | (1L << (EXPORT - 204)) | (1L << (EXTENDED - 204)) | (1L << (EXTENT_SIZE - 204)) | (1L << (FAILED_LOGIN_ATTEMPTS - 204)) | (1L << (FAST - 204)) | (1L << (FAULTS - 204)) | (1L << (FILE_BLOCK_SIZE - 204)) | (1L << (FILTER - 204)) | (1L << (FIRST - 204)) | (1L << (FIXED - 204)))) != 0) || ((((_la - 269)) & ~0x3f) == 0 && ((1L << (_la - 269)) & ((1L << (FOLLOWING - 269)) | (1L << (FORMAT - 269)) | (1L << (FOUND - 269)) | (1L << (FULL - 269)) | (1L << (GENERAL - 269)) | (1L << (GEOMETRY - 269)) | (1L << (GEOMETRYCOLLECTION - 269)) | (1L << (GET_FORMAT - 269)) | (1L << (GET_MASTER_PUBLIC_KEY - 269)) | (1L << (GRANTS - 269)) | (1L << (GROUP_REPLICATION - 269)) | (1L << (HASH - 269)) | (1L << (HISTOGRAM - 269)) | (1L << (HISTORY - 269)) | (1L << (HOST - 269)) | (1L << (HOSTS - 269)) | (1L << (HOUR - 269)) | (1L << (IDENTIFIED - 269)) | (1L << (IGNORE_SERVER_IDS - 269)) | (1L << (INACTIVE - 269)) | (1L << (INDEXES - 269)) | (1L << (INITIAL_SIZE - 269)) | (1L << (INSERT_METHOD - 269)) | (1L << (INSTANCE - 269)))) != 0) || ((((_la - 334)) & ~0x3f) == 0 && ((1L << (_la - 334)) & ((1L << (INVISIBLE - 334)) | (1L << (INVOKER - 334)) | (1L << (IO - 334)) | (1L << (IPC - 334)) | (1L << (ISOLATION - 334)) | (1L << (ISSUER - 334)) | (1L << (JSON - 334)) | (1L << (JSON_VALUE - 334)) | (1L << (KEY - 334)) | (1L << (KEY_BLOCK_SIZE - 334)) | (1L << (LAST - 334)) | (1L << (LEAVES - 334)) | (1L << (LESS - 334)) | (1L << (LEVEL - 334)) | (1L << (LINESTRING - 334)) | (1L << (LIST - 334)) | (1L << (LOCKED - 334)) | (1L << (LOCKS - 334)) | (1L << (LOGFILE - 334)) | (1L << (LOGS - 334)) | (1L << (MASTER - 334)) | (1L << (MASTER_AUTO_POSITION - 334)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 334)) | (1L << (MASTER_CONNECT_RETRY - 334)) | (1L << (MASTER_DELAY - 334)) | (1L << (MASTER_HEARTBEAT_PERIOD - 334)) | (1L << (MASTER_HOST - 334)) | (1L << (MASTER_LOG_FILE - 334)) | (1L << (MASTER_LOG_POS - 334)) | (1L << (MASTER_PASSWORD - 334)) | (1L << (MASTER_PORT - 334)) | (1L << (MASTER_PUBLIC_KEY_PATH - 334)) | (1L << (MASTER_RETRY_COUNT - 334)))) != 0) || ((((_la - 398)) & ~0x3f) == 0 && ((1L << (_la - 398)) & ((1L << (MASTER_SERVER_ID - 398)) | (1L << (MASTER_SSL - 398)) | (1L << (MASTER_SSL_CA - 398)) | (1L << (MASTER_SSL_CAPATH - 398)) | (1L << (MASTER_SSL_CERT - 398)) | (1L << (MASTER_SSL_CIPHER - 398)) | (1L << (MASTER_SSL_CRL - 398)) | (1L << (MASTER_SSL_CRLPATH - 398)) | (1L << (MASTER_SSL_KEY - 398)) | (1L << (MASTER_TLS_CIPHERSUITES - 398)) | (1L << (MASTER_TLS_VERSION - 398)) | (1L << (MASTER_USER - 398)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 398)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 398)) | (1L << (MAX_QUERIES_PER_HOUR - 398)) | (1L << (MAX_ROWS - 398)) | (1L << (MAX_SIZE - 398)) | (1L << (MAX_UPDATES_PER_HOUR - 398)) | (1L << (MAX_USER_CONNECTIONS - 398)) | (1L << (MEDIUM - 398)) | (1L << (MEMBER - 398)) | (1L << (MEMORY - 398)) | (1L << (MERGE - 398)) | (1L << (MESSAGE_TEXT - 398)) | (1L << (MICROSECOND - 398)) | (1L << (MIGRATE - 398)) | (1L << (MINUTE - 398)) | (1L << (MIN_ROWS - 398)) | (1L << (MODE - 398)) | (1L << (MODIFY - 398)) | (1L << (MONTH - 398)) | (1L << (MULTILINESTRING - 398)) | (1L << (MULTIPOINT - 398)) | (1L << (MULTIPOLYGON - 398)) | (1L << (MUTEX - 398)) | (1L << (MYSQL_ERRNO - 398)) | (1L << (NAME - 398)) | (1L << (NAMES - 398)) | (1L << (NATIONAL - 398)) | (1L << (NCHAR - 398)) | (1L << (NDBCLUSTER - 398)) | (1L << (NESTED - 398)) | (1L << (NETWORK_NAMESPACE - 398)) | (1L << (NEVER - 398)) | (1L << (NEW - 398)) | (1L << (NEXT - 398)) | (1L << (NODEGROUP - 398)) | (1L << (NOWAIT - 398)) | (1L << (NO_WAIT - 398)))) != 0) || ((((_la - 466)) & ~0x3f) == 0 && ((1L << (_la - 466)) & ((1L << (NULLS - 466)) | (1L << (NUMBER - 466)) | (1L << (NVARCHAR - 466)) | (1L << (OFF - 466)) | (1L << (OFFSET - 466)) | (1L << (OJ - 466)) | (1L << (OLD - 466)) | (1L << (ONE - 466)) | (1L << (ONLY - 466)) | (1L << (OPEN - 466)) | (1L << (OPTIONAL - 466)) | (1L << (OPTIONS - 466)) | (1L << (ORDINALITY - 466)) | (1L << (ORGANIZATION - 466)) | (1L << (OTHERS - 466)) | (1L << (OWNER - 466)) | (1L << (PACK_KEYS - 466)) | (1L << (PAGE - 466)) | (1L << (PARSER - 466)) | (1L << (PARTIAL - 466)) | (1L << (PARTITIONING - 466)) | (1L << (PARTITIONS - 466)) | (1L << (PASSWORD - 466)) | (1L << (PASSWORD_LOCK_TIME - 466)) | (1L << (PATH - 466)) | (1L << (PHASE - 466)) | (1L << (PLUGIN - 466)) | (1L << (PLUGINS - 466)) | (1L << (PLUGIN_DIR - 466)) | (1L << (POINT - 466)) | (1L << (POLYGON - 466)) | (1L << (PORT - 466)) | (1L << (PRECEDING - 466)) | (1L << (PRESERVE - 466)) | (1L << (PREV - 466)) | (1L << (PRIVILEGES - 466)) | (1L << (PRIVILEGE_CHECKS_USER - 466)) | (1L << (PROCESSLIST - 466)) | (1L << (PROFILE - 466)) | (1L << (PROFILES - 466)))) != 0) || ((((_la - 531)) & ~0x3f) == 0 && ((1L << (_la - 531)) & ((1L << (QUARTER - 531)) | (1L << (QUERY - 531)) | (1L << (QUICK - 531)) | (1L << (RANDOM - 531)) | (1L << (READ_ONLY - 531)) | (1L << (REBUILD - 531)) | (1L << (RECOVER - 531)) | (1L << (REDO_BUFFER_SIZE - 531)) | (1L << (REDUNDANT - 531)) | (1L << (REFERENCE - 531)) | (1L << (RELAY - 531)) | (1L << (RELAYLOG - 531)) | (1L << (RELAY_LOG_FILE - 531)) | (1L << (RELAY_LOG_POS - 531)) | (1L << (RELAY_THREAD - 531)) | (1L << (REMOVE - 531)) | (1L << (REORGANIZE - 531)) | (1L << (REPEATABLE - 531)) | (1L << (REPLICATE_DO_DB - 531)) | (1L << (REPLICATE_DO_TABLE - 531)) | (1L << (REPLICATE_IGNORE_DB - 531)) | (1L << (REPLICATE_IGNORE_TABLE - 531)) | (1L << (REPLICATE_REWRITE_DB - 531)) | (1L << (REPLICATE_WILD_DO_TABLE - 531)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 531)) | (1L << (REQUIRE_ROW_FORMAT - 531)) | (1L << (RESPECT - 531)) | (1L << (RESTORE - 531)) | (1L << (RESUME - 531)) | (1L << (RETAIN - 531)) | (1L << (RETURNED_SQLSTATE - 531)) | (1L << (RETURNING - 531)) | (1L << (RETURNS - 531)) | (1L << (REUSE - 531)) | (1L << (REVERSE - 531)) | (1L << (ROLE - 531)))) != 0) || ((((_la - 596)) & ~0x3f) == 0 && ((1L << (_la - 596)) & ((1L << (ROLLUP - 596)) | (1L << (ROTATE - 596)) | (1L << (ROUTINE - 596)) | (1L << (ROW_COUNT - 596)) | (1L << (ROW_FORMAT - 596)) | (1L << (RTREE - 596)) | (1L << (SCHEDULE - 596)) | (1L << (SCHEMA_NAME - 596)) | (1L << (SECOND - 596)) | (1L << (SECONDARY - 596)) | (1L << (SECONDARY_ENGINE - 596)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 596)) | (1L << (SECONDARY_LOAD - 596)) | (1L << (SECONDARY_UNLOAD - 596)) | (1L << (SECURITY - 596)) | (1L << (SERIAL - 596)) | (1L << (SERIALIZABLE - 596)) | (1L << (SERVER - 596)) | (1L << (SHARE - 596)) | (1L << (SIMPLE - 596)) | (1L << (SLOW - 596)) | (1L << (SNAPSHOT - 596)) | (1L << (SOCKET - 596)) | (1L << (SONAME - 596)) | (1L << (SOUNDS - 596)) | (1L << (SOURCE - 596)) | (1L << (SQL_AFTER_GTIDS - 596)) | (1L << (SQL_AFTER_MTS_GAPS - 596)) | (1L << (SQL_BEFORE_GTIDS - 596)) | (1L << (SQL_BUFFER_RESULT - 596)) | (1L << (SQL_NO_CACHE - 596)) | (1L << (SQL_THREAD - 596)) | (1L << (SRID - 596)) | (1L << (STACKED - 596)))) != 0) || ((((_la - 661)) & ~0x3f) == 0 && ((1L << (_la - 661)) & ((1L << (STARTS - 661)) | (1L << (STATS_AUTO_RECALC - 661)) | (1L << (STATS_PERSISTENT - 661)) | (1L << (STATS_SAMPLE_PAGES - 661)) | (1L << (STATUS - 661)) | (1L << (STORAGE - 661)) | (1L << (STREAM - 661)) | (1L << (STRING - 661)) | (1L << (SUBCLASS_ORIGIN - 661)) | (1L << (SUBJECT - 661)) | (1L << (SUBPARTITION - 661)) | (1L << (SUBPARTITIONS - 661)) | (1L << (SUSPEND - 661)) | (1L << (SWAPS - 661)) | (1L << (SWITCHES - 661)) | (1L << (TABLES - 661)) | (1L << (TABLESPACE - 661)) | (1L << (TABLE_CHECKSUM - 661)) | (1L << (TABLE_NAME - 661)) | (1L << (TEMPORARY - 661)) | (1L << (TEMPTABLE - 661)) | (1L << (TEXT - 661)) | (1L << (THAN - 661)) | (1L << (THREAD_PRIORITY - 661)) | (1L << (TIES - 661)) | (1L << (TIME - 661)) | (1L << (TIMESTAMP - 661)) | (1L << (TIMESTAMP_ADD - 661)) | (1L << (TIMESTAMP_DIFF - 661)) | (1L << (TLS - 661)) | (1L << (TRANSACTION - 661)) | (1L << (TRIGGERS - 661)) | (1L << (TYPE - 661)) | (1L << (TYPES - 661)) | (1L << (UNBOUNDED - 661)) | (1L << (UNCOMMITTED - 661)) | (1L << (UNDEFINED - 661)) | (1L << (UNDOFILE - 661)) | (1L << (UNDO_BUFFER_SIZE - 661)) | (1L << (UNKNOWN - 661)) | (1L << (UNTIL - 661)))) != 0) || ((((_la - 726)) & ~0x3f) == 0 && ((1L << (_la - 726)) & ((1L << (UPGRADE - 726)) | (1L << (USER - 726)) | (1L << (USER_RESOURCES - 726)) | (1L << (USE_FRM - 726)) | (1L << (VALIDATION - 726)) | (1L << (VALUE - 726)) | (1L << (VARIABLES - 726)) | (1L << (VCPU - 726)) | (1L << (VIEW - 726)) | (1L << (VISIBLE - 726)) | (1L << (WAIT - 726)) | (1L << (WARNINGS - 726)) | (1L << (WEEK - 726)) | (1L << (WEIGHT_STRING - 726)) | (1L << (WITHOUT - 726)) | (1L << (WORK - 726)) | (1L << (WRAPPER - 726)) | (1L << (X509 - 726)) | (1L << (XID - 726)) | (1L << (XML - 726)) | (1L << (YEAR - 726)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierKeywordsAmbiguous1RolesAndLabelsContext extends ParserRuleContext {
		public TerminalNode EXECUTE() { return getToken(MySQLStatementParser.EXECUTE, 0); }
		public TerminalNode RESTART() { return getToken(MySQLStatementParser.RESTART, 0); }
		public TerminalNode SHUTDOWN() { return getToken(MySQLStatementParser.SHUTDOWN, 0); }
		public IdentifierKeywordsAmbiguous1RolesAndLabelsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifierKeywordsAmbiguous1RolesAndLabels; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifierKeywordsAmbiguous1RolesAndLabels(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierKeywordsAmbiguous1RolesAndLabelsContext identifierKeywordsAmbiguous1RolesAndLabels() throws RecognitionException {
		IdentifierKeywordsAmbiguous1RolesAndLabelsContext _localctx = new IdentifierKeywordsAmbiguous1RolesAndLabelsContext(_ctx, getState());
		enterRule(_localctx, 498, RULE_identifierKeywordsAmbiguous1RolesAndLabels);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4559);
			_la = _input.LA(1);
			if ( !(_la==EXECUTE || _la==RESTART || _la==SHUTDOWN) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierKeywordsAmbiguous2LabelsContext extends ParserRuleContext {
		public TerminalNode ASCII() { return getToken(MySQLStatementParser.ASCII, 0); }
		public TerminalNode BEGIN() { return getToken(MySQLStatementParser.BEGIN, 0); }
		public TerminalNode BYTE() { return getToken(MySQLStatementParser.BYTE, 0); }
		public TerminalNode CACHE() { return getToken(MySQLStatementParser.CACHE, 0); }
		public TerminalNode CHARSET() { return getToken(MySQLStatementParser.CHARSET, 0); }
		public TerminalNode CHECKSUM() { return getToken(MySQLStatementParser.CHECKSUM, 0); }
		public TerminalNode CLONE() { return getToken(MySQLStatementParser.CLONE, 0); }
		public TerminalNode COMMENT() { return getToken(MySQLStatementParser.COMMENT, 0); }
		public TerminalNode COMMIT() { return getToken(MySQLStatementParser.COMMIT, 0); }
		public TerminalNode CONTAINS() { return getToken(MySQLStatementParser.CONTAINS, 0); }
		public TerminalNode DEALLOCATE() { return getToken(MySQLStatementParser.DEALLOCATE, 0); }
		public TerminalNode DO() { return getToken(MySQLStatementParser.DO, 0); }
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public TerminalNode FLUSH() { return getToken(MySQLStatementParser.FLUSH, 0); }
		public TerminalNode FOLLOWS() { return getToken(MySQLStatementParser.FOLLOWS, 0); }
		public TerminalNode HANDLER() { return getToken(MySQLStatementParser.HANDLER, 0); }
		public TerminalNode HELP() { return getToken(MySQLStatementParser.HELP, 0); }
		public TerminalNode IMPORT() { return getToken(MySQLStatementParser.IMPORT, 0); }
		public TerminalNode INSTALL() { return getToken(MySQLStatementParser.INSTALL, 0); }
		public TerminalNode LANGUAGE() { return getToken(MySQLStatementParser.LANGUAGE, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public TerminalNode PRECEDES() { return getToken(MySQLStatementParser.PRECEDES, 0); }
		public TerminalNode PREPARE() { return getToken(MySQLStatementParser.PREPARE, 0); }
		public TerminalNode REPAIR() { return getToken(MySQLStatementParser.REPAIR, 0); }
		public TerminalNode RESET() { return getToken(MySQLStatementParser.RESET, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySQLStatementParser.ROLLBACK, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySQLStatementParser.SAVEPOINT, 0); }
		public TerminalNode SIGNED() { return getToken(MySQLStatementParser.SIGNED, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public TerminalNode START() { return getToken(MySQLStatementParser.START, 0); }
		public TerminalNode STOP() { return getToken(MySQLStatementParser.STOP, 0); }
		public TerminalNode TRUNCATE() { return getToken(MySQLStatementParser.TRUNCATE, 0); }
		public TerminalNode UNICODE() { return getToken(MySQLStatementParser.UNICODE, 0); }
		public TerminalNode UNINSTALL() { return getToken(MySQLStatementParser.UNINSTALL, 0); }
		public TerminalNode XA() { return getToken(MySQLStatementParser.XA, 0); }
		public IdentifierKeywordsAmbiguous2LabelsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifierKeywordsAmbiguous2Labels; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifierKeywordsAmbiguous2Labels(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierKeywordsAmbiguous2LabelsContext identifierKeywordsAmbiguous2Labels() throws RecognitionException {
		IdentifierKeywordsAmbiguous2LabelsContext _localctx = new IdentifierKeywordsAmbiguous2LabelsContext(_ctx, getState());
		enterRule(_localctx, 500, RULE_identifierKeywordsAmbiguous2Labels);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4561);
			_la = _input.LA(1);
			if ( !(((((_la - 93)) & ~0x3f) == 0 && ((1L << (_la - 93)) & ((1L << (ASCII - 93)) | (1L << (BEGIN - 93)) | (1L << (BYTE - 93)) | (1L << (CACHE - 93)) | (1L << (CHARSET - 93)) | (1L << (CHECKSUM - 93)) | (1L << (CLONE - 93)) | (1L << (COMMENT - 93)) | (1L << (COMMIT - 93)))) != 0) || ((((_la - 163)) & ~0x3f) == 0 && ((1L << (_la - 163)) & ((1L << (CONTAINS - 163)) | (1L << (DEALLOCATE - 163)) | (1L << (DO - 163)))) != 0) || ((((_la - 228)) & ~0x3f) == 0 && ((1L << (_la - 228)) & ((1L << (END - 228)) | (1L << (FLUSH - 228)) | (1L << (FOLLOWS - 228)))) != 0) || ((((_la - 294)) & ~0x3f) == 0 && ((1L << (_la - 294)) & ((1L << (HANDLER - 294)) | (1L << (HELP - 294)) | (1L << (IMPORT - 294)) | (1L << (INSTALL - 294)) | (1L << (LANGUAGE - 294)))) != 0) || ((((_la - 456)) & ~0x3f) == 0 && ((1L << (_la - 456)) & ((1L << (NO - 456)) | (1L << (PRECEDES - 456)) | (1L << (PREPARE - 456)))) != 0) || ((((_la - 560)) & ~0x3f) == 0 && ((1L << (_la - 560)) & ((1L << (REPAIR - 560)) | (1L << (RESET - 560)) | (1L << (ROLLBACK - 560)) | (1L << (SAVEPOINT - 560)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SLAVE - 630)) | (1L << (START - 630)) | (1L << (STOP - 630)))) != 0) || ((((_la - 708)) & ~0x3f) == 0 && ((1L << (_la - 708)) & ((1L << (TRUNCATE - 708)) | (1L << (UNICODE - 708)) | (1L << (UNINSTALL - 708)) | (1L << (XA - 708)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierKeywordsAmbiguous3RolesContext extends ParserRuleContext {
		public TerminalNode EVENT() { return getToken(MySQLStatementParser.EVENT, 0); }
		public TerminalNode FILE() { return getToken(MySQLStatementParser.FILE, 0); }
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode PROCESS() { return getToken(MySQLStatementParser.PROCESS, 0); }
		public TerminalNode PROXY() { return getToken(MySQLStatementParser.PROXY, 0); }
		public TerminalNode RELOAD() { return getToken(MySQLStatementParser.RELOAD, 0); }
		public TerminalNode REPLICATION() { return getToken(MySQLStatementParser.REPLICATION, 0); }
		public TerminalNode RESOURCE() { return getToken(MySQLStatementParser.RESOURCE, 0); }
		public TerminalNode SUPER() { return getToken(MySQLStatementParser.SUPER, 0); }
		public IdentifierKeywordsAmbiguous3RolesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifierKeywordsAmbiguous3Roles; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifierKeywordsAmbiguous3Roles(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierKeywordsAmbiguous3RolesContext identifierKeywordsAmbiguous3Roles() throws RecognitionException {
		IdentifierKeywordsAmbiguous3RolesContext _localctx = new IdentifierKeywordsAmbiguous3RolesContext(_ctx, getState());
		enterRule(_localctx, 502, RULE_identifierKeywordsAmbiguous3Roles);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4563);
			_la = _input.LA(1);
			if ( !(_la==EVENT || _la==FILE || _la==NONE || ((((_la - 525)) & ~0x3f) == 0 && ((1L << (_la - 525)) & ((1L << (PROCESS - 525)) | (1L << (PROXY - 525)) | (1L << (RELOAD - 525)) | (1L << (REPLICATION - 525)) | (1L << (RESOURCE - 525)))) != 0) || _la==SUPER) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierKeywordsAmbiguous4SystemVariablesContext extends ParserRuleContext {
		public TerminalNode GLOBAL() { return getToken(MySQLStatementParser.GLOBAL, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public TerminalNode PERSIST() { return getToken(MySQLStatementParser.PERSIST, 0); }
		public TerminalNode PERSIST_ONLY() { return getToken(MySQLStatementParser.PERSIST_ONLY, 0); }
		public TerminalNode SESSION() { return getToken(MySQLStatementParser.SESSION, 0); }
		public IdentifierKeywordsAmbiguous4SystemVariablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifierKeywordsAmbiguous4SystemVariables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifierKeywordsAmbiguous4SystemVariables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierKeywordsAmbiguous4SystemVariablesContext identifierKeywordsAmbiguous4SystemVariables() throws RecognitionException {
		IdentifierKeywordsAmbiguous4SystemVariablesContext _localctx = new IdentifierKeywordsAmbiguous4SystemVariablesContext(_ctx, getState());
		enterRule(_localctx, 504, RULE_identifierKeywordsAmbiguous4SystemVariables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4565);
			_la = _input.LA(1);
			if ( !(_la==GLOBAL || _la==LOCAL || _la==PERSIST || _la==PERSIST_ONLY || _la==SESSION) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TextOrIdentifierContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TextOrIdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_textOrIdentifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTextOrIdentifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TextOrIdentifierContext textOrIdentifier() throws RecognitionException {
		TextOrIdentifierContext _localctx = new TextOrIdentifierContext(_ctx, getState());
		enterRule(_localctx, 506, RULE_textOrIdentifier);
		try {
			setState(4569);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,564,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4567);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4568);
				string_();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VariableContext extends ParserRuleContext {
		public UserVariableContext userVariable() {
			return getRuleContext(UserVariableContext.class,0);
		}
		public SystemVariableContext systemVariable() {
			return getRuleContext(SystemVariableContext.class,0);
		}
		public VariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_variable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VariableContext variable() throws RecognitionException {
		VariableContext _localctx = new VariableContext(_ctx, getState());
		enterRule(_localctx, 508, RULE_variable);
		try {
			setState(4573);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,565,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4571);
				userVariable();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4572);
				systemVariable();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserVariableContext extends ParserRuleContext {
		public TerminalNode AT_() { return getToken(MySQLStatementParser.AT_, 0); }
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public UserVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userVariable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserVariableContext userVariable() throws RecognitionException {
		UserVariableContext _localctx = new UserVariableContext(_ctx, getState());
		enterRule(_localctx, 510, RULE_userVariable);
		try {
			setState(4578);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case AT_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4575);
				match(AT_);
				setState(4576);
				textOrIdentifier();
				}
				break;
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4577);
				textOrIdentifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SystemVariableContext extends ParserRuleContext {
		public Token systemVariableScope;
		public List AT_() { return getTokens(MySQLStatementParser.AT_); }
		public TerminalNode AT_(int i) {
			return getToken(MySQLStatementParser.AT_, i);
		}
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode GLOBAL() { return getToken(MySQLStatementParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySQLStatementParser.SESSION, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public SystemVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_systemVariable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSystemVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SystemVariableContext systemVariable() throws RecognitionException {
		SystemVariableContext _localctx = new SystemVariableContext(_ctx, getState());
		enterRule(_localctx, 512, RULE_systemVariable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4580);
			match(AT_);
			setState(4581);
			match(AT_);
			setState(4583);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,567,_ctx) ) {
			case 1:
				{
				setState(4582);
				((SystemVariableContext)_localctx).systemVariableScope = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==LOCAL || _la==SESSION) ) {
					((SystemVariableContext)_localctx).systemVariableScope = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
			setState(4585);
			textOrIdentifier();
			setState(4588);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,568,_ctx) ) {
			case 1:
				{
				setState(4586);
				match(DOT_);
				setState(4587);
				identifier();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetSystemVariableContext extends ParserRuleContext {
		public List AT_() { return getTokens(MySQLStatementParser.AT_); }
		public TerminalNode AT_(int i) {
			return getToken(MySQLStatementParser.AT_, i);
		}
		public InternalVariableNameContext internalVariableName() {
			return getRuleContext(InternalVariableNameContext.class,0);
		}
		public OptionTypeContext optionType() {
			return getRuleContext(OptionTypeContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public SetSystemVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setSystemVariable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetSystemVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetSystemVariableContext setSystemVariable() throws RecognitionException {
		SetSystemVariableContext _localctx = new SetSystemVariableContext(_ctx, getState());
		enterRule(_localctx, 514, RULE_setSystemVariable);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4590);
			match(AT_);
			setState(4591);
			match(AT_);
			setState(4595);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,569,_ctx) ) {
			case 1:
				{
				setState(4592);
				optionType();
				setState(4593);
				match(DOT_);
				}
				break;
			}
			setState(4597);
			internalVariableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionTypeContext extends ParserRuleContext {
		public TerminalNode GLOBAL() { return getToken(MySQLStatementParser.GLOBAL, 0); }
		public TerminalNode PERSIST() { return getToken(MySQLStatementParser.PERSIST, 0); }
		public TerminalNode PERSIST_ONLY() { return getToken(MySQLStatementParser.PERSIST_ONLY, 0); }
		public TerminalNode SESSION() { return getToken(MySQLStatementParser.SESSION, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public OptionTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptionType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionTypeContext optionType() throws RecognitionException {
		OptionTypeContext _localctx = new OptionTypeContext(_ctx, getState());
		enterRule(_localctx, 516, RULE_optionType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4599);
			_la = _input.LA(1);
			if ( !(_la==GLOBAL || _la==LOCAL || _la==PERSIST || _la==PERSIST_ONLY || _la==SESSION) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InternalVariableNameContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public InternalVariableNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_internalVariableName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInternalVariableName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InternalVariableNameContext internalVariableName() throws RecognitionException {
		InternalVariableNameContext _localctx = new InternalVariableNameContext(_ctx, getState());
		enterRule(_localctx, 518, RULE_internalVariableName);
		try {
			setState(4609);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,570,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4601);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4602);
				match(DEFAULT);
				setState(4603);
				match(DOT_);
				setState(4604);
				identifier();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4605);
				identifier();
				setState(4606);
				match(DOT_);
				setState(4607);
				identifier();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetExprOrDefaultContext extends ParserRuleContext {
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode ROW() { return getToken(MySQLStatementParser.ROW, 0); }
		public TerminalNode SYSTEM() { return getToken(MySQLStatementParser.SYSTEM, 0); }
		public SetExprOrDefaultContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setExprOrDefault; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetExprOrDefault(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetExprOrDefaultContext setExprOrDefault() throws RecognitionException {
		SetExprOrDefaultContext _localctx = new SetExprOrDefaultContext(_ctx, getState());
		enterRule(_localctx, 520, RULE_setExprOrDefault);
		try {
			setState(4618);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,571,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4611);
				expr(0);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4612);
				match(DEFAULT);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4613);
				match(ALL);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4614);
				match(ON);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4615);
				match(BINARY);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4616);
				match(ROW);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4617);
				match(SYSTEM);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionCharacteristicsContext extends ParserRuleContext {
		public TransactionAccessModeContext transactionAccessMode() {
			return getRuleContext(TransactionAccessModeContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public IsolationLevelContext isolationLevel() {
			return getRuleContext(IsolationLevelContext.class,0);
		}
		public TransactionCharacteristicsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionCharacteristics; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTransactionCharacteristics(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionCharacteristicsContext transactionCharacteristics() throws RecognitionException {
		TransactionCharacteristicsContext _localctx = new TransactionCharacteristicsContext(_ctx, getState());
		enterRule(_localctx, 522, RULE_transactionCharacteristics);
		int _la;
		try {
			setState(4630);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case READ:
				enterOuterAlt(_localctx, 1);
				{
				setState(4620);
				transactionAccessMode();
				setState(4623);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(4621);
					match(COMMA_);
					setState(4622);
					isolationLevel();
					}
				}

				}
				break;
			case ISOLATION:
				enterOuterAlt(_localctx, 2);
				{
				setState(4625);
				isolationLevel();
				setState(4628);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(4626);
					match(COMMA_);
					setState(4627);
					transactionAccessMode();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IsolationLevelContext extends ParserRuleContext {
		public TerminalNode ISOLATION() { return getToken(MySQLStatementParser.ISOLATION, 0); }
		public TerminalNode LEVEL() { return getToken(MySQLStatementParser.LEVEL, 0); }
		public IsolationTypesContext isolationTypes() {
			return getRuleContext(IsolationTypesContext.class,0);
		}
		public IsolationLevelContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_isolationLevel; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIsolationLevel(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IsolationLevelContext isolationLevel() throws RecognitionException {
		IsolationLevelContext _localctx = new IsolationLevelContext(_ctx, getState());
		enterRule(_localctx, 524, RULE_isolationLevel);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4632);
			match(ISOLATION);
			setState(4633);
			match(LEVEL);
			setState(4634);
			isolationTypes();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IsolationTypesContext extends ParserRuleContext {
		public TerminalNode REPEATABLE() { return getToken(MySQLStatementParser.REPEATABLE, 0); }
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public TerminalNode COMMITTED() { return getToken(MySQLStatementParser.COMMITTED, 0); }
		public TerminalNode UNCOMMITTED() { return getToken(MySQLStatementParser.UNCOMMITTED, 0); }
		public TerminalNode SERIALIZABLE() { return getToken(MySQLStatementParser.SERIALIZABLE, 0); }
		public IsolationTypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_isolationTypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIsolationTypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IsolationTypesContext isolationTypes() throws RecognitionException {
		IsolationTypesContext _localctx = new IsolationTypesContext(_ctx, getState());
		enterRule(_localctx, 526, RULE_isolationTypes);
		try {
			setState(4643);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,575,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4636);
				match(REPEATABLE);
				setState(4637);
				match(READ);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4638);
				match(READ);
				setState(4639);
				match(COMMITTED);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4640);
				match(READ);
				setState(4641);
				match(UNCOMMITTED);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4642);
				match(SERIALIZABLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionAccessModeContext extends ParserRuleContext {
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public TerminalNode WRITE() { return getToken(MySQLStatementParser.WRITE, 0); }
		public TerminalNode ONLY() { return getToken(MySQLStatementParser.ONLY, 0); }
		public TransactionAccessModeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionAccessMode; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTransactionAccessMode(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionAccessModeContext transactionAccessMode() throws RecognitionException {
		TransactionAccessModeContext _localctx = new TransactionAccessModeContext(_ctx, getState());
		enterRule(_localctx, 528, RULE_transactionAccessMode);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4645);
			match(READ);
			setState(4646);
			_la = _input.LA(1);
			if ( !(_la==ONLY || _la==WRITE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public SchemaNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSchemaName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaNameContext schemaName() throws RecognitionException {
		SchemaNameContext _localctx = new SchemaNameContext(_ctx, getState());
		enterRule(_localctx, 530, RULE_schemaName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4648);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaNamesContext extends ParserRuleContext {
		public List schemaName() {
			return getRuleContexts(SchemaNameContext.class);
		}
		public SchemaNameContext schemaName(int i) {
			return getRuleContext(SchemaNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SchemaNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSchemaNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaNamesContext schemaNames() throws RecognitionException {
		SchemaNamesContext _localctx = new SchemaNamesContext(_ctx, getState());
		enterRule(_localctx, 532, RULE_schemaNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4650);
			schemaName();
			setState(4655);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4651);
				match(COMMA_);
				setState(4652);
				schemaName();
				}
				}
				setState(4657);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetNameContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public CharsetNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charsetName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCharsetName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharsetNameContext charsetName() throws RecognitionException {
		CharsetNameContext _localctx = new CharsetNameContext(_ctx, getState());
		enterRule(_localctx, 534, RULE_charsetName);
		try {
			setState(4661);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4658);
				textOrIdentifier();
				}
				break;
			case BINARY:
				enterOuterAlt(_localctx, 2);
				{
				setState(4659);
				match(BINARY);
				}
				break;
			case DEFAULT:
				enterOuterAlt(_localctx, 3);
				{
				setState(4660);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaPairsContext extends ParserRuleContext {
		public List schemaPair() {
			return getRuleContexts(SchemaPairContext.class);
		}
		public SchemaPairContext schemaPair(int i) {
			return getRuleContext(SchemaPairContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SchemaPairsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaPairs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSchemaPairs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaPairsContext schemaPairs() throws RecognitionException {
		SchemaPairsContext _localctx = new SchemaPairsContext(_ctx, getState());
		enterRule(_localctx, 536, RULE_schemaPairs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4663);
			schemaPair();
			setState(4668);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4664);
				match(COMMA_);
				setState(4665);
				schemaPair();
				}
				}
				setState(4670);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SchemaPairContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List schemaName() {
			return getRuleContexts(SchemaNameContext.class);
		}
		public SchemaNameContext schemaName(int i) {
			return getRuleContext(SchemaNameContext.class,i);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public SchemaPairContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_schemaPair; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSchemaPair(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SchemaPairContext schemaPair() throws RecognitionException {
		SchemaPairContext _localctx = new SchemaPairContext(_ctx, getState());
		enterRule(_localctx, 538, RULE_schemaPair);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4671);
			match(LP_);
			setState(4672);
			schemaName();
			setState(4673);
			match(COMMA_);
			setState(4674);
			schemaName();
			setState(4675);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableNameContext extends ParserRuleContext {
		public NameContext name() {
			return getRuleContext(NameContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public TableNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableNameContext tableName() throws RecognitionException {
		TableNameContext _localctx = new TableNameContext(_ctx, getState());
		enterRule(_localctx, 540, RULE_tableName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4680);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,579,_ctx) ) {
			case 1:
				{
				setState(4677);
				owner();
				setState(4678);
				match(DOT_);
				}
				break;
			}
			setState(4682);
			name();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ColumnNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnNameContext columnName() throws RecognitionException {
		ColumnNameContext _localctx = new ColumnNameContext(_ctx, getState());
		enterRule(_localctx, 542, RULE_columnName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4684);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IndexNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public IndexNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_indexName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIndexName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IndexNameContext indexName() throws RecognitionException {
		IndexNameContext _localctx = new IndexNameContext(_ctx, getState());
		enterRule(_localctx, 544, RULE_indexName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4686);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConstraintNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ConstraintNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_constraintName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConstraintName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConstraintNameContext constraintName() throws RecognitionException {
		ConstraintNameContext _localctx = new ConstraintNameContext(_ctx, getState());
		enterRule(_localctx, 546, RULE_constraintName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4688);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DelimiterNameContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public List BACKSLASH_() { return getTokens(MySQLStatementParser.BACKSLASH_); }
		public TerminalNode BACKSLASH_(int i) {
			return getToken(MySQLStatementParser.BACKSLASH_, i);
		}
		public List SQ_() { return getTokens(MySQLStatementParser.SQ_); }
		public TerminalNode SQ_(int i) {
			return getToken(MySQLStatementParser.SQ_, i);
		}
		public List DQ_() { return getTokens(MySQLStatementParser.DQ_); }
		public TerminalNode DQ_(int i) {
			return getToken(MySQLStatementParser.DQ_, i);
		}
		public List BQ_() { return getTokens(MySQLStatementParser.BQ_); }
		public TerminalNode BQ_(int i) {
			return getToken(MySQLStatementParser.BQ_, i);
		}
		public DelimiterNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delimiterName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDelimiterName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DelimiterNameContext delimiterName() throws RecognitionException {
		DelimiterNameContext _localctx = new DelimiterNameContext(_ctx, getState());
		enterRule(_localctx, 548, RULE_delimiterName);
		int _la;
		try {
			int _alt;
			setState(4698);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,582,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4690);
				textOrIdentifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4694); 
				_errHandler.sync(this);
				_alt = 1;
				do {
					switch (_alt) {
					case 1:
						{
						setState(4694);
						_errHandler.sync(this);
						switch (_input.LA(1)) {
						case BACKSLASH_:
							{
							setState(4691);
							match(BACKSLASH_);
							setState(4692);
							matchWildcard();
							}
							break;
						case T__0:
						case T__1:
						case BLOCK_COMMENT:
						case INLINE_COMMENT:
						case AND_:
						case OR_:
						case NOT_:
						case TILDE_:
						case VERTICAL_BAR_:
						case AMPERSAND_:
						case SIGNED_LEFT_SHIFT_:
						case SIGNED_RIGHT_SHIFT_:
						case CARET_:
						case MOD_:
						case COLON_:
						case PLUS_:
						case MINUS_:
						case ASTERISK_:
						case SLASH_:
						case DOT_:
						case DOT_ASTERISK_:
						case SAFE_EQ_:
						case DEQ_:
						case EQ_:
						case NEQ_:
						case GT_:
						case GTE_:
						case LT_:
						case LTE_:
						case POUND_:
						case LP_:
						case RP_:
						case LBE_:
						case RBE_:
						case LBT_:
						case RBT_:
						case COMMA_:
						case QUESTION_:
						case AT_:
						case SEMI_:
						case ASSIGNMENT_:
						case JSON_SEPARATOR:
						case JSON_UNQUOTED_SEPARATOR:
						case WS:
						case MAX:
						case MIN:
						case SUM:
						case COUNT:
						case GROUP_CONCAT:
						case CAST:
						case POSITION:
						case SUBSTRING:
						case SUBSTR:
						case EXTRACT:
						case TRIM:
						case LAST_DAY:
						case TRADITIONAL:
						case TREE:
						case MYSQL_MAIN:
						case MYSQL_ADMIN:
						case INSTANT:
						case INPLACE:
						case COPY:
						case UL_BINARY:
						case AUTOCOMMIT:
						case INNODB:
						case REDO_LOG:
						case DELIMITER:
						case FOR_GENERATOR:
						case ACCESSIBLE:
						case ACCOUNT:
						case ACTION:
						case ACTIVE:
						case ADD:
						case ADMIN:
						case AFTER:
						case AGAINST:
						case AGGREGATE:
						case ALGORITHM:
						case ALL:
						case ALTER:
						case ALWAYS:
						case ANALYZE:
						case AND:
						case ANY:
						case ARRAY:
						case AS:
						case ASC:
						case ASCII:
						case ASENSITIVE:
						case AT:
						case ATTRIBUTE:
						case AUTOEXTEND_SIZE:
						case AUTO_INCREMENT:
						case AVG:
						case BIT_XOR:
						case AVG_ROW_LENGTH:
						case BACKUP:
						case BEFORE:
						case BEGIN:
						case BETWEEN:
						case BIGINT:
						case BINARY:
						case BINLOG:
						case BIT:
						case BLOB:
						case BLOCK:
						case BOOL:
						case BOOLEAN:
						case BOTH:
						case BTREE:
						case BUCKETS:
						case BY:
						case BYTE:
						case CACHE:
						case CALL:
						case CASCADE:
						case CASCADED:
						case CASE:
						case CATALOG_NAME:
						case CHAIN:
						case CHANGE:
						case CHANGED:
						case CHANNEL:
						case CHAR:
						case CHARACTER:
						case CHARSET:
						case CHECK:
						case CHECKSUM:
						case CIPHER:
						case CLASS_ORIGIN:
						case CLIENT:
						case CLONE:
						case CLOSE:
						case COALESCE:
						case CODE:
						case COLLATE:
						case COLLATION:
						case COLUMN:
						case COLUMNS:
						case COLUMN_FORMAT:
						case COLUMN_NAME:
						case COMMENT:
						case COMMIT:
						case COMMITTED:
						case COMPACT:
						case COMPLETION:
						case COMPONENT:
						case COMPRESSED:
						case COMPRESSION:
						case CONCURRENT:
						case CONDITION:
						case CONNECTION:
						case CONSISTENT:
						case CONSTRAINT:
						case CONSTRAINT_CATALOG:
						case CONSTRAINT_NAME:
						case CONSTRAINT_SCHEMA:
						case CONTAINS:
						case CONTEXT:
						case CONTINUE:
						case CONVERT:
						case CPU:
						case CREATE:
						case CROSS:
						case CUBE:
						case CUME_DIST:
						case CURRENT:
						case CURRENT_DATE:
						case CURRENT_TIME:
						case CURRENT_TIMESTAMP:
						case CURRENT_USER:
						case CURSOR:
						case CURSOR_NAME:
						case DATA:
						case DATABASE:
						case DATABASES:
						case DATAFILE:
						case DATE:
						case DATETIME:
						case DAY:
						case DAY_HOUR:
						case DAY_MICROSECOND:
						case DAY_MINUTE:
						case DAY_SECOND:
						case DEALLOCATE:
						case DEC:
						case DECIMAL:
						case DECLARE:
						case DEFAULT:
						case DEFAULT_AUTH:
						case DEFINER:
						case DEFINITION:
						case DELAYED:
						case DELAY_KEY_WRITE:
						case DELETE:
						case DENSE_RANK:
						case DESC:
						case DESCRIBE:
						case DESCRIPTION:
						case DETERMINISTIC:
						case DIAGNOSTICS:
						case DIRECTORY:
						case DISABLE:
						case DISCARD:
						case DISK:
						case DISTINCT:
						case DISTINCTROW:
						case DIV:
						case DO:
						case DOUBLE:
						case DROP:
						case DUAL:
						case DUMPFILE:
						case DUPLICATE:
						case DYNAMIC:
						case EACH:
						case ELSE:
						case ELSEIF:
						case EMPTY:
						case ENABLE:
						case ENCLOSED:
						case ENCRYPTION:
						case END:
						case ENDS:
						case ENFORCED:
						case ENGINE:
						case ENGINES:
						case ENGINE_ATTRIBUTE:
						case ENUM:
						case ERROR:
						case ERRORS:
						case ESCAPE:
						case ESCAPED:
						case EVENT:
						case EVENTS:
						case EVERY:
						case EXCEPT:
						case EXCHANGE:
						case EXCLUDE:
						case EXECUTE:
						case EXISTS:
						case EXIT:
						case EXPANSION:
						case EXPIRE:
						case EXPLAIN:
						case EXPORT:
						case EXTENDED:
						case EXTENT_SIZE:
						case FAILED_LOGIN_ATTEMPTS:
						case FALSE:
						case FAST:
						case FAULTS:
						case FETCH:
						case FILE:
						case FILE_BLOCK_SIZE:
						case FILTER:
						case FIRST:
						case FIRST_VALUE:
						case FIXED:
						case FLOAT:
						case FLOAT4:
						case FLOAT8:
						case FLUSH:
						case FOLLOWING:
						case FOLLOWS:
						case FOR:
						case FORCE:
						case FOREIGN:
						case FORMAT:
						case FOUND:
						case FROM:
						case FULL:
						case FULLTEXT:
						case FUNCTION:
						case GENERAL:
						case GENERATED:
						case GEOMETRY:
						case GEOMETRYCOLLECTION:
						case GET:
						case GET_FORMAT:
						case GET_MASTER_PUBLIC_KEY:
						case GLOBAL:
						case GRANT:
						case GRANTS:
						case GROUP:
						case GROUPING:
						case GROUPS:
						case GROUP_REPLICATION:
						case HANDLER:
						case HASH:
						case HAVING:
						case HELP:
						case HIGH_PRIORITY:
						case HISTOGRAM:
						case HISTORY:
						case HOST:
						case HOSTS:
						case HOUR:
						case HOUR_MICROSECOND:
						case HOUR_MINUTE:
						case HOUR_SECOND:
						case IDENTIFIED:
						case IF:
						case IGNORE:
						case IGNORE_SERVER_IDS:
						case IMPORT:
						case IN:
						case INACTIVE:
						case INDEX:
						case INDEXES:
						case INFILE:
						case INITIAL_SIZE:
						case INNER:
						case INOUT:
						case INSENSITIVE:
						case INSERT:
						case INSERT_METHOD:
						case INSTALL:
						case INSTANCE:
						case INT:
						case INT1:
						case INT2:
						case INT3:
						case INT4:
						case INT8:
						case INTEGER:
						case INTERVAL:
						case INTO:
						case INVISIBLE:
						case INVOKER:
						case IO:
						case IO_AFTER_GTIDS:
						case IO_BEFORE_GTIDS:
						case IPC:
						case IS:
						case ISOLATION:
						case ISSUER:
						case ITERATE:
						case JOIN:
						case JSON:
						case JSON_TABLE:
						case JSON_VALUE:
						case KEY:
						case KEYS:
						case KEY_BLOCK_SIZE:
						case KILL:
						case LAG:
						case LANGUAGE:
						case LAST:
						case LAST_VALUE:
						case LATERAL:
						case LEAD:
						case LEADING:
						case LEAVE:
						case LEAVES:
						case LEFT:
						case LESS:
						case LEVEL:
						case LIKE:
						case LIMIT:
						case LINEAR:
						case LINES:
						case LINESTRING:
						case LIST:
						case LOAD:
						case LOCAL:
						case LOCALTIME:
						case LOCALTIMESTAMP:
						case LOCK:
						case LOCKED:
						case LOCKS:
						case LOGFILE:
						case LOGS:
						case LONG:
						case LONGBLOB:
						case LONGTEXT:
						case LOOP:
						case LOW_PRIORITY:
						case MASTER:
						case MASTER_AUTO_POSITION:
						case MASTER_BIND:
						case MASTER_COMPRESSION_ALGORITHM:
						case MASTER_CONNECT_RETRY:
						case MASTER_DELAY:
						case MASTER_HEARTBEAT_PERIOD:
						case MASTER_HOST:
						case MASTER_LOG_FILE:
						case MASTER_LOG_POS:
						case MASTER_PASSWORD:
						case MASTER_PORT:
						case MASTER_PUBLIC_KEY_PATH:
						case MASTER_RETRY_COUNT:
						case MASTER_SERVER_ID:
						case MASTER_SSL:
						case MASTER_SSL_CA:
						case MASTER_SSL_CAPATH:
						case MASTER_SSL_CERT:
						case MASTER_SSL_CIPHER:
						case MASTER_SSL_CRL:
						case MASTER_SSL_CRLPATH:
						case MASTER_SSL_KEY:
						case MASTER_SSL_VERIFY_SERVER_CERT:
						case MASTER_TLS_CIPHERSUITES:
						case MASTER_TLS_VERSION:
						case MASTER_USER:
						case MASTER_ZSTD_COMPRESSION_LEVEL:
						case MATCH:
						case MAXVALUE:
						case MAX_CONNECTIONS_PER_HOUR:
						case MAX_QUERIES_PER_HOUR:
						case MAX_ROWS:
						case MAX_SIZE:
						case MAX_UPDATES_PER_HOUR:
						case MAX_USER_CONNECTIONS:
						case MEDIUM:
						case MEDIUMBLOB:
						case MEDIUMINT:
						case MEDIUMTEXT:
						case MEMBER:
						case MEMORY:
						case MERGE:
						case MESSAGE_TEXT:
						case MICROSECOND:
						case MIDDLEINT:
						case MIGRATE:
						case MINUTE:
						case MINUTE_MICROSECOND:
						case MINUTE_SECOND:
						case MIN_ROWS:
						case MOD:
						case MODE:
						case MODIFIES:
						case MODIFY:
						case MONTH:
						case MULTILINESTRING:
						case MULTIPOINT:
						case MULTIPOLYGON:
						case MUTEX:
						case MYSQL_ERRNO:
						case NAME:
						case NAMES:
						case NATIONAL:
						case NATURAL:
						case NCHAR:
						case NDBCLUSTER:
						case NESTED:
						case NETWORK_NAMESPACE:
						case NEVER:
						case NEW:
						case NEXT:
						case NO:
						case NODEGROUP:
						case NONE:
						case NOT:
						case NOWAIT:
						case NO_WAIT:
						case NO_WRITE_TO_BINLOG:
						case NTH_VALUE:
						case NTILE:
						case NULL:
						case NULLS:
						case NUMBER:
						case NUMERIC:
						case NVARCHAR:
						case OF:
						case OFF:
						case OFFSET:
						case OJ:
						case OLD:
						case ON:
						case ONE:
						case ONLY:
						case OPEN:
						case OPTIMIZE:
						case OPTIMIZER_COSTS:
						case OPTION:
						case OPTIONAL:
						case OPTIONALLY:
						case OPTIONS:
						case OR:
						case ORDER:
						case ORDINALITY:
						case ORGANIZATION:
						case OTHERS:
						case OUT:
						case OUTER:
						case OUTFILE:
						case OVER:
						case OWNER:
						case PACK_KEYS:
						case PAGE:
						case PARSER:
						case PARTIAL:
						case PARTITION:
						case PARTITIONING:
						case PARTITIONS:
						case PASSWORD:
						case PASSWORD_LOCK_TIME:
						case PATH:
						case PERCENT_RANK:
						case PERSIST:
						case PERSIST_ONLY:
						case PHASE:
						case PLUGIN:
						case PLUGINS:
						case PLUGIN_DIR:
						case POINT:
						case POLYGON:
						case PORT:
						case PRECEDES:
						case PRECEDING:
						case PRECISION:
						case PREPARE:
						case PRESERVE:
						case PREV:
						case PRIMARY:
						case PRIVILEGES:
						case PRIVILEGE_CHECKS_USER:
						case PROCEDURE:
						case PROCESS:
						case PROCESSLIST:
						case PROFILE:
						case PROFILES:
						case PROXY:
						case PURGE:
						case QUARTER:
						case QUERY:
						case QUICK:
						case RANDOM:
						case RANGE:
						case RANK:
						case READ:
						case READS:
						case READ_ONLY:
						case READ_WRITE:
						case REAL:
						case REBUILD:
						case RECOVER:
						case RECURSIVE:
						case REDO_BUFFER_SIZE:
						case REDUNDANT:
						case REFERENCE:
						case REFERENCES:
						case REGEXP:
						case RELAY:
						case RELAYLOG:
						case RELAY_LOG_FILE:
						case RELAY_LOG_POS:
						case RELAY_THREAD:
						case RELEASE:
						case RELOAD:
						case REMOVE:
						case RENAME:
						case REORGANIZE:
						case REPAIR:
						case REPEAT:
						case REPEATABLE:
						case REPLACE:
						case REPLICA:
						case REPLICAS:
						case REPLICATE_DO_DB:
						case REPLICATE_DO_TABLE:
						case REPLICATE_IGNORE_DB:
						case REPLICATE_IGNORE_TABLE:
						case REPLICATE_REWRITE_DB:
						case REPLICATE_WILD_DO_TABLE:
						case REPLICATE_WILD_IGNORE_TABLE:
						case REPLICATION:
						case REQUIRE:
						case REQUIRE_ROW_FORMAT:
						case RESET:
						case RESIGNAL:
						case RESOURCE:
						case RESPECT:
						case RESTART:
						case RESTORE:
						case RESTRICT:
						case RESUME:
						case RETAIN:
						case RETURN:
						case RETURNED_SQLSTATE:
						case RETURNING:
						case RETURNS:
						case REUSE:
						case REVERSE:
						case REVOKE:
						case RIGHT:
						case RLIKE:
						case ROLE:
						case ROLLBACK:
						case ROLLUP:
						case ROTATE:
						case ROUTINE:
						case ROW:
						case ROWS:
						case ROW_COUNT:
						case ROW_FORMAT:
						case ROW_NUMBER:
						case RTREE:
						case SAVEPOINT:
						case SCHEDULE:
						case SCHEMA:
						case SCHEMAS:
						case SCHEMA_NAME:
						case SECOND:
						case SECONDARY:
						case SECONDARY_ENGINE:
						case SECONDARY_ENGINE_ATTRIBUTE:
						case SECONDARY_LOAD:
						case SECONDARY_UNLOAD:
						case SECOND_MICROSECOND:
						case SECURITY:
						case SELECT:
						case SENSITIVE:
						case SEPARATOR:
						case SERIAL:
						case SERIALIZABLE:
						case SERVER:
						case SESSION:
						case SET:
						case SHARE:
						case SHOW:
						case SHUTDOWN:
						case SIGNAL:
						case SIGNED:
						case SIMPLE:
						case SKIP_SYMBOL:
						case SLAVE:
						case SLOW:
						case SMALLINT:
						case SNAPSHOT:
						case SOCKET:
						case SONAME:
						case SOUNDS:
						case SOURCE:
						case SPATIAL:
						case SPECIFIC:
						case SQL:
						case SQLEXCEPTION:
						case SQLSTATE:
						case SQLWARNING:
						case SQL_AFTER_GTIDS:
						case SQL_AFTER_MTS_GAPS:
						case SQL_BEFORE_GTIDS:
						case SQL_BIG_RESULT:
						case SQL_BUFFER_RESULT:
						case SQL_CALC_FOUND_ROWS:
						case SQL_NO_CACHE:
						case SQL_SMALL_RESULT:
						case SQL_THREAD:
						case SRID:
						case SSL:
						case STACKED:
						case START:
						case STARTING:
						case STARTS:
						case STATS_AUTO_RECALC:
						case STATS_PERSISTENT:
						case STATS_SAMPLE_PAGES:
						case STATUS:
						case STOP:
						case STORAGE:
						case STORED:
						case STRAIGHT_JOIN:
						case STREAM:
						case STRING:
						case SUBCLASS_ORIGIN:
						case SUBJECT:
						case SUBPARTITION:
						case SUBPARTITIONS:
						case SUPER:
						case SUSPEND:
						case SWAPS:
						case SWITCHES:
						case SYSTEM:
						case TABLE:
						case TABLES:
						case TABLESPACE:
						case TABLE_CHECKSUM:
						case TABLE_NAME:
						case TEMPORARY:
						case TEMPTABLE:
						case TERMINATED:
						case TEXT:
						case THAN:
						case THEN:
						case THREAD_PRIORITY:
						case TIES:
						case TIME:
						case TIMESTAMP:
						case TIMESTAMP_ADD:
						case TIMESTAMP_DIFF:
						case TINYBLOB:
						case TINYINT:
						case TINYTEXT:
						case TLS:
						case TO:
						case TRAILING:
						case TRANSACTION:
						case TRIGGER:
						case TRIGGERS:
						case TRUE:
						case TRUNCATE:
						case TYPE:
						case TYPES:
						case UNBOUNDED:
						case UNCOMMITTED:
						case UNDEFINED:
						case UNDO:
						case UNDOFILE:
						case UNDO_BUFFER_SIZE:
						case UNICODE:
						case UNINSTALL:
						case UNION:
						case UNIQUE:
						case UNKNOWN:
						case UNLOCK:
						case UNSIGNED:
						case UNTIL:
						case UPDATE:
						case UPGRADE:
						case USAGE:
						case USE:
						case USER:
						case USER_RESOURCES:
						case USE_FRM:
						case USING:
						case UTC_DATE:
						case UTC_TIME:
						case UTC_TIMESTAMP:
						case VALIDATION:
						case VALUE:
						case VALUES:
						case VARBINARY:
						case VARCHAR:
						case VARCHARACTER:
						case VARIABLES:
						case VARYING:
						case VCPU:
						case VIEW:
						case VIRTUAL:
						case VISIBLE:
						case WAIT:
						case WARNINGS:
						case WEEK:
						case WEIGHT_STRING:
						case WHEN:
						case WHERE:
						case WHILE:
						case WINDOW:
						case WITH:
						case WITHOUT:
						case WORK:
						case WRAPPER:
						case WRITE:
						case X509:
						case XA:
						case XID:
						case XML:
						case XOR:
						case YEAR:
						case YEAR_MONTH:
						case ZEROFILL:
						case JSON_ARRAY:
						case JSON_ARRAY_APPEND:
						case JSON_ARRAY_INSERT:
						case JSON_CONTAINS:
						case JSON_CONTAINS_PATH:
						case JSON_DEPTH:
						case JSON_EXTRACT:
						case JSON_INSERT:
						case JSON_KEYS:
						case JSON_LENGTH:
						case JSON_MERGE:
						case JSON_MERGE_PATCH:
						case JSON_MERGE_PRESERVE:
						case JSON_OBJECT:
						case JSON_OVERLAPS:
						case JSON_PRETTY:
						case JSON_QUOTE:
						case JSON_REMOVE:
						case JSON_REPLACE:
						case JSON_SCHEMA_VALID:
						case JSON_SCHEMA_VALIDATION_REPORT:
						case JSON_SEARCH:
						case JSON_SET:
						case JSON_STORAGE_FREE:
						case JSON_STORAGE_SIZE:
						case JSON_TYPE:
						case JSON_UNQUOTE:
						case JSON_VALID:
						case FILESIZE_LITERAL:
						case SINGLE_QUOTED_TEXT:
						case DOUBLE_QUOTED_TEXT:
						case NCHAR_TEXT:
						case UNDERSCORE_CHARSET:
						case NUMBER_:
						case INT_NUM_:
						case FLOAT_NUM_:
						case DECIMAL_NUM_:
						case HEX_DIGIT_:
						case BIT_NUM_:
						case IDENTIFIER_:
						case NOT_SUPPORT_:
						case FIELDS:
							{
							setState(4693);
							_la = _input.LA(1);
							if ( _la <= 0 || ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << BACKSLASH_) | (1L << DQ_) | (1L << SQ_) | (1L << BQ_))) != 0)) ) {
							_errHandler.recoverInline(this);
							}
							else {
								if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
								_errHandler.reportMatch(this);
								consume();
							}
							}
							break;
						default:
							throw new NoViableAltException(this);
						}
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					setState(4696); 
					_errHandler.sync(this);
					_alt = getInterpreter().adaptivePredict(_input,581,_ctx);
				} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserIdentifierOrTextContext extends ParserRuleContext {
		public List textOrIdentifier() {
			return getRuleContexts(TextOrIdentifierContext.class);
		}
		public TextOrIdentifierContext textOrIdentifier(int i) {
			return getRuleContext(TextOrIdentifierContext.class,i);
		}
		public TerminalNode AT_() { return getToken(MySQLStatementParser.AT_, 0); }
		public UserIdentifierOrTextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userIdentifierOrText; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserIdentifierOrText(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserIdentifierOrTextContext userIdentifierOrText() throws RecognitionException {
		UserIdentifierOrTextContext _localctx = new UserIdentifierOrTextContext(_ctx, getState());
		enterRule(_localctx, 550, RULE_userIdentifierOrText);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4700);
			textOrIdentifier();
			setState(4703);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,583,_ctx) ) {
			case 1:
				{
				setState(4701);
				match(AT_);
				setState(4702);
				textOrIdentifier();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UsernameContext extends ParserRuleContext {
		public UserIdentifierOrTextContext userIdentifierOrText() {
			return getRuleContext(UserIdentifierOrTextContext.class,0);
		}
		public TerminalNode CURRENT_USER() { return getToken(MySQLStatementParser.CURRENT_USER, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public UsernameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_username; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUsername(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UsernameContext username() throws RecognitionException {
		UsernameContext _localctx = new UsernameContext(_ctx, getState());
		enterRule(_localctx, 552, RULE_username);
		int _la;
		try {
			setState(4711);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(4705);
				userIdentifierOrText();
				}
				break;
			case CURRENT_USER:
				enterOuterAlt(_localctx, 2);
				{
				setState(4706);
				match(CURRENT_USER);
				setState(4709);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(4707);
					match(LP_);
					setState(4708);
					match(RP_);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EventNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public EventNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_eventName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitEventName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EventNameContext eventName() throws RecognitionException {
		EventNameContext _localctx = new EventNameContext(_ctx, getState());
		enterRule(_localctx, 554, RULE_eventName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4716);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,586,_ctx) ) {
			case 1:
				{
				setState(4713);
				owner();
				setState(4714);
				match(DOT_);
				}
				break;
			}
			setState(4718);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ServerNameContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public ServerNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_serverName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitServerName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ServerNameContext serverName() throws RecognitionException {
		ServerNameContext _localctx = new ServerNameContext(_ctx, getState());
		enterRule(_localctx, 556, RULE_serverName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4720);
			textOrIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WrapperNameContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public WrapperNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_wrapperName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWrapperName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WrapperNameContext wrapperName() throws RecognitionException {
		WrapperNameContext _localctx = new WrapperNameContext(_ctx, getState());
		enterRule(_localctx, 558, RULE_wrapperName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4722);
			textOrIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public FunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFunctionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionNameContext functionName() throws RecognitionException {
		FunctionNameContext _localctx = new FunctionNameContext(_ctx, getState());
		enterRule(_localctx, 560, RULE_functionName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4727);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,587,_ctx) ) {
			case 1:
				{
				setState(4724);
				owner();
				setState(4725);
				match(DOT_);
				}
				break;
			}
			setState(4729);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ProcedureNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public ProcedureNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_procedureName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitProcedureName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ProcedureNameContext procedureName() throws RecognitionException {
		ProcedureNameContext _localctx = new ProcedureNameContext(_ctx, getState());
		enterRule(_localctx, 562, RULE_procedureName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4734);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,588,_ctx) ) {
			case 1:
				{
				setState(4731);
				owner();
				setState(4732);
				match(DOT_);
				}
				break;
			}
			setState(4736);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ViewNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext owner() {
			return getRuleContext(OwnerContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public ViewNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_viewName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitViewName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ViewNameContext viewName() throws RecognitionException {
		ViewNameContext _localctx = new ViewNameContext(_ctx, getState());
		enterRule(_localctx, 564, RULE_viewName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4741);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,589,_ctx) ) {
			case 1:
				{
				setState(4738);
				owner();
				setState(4739);
				match(DOT_);
				}
				break;
			}
			setState(4743);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OwnerContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OwnerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_owner; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOwner(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OwnerContext owner() throws RecognitionException {
		OwnerContext _localctx = new OwnerContext(_ctx, getState());
		enterRule(_localctx, 566, RULE_owner);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4745);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AliasContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public AliasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alias; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlias(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AliasContext alias() throws RecognitionException {
		AliasContext _localctx = new AliasContext(_ctx, getState());
		enterRule(_localctx, 568, RULE_alias);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4747);
			textOrIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public NameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_name; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NameContext name() throws RecognitionException {
		NameContext _localctx = new NameContext(_ctx, getState());
		enterRule(_localctx, 570, RULE_name);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4749);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableListContext extends ParserRuleContext {
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TableListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableListContext tableList() throws RecognitionException {
		TableListContext _localctx = new TableListContext(_ctx, getState());
		enterRule(_localctx, 572, RULE_tableList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4751);
			tableName();
			setState(4756);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4752);
				match(COMMA_);
				setState(4753);
				tableName();
				}
				}
				setState(4758);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ViewNamesContext extends ParserRuleContext {
		public List viewName() {
			return getRuleContexts(ViewNameContext.class);
		}
		public ViewNameContext viewName(int i) {
			return getRuleContext(ViewNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ViewNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_viewNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitViewNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ViewNamesContext viewNames() throws RecognitionException {
		ViewNamesContext _localctx = new ViewNamesContext(_ctx, getState());
		enterRule(_localctx, 574, RULE_viewNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4759);
			viewName();
			setState(4764);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4760);
				match(COMMA_);
				setState(4761);
				viewName();
				}
				}
				setState(4766);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnNamesContext extends ParserRuleContext {
		public List columnName() {
			return getRuleContexts(ColumnNameContext.class);
		}
		public ColumnNameContext columnName(int i) {
			return getRuleContext(ColumnNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ColumnNamesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnNames; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnNames(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnNamesContext columnNames() throws RecognitionException {
		ColumnNamesContext _localctx = new ColumnNamesContext(_ctx, getState());
		enterRule(_localctx, 576, RULE_columnNames);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4767);
			columnName();
			setState(4772);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4768);
				match(COMMA_);
				setState(4769);
				columnName();
				}
				}
				setState(4774);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public GroupNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGroupName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupNameContext groupName() throws RecognitionException {
		GroupNameContext _localctx = new GroupNameContext(_ctx, getState());
		enterRule(_localctx, 578, RULE_groupName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4775);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoutineNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public RoutineNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_routineName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoutineName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoutineNameContext routineName() throws RecognitionException {
		RoutineNameContext _localctx = new RoutineNameContext(_ctx, getState());
		enterRule(_localctx, 580, RULE_routineName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4777);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShardLibraryNameContext extends ParserRuleContext {
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public ShardLibraryNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_shardLibraryName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShardLibraryName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShardLibraryNameContext shardLibraryName() throws RecognitionException {
		ShardLibraryNameContext _localctx = new ShardLibraryNameContext(_ctx, getState());
		enterRule(_localctx, 582, RULE_shardLibraryName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4779);
			stringLiterals();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ComponentNameContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public ComponentNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_componentName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitComponentName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ComponentNameContext componentName() throws RecognitionException {
		ComponentNameContext _localctx = new ComponentNameContext(_ctx, getState());
		enterRule(_localctx, 584, RULE_componentName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4781);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PluginNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public PluginNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_pluginName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPluginName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PluginNameContext pluginName() throws RecognitionException {
		PluginNameContext _localctx = new PluginNameContext(_ctx, getState());
		enterRule(_localctx, 586, RULE_pluginName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4783);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HostnameContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public HostnameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_hostname; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHostname(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HostnameContext hostname() throws RecognitionException {
		HostnameContext _localctx = new HostnameContext(_ctx, getState());
		enterRule(_localctx, 588, RULE_hostname);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4785);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PortContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public PortContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_port; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPort(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PortContext port() throws RecognitionException {
		PortContext _localctx = new PortContext(_ctx, getState());
		enterRule(_localctx, 590, RULE_port);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4787);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CloneInstanceContext extends ParserRuleContext {
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode AT_() { return getToken(MySQLStatementParser.AT_, 0); }
		public HostnameContext hostname() {
			return getRuleContext(HostnameContext.class,0);
		}
		public TerminalNode COLON_() { return getToken(MySQLStatementParser.COLON_, 0); }
		public PortContext port() {
			return getRuleContext(PortContext.class,0);
		}
		public CloneInstanceContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cloneInstance; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCloneInstance(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CloneInstanceContext cloneInstance() throws RecognitionException {
		CloneInstanceContext _localctx = new CloneInstanceContext(_ctx, getState());
		enterRule(_localctx, 592, RULE_cloneInstance);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4789);
			username();
			setState(4790);
			match(AT_);
			setState(4791);
			hostname();
			setState(4792);
			match(COLON_);
			setState(4793);
			port();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CloneDirContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public CloneDirContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cloneDir; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCloneDir(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CloneDirContext cloneDir() throws RecognitionException {
		CloneDirContext _localctx = new CloneDirContext(_ctx, getState());
		enterRule(_localctx, 594, RULE_cloneDir);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4795);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChannelNameContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public ChannelNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_channelName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChannelName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChannelNameContext channelName() throws RecognitionException {
		ChannelNameContext _localctx = new ChannelNameContext(_ctx, getState());
		enterRule(_localctx, 596, RULE_channelName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4797);
			identifier();
			setState(4800);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT_) {
				{
				setState(4798);
				match(DOT_);
				setState(4799);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LogNameContext extends ParserRuleContext {
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public LogNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_logName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLogName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LogNameContext logName() throws RecognitionException {
		LogNameContext _localctx = new LogNameContext(_ctx, getState());
		enterRule(_localctx, 598, RULE_logName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4802);
			stringLiterals();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleNameContext extends ParserRuleContext {
		public RoleIdentifierOrTextContext roleIdentifierOrText() {
			return getRuleContext(RoleIdentifierOrTextContext.class,0);
		}
		public TerminalNode AT_() { return getToken(MySQLStatementParser.AT_, 0); }
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public RoleNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoleName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleNameContext roleName() throws RecognitionException {
		RoleNameContext _localctx = new RoleNameContext(_ctx, getState());
		enterRule(_localctx, 600, RULE_roleName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4804);
			roleIdentifierOrText();
			setState(4807);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AT_) {
				{
				setState(4805);
				match(AT_);
				setState(4806);
				textOrIdentifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleIdentifierOrTextContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public RoleIdentifierOrTextContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleIdentifierOrText; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoleIdentifierOrText(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleIdentifierOrTextContext roleIdentifierOrText() throws RecognitionException {
		RoleIdentifierOrTextContext _localctx = new RoleIdentifierOrTextContext(_ctx, getState());
		enterRule(_localctx, 602, RULE_roleIdentifierOrText);
		try {
			setState(4811);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,595,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4809);
				identifier();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4810);
				string_();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EngineRefContext extends ParserRuleContext {
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public EngineRefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_engineRef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitEngineRef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EngineRefContext engineRef() throws RecognitionException {
		EngineRefContext _localctx = new EngineRefContext(_ctx, getState());
		enterRule(_localctx, 604, RULE_engineRef);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4813);
			textOrIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerNameContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public TriggerNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTriggerName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerNameContext triggerName() throws RecognitionException {
		TriggerNameContext _localctx = new TriggerNameContext(_ctx, getState());
		enterRule(_localctx, 606, RULE_triggerName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4815);
			identifier();
			setState(4818);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT_) {
				{
				setState(4816);
				match(DOT_);
				setState(4817);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerTimeContext extends ParserRuleContext {
		public TerminalNode BEFORE() { return getToken(MySQLStatementParser.BEFORE, 0); }
		public TerminalNode AFTER() { return getToken(MySQLStatementParser.AFTER, 0); }
		public TriggerTimeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerTime; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTriggerTime(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerTimeContext triggerTime() throws RecognitionException {
		TriggerTimeContext _localctx = new TriggerTimeContext(_ctx, getState());
		enterRule(_localctx, 608, RULE_triggerTime);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4820);
			_la = _input.LA(1);
			if ( !(_la==AFTER || _la==BEFORE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableOrTablesContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public TableOrTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableOrTables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableOrTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableOrTablesContext tableOrTables() throws RecognitionException {
		TableOrTablesContext _localctx = new TableOrTablesContext(_ctx, getState());
		enterRule(_localctx, 610, RULE_tableOrTables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4822);
			_la = _input.LA(1);
			if ( !(_la==TABLE || _la==TABLES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserOrRoleContext extends ParserRuleContext {
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public RoleNameContext roleName() {
			return getRuleContext(RoleNameContext.class,0);
		}
		public UserOrRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userOrRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserOrRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserOrRoleContext userOrRole() throws RecognitionException {
		UserOrRoleContext _localctx = new UserOrRoleContext(_ctx, getState());
		enterRule(_localctx, 612, RULE_userOrRole);
		try {
			setState(4826);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,597,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4824);
				username();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4825);
				roleName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public PartitionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionNameContext partitionName() throws RecognitionException {
		PartitionNameContext _localctx = new PartitionNameContext(_ctx, getState());
		enterRule(_localctx, 614, RULE_partitionName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4828);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifierListContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public IdentifierListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifierList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifierList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifierListContext identifierList() throws RecognitionException {
		IdentifierListContext _localctx = new IdentifierListContext(_ctx, getState());
		enterRule(_localctx, 616, RULE_identifierList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4830);
			identifier();
			setState(4835);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(4831);
				match(COMMA_);
				setState(4832);
				identifier();
				}
				}
				setState(4837);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AllOrPartitionNameListContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public IdentifierListContext identifierList() {
			return getRuleContext(IdentifierListContext.class,0);
		}
		public AllOrPartitionNameListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_allOrPartitionNameList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAllOrPartitionNameList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AllOrPartitionNameListContext allOrPartitionNameList() throws RecognitionException {
		AllOrPartitionNameListContext _localctx = new AllOrPartitionNameListContext(_ctx, getState());
		enterRule(_localctx, 618, RULE_allOrPartitionNameList);
		try {
			setState(4840);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(4838);
				match(ALL);
				}
				break;
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 2);
				{
				setState(4839);
				identifierList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerEventContext extends ParserRuleContext {
		public TerminalNode INSERT() { return getToken(MySQLStatementParser.INSERT, 0); }
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public TerminalNode DELETE() { return getToken(MySQLStatementParser.DELETE, 0); }
		public TriggerEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTriggerEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerEventContext triggerEvent() throws RecognitionException {
		TriggerEventContext _localctx = new TriggerEventContext(_ctx, getState());
		enterRule(_localctx, 620, RULE_triggerEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4842);
			_la = _input.LA(1);
			if ( !(_la==DELETE || _la==INSERT || _la==UPDATE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TriggerOrderContext extends ParserRuleContext {
		public TriggerNameContext triggerName() {
			return getRuleContext(TriggerNameContext.class,0);
		}
		public TerminalNode FOLLOWS() { return getToken(MySQLStatementParser.FOLLOWS, 0); }
		public TerminalNode PRECEDES() { return getToken(MySQLStatementParser.PRECEDES, 0); }
		public TriggerOrderContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_triggerOrder; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTriggerOrder(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TriggerOrderContext triggerOrder() throws RecognitionException {
		TriggerOrderContext _localctx = new TriggerOrderContext(_ctx, getState());
		enterRule(_localctx, 622, RULE_triggerOrder);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4844);
			_la = _input.LA(1);
			if ( !(_la==FOLLOWS || _la==PRECEDES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(4845);
			triggerName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExprContext extends ParserRuleContext {
		public BooleanPrimaryContext booleanPrimary() {
			return getRuleContext(BooleanPrimaryContext.class,0);
		}
		public NotOperatorContext notOperator() {
			return getRuleContext(NotOperatorContext.class,0);
		}
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public AndOperatorContext andOperator() {
			return getRuleContext(AndOperatorContext.class,0);
		}
		public OrOperatorContext orOperator() {
			return getRuleContext(OrOperatorContext.class,0);
		}
		public TerminalNode XOR() { return getToken(MySQLStatementParser.XOR, 0); }
		public ExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_expr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExprContext expr() throws RecognitionException {
		return expr(0);
	}

	private ExprContext expr(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		ExprContext _localctx = new ExprContext(_ctx, _parentState);
		ExprContext _prevctx = _localctx;
		int _startState = 624;
		enterRecursionRule(_localctx, 624, RULE_expr, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(4852);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,600,_ctx) ) {
			case 1:
				{
				setState(4848);
				booleanPrimary(0);
				}
				break;
			case 2:
				{
				setState(4849);
				notOperator();
				setState(4850);
				expr(1);
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(4867);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,602,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(4865);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,601,_ctx) ) {
					case 1:
						{
						_localctx = new ExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expr);
						setState(4854);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(4855);
						andOperator();
						setState(4856);
						expr(5);
						}
						break;
					case 2:
						{
						_localctx = new ExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expr);
						setState(4858);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(4859);
						orOperator();
						setState(4860);
						expr(4);
						}
						break;
					case 3:
						{
						_localctx = new ExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_expr);
						setState(4862);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(4863);
						match(XOR);
						setState(4864);
						expr(3);
						}
						break;
					}
					} 
				}
				setState(4869);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,602,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class AndOperatorContext extends ParserRuleContext {
		public TerminalNode AND() { return getToken(MySQLStatementParser.AND, 0); }
		public TerminalNode AND_() { return getToken(MySQLStatementParser.AND_, 0); }
		public AndOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_andOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAndOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AndOperatorContext andOperator() throws RecognitionException {
		AndOperatorContext _localctx = new AndOperatorContext(_ctx, getState());
		enterRule(_localctx, 626, RULE_andOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4870);
			_la = _input.LA(1);
			if ( !(_la==AND_ || _la==AND) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrOperatorContext extends ParserRuleContext {
		public TerminalNode OR() { return getToken(MySQLStatementParser.OR, 0); }
		public TerminalNode OR_() { return getToken(MySQLStatementParser.OR_, 0); }
		public OrOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOrOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrOperatorContext orOperator() throws RecognitionException {
		OrOperatorContext _localctx = new OrOperatorContext(_ctx, getState());
		enterRule(_localctx, 628, RULE_orOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4872);
			_la = _input.LA(1);
			if ( !(_la==OR_ || _la==OR) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NotOperatorContext extends ParserRuleContext {
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode NOT_() { return getToken(MySQLStatementParser.NOT_, 0); }
		public NotOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_notOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNotOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NotOperatorContext notOperator() throws RecognitionException {
		NotOperatorContext _localctx = new NotOperatorContext(_ctx, getState());
		enterRule(_localctx, 630, RULE_notOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4874);
			_la = _input.LA(1);
			if ( !(_la==NOT_ || _la==NOT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BooleanPrimaryContext extends ParserRuleContext {
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public BooleanPrimaryContext booleanPrimary() {
			return getRuleContext(BooleanPrimaryContext.class,0);
		}
		public TerminalNode IS() { return getToken(MySQLStatementParser.IS, 0); }
		public TerminalNode TRUE() { return getToken(MySQLStatementParser.TRUE, 0); }
		public TerminalNode FALSE() { return getToken(MySQLStatementParser.FALSE, 0); }
		public TerminalNode UNKNOWN() { return getToken(MySQLStatementParser.UNKNOWN, 0); }
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode SAFE_EQ_() { return getToken(MySQLStatementParser.SAFE_EQ_, 0); }
		public ComparisonOperatorContext comparisonOperator() {
			return getRuleContext(ComparisonOperatorContext.class,0);
		}
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode ANY() { return getToken(MySQLStatementParser.ANY, 0); }
		public AssignmentOperatorContext assignmentOperator() {
			return getRuleContext(AssignmentOperatorContext.class,0);
		}
		public BooleanPrimaryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_booleanPrimary; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBooleanPrimary(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BooleanPrimaryContext booleanPrimary() throws RecognitionException {
		return booleanPrimary(0);
	}

	private BooleanPrimaryContext booleanPrimary(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		BooleanPrimaryContext _localctx = new BooleanPrimaryContext(_ctx, _parentState);
		BooleanPrimaryContext _prevctx = _localctx;
		int _startState = 632;
		enterRecursionRule(_localctx, 632, RULE_booleanPrimary, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(4877);
			predicate();
			}
			_ctx.stop = _input.LT(-1);
			setState(4903);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,605,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(4901);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,604,_ctx) ) {
					case 1:
						{
						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
						setState(4879);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(4880);
						match(IS);
						setState(4882);
						_errHandler.sync(this);
						_la = _input.LA(1);
						if (_la==NOT) {
							{
							setState(4881);
							match(NOT);
							}
						}

						setState(4884);
						_la = _input.LA(1);
						if ( !(_la==FALSE || _la==NULL || _la==TRUE || _la==UNKNOWN) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						}
						break;
					case 2:
						{
						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
						setState(4885);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(4886);
						match(SAFE_EQ_);
						setState(4887);
						predicate();
						}
						break;
					case 3:
						{
						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
						setState(4888);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(4889);
						comparisonOperator();
						setState(4890);
						predicate();
						}
						break;
					case 4:
						{
						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
						setState(4892);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(4893);
						comparisonOperator();
						setState(4894);
						_la = _input.LA(1);
						if ( !(_la==ALL || _la==ANY) ) {
						_errHandler.recoverInline(this);
						}
						else {
							if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
							_errHandler.reportMatch(this);
							consume();
						}
						setState(4895);
						subquery();
						}
						break;
					case 5:
						{
						_localctx = new BooleanPrimaryContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_booleanPrimary);
						setState(4897);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(4898);
						assignmentOperator();
						setState(4899);
						predicate();
						}
						break;
					}
					} 
				}
				setState(4905);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,605,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class AssignmentOperatorContext extends ParserRuleContext {
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode ASSIGNMENT_() { return getToken(MySQLStatementParser.ASSIGNMENT_, 0); }
		public AssignmentOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_assignmentOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAssignmentOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AssignmentOperatorContext assignmentOperator() throws RecognitionException {
		AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState());
		enterRule(_localctx, 634, RULE_assignmentOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4906);
			_la = _input.LA(1);
			if ( !(_la==EQ_ || _la==ASSIGNMENT_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ComparisonOperatorContext extends ParserRuleContext {
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode GTE_() { return getToken(MySQLStatementParser.GTE_, 0); }
		public TerminalNode GT_() { return getToken(MySQLStatementParser.GT_, 0); }
		public TerminalNode LTE_() { return getToken(MySQLStatementParser.LTE_, 0); }
		public TerminalNode LT_() { return getToken(MySQLStatementParser.LT_, 0); }
		public TerminalNode NEQ_() { return getToken(MySQLStatementParser.NEQ_, 0); }
		public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_comparisonOperator; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitComparisonOperator(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ComparisonOperatorContext comparisonOperator() throws RecognitionException {
		ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState());
		enterRule(_localctx, 636, RULE_comparisonOperator);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(4908);
			_la = _input.LA(1);
			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << EQ_) | (1L << NEQ_) | (1L << GT_) | (1L << GTE_) | (1L << LT_) | (1L << LTE_))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PredicateContext extends ParserRuleContext {
		public List bitExpr() {
			return getRuleContexts(BitExprContext.class);
		}
		public BitExprContext bitExpr(int i) {
			return getRuleContext(BitExprContext.class,i);
		}
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode BETWEEN() { return getToken(MySQLStatementParser.BETWEEN, 0); }
		public TerminalNode AND() { return getToken(MySQLStatementParser.AND, 0); }
		public PredicateContext predicate() {
			return getRuleContext(PredicateContext.class,0);
		}
		public TerminalNode SOUNDS() { return getToken(MySQLStatementParser.SOUNDS, 0); }
		public TerminalNode LIKE() { return getToken(MySQLStatementParser.LIKE, 0); }
		public List simpleExpr() {
			return getRuleContexts(SimpleExprContext.class);
		}
		public SimpleExprContext simpleExpr(int i) {
			return getRuleContext(SimpleExprContext.class,i);
		}
		public TerminalNode ESCAPE() { return getToken(MySQLStatementParser.ESCAPE, 0); }
		public TerminalNode REGEXP() { return getToken(MySQLStatementParser.REGEXP, 0); }
		public PredicateContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_predicate; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPredicate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PredicateContext predicate() throws RecognitionException {
		PredicateContext _localctx = new PredicateContext(_ctx, getState());
		enterRule(_localctx, 638, RULE_predicate);
		int _la;
		try {
			setState(4965);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,613,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(4910);
				bitExpr(0);
				setState(4912);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(4911);
					match(NOT);
					}
				}

				setState(4914);
				match(IN);
				setState(4915);
				subquery();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(4917);
				bitExpr(0);
				setState(4919);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(4918);
					match(NOT);
					}
				}

				setState(4921);
				match(IN);
				setState(4922);
				match(LP_);
				setState(4923);
				expr(0);
				setState(4928);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(4924);
					match(COMMA_);
					setState(4925);
					expr(0);
					}
					}
					setState(4930);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(4931);
				match(RP_);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(4933);
				bitExpr(0);
				setState(4935);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(4934);
					match(NOT);
					}
				}

				setState(4937);
				match(BETWEEN);
				setState(4938);
				bitExpr(0);
				setState(4939);
				match(AND);
				setState(4940);
				predicate();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(4942);
				bitExpr(0);
				setState(4943);
				match(SOUNDS);
				setState(4944);
				match(LIKE);
				setState(4945);
				bitExpr(0);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(4947);
				bitExpr(0);
				setState(4949);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(4948);
					match(NOT);
					}
				}

				setState(4951);
				match(LIKE);
				setState(4952);
				simpleExpr(0);
				setState(4955);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,611,_ctx) ) {
				case 1:
					{
					setState(4953);
					match(ESCAPE);
					setState(4954);
					simpleExpr(0);
					}
					break;
				}
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(4957);
				bitExpr(0);
				setState(4959);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NOT) {
					{
					setState(4958);
					match(NOT);
					}
				}

				setState(4961);
				match(REGEXP);
				setState(4962);
				bitExpr(0);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(4964);
				bitExpr(0);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BitExprContext extends ParserRuleContext {
		public SimpleExprContext simpleExpr() {
			return getRuleContext(SimpleExprContext.class,0);
		}
		public List bitExpr() {
			return getRuleContexts(BitExprContext.class);
		}
		public BitExprContext bitExpr(int i) {
			return getRuleContext(BitExprContext.class,i);
		}
		public TerminalNode VERTICAL_BAR_() { return getToken(MySQLStatementParser.VERTICAL_BAR_, 0); }
		public TerminalNode AMPERSAND_() { return getToken(MySQLStatementParser.AMPERSAND_, 0); }
		public TerminalNode SIGNED_LEFT_SHIFT_() { return getToken(MySQLStatementParser.SIGNED_LEFT_SHIFT_, 0); }
		public TerminalNode SIGNED_RIGHT_SHIFT_() { return getToken(MySQLStatementParser.SIGNED_RIGHT_SHIFT_, 0); }
		public TerminalNode PLUS_() { return getToken(MySQLStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(MySQLStatementParser.MINUS_, 0); }
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public TerminalNode SLASH_() { return getToken(MySQLStatementParser.SLASH_, 0); }
		public TerminalNode DIV() { return getToken(MySQLStatementParser.DIV, 0); }
		public TerminalNode MOD() { return getToken(MySQLStatementParser.MOD, 0); }
		public TerminalNode MOD_() { return getToken(MySQLStatementParser.MOD_, 0); }
		public TerminalNode CARET_() { return getToken(MySQLStatementParser.CARET_, 0); }
		public IntervalExpressionContext intervalExpression() {
			return getRuleContext(IntervalExpressionContext.class,0);
		}
		public BitExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_bitExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBitExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BitExprContext bitExpr() throws RecognitionException {
		return bitExpr(0);
	}

	private BitExprContext bitExpr(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		BitExprContext _localctx = new BitExprContext(_ctx, _parentState);
		BitExprContext _prevctx = _localctx;
		int _startState = 640;
		enterRecursionRule(_localctx, 640, RULE_bitExpr, _p);
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			{
			setState(4968);
			simpleExpr(0);
			}
			_ctx.stop = _input.LT(-1);
			setState(5014);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,615,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(5012);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,614,_ctx) ) {
					case 1:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4970);
						if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)");
						setState(4971);
						match(VERTICAL_BAR_);
						setState(4972);
						bitExpr(16);
						}
						break;
					case 2:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4973);
						if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)");
						setState(4974);
						match(AMPERSAND_);
						setState(4975);
						bitExpr(15);
						}
						break;
					case 3:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4976);
						if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)");
						setState(4977);
						match(SIGNED_LEFT_SHIFT_);
						setState(4978);
						bitExpr(14);
						}
						break;
					case 4:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4979);
						if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
						setState(4980);
						match(SIGNED_RIGHT_SHIFT_);
						setState(4981);
						bitExpr(13);
						}
						break;
					case 5:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4982);
						if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)");
						setState(4983);
						match(PLUS_);
						setState(4984);
						bitExpr(12);
						}
						break;
					case 6:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4985);
						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
						setState(4986);
						match(MINUS_);
						setState(4987);
						bitExpr(11);
						}
						break;
					case 7:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4988);
						if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)");
						setState(4989);
						match(ASTERISK_);
						setState(4990);
						bitExpr(10);
						}
						break;
					case 8:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4991);
						if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)");
						setState(4992);
						match(SLASH_);
						setState(4993);
						bitExpr(9);
						}
						break;
					case 9:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4994);
						if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)");
						setState(4995);
						match(DIV);
						setState(4996);
						bitExpr(8);
						}
						break;
					case 10:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(4997);
						if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)");
						setState(4998);
						match(MOD);
						setState(4999);
						bitExpr(7);
						}
						break;
					case 11:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(5000);
						if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
						setState(5001);
						match(MOD_);
						setState(5002);
						bitExpr(6);
						}
						break;
					case 12:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(5003);
						if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
						setState(5004);
						match(CARET_);
						setState(5005);
						bitExpr(5);
						}
						break;
					case 13:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(5006);
						if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
						setState(5007);
						match(PLUS_);
						setState(5008);
						intervalExpression();
						}
						break;
					case 14:
						{
						_localctx = new BitExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_bitExpr);
						setState(5009);
						if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
						setState(5010);
						match(MINUS_);
						setState(5011);
						intervalExpression();
						}
						break;
					}
					} 
				}
				setState(5016);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,615,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class SimpleExprContext extends ParserRuleContext {
		public FunctionCallContext functionCall() {
			return getRuleContext(FunctionCallContext.class,0);
		}
		public ParameterMarkerContext parameterMarker() {
			return getRuleContext(ParameterMarkerContext.class,0);
		}
		public LiteralsContext literals() {
			return getRuleContext(LiteralsContext.class,0);
		}
		public ColumnRefContext columnRef() {
			return getRuleContext(ColumnRefContext.class,0);
		}
		public VariableContext variable() {
			return getRuleContext(VariableContext.class,0);
		}
		public List simpleExpr() {
			return getRuleContexts(SimpleExprContext.class);
		}
		public SimpleExprContext simpleExpr(int i) {
			return getRuleContext(SimpleExprContext.class,i);
		}
		public TerminalNode PLUS_() { return getToken(MySQLStatementParser.PLUS_, 0); }
		public TerminalNode MINUS_() { return getToken(MySQLStatementParser.MINUS_, 0); }
		public TerminalNode TILDE_() { return getToken(MySQLStatementParser.TILDE_, 0); }
		public NotOperatorContext notOperator() {
			return getRuleContext(NotOperatorContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode ROW() { return getToken(MySQLStatementParser.ROW, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SubqueryContext subquery() {
			return getRuleContext(SubqueryContext.class,0);
		}
		public TerminalNode EXISTS() { return getToken(MySQLStatementParser.EXISTS, 0); }
		public TerminalNode LBE_() { return getToken(MySQLStatementParser.LBE_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode RBE_() { return getToken(MySQLStatementParser.RBE_, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode JSON_SEPARATOR() { return getToken(MySQLStatementParser.JSON_SEPARATOR, 0); }
		public TerminalNode JSON_UNQUOTED_SEPARATOR() { return getToken(MySQLStatementParser.JSON_UNQUOTED_SEPARATOR, 0); }
		public PathContext path() {
			return getRuleContext(PathContext.class,0);
		}
		public TerminalNode RETURNING() { return getToken(MySQLStatementParser.RETURNING, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public OnEmptyErrorContext onEmptyError() {
			return getRuleContext(OnEmptyErrorContext.class,0);
		}
		public MatchExpressionContext matchExpression() {
			return getRuleContext(MatchExpressionContext.class,0);
		}
		public CaseExpressionContext caseExpression() {
			return getRuleContext(CaseExpressionContext.class,0);
		}
		public IntervalExpressionContext intervalExpression() {
			return getRuleContext(IntervalExpressionContext.class,0);
		}
		public TerminalNode OR_() { return getToken(MySQLStatementParser.OR_, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public SimpleExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_simpleExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSimpleExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SimpleExprContext simpleExpr() throws RecognitionException {
		return simpleExpr(0);
	}

	private SimpleExprContext simpleExpr(int _p) throws RecognitionException {
		ParserRuleContext _parentctx = _ctx;
		int _parentState = getState();
		SimpleExprContext _localctx = new SimpleExprContext(_ctx, _parentState);
		SimpleExprContext _prevctx = _localctx;
		int _startState = 642;
		enterRecursionRule(_localctx, 642, RULE_simpleExpr, _p);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5069);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,622,_ctx) ) {
			case 1:
				{
				setState(5018);
				functionCall();
				}
				break;
			case 2:
				{
				setState(5019);
				parameterMarker();
				}
				break;
			case 3:
				{
				setState(5020);
				literals();
				}
				break;
			case 4:
				{
				setState(5021);
				columnRef();
				}
				break;
			case 5:
				{
				setState(5022);
				variable();
				}
				break;
			case 6:
				{
				setState(5028);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case PLUS_:
					{
					setState(5023);
					match(PLUS_);
					}
					break;
				case MINUS_:
					{
					setState(5024);
					match(MINUS_);
					}
					break;
				case TILDE_:
					{
					setState(5025);
					match(TILDE_);
					}
					break;
				case NOT_:
				case NOT:
					{
					setState(5026);
					notOperator();
					}
					break;
				case BINARY:
					{
					setState(5027);
					match(BINARY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5030);
				simpleExpr(9);
				}
				break;
			case 7:
				{
				setState(5032);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ROW) {
					{
					setState(5031);
					match(ROW);
					}
				}

				setState(5034);
				match(LP_);
				setState(5035);
				expr(0);
				setState(5040);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5036);
					match(COMMA_);
					setState(5037);
					expr(0);
					}
					}
					setState(5042);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(5043);
				match(RP_);
				}
				break;
			case 8:
				{
				setState(5046);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EXISTS) {
					{
					setState(5045);
					match(EXISTS);
					}
				}

				setState(5048);
				subquery();
				}
				break;
			case 9:
				{
				setState(5049);
				match(LBE_);
				setState(5050);
				identifier();
				setState(5051);
				expr(0);
				setState(5052);
				match(RBE_);
				}
				break;
			case 10:
				{
				setState(5054);
				identifier();
				setState(5055);
				_la = _input.LA(1);
				if ( !(_la==JSON_SEPARATOR || _la==JSON_UNQUOTED_SEPARATOR) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5056);
				string_();
				}
				break;
			case 11:
				{
				setState(5058);
				path();
				setState(5061);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,620,_ctx) ) {
				case 1:
					{
					setState(5059);
					match(RETURNING);
					setState(5060);
					dataType();
					}
					break;
				}
				setState(5064);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,621,_ctx) ) {
				case 1:
					{
					setState(5063);
					onEmptyError();
					}
					break;
				}
				}
				break;
			case 12:
				{
				setState(5066);
				matchExpression();
				}
				break;
			case 13:
				{
				setState(5067);
				caseExpression();
				}
				break;
			case 14:
				{
				setState(5068);
				intervalExpression();
				}
				break;
			}
			_ctx.stop = _input.LT(-1);
			setState(5078);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,624,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					if ( _parseListeners!=null ) triggerExitRuleEvent();
					_prevctx = _localctx;
					{
					setState(5076);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,623,_ctx) ) {
					case 1:
						{
						_localctx = new SimpleExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
						setState(5071);
						if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)");
						setState(5072);
						match(OR_);
						setState(5073);
						simpleExpr(11);
						}
						break;
					case 2:
						{
						_localctx = new SimpleExprContext(_parentctx, _parentState);
						pushNewRecursionContext(_localctx, _startState, RULE_simpleExpr);
						setState(5074);
						if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)");
						setState(5075);
						collateClause();
						}
						break;
					}
					} 
				}
				setState(5080);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,624,_ctx);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			unrollRecursionContexts(_parentctx);
		}
		return _localctx;
	}

	public static class PathContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public PathContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_path; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPath(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PathContext path() throws RecognitionException {
		PathContext _localctx = new PathContext(_ctx, getState());
		enterRule(_localctx, 644, RULE_path);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5081);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OnEmptyErrorContext extends ParserRuleContext {
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TerminalNode EMPTY() { return getToken(MySQLStatementParser.EMPTY, 0); }
		public List ERROR() { return getTokens(MySQLStatementParser.ERROR); }
		public TerminalNode ERROR(int i) {
			return getToken(MySQLStatementParser.ERROR, i);
		}
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public LiteralsContext literals() {
			return getRuleContext(LiteralsContext.class,0);
		}
		public OnEmptyErrorContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_onEmptyError; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOnEmptyError(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OnEmptyErrorContext onEmptyError() throws RecognitionException {
		OnEmptyErrorContext _localctx = new OnEmptyErrorContext(_ctx, getState());
		enterRule(_localctx, 646, RULE_onEmptyError);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5087);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NULL:
				{
				setState(5083);
				match(NULL);
				}
				break;
			case ERROR:
				{
				setState(5084);
				match(ERROR);
				}
				break;
			case DEFAULT:
				{
				setState(5085);
				match(DEFAULT);
				setState(5086);
				literals();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5089);
			match(ON);
			setState(5090);
			_la = _input.LA(1);
			if ( !(_la==EMPTY || _la==ERROR) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnRefContext extends ParserRuleContext {
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public List DOT_() { return getTokens(MySQLStatementParser.DOT_); }
		public TerminalNode DOT_(int i) {
			return getToken(MySQLStatementParser.DOT_, i);
		}
		public ColumnRefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnRef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnRef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnRefContext columnRef() throws RecognitionException {
		ColumnRefContext _localctx = new ColumnRefContext(_ctx, getState());
		enterRule(_localctx, 648, RULE_columnRef);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5092);
			identifier();
			setState(5095);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,626,_ctx) ) {
			case 1:
				{
				setState(5093);
				match(DOT_);
				setState(5094);
				identifier();
				}
				break;
			}
			setState(5099);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,627,_ctx) ) {
			case 1:
				{
				setState(5097);
				match(DOT_);
				setState(5098);
				identifier();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnRefListContext extends ParserRuleContext {
		public List columnRef() {
			return getRuleContexts(ColumnRefContext.class);
		}
		public ColumnRefContext columnRef(int i) {
			return getRuleContext(ColumnRefContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ColumnRefListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnRefList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnRefList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnRefListContext columnRefList() throws RecognitionException {
		ColumnRefListContext _localctx = new ColumnRefListContext(_ctx, getState());
		enterRule(_localctx, 650, RULE_columnRefList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5101);
			columnRef();
			setState(5106);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5102);
				match(COMMA_);
				setState(5103);
				columnRef();
				}
				}
				setState(5108);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FunctionCallContext extends ParserRuleContext {
		public AggregationFunctionContext aggregationFunction() {
			return getRuleContext(AggregationFunctionContext.class,0);
		}
		public SpecialFunctionContext specialFunction() {
			return getRuleContext(SpecialFunctionContext.class,0);
		}
		public RegularFunctionContext regularFunction() {
			return getRuleContext(RegularFunctionContext.class,0);
		}
		public JsonFunctionContext jsonFunction() {
			return getRuleContext(JsonFunctionContext.class,0);
		}
		public FunctionCallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_functionCall; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFunctionCall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FunctionCallContext functionCall() throws RecognitionException {
		FunctionCallContext _localctx = new FunctionCallContext(_ctx, getState());
		enterRule(_localctx, 652, RULE_functionCall);
		try {
			setState(5113);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,629,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5109);
				aggregationFunction();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5110);
				specialFunction();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5111);
				regularFunction();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5112);
				jsonFunction();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregationFunctionContext extends ParserRuleContext {
		public AggregationFunctionNameContext aggregationFunctionName() {
			return getRuleContext(AggregationFunctionNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public DistinctContext distinct() {
			return getRuleContext(DistinctContext.class,0);
		}
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public OverClauseContext overClause() {
			return getRuleContext(OverClauseContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AggregationFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregationFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAggregationFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggregationFunctionContext aggregationFunction() throws RecognitionException {
		AggregationFunctionContext _localctx = new AggregationFunctionContext(_ctx, getState());
		enterRule(_localctx, 654, RULE_aggregationFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5115);
			aggregationFunctionName();
			setState(5116);
			match(LP_);
			setState(5118);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISTINCT) {
				{
				setState(5117);
				distinct();
				}
			}

			setState(5129);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT_:
			case TILDE_:
			case PLUS_:
			case MINUS_:
			case LP_:
			case LBE_:
			case QUESTION_:
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINARY:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CASE:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHAR:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CONVERT:
			case CPU:
			case CREATE:
			case CUME_DIST:
			case CURRENT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case CURRENT_USER:
			case CURSOR_NAME:
			case DATA:
			case DATABASE:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DENSE_RANK:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXISTS:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FALSE:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IF:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INTERVAL:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_TABLE:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LAG:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEAVES:
			case LEFT:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MATCH:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MOD:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOT:
			case NOWAIT:
			case NO_WAIT:
			case NTH_VALUE:
			case NTILE:
			case NULL:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERCENT_RANK:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case RANK:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEAT:
			case REPEATABLE:
			case REPLACE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case RIGHT:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW:
			case ROW_COUNT:
			case ROW_FORMAT:
			case ROW_NUMBER:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUE:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VALUES:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case JSON_ARRAY:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case NCHAR_TEXT:
			case UNDERSCORE_CHARSET:
			case NUMBER_:
			case HEX_DIGIT_:
			case BIT_NUM_:
			case IDENTIFIER_:
				{
				setState(5120);
				expr(0);
				setState(5125);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5121);
					match(COMMA_);
					setState(5122);
					expr(0);
					}
					}
					setState(5127);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case ASTERISK_:
				{
				setState(5128);
				match(ASTERISK_);
				}
				break;
			case RP_:
			case COLLATE:
				break;
			default:
				break;
			}
			setState(5132);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COLLATE) {
				{
				setState(5131);
				collateClause();
				}
			}

			setState(5134);
			match(RP_);
			setState(5136);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,634,_ctx) ) {
			case 1:
				{
				setState(5135);
				overClause();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonFunctionContext extends ParserRuleContext {
		public ColumnRefContext columnRef() {
			return getRuleContext(ColumnRefContext.class,0);
		}
		public PathContext path() {
			return getRuleContext(PathContext.class,0);
		}
		public TerminalNode JSON_SEPARATOR() { return getToken(MySQLStatementParser.JSON_SEPARATOR, 0); }
		public TerminalNode JSON_UNQUOTED_SEPARATOR() { return getToken(MySQLStatementParser.JSON_UNQUOTED_SEPARATOR, 0); }
		public JsonFunctionNameContext jsonFunctionName() {
			return getRuleContext(JsonFunctionNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public JsonFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitJsonFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JsonFunctionContext jsonFunction() throws RecognitionException {
		JsonFunctionContext _localctx = new JsonFunctionContext(_ctx, getState());
		enterRule(_localctx, 656, RULE_jsonFunction);
		int _la;
		try {
			setState(5159);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,638,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5138);
				columnRef();
				setState(5139);
				_la = _input.LA(1);
				if ( !(_la==JSON_SEPARATOR || _la==JSON_UNQUOTED_SEPARATOR) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5140);
				path();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5142);
				jsonFunctionName();
				setState(5143);
				match(LP_);
				setState(5155);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,637,_ctx) ) {
				case 1:
					{
					setState(5145);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << AT_) | (1L << MAX) | (1L << MIN) | (1L << SUM) | (1L << COUNT) | (1L << GROUP_CONCAT) | (1L << CAST) | (1L << POSITION) | (1L << SUBSTRING) | (1L << SUBSTR) | (1L << EXTRACT) | (1L << TRIM) | (1L << LAST_DAY) | (1L << TRADITIONAL) | (1L << TREE) | (1L << MYSQL_MAIN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (MYSQL_ADMIN - 64)) | (1L << (INSTANT - 64)) | (1L << (INPLACE - 64)) | (1L << (COPY - 64)) | (1L << (UL_BINARY - 64)) | (1L << (AUTOCOMMIT - 64)) | (1L << (INNODB - 64)) | (1L << (REDO_LOG - 64)) | (1L << (ACCOUNT - 64)) | (1L << (ACTION - 64)) | (1L << (ACTIVE - 64)) | (1L << (ADMIN - 64)) | (1L << (AFTER - 64)) | (1L << (AGAINST - 64)) | (1L << (AGGREGATE - 64)) | (1L << (ALGORITHM - 64)) | (1L << (ALWAYS - 64)) | (1L << (ANY - 64)) | (1L << (ARRAY - 64)) | (1L << (ASCII - 64)) | (1L << (AT - 64)) | (1L << (ATTRIBUTE - 64)) | (1L << (AUTOEXTEND_SIZE - 64)) | (1L << (AUTO_INCREMENT - 64)) | (1L << (AVG - 64)) | (1L << (BIT_XOR - 64)) | (1L << (AVG_ROW_LENGTH - 64)) | (1L << (BACKUP - 64)) | (1L << (BEGIN - 64)) | (1L << (BINARY - 64)) | (1L << (BINLOG - 64)) | (1L << (BIT - 64)) | (1L << (BLOCK - 64)) | (1L << (BOOL - 64)) | (1L << (BOOLEAN - 64)) | (1L << (BTREE - 64)) | (1L << (BUCKETS - 64)) | (1L << (BYTE - 64)) | (1L << (CACHE - 64)) | (1L << (CASCADED - 64)) | (1L << (CASE - 64)) | (1L << (CATALOG_NAME - 64)) | (1L << (CHAIN - 64)) | (1L << (CHANGED - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (CHANNEL - 128)) | (1L << (CHAR - 128)) | (1L << (CHARSET - 128)) | (1L << (CHECKSUM - 128)) | (1L << (CIPHER - 128)) | (1L << (CLASS_ORIGIN - 128)) | (1L << (CLIENT - 128)) | (1L << (CLONE - 128)) | (1L << (CLOSE - 128)) | (1L << (COALESCE - 128)) | (1L << (CODE - 128)) | (1L << (COLLATION - 128)) | (1L << (COLUMNS - 128)) | (1L << (COLUMN_FORMAT - 128)) | (1L << (COLUMN_NAME - 128)) | (1L << (COMMENT - 128)) | (1L << (COMMIT - 128)) | (1L << (COMMITTED - 128)) | (1L << (COMPACT - 128)) | (1L << (COMPLETION - 128)) | (1L << (COMPONENT - 128)) | (1L << (COMPRESSED - 128)) | (1L << (COMPRESSION - 128)) | (1L << (CONCURRENT - 128)) | (1L << (CONNECTION - 128)) | (1L << (CONSISTENT - 128)) | (1L << (CONSTRAINT_CATALOG - 128)) | (1L << (CONSTRAINT_NAME - 128)) | (1L << (CONSTRAINT_SCHEMA - 128)) | (1L << (CONTAINS - 128)) | (1L << (CONTEXT - 128)) | (1L << (CONVERT - 128)) | (1L << (CPU - 128)) | (1L << (CREATE - 128)) | (1L << (CUME_DIST - 128)) | (1L << (CURRENT - 128)) | (1L << (CURRENT_DATE - 128)) | (1L << (CURRENT_TIME - 128)) | (1L << (CURRENT_TIMESTAMP - 128)) | (1L << (CURRENT_USER - 128)) | (1L << (CURSOR_NAME - 128)) | (1L << (DATA - 128)) | (1L << (DATABASE - 128)) | (1L << (DATAFILE - 128)) | (1L << (DATE - 128)) | (1L << (DATETIME - 128)) | (1L << (DAY - 128)) | (1L << (DEALLOCATE - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (DEFAULT_AUTH - 195)) | (1L << (DEFINER - 195)) | (1L << (DEFINITION - 195)) | (1L << (DELAY_KEY_WRITE - 195)) | (1L << (DENSE_RANK - 195)) | (1L << (DESCRIPTION - 195)) | (1L << (DIAGNOSTICS - 195)) | (1L << (DIRECTORY - 195)) | (1L << (DISABLE - 195)) | (1L << (DISCARD - 195)) | (1L << (DISK - 195)) | (1L << (DO - 195)) | (1L << (DUMPFILE - 195)) | (1L << (DUPLICATE - 195)) | (1L << (DYNAMIC - 195)) | (1L << (ENABLE - 195)) | (1L << (ENCRYPTION - 195)) | (1L << (END - 195)) | (1L << (ENDS - 195)) | (1L << (ENFORCED - 195)) | (1L << (ENGINE - 195)) | (1L << (ENGINES - 195)) | (1L << (ENGINE_ATTRIBUTE - 195)) | (1L << (ENUM - 195)) | (1L << (ERROR - 195)) | (1L << (ERRORS - 195)) | (1L << (ESCAPE - 195)) | (1L << (EVENT - 195)) | (1L << (EVENTS - 195)) | (1L << (EVERY - 195)) | (1L << (EXCHANGE - 195)) | (1L << (EXCLUDE - 195)) | (1L << (EXECUTE - 195)) | (1L << (EXISTS - 195)) | (1L << (EXPANSION - 195)) | (1L << (EXPIRE - 195)) | (1L << (EXPORT - 195)) | (1L << (EXTENDED - 195)) | (1L << (EXTENT_SIZE - 195)) | (1L << (FAILED_LOGIN_ATTEMPTS - 195)) | (1L << (FALSE - 195)) | (1L << (FAST - 195)) | (1L << (FAULTS - 195)))) != 0) || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & ((1L << (FILE - 259)) | (1L << (FILE_BLOCK_SIZE - 259)) | (1L << (FILTER - 259)) | (1L << (FIRST - 259)) | (1L << (FIRST_VALUE - 259)) | (1L << (FIXED - 259)) | (1L << (FLUSH - 259)) | (1L << (FOLLOWING - 259)) | (1L << (FOLLOWS - 259)) | (1L << (FORMAT - 259)) | (1L << (FOUND - 259)) | (1L << (FULL - 259)) | (1L << (GENERAL - 259)) | (1L << (GEOMETRY - 259)) | (1L << (GEOMETRYCOLLECTION - 259)) | (1L << (GET_FORMAT - 259)) | (1L << (GET_MASTER_PUBLIC_KEY - 259)) | (1L << (GLOBAL - 259)) | (1L << (GRANTS - 259)) | (1L << (GROUP_REPLICATION - 259)) | (1L << (HANDLER - 259)) | (1L << (HASH - 259)) | (1L << (HELP - 259)) | (1L << (HISTOGRAM - 259)) | (1L << (HISTORY - 259)) | (1L << (HOST - 259)) | (1L << (HOSTS - 259)) | (1L << (HOUR - 259)) | (1L << (IDENTIFIED - 259)) | (1L << (IF - 259)) | (1L << (IGNORE_SERVER_IDS - 259)) | (1L << (IMPORT - 259)) | (1L << (INACTIVE - 259)) | (1L << (INDEXES - 259)) | (1L << (INITIAL_SIZE - 259)) | (1L << (INSERT - 259)) | (1L << (INSERT_METHOD - 259)))) != 0) || ((((_la - 323)) & ~0x3f) == 0 && ((1L << (_la - 323)) & ((1L << (INSTALL - 323)) | (1L << (INSTANCE - 323)) | (1L << (INTERVAL - 323)) | (1L << (INVISIBLE - 323)) | (1L << (INVOKER - 323)) | (1L << (IO - 323)) | (1L << (IPC - 323)) | (1L << (ISOLATION - 323)) | (1L << (ISSUER - 323)) | (1L << (JSON - 323)) | (1L << (JSON_TABLE - 323)) | (1L << (JSON_VALUE - 323)) | (1L << (KEY - 323)) | (1L << (KEY_BLOCK_SIZE - 323)) | (1L << (LAG - 323)) | (1L << (LANGUAGE - 323)) | (1L << (LAST - 323)) | (1L << (LAST_VALUE - 323)) | (1L << (LEAD - 323)) | (1L << (LEAVES - 323)) | (1L << (LEFT - 323)) | (1L << (LESS - 323)) | (1L << (LEVEL - 323)) | (1L << (LINESTRING - 323)) | (1L << (LIST - 323)) | (1L << (LOCAL - 323)) | (1L << (LOCALTIME - 323)) | (1L << (LOCALTIMESTAMP - 323)) | (1L << (LOCKED - 323)) | (1L << (LOCKS - 323)) | (1L << (LOGFILE - 323)) | (1L << (LOGS - 323)) | (1L << (MASTER - 323)) | (1L << (MASTER_AUTO_POSITION - 323)))) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & ((1L << (MASTER_COMPRESSION_ALGORITHM - 387)) | (1L << (MASTER_CONNECT_RETRY - 387)) | (1L << (MASTER_DELAY - 387)) | (1L << (MASTER_HEARTBEAT_PERIOD - 387)) | (1L << (MASTER_HOST - 387)) | (1L << (MASTER_LOG_FILE - 387)) | (1L << (MASTER_LOG_POS - 387)) | (1L << (MASTER_PASSWORD - 387)) | (1L << (MASTER_PORT - 387)) | (1L << (MASTER_PUBLIC_KEY_PATH - 387)) | (1L << (MASTER_RETRY_COUNT - 387)) | (1L << (MASTER_SERVER_ID - 387)) | (1L << (MASTER_SSL - 387)) | (1L << (MASTER_SSL_CA - 387)) | (1L << (MASTER_SSL_CAPATH - 387)) | (1L << (MASTER_SSL_CERT - 387)) | (1L << (MASTER_SSL_CIPHER - 387)) | (1L << (MASTER_SSL_CRL - 387)) | (1L << (MASTER_SSL_CRLPATH - 387)) | (1L << (MASTER_SSL_KEY - 387)) | (1L << (MASTER_TLS_CIPHERSUITES - 387)) | (1L << (MASTER_TLS_VERSION - 387)) | (1L << (MASTER_USER - 387)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 387)) | (1L << (MATCH - 387)) | (1L << (MAXVALUE - 387)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 387)) | (1L << (MAX_QUERIES_PER_HOUR - 387)) | (1L << (MAX_ROWS - 387)) | (1L << (MAX_SIZE - 387)) | (1L << (MAX_UPDATES_PER_HOUR - 387)) | (1L << (MAX_USER_CONNECTIONS - 387)) | (1L << (MEDIUM - 387)) | (1L << (MEMBER - 387)) | (1L << (MEMORY - 387)) | (1L << (MERGE - 387)) | (1L << (MESSAGE_TEXT - 387)) | (1L << (MICROSECOND - 387)) | (1L << (MIGRATE - 387)) | (1L << (MINUTE - 387)) | (1L << (MIN_ROWS - 387)) | (1L << (MOD - 387)) | (1L << (MODE - 387)) | (1L << (MODIFY - 387)) | (1L << (MONTH - 387)) | (1L << (MULTILINESTRING - 387)) | (1L << (MULTIPOINT - 387)) | (1L << (MULTIPOLYGON - 387)) | (1L << (MUTEX - 387)) | (1L << (MYSQL_ERRNO - 387)) | (1L << (NAME - 387)) | (1L << (NAMES - 387)) | (1L << (NATIONAL - 387)) | (1L << (NCHAR - 387)) | (1L << (NDBCLUSTER - 387)))) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & ((1L << (NESTED - 451)) | (1L << (NETWORK_NAMESPACE - 451)) | (1L << (NEVER - 451)) | (1L << (NEW - 451)) | (1L << (NEXT - 451)) | (1L << (NO - 451)) | (1L << (NODEGROUP - 451)) | (1L << (NONE - 451)) | (1L << (NOT - 451)) | (1L << (NOWAIT - 451)) | (1L << (NO_WAIT - 451)) | (1L << (NTH_VALUE - 451)) | (1L << (NTILE - 451)) | (1L << (NULL - 451)) | (1L << (NULLS - 451)) | (1L << (NUMBER - 451)) | (1L << (NVARCHAR - 451)) | (1L << (OFF - 451)) | (1L << (OFFSET - 451)) | (1L << (OJ - 451)) | (1L << (OLD - 451)) | (1L << (ONE - 451)) | (1L << (ONLY - 451)) | (1L << (OPEN - 451)) | (1L << (OPTIONAL - 451)) | (1L << (OPTIONS - 451)) | (1L << (ORDINALITY - 451)) | (1L << (ORGANIZATION - 451)) | (1L << (OTHERS - 451)) | (1L << (OWNER - 451)) | (1L << (PACK_KEYS - 451)) | (1L << (PAGE - 451)) | (1L << (PARSER - 451)) | (1L << (PARTIAL - 451)) | (1L << (PARTITIONING - 451)) | (1L << (PARTITIONS - 451)) | (1L << (PASSWORD - 451)) | (1L << (PASSWORD_LOCK_TIME - 451)) | (1L << (PATH - 451)) | (1L << (PERCENT_RANK - 451)) | (1L << (PERSIST - 451)) | (1L << (PERSIST_ONLY - 451)) | (1L << (PHASE - 451)) | (1L << (PLUGIN - 451)) | (1L << (PLUGINS - 451)) | (1L << (PLUGIN_DIR - 451)) | (1L << (POINT - 451)) | (1L << (POLYGON - 451)) | (1L << (PORT - 451)))) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & ((1L << (PRECEDES - 515)) | (1L << (PRECEDING - 515)) | (1L << (PREPARE - 515)) | (1L << (PRESERVE - 515)) | (1L << (PREV - 515)) | (1L << (PRIMARY - 515)) | (1L << (PRIVILEGES - 515)) | (1L << (PRIVILEGE_CHECKS_USER - 515)) | (1L << (PROCESS - 515)) | (1L << (PROCESSLIST - 515)) | (1L << (PROFILE - 515)) | (1L << (PROFILES - 515)) | (1L << (PROXY - 515)) | (1L << (QUARTER - 515)) | (1L << (QUERY - 515)) | (1L << (QUICK - 515)) | (1L << (RANDOM - 515)) | (1L << (RANK - 515)) | (1L << (READ_ONLY - 515)) | (1L << (REBUILD - 515)) | (1L << (RECOVER - 515)) | (1L << (REDO_BUFFER_SIZE - 515)) | (1L << (REDUNDANT - 515)) | (1L << (REFERENCE - 515)) | (1L << (RELAY - 515)) | (1L << (RELAYLOG - 515)) | (1L << (RELAY_LOG_FILE - 515)) | (1L << (RELAY_LOG_POS - 515)) | (1L << (RELAY_THREAD - 515)) | (1L << (RELOAD - 515)) | (1L << (REMOVE - 515)) | (1L << (REORGANIZE - 515)) | (1L << (REPAIR - 515)) | (1L << (REPEAT - 515)) | (1L << (REPEATABLE - 515)) | (1L << (REPLACE - 515)) | (1L << (REPLICATE_DO_DB - 515)) | (1L << (REPLICATE_DO_TABLE - 515)) | (1L << (REPLICATE_IGNORE_DB - 515)) | (1L << (REPLICATE_IGNORE_TABLE - 515)) | (1L << (REPLICATE_REWRITE_DB - 515)) | (1L << (REPLICATE_WILD_DO_TABLE - 515)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 515)) | (1L << (REPLICATION - 515)) | (1L << (REQUIRE_ROW_FORMAT - 515)) | (1L << (RESET - 515)) | (1L << (RESOURCE - 515)))) != 0) || ((((_la - 579)) & ~0x3f) == 0 && ((1L << (_la - 579)) & ((1L << (RESPECT - 579)) | (1L << (RESTART - 579)) | (1L << (RESTORE - 579)) | (1L << (RESUME - 579)) | (1L << (RETAIN - 579)) | (1L << (RETURNED_SQLSTATE - 579)) | (1L << (RETURNING - 579)) | (1L << (RETURNS - 579)) | (1L << (REUSE - 579)) | (1L << (REVERSE - 579)) | (1L << (RIGHT - 579)) | (1L << (ROLE - 579)) | (1L << (ROLLBACK - 579)) | (1L << (ROLLUP - 579)) | (1L << (ROTATE - 579)) | (1L << (ROUTINE - 579)) | (1L << (ROW - 579)) | (1L << (ROW_COUNT - 579)) | (1L << (ROW_FORMAT - 579)) | (1L << (ROW_NUMBER - 579)) | (1L << (RTREE - 579)) | (1L << (SAVEPOINT - 579)) | (1L << (SCHEDULE - 579)) | (1L << (SCHEMA - 579)) | (1L << (SCHEMA_NAME - 579)) | (1L << (SECOND - 579)) | (1L << (SECONDARY - 579)) | (1L << (SECONDARY_ENGINE - 579)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 579)) | (1L << (SECONDARY_LOAD - 579)) | (1L << (SECONDARY_UNLOAD - 579)) | (1L << (SECURITY - 579)) | (1L << (SERIAL - 579)) | (1L << (SERIALIZABLE - 579)) | (1L << (SERVER - 579)) | (1L << (SESSION - 579)) | (1L << (SHARE - 579)) | (1L << (SHUTDOWN - 579)) | (1L << (SIGNED - 579)) | (1L << (SIMPLE - 579)) | (1L << (SLAVE - 579)) | (1L << (SLOW - 579)) | (1L << (SNAPSHOT - 579)) | (1L << (SOCKET - 579)) | (1L << (SONAME - 579)) | (1L << (SOUNDS - 579)) | (1L << (SOURCE - 579)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (SQL_AFTER_GTIDS - 647)) | (1L << (SQL_AFTER_MTS_GAPS - 647)) | (1L << (SQL_BEFORE_GTIDS - 647)) | (1L << (SQL_BUFFER_RESULT - 647)) | (1L << (SQL_NO_CACHE - 647)) | (1L << (SQL_THREAD - 647)) | (1L << (SRID - 647)) | (1L << (STACKED - 647)) | (1L << (START - 647)) | (1L << (STARTS - 647)) | (1L << (STATS_AUTO_RECALC - 647)) | (1L << (STATS_PERSISTENT - 647)) | (1L << (STATS_SAMPLE_PAGES - 647)) | (1L << (STATUS - 647)) | (1L << (STOP - 647)) | (1L << (STORAGE - 647)) | (1L << (STREAM - 647)) | (1L << (STRING - 647)) | (1L << (SUBCLASS_ORIGIN - 647)) | (1L << (SUBJECT - 647)) | (1L << (SUBPARTITION - 647)) | (1L << (SUBPARTITIONS - 647)) | (1L << (SUPER - 647)) | (1L << (SUSPEND - 647)) | (1L << (SWAPS - 647)) | (1L << (SWITCHES - 647)) | (1L << (TABLES - 647)) | (1L << (TABLESPACE - 647)) | (1L << (TABLE_CHECKSUM - 647)) | (1L << (TABLE_NAME - 647)) | (1L << (TEMPORARY - 647)) | (1L << (TEMPTABLE - 647)) | (1L << (TEXT - 647)) | (1L << (THAN - 647)) | (1L << (THREAD_PRIORITY - 647)) | (1L << (TIES - 647)) | (1L << (TIME - 647)) | (1L << (TIMESTAMP - 647)) | (1L << (TIMESTAMP_ADD - 647)) | (1L << (TIMESTAMP_DIFF - 647)) | (1L << (TLS - 647)) | (1L << (TRANSACTION - 647)) | (1L << (TRIGGERS - 647)) | (1L << (TRUE - 647)) | (1L << (TRUNCATE - 647)) | (1L << (TYPE - 647)) | (1L << (TYPES - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (UNBOUNDED - 711)) | (1L << (UNCOMMITTED - 711)) | (1L << (UNDEFINED - 711)) | (1L << (UNDOFILE - 711)) | (1L << (UNDO_BUFFER_SIZE - 711)) | (1L << (UNICODE - 711)) | (1L << (UNINSTALL - 711)) | (1L << (UNKNOWN - 711)) | (1L << (UNTIL - 711)) | (1L << (UPGRADE - 711)) | (1L << (USER - 711)) | (1L << (USER_RESOURCES - 711)) | (1L << (USE_FRM - 711)) | (1L << (UTC_DATE - 711)) | (1L << (UTC_TIME - 711)) | (1L << (UTC_TIMESTAMP - 711)) | (1L << (VALIDATION - 711)) | (1L << (VALUE - 711)) | (1L << (VALUES - 711)) | (1L << (VARIABLES - 711)) | (1L << (VCPU - 711)) | (1L << (VIEW - 711)) | (1L << (VISIBLE - 711)) | (1L << (WAIT - 711)) | (1L << (WARNINGS - 711)) | (1L << (WEEK - 711)) | (1L << (WEIGHT_STRING - 711)) | (1L << (WITHOUT - 711)) | (1L << (WORK - 711)) | (1L << (WRAPPER - 711)) | (1L << (X509 - 711)) | (1L << (XA - 711)) | (1L << (XID - 711)) | (1L << (XML - 711)) | (1L << (YEAR - 711)) | (1L << (JSON_ARRAY - 711)) | (1L << (JSON_ARRAY_APPEND - 711)) | (1L << (JSON_ARRAY_INSERT - 711)) | (1L << (JSON_CONTAINS - 711)) | (1L << (JSON_CONTAINS_PATH - 711)) | (1L << (JSON_DEPTH - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (JSON_EXTRACT - 775)) | (1L << (JSON_INSERT - 775)) | (1L << (JSON_KEYS - 775)) | (1L << (JSON_LENGTH - 775)) | (1L << (JSON_MERGE - 775)) | (1L << (JSON_MERGE_PATCH - 775)) | (1L << (JSON_MERGE_PRESERVE - 775)) | (1L << (JSON_OBJECT - 775)) | (1L << (JSON_OVERLAPS - 775)) | (1L << (JSON_PRETTY - 775)) | (1L << (JSON_QUOTE - 775)) | (1L << (JSON_REMOVE - 775)) | (1L << (JSON_REPLACE - 775)) | (1L << (JSON_SCHEMA_VALID - 775)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 775)) | (1L << (JSON_SEARCH - 775)) | (1L << (JSON_SET - 775)) | (1L << (JSON_STORAGE_FREE - 775)) | (1L << (JSON_STORAGE_SIZE - 775)) | (1L << (JSON_TYPE - 775)) | (1L << (JSON_UNQUOTE - 775)) | (1L << (JSON_VALID - 775)) | (1L << (SINGLE_QUOTED_TEXT - 775)) | (1L << (DOUBLE_QUOTED_TEXT - 775)) | (1L << (NCHAR_TEXT - 775)) | (1L << (UNDERSCORE_CHARSET - 775)) | (1L << (NUMBER_ - 775)) | (1L << (HEX_DIGIT_ - 775)) | (1L << (BIT_NUM_ - 775)) | (1L << (IDENTIFIER_ - 775)))) != 0)) {
						{
						setState(5144);
						expr(0);
						}
					}

					}
					break;
				case 2:
					{
					setState(5147);
					expr(0);
					setState(5152);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA_) {
						{
						{
						setState(5148);
						match(COMMA_);
						setState(5149);
						expr(0);
						}
						}
						setState(5154);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
					break;
				}
				setState(5157);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class JsonFunctionNameContext extends ParserRuleContext {
		public TerminalNode JSON_ARRAY() { return getToken(MySQLStatementParser.JSON_ARRAY, 0); }
		public TerminalNode JSON_ARRAY_APPEND() { return getToken(MySQLStatementParser.JSON_ARRAY_APPEND, 0); }
		public TerminalNode JSON_ARRAY_INSERT() { return getToken(MySQLStatementParser.JSON_ARRAY_INSERT, 0); }
		public TerminalNode JSON_CONTAINS() { return getToken(MySQLStatementParser.JSON_CONTAINS, 0); }
		public TerminalNode JSON_CONTAINS_PATH() { return getToken(MySQLStatementParser.JSON_CONTAINS_PATH, 0); }
		public TerminalNode JSON_DEPTH() { return getToken(MySQLStatementParser.JSON_DEPTH, 0); }
		public TerminalNode JSON_EXTRACT() { return getToken(MySQLStatementParser.JSON_EXTRACT, 0); }
		public TerminalNode JSON_INSERT() { return getToken(MySQLStatementParser.JSON_INSERT, 0); }
		public TerminalNode JSON_KEYS() { return getToken(MySQLStatementParser.JSON_KEYS, 0); }
		public TerminalNode JSON_LENGTH() { return getToken(MySQLStatementParser.JSON_LENGTH, 0); }
		public TerminalNode JSON_MERGE() { return getToken(MySQLStatementParser.JSON_MERGE, 0); }
		public TerminalNode JSON_MERGE_PATCH() { return getToken(MySQLStatementParser.JSON_MERGE_PATCH, 0); }
		public TerminalNode JSON_MERGE_PRESERVE() { return getToken(MySQLStatementParser.JSON_MERGE_PRESERVE, 0); }
		public TerminalNode JSON_OBJECT() { return getToken(MySQLStatementParser.JSON_OBJECT, 0); }
		public TerminalNode JSON_OVERLAPS() { return getToken(MySQLStatementParser.JSON_OVERLAPS, 0); }
		public TerminalNode JSON_PRETTY() { return getToken(MySQLStatementParser.JSON_PRETTY, 0); }
		public TerminalNode JSON_QUOTE() { return getToken(MySQLStatementParser.JSON_QUOTE, 0); }
		public TerminalNode JSON_REMOVE() { return getToken(MySQLStatementParser.JSON_REMOVE, 0); }
		public TerminalNode JSON_REPLACE() { return getToken(MySQLStatementParser.JSON_REPLACE, 0); }
		public TerminalNode JSON_SCHEMA_VALID() { return getToken(MySQLStatementParser.JSON_SCHEMA_VALID, 0); }
		public TerminalNode JSON_SCHEMA_VALIDATION_REPORT() { return getToken(MySQLStatementParser.JSON_SCHEMA_VALIDATION_REPORT, 0); }
		public TerminalNode JSON_SEARCH() { return getToken(MySQLStatementParser.JSON_SEARCH, 0); }
		public TerminalNode JSON_SET() { return getToken(MySQLStatementParser.JSON_SET, 0); }
		public TerminalNode JSON_STORAGE_FREE() { return getToken(MySQLStatementParser.JSON_STORAGE_FREE, 0); }
		public TerminalNode JSON_STORAGE_SIZE() { return getToken(MySQLStatementParser.JSON_STORAGE_SIZE, 0); }
		public TerminalNode JSON_TABLE() { return getToken(MySQLStatementParser.JSON_TABLE, 0); }
		public TerminalNode JSON_TYPE() { return getToken(MySQLStatementParser.JSON_TYPE, 0); }
		public TerminalNode JSON_UNQUOTE() { return getToken(MySQLStatementParser.JSON_UNQUOTE, 0); }
		public TerminalNode JSON_VALID() { return getToken(MySQLStatementParser.JSON_VALID, 0); }
		public TerminalNode JSON_VALUE() { return getToken(MySQLStatementParser.JSON_VALUE, 0); }
		public TerminalNode MEMBER() { return getToken(MySQLStatementParser.MEMBER, 0); }
		public TerminalNode OF() { return getToken(MySQLStatementParser.OF, 0); }
		public JsonFunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_jsonFunctionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitJsonFunctionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final JsonFunctionNameContext jsonFunctionName() throws RecognitionException {
		JsonFunctionNameContext _localctx = new JsonFunctionNameContext(_ctx, getState());
		enterRule(_localctx, 658, RULE_jsonFunctionName);
		try {
			setState(5193);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case JSON_ARRAY:
				enterOuterAlt(_localctx, 1);
				{
				setState(5161);
				match(JSON_ARRAY);
				}
				break;
			case JSON_ARRAY_APPEND:
				enterOuterAlt(_localctx, 2);
				{
				setState(5162);
				match(JSON_ARRAY_APPEND);
				}
				break;
			case JSON_ARRAY_INSERT:
				enterOuterAlt(_localctx, 3);
				{
				setState(5163);
				match(JSON_ARRAY_INSERT);
				}
				break;
			case JSON_CONTAINS:
				enterOuterAlt(_localctx, 4);
				{
				setState(5164);
				match(JSON_CONTAINS);
				}
				break;
			case JSON_CONTAINS_PATH:
				enterOuterAlt(_localctx, 5);
				{
				setState(5165);
				match(JSON_CONTAINS_PATH);
				}
				break;
			case JSON_DEPTH:
				enterOuterAlt(_localctx, 6);
				{
				setState(5166);
				match(JSON_DEPTH);
				}
				break;
			case JSON_EXTRACT:
				enterOuterAlt(_localctx, 7);
				{
				setState(5167);
				match(JSON_EXTRACT);
				}
				break;
			case JSON_INSERT:
				enterOuterAlt(_localctx, 8);
				{
				setState(5168);
				match(JSON_INSERT);
				}
				break;
			case JSON_KEYS:
				enterOuterAlt(_localctx, 9);
				{
				setState(5169);
				match(JSON_KEYS);
				}
				break;
			case JSON_LENGTH:
				enterOuterAlt(_localctx, 10);
				{
				setState(5170);
				match(JSON_LENGTH);
				}
				break;
			case JSON_MERGE:
				enterOuterAlt(_localctx, 11);
				{
				setState(5171);
				match(JSON_MERGE);
				}
				break;
			case JSON_MERGE_PATCH:
				enterOuterAlt(_localctx, 12);
				{
				setState(5172);
				match(JSON_MERGE_PATCH);
				}
				break;
			case JSON_MERGE_PRESERVE:
				enterOuterAlt(_localctx, 13);
				{
				setState(5173);
				match(JSON_MERGE_PRESERVE);
				}
				break;
			case JSON_OBJECT:
				enterOuterAlt(_localctx, 14);
				{
				setState(5174);
				match(JSON_OBJECT);
				}
				break;
			case JSON_OVERLAPS:
				enterOuterAlt(_localctx, 15);
				{
				setState(5175);
				match(JSON_OVERLAPS);
				}
				break;
			case JSON_PRETTY:
				enterOuterAlt(_localctx, 16);
				{
				setState(5176);
				match(JSON_PRETTY);
				}
				break;
			case JSON_QUOTE:
				enterOuterAlt(_localctx, 17);
				{
				setState(5177);
				match(JSON_QUOTE);
				}
				break;
			case JSON_REMOVE:
				enterOuterAlt(_localctx, 18);
				{
				setState(5178);
				match(JSON_REMOVE);
				}
				break;
			case JSON_REPLACE:
				enterOuterAlt(_localctx, 19);
				{
				setState(5179);
				match(JSON_REPLACE);
				}
				break;
			case JSON_SCHEMA_VALID:
				enterOuterAlt(_localctx, 20);
				{
				setState(5180);
				match(JSON_SCHEMA_VALID);
				}
				break;
			case JSON_SCHEMA_VALIDATION_REPORT:
				enterOuterAlt(_localctx, 21);
				{
				setState(5181);
				match(JSON_SCHEMA_VALIDATION_REPORT);
				}
				break;
			case JSON_SEARCH:
				enterOuterAlt(_localctx, 22);
				{
				setState(5182);
				match(JSON_SEARCH);
				}
				break;
			case JSON_SET:
				enterOuterAlt(_localctx, 23);
				{
				setState(5183);
				match(JSON_SET);
				}
				break;
			case JSON_STORAGE_FREE:
				enterOuterAlt(_localctx, 24);
				{
				setState(5184);
				match(JSON_STORAGE_FREE);
				}
				break;
			case JSON_STORAGE_SIZE:
				enterOuterAlt(_localctx, 25);
				{
				setState(5185);
				match(JSON_STORAGE_SIZE);
				}
				break;
			case JSON_TABLE:
				enterOuterAlt(_localctx, 26);
				{
				setState(5186);
				match(JSON_TABLE);
				}
				break;
			case JSON_TYPE:
				enterOuterAlt(_localctx, 27);
				{
				setState(5187);
				match(JSON_TYPE);
				}
				break;
			case JSON_UNQUOTE:
				enterOuterAlt(_localctx, 28);
				{
				setState(5188);
				match(JSON_UNQUOTE);
				}
				break;
			case JSON_VALID:
				enterOuterAlt(_localctx, 29);
				{
				setState(5189);
				match(JSON_VALID);
				}
				break;
			case JSON_VALUE:
				enterOuterAlt(_localctx, 30);
				{
				setState(5190);
				match(JSON_VALUE);
				}
				break;
			case MEMBER:
				enterOuterAlt(_localctx, 31);
				{
				setState(5191);
				match(MEMBER);
				setState(5192);
				match(OF);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AggregationFunctionNameContext extends ParserRuleContext {
		public TerminalNode MAX() { return getToken(MySQLStatementParser.MAX, 0); }
		public TerminalNode MIN() { return getToken(MySQLStatementParser.MIN, 0); }
		public TerminalNode SUM() { return getToken(MySQLStatementParser.SUM, 0); }
		public TerminalNode COUNT() { return getToken(MySQLStatementParser.COUNT, 0); }
		public TerminalNode AVG() { return getToken(MySQLStatementParser.AVG, 0); }
		public TerminalNode BIT_XOR() { return getToken(MySQLStatementParser.BIT_XOR, 0); }
		public AggregationFunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aggregationFunctionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAggregationFunctionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AggregationFunctionNameContext aggregationFunctionName() throws RecognitionException {
		AggregationFunctionNameContext _localctx = new AggregationFunctionNameContext(_ctx, getState());
		enterRule(_localctx, 660, RULE_aggregationFunctionName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5195);
			_la = _input.LA(1);
			if ( !(((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DistinctContext extends ParserRuleContext {
		public TerminalNode DISTINCT() { return getToken(MySQLStatementParser.DISTINCT, 0); }
		public DistinctContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_distinct; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDistinct(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DistinctContext distinct() throws RecognitionException {
		DistinctContext _localctx = new DistinctContext(_ctx, getState());
		enterRule(_localctx, 662, RULE_distinct);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5197);
			match(DISTINCT);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OverClauseContext extends ParserRuleContext {
		public TerminalNode OVER() { return getToken(MySQLStatementParser.OVER, 0); }
		public WindowSpecificationContext windowSpecification() {
			return getRuleContext(WindowSpecificationContext.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public OverClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_overClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOverClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OverClauseContext overClause() throws RecognitionException {
		OverClauseContext _localctx = new OverClauseContext(_ctx, getState());
		enterRule(_localctx, 664, RULE_overClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5199);
			match(OVER);
			setState(5202);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LP_:
				{
				setState(5200);
				windowSpecification();
				}
				break;
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(5201);
				identifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowSpecificationContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public FrameClauseContext frameClause() {
			return getRuleContext(FrameClauseContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public WindowSpecificationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowSpecification; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWindowSpecification(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowSpecificationContext windowSpecification() throws RecognitionException {
		WindowSpecificationContext _localctx = new WindowSpecificationContext(_ctx, getState());
		enterRule(_localctx, 666, RULE_windowSpecification);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5204);
			match(LP_);
			setState(5206);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(5205);
				identifier();
				}
			}

			setState(5218);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(5208);
				match(PARTITION);
				setState(5209);
				match(BY);
				setState(5210);
				expr(0);
				setState(5215);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5211);
					match(COMMA_);
					setState(5212);
					expr(0);
					}
					}
					setState(5217);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(5221);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(5220);
				orderByClause();
				}
			}

			setState(5224);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RANGE || _la==ROWS) {
				{
				setState(5223);
				frameClause();
				}
			}

			setState(5226);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameClauseContext extends ParserRuleContext {
		public TerminalNode ROWS() { return getToken(MySQLStatementParser.ROWS, 0); }
		public TerminalNode RANGE() { return getToken(MySQLStatementParser.RANGE, 0); }
		public FrameStartContext frameStart() {
			return getRuleContext(FrameStartContext.class,0);
		}
		public FrameBetweenContext frameBetween() {
			return getRuleContext(FrameBetweenContext.class,0);
		}
		public FrameClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFrameClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameClauseContext frameClause() throws RecognitionException {
		FrameClauseContext _localctx = new FrameClauseContext(_ctx, getState());
		enterRule(_localctx, 668, RULE_frameClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5228);
			_la = _input.LA(1);
			if ( !(_la==RANGE || _la==ROWS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5231);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT_:
			case TILDE_:
			case PLUS_:
			case MINUS_:
			case LP_:
			case LBE_:
			case QUESTION_:
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINARY:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CASE:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHAR:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CONVERT:
			case CPU:
			case CREATE:
			case CUME_DIST:
			case CURRENT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case CURRENT_USER:
			case CURSOR_NAME:
			case DATA:
			case DATABASE:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DENSE_RANK:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXISTS:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FALSE:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IF:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INTERVAL:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_TABLE:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LAG:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEAVES:
			case LEFT:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MATCH:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MOD:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOT:
			case NOWAIT:
			case NO_WAIT:
			case NTH_VALUE:
			case NTILE:
			case NULL:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERCENT_RANK:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case RANK:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEAT:
			case REPEATABLE:
			case REPLACE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case RIGHT:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW:
			case ROW_COUNT:
			case ROW_FORMAT:
			case ROW_NUMBER:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUE:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VALUES:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case JSON_ARRAY:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case NCHAR_TEXT:
			case UNDERSCORE_CHARSET:
			case NUMBER_:
			case HEX_DIGIT_:
			case BIT_NUM_:
			case IDENTIFIER_:
				{
				setState(5229);
				frameStart();
				}
				break;
			case BETWEEN:
				{
				setState(5230);
				frameBetween();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameStartContext extends ParserRuleContext {
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public TerminalNode ROW() { return getToken(MySQLStatementParser.ROW, 0); }
		public TerminalNode UNBOUNDED() { return getToken(MySQLStatementParser.UNBOUNDED, 0); }
		public TerminalNode PRECEDING() { return getToken(MySQLStatementParser.PRECEDING, 0); }
		public TerminalNode FOLLOWING() { return getToken(MySQLStatementParser.FOLLOWING, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public FrameStartContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameStart; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFrameStart(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameStartContext frameStart() throws RecognitionException {
		FrameStartContext _localctx = new FrameStartContext(_ctx, getState());
		enterRule(_localctx, 670, RULE_frameStart);
		try {
			setState(5245);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,647,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5233);
				match(CURRENT);
				setState(5234);
				match(ROW);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5235);
				match(UNBOUNDED);
				setState(5236);
				match(PRECEDING);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5237);
				match(UNBOUNDED);
				setState(5238);
				match(FOLLOWING);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5239);
				expr(0);
				setState(5240);
				match(PRECEDING);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5242);
				expr(0);
				setState(5243);
				match(FOLLOWING);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameEndContext extends ParserRuleContext {
		public FrameStartContext frameStart() {
			return getRuleContext(FrameStartContext.class,0);
		}
		public FrameEndContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameEnd; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFrameEnd(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameEndContext frameEnd() throws RecognitionException {
		FrameEndContext _localctx = new FrameEndContext(_ctx, getState());
		enterRule(_localctx, 672, RULE_frameEnd);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5247);
			frameStart();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FrameBetweenContext extends ParserRuleContext {
		public TerminalNode BETWEEN() { return getToken(MySQLStatementParser.BETWEEN, 0); }
		public FrameStartContext frameStart() {
			return getRuleContext(FrameStartContext.class,0);
		}
		public TerminalNode AND() { return getToken(MySQLStatementParser.AND, 0); }
		public FrameEndContext frameEnd() {
			return getRuleContext(FrameEndContext.class,0);
		}
		public FrameBetweenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_frameBetween; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFrameBetween(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FrameBetweenContext frameBetween() throws RecognitionException {
		FrameBetweenContext _localctx = new FrameBetweenContext(_ctx, getState());
		enterRule(_localctx, 674, RULE_frameBetween);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5249);
			match(BETWEEN);
			setState(5250);
			frameStart();
			setState(5251);
			match(AND);
			setState(5252);
			frameEnd();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SpecialFunctionContext extends ParserRuleContext {
		public GroupConcatFunctionContext groupConcatFunction() {
			return getRuleContext(GroupConcatFunctionContext.class,0);
		}
		public WindowFunctionContext windowFunction() {
			return getRuleContext(WindowFunctionContext.class,0);
		}
		public CastFunctionContext castFunction() {
			return getRuleContext(CastFunctionContext.class,0);
		}
		public ConvertFunctionContext convertFunction() {
			return getRuleContext(ConvertFunctionContext.class,0);
		}
		public PositionFunctionContext positionFunction() {
			return getRuleContext(PositionFunctionContext.class,0);
		}
		public SubstringFunctionContext substringFunction() {
			return getRuleContext(SubstringFunctionContext.class,0);
		}
		public ExtractFunctionContext extractFunction() {
			return getRuleContext(ExtractFunctionContext.class,0);
		}
		public CharFunctionContext charFunction() {
			return getRuleContext(CharFunctionContext.class,0);
		}
		public TrimFunctionContext trimFunction() {
			return getRuleContext(TrimFunctionContext.class,0);
		}
		public WeightStringFunctionContext weightStringFunction() {
			return getRuleContext(WeightStringFunctionContext.class,0);
		}
		public ValuesFunctionContext valuesFunction() {
			return getRuleContext(ValuesFunctionContext.class,0);
		}
		public CurrentUserFunctionContext currentUserFunction() {
			return getRuleContext(CurrentUserFunctionContext.class,0);
		}
		public SpecialFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_specialFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSpecialFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SpecialFunctionContext specialFunction() throws RecognitionException {
		SpecialFunctionContext _localctx = new SpecialFunctionContext(_ctx, getState());
		enterRule(_localctx, 676, RULE_specialFunction);
		try {
			setState(5266);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case GROUP_CONCAT:
				enterOuterAlt(_localctx, 1);
				{
				setState(5254);
				groupConcatFunction();
				}
				break;
			case CUME_DIST:
			case DENSE_RANK:
			case FIRST_VALUE:
			case LAG:
			case LAST_VALUE:
			case LEAD:
			case NTH_VALUE:
			case NTILE:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
				enterOuterAlt(_localctx, 2);
				{
				setState(5255);
				windowFunction();
				}
				break;
			case CAST:
				enterOuterAlt(_localctx, 3);
				{
				setState(5256);
				castFunction();
				}
				break;
			case CONVERT:
				enterOuterAlt(_localctx, 4);
				{
				setState(5257);
				convertFunction();
				}
				break;
			case POSITION:
				enterOuterAlt(_localctx, 5);
				{
				setState(5258);
				positionFunction();
				}
				break;
			case SUBSTRING:
			case SUBSTR:
				enterOuterAlt(_localctx, 6);
				{
				setState(5259);
				substringFunction();
				}
				break;
			case EXTRACT:
				enterOuterAlt(_localctx, 7);
				{
				setState(5260);
				extractFunction();
				}
				break;
			case CHAR:
				enterOuterAlt(_localctx, 8);
				{
				setState(5261);
				charFunction();
				}
				break;
			case TRIM:
				enterOuterAlt(_localctx, 9);
				{
				setState(5262);
				trimFunction();
				}
				break;
			case WEIGHT_STRING:
				enterOuterAlt(_localctx, 10);
				{
				setState(5263);
				weightStringFunction();
				}
				break;
			case VALUES:
				enterOuterAlt(_localctx, 11);
				{
				setState(5264);
				valuesFunction();
				}
				break;
			case CURRENT_USER:
				enterOuterAlt(_localctx, 12);
				{
				setState(5265);
				currentUserFunction();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CurrentUserFunctionContext extends ParserRuleContext {
		public TerminalNode CURRENT_USER() { return getToken(MySQLStatementParser.CURRENT_USER, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public CurrentUserFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_currentUserFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCurrentUserFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CurrentUserFunctionContext currentUserFunction() throws RecognitionException {
		CurrentUserFunctionContext _localctx = new CurrentUserFunctionContext(_ctx, getState());
		enterRule(_localctx, 678, RULE_currentUserFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5268);
			match(CURRENT_USER);
			setState(5271);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,649,_ctx) ) {
			case 1:
				{
				setState(5269);
				match(LP_);
				setState(5270);
				match(RP_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupConcatFunctionContext extends ParserRuleContext {
		public TerminalNode GROUP_CONCAT() { return getToken(MySQLStatementParser.GROUP_CONCAT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public DistinctContext distinct() {
			return getRuleContext(DistinctContext.class,0);
		}
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public OrderByClauseContext orderByClause() {
			return getRuleContext(OrderByClauseContext.class,0);
		}
		public TerminalNode SEPARATOR() { return getToken(MySQLStatementParser.SEPARATOR, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public GroupConcatFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupConcatFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGroupConcatFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupConcatFunctionContext groupConcatFunction() throws RecognitionException {
		GroupConcatFunctionContext _localctx = new GroupConcatFunctionContext(_ctx, getState());
		enterRule(_localctx, 680, RULE_groupConcatFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5273);
			match(GROUP_CONCAT);
			setState(5274);
			match(LP_);
			setState(5276);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISTINCT) {
				{
				setState(5275);
				distinct();
				}
			}

			setState(5287);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT_:
			case TILDE_:
			case PLUS_:
			case MINUS_:
			case LP_:
			case LBE_:
			case QUESTION_:
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINARY:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CASE:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHAR:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CONVERT:
			case CPU:
			case CREATE:
			case CUME_DIST:
			case CURRENT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case CURRENT_USER:
			case CURSOR_NAME:
			case DATA:
			case DATABASE:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DENSE_RANK:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXISTS:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FALSE:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IF:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INTERVAL:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_TABLE:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LAG:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEAVES:
			case LEFT:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MATCH:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MOD:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOT:
			case NOWAIT:
			case NO_WAIT:
			case NTH_VALUE:
			case NTILE:
			case NULL:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERCENT_RANK:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case RANK:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEAT:
			case REPEATABLE:
			case REPLACE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case RIGHT:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW:
			case ROW_COUNT:
			case ROW_FORMAT:
			case ROW_NUMBER:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUE:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VALUES:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case JSON_ARRAY:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case NCHAR_TEXT:
			case UNDERSCORE_CHARSET:
			case NUMBER_:
			case HEX_DIGIT_:
			case BIT_NUM_:
			case IDENTIFIER_:
				{
				setState(5278);
				expr(0);
				setState(5283);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5279);
					match(COMMA_);
					setState(5280);
					expr(0);
					}
					}
					setState(5285);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case ASTERISK_:
				{
				setState(5286);
				match(ASTERISK_);
				}
				break;
			case RP_:
			case ORDER:
			case SEPARATOR:
				break;
			default:
				break;
			}
			setState(5290);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ORDER) {
				{
				setState(5289);
				orderByClause();
				}
			}

			setState(5294);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==SEPARATOR) {
				{
				setState(5292);
				match(SEPARATOR);
				setState(5293);
				expr(0);
				}
			}

			setState(5296);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowFunctionContext extends ParserRuleContext {
		public Token funcName;
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public WindowingClauseContext windowingClause() {
			return getRuleContext(WindowingClauseContext.class,0);
		}
		public TerminalNode ROW_NUMBER() { return getToken(MySQLStatementParser.ROW_NUMBER, 0); }
		public TerminalNode RANK() { return getToken(MySQLStatementParser.RANK, 0); }
		public TerminalNode DENSE_RANK() { return getToken(MySQLStatementParser.DENSE_RANK, 0); }
		public TerminalNode CUME_DIST() { return getToken(MySQLStatementParser.CUME_DIST, 0); }
		public TerminalNode PERCENT_RANK() { return getToken(MySQLStatementParser.PERCENT_RANK, 0); }
		public TerminalNode NTILE() { return getToken(MySQLStatementParser.NTILE, 0); }
		public SimpleExprContext simpleExpr() {
			return getRuleContext(SimpleExprContext.class,0);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode LEAD() { return getToken(MySQLStatementParser.LEAD, 0); }
		public TerminalNode LAG() { return getToken(MySQLStatementParser.LAG, 0); }
		public LeadLagInfoContext leadLagInfo() {
			return getRuleContext(LeadLagInfoContext.class,0);
		}
		public NullTreatmentContext nullTreatment() {
			return getRuleContext(NullTreatmentContext.class,0);
		}
		public TerminalNode FIRST_VALUE() { return getToken(MySQLStatementParser.FIRST_VALUE, 0); }
		public TerminalNode LAST_VALUE() { return getToken(MySQLStatementParser.LAST_VALUE, 0); }
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public TerminalNode NTH_VALUE() { return getToken(MySQLStatementParser.NTH_VALUE, 0); }
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode FIRST() { return getToken(MySQLStatementParser.FIRST, 0); }
		public TerminalNode LAST() { return getToken(MySQLStatementParser.LAST, 0); }
		public WindowFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWindowFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowFunctionContext windowFunction() throws RecognitionException {
		WindowFunctionContext _localctx = new WindowFunctionContext(_ctx, getState());
		enterRule(_localctx, 682, RULE_windowFunction);
		int _la;
		try {
			setState(5342);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CUME_DIST:
			case DENSE_RANK:
			case PERCENT_RANK:
			case RANK:
			case ROW_NUMBER:
				enterOuterAlt(_localctx, 1);
				{
				setState(5298);
				((WindowFunctionContext)_localctx).funcName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==CUME_DIST || _la==DENSE_RANK || _la==PERCENT_RANK || _la==RANK || _la==ROW_NUMBER) ) {
					((WindowFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5299);
				match(LP_);
				setState(5300);
				match(RP_);
				setState(5301);
				windowingClause();
				}
				break;
			case NTILE:
				enterOuterAlt(_localctx, 2);
				{
				setState(5302);
				((WindowFunctionContext)_localctx).funcName = match(NTILE);
				{
				setState(5303);
				simpleExpr(0);
				}
				setState(5304);
				windowingClause();
				}
				break;
			case LAG:
			case LEAD:
				enterOuterAlt(_localctx, 3);
				{
				setState(5306);
				((WindowFunctionContext)_localctx).funcName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LAG || _la==LEAD) ) {
					((WindowFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5307);
				match(LP_);
				setState(5308);
				expr(0);
				setState(5310);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(5309);
					leadLagInfo();
					}
				}

				setState(5312);
				match(RP_);
				setState(5314);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IGNORE || _la==RESPECT) {
					{
					setState(5313);
					nullTreatment();
					}
				}

				setState(5316);
				windowingClause();
				}
				break;
			case FIRST_VALUE:
			case LAST_VALUE:
				enterOuterAlt(_localctx, 4);
				{
				setState(5318);
				((WindowFunctionContext)_localctx).funcName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==FIRST_VALUE || _la==LAST_VALUE) ) {
					((WindowFunctionContext)_localctx).funcName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5319);
				match(LP_);
				setState(5320);
				expr(0);
				setState(5321);
				match(RP_);
				setState(5323);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IGNORE || _la==RESPECT) {
					{
					setState(5322);
					nullTreatment();
					}
				}

				setState(5325);
				windowingClause();
				}
				break;
			case NTH_VALUE:
				enterOuterAlt(_localctx, 5);
				{
				setState(5327);
				((WindowFunctionContext)_localctx).funcName = match(NTH_VALUE);
				setState(5328);
				match(LP_);
				setState(5329);
				expr(0);
				setState(5330);
				match(COMMA_);
				setState(5331);
				simpleExpr(0);
				setState(5332);
				match(RP_);
				setState(5335);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FROM) {
					{
					setState(5333);
					match(FROM);
					setState(5334);
					_la = _input.LA(1);
					if ( !(_la==FIRST || _la==LAST) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				setState(5338);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IGNORE || _la==RESPECT) {
					{
					setState(5337);
					nullTreatment();
					}
				}

				setState(5340);
				windowingClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WindowingClauseContext extends ParserRuleContext {
		public IdentifierContext windowName;
		public TerminalNode OVER() { return getToken(MySQLStatementParser.OVER, 0); }
		public WindowSpecificationContext windowSpecification() {
			return getRuleContext(WindowSpecificationContext.class,0);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public WindowingClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_windowingClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWindowingClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WindowingClauseContext windowingClause() throws RecognitionException {
		WindowingClauseContext _localctx = new WindowingClauseContext(_ctx, getState());
		enterRule(_localctx, 684, RULE_windowingClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5344);
			match(OVER);
			setState(5347);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(5345);
				((WindowingClauseContext)_localctx).windowName = identifier();
				}
				break;
			case LP_:
				{
				setState(5346);
				windowSpecification();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LeadLagInfoContext extends ParserRuleContext {
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode QUESTION_() { return getToken(MySQLStatementParser.QUESTION_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public LeadLagInfoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_leadLagInfo; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLeadLagInfo(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LeadLagInfoContext leadLagInfo() throws RecognitionException {
		LeadLagInfoContext _localctx = new LeadLagInfoContext(_ctx, getState());
		enterRule(_localctx, 686, RULE_leadLagInfo);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5349);
			match(COMMA_);
			setState(5350);
			_la = _input.LA(1);
			if ( !(_la==QUESTION_ || _la==NUMBER_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5353);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA_) {
				{
				setState(5351);
				match(COMMA_);
				setState(5352);
				expr(0);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NullTreatmentContext extends ParserRuleContext {
		public TerminalNode NULLS() { return getToken(MySQLStatementParser.NULLS, 0); }
		public TerminalNode RESPECT() { return getToken(MySQLStatementParser.RESPECT, 0); }
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public NullTreatmentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nullTreatment; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNullTreatment(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NullTreatmentContext nullTreatment() throws RecognitionException {
		NullTreatmentContext _localctx = new NullTreatmentContext(_ctx, getState());
		enterRule(_localctx, 688, RULE_nullTreatment);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5355);
			_la = _input.LA(1);
			if ( !(_la==IGNORE || _la==RESPECT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5356);
			match(NULLS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTypeContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode UPGRADE() { return getToken(MySQLStatementParser.UPGRADE, 0); }
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode FAST() { return getToken(MySQLStatementParser.FAST, 0); }
		public TerminalNode MEDIUM() { return getToken(MySQLStatementParser.MEDIUM, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode CHANGED() { return getToken(MySQLStatementParser.CHANGED, 0); }
		public CheckTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCheckType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckTypeContext checkType() throws RecognitionException {
		CheckTypeContext _localctx = new CheckTypeContext(_ctx, getState());
		enterRule(_localctx, 690, RULE_checkType);
		try {
			setState(5365);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(5358);
				match(FOR);
				setState(5359);
				match(UPGRADE);
				}
				break;
			case QUICK:
				enterOuterAlt(_localctx, 2);
				{
				setState(5360);
				match(QUICK);
				}
				break;
			case FAST:
				enterOuterAlt(_localctx, 3);
				{
				setState(5361);
				match(FAST);
				}
				break;
			case MEDIUM:
				enterOuterAlt(_localctx, 4);
				{
				setState(5362);
				match(MEDIUM);
				}
				break;
			case EXTENDED:
				enterOuterAlt(_localctx, 5);
				{
				setState(5363);
				match(EXTENDED);
				}
				break;
			case CHANGED:
				enterOuterAlt(_localctx, 6);
				{
				setState(5364);
				match(CHANGED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepairTypeContext extends ParserRuleContext {
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode USE_FRM() { return getToken(MySQLStatementParser.USE_FRM, 0); }
		public RepairTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repairType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRepairType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RepairTypeContext repairType() throws RecognitionException {
		RepairTypeContext _localctx = new RepairTypeContext(_ctx, getState());
		enterRule(_localctx, 692, RULE_repairType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5367);
			_la = _input.LA(1);
			if ( !(_la==EXTENDED || _la==QUICK || _la==USE_FRM) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CastFunctionContext extends ParserRuleContext {
		public TerminalNode CAST() { return getToken(MySQLStatementParser.CAST, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public CastFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_castFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCastFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CastFunctionContext castFunction() throws RecognitionException {
		CastFunctionContext _localctx = new CastFunctionContext(_ctx, getState());
		enterRule(_localctx, 694, RULE_castFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5369);
			match(CAST);
			setState(5370);
			match(LP_);
			setState(5371);
			expr(0);
			setState(5372);
			match(AS);
			setState(5373);
			dataType();
			setState(5374);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConvertFunctionContext extends ParserRuleContext {
		public TerminalNode CONVERT() { return getToken(MySQLStatementParser.CONVERT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public CastTypeContext castType() {
			return getRuleContext(CastTypeContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public ConvertFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_convertFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConvertFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConvertFunctionContext convertFunction() throws RecognitionException {
		ConvertFunctionContext _localctx = new ConvertFunctionContext(_ctx, getState());
		enterRule(_localctx, 696, RULE_convertFunction);
		try {
			setState(5390);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,664,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5376);
				match(CONVERT);
				setState(5377);
				match(LP_);
				setState(5378);
				expr(0);
				setState(5379);
				match(COMMA_);
				setState(5380);
				castType();
				setState(5381);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5383);
				match(CONVERT);
				setState(5384);
				match(LP_);
				setState(5385);
				expr(0);
				setState(5386);
				match(USING);
				setState(5387);
				charsetName();
				setState(5388);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CastTypeContext extends ParserRuleContext {
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public FieldLengthContext fieldLength() {
			return getRuleContext(FieldLengthContext.class,0);
		}
		public TerminalNode CHAR() { return getToken(MySQLStatementParser.CHAR, 0); }
		public CharsetWithOptBinaryContext charsetWithOptBinary() {
			return getRuleContext(CharsetWithOptBinaryContext.class,0);
		}
		public NcharContext nchar() {
			return getRuleContext(NcharContext.class,0);
		}
		public TerminalNode SIGNED() { return getToken(MySQLStatementParser.SIGNED, 0); }
		public TerminalNode INT() { return getToken(MySQLStatementParser.INT, 0); }
		public TerminalNode UNSIGNED() { return getToken(MySQLStatementParser.UNSIGNED, 0); }
		public TerminalNode DATE() { return getToken(MySQLStatementParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySQLStatementParser.TIME, 0); }
		public TypeDatetimePrecisionContext typeDatetimePrecision() {
			return getRuleContext(TypeDatetimePrecisionContext.class,0);
		}
		public TerminalNode DATETIME() { return getToken(MySQLStatementParser.DATETIME, 0); }
		public TerminalNode DECIMAL() { return getToken(MySQLStatementParser.DECIMAL, 0); }
		public PrecisionContext precision() {
			return getRuleContext(PrecisionContext.class,0);
		}
		public TerminalNode JSON() { return getToken(MySQLStatementParser.JSON, 0); }
		public TerminalNode REAL() { return getToken(MySQLStatementParser.REAL, 0); }
		public TerminalNode DOUBLE() { return getToken(MySQLStatementParser.DOUBLE, 0); }
		public TerminalNode PRECISION() { return getToken(MySQLStatementParser.PRECISION, 0); }
		public TerminalNode FLOAT() { return getToken(MySQLStatementParser.FLOAT, 0); }
		public CastTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_castType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCastType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CastTypeContext castType() throws RecognitionException {
		CastTypeContext _localctx = new CastTypeContext(_ctx, getState());
		enterRule(_localctx, 698, RULE_castType);
		int _la;
		try {
			setState(5437);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BINARY:
				enterOuterAlt(_localctx, 1);
				{
				setState(5392);
				match(BINARY);
				setState(5394);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5393);
					fieldLength();
					}
				}

				}
				break;
			case CHAR:
				enterOuterAlt(_localctx, 2);
				{
				setState(5396);
				match(CHAR);
				setState(5398);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5397);
					fieldLength();
					}
				}

				setState(5401);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 93)) & ~0x3f) == 0 && ((1L << (_la - 93)) & ((1L << (ASCII - 93)) | (1L << (BINARY - 93)) | (1L << (BYTE - 93)) | (1L << (CHAR - 93)) | (1L << (CHARACTER - 93)) | (1L << (CHARSET - 93)))) != 0) || _la==UNICODE) {
					{
					setState(5400);
					charsetWithOptBinary();
					}
				}

				}
				break;
			case NATIONAL:
			case NCHAR:
				enterOuterAlt(_localctx, 3);
				{
				setState(5403);
				nchar();
				setState(5405);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5404);
					fieldLength();
					}
				}

				}
				break;
			case SIGNED:
				enterOuterAlt(_localctx, 4);
				{
				setState(5407);
				match(SIGNED);
				setState(5409);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INT) {
					{
					setState(5408);
					match(INT);
					}
				}

				}
				break;
			case UNSIGNED:
				enterOuterAlt(_localctx, 5);
				{
				setState(5411);
				match(UNSIGNED);
				setState(5413);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==INT) {
					{
					setState(5412);
					match(INT);
					}
				}

				}
				break;
			case DATE:
				enterOuterAlt(_localctx, 6);
				{
				setState(5415);
				match(DATE);
				}
				break;
			case TIME:
				enterOuterAlt(_localctx, 7);
				{
				setState(5416);
				match(TIME);
				setState(5418);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5417);
					typeDatetimePrecision();
					}
				}

				}
				break;
			case DATETIME:
				enterOuterAlt(_localctx, 8);
				{
				setState(5420);
				match(DATETIME);
				setState(5422);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5421);
					typeDatetimePrecision();
					}
				}

				}
				break;
			case DECIMAL:
				enterOuterAlt(_localctx, 9);
				{
				setState(5424);
				match(DECIMAL);
				setState(5427);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,673,_ctx) ) {
				case 1:
					{
					setState(5425);
					fieldLength();
					}
					break;
				case 2:
					{
					setState(5426);
					precision();
					}
					break;
				}
				}
				break;
			case JSON:
				enterOuterAlt(_localctx, 10);
				{
				setState(5429);
				match(JSON);
				}
				break;
			case REAL:
				enterOuterAlt(_localctx, 11);
				{
				setState(5430);
				match(REAL);
				}
				break;
			case DOUBLE:
				enterOuterAlt(_localctx, 12);
				{
				setState(5431);
				match(DOUBLE);
				setState(5432);
				match(PRECISION);
				}
				break;
			case FLOAT:
				enterOuterAlt(_localctx, 13);
				{
				setState(5433);
				match(FLOAT);
				setState(5435);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(5434);
					precision();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NcharContext extends ParserRuleContext {
		public TerminalNode NCHAR() { return getToken(MySQLStatementParser.NCHAR, 0); }
		public TerminalNode NATIONAL() { return getToken(MySQLStatementParser.NATIONAL, 0); }
		public TerminalNode CHAR() { return getToken(MySQLStatementParser.CHAR, 0); }
		public NcharContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_nchar; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNchar(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NcharContext nchar() throws RecognitionException {
		NcharContext _localctx = new NcharContext(_ctx, getState());
		enterRule(_localctx, 700, RULE_nchar);
		try {
			setState(5442);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NCHAR:
				enterOuterAlt(_localctx, 1);
				{
				setState(5439);
				match(NCHAR);
				}
				break;
			case NATIONAL:
				enterOuterAlt(_localctx, 2);
				{
				setState(5440);
				match(NATIONAL);
				setState(5441);
				match(CHAR);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PositionFunctionContext extends ParserRuleContext {
		public TerminalNode POSITION() { return getToken(MySQLStatementParser.POSITION, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public PositionFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_positionFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPositionFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PositionFunctionContext positionFunction() throws RecognitionException {
		PositionFunctionContext _localctx = new PositionFunctionContext(_ctx, getState());
		enterRule(_localctx, 702, RULE_positionFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5444);
			match(POSITION);
			setState(5445);
			match(LP_);
			setState(5446);
			expr(0);
			setState(5447);
			match(IN);
			setState(5448);
			expr(0);
			setState(5449);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SubstringFunctionContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public List NUMBER_() { return getTokens(MySQLStatementParser.NUMBER_); }
		public TerminalNode NUMBER_(int i) {
			return getToken(MySQLStatementParser.NUMBER_, i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode SUBSTRING() { return getToken(MySQLStatementParser.SUBSTRING, 0); }
		public TerminalNode SUBSTR() { return getToken(MySQLStatementParser.SUBSTR, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SubstringFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_substringFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSubstringFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SubstringFunctionContext substringFunction() throws RecognitionException {
		SubstringFunctionContext _localctx = new SubstringFunctionContext(_ctx, getState());
		enterRule(_localctx, 704, RULE_substringFunction);
		int _la;
		try {
			setState(5473);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,679,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5451);
				_la = _input.LA(1);
				if ( !(_la==SUBSTRING || _la==SUBSTR) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5452);
				match(LP_);
				setState(5453);
				expr(0);
				setState(5454);
				match(FROM);
				setState(5455);
				match(NUMBER_);
				setState(5458);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(5456);
					match(FOR);
					setState(5457);
					match(NUMBER_);
					}
				}

				setState(5460);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5462);
				_la = _input.LA(1);
				if ( !(_la==SUBSTRING || _la==SUBSTR) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5463);
				match(LP_);
				setState(5464);
				expr(0);
				setState(5465);
				match(COMMA_);
				setState(5466);
				match(NUMBER_);
				setState(5469);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(5467);
					match(COMMA_);
					setState(5468);
					match(NUMBER_);
					}
				}

				setState(5471);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExtractFunctionContext extends ParserRuleContext {
		public TerminalNode EXTRACT() { return getToken(MySQLStatementParser.EXTRACT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public ExtractFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_extractFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExtractFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExtractFunctionContext extractFunction() throws RecognitionException {
		ExtractFunctionContext _localctx = new ExtractFunctionContext(_ctx, getState());
		enterRule(_localctx, 706, RULE_extractFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5475);
			match(EXTRACT);
			setState(5476);
			match(LP_);
			setState(5477);
			identifier();
			setState(5478);
			match(FROM);
			setState(5479);
			expr(0);
			setState(5480);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharFunctionContext extends ParserRuleContext {
		public TerminalNode CHAR() { return getToken(MySQLStatementParser.CHAR, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public CharFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCharFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharFunctionContext charFunction() throws RecognitionException {
		CharFunctionContext _localctx = new CharFunctionContext(_ctx, getState());
		enterRule(_localctx, 708, RULE_charFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5482);
			match(CHAR);
			setState(5483);
			match(LP_);
			setState(5484);
			expr(0);
			setState(5489);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5485);
				match(COMMA_);
				setState(5486);
				expr(0);
				}
				}
				setState(5491);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5494);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USING) {
				{
				setState(5492);
				match(USING);
				setState(5493);
				charsetName();
				}
			}

			setState(5496);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TrimFunctionContext extends ParserRuleContext {
		public TerminalNode TRIM() { return getToken(MySQLStatementParser.TRIM, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode LEADING() { return getToken(MySQLStatementParser.LEADING, 0); }
		public TerminalNode BOTH() { return getToken(MySQLStatementParser.BOTH, 0); }
		public TerminalNode TRAILING() { return getToken(MySQLStatementParser.TRAILING, 0); }
		public TrimFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_trimFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTrimFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TrimFunctionContext trimFunction() throws RecognitionException {
		TrimFunctionContext _localctx = new TrimFunctionContext(_ctx, getState());
		enterRule(_localctx, 710, RULE_trimFunction);
		int _la;
		try {
			setState(5520);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,685,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5498);
				match(TRIM);
				setState(5499);
				match(LP_);
				setState(5505);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==BOTH || _la==LEADING || _la==TRAILING) {
					{
					setState(5500);
					_la = _input.LA(1);
					if ( !(_la==BOTH || _la==LEADING || _la==TRAILING) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					setState(5502);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << AT_) | (1L << MAX) | (1L << MIN) | (1L << SUM) | (1L << COUNT) | (1L << GROUP_CONCAT) | (1L << CAST) | (1L << POSITION) | (1L << SUBSTRING) | (1L << SUBSTR) | (1L << EXTRACT) | (1L << TRIM) | (1L << LAST_DAY) | (1L << TRADITIONAL) | (1L << TREE) | (1L << MYSQL_MAIN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (MYSQL_ADMIN - 64)) | (1L << (INSTANT - 64)) | (1L << (INPLACE - 64)) | (1L << (COPY - 64)) | (1L << (UL_BINARY - 64)) | (1L << (AUTOCOMMIT - 64)) | (1L << (INNODB - 64)) | (1L << (REDO_LOG - 64)) | (1L << (ACCOUNT - 64)) | (1L << (ACTION - 64)) | (1L << (ACTIVE - 64)) | (1L << (ADMIN - 64)) | (1L << (AFTER - 64)) | (1L << (AGAINST - 64)) | (1L << (AGGREGATE - 64)) | (1L << (ALGORITHM - 64)) | (1L << (ALWAYS - 64)) | (1L << (ANY - 64)) | (1L << (ARRAY - 64)) | (1L << (ASCII - 64)) | (1L << (AT - 64)) | (1L << (ATTRIBUTE - 64)) | (1L << (AUTOEXTEND_SIZE - 64)) | (1L << (AUTO_INCREMENT - 64)) | (1L << (AVG - 64)) | (1L << (BIT_XOR - 64)) | (1L << (AVG_ROW_LENGTH - 64)) | (1L << (BACKUP - 64)) | (1L << (BEGIN - 64)) | (1L << (BINARY - 64)) | (1L << (BINLOG - 64)) | (1L << (BIT - 64)) | (1L << (BLOCK - 64)) | (1L << (BOOL - 64)) | (1L << (BOOLEAN - 64)) | (1L << (BTREE - 64)) | (1L << (BUCKETS - 64)) | (1L << (BYTE - 64)) | (1L << (CACHE - 64)) | (1L << (CASCADED - 64)) | (1L << (CASE - 64)) | (1L << (CATALOG_NAME - 64)) | (1L << (CHAIN - 64)) | (1L << (CHANGED - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (CHANNEL - 128)) | (1L << (CHAR - 128)) | (1L << (CHARSET - 128)) | (1L << (CHECKSUM - 128)) | (1L << (CIPHER - 128)) | (1L << (CLASS_ORIGIN - 128)) | (1L << (CLIENT - 128)) | (1L << (CLONE - 128)) | (1L << (CLOSE - 128)) | (1L << (COALESCE - 128)) | (1L << (CODE - 128)) | (1L << (COLLATION - 128)) | (1L << (COLUMNS - 128)) | (1L << (COLUMN_FORMAT - 128)) | (1L << (COLUMN_NAME - 128)) | (1L << (COMMENT - 128)) | (1L << (COMMIT - 128)) | (1L << (COMMITTED - 128)) | (1L << (COMPACT - 128)) | (1L << (COMPLETION - 128)) | (1L << (COMPONENT - 128)) | (1L << (COMPRESSED - 128)) | (1L << (COMPRESSION - 128)) | (1L << (CONCURRENT - 128)) | (1L << (CONNECTION - 128)) | (1L << (CONSISTENT - 128)) | (1L << (CONSTRAINT_CATALOG - 128)) | (1L << (CONSTRAINT_NAME - 128)) | (1L << (CONSTRAINT_SCHEMA - 128)) | (1L << (CONTAINS - 128)) | (1L << (CONTEXT - 128)) | (1L << (CONVERT - 128)) | (1L << (CPU - 128)) | (1L << (CREATE - 128)) | (1L << (CUME_DIST - 128)) | (1L << (CURRENT - 128)) | (1L << (CURRENT_DATE - 128)) | (1L << (CURRENT_TIME - 128)) | (1L << (CURRENT_TIMESTAMP - 128)) | (1L << (CURRENT_USER - 128)) | (1L << (CURSOR_NAME - 128)) | (1L << (DATA - 128)) | (1L << (DATABASE - 128)) | (1L << (DATAFILE - 128)) | (1L << (DATE - 128)) | (1L << (DATETIME - 128)) | (1L << (DAY - 128)) | (1L << (DEALLOCATE - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (DEFAULT_AUTH - 195)) | (1L << (DEFINER - 195)) | (1L << (DEFINITION - 195)) | (1L << (DELAY_KEY_WRITE - 195)) | (1L << (DENSE_RANK - 195)) | (1L << (DESCRIPTION - 195)) | (1L << (DIAGNOSTICS - 195)) | (1L << (DIRECTORY - 195)) | (1L << (DISABLE - 195)) | (1L << (DISCARD - 195)) | (1L << (DISK - 195)) | (1L << (DO - 195)) | (1L << (DUMPFILE - 195)) | (1L << (DUPLICATE - 195)) | (1L << (DYNAMIC - 195)) | (1L << (ENABLE - 195)) | (1L << (ENCRYPTION - 195)) | (1L << (END - 195)) | (1L << (ENDS - 195)) | (1L << (ENFORCED - 195)) | (1L << (ENGINE - 195)) | (1L << (ENGINES - 195)) | (1L << (ENGINE_ATTRIBUTE - 195)) | (1L << (ENUM - 195)) | (1L << (ERROR - 195)) | (1L << (ERRORS - 195)) | (1L << (ESCAPE - 195)) | (1L << (EVENT - 195)) | (1L << (EVENTS - 195)) | (1L << (EVERY - 195)) | (1L << (EXCHANGE - 195)) | (1L << (EXCLUDE - 195)) | (1L << (EXECUTE - 195)) | (1L << (EXISTS - 195)) | (1L << (EXPANSION - 195)) | (1L << (EXPIRE - 195)) | (1L << (EXPORT - 195)) | (1L << (EXTENDED - 195)) | (1L << (EXTENT_SIZE - 195)) | (1L << (FAILED_LOGIN_ATTEMPTS - 195)) | (1L << (FALSE - 195)) | (1L << (FAST - 195)) | (1L << (FAULTS - 195)))) != 0) || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & ((1L << (FILE - 259)) | (1L << (FILE_BLOCK_SIZE - 259)) | (1L << (FILTER - 259)) | (1L << (FIRST - 259)) | (1L << (FIRST_VALUE - 259)) | (1L << (FIXED - 259)) | (1L << (FLUSH - 259)) | (1L << (FOLLOWING - 259)) | (1L << (FOLLOWS - 259)) | (1L << (FORMAT - 259)) | (1L << (FOUND - 259)) | (1L << (FULL - 259)) | (1L << (GENERAL - 259)) | (1L << (GEOMETRY - 259)) | (1L << (GEOMETRYCOLLECTION - 259)) | (1L << (GET_FORMAT - 259)) | (1L << (GET_MASTER_PUBLIC_KEY - 259)) | (1L << (GLOBAL - 259)) | (1L << (GRANTS - 259)) | (1L << (GROUP_REPLICATION - 259)) | (1L << (HANDLER - 259)) | (1L << (HASH - 259)) | (1L << (HELP - 259)) | (1L << (HISTOGRAM - 259)) | (1L << (HISTORY - 259)) | (1L << (HOST - 259)) | (1L << (HOSTS - 259)) | (1L << (HOUR - 259)) | (1L << (IDENTIFIED - 259)) | (1L << (IF - 259)) | (1L << (IGNORE_SERVER_IDS - 259)) | (1L << (IMPORT - 259)) | (1L << (INACTIVE - 259)) | (1L << (INDEXES - 259)) | (1L << (INITIAL_SIZE - 259)) | (1L << (INSERT - 259)) | (1L << (INSERT_METHOD - 259)))) != 0) || ((((_la - 323)) & ~0x3f) == 0 && ((1L << (_la - 323)) & ((1L << (INSTALL - 323)) | (1L << (INSTANCE - 323)) | (1L << (INTERVAL - 323)) | (1L << (INVISIBLE - 323)) | (1L << (INVOKER - 323)) | (1L << (IO - 323)) | (1L << (IPC - 323)) | (1L << (ISOLATION - 323)) | (1L << (ISSUER - 323)) | (1L << (JSON - 323)) | (1L << (JSON_TABLE - 323)) | (1L << (JSON_VALUE - 323)) | (1L << (KEY - 323)) | (1L << (KEY_BLOCK_SIZE - 323)) | (1L << (LAG - 323)) | (1L << (LANGUAGE - 323)) | (1L << (LAST - 323)) | (1L << (LAST_VALUE - 323)) | (1L << (LEAD - 323)) | (1L << (LEAVES - 323)) | (1L << (LEFT - 323)) | (1L << (LESS - 323)) | (1L << (LEVEL - 323)) | (1L << (LINESTRING - 323)) | (1L << (LIST - 323)) | (1L << (LOCAL - 323)) | (1L << (LOCALTIME - 323)) | (1L << (LOCALTIMESTAMP - 323)) | (1L << (LOCKED - 323)) | (1L << (LOCKS - 323)) | (1L << (LOGFILE - 323)) | (1L << (LOGS - 323)) | (1L << (MASTER - 323)) | (1L << (MASTER_AUTO_POSITION - 323)))) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & ((1L << (MASTER_COMPRESSION_ALGORITHM - 387)) | (1L << (MASTER_CONNECT_RETRY - 387)) | (1L << (MASTER_DELAY - 387)) | (1L << (MASTER_HEARTBEAT_PERIOD - 387)) | (1L << (MASTER_HOST - 387)) | (1L << (MASTER_LOG_FILE - 387)) | (1L << (MASTER_LOG_POS - 387)) | (1L << (MASTER_PASSWORD - 387)) | (1L << (MASTER_PORT - 387)) | (1L << (MASTER_PUBLIC_KEY_PATH - 387)) | (1L << (MASTER_RETRY_COUNT - 387)) | (1L << (MASTER_SERVER_ID - 387)) | (1L << (MASTER_SSL - 387)) | (1L << (MASTER_SSL_CA - 387)) | (1L << (MASTER_SSL_CAPATH - 387)) | (1L << (MASTER_SSL_CERT - 387)) | (1L << (MASTER_SSL_CIPHER - 387)) | (1L << (MASTER_SSL_CRL - 387)) | (1L << (MASTER_SSL_CRLPATH - 387)) | (1L << (MASTER_SSL_KEY - 387)) | (1L << (MASTER_TLS_CIPHERSUITES - 387)) | (1L << (MASTER_TLS_VERSION - 387)) | (1L << (MASTER_USER - 387)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 387)) | (1L << (MATCH - 387)) | (1L << (MAXVALUE - 387)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 387)) | (1L << (MAX_QUERIES_PER_HOUR - 387)) | (1L << (MAX_ROWS - 387)) | (1L << (MAX_SIZE - 387)) | (1L << (MAX_UPDATES_PER_HOUR - 387)) | (1L << (MAX_USER_CONNECTIONS - 387)) | (1L << (MEDIUM - 387)) | (1L << (MEMBER - 387)) | (1L << (MEMORY - 387)) | (1L << (MERGE - 387)) | (1L << (MESSAGE_TEXT - 387)) | (1L << (MICROSECOND - 387)) | (1L << (MIGRATE - 387)) | (1L << (MINUTE - 387)) | (1L << (MIN_ROWS - 387)) | (1L << (MOD - 387)) | (1L << (MODE - 387)) | (1L << (MODIFY - 387)) | (1L << (MONTH - 387)) | (1L << (MULTILINESTRING - 387)) | (1L << (MULTIPOINT - 387)) | (1L << (MULTIPOLYGON - 387)) | (1L << (MUTEX - 387)) | (1L << (MYSQL_ERRNO - 387)) | (1L << (NAME - 387)) | (1L << (NAMES - 387)) | (1L << (NATIONAL - 387)) | (1L << (NCHAR - 387)) | (1L << (NDBCLUSTER - 387)))) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & ((1L << (NESTED - 451)) | (1L << (NETWORK_NAMESPACE - 451)) | (1L << (NEVER - 451)) | (1L << (NEW - 451)) | (1L << (NEXT - 451)) | (1L << (NO - 451)) | (1L << (NODEGROUP - 451)) | (1L << (NONE - 451)) | (1L << (NOT - 451)) | (1L << (NOWAIT - 451)) | (1L << (NO_WAIT - 451)) | (1L << (NTH_VALUE - 451)) | (1L << (NTILE - 451)) | (1L << (NULL - 451)) | (1L << (NULLS - 451)) | (1L << (NUMBER - 451)) | (1L << (NVARCHAR - 451)) | (1L << (OFF - 451)) | (1L << (OFFSET - 451)) | (1L << (OJ - 451)) | (1L << (OLD - 451)) | (1L << (ONE - 451)) | (1L << (ONLY - 451)) | (1L << (OPEN - 451)) | (1L << (OPTIONAL - 451)) | (1L << (OPTIONS - 451)) | (1L << (ORDINALITY - 451)) | (1L << (ORGANIZATION - 451)) | (1L << (OTHERS - 451)) | (1L << (OWNER - 451)) | (1L << (PACK_KEYS - 451)) | (1L << (PAGE - 451)) | (1L << (PARSER - 451)) | (1L << (PARTIAL - 451)) | (1L << (PARTITIONING - 451)) | (1L << (PARTITIONS - 451)) | (1L << (PASSWORD - 451)) | (1L << (PASSWORD_LOCK_TIME - 451)) | (1L << (PATH - 451)) | (1L << (PERCENT_RANK - 451)) | (1L << (PERSIST - 451)) | (1L << (PERSIST_ONLY - 451)) | (1L << (PHASE - 451)) | (1L << (PLUGIN - 451)) | (1L << (PLUGINS - 451)) | (1L << (PLUGIN_DIR - 451)) | (1L << (POINT - 451)) | (1L << (POLYGON - 451)) | (1L << (PORT - 451)))) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & ((1L << (PRECEDES - 515)) | (1L << (PRECEDING - 515)) | (1L << (PREPARE - 515)) | (1L << (PRESERVE - 515)) | (1L << (PREV - 515)) | (1L << (PRIMARY - 515)) | (1L << (PRIVILEGES - 515)) | (1L << (PRIVILEGE_CHECKS_USER - 515)) | (1L << (PROCESS - 515)) | (1L << (PROCESSLIST - 515)) | (1L << (PROFILE - 515)) | (1L << (PROFILES - 515)) | (1L << (PROXY - 515)) | (1L << (QUARTER - 515)) | (1L << (QUERY - 515)) | (1L << (QUICK - 515)) | (1L << (RANDOM - 515)) | (1L << (RANK - 515)) | (1L << (READ_ONLY - 515)) | (1L << (REBUILD - 515)) | (1L << (RECOVER - 515)) | (1L << (REDO_BUFFER_SIZE - 515)) | (1L << (REDUNDANT - 515)) | (1L << (REFERENCE - 515)) | (1L << (RELAY - 515)) | (1L << (RELAYLOG - 515)) | (1L << (RELAY_LOG_FILE - 515)) | (1L << (RELAY_LOG_POS - 515)) | (1L << (RELAY_THREAD - 515)) | (1L << (RELOAD - 515)) | (1L << (REMOVE - 515)) | (1L << (REORGANIZE - 515)) | (1L << (REPAIR - 515)) | (1L << (REPEAT - 515)) | (1L << (REPEATABLE - 515)) | (1L << (REPLACE - 515)) | (1L << (REPLICATE_DO_DB - 515)) | (1L << (REPLICATE_DO_TABLE - 515)) | (1L << (REPLICATE_IGNORE_DB - 515)) | (1L << (REPLICATE_IGNORE_TABLE - 515)) | (1L << (REPLICATE_REWRITE_DB - 515)) | (1L << (REPLICATE_WILD_DO_TABLE - 515)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 515)) | (1L << (REPLICATION - 515)) | (1L << (REQUIRE_ROW_FORMAT - 515)) | (1L << (RESET - 515)) | (1L << (RESOURCE - 515)))) != 0) || ((((_la - 579)) & ~0x3f) == 0 && ((1L << (_la - 579)) & ((1L << (RESPECT - 579)) | (1L << (RESTART - 579)) | (1L << (RESTORE - 579)) | (1L << (RESUME - 579)) | (1L << (RETAIN - 579)) | (1L << (RETURNED_SQLSTATE - 579)) | (1L << (RETURNING - 579)) | (1L << (RETURNS - 579)) | (1L << (REUSE - 579)) | (1L << (REVERSE - 579)) | (1L << (RIGHT - 579)) | (1L << (ROLE - 579)) | (1L << (ROLLBACK - 579)) | (1L << (ROLLUP - 579)) | (1L << (ROTATE - 579)) | (1L << (ROUTINE - 579)) | (1L << (ROW - 579)) | (1L << (ROW_COUNT - 579)) | (1L << (ROW_FORMAT - 579)) | (1L << (ROW_NUMBER - 579)) | (1L << (RTREE - 579)) | (1L << (SAVEPOINT - 579)) | (1L << (SCHEDULE - 579)) | (1L << (SCHEMA - 579)) | (1L << (SCHEMA_NAME - 579)) | (1L << (SECOND - 579)) | (1L << (SECONDARY - 579)) | (1L << (SECONDARY_ENGINE - 579)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 579)) | (1L << (SECONDARY_LOAD - 579)) | (1L << (SECONDARY_UNLOAD - 579)) | (1L << (SECURITY - 579)) | (1L << (SERIAL - 579)) | (1L << (SERIALIZABLE - 579)) | (1L << (SERVER - 579)) | (1L << (SESSION - 579)) | (1L << (SHARE - 579)) | (1L << (SHUTDOWN - 579)) | (1L << (SIGNED - 579)) | (1L << (SIMPLE - 579)) | (1L << (SLAVE - 579)) | (1L << (SLOW - 579)) | (1L << (SNAPSHOT - 579)) | (1L << (SOCKET - 579)) | (1L << (SONAME - 579)) | (1L << (SOUNDS - 579)) | (1L << (SOURCE - 579)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (SQL_AFTER_GTIDS - 647)) | (1L << (SQL_AFTER_MTS_GAPS - 647)) | (1L << (SQL_BEFORE_GTIDS - 647)) | (1L << (SQL_BUFFER_RESULT - 647)) | (1L << (SQL_NO_CACHE - 647)) | (1L << (SQL_THREAD - 647)) | (1L << (SRID - 647)) | (1L << (STACKED - 647)) | (1L << (START - 647)) | (1L << (STARTS - 647)) | (1L << (STATS_AUTO_RECALC - 647)) | (1L << (STATS_PERSISTENT - 647)) | (1L << (STATS_SAMPLE_PAGES - 647)) | (1L << (STATUS - 647)) | (1L << (STOP - 647)) | (1L << (STORAGE - 647)) | (1L << (STREAM - 647)) | (1L << (STRING - 647)) | (1L << (SUBCLASS_ORIGIN - 647)) | (1L << (SUBJECT - 647)) | (1L << (SUBPARTITION - 647)) | (1L << (SUBPARTITIONS - 647)) | (1L << (SUPER - 647)) | (1L << (SUSPEND - 647)) | (1L << (SWAPS - 647)) | (1L << (SWITCHES - 647)) | (1L << (TABLES - 647)) | (1L << (TABLESPACE - 647)) | (1L << (TABLE_CHECKSUM - 647)) | (1L << (TABLE_NAME - 647)) | (1L << (TEMPORARY - 647)) | (1L << (TEMPTABLE - 647)) | (1L << (TEXT - 647)) | (1L << (THAN - 647)) | (1L << (THREAD_PRIORITY - 647)) | (1L << (TIES - 647)) | (1L << (TIME - 647)) | (1L << (TIMESTAMP - 647)) | (1L << (TIMESTAMP_ADD - 647)) | (1L << (TIMESTAMP_DIFF - 647)) | (1L << (TLS - 647)) | (1L << (TRANSACTION - 647)) | (1L << (TRIGGERS - 647)) | (1L << (TRUE - 647)) | (1L << (TRUNCATE - 647)) | (1L << (TYPE - 647)) | (1L << (TYPES - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (UNBOUNDED - 711)) | (1L << (UNCOMMITTED - 711)) | (1L << (UNDEFINED - 711)) | (1L << (UNDOFILE - 711)) | (1L << (UNDO_BUFFER_SIZE - 711)) | (1L << (UNICODE - 711)) | (1L << (UNINSTALL - 711)) | (1L << (UNKNOWN - 711)) | (1L << (UNTIL - 711)) | (1L << (UPGRADE - 711)) | (1L << (USER - 711)) | (1L << (USER_RESOURCES - 711)) | (1L << (USE_FRM - 711)) | (1L << (UTC_DATE - 711)) | (1L << (UTC_TIME - 711)) | (1L << (UTC_TIMESTAMP - 711)) | (1L << (VALIDATION - 711)) | (1L << (VALUE - 711)) | (1L << (VALUES - 711)) | (1L << (VARIABLES - 711)) | (1L << (VCPU - 711)) | (1L << (VIEW - 711)) | (1L << (VISIBLE - 711)) | (1L << (WAIT - 711)) | (1L << (WARNINGS - 711)) | (1L << (WEEK - 711)) | (1L << (WEIGHT_STRING - 711)) | (1L << (WITHOUT - 711)) | (1L << (WORK - 711)) | (1L << (WRAPPER - 711)) | (1L << (X509 - 711)) | (1L << (XA - 711)) | (1L << (XID - 711)) | (1L << (XML - 711)) | (1L << (YEAR - 711)) | (1L << (JSON_ARRAY - 711)) | (1L << (JSON_ARRAY_APPEND - 711)) | (1L << (JSON_ARRAY_INSERT - 711)) | (1L << (JSON_CONTAINS - 711)) | (1L << (JSON_CONTAINS_PATH - 711)) | (1L << (JSON_DEPTH - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (JSON_EXTRACT - 775)) | (1L << (JSON_INSERT - 775)) | (1L << (JSON_KEYS - 775)) | (1L << (JSON_LENGTH - 775)) | (1L << (JSON_MERGE - 775)) | (1L << (JSON_MERGE_PATCH - 775)) | (1L << (JSON_MERGE_PRESERVE - 775)) | (1L << (JSON_OBJECT - 775)) | (1L << (JSON_OVERLAPS - 775)) | (1L << (JSON_PRETTY - 775)) | (1L << (JSON_QUOTE - 775)) | (1L << (JSON_REMOVE - 775)) | (1L << (JSON_REPLACE - 775)) | (1L << (JSON_SCHEMA_VALID - 775)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 775)) | (1L << (JSON_SEARCH - 775)) | (1L << (JSON_SET - 775)) | (1L << (JSON_STORAGE_FREE - 775)) | (1L << (JSON_STORAGE_SIZE - 775)) | (1L << (JSON_TYPE - 775)) | (1L << (JSON_UNQUOTE - 775)) | (1L << (JSON_VALID - 775)) | (1L << (SINGLE_QUOTED_TEXT - 775)) | (1L << (DOUBLE_QUOTED_TEXT - 775)) | (1L << (NCHAR_TEXT - 775)) | (1L << (UNDERSCORE_CHARSET - 775)) | (1L << (NUMBER_ - 775)) | (1L << (HEX_DIGIT_ - 775)) | (1L << (BIT_NUM_ - 775)) | (1L << (IDENTIFIER_ - 775)))) != 0)) {
						{
						setState(5501);
						expr(0);
						}
					}

					setState(5504);
					match(FROM);
					}
				}

				setState(5507);
				expr(0);
				setState(5508);
				match(RP_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5510);
				match(TRIM);
				setState(5511);
				match(LP_);
				setState(5515);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,684,_ctx) ) {
				case 1:
					{
					setState(5512);
					expr(0);
					setState(5513);
					match(FROM);
					}
					break;
				}
				setState(5517);
				expr(0);
				setState(5518);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ValuesFunctionContext extends ParserRuleContext {
		public TerminalNode VALUES() { return getToken(MySQLStatementParser.VALUES, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnRefListContext columnRefList() {
			return getRuleContext(ColumnRefListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public ValuesFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_valuesFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitValuesFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ValuesFunctionContext valuesFunction() throws RecognitionException {
		ValuesFunctionContext _localctx = new ValuesFunctionContext(_ctx, getState());
		enterRule(_localctx, 712, RULE_valuesFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5522);
			match(VALUES);
			setState(5523);
			match(LP_);
			setState(5524);
			columnRefList();
			setState(5525);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WeightStringFunctionContext extends ParserRuleContext {
		public TerminalNode WEIGHT_STRING() { return getToken(MySQLStatementParser.WEIGHT_STRING, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public DataTypeContext dataType() {
			return getRuleContext(DataTypeContext.class,0);
		}
		public LevelClauseContext levelClause() {
			return getRuleContext(LevelClauseContext.class,0);
		}
		public WeightStringFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_weightStringFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWeightStringFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WeightStringFunctionContext weightStringFunction() throws RecognitionException {
		WeightStringFunctionContext _localctx = new WeightStringFunctionContext(_ctx, getState());
		enterRule(_localctx, 714, RULE_weightStringFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5527);
			match(WEIGHT_STRING);
			setState(5528);
			match(LP_);
			setState(5529);
			expr(0);
			setState(5532);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AS) {
				{
				setState(5530);
				match(AS);
				setState(5531);
				dataType();
				}
			}

			setState(5535);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LEVEL) {
				{
				setState(5534);
				levelClause();
				}
			}

			setState(5537);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LevelClauseContext extends ParserRuleContext {
		public TerminalNode LEVEL() { return getToken(MySQLStatementParser.LEVEL, 0); }
		public List levelInWeightListElement() {
			return getRuleContexts(LevelInWeightListElementContext.class);
		}
		public LevelInWeightListElementContext levelInWeightListElement(int i) {
			return getRuleContext(LevelInWeightListElementContext.class,i);
		}
		public List NUMBER_() { return getTokens(MySQLStatementParser.NUMBER_); }
		public TerminalNode NUMBER_(int i) {
			return getToken(MySQLStatementParser.NUMBER_, i);
		}
		public TerminalNode MINUS_() { return getToken(MySQLStatementParser.MINUS_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public LevelClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_levelClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLevelClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LevelClauseContext levelClause() throws RecognitionException {
		LevelClauseContext _localctx = new LevelClauseContext(_ctx, getState());
		enterRule(_localctx, 716, RULE_levelClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5539);
			match(LEVEL);
			setState(5551);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,689,_ctx) ) {
			case 1:
				{
				setState(5540);
				levelInWeightListElement();
				setState(5545);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5541);
					match(COMMA_);
					setState(5542);
					levelInWeightListElement();
					}
					}
					setState(5547);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				{
				setState(5548);
				match(NUMBER_);
				setState(5549);
				match(MINUS_);
				setState(5550);
				match(NUMBER_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LevelInWeightListElementContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public DirectionContext direction() {
			return getRuleContext(DirectionContext.class,0);
		}
		public TerminalNode REVERSE() { return getToken(MySQLStatementParser.REVERSE, 0); }
		public LevelInWeightListElementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_levelInWeightListElement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLevelInWeightListElement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LevelInWeightListElementContext levelInWeightListElement() throws RecognitionException {
		LevelInWeightListElementContext _localctx = new LevelInWeightListElementContext(_ctx, getState());
		enterRule(_localctx, 718, RULE_levelInWeightListElement);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5553);
			match(NUMBER_);
			setState(5555);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ASC || _la==DESC) {
				{
				setState(5554);
				direction();
				}
			}

			setState(5558);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REVERSE) {
				{
				setState(5557);
				match(REVERSE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RegularFunctionContext extends ParserRuleContext {
		public CompleteRegularFunctionContext completeRegularFunction() {
			return getRuleContext(CompleteRegularFunctionContext.class,0);
		}
		public ShorthandRegularFunctionContext shorthandRegularFunction() {
			return getRuleContext(ShorthandRegularFunctionContext.class,0);
		}
		public RegularFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_regularFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRegularFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RegularFunctionContext regularFunction() throws RecognitionException {
		RegularFunctionContext _localctx = new RegularFunctionContext(_ctx, getState());
		enterRule(_localctx, 720, RULE_regularFunction);
		try {
			setState(5562);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,692,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5560);
				completeRegularFunction();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5561);
				shorthandRegularFunction();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShorthandRegularFunctionContext extends ParserRuleContext {
		public TerminalNode CURRENT_DATE() { return getToken(MySQLStatementParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(MySQLStatementParser.CURRENT_TIME, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySQLStatementParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode LAST_DAY() { return getToken(MySQLStatementParser.LAST_DAY, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySQLStatementParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySQLStatementParser.LOCALTIMESTAMP, 0); }
		public ShorthandRegularFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_shorthandRegularFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShorthandRegularFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShorthandRegularFunctionContext shorthandRegularFunction() throws RecognitionException {
		ShorthandRegularFunctionContext _localctx = new ShorthandRegularFunctionContext(_ctx, getState());
		enterRule(_localctx, 722, RULE_shorthandRegularFunction);
		int _la;
		try {
			setState(5577);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CURRENT_DATE:
				enterOuterAlt(_localctx, 1);
				{
				setState(5564);
				match(CURRENT_DATE);
				}
				break;
			case CURRENT_TIME:
				enterOuterAlt(_localctx, 2);
				{
				setState(5565);
				match(CURRENT_TIME);
				setState(5571);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,694,_ctx) ) {
				case 1:
					{
					setState(5566);
					match(LP_);
					setState(5568);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==NUMBER_) {
						{
						setState(5567);
						match(NUMBER_);
						}
					}

					setState(5570);
					match(RP_);
					}
					break;
				}
				}
				break;
			case CURRENT_TIMESTAMP:
				enterOuterAlt(_localctx, 3);
				{
				setState(5573);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case LAST_DAY:
				enterOuterAlt(_localctx, 4);
				{
				setState(5574);
				match(LAST_DAY);
				}
				break;
			case LOCALTIME:
				enterOuterAlt(_localctx, 5);
				{
				setState(5575);
				match(LOCALTIME);
				}
				break;
			case LOCALTIMESTAMP:
				enterOuterAlt(_localctx, 6);
				{
				setState(5576);
				match(LOCALTIMESTAMP);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CompleteRegularFunctionContext extends ParserRuleContext {
		public RegularFunctionNameContext regularFunctionName() {
			return getRuleContext(RegularFunctionNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CompleteRegularFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_completeRegularFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCompleteRegularFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CompleteRegularFunctionContext completeRegularFunction() throws RecognitionException {
		CompleteRegularFunctionContext _localctx = new CompleteRegularFunctionContext(_ctx, getState());
		enterRule(_localctx, 724, RULE_completeRegularFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5579);
			regularFunctionName();
			{
			setState(5580);
			match(LP_);
			setState(5590);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NOT_:
			case TILDE_:
			case PLUS_:
			case MINUS_:
			case LP_:
			case LBE_:
			case QUESTION_:
			case AT_:
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINARY:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CASE:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHAR:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CONVERT:
			case CPU:
			case CREATE:
			case CUME_DIST:
			case CURRENT:
			case CURRENT_DATE:
			case CURRENT_TIME:
			case CURRENT_TIMESTAMP:
			case CURRENT_USER:
			case CURSOR_NAME:
			case DATA:
			case DATABASE:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DENSE_RANK:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXISTS:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FALSE:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIRST_VALUE:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IF:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INTERVAL:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_TABLE:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LAG:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAD:
			case LEAVES:
			case LEFT:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCALTIME:
			case LOCALTIMESTAMP:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MATCH:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MOD:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOT:
			case NOWAIT:
			case NO_WAIT:
			case NTH_VALUE:
			case NTILE:
			case NULL:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERCENT_RANK:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case RANK:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEAT:
			case REPEATABLE:
			case REPLACE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case RIGHT:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW:
			case ROW_COUNT:
			case ROW_FORMAT:
			case ROW_NUMBER:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUE:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VALUES:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case JSON_ARRAY:
			case JSON_ARRAY_APPEND:
			case JSON_ARRAY_INSERT:
			case JSON_CONTAINS:
			case JSON_CONTAINS_PATH:
			case JSON_DEPTH:
			case JSON_EXTRACT:
			case JSON_INSERT:
			case JSON_KEYS:
			case JSON_LENGTH:
			case JSON_MERGE:
			case JSON_MERGE_PATCH:
			case JSON_MERGE_PRESERVE:
			case JSON_OBJECT:
			case JSON_OVERLAPS:
			case JSON_PRETTY:
			case JSON_QUOTE:
			case JSON_REMOVE:
			case JSON_REPLACE:
			case JSON_SCHEMA_VALID:
			case JSON_SCHEMA_VALIDATION_REPORT:
			case JSON_SEARCH:
			case JSON_SET:
			case JSON_STORAGE_FREE:
			case JSON_STORAGE_SIZE:
			case JSON_TYPE:
			case JSON_UNQUOTE:
			case JSON_VALID:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case NCHAR_TEXT:
			case UNDERSCORE_CHARSET:
			case NUMBER_:
			case HEX_DIGIT_:
			case BIT_NUM_:
			case IDENTIFIER_:
				{
				setState(5581);
				expr(0);
				setState(5586);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(5582);
					match(COMMA_);
					setState(5583);
					expr(0);
					}
					}
					setState(5588);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case ASTERISK_:
				{
				setState(5589);
				match(ASTERISK_);
				}
				break;
			case RP_:
				break;
			default:
				break;
			}
			setState(5592);
			match(RP_);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RegularFunctionNameContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySQLStatementParser.IF, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySQLStatementParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySQLStatementParser.LOCALTIMESTAMP, 0); }
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode INSERT() { return getToken(MySQLStatementParser.INSERT, 0); }
		public TerminalNode INTERVAL() { return getToken(MySQLStatementParser.INTERVAL, 0); }
		public TerminalNode MOD() { return getToken(MySQLStatementParser.MOD, 0); }
		public TerminalNode DATABASE() { return getToken(MySQLStatementParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySQLStatementParser.SCHEMA, 0); }
		public TerminalNode LEFT() { return getToken(MySQLStatementParser.LEFT, 0); }
		public TerminalNode RIGHT() { return getToken(MySQLStatementParser.RIGHT, 0); }
		public TerminalNode DATE() { return getToken(MySQLStatementParser.DATE, 0); }
		public TerminalNode DAY() { return getToken(MySQLStatementParser.DAY, 0); }
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySQLStatementParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode REPEAT() { return getToken(MySQLStatementParser.REPEAT, 0); }
		public TerminalNode LINESTRING() { return getToken(MySQLStatementParser.LINESTRING, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySQLStatementParser.MULTILINESTRING, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySQLStatementParser.MULTIPOINT, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySQLStatementParser.MULTIPOLYGON, 0); }
		public TerminalNode POINT() { return getToken(MySQLStatementParser.POINT, 0); }
		public TerminalNode POLYGON() { return getToken(MySQLStatementParser.POLYGON, 0); }
		public TerminalNode TIME() { return getToken(MySQLStatementParser.TIME, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySQLStatementParser.TIMESTAMP, 0); }
		public TerminalNode TIMESTAMP_ADD() { return getToken(MySQLStatementParser.TIMESTAMP_ADD, 0); }
		public TerminalNode TIMESTAMP_DIFF() { return getToken(MySQLStatementParser.TIMESTAMP_DIFF, 0); }
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySQLStatementParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode CURRENT_DATE() { return getToken(MySQLStatementParser.CURRENT_DATE, 0); }
		public TerminalNode CURRENT_TIME() { return getToken(MySQLStatementParser.CURRENT_TIME, 0); }
		public TerminalNode UTC_TIMESTAMP() { return getToken(MySQLStatementParser.UTC_TIMESTAMP, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public RegularFunctionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_regularFunctionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRegularFunctionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RegularFunctionNameContext regularFunctionName() throws RecognitionException {
		RegularFunctionNameContext _localctx = new RegularFunctionNameContext(_ctx, getState());
		enterRule(_localctx, 726, RULE_regularFunctionName);
		try {
			setState(5625);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,698,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5594);
				match(IF);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5595);
				match(LOCALTIME);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5596);
				match(LOCALTIMESTAMP);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5597);
				match(REPLACE);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5598);
				match(INSERT);
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5599);
				match(INTERVAL);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5600);
				match(MOD);
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5601);
				match(DATABASE);
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5602);
				match(SCHEMA);
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(5603);
				match(LEFT);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(5604);
				match(RIGHT);
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(5605);
				match(DATE);
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(5606);
				match(DAY);
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(5607);
				match(GEOMETRYCOLLECTION);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(5608);
				match(REPEAT);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(5609);
				match(LINESTRING);
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(5610);
				match(MULTILINESTRING);
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(5611);
				match(MULTIPOINT);
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(5612);
				match(MULTIPOLYGON);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(5613);
				match(POINT);
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(5614);
				match(POLYGON);
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(5615);
				match(TIME);
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(5616);
				match(TIMESTAMP);
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(5617);
				match(TIMESTAMP_ADD);
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(5618);
				match(TIMESTAMP_DIFF);
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(5619);
				match(DATE);
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(5620);
				match(CURRENT_TIMESTAMP);
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(5621);
				match(CURRENT_DATE);
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(5622);
				match(CURRENT_TIME);
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(5623);
				match(UTC_TIMESTAMP);
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(5624);
				identifier();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MatchExpressionContext extends ParserRuleContext {
		public TerminalNode MATCH() { return getToken(MySQLStatementParser.MATCH, 0); }
		public TerminalNode AGAINST() { return getToken(MySQLStatementParser.AGAINST, 0); }
		public List LP_() { return getTokens(MySQLStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(MySQLStatementParser.LP_, i);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public List RP_() { return getTokens(MySQLStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(MySQLStatementParser.RP_, i);
		}
		public ColumnRefListContext columnRefList() {
			return getRuleContext(ColumnRefListContext.class,0);
		}
		public MatchSearchModifierContext matchSearchModifier() {
			return getRuleContext(MatchSearchModifierContext.class,0);
		}
		public MatchExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_matchExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitMatchExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MatchExpressionContext matchExpression() throws RecognitionException {
		MatchExpressionContext _localctx = new MatchExpressionContext(_ctx, getState());
		enterRule(_localctx, 728, RULE_matchExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5627);
			match(MATCH);
			setState(5633);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(5628);
				columnRefList();
				}
				break;
			case LP_:
				{
				setState(5629);
				match(LP_);
				setState(5630);
				columnRefList();
				setState(5631);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(5635);
			match(AGAINST);
			setState(5636);
			match(LP_);
			setState(5637);
			expr(0);
			setState(5639);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IN || _la==WITH) {
				{
				setState(5638);
				matchSearchModifier();
				}
			}

			setState(5641);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MatchSearchModifierContext extends ParserRuleContext {
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public TerminalNode NATURAL() { return getToken(MySQLStatementParser.NATURAL, 0); }
		public TerminalNode LANGUAGE() { return getToken(MySQLStatementParser.LANGUAGE, 0); }
		public TerminalNode MODE() { return getToken(MySQLStatementParser.MODE, 0); }
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode QUERY() { return getToken(MySQLStatementParser.QUERY, 0); }
		public TerminalNode EXPANSION() { return getToken(MySQLStatementParser.EXPANSION, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySQLStatementParser.BOOLEAN, 0); }
		public MatchSearchModifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_matchSearchModifier; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitMatchSearchModifier(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MatchSearchModifierContext matchSearchModifier() throws RecognitionException {
		MatchSearchModifierContext _localctx = new MatchSearchModifierContext(_ctx, getState());
		enterRule(_localctx, 730, RULE_matchSearchModifier);
		try {
			setState(5660);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,701,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5643);
				match(IN);
				setState(5644);
				match(NATURAL);
				setState(5645);
				match(LANGUAGE);
				setState(5646);
				match(MODE);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5647);
				match(IN);
				setState(5648);
				match(NATURAL);
				setState(5649);
				match(LANGUAGE);
				setState(5650);
				match(MODE);
				setState(5651);
				match(WITH);
				setState(5652);
				match(QUERY);
				setState(5653);
				match(EXPANSION);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5654);
				match(IN);
				setState(5655);
				match(BOOLEAN);
				setState(5656);
				match(MODE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5657);
				match(WITH);
				setState(5658);
				match(QUERY);
				setState(5659);
				match(EXPANSION);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseExpressionContext extends ParserRuleContext {
		public TerminalNode CASE() { return getToken(MySQLStatementParser.CASE, 0); }
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public SimpleExprContext simpleExpr() {
			return getRuleContext(SimpleExprContext.class,0);
		}
		public List caseWhen() {
			return getRuleContexts(CaseWhenContext.class);
		}
		public CaseWhenContext caseWhen(int i) {
			return getRuleContext(CaseWhenContext.class,i);
		}
		public CaseElseContext caseElse() {
			return getRuleContext(CaseElseContext.class,0);
		}
		public CaseExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCaseExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseExpressionContext caseExpression() throws RecognitionException {
		CaseExpressionContext _localctx = new CaseExpressionContext(_ctx, getState());
		enterRule(_localctx, 732, RULE_caseExpression);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5662);
			match(CASE);
			setState(5664);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << NOT_) | (1L << TILDE_) | (1L << PLUS_) | (1L << MINUS_) | (1L << LP_) | (1L << LBE_) | (1L << QUESTION_) | (1L << AT_) | (1L << MAX) | (1L << MIN) | (1L << SUM) | (1L << COUNT) | (1L << GROUP_CONCAT) | (1L << CAST) | (1L << POSITION) | (1L << SUBSTRING) | (1L << SUBSTR) | (1L << EXTRACT) | (1L << TRIM) | (1L << LAST_DAY) | (1L << TRADITIONAL) | (1L << TREE) | (1L << MYSQL_MAIN))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (MYSQL_ADMIN - 64)) | (1L << (INSTANT - 64)) | (1L << (INPLACE - 64)) | (1L << (COPY - 64)) | (1L << (UL_BINARY - 64)) | (1L << (AUTOCOMMIT - 64)) | (1L << (INNODB - 64)) | (1L << (REDO_LOG - 64)) | (1L << (ACCOUNT - 64)) | (1L << (ACTION - 64)) | (1L << (ACTIVE - 64)) | (1L << (ADMIN - 64)) | (1L << (AFTER - 64)) | (1L << (AGAINST - 64)) | (1L << (AGGREGATE - 64)) | (1L << (ALGORITHM - 64)) | (1L << (ALWAYS - 64)) | (1L << (ANY - 64)) | (1L << (ARRAY - 64)) | (1L << (ASCII - 64)) | (1L << (AT - 64)) | (1L << (ATTRIBUTE - 64)) | (1L << (AUTOEXTEND_SIZE - 64)) | (1L << (AUTO_INCREMENT - 64)) | (1L << (AVG - 64)) | (1L << (BIT_XOR - 64)) | (1L << (AVG_ROW_LENGTH - 64)) | (1L << (BACKUP - 64)) | (1L << (BEGIN - 64)) | (1L << (BINARY - 64)) | (1L << (BINLOG - 64)) | (1L << (BIT - 64)) | (1L << (BLOCK - 64)) | (1L << (BOOL - 64)) | (1L << (BOOLEAN - 64)) | (1L << (BTREE - 64)) | (1L << (BUCKETS - 64)) | (1L << (BYTE - 64)) | (1L << (CACHE - 64)) | (1L << (CASCADED - 64)) | (1L << (CASE - 64)) | (1L << (CATALOG_NAME - 64)) | (1L << (CHAIN - 64)) | (1L << (CHANGED - 64)))) != 0) || ((((_la - 128)) & ~0x3f) == 0 && ((1L << (_la - 128)) & ((1L << (CHANNEL - 128)) | (1L << (CHAR - 128)) | (1L << (CHARSET - 128)) | (1L << (CHECKSUM - 128)) | (1L << (CIPHER - 128)) | (1L << (CLASS_ORIGIN - 128)) | (1L << (CLIENT - 128)) | (1L << (CLONE - 128)) | (1L << (CLOSE - 128)) | (1L << (COALESCE - 128)) | (1L << (CODE - 128)) | (1L << (COLLATION - 128)) | (1L << (COLUMNS - 128)) | (1L << (COLUMN_FORMAT - 128)) | (1L << (COLUMN_NAME - 128)) | (1L << (COMMENT - 128)) | (1L << (COMMIT - 128)) | (1L << (COMMITTED - 128)) | (1L << (COMPACT - 128)) | (1L << (COMPLETION - 128)) | (1L << (COMPONENT - 128)) | (1L << (COMPRESSED - 128)) | (1L << (COMPRESSION - 128)) | (1L << (CONCURRENT - 128)) | (1L << (CONNECTION - 128)) | (1L << (CONSISTENT - 128)) | (1L << (CONSTRAINT_CATALOG - 128)) | (1L << (CONSTRAINT_NAME - 128)) | (1L << (CONSTRAINT_SCHEMA - 128)) | (1L << (CONTAINS - 128)) | (1L << (CONTEXT - 128)) | (1L << (CONVERT - 128)) | (1L << (CPU - 128)) | (1L << (CREATE - 128)) | (1L << (CUME_DIST - 128)) | (1L << (CURRENT - 128)) | (1L << (CURRENT_DATE - 128)) | (1L << (CURRENT_TIME - 128)) | (1L << (CURRENT_TIMESTAMP - 128)) | (1L << (CURRENT_USER - 128)) | (1L << (CURSOR_NAME - 128)) | (1L << (DATA - 128)) | (1L << (DATABASE - 128)) | (1L << (DATAFILE - 128)) | (1L << (DATE - 128)) | (1L << (DATETIME - 128)) | (1L << (DAY - 128)) | (1L << (DEALLOCATE - 128)))) != 0) || ((((_la - 195)) & ~0x3f) == 0 && ((1L << (_la - 195)) & ((1L << (DEFAULT_AUTH - 195)) | (1L << (DEFINER - 195)) | (1L << (DEFINITION - 195)) | (1L << (DELAY_KEY_WRITE - 195)) | (1L << (DENSE_RANK - 195)) | (1L << (DESCRIPTION - 195)) | (1L << (DIAGNOSTICS - 195)) | (1L << (DIRECTORY - 195)) | (1L << (DISABLE - 195)) | (1L << (DISCARD - 195)) | (1L << (DISK - 195)) | (1L << (DO - 195)) | (1L << (DUMPFILE - 195)) | (1L << (DUPLICATE - 195)) | (1L << (DYNAMIC - 195)) | (1L << (ENABLE - 195)) | (1L << (ENCRYPTION - 195)) | (1L << (END - 195)) | (1L << (ENDS - 195)) | (1L << (ENFORCED - 195)) | (1L << (ENGINE - 195)) | (1L << (ENGINES - 195)) | (1L << (ENGINE_ATTRIBUTE - 195)) | (1L << (ENUM - 195)) | (1L << (ERROR - 195)) | (1L << (ERRORS - 195)) | (1L << (ESCAPE - 195)) | (1L << (EVENT - 195)) | (1L << (EVENTS - 195)) | (1L << (EVERY - 195)) | (1L << (EXCHANGE - 195)) | (1L << (EXCLUDE - 195)) | (1L << (EXECUTE - 195)) | (1L << (EXISTS - 195)) | (1L << (EXPANSION - 195)) | (1L << (EXPIRE - 195)) | (1L << (EXPORT - 195)) | (1L << (EXTENDED - 195)) | (1L << (EXTENT_SIZE - 195)) | (1L << (FAILED_LOGIN_ATTEMPTS - 195)) | (1L << (FALSE - 195)) | (1L << (FAST - 195)) | (1L << (FAULTS - 195)))) != 0) || ((((_la - 259)) & ~0x3f) == 0 && ((1L << (_la - 259)) & ((1L << (FILE - 259)) | (1L << (FILE_BLOCK_SIZE - 259)) | (1L << (FILTER - 259)) | (1L << (FIRST - 259)) | (1L << (FIRST_VALUE - 259)) | (1L << (FIXED - 259)) | (1L << (FLUSH - 259)) | (1L << (FOLLOWING - 259)) | (1L << (FOLLOWS - 259)) | (1L << (FORMAT - 259)) | (1L << (FOUND - 259)) | (1L << (FULL - 259)) | (1L << (GENERAL - 259)) | (1L << (GEOMETRY - 259)) | (1L << (GEOMETRYCOLLECTION - 259)) | (1L << (GET_FORMAT - 259)) | (1L << (GET_MASTER_PUBLIC_KEY - 259)) | (1L << (GLOBAL - 259)) | (1L << (GRANTS - 259)) | (1L << (GROUP_REPLICATION - 259)) | (1L << (HANDLER - 259)) | (1L << (HASH - 259)) | (1L << (HELP - 259)) | (1L << (HISTOGRAM - 259)) | (1L << (HISTORY - 259)) | (1L << (HOST - 259)) | (1L << (HOSTS - 259)) | (1L << (HOUR - 259)) | (1L << (IDENTIFIED - 259)) | (1L << (IF - 259)) | (1L << (IGNORE_SERVER_IDS - 259)) | (1L << (IMPORT - 259)) | (1L << (INACTIVE - 259)) | (1L << (INDEXES - 259)) | (1L << (INITIAL_SIZE - 259)) | (1L << (INSERT - 259)) | (1L << (INSERT_METHOD - 259)))) != 0) || ((((_la - 323)) & ~0x3f) == 0 && ((1L << (_la - 323)) & ((1L << (INSTALL - 323)) | (1L << (INSTANCE - 323)) | (1L << (INTERVAL - 323)) | (1L << (INVISIBLE - 323)) | (1L << (INVOKER - 323)) | (1L << (IO - 323)) | (1L << (IPC - 323)) | (1L << (ISOLATION - 323)) | (1L << (ISSUER - 323)) | (1L << (JSON - 323)) | (1L << (JSON_TABLE - 323)) | (1L << (JSON_VALUE - 323)) | (1L << (KEY - 323)) | (1L << (KEY_BLOCK_SIZE - 323)) | (1L << (LAG - 323)) | (1L << (LANGUAGE - 323)) | (1L << (LAST - 323)) | (1L << (LAST_VALUE - 323)) | (1L << (LEAD - 323)) | (1L << (LEAVES - 323)) | (1L << (LEFT - 323)) | (1L << (LESS - 323)) | (1L << (LEVEL - 323)) | (1L << (LINESTRING - 323)) | (1L << (LIST - 323)) | (1L << (LOCAL - 323)) | (1L << (LOCALTIME - 323)) | (1L << (LOCALTIMESTAMP - 323)) | (1L << (LOCKED - 323)) | (1L << (LOCKS - 323)) | (1L << (LOGFILE - 323)) | (1L << (LOGS - 323)) | (1L << (MASTER - 323)) | (1L << (MASTER_AUTO_POSITION - 323)))) != 0) || ((((_la - 387)) & ~0x3f) == 0 && ((1L << (_la - 387)) & ((1L << (MASTER_COMPRESSION_ALGORITHM - 387)) | (1L << (MASTER_CONNECT_RETRY - 387)) | (1L << (MASTER_DELAY - 387)) | (1L << (MASTER_HEARTBEAT_PERIOD - 387)) | (1L << (MASTER_HOST - 387)) | (1L << (MASTER_LOG_FILE - 387)) | (1L << (MASTER_LOG_POS - 387)) | (1L << (MASTER_PASSWORD - 387)) | (1L << (MASTER_PORT - 387)) | (1L << (MASTER_PUBLIC_KEY_PATH - 387)) | (1L << (MASTER_RETRY_COUNT - 387)) | (1L << (MASTER_SERVER_ID - 387)) | (1L << (MASTER_SSL - 387)) | (1L << (MASTER_SSL_CA - 387)) | (1L << (MASTER_SSL_CAPATH - 387)) | (1L << (MASTER_SSL_CERT - 387)) | (1L << (MASTER_SSL_CIPHER - 387)) | (1L << (MASTER_SSL_CRL - 387)) | (1L << (MASTER_SSL_CRLPATH - 387)) | (1L << (MASTER_SSL_KEY - 387)) | (1L << (MASTER_TLS_CIPHERSUITES - 387)) | (1L << (MASTER_TLS_VERSION - 387)) | (1L << (MASTER_USER - 387)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 387)) | (1L << (MATCH - 387)) | (1L << (MAXVALUE - 387)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 387)) | (1L << (MAX_QUERIES_PER_HOUR - 387)) | (1L << (MAX_ROWS - 387)) | (1L << (MAX_SIZE - 387)) | (1L << (MAX_UPDATES_PER_HOUR - 387)) | (1L << (MAX_USER_CONNECTIONS - 387)) | (1L << (MEDIUM - 387)) | (1L << (MEMBER - 387)) | (1L << (MEMORY - 387)) | (1L << (MERGE - 387)) | (1L << (MESSAGE_TEXT - 387)) | (1L << (MICROSECOND - 387)) | (1L << (MIGRATE - 387)) | (1L << (MINUTE - 387)) | (1L << (MIN_ROWS - 387)) | (1L << (MOD - 387)) | (1L << (MODE - 387)) | (1L << (MODIFY - 387)) | (1L << (MONTH - 387)) | (1L << (MULTILINESTRING - 387)) | (1L << (MULTIPOINT - 387)) | (1L << (MULTIPOLYGON - 387)) | (1L << (MUTEX - 387)) | (1L << (MYSQL_ERRNO - 387)) | (1L << (NAME - 387)) | (1L << (NAMES - 387)) | (1L << (NATIONAL - 387)) | (1L << (NCHAR - 387)) | (1L << (NDBCLUSTER - 387)))) != 0) || ((((_la - 451)) & ~0x3f) == 0 && ((1L << (_la - 451)) & ((1L << (NESTED - 451)) | (1L << (NETWORK_NAMESPACE - 451)) | (1L << (NEVER - 451)) | (1L << (NEW - 451)) | (1L << (NEXT - 451)) | (1L << (NO - 451)) | (1L << (NODEGROUP - 451)) | (1L << (NONE - 451)) | (1L << (NOT - 451)) | (1L << (NOWAIT - 451)) | (1L << (NO_WAIT - 451)) | (1L << (NTH_VALUE - 451)) | (1L << (NTILE - 451)) | (1L << (NULL - 451)) | (1L << (NULLS - 451)) | (1L << (NUMBER - 451)) | (1L << (NVARCHAR - 451)) | (1L << (OFF - 451)) | (1L << (OFFSET - 451)) | (1L << (OJ - 451)) | (1L << (OLD - 451)) | (1L << (ONE - 451)) | (1L << (ONLY - 451)) | (1L << (OPEN - 451)) | (1L << (OPTIONAL - 451)) | (1L << (OPTIONS - 451)) | (1L << (ORDINALITY - 451)) | (1L << (ORGANIZATION - 451)) | (1L << (OTHERS - 451)) | (1L << (OWNER - 451)) | (1L << (PACK_KEYS - 451)) | (1L << (PAGE - 451)) | (1L << (PARSER - 451)) | (1L << (PARTIAL - 451)) | (1L << (PARTITIONING - 451)) | (1L << (PARTITIONS - 451)) | (1L << (PASSWORD - 451)) | (1L << (PASSWORD_LOCK_TIME - 451)) | (1L << (PATH - 451)) | (1L << (PERCENT_RANK - 451)) | (1L << (PERSIST - 451)) | (1L << (PERSIST_ONLY - 451)) | (1L << (PHASE - 451)) | (1L << (PLUGIN - 451)) | (1L << (PLUGINS - 451)) | (1L << (PLUGIN_DIR - 451)) | (1L << (POINT - 451)) | (1L << (POLYGON - 451)) | (1L << (PORT - 451)))) != 0) || ((((_la - 515)) & ~0x3f) == 0 && ((1L << (_la - 515)) & ((1L << (PRECEDES - 515)) | (1L << (PRECEDING - 515)) | (1L << (PREPARE - 515)) | (1L << (PRESERVE - 515)) | (1L << (PREV - 515)) | (1L << (PRIMARY - 515)) | (1L << (PRIVILEGES - 515)) | (1L << (PRIVILEGE_CHECKS_USER - 515)) | (1L << (PROCESS - 515)) | (1L << (PROCESSLIST - 515)) | (1L << (PROFILE - 515)) | (1L << (PROFILES - 515)) | (1L << (PROXY - 515)) | (1L << (QUARTER - 515)) | (1L << (QUERY - 515)) | (1L << (QUICK - 515)) | (1L << (RANDOM - 515)) | (1L << (RANK - 515)) | (1L << (READ_ONLY - 515)) | (1L << (REBUILD - 515)) | (1L << (RECOVER - 515)) | (1L << (REDO_BUFFER_SIZE - 515)) | (1L << (REDUNDANT - 515)) | (1L << (REFERENCE - 515)) | (1L << (RELAY - 515)) | (1L << (RELAYLOG - 515)) | (1L << (RELAY_LOG_FILE - 515)) | (1L << (RELAY_LOG_POS - 515)) | (1L << (RELAY_THREAD - 515)) | (1L << (RELOAD - 515)) | (1L << (REMOVE - 515)) | (1L << (REORGANIZE - 515)) | (1L << (REPAIR - 515)) | (1L << (REPEAT - 515)) | (1L << (REPEATABLE - 515)) | (1L << (REPLACE - 515)) | (1L << (REPLICATE_DO_DB - 515)) | (1L << (REPLICATE_DO_TABLE - 515)) | (1L << (REPLICATE_IGNORE_DB - 515)) | (1L << (REPLICATE_IGNORE_TABLE - 515)) | (1L << (REPLICATE_REWRITE_DB - 515)) | (1L << (REPLICATE_WILD_DO_TABLE - 515)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 515)) | (1L << (REPLICATION - 515)) | (1L << (REQUIRE_ROW_FORMAT - 515)) | (1L << (RESET - 515)) | (1L << (RESOURCE - 515)))) != 0) || ((((_la - 579)) & ~0x3f) == 0 && ((1L << (_la - 579)) & ((1L << (RESPECT - 579)) | (1L << (RESTART - 579)) | (1L << (RESTORE - 579)) | (1L << (RESUME - 579)) | (1L << (RETAIN - 579)) | (1L << (RETURNED_SQLSTATE - 579)) | (1L << (RETURNING - 579)) | (1L << (RETURNS - 579)) | (1L << (REUSE - 579)) | (1L << (REVERSE - 579)) | (1L << (RIGHT - 579)) | (1L << (ROLE - 579)) | (1L << (ROLLBACK - 579)) | (1L << (ROLLUP - 579)) | (1L << (ROTATE - 579)) | (1L << (ROUTINE - 579)) | (1L << (ROW - 579)) | (1L << (ROW_COUNT - 579)) | (1L << (ROW_FORMAT - 579)) | (1L << (ROW_NUMBER - 579)) | (1L << (RTREE - 579)) | (1L << (SAVEPOINT - 579)) | (1L << (SCHEDULE - 579)) | (1L << (SCHEMA - 579)) | (1L << (SCHEMA_NAME - 579)) | (1L << (SECOND - 579)) | (1L << (SECONDARY - 579)) | (1L << (SECONDARY_ENGINE - 579)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 579)) | (1L << (SECONDARY_LOAD - 579)) | (1L << (SECONDARY_UNLOAD - 579)) | (1L << (SECURITY - 579)) | (1L << (SERIAL - 579)) | (1L << (SERIALIZABLE - 579)) | (1L << (SERVER - 579)) | (1L << (SESSION - 579)) | (1L << (SHARE - 579)) | (1L << (SHUTDOWN - 579)) | (1L << (SIGNED - 579)) | (1L << (SIMPLE - 579)) | (1L << (SLAVE - 579)) | (1L << (SLOW - 579)) | (1L << (SNAPSHOT - 579)) | (1L << (SOCKET - 579)) | (1L << (SONAME - 579)) | (1L << (SOUNDS - 579)) | (1L << (SOURCE - 579)))) != 0) || ((((_la - 647)) & ~0x3f) == 0 && ((1L << (_la - 647)) & ((1L << (SQL_AFTER_GTIDS - 647)) | (1L << (SQL_AFTER_MTS_GAPS - 647)) | (1L << (SQL_BEFORE_GTIDS - 647)) | (1L << (SQL_BUFFER_RESULT - 647)) | (1L << (SQL_NO_CACHE - 647)) | (1L << (SQL_THREAD - 647)) | (1L << (SRID - 647)) | (1L << (STACKED - 647)) | (1L << (START - 647)) | (1L << (STARTS - 647)) | (1L << (STATS_AUTO_RECALC - 647)) | (1L << (STATS_PERSISTENT - 647)) | (1L << (STATS_SAMPLE_PAGES - 647)) | (1L << (STATUS - 647)) | (1L << (STOP - 647)) | (1L << (STORAGE - 647)) | (1L << (STREAM - 647)) | (1L << (STRING - 647)) | (1L << (SUBCLASS_ORIGIN - 647)) | (1L << (SUBJECT - 647)) | (1L << (SUBPARTITION - 647)) | (1L << (SUBPARTITIONS - 647)) | (1L << (SUPER - 647)) | (1L << (SUSPEND - 647)) | (1L << (SWAPS - 647)) | (1L << (SWITCHES - 647)) | (1L << (TABLES - 647)) | (1L << (TABLESPACE - 647)) | (1L << (TABLE_CHECKSUM - 647)) | (1L << (TABLE_NAME - 647)) | (1L << (TEMPORARY - 647)) | (1L << (TEMPTABLE - 647)) | (1L << (TEXT - 647)) | (1L << (THAN - 647)) | (1L << (THREAD_PRIORITY - 647)) | (1L << (TIES - 647)) | (1L << (TIME - 647)) | (1L << (TIMESTAMP - 647)) | (1L << (TIMESTAMP_ADD - 647)) | (1L << (TIMESTAMP_DIFF - 647)) | (1L << (TLS - 647)) | (1L << (TRANSACTION - 647)) | (1L << (TRIGGERS - 647)) | (1L << (TRUE - 647)) | (1L << (TRUNCATE - 647)) | (1L << (TYPE - 647)) | (1L << (TYPES - 647)))) != 0) || ((((_la - 711)) & ~0x3f) == 0 && ((1L << (_la - 711)) & ((1L << (UNBOUNDED - 711)) | (1L << (UNCOMMITTED - 711)) | (1L << (UNDEFINED - 711)) | (1L << (UNDOFILE - 711)) | (1L << (UNDO_BUFFER_SIZE - 711)) | (1L << (UNICODE - 711)) | (1L << (UNINSTALL - 711)) | (1L << (UNKNOWN - 711)) | (1L << (UNTIL - 711)) | (1L << (UPGRADE - 711)) | (1L << (USER - 711)) | (1L << (USER_RESOURCES - 711)) | (1L << (USE_FRM - 711)) | (1L << (UTC_DATE - 711)) | (1L << (UTC_TIME - 711)) | (1L << (UTC_TIMESTAMP - 711)) | (1L << (VALIDATION - 711)) | (1L << (VALUE - 711)) | (1L << (VALUES - 711)) | (1L << (VARIABLES - 711)) | (1L << (VCPU - 711)) | (1L << (VIEW - 711)) | (1L << (VISIBLE - 711)) | (1L << (WAIT - 711)) | (1L << (WARNINGS - 711)) | (1L << (WEEK - 711)) | (1L << (WEIGHT_STRING - 711)) | (1L << (WITHOUT - 711)) | (1L << (WORK - 711)) | (1L << (WRAPPER - 711)) | (1L << (X509 - 711)) | (1L << (XA - 711)) | (1L << (XID - 711)) | (1L << (XML - 711)) | (1L << (YEAR - 711)) | (1L << (JSON_ARRAY - 711)) | (1L << (JSON_ARRAY_APPEND - 711)) | (1L << (JSON_ARRAY_INSERT - 711)) | (1L << (JSON_CONTAINS - 711)) | (1L << (JSON_CONTAINS_PATH - 711)) | (1L << (JSON_DEPTH - 711)))) != 0) || ((((_la - 775)) & ~0x3f) == 0 && ((1L << (_la - 775)) & ((1L << (JSON_EXTRACT - 775)) | (1L << (JSON_INSERT - 775)) | (1L << (JSON_KEYS - 775)) | (1L << (JSON_LENGTH - 775)) | (1L << (JSON_MERGE - 775)) | (1L << (JSON_MERGE_PATCH - 775)) | (1L << (JSON_MERGE_PRESERVE - 775)) | (1L << (JSON_OBJECT - 775)) | (1L << (JSON_OVERLAPS - 775)) | (1L << (JSON_PRETTY - 775)) | (1L << (JSON_QUOTE - 775)) | (1L << (JSON_REMOVE - 775)) | (1L << (JSON_REPLACE - 775)) | (1L << (JSON_SCHEMA_VALID - 775)) | (1L << (JSON_SCHEMA_VALIDATION_REPORT - 775)) | (1L << (JSON_SEARCH - 775)) | (1L << (JSON_SET - 775)) | (1L << (JSON_STORAGE_FREE - 775)) | (1L << (JSON_STORAGE_SIZE - 775)) | (1L << (JSON_TYPE - 775)) | (1L << (JSON_UNQUOTE - 775)) | (1L << (JSON_VALID - 775)) | (1L << (SINGLE_QUOTED_TEXT - 775)) | (1L << (DOUBLE_QUOTED_TEXT - 775)) | (1L << (NCHAR_TEXT - 775)) | (1L << (UNDERSCORE_CHARSET - 775)) | (1L << (NUMBER_ - 775)) | (1L << (HEX_DIGIT_ - 775)) | (1L << (BIT_NUM_ - 775)) | (1L << (IDENTIFIER_ - 775)))) != 0)) {
				{
				setState(5663);
				simpleExpr(0);
				}
			}

			setState(5667); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(5666);
				caseWhen();
				}
				}
				setState(5669); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==WHEN );
			setState(5672);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ELSE) {
				{
				setState(5671);
				caseElse();
				}
			}

			setState(5674);
			match(END);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DatetimeExprContext extends ParserRuleContext {
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public DatetimeExprContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_datetimeExpr; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDatetimeExpr(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DatetimeExprContext datetimeExpr() throws RecognitionException {
		DatetimeExprContext _localctx = new DatetimeExprContext(_ctx, getState());
		enterRule(_localctx, 734, RULE_datetimeExpr);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5676);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BinaryLogFileIndexNumberContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public BinaryLogFileIndexNumberContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_binaryLogFileIndexNumber; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBinaryLogFileIndexNumber(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BinaryLogFileIndexNumberContext binaryLogFileIndexNumber() throws RecognitionException {
		BinaryLogFileIndexNumberContext _localctx = new BinaryLogFileIndexNumberContext(_ctx, getState());
		enterRule(_localctx, 736, RULE_binaryLogFileIndexNumber);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5678);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseWhenContext extends ParserRuleContext {
		public TerminalNode WHEN() { return getToken(MySQLStatementParser.WHEN, 0); }
		public List expr() {
			return getRuleContexts(ExprContext.class);
		}
		public ExprContext expr(int i) {
			return getRuleContext(ExprContext.class,i);
		}
		public TerminalNode THEN() { return getToken(MySQLStatementParser.THEN, 0); }
		public CaseWhenContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseWhen; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCaseWhen(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseWhenContext caseWhen() throws RecognitionException {
		CaseWhenContext _localctx = new CaseWhenContext(_ctx, getState());
		enterRule(_localctx, 738, RULE_caseWhen);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5680);
			match(WHEN);
			setState(5681);
			expr(0);
			setState(5682);
			match(THEN);
			setState(5683);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CaseElseContext extends ParserRuleContext {
		public TerminalNode ELSE() { return getToken(MySQLStatementParser.ELSE, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public CaseElseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_caseElse; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCaseElse(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CaseElseContext caseElse() throws RecognitionException {
		CaseElseContext _localctx = new CaseElseContext(_ctx, getState());
		enterRule(_localctx, 740, RULE_caseElse);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5685);
			match(ELSE);
			setState(5686);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalExpressionContext extends ParserRuleContext {
		public TerminalNode INTERVAL() { return getToken(MySQLStatementParser.INTERVAL, 0); }
		public IntervalValueContext intervalValue() {
			return getRuleContext(IntervalValueContext.class,0);
		}
		public IntervalExpressionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalExpression; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIntervalExpression(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalExpressionContext intervalExpression() throws RecognitionException {
		IntervalExpressionContext _localctx = new IntervalExpressionContext(_ctx, getState());
		enterRule(_localctx, 742, RULE_intervalExpression);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5688);
			match(INTERVAL);
			setState(5689);
			intervalValue();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalValueContext extends ParserRuleContext {
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public IntervalUnitContext intervalUnit() {
			return getRuleContext(IntervalUnitContext.class,0);
		}
		public IntervalValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIntervalValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalValueContext intervalValue() throws RecognitionException {
		IntervalValueContext _localctx = new IntervalValueContext(_ctx, getState());
		enterRule(_localctx, 744, RULE_intervalValue);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5691);
			expr(0);
			setState(5692);
			intervalUnit();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IntervalUnitContext extends ParserRuleContext {
		public TerminalNode MICROSECOND() { return getToken(MySQLStatementParser.MICROSECOND, 0); }
		public TerminalNode SECOND() { return getToken(MySQLStatementParser.SECOND, 0); }
		public TerminalNode MINUTE() { return getToken(MySQLStatementParser.MINUTE, 0); }
		public TerminalNode HOUR() { return getToken(MySQLStatementParser.HOUR, 0); }
		public TerminalNode DAY() { return getToken(MySQLStatementParser.DAY, 0); }
		public TerminalNode WEEK() { return getToken(MySQLStatementParser.WEEK, 0); }
		public TerminalNode MONTH() { return getToken(MySQLStatementParser.MONTH, 0); }
		public TerminalNode QUARTER() { return getToken(MySQLStatementParser.QUARTER, 0); }
		public TerminalNode YEAR() { return getToken(MySQLStatementParser.YEAR, 0); }
		public TerminalNode SECOND_MICROSECOND() { return getToken(MySQLStatementParser.SECOND_MICROSECOND, 0); }
		public TerminalNode MINUTE_MICROSECOND() { return getToken(MySQLStatementParser.MINUTE_MICROSECOND, 0); }
		public TerminalNode MINUTE_SECOND() { return getToken(MySQLStatementParser.MINUTE_SECOND, 0); }
		public TerminalNode HOUR_MICROSECOND() { return getToken(MySQLStatementParser.HOUR_MICROSECOND, 0); }
		public TerminalNode HOUR_SECOND() { return getToken(MySQLStatementParser.HOUR_SECOND, 0); }
		public TerminalNode HOUR_MINUTE() { return getToken(MySQLStatementParser.HOUR_MINUTE, 0); }
		public TerminalNode DAY_MICROSECOND() { return getToken(MySQLStatementParser.DAY_MICROSECOND, 0); }
		public TerminalNode DAY_SECOND() { return getToken(MySQLStatementParser.DAY_SECOND, 0); }
		public TerminalNode DAY_MINUTE() { return getToken(MySQLStatementParser.DAY_MINUTE, 0); }
		public TerminalNode DAY_HOUR() { return getToken(MySQLStatementParser.DAY_HOUR, 0); }
		public TerminalNode YEAR_MONTH() { return getToken(MySQLStatementParser.YEAR_MONTH, 0); }
		public IntervalUnitContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_intervalUnit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIntervalUnit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IntervalUnitContext intervalUnit() throws RecognitionException {
		IntervalUnitContext _localctx = new IntervalUnitContext(_ctx, getState());
		enterRule(_localctx, 746, RULE_intervalUnit);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5694);
			_la = _input.LA(1);
			if ( !(((((_la - 185)) & ~0x3f) == 0 && ((1L << (_la - 185)) & ((1L << (DAY - 185)) | (1L << (DAY_HOUR - 185)) | (1L << (DAY_MICROSECOND - 185)) | (1L << (DAY_MINUTE - 185)) | (1L << (DAY_SECOND - 185)))) != 0) || ((((_la - 303)) & ~0x3f) == 0 && ((1L << (_la - 303)) & ((1L << (HOUR - 303)) | (1L << (HOUR_MICROSECOND - 303)) | (1L << (HOUR_MINUTE - 303)) | (1L << (HOUR_SECOND - 303)))) != 0) || ((((_la - 428)) & ~0x3f) == 0 && ((1L << (_la - 428)) & ((1L << (MICROSECOND - 428)) | (1L << (MINUTE - 428)) | (1L << (MINUTE_MICROSECOND - 428)) | (1L << (MINUTE_SECOND - 428)) | (1L << (MONTH - 428)))) != 0) || _la==QUARTER || _la==SECOND || _la==SECOND_MICROSECOND || ((((_la - 750)) & ~0x3f) == 0 && ((1L << (_la - 750)) & ((1L << (WEEK - 750)) | (1L << (YEAR - 750)) | (1L << (YEAR_MONTH - 750)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrderByClauseContext extends ParserRuleContext {
		public TerminalNode ORDER() { return getToken(MySQLStatementParser.ORDER, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public List orderByItem() {
			return getRuleContexts(OrderByItemContext.class);
		}
		public OrderByItemContext orderByItem(int i) {
			return getRuleContext(OrderByItemContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public OrderByClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orderByClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOrderByClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrderByClauseContext orderByClause() throws RecognitionException {
		OrderByClauseContext _localctx = new OrderByClauseContext(_ctx, getState());
		enterRule(_localctx, 748, RULE_orderByClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5696);
			match(ORDER);
			setState(5697);
			match(BY);
			setState(5698);
			orderByItem();
			setState(5703);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5699);
				match(COMMA_);
				setState(5700);
				orderByItem();
				}
				}
				setState(5705);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OrderByItemContext extends ParserRuleContext {
		public NumberLiteralsContext numberLiterals() {
			return getRuleContext(NumberLiteralsContext.class,0);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public DirectionContext direction() {
			return getRuleContext(DirectionContext.class,0);
		}
		public OrderByItemContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_orderByItem; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOrderByItem(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OrderByItemContext orderByItem() throws RecognitionException {
		OrderByItemContext _localctx = new OrderByItemContext(_ctx, getState());
		enterRule(_localctx, 750, RULE_orderByItem);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5708);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,706,_ctx) ) {
			case 1:
				{
				setState(5706);
				numberLiterals();
				}
				break;
			case 2:
				{
				setState(5707);
				expr(0);
				}
				break;
			}
			setState(5711);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,707,_ctx) ) {
			case 1:
				{
				setState(5710);
				direction();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DataTypeContext extends ParserRuleContext {
		public Token dataTypeName;
		public TerminalNode INTEGER() { return getToken(MySQLStatementParser.INTEGER, 0); }
		public TerminalNode INT() { return getToken(MySQLStatementParser.INT, 0); }
		public TerminalNode TINYINT() { return getToken(MySQLStatementParser.TINYINT, 0); }
		public TerminalNode SMALLINT() { return getToken(MySQLStatementParser.SMALLINT, 0); }
		public TerminalNode MIDDLEINT() { return getToken(MySQLStatementParser.MIDDLEINT, 0); }
		public TerminalNode MEDIUMINT() { return getToken(MySQLStatementParser.MEDIUMINT, 0); }
		public TerminalNode BIGINT() { return getToken(MySQLStatementParser.BIGINT, 0); }
		public FieldLengthContext fieldLength() {
			return getRuleContext(FieldLengthContext.class,0);
		}
		public FieldOptionsContext fieldOptions() {
			return getRuleContext(FieldOptionsContext.class,0);
		}
		public TerminalNode REAL() { return getToken(MySQLStatementParser.REAL, 0); }
		public TerminalNode DOUBLE() { return getToken(MySQLStatementParser.DOUBLE, 0); }
		public PrecisionContext precision() {
			return getRuleContext(PrecisionContext.class,0);
		}
		public TerminalNode PRECISION() { return getToken(MySQLStatementParser.PRECISION, 0); }
		public TerminalNode FLOAT() { return getToken(MySQLStatementParser.FLOAT, 0); }
		public TerminalNode DECIMAL() { return getToken(MySQLStatementParser.DECIMAL, 0); }
		public TerminalNode NUMERIC() { return getToken(MySQLStatementParser.NUMERIC, 0); }
		public TerminalNode FIXED() { return getToken(MySQLStatementParser.FIXED, 0); }
		public TerminalNode BIT() { return getToken(MySQLStatementParser.BIT, 0); }
		public TerminalNode BOOL() { return getToken(MySQLStatementParser.BOOL, 0); }
		public TerminalNode BOOLEAN() { return getToken(MySQLStatementParser.BOOLEAN, 0); }
		public TerminalNode CHAR() { return getToken(MySQLStatementParser.CHAR, 0); }
		public CharsetWithOptBinaryContext charsetWithOptBinary() {
			return getRuleContext(CharsetWithOptBinaryContext.class,0);
		}
		public TerminalNode NCHAR() { return getToken(MySQLStatementParser.NCHAR, 0); }
		public TerminalNode NATIONAL() { return getToken(MySQLStatementParser.NATIONAL, 0); }
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode SIGNED() { return getToken(MySQLStatementParser.SIGNED, 0); }
		public TerminalNode VARYING() { return getToken(MySQLStatementParser.VARYING, 0); }
		public TerminalNode VARCHAR() { return getToken(MySQLStatementParser.VARCHAR, 0); }
		public TerminalNode NVARCHAR() { return getToken(MySQLStatementParser.NVARCHAR, 0); }
		public TerminalNode VARBINARY() { return getToken(MySQLStatementParser.VARBINARY, 0); }
		public TerminalNode YEAR() { return getToken(MySQLStatementParser.YEAR, 0); }
		public TerminalNode DATE() { return getToken(MySQLStatementParser.DATE, 0); }
		public TerminalNode TIME() { return getToken(MySQLStatementParser.TIME, 0); }
		public TypeDatetimePrecisionContext typeDatetimePrecision() {
			return getRuleContext(TypeDatetimePrecisionContext.class,0);
		}
		public TerminalNode UNSIGNED() { return getToken(MySQLStatementParser.UNSIGNED, 0); }
		public TerminalNode TIMESTAMP() { return getToken(MySQLStatementParser.TIMESTAMP, 0); }
		public TerminalNode DATETIME() { return getToken(MySQLStatementParser.DATETIME, 0); }
		public TerminalNode TINYBLOB() { return getToken(MySQLStatementParser.TINYBLOB, 0); }
		public TerminalNode BLOB() { return getToken(MySQLStatementParser.BLOB, 0); }
		public TerminalNode MEDIUMBLOB() { return getToken(MySQLStatementParser.MEDIUMBLOB, 0); }
		public TerminalNode LONGBLOB() { return getToken(MySQLStatementParser.LONGBLOB, 0); }
		public TerminalNode LONG() { return getToken(MySQLStatementParser.LONG, 0); }
		public TerminalNode TINYTEXT() { return getToken(MySQLStatementParser.TINYTEXT, 0); }
		public TerminalNode TEXT() { return getToken(MySQLStatementParser.TEXT, 0); }
		public TerminalNode MEDIUMTEXT() { return getToken(MySQLStatementParser.MEDIUMTEXT, 0); }
		public TerminalNode LONGTEXT() { return getToken(MySQLStatementParser.LONGTEXT, 0); }
		public StringListContext stringList() {
			return getRuleContext(StringListContext.class,0);
		}
		public TerminalNode ENUM() { return getToken(MySQLStatementParser.ENUM, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode SERIAL() { return getToken(MySQLStatementParser.SERIAL, 0); }
		public TerminalNode JSON() { return getToken(MySQLStatementParser.JSON, 0); }
		public TerminalNode GEOMETRY() { return getToken(MySQLStatementParser.GEOMETRY, 0); }
		public TerminalNode GEOMETRYCOLLECTION() { return getToken(MySQLStatementParser.GEOMETRYCOLLECTION, 0); }
		public TerminalNode POINT() { return getToken(MySQLStatementParser.POINT, 0); }
		public TerminalNode MULTIPOINT() { return getToken(MySQLStatementParser.MULTIPOINT, 0); }
		public TerminalNode LINESTRING() { return getToken(MySQLStatementParser.LINESTRING, 0); }
		public TerminalNode MULTILINESTRING() { return getToken(MySQLStatementParser.MULTILINESTRING, 0); }
		public TerminalNode POLYGON() { return getToken(MySQLStatementParser.POLYGON, 0); }
		public TerminalNode MULTIPOLYGON() { return getToken(MySQLStatementParser.MULTIPOLYGON, 0); }
		public DataTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dataType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDataType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DataTypeContext dataType() throws RecognitionException {
		DataTypeContext _localctx = new DataTypeContext(_ctx, getState());
		enterRule(_localctx, 752, RULE_dataType);
		int _la;
		try {
			setState(5872);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,745,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5713);
				((DataTypeContext)_localctx).dataTypeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BIGINT || _la==INT || _la==INTEGER || _la==MEDIUMINT || _la==MIDDLEINT || _la==SMALLINT || _la==TINYINT) ) {
					((DataTypeContext)_localctx).dataTypeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5715);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,708,_ctx) ) {
				case 1:
					{
					setState(5714);
					fieldLength();
					}
					break;
				}
				setState(5718);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,709,_ctx) ) {
				case 1:
					{
					setState(5717);
					fieldOptions();
					}
					break;
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5725);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case REAL:
					{
					setState(5720);
					((DataTypeContext)_localctx).dataTypeName = match(REAL);
					}
					break;
				case DOUBLE:
					{
					setState(5721);
					((DataTypeContext)_localctx).dataTypeName = match(DOUBLE);
					setState(5723);
					_errHandler.sync(this);
					switch ( getInterpreter().adaptivePredict(_input,710,_ctx) ) {
					case 1:
						{
						setState(5722);
						match(PRECISION);
						}
						break;
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5728);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,712,_ctx) ) {
				case 1:
					{
					setState(5727);
					precision();
					}
					break;
				}
				setState(5731);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,713,_ctx) ) {
				case 1:
					{
					setState(5730);
					fieldOptions();
					}
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5733);
				((DataTypeContext)_localctx).dataTypeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==DECIMAL || _la==FIXED || _la==FLOAT || _la==NUMERIC) ) {
					((DataTypeContext)_localctx).dataTypeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5736);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,714,_ctx) ) {
				case 1:
					{
					setState(5734);
					fieldLength();
					}
					break;
				case 2:
					{
					setState(5735);
					precision();
					}
					break;
				}
				setState(5739);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,715,_ctx) ) {
				case 1:
					{
					setState(5738);
					fieldOptions();
					}
					break;
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5741);
				((DataTypeContext)_localctx).dataTypeName = match(BIT);
				setState(5743);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,716,_ctx) ) {
				case 1:
					{
					setState(5742);
					fieldLength();
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5745);
				((DataTypeContext)_localctx).dataTypeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==BOOL || _la==BOOLEAN) ) {
					((DataTypeContext)_localctx).dataTypeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(5746);
				((DataTypeContext)_localctx).dataTypeName = match(CHAR);
				setState(5748);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,717,_ctx) ) {
				case 1:
					{
					setState(5747);
					fieldLength();
					}
					break;
				}
				setState(5751);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,718,_ctx) ) {
				case 1:
					{
					setState(5750);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(5756);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case NCHAR:
					{
					setState(5753);
					((DataTypeContext)_localctx).dataTypeName = match(NCHAR);
					}
					break;
				case NATIONAL:
					{
					setState(5754);
					((DataTypeContext)_localctx).dataTypeName = match(NATIONAL);
					setState(5755);
					match(CHAR);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5759);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,720,_ctx) ) {
				case 1:
					{
					setState(5758);
					fieldLength();
					}
					break;
				}
				setState(5762);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,721,_ctx) ) {
				case 1:
					{
					setState(5761);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(5764);
				((DataTypeContext)_localctx).dataTypeName = match(SIGNED);
				setState(5766);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,722,_ctx) ) {
				case 1:
					{
					setState(5765);
					_la = _input.LA(1);
					if ( !(_la==INT || _la==INTEGER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(5768);
				((DataTypeContext)_localctx).dataTypeName = match(BINARY);
				setState(5770);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,723,_ctx) ) {
				case 1:
					{
					setState(5769);
					fieldLength();
					}
					break;
				}
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(5775);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case CHAR:
					{
					setState(5772);
					((DataTypeContext)_localctx).dataTypeName = match(CHAR);
					setState(5773);
					match(VARYING);
					}
					break;
				case VARCHAR:
					{
					setState(5774);
					((DataTypeContext)_localctx).dataTypeName = match(VARCHAR);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5777);
				fieldLength();
				setState(5779);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,725,_ctx) ) {
				case 1:
					{
					setState(5778);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(5791);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,726,_ctx) ) {
				case 1:
					{
					setState(5781);
					((DataTypeContext)_localctx).dataTypeName = match(NATIONAL);
					setState(5782);
					match(VARCHAR);
					}
					break;
				case 2:
					{
					setState(5783);
					((DataTypeContext)_localctx).dataTypeName = match(NVARCHAR);
					}
					break;
				case 3:
					{
					setState(5784);
					((DataTypeContext)_localctx).dataTypeName = match(NCHAR);
					setState(5785);
					match(VARCHAR);
					}
					break;
				case 4:
					{
					setState(5786);
					((DataTypeContext)_localctx).dataTypeName = match(NATIONAL);
					setState(5787);
					match(CHAR);
					setState(5788);
					match(VARYING);
					}
					break;
				case 5:
					{
					setState(5789);
					((DataTypeContext)_localctx).dataTypeName = match(NCHAR);
					setState(5790);
					match(VARYING);
					}
					break;
				}
				setState(5793);
				fieldLength();
				setState(5795);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,727,_ctx) ) {
				case 1:
					{
					setState(5794);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(5797);
				((DataTypeContext)_localctx).dataTypeName = match(VARBINARY);
				setState(5799);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,728,_ctx) ) {
				case 1:
					{
					setState(5798);
					fieldLength();
					}
					break;
				}
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(5801);
				((DataTypeContext)_localctx).dataTypeName = match(YEAR);
				setState(5803);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,729,_ctx) ) {
				case 1:
					{
					setState(5802);
					fieldLength();
					}
					break;
				}
				setState(5806);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,730,_ctx) ) {
				case 1:
					{
					setState(5805);
					fieldOptions();
					}
					break;
				}
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(5808);
				((DataTypeContext)_localctx).dataTypeName = match(DATE);
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(5809);
				((DataTypeContext)_localctx).dataTypeName = match(TIME);
				setState(5811);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,731,_ctx) ) {
				case 1:
					{
					setState(5810);
					typeDatetimePrecision();
					}
					break;
				}
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(5813);
				((DataTypeContext)_localctx).dataTypeName = match(UNSIGNED);
				setState(5815);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,732,_ctx) ) {
				case 1:
					{
					setState(5814);
					_la = _input.LA(1);
					if ( !(_la==INT || _la==INTEGER) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					break;
				}
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(5817);
				((DataTypeContext)_localctx).dataTypeName = match(TIMESTAMP);
				setState(5819);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,733,_ctx) ) {
				case 1:
					{
					setState(5818);
					typeDatetimePrecision();
					}
					break;
				}
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(5821);
				((DataTypeContext)_localctx).dataTypeName = match(DATETIME);
				setState(5823);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,734,_ctx) ) {
				case 1:
					{
					setState(5822);
					typeDatetimePrecision();
					}
					break;
				}
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(5825);
				((DataTypeContext)_localctx).dataTypeName = match(TINYBLOB);
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(5826);
				((DataTypeContext)_localctx).dataTypeName = match(BLOB);
				setState(5828);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,735,_ctx) ) {
				case 1:
					{
					setState(5827);
					fieldLength();
					}
					break;
				}
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(5830);
				((DataTypeContext)_localctx).dataTypeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(_la==LONGBLOB || _la==MEDIUMBLOB) ) {
					((DataTypeContext)_localctx).dataTypeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(5831);
				((DataTypeContext)_localctx).dataTypeName = match(LONG);
				setState(5832);
				match(VARBINARY);
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(5833);
				((DataTypeContext)_localctx).dataTypeName = match(LONG);
				setState(5837);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,736,_ctx) ) {
				case 1:
					{
					setState(5834);
					match(CHAR);
					setState(5835);
					match(VARYING);
					}
					break;
				case 2:
					{
					setState(5836);
					match(VARCHAR);
					}
					break;
				}
				setState(5840);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,737,_ctx) ) {
				case 1:
					{
					setState(5839);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(5842);
				((DataTypeContext)_localctx).dataTypeName = match(TINYTEXT);
				setState(5844);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,738,_ctx) ) {
				case 1:
					{
					setState(5843);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(5846);
				((DataTypeContext)_localctx).dataTypeName = match(TEXT);
				setState(5848);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,739,_ctx) ) {
				case 1:
					{
					setState(5847);
					fieldLength();
					}
					break;
				}
				setState(5851);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,740,_ctx) ) {
				case 1:
					{
					setState(5850);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(5853);
				((DataTypeContext)_localctx).dataTypeName = match(MEDIUMTEXT);
				setState(5855);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,741,_ctx) ) {
				case 1:
					{
					setState(5854);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(5857);
				((DataTypeContext)_localctx).dataTypeName = match(LONGTEXT);
				setState(5859);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,742,_ctx) ) {
				case 1:
					{
					setState(5858);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(5861);
				((DataTypeContext)_localctx).dataTypeName = match(ENUM);
				setState(5862);
				stringList();
				setState(5864);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,743,_ctx) ) {
				case 1:
					{
					setState(5863);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(5866);
				((DataTypeContext)_localctx).dataTypeName = match(SET);
				setState(5867);
				stringList();
				setState(5869);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,744,_ctx) ) {
				case 1:
					{
					setState(5868);
					charsetWithOptBinary();
					}
					break;
				}
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(5871);
				((DataTypeContext)_localctx).dataTypeName = _input.LT(1);
				_la = _input.LA(1);
				if ( !(((((_la - 282)) & ~0x3f) == 0 && ((1L << (_la - 282)) & ((1L << (GEOMETRY - 282)) | (1L << (GEOMETRYCOLLECTION - 282)) | (1L << (JSON - 282)))) != 0) || _la==LINESTRING || ((((_la - 440)) & ~0x3f) == 0 && ((1L << (_la - 440)) & ((1L << (MULTILINESTRING - 440)) | (1L << (MULTIPOINT - 440)) | (1L << (MULTIPOLYGON - 440)))) != 0) || _la==POINT || _la==POLYGON || _la==SERIAL) ) {
					((DataTypeContext)_localctx).dataTypeName = (Token)_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StringListContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List textString() {
			return getRuleContexts(TextStringContext.class);
		}
		public TextStringContext textString(int i) {
			return getRuleContext(TextStringContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public StringListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stringList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStringList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StringListContext stringList() throws RecognitionException {
		StringListContext _localctx = new StringListContext(_ctx, getState());
		enterRule(_localctx, 754, RULE_stringList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5874);
			match(LP_);
			setState(5875);
			textString();
			setState(5880);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(5876);
				match(COMMA_);
				setState(5877);
				textString();
				}
				}
				setState(5882);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			setState(5883);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TextStringContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode HEX_DIGIT_() { return getToken(MySQLStatementParser.HEX_DIGIT_, 0); }
		public TerminalNode BIT_NUM_() { return getToken(MySQLStatementParser.BIT_NUM_, 0); }
		public TextStringContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_textString; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTextString(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TextStringContext textString() throws RecognitionException {
		TextStringContext _localctx = new TextStringContext(_ctx, getState());
		enterRule(_localctx, 756, RULE_textString);
		try {
			setState(5888);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
				enterOuterAlt(_localctx, 1);
				{
				setState(5885);
				string_();
				}
				break;
			case HEX_DIGIT_:
				enterOuterAlt(_localctx, 2);
				{
				setState(5886);
				match(HEX_DIGIT_);
				}
				break;
			case BIT_NUM_:
				enterOuterAlt(_localctx, 3);
				{
				setState(5887);
				match(BIT_NUM_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TextStringHashContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode HEX_DIGIT_() { return getToken(MySQLStatementParser.HEX_DIGIT_, 0); }
		public TextStringHashContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_textStringHash; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTextStringHash(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TextStringHashContext textStringHash() throws RecognitionException {
		TextStringHashContext _localctx = new TextStringHashContext(_ctx, getState());
		enterRule(_localctx, 758, RULE_textStringHash);
		try {
			setState(5892);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
				enterOuterAlt(_localctx, 1);
				{
				setState(5890);
				string_();
				}
				break;
			case HEX_DIGIT_:
				enterOuterAlt(_localctx, 2);
				{
				setState(5891);
				match(HEX_DIGIT_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FieldOptionsContext extends ParserRuleContext {
		public List UNSIGNED() { return getTokens(MySQLStatementParser.UNSIGNED); }
		public TerminalNode UNSIGNED(int i) {
			return getToken(MySQLStatementParser.UNSIGNED, i);
		}
		public List SIGNED() { return getTokens(MySQLStatementParser.SIGNED); }
		public TerminalNode SIGNED(int i) {
			return getToken(MySQLStatementParser.SIGNED, i);
		}
		public List ZEROFILL() { return getTokens(MySQLStatementParser.ZEROFILL); }
		public TerminalNode ZEROFILL(int i) {
			return getToken(MySQLStatementParser.ZEROFILL, i);
		}
		public FieldOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fieldOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFieldOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FieldOptionsContext fieldOptions() throws RecognitionException {
		FieldOptionsContext _localctx = new FieldOptionsContext(_ctx, getState());
		enterRule(_localctx, 760, RULE_fieldOptions);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(5895); 
			_errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					setState(5894);
					_la = _input.LA(1);
					if ( !(_la==SIGNED || _la==UNSIGNED || _la==ZEROFILL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(5897); 
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,749,_ctx);
			} while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PrecisionContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List NUMBER_() { return getTokens(MySQLStatementParser.NUMBER_); }
		public TerminalNode NUMBER_(int i) {
			return getToken(MySQLStatementParser.NUMBER_, i);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public PrecisionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_precision; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPrecision(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PrecisionContext precision() throws RecognitionException {
		PrecisionContext _localctx = new PrecisionContext(_ctx, getState());
		enterRule(_localctx, 762, RULE_precision);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5899);
			match(LP_);
			setState(5900);
			match(NUMBER_);
			setState(5901);
			match(COMMA_);
			setState(5902);
			match(NUMBER_);
			setState(5903);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TypeDatetimePrecisionContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TypeDatetimePrecisionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_typeDatetimePrecision; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTypeDatetimePrecision(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TypeDatetimePrecisionContext typeDatetimePrecision() throws RecognitionException {
		TypeDatetimePrecisionContext _localctx = new TypeDatetimePrecisionContext(_ctx, getState());
		enterRule(_localctx, 764, RULE_typeDatetimePrecision);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5905);
			match(LP_);
			setState(5906);
			match(NUMBER_);
			setState(5907);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetWithOptBinaryContext extends ParserRuleContext {
		public AsciiContext ascii() {
			return getRuleContext(AsciiContext.class,0);
		}
		public UnicodeContext unicode() {
			return getRuleContext(UnicodeContext.class,0);
		}
		public TerminalNode BYTE() { return getToken(MySQLStatementParser.BYTE, 0); }
		public CharsetContext charset() {
			return getRuleContext(CharsetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public CharsetWithOptBinaryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charsetWithOptBinary; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCharsetWithOptBinary(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharsetWithOptBinaryContext charsetWithOptBinary() throws RecognitionException {
		CharsetWithOptBinaryContext _localctx = new CharsetWithOptBinaryContext(_ctx, getState());
		enterRule(_localctx, 766, RULE_charsetWithOptBinary);
		try {
			setState(5923);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,752,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(5909);
				ascii();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(5910);
				unicode();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(5911);
				match(BYTE);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(5912);
				charset();
				setState(5913);
				charsetName();
				setState(5915);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,750,_ctx) ) {
				case 1:
					{
					setState(5914);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(5917);
				match(BINARY);
				setState(5921);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,751,_ctx) ) {
				case 1:
					{
					setState(5918);
					charset();
					setState(5919);
					charsetName();
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AsciiContext extends ParserRuleContext {
		public TerminalNode ASCII() { return getToken(MySQLStatementParser.ASCII, 0); }
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public AsciiContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ascii; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAscii(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AsciiContext ascii() throws RecognitionException {
		AsciiContext _localctx = new AsciiContext(_ctx, getState());
		enterRule(_localctx, 768, RULE_ascii);
		try {
			setState(5931);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ASCII:
				enterOuterAlt(_localctx, 1);
				{
				setState(5925);
				match(ASCII);
				setState(5927);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,753,_ctx) ) {
				case 1:
					{
					setState(5926);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case BINARY:
				enterOuterAlt(_localctx, 2);
				{
				setState(5929);
				match(BINARY);
				setState(5930);
				match(ASCII);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnicodeContext extends ParserRuleContext {
		public TerminalNode UNICODE() { return getToken(MySQLStatementParser.UNICODE, 0); }
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public UnicodeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unicode; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUnicode(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnicodeContext unicode() throws RecognitionException {
		UnicodeContext _localctx = new UnicodeContext(_ctx, getState());
		enterRule(_localctx, 770, RULE_unicode);
		try {
			setState(5939);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UNICODE:
				enterOuterAlt(_localctx, 1);
				{
				setState(5933);
				match(UNICODE);
				setState(5935);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,755,_ctx) ) {
				case 1:
					{
					setState(5934);
					match(BINARY);
					}
					break;
				}
				}
				break;
			case BINARY:
				enterOuterAlt(_localctx, 2);
				{
				setState(5937);
				match(BINARY);
				setState(5938);
				match(UNICODE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharsetContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode CHAR() { return getToken(MySQLStatementParser.CHAR, 0); }
		public TerminalNode CHARACTER() { return getToken(MySQLStatementParser.CHARACTER, 0); }
		public TerminalNode CHARSET() { return getToken(MySQLStatementParser.CHARSET, 0); }
		public CharsetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_charset; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCharset(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharsetContext charset() throws RecognitionException {
		CharsetContext _localctx = new CharsetContext(_ctx, getState());
		enterRule(_localctx, 772, RULE_charset);
		int _la;
		try {
			setState(5944);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHAR:
			case CHARACTER:
				enterOuterAlt(_localctx, 1);
				{
				setState(5941);
				_la = _input.LA(1);
				if ( !(_la==CHAR || _la==CHARACTER) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(5942);
				match(SET);
				}
				break;
			case CHARSET:
				enterOuterAlt(_localctx, 2);
				{
				setState(5943);
				match(CHARSET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultCollationContext extends ParserRuleContext {
		public TerminalNode COLLATE() { return getToken(MySQLStatementParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public DefaultCollationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultCollation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDefaultCollation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaultCollationContext defaultCollation() throws RecognitionException {
		DefaultCollationContext _localctx = new DefaultCollationContext(_ctx, getState());
		enterRule(_localctx, 774, RULE_defaultCollation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5947);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(5946);
				match(DEFAULT);
				}
			}

			setState(5949);
			match(COLLATE);
			setState(5951);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(5950);
				match(EQ_);
				}
			}

			setState(5953);
			collationName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultEncryptionContext extends ParserRuleContext {
		public TerminalNode ENCRYPTION() { return getToken(MySQLStatementParser.ENCRYPTION, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public DefaultEncryptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultEncryption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDefaultEncryption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaultEncryptionContext defaultEncryption() throws RecognitionException {
		DefaultEncryptionContext _localctx = new DefaultEncryptionContext(_ctx, getState());
		enterRule(_localctx, 776, RULE_defaultEncryption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5956);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(5955);
				match(DEFAULT);
				}
			}

			setState(5958);
			match(ENCRYPTION);
			setState(5960);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(5959);
				match(EQ_);
				}
			}

			setState(5962);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultCharsetContext extends ParserRuleContext {
		public CharsetContext charset() {
			return getRuleContext(CharsetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public DefaultCharsetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultCharset; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDefaultCharset(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaultCharsetContext defaultCharset() throws RecognitionException {
		DefaultCharsetContext _localctx = new DefaultCharsetContext(_ctx, getState());
		enterRule(_localctx, 778, RULE_defaultCharset);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5965);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(5964);
				match(DEFAULT);
				}
			}

			setState(5967);
			charset();
			setState(5969);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EQ_) {
				{
				setState(5968);
				match(EQ_);
				}
			}

			setState(5971);
			charsetName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NowContext extends ParserRuleContext {
		public TerminalNode CURRENT_TIMESTAMP() { return getToken(MySQLStatementParser.CURRENT_TIMESTAMP, 0); }
		public TerminalNode LOCALTIME() { return getToken(MySQLStatementParser.LOCALTIME, 0); }
		public TerminalNode LOCALTIMESTAMP() { return getToken(MySQLStatementParser.LOCALTIMESTAMP, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public NowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_now; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNow(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NowContext now() throws RecognitionException {
		NowContext _localctx = new NowContext(_ctx, getState());
		enterRule(_localctx, 780, RULE_now);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5973);
			_la = _input.LA(1);
			if ( !(_la==CURRENT_TIMESTAMP || _la==LOCALTIME || _la==LOCALTIMESTAMP) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(5979);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,765,_ctx) ) {
			case 1:
				{
				setState(5974);
				match(LP_);
				setState(5976);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NUMBER_) {
					{
					setState(5975);
					match(NUMBER_);
					}
				}

				setState(5978);
				match(RP_);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ColumnFormatContext extends ParserRuleContext {
		public TerminalNode FIXED() { return getToken(MySQLStatementParser.FIXED, 0); }
		public TerminalNode DYNAMIC() { return getToken(MySQLStatementParser.DYNAMIC, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public ColumnFormatContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_columnFormat; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitColumnFormat(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ColumnFormatContext columnFormat() throws RecognitionException {
		ColumnFormatContext _localctx = new ColumnFormatContext(_ctx, getState());
		enterRule(_localctx, 782, RULE_columnFormat);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5981);
			_la = _input.LA(1);
			if ( !(_la==DEFAULT || _la==DYNAMIC || _la==FIXED) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StorageMediaContext extends ParserRuleContext {
		public TerminalNode DISK() { return getToken(MySQLStatementParser.DISK, 0); }
		public TerminalNode MEMORY() { return getToken(MySQLStatementParser.MEMORY, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public StorageMediaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_storageMedia; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStorageMedia(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StorageMediaContext storageMedia() throws RecognitionException {
		StorageMediaContext _localctx = new StorageMediaContext(_ctx, getState());
		enterRule(_localctx, 784, RULE_storageMedia);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5983);
			_la = _input.LA(1);
			if ( !(_la==DEFAULT || _la==DISK || _la==MEMORY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DirectionContext extends ParserRuleContext {
		public TerminalNode ASC() { return getToken(MySQLStatementParser.ASC, 0); }
		public TerminalNode DESC() { return getToken(MySQLStatementParser.DESC, 0); }
		public DirectionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_direction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDirection(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DirectionContext direction() throws RecognitionException {
		DirectionContext _localctx = new DirectionContext(_ctx, getState());
		enterRule(_localctx, 786, RULE_direction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5985);
			_la = _input.LA(1);
			if ( !(_la==ASC || _la==DESC) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KeyOrIndexContext extends ParserRuleContext {
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public KeyOrIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_keyOrIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitKeyOrIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KeyOrIndexContext keyOrIndex() throws RecognitionException {
		KeyOrIndexContext _localctx = new KeyOrIndexContext(_ctx, getState());
		enterRule(_localctx, 788, RULE_keyOrIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5987);
			_la = _input.LA(1);
			if ( !(_la==INDEX || _la==KEY) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FieldLengthContext extends ParserRuleContext {
		public Token length;
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public FieldLengthContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fieldLength; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFieldLength(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FieldLengthContext fieldLength() throws RecognitionException {
		FieldLengthContext _localctx = new FieldLengthContext(_ctx, getState());
		enterRule(_localctx, 790, RULE_fieldLength);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5989);
			match(LP_);
			setState(5990);
			((FieldLengthContext)_localctx).length = match(NUMBER_);
			setState(5991);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CharacterSetContext extends ParserRuleContext {
		public CharsetContext charset() {
			return getRuleContext(CharsetContext.class,0);
		}
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public CharacterSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_characterSet; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCharacterSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CharacterSetContext characterSet() throws RecognitionException {
		CharacterSetContext _localctx = new CharacterSetContext(_ctx, getState());
		enterRule(_localctx, 792, RULE_characterSet);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5993);
			charset();
			setState(5994);
			charsetName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CollateClauseContext extends ParserRuleContext {
		public TerminalNode COLLATE() { return getToken(MySQLStatementParser.COLLATE, 0); }
		public CollationNameContext collationName() {
			return getRuleContext(CollationNameContext.class,0);
		}
		public ParameterMarkerContext parameterMarker() {
			return getRuleContext(ParameterMarkerContext.class,0);
		}
		public CollateClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_collateClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCollateClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CollateClauseContext collateClause() throws RecognitionException {
		CollateClauseContext _localctx = new CollateClauseContext(_ctx, getState());
		enterRule(_localctx, 794, RULE_collateClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(5996);
			match(COLLATE);
			setState(5999);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINARY:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(5997);
				collationName();
				}
				break;
			case QUESTION_:
				{
				setState(5998);
				parameterMarker();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FieldOrVarSpecContext extends ParserRuleContext {
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public List identifier() {
			return getRuleContexts(IdentifierContext.class);
		}
		public IdentifierContext identifier(int i) {
			return getRuleContext(IdentifierContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public FieldOrVarSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fieldOrVarSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFieldOrVarSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FieldOrVarSpecContext fieldOrVarSpec() throws RecognitionException {
		FieldOrVarSpecContext _localctx = new FieldOrVarSpecContext(_ctx, getState());
		enterRule(_localctx, 796, RULE_fieldOrVarSpec);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6001);
			match(LP_);
			setState(6010);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(6002);
				identifier();
				setState(6007);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6003);
					match(COMMA_);
					setState(6004);
					identifier();
					}
					}
					setState(6009);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6012);
			match(RP_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfNotExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySQLStatementParser.IF, 0); }
		public TerminalNode NOT() { return getToken(MySQLStatementParser.NOT, 0); }
		public TerminalNode EXISTS() { return getToken(MySQLStatementParser.EXISTS, 0); }
		public IfNotExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifNotExists; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIfNotExists(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfNotExistsContext ifNotExists() throws RecognitionException {
		IfNotExistsContext _localctx = new IfNotExistsContext(_ctx, getState());
		enterRule(_localctx, 798, RULE_ifNotExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6014);
			match(IF);
			setState(6015);
			match(NOT);
			setState(6016);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IfExistsContext extends ParserRuleContext {
		public TerminalNode IF() { return getToken(MySQLStatementParser.IF, 0); }
		public TerminalNode EXISTS() { return getToken(MySQLStatementParser.EXISTS, 0); }
		public IfExistsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ifExists; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIfExists(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IfExistsContext ifExists() throws RecognitionException {
		IfExistsContext _localctx = new IfExistsContext(_ctx, getState());
		enterRule(_localctx, 800, RULE_ifExists);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6018);
			match(IF);
			setState(6019);
			match(EXISTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConnectionIdContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public ConnectionIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_connectionId; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConnectionId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConnectionIdContext connectionId() throws RecognitionException {
		ConnectionIdContext _localctx = new ConnectionIdContext(_ctx, getState());
		enterRule(_localctx, 802, RULE_connectionId);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6021);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LabelNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public LabelNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_labelName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLabelName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LabelNameContext labelName() throws RecognitionException {
		LabelNameContext _localctx = new LabelNameContext(_ctx, getState());
		enterRule(_localctx, 804, RULE_labelName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6023);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CursorNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public CursorNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cursorName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCursorName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CursorNameContext cursorName() throws RecognitionException {
		CursorNameContext _localctx = new CursorNameContext(_ctx, getState());
		enterRule(_localctx, 806, RULE_cursorName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6025);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConditionNameContext extends ParserRuleContext {
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ConditionNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_conditionName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConditionName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConditionNameContext conditionName() throws RecognitionException {
		ConditionNameContext _localctx = new ConditionNameContext(_ctx, getState());
		enterRule(_localctx, 808, RULE_conditionName);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6027);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CombineOptionContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode DISTINCT() { return getToken(MySQLStatementParser.DISTINCT, 0); }
		public CombineOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_combineOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCombineOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CombineOptionContext combineOption() throws RecognitionException {
		CombineOptionContext _localctx = new CombineOptionContext(_ctx, getState());
		enterRule(_localctx, 810, RULE_combineOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6029);
			_la = _input.LA(1);
			if ( !(_la==ALL || _la==DISTINCT) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class NoWriteToBinLogContext extends ParserRuleContext {
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySQLStatementParser.NO_WRITE_TO_BINLOG, 0); }
		public NoWriteToBinLogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_noWriteToBinLog; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitNoWriteToBinLog(this);
			else return visitor.visitChildren(this);
		}
	}

	public final NoWriteToBinLogContext noWriteToBinLog() throws RecognitionException {
		NoWriteToBinLogContext _localctx = new NoWriteToBinLogContext(_ctx, getState());
		enterRule(_localctx, 812, RULE_noWriteToBinLog);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6031);
			_la = _input.LA(1);
			if ( !(_la==LOCAL || _la==NO_WRITE_TO_BINLOG) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChannelOptionContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public ChannelOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_channelOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChannelOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChannelOptionContext channelOption() throws RecognitionException {
		ChannelOptionContext _localctx = new ChannelOptionContext(_ctx, getState());
		enterRule(_localctx, 814, RULE_channelOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6033);
			match(FOR);
			setState(6034);
			match(CHANNEL);
			setState(6035);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UseContext extends ParserRuleContext {
		public TerminalNode USE() { return getToken(MySQLStatementParser.USE, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public UseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_use; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUse(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UseContext use() throws RecognitionException {
		UseContext _localctx = new UseContext(_ctx, getState());
		enterRule(_localctx, 816, RULE_use);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6037);
			match(USE);
			setState(6038);
			schemaName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HelpContext extends ParserRuleContext {
		public TerminalNode HELP() { return getToken(MySQLStatementParser.HELP, 0); }
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public HelpContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_help; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHelp(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HelpContext help() throws RecognitionException {
		HelpContext _localctx = new HelpContext(_ctx, getState());
		enterRule(_localctx, 818, RULE_help);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6040);
			match(HELP);
			setState(6041);
			textOrIdentifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainContext extends ParserRuleContext {
		public TerminalNode DESC() { return getToken(MySQLStatementParser.DESC, 0); }
		public TerminalNode DESCRIBE() { return getToken(MySQLStatementParser.DESCRIBE, 0); }
		public TerminalNode EXPLAIN() { return getToken(MySQLStatementParser.EXPLAIN, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode ANALYZE() { return getToken(MySQLStatementParser.ANALYZE, 0); }
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public ExplainableStatementContext explainableStatement() {
			return getRuleContext(ExplainableStatementContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CONNECTION() { return getToken(MySQLStatementParser.CONNECTION, 0); }
		public ConnectionIdContext connectionId() {
			return getRuleContext(ConnectionIdContext.class,0);
		}
		public ColumnRefContext columnRef() {
			return getRuleContext(ColumnRefContext.class,0);
		}
		public TextStringContext textString() {
			return getRuleContext(TextStringContext.class,0);
		}
		public ExplainTypeContext explainType() {
			return getRuleContext(ExplainTypeContext.class,0);
		}
		public TerminalNode FORMAT() { return getToken(MySQLStatementParser.FORMAT, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode TREE() { return getToken(MySQLStatementParser.TREE, 0); }
		public ExplainContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explain; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExplain(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainContext explain() throws RecognitionException {
		ExplainContext _localctx = new ExplainContext(_ctx, getState());
		enterRule(_localctx, 820, RULE_explain);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6043);
			_la = _input.LA(1);
			if ( !(((((_la - 202)) & ~0x3f) == 0 && ((1L << (_la - 202)) & ((1L << (DESC - 202)) | (1L << (DESCRIBE - 202)) | (1L << (EXPLAIN - 202)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6065);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,773,_ctx) ) {
			case 1:
				{
				setState(6044);
				tableName();
				setState(6047);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,769,_ctx) ) {
				case 1:
					{
					setState(6045);
					columnRef();
					}
					break;
				case 2:
					{
					setState(6046);
					textString();
					}
					break;
				}
				}
				break;
			case 2:
				{
				setState(6050);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FORMAT) {
					{
					setState(6049);
					explainType();
					}
				}

				setState(6056);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case LP_:
				case DELETE:
				case INSERT:
				case REPLACE:
				case SELECT:
				case TABLE:
				case UPDATE:
				case VALUES:
				case WITH:
					{
					setState(6052);
					explainableStatement();
					}
					break;
				case FOR:
					{
					setState(6053);
					match(FOR);
					setState(6054);
					match(CONNECTION);
					setState(6055);
					connectionId();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 3:
				{
				setState(6058);
				match(ANALYZE);
				setState(6062);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FORMAT) {
					{
					setState(6059);
					match(FORMAT);
					setState(6060);
					match(EQ_);
					setState(6061);
					match(TREE);
					}
				}

				setState(6064);
				select();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromSchemaContext extends ParserRuleContext {
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public FromSchemaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromSchema; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFromSchema(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FromSchemaContext fromSchema() throws RecognitionException {
		FromSchemaContext _localctx = new FromSchemaContext(_ctx, getState());
		enterRule(_localctx, 822, RULE_fromSchema);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6067);
			_la = _input.LA(1);
			if ( !(_la==FROM || _la==IN) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6068);
			schemaName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FromTableContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public FromTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_fromTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFromTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FromTableContext fromTable() throws RecognitionException {
		FromTableContext _localctx = new FromTableContext(_ctx, getState());
		enterRule(_localctx, 824, RULE_fromTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6070);
			_la = _input.LA(1);
			if ( !(_la==FROM || _la==IN) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6071);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowLikeContext extends ParserRuleContext {
		public TerminalNode LIKE() { return getToken(MySQLStatementParser.LIKE, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public ShowLikeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showLike; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowLike(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowLikeContext showLike() throws RecognitionException {
		ShowLikeContext _localctx = new ShowLikeContext(_ctx, getState());
		enterRule(_localctx, 826, RULE_showLike);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6073);
			match(LIKE);
			setState(6074);
			stringLiterals();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowWhereClauseContext extends ParserRuleContext {
		public TerminalNode WHERE() { return getToken(MySQLStatementParser.WHERE, 0); }
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public ShowWhereClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showWhereClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowWhereClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowWhereClauseContext showWhereClause() throws RecognitionException {
		ShowWhereClauseContext _localctx = new ShowWhereClauseContext(_ctx, getState());
		enterRule(_localctx, 828, RULE_showWhereClause);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6076);
			match(WHERE);
			setState(6077);
			expr(0);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowFilterContext extends ParserRuleContext {
		public ShowLikeContext showLike() {
			return getRuleContext(ShowLikeContext.class,0);
		}
		public ShowWhereClauseContext showWhereClause() {
			return getRuleContext(ShowWhereClauseContext.class,0);
		}
		public ShowFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showFilter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowFilter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowFilterContext showFilter() throws RecognitionException {
		ShowFilterContext _localctx = new ShowFilterContext(_ctx, getState());
		enterRule(_localctx, 830, RULE_showFilter);
		try {
			setState(6081);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LIKE:
				enterOuterAlt(_localctx, 1);
				{
				setState(6079);
				showLike();
				}
				break;
			case WHERE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6080);
				showWhereClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProfileTypeContext extends ParserRuleContext {
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode BLOCK() { return getToken(MySQLStatementParser.BLOCK, 0); }
		public TerminalNode IO() { return getToken(MySQLStatementParser.IO, 0); }
		public TerminalNode CONTEXT() { return getToken(MySQLStatementParser.CONTEXT, 0); }
		public TerminalNode SWITCHES() { return getToken(MySQLStatementParser.SWITCHES, 0); }
		public TerminalNode CPU() { return getToken(MySQLStatementParser.CPU, 0); }
		public TerminalNode IPC() { return getToken(MySQLStatementParser.IPC, 0); }
		public TerminalNode MEMORY() { return getToken(MySQLStatementParser.MEMORY, 0); }
		public TerminalNode PAGE() { return getToken(MySQLStatementParser.PAGE, 0); }
		public TerminalNode FAULTS() { return getToken(MySQLStatementParser.FAULTS, 0); }
		public TerminalNode SOURCE() { return getToken(MySQLStatementParser.SOURCE, 0); }
		public TerminalNode SWAPS() { return getToken(MySQLStatementParser.SWAPS, 0); }
		public ShowProfileTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProfileType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowProfileType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProfileTypeContext showProfileType() throws RecognitionException {
		ShowProfileTypeContext _localctx = new ShowProfileTypeContext(_ctx, getState());
		enterRule(_localctx, 832, RULE_showProfileType);
		try {
			setState(6095);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ALL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6083);
				match(ALL);
				}
				break;
			case BLOCK:
				enterOuterAlt(_localctx, 2);
				{
				setState(6084);
				match(BLOCK);
				setState(6085);
				match(IO);
				}
				break;
			case CONTEXT:
				enterOuterAlt(_localctx, 3);
				{
				setState(6086);
				match(CONTEXT);
				setState(6087);
				match(SWITCHES);
				}
				break;
			case CPU:
				enterOuterAlt(_localctx, 4);
				{
				setState(6088);
				match(CPU);
				}
				break;
			case IPC:
				enterOuterAlt(_localctx, 5);
				{
				setState(6089);
				match(IPC);
				}
				break;
			case MEMORY:
				enterOuterAlt(_localctx, 6);
				{
				setState(6090);
				match(MEMORY);
				}
				break;
			case PAGE:
				enterOuterAlt(_localctx, 7);
				{
				setState(6091);
				match(PAGE);
				setState(6092);
				match(FAULTS);
				}
				break;
			case SOURCE:
				enterOuterAlt(_localctx, 8);
				{
				setState(6093);
				match(SOURCE);
				}
				break;
			case SWAPS:
				enterOuterAlt(_localctx, 9);
				{
				setState(6094);
				match(SWAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetVariableContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public OptionValueListContext optionValueList() {
			return getRuleContext(OptionValueListContext.class,0);
		}
		public SetVariableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setVariable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetVariable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetVariableContext setVariable() throws RecognitionException {
		SetVariableContext _localctx = new SetVariableContext(_ctx, getState());
		enterRule(_localctx, 834, RULE_setVariable);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6097);
			match(SET);
			setState(6098);
			optionValueList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionValueListContext extends ParserRuleContext {
		public OptionValueNoOptionTypeContext optionValueNoOptionType() {
			return getRuleContext(OptionValueNoOptionTypeContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public List optionValue() {
			return getRuleContexts(OptionValueContext.class);
		}
		public OptionValueContext optionValue(int i) {
			return getRuleContext(OptionValueContext.class,i);
		}
		public OptionTypeContext optionType() {
			return getRuleContext(OptionTypeContext.class,0);
		}
		public InternalVariableNameContext internalVariableName() {
			return getRuleContext(InternalVariableNameContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public SetExprOrDefaultContext setExprOrDefault() {
			return getRuleContext(SetExprOrDefaultContext.class,0);
		}
		public OptionValueListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionValueList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptionValueList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionValueListContext optionValueList() throws RecognitionException {
		OptionValueListContext _localctx = new OptionValueListContext(_ctx, getState());
		enterRule(_localctx, 836, RULE_optionValueList);
		int _la;
		try {
			setState(6120);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,778,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6100);
				optionValueNoOptionType();
				setState(6105);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6101);
					match(COMMA_);
					setState(6102);
					optionValue();
					}
					}
					setState(6107);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6108);
				optionType();
				{
				setState(6109);
				internalVariableName();
				setState(6110);
				match(EQ_);
				setState(6111);
				setExprOrDefault();
				}
				setState(6117);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6113);
					match(COMMA_);
					setState(6114);
					optionValue();
					}
					}
					setState(6119);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionValueNoOptionTypeContext extends ParserRuleContext {
		public InternalVariableNameContext internalVariableName() {
			return getRuleContext(InternalVariableNameContext.class,0);
		}
		public EqualContext equal() {
			return getRuleContext(EqualContext.class,0);
		}
		public SetExprOrDefaultContext setExprOrDefault() {
			return getRuleContext(SetExprOrDefaultContext.class,0);
		}
		public UserVariableContext userVariable() {
			return getRuleContext(UserVariableContext.class,0);
		}
		public ExprContext expr() {
			return getRuleContext(ExprContext.class,0);
		}
		public SetSystemVariableContext setSystemVariable() {
			return getRuleContext(SetSystemVariableContext.class,0);
		}
		public TerminalNode NAMES() { return getToken(MySQLStatementParser.NAMES, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public CollateClauseContext collateClause() {
			return getRuleContext(CollateClauseContext.class,0);
		}
		public OptionValueNoOptionTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionValueNoOptionType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptionValueNoOptionType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionValueNoOptionTypeContext optionValueNoOptionType() throws RecognitionException {
		OptionValueNoOptionTypeContext _localctx = new OptionValueNoOptionTypeContext(_ctx, getState());
		enterRule(_localctx, 838, RULE_optionValueNoOptionType);
		int _la;
		try {
			setState(6145);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,781,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6122);
				internalVariableName();
				setState(6123);
				equal();
				setState(6124);
				setExprOrDefault();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6126);
				userVariable();
				setState(6127);
				equal();
				setState(6128);
				expr(0);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6130);
				setSystemVariable();
				setState(6131);
				equal();
				setState(6132);
				setExprOrDefault();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6134);
				match(NAMES);
				setState(6143);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,780,_ctx) ) {
				case 1:
					{
					setState(6135);
					equal();
					setState(6136);
					expr(0);
					}
					break;
				case 2:
					{
					setState(6138);
					charsetName();
					setState(6140);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==COLLATE) {
						{
						setState(6139);
						collateClause();
						}
					}

					}
					break;
				case 3:
					{
					setState(6142);
					match(DEFAULT);
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class EqualContext extends ParserRuleContext {
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode ASSIGNMENT_() { return getToken(MySQLStatementParser.ASSIGNMENT_, 0); }
		public EqualContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_equal; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitEqual(this);
			else return visitor.visitChildren(this);
		}
	}

	public final EqualContext equal() throws RecognitionException {
		EqualContext _localctx = new EqualContext(_ctx, getState());
		enterRule(_localctx, 840, RULE_equal);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6147);
			_la = _input.LA(1);
			if ( !(_la==EQ_ || _la==ASSIGNMENT_) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionValueContext extends ParserRuleContext {
		public OptionTypeContext optionType() {
			return getRuleContext(OptionTypeContext.class,0);
		}
		public InternalVariableNameContext internalVariableName() {
			return getRuleContext(InternalVariableNameContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public SetExprOrDefaultContext setExprOrDefault() {
			return getRuleContext(SetExprOrDefaultContext.class,0);
		}
		public OptionValueNoOptionTypeContext optionValueNoOptionType() {
			return getRuleContext(OptionValueNoOptionTypeContext.class,0);
		}
		public OptionValueContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionValue; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptionValue(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionValueContext optionValue() throws RecognitionException {
		OptionValueContext _localctx = new OptionValueContext(_ctx, getState());
		enterRule(_localctx, 842, RULE_optionValue);
		try {
			setState(6155);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,782,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6149);
				optionType();
				setState(6150);
				internalVariableName();
				setState(6151);
				match(EQ_);
				setState(6152);
				setExprOrDefault();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6154);
				optionValueNoOptionType();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowBinaryLogsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode LOGS() { return getToken(MySQLStatementParser.LOGS, 0); }
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public ShowBinaryLogsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showBinaryLogs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowBinaryLogs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowBinaryLogsContext showBinaryLogs() throws RecognitionException {
		ShowBinaryLogsContext _localctx = new ShowBinaryLogsContext(_ctx, getState());
		enterRule(_localctx, 844, RULE_showBinaryLogs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6157);
			match(SHOW);
			setState(6158);
			_la = _input.LA(1);
			if ( !(_la==BINARY || _la==MASTER) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6159);
			match(LOGS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowBinlogEventsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode BINLOG() { return getToken(MySQLStatementParser.BINLOG, 0); }
		public TerminalNode EVENTS() { return getToken(MySQLStatementParser.EVENTS, 0); }
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public LogNameContext logName() {
			return getRuleContext(LogNameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public ShowBinlogEventsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showBinlogEvents; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowBinlogEvents(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowBinlogEventsContext showBinlogEvents() throws RecognitionException {
		ShowBinlogEventsContext _localctx = new ShowBinlogEventsContext(_ctx, getState());
		enterRule(_localctx, 846, RULE_showBinlogEvents);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6161);
			match(SHOW);
			setState(6162);
			match(BINLOG);
			setState(6163);
			match(EVENTS);
			setState(6166);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IN) {
				{
				setState(6164);
				match(IN);
				setState(6165);
				logName();
				}
			}

			setState(6170);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(6168);
				match(FROM);
				setState(6169);
				match(NUMBER_);
				}
			}

			setState(6173);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(6172);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCharacterSetContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CHARACTER() { return getToken(MySQLStatementParser.CHARACTER, 0); }
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowCharacterSetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCharacterSet; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCharacterSet(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCharacterSetContext showCharacterSet() throws RecognitionException {
		ShowCharacterSetContext _localctx = new ShowCharacterSetContext(_ctx, getState());
		enterRule(_localctx, 848, RULE_showCharacterSet);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6175);
			match(SHOW);
			setState(6176);
			match(CHARACTER);
			setState(6177);
			match(SET);
			setState(6179);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6178);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCollationContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode COLLATION() { return getToken(MySQLStatementParser.COLLATION, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowCollationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCollation; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCollation(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCollationContext showCollation() throws RecognitionException {
		ShowCollationContext _localctx = new ShowCollationContext(_ctx, getState());
		enterRule(_localctx, 850, RULE_showCollation);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6181);
			match(SHOW);
			setState(6182);
			match(COLLATION);
			setState(6184);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6183);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowColumnsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public FromTableContext fromTable() {
			return getRuleContext(FromTableContext.class,0);
		}
		public TerminalNode COLUMNS() { return getToken(MySQLStatementParser.COLUMNS, 0); }
		public TerminalNode FIELDS() { return getToken(MySQLStatementParser.FIELDS, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode FULL() { return getToken(MySQLStatementParser.FULL, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowColumnsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showColumns; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowColumns(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowColumnsContext showColumns() throws RecognitionException {
		ShowColumnsContext _localctx = new ShowColumnsContext(_ctx, getState());
		enterRule(_localctx, 852, RULE_showColumns);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6186);
			match(SHOW);
			setState(6188);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED) {
				{
				setState(6187);
				match(EXTENDED);
				}
			}

			setState(6191);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FULL) {
				{
				setState(6190);
				match(FULL);
				}
			}

			setState(6193);
			_la = _input.LA(1);
			if ( !(_la==COLUMNS || _la==FIELDS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6194);
			fromTable();
			setState(6196);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6195);
				fromSchema();
				}
			}

			setState(6199);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6198);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateDatabaseContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode DATABASE() { return getToken(MySQLStatementParser.DATABASE, 0); }
		public TerminalNode SCHEMA() { return getToken(MySQLStatementParser.SCHEMA, 0); }
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public ShowCreateDatabaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateDatabase; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateDatabase(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateDatabaseContext showCreateDatabase() throws RecognitionException {
		ShowCreateDatabaseContext _localctx = new ShowCreateDatabaseContext(_ctx, getState());
		enterRule(_localctx, 854, RULE_showCreateDatabase);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6201);
			match(SHOW);
			setState(6202);
			match(CREATE);
			setState(6203);
			_la = _input.LA(1);
			if ( !(_la==DATABASE || _la==SCHEMA) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6205);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(6204);
				ifNotExists();
				}
			}

			setState(6207);
			schemaName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateEventContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode EVENT() { return getToken(MySQLStatementParser.EVENT, 0); }
		public EventNameContext eventName() {
			return getRuleContext(EventNameContext.class,0);
		}
		public ShowCreateEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateEventContext showCreateEvent() throws RecognitionException {
		ShowCreateEventContext _localctx = new ShowCreateEventContext(_ctx, getState());
		enterRule(_localctx, 856, RULE_showCreateEvent);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6209);
			match(SHOW);
			setState(6210);
			match(CREATE);
			setState(6211);
			match(EVENT);
			setState(6212);
			eventName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateFunctionContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public ShowCreateFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateFunctionContext showCreateFunction() throws RecognitionException {
		ShowCreateFunctionContext _localctx = new ShowCreateFunctionContext(_ctx, getState());
		enterRule(_localctx, 858, RULE_showCreateFunction);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6214);
			match(SHOW);
			setState(6215);
			match(CREATE);
			setState(6216);
			match(FUNCTION);
			setState(6217);
			functionName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateProcedureContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public ProcedureNameContext procedureName() {
			return getRuleContext(ProcedureNameContext.class,0);
		}
		public ShowCreateProcedureContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateProcedure; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateProcedure(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateProcedureContext showCreateProcedure() throws RecognitionException {
		ShowCreateProcedureContext _localctx = new ShowCreateProcedureContext(_ctx, getState());
		enterRule(_localctx, 860, RULE_showCreateProcedure);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6219);
			match(SHOW);
			setState(6220);
			match(CREATE);
			setState(6221);
			match(PROCEDURE);
			setState(6222);
			procedureName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateTableContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public ShowCreateTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateTableContext showCreateTable() throws RecognitionException {
		ShowCreateTableContext _localctx = new ShowCreateTableContext(_ctx, getState());
		enterRule(_localctx, 862, RULE_showCreateTable);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6224);
			match(SHOW);
			setState(6225);
			match(CREATE);
			setState(6226);
			match(TABLE);
			setState(6227);
			tableName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateTriggerContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TRIGGER() { return getToken(MySQLStatementParser.TRIGGER, 0); }
		public TriggerNameContext triggerName() {
			return getRuleContext(TriggerNameContext.class,0);
		}
		public ShowCreateTriggerContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateTrigger; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateTrigger(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateTriggerContext showCreateTrigger() throws RecognitionException {
		ShowCreateTriggerContext _localctx = new ShowCreateTriggerContext(_ctx, getState());
		enterRule(_localctx, 864, RULE_showCreateTrigger);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6229);
			match(SHOW);
			setState(6230);
			match(CREATE);
			setState(6231);
			match(TRIGGER);
			setState(6232);
			triggerName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateUserContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public ShowCreateUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateUserContext showCreateUser() throws RecognitionException {
		ShowCreateUserContext _localctx = new ShowCreateUserContext(_ctx, getState());
		enterRule(_localctx, 866, RULE_showCreateUser);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6234);
			match(SHOW);
			setState(6235);
			match(CREATE);
			setState(6236);
			match(USER);
			setState(6237);
			username();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCreateViewContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public ViewNameContext viewName() {
			return getRuleContext(ViewNameContext.class,0);
		}
		public ShowCreateViewContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCreateView; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCreateView(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCreateViewContext showCreateView() throws RecognitionException {
		ShowCreateViewContext _localctx = new ShowCreateViewContext(_ctx, getState());
		enterRule(_localctx, 868, RULE_showCreateView);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6239);
			match(SHOW);
			setState(6240);
			match(CREATE);
			setState(6241);
			match(VIEW);
			setState(6242);
			viewName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowDatabasesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode DATABASES() { return getToken(MySQLStatementParser.DATABASES, 0); }
		public TerminalNode SCHEMAS() { return getToken(MySQLStatementParser.SCHEMAS, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowDatabasesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showDatabases; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowDatabases(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowDatabasesContext showDatabases() throws RecognitionException {
		ShowDatabasesContext _localctx = new ShowDatabasesContext(_ctx, getState());
		enterRule(_localctx, 870, RULE_showDatabases);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6244);
			match(SHOW);
			setState(6245);
			_la = _input.LA(1);
			if ( !(_la==DATABASES || _la==SCHEMAS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6247);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6246);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowEngineContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public EngineRefContext engineRef() {
			return getRuleContext(EngineRefContext.class,0);
		}
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public TerminalNode MUTEX() { return getToken(MySQLStatementParser.MUTEX, 0); }
		public ShowEngineContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showEngine; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowEngine(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowEngineContext showEngine() throws RecognitionException {
		ShowEngineContext _localctx = new ShowEngineContext(_ctx, getState());
		enterRule(_localctx, 872, RULE_showEngine);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6249);
			match(SHOW);
			setState(6250);
			match(ENGINE);
			setState(6251);
			engineRef();
			setState(6252);
			_la = _input.LA(1);
			if ( !(_la==MUTEX || _la==STATUS) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowEnginesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode ENGINES() { return getToken(MySQLStatementParser.ENGINES, 0); }
		public TerminalNode STORAGE() { return getToken(MySQLStatementParser.STORAGE, 0); }
		public ShowEnginesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showEngines; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowEngines(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowEnginesContext showEngines() throws RecognitionException {
		ShowEnginesContext _localctx = new ShowEnginesContext(_ctx, getState());
		enterRule(_localctx, 874, RULE_showEngines);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6254);
			match(SHOW);
			setState(6256);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==STORAGE) {
				{
				setState(6255);
				match(STORAGE);
				}
			}

			setState(6258);
			match(ENGINES);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowErrorsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode ERRORS() { return getToken(MySQLStatementParser.ERRORS, 0); }
		public TerminalNode COUNT() { return getToken(MySQLStatementParser.COUNT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public ShowErrorsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showErrors; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowErrors(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowErrorsContext showErrors() throws RecognitionException {
		ShowErrorsContext _localctx = new ShowErrorsContext(_ctx, getState());
		enterRule(_localctx, 876, RULE_showErrors);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6260);
			match(SHOW);
			setState(6265);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COUNT) {
				{
				setState(6261);
				match(COUNT);
				setState(6262);
				match(LP_);
				setState(6263);
				match(ASTERISK_);
				setState(6264);
				match(RP_);
				}
			}

			setState(6267);
			match(ERRORS);
			setState(6269);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(6268);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowEventsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode EVENTS() { return getToken(MySQLStatementParser.EVENTS, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowEventsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showEvents; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowEvents(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowEventsContext showEvents() throws RecognitionException {
		ShowEventsContext _localctx = new ShowEventsContext(_ctx, getState());
		enterRule(_localctx, 878, RULE_showEvents);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6271);
			match(SHOW);
			setState(6272);
			match(EVENTS);
			setState(6274);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6273);
				fromSchema();
				}
			}

			setState(6277);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6276);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowFunctionCodeContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public TerminalNode CODE() { return getToken(MySQLStatementParser.CODE, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public ShowFunctionCodeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showFunctionCode; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowFunctionCode(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowFunctionCodeContext showFunctionCode() throws RecognitionException {
		ShowFunctionCodeContext _localctx = new ShowFunctionCodeContext(_ctx, getState());
		enterRule(_localctx, 880, RULE_showFunctionCode);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6279);
			match(SHOW);
			setState(6280);
			match(FUNCTION);
			setState(6281);
			match(CODE);
			setState(6282);
			functionName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowFunctionStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowFunctionStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showFunctionStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowFunctionStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowFunctionStatusContext showFunctionStatus() throws RecognitionException {
		ShowFunctionStatusContext _localctx = new ShowFunctionStatusContext(_ctx, getState());
		enterRule(_localctx, 882, RULE_showFunctionStatus);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6284);
			match(SHOW);
			setState(6285);
			match(FUNCTION);
			setState(6286);
			match(STATUS);
			setState(6288);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6287);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowGrantsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode GRANTS() { return getToken(MySQLStatementParser.GRANTS, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public TerminalNode USING() { return getToken(MySQLStatementParser.USING, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ShowGrantsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showGrants; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowGrants(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowGrantsContext showGrants() throws RecognitionException {
		ShowGrantsContext _localctx = new ShowGrantsContext(_ctx, getState());
		enterRule(_localctx, 884, RULE_showGrants);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6290);
			match(SHOW);
			setState(6291);
			match(GRANTS);
			setState(6308);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6292);
				match(FOR);
				setState(6295);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,800,_ctx) ) {
				case 1:
					{
					setState(6293);
					username();
					}
					break;
				case 2:
					{
					setState(6294);
					roleName();
					}
					break;
				}
				setState(6306);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==USING) {
					{
					setState(6297);
					match(USING);
					setState(6298);
					roleName();
					setState(6303);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA_) {
						{
						{
						setState(6299);
						match(COMMA_);
						setState(6300);
						roleName();
						}
						}
						setState(6305);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowIndexContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public FromTableContext fromTable() {
			return getRuleContext(FromTableContext.class,0);
		}
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode INDEXES() { return getToken(MySQLStatementParser.INDEXES, 0); }
		public TerminalNode KEYS() { return getToken(MySQLStatementParser.KEYS, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowWhereClauseContext showWhereClause() {
			return getRuleContext(ShowWhereClauseContext.class,0);
		}
		public ShowIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowIndexContext showIndex() throws RecognitionException {
		ShowIndexContext _localctx = new ShowIndexContext(_ctx, getState());
		enterRule(_localctx, 886, RULE_showIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6310);
			match(SHOW);
			setState(6312);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED) {
				{
				setState(6311);
				match(EXTENDED);
				}
			}

			setState(6314);
			_la = _input.LA(1);
			if ( !(((((_la - 314)) & ~0x3f) == 0 && ((1L << (_la - 314)) & ((1L << (INDEX - 314)) | (1L << (INDEXES - 314)) | (1L << (KEYS - 314)))) != 0)) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6315);
			fromTable();
			setState(6317);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6316);
				fromSchema();
				}
			}

			setState(6320);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WHERE) {
				{
				setState(6319);
				showWhereClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowMasterStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public ShowMasterStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showMasterStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowMasterStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowMasterStatusContext showMasterStatus() throws RecognitionException {
		ShowMasterStatusContext _localctx = new ShowMasterStatusContext(_ctx, getState());
		enterRule(_localctx, 888, RULE_showMasterStatus);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6322);
			match(SHOW);
			setState(6323);
			match(MASTER);
			setState(6324);
			match(STATUS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowOpenTablesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode OPEN() { return getToken(MySQLStatementParser.OPEN, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowOpenTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showOpenTables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowOpenTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowOpenTablesContext showOpenTables() throws RecognitionException {
		ShowOpenTablesContext _localctx = new ShowOpenTablesContext(_ctx, getState());
		enterRule(_localctx, 890, RULE_showOpenTables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6326);
			match(SHOW);
			setState(6327);
			match(OPEN);
			setState(6328);
			match(TABLES);
			setState(6330);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6329);
				fromSchema();
				}
			}

			setState(6333);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6332);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowPluginsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PLUGINS() { return getToken(MySQLStatementParser.PLUGINS, 0); }
		public ShowPluginsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showPlugins; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowPlugins(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowPluginsContext showPlugins() throws RecognitionException {
		ShowPluginsContext _localctx = new ShowPluginsContext(_ctx, getState());
		enterRule(_localctx, 892, RULE_showPlugins);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6335);
			match(SHOW);
			setState(6336);
			match(PLUGINS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowPrivilegesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySQLStatementParser.PRIVILEGES, 0); }
		public ShowPrivilegesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showPrivileges; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowPrivileges(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowPrivilegesContext showPrivileges() throws RecognitionException {
		ShowPrivilegesContext _localctx = new ShowPrivilegesContext(_ctx, getState());
		enterRule(_localctx, 894, RULE_showPrivileges);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6338);
			match(SHOW);
			setState(6339);
			match(PRIVILEGES);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProcedureCodeContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public TerminalNode CODE() { return getToken(MySQLStatementParser.CODE, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public ShowProcedureCodeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProcedureCode; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowProcedureCode(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProcedureCodeContext showProcedureCode() throws RecognitionException {
		ShowProcedureCodeContext _localctx = new ShowProcedureCodeContext(_ctx, getState());
		enterRule(_localctx, 896, RULE_showProcedureCode);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6341);
			match(SHOW);
			setState(6342);
			match(PROCEDURE);
			setState(6343);
			match(CODE);
			setState(6344);
			functionName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProcedureStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowProcedureStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProcedureStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowProcedureStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProcedureStatusContext showProcedureStatus() throws RecognitionException {
		ShowProcedureStatusContext _localctx = new ShowProcedureStatusContext(_ctx, getState());
		enterRule(_localctx, 898, RULE_showProcedureStatus);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6346);
			match(SHOW);
			setState(6347);
			match(PROCEDURE);
			setState(6348);
			match(STATUS);
			setState(6350);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6349);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProcesslistContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PROCESSLIST() { return getToken(MySQLStatementParser.PROCESSLIST, 0); }
		public TerminalNode FULL() { return getToken(MySQLStatementParser.FULL, 0); }
		public ShowProcesslistContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProcesslist; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowProcesslist(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProcesslistContext showProcesslist() throws RecognitionException {
		ShowProcesslistContext _localctx = new ShowProcesslistContext(_ctx, getState());
		enterRule(_localctx, 900, RULE_showProcesslist);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6352);
			match(SHOW);
			setState(6354);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FULL) {
				{
				setState(6353);
				match(FULL);
				}
			}

			setState(6356);
			match(PROCESSLIST);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProfileContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PROFILE() { return getToken(MySQLStatementParser.PROFILE, 0); }
		public List showProfileType() {
			return getRuleContexts(ShowProfileTypeContext.class);
		}
		public ShowProfileTypeContext showProfileType(int i) {
			return getRuleContext(ShowProfileTypeContext.class,i);
		}
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode QUERY() { return getToken(MySQLStatementParser.QUERY, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ShowProfileContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProfile; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowProfile(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProfileContext showProfile() throws RecognitionException {
		ShowProfileContext _localctx = new ShowProfileContext(_ctx, getState());
		enterRule(_localctx, 902, RULE_showProfile);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6358);
			match(SHOW);
			setState(6359);
			match(PROFILE);
			setState(6368);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ALL || _la==BLOCK || _la==CONTEXT || _la==CPU || _la==IPC || _la==MEMORY || _la==PAGE || _la==SOURCE || _la==SWAPS) {
				{
				setState(6360);
				showProfileType();
				setState(6365);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6361);
					match(COMMA_);
					setState(6362);
					showProfileType();
					}
					}
					setState(6367);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6373);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6370);
				match(FOR);
				setState(6371);
				match(QUERY);
				setState(6372);
				match(NUMBER_);
				}
			}

			setState(6376);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(6375);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowProfilesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode PROFILES() { return getToken(MySQLStatementParser.PROFILES, 0); }
		public ShowProfilesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showProfiles; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowProfiles(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowProfilesContext showProfiles() throws RecognitionException {
		ShowProfilesContext _localctx = new ShowProfilesContext(_ctx, getState());
		enterRule(_localctx, 904, RULE_showProfiles);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6378);
			match(SHOW);
			setState(6379);
			match(PROFILES);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowRelaylogEventContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode RELAYLOG() { return getToken(MySQLStatementParser.RELAYLOG, 0); }
		public TerminalNode EVENTS() { return getToken(MySQLStatementParser.EVENTS, 0); }
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public LogNameContext logName() {
			return getRuleContext(LogNameContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public ChannelNameContext channelName() {
			return getRuleContext(ChannelNameContext.class,0);
		}
		public ShowRelaylogEventContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showRelaylogEvent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowRelaylogEvent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowRelaylogEventContext showRelaylogEvent() throws RecognitionException {
		ShowRelaylogEventContext _localctx = new ShowRelaylogEventContext(_ctx, getState());
		enterRule(_localctx, 906, RULE_showRelaylogEvent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6381);
			match(SHOW);
			setState(6382);
			match(RELAYLOG);
			setState(6383);
			match(EVENTS);
			setState(6386);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IN) {
				{
				setState(6384);
				match(IN);
				setState(6385);
				logName();
				}
			}

			setState(6390);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM) {
				{
				setState(6388);
				match(FROM);
				setState(6389);
				match(NUMBER_);
				}
			}

			setState(6393);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(6392);
				limitClause();
				}
			}

			setState(6398);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6395);
				match(FOR);
				setState(6396);
				match(CHANNEL);
				setState(6397);
				channelName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowReplicasContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode REPLICAS() { return getToken(MySQLStatementParser.REPLICAS, 0); }
		public ShowReplicasContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showReplicas; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowReplicas(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowReplicasContext showReplicas() throws RecognitionException {
		ShowReplicasContext _localctx = new ShowReplicasContext(_ctx, getState());
		enterRule(_localctx, 908, RULE_showReplicas);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6400);
			match(SHOW);
			setState(6401);
			match(REPLICAS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowSlaveHostsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public TerminalNode HOSTS() { return getToken(MySQLStatementParser.HOSTS, 0); }
		public ShowSlaveHostsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showSlaveHosts; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowSlaveHosts(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowSlaveHostsContext showSlaveHosts() throws RecognitionException {
		ShowSlaveHostsContext _localctx = new ShowSlaveHostsContext(_ctx, getState());
		enterRule(_localctx, 910, RULE_showSlaveHosts);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6403);
			match(SHOW);
			setState(6404);
			match(SLAVE);
			setState(6405);
			match(HOSTS);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowReplicaStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode REPLICA() { return getToken(MySQLStatementParser.REPLICA, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public ChannelNameContext channelName() {
			return getRuleContext(ChannelNameContext.class,0);
		}
		public ShowReplicaStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showReplicaStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowReplicaStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowReplicaStatusContext showReplicaStatus() throws RecognitionException {
		ShowReplicaStatusContext _localctx = new ShowReplicaStatusContext(_ctx, getState());
		enterRule(_localctx, 912, RULE_showReplicaStatus);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6407);
			match(SHOW);
			setState(6408);
			match(REPLICA);
			setState(6409);
			match(STATUS);
			setState(6413);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6410);
				match(FOR);
				setState(6411);
				match(CHANNEL);
				setState(6412);
				channelName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowSlaveStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public ChannelNameContext channelName() {
			return getRuleContext(ChannelNameContext.class,0);
		}
		public ShowSlaveStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showSlaveStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowSlaveStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowSlaveStatusContext showSlaveStatus() throws RecognitionException {
		ShowSlaveStatusContext _localctx = new ShowSlaveStatusContext(_ctx, getState());
		enterRule(_localctx, 914, RULE_showSlaveStatus);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6415);
			match(SHOW);
			setState(6416);
			match(SLAVE);
			setState(6417);
			match(STATUS);
			setState(6421);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6418);
				match(FOR);
				setState(6419);
				match(CHANNEL);
				setState(6420);
				channelName();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public TerminalNode GLOBAL() { return getToken(MySQLStatementParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySQLStatementParser.SESSION, 0); }
		public ShowStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowStatusContext showStatus() throws RecognitionException {
		ShowStatusContext _localctx = new ShowStatusContext(_ctx, getState());
		enterRule(_localctx, 916, RULE_showStatus);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6423);
			match(SHOW);
			setState(6425);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GLOBAL || _la==SESSION) {
				{
				setState(6424);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==SESSION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6427);
			match(STATUS);
			setState(6429);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6428);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowTableStatusContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowTableStatusContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showTableStatus; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowTableStatus(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowTableStatusContext showTableStatus() throws RecognitionException {
		ShowTableStatusContext _localctx = new ShowTableStatusContext(_ctx, getState());
		enterRule(_localctx, 918, RULE_showTableStatus);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6431);
			match(SHOW);
			setState(6432);
			match(TABLE);
			setState(6433);
			match(STATUS);
			setState(6435);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6434);
				fromSchema();
				}
			}

			setState(6438);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6437);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowTablesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode FULL() { return getToken(MySQLStatementParser.FULL, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showTables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowTablesContext showTables() throws RecognitionException {
		ShowTablesContext _localctx = new ShowTablesContext(_ctx, getState());
		enterRule(_localctx, 920, RULE_showTables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6440);
			match(SHOW);
			setState(6442);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED) {
				{
				setState(6441);
				match(EXTENDED);
				}
			}

			setState(6445);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FULL) {
				{
				setState(6444);
				match(FULL);
				}
			}

			setState(6447);
			match(TABLES);
			setState(6449);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6448);
				fromSchema();
				}
			}

			setState(6452);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6451);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowTriggersContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode TRIGGERS() { return getToken(MySQLStatementParser.TRIGGERS, 0); }
		public FromSchemaContext fromSchema() {
			return getRuleContext(FromSchemaContext.class,0);
		}
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public ShowTriggersContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showTriggers; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowTriggers(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowTriggersContext showTriggers() throws RecognitionException {
		ShowTriggersContext _localctx = new ShowTriggersContext(_ctx, getState());
		enterRule(_localctx, 922, RULE_showTriggers);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6454);
			match(SHOW);
			setState(6455);
			match(TRIGGERS);
			setState(6457);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FROM || _la==IN) {
				{
				setState(6456);
				fromSchema();
				}
			}

			setState(6460);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6459);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowVariablesContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode VARIABLES() { return getToken(MySQLStatementParser.VARIABLES, 0); }
		public ShowFilterContext showFilter() {
			return getRuleContext(ShowFilterContext.class,0);
		}
		public TerminalNode GLOBAL() { return getToken(MySQLStatementParser.GLOBAL, 0); }
		public TerminalNode SESSION() { return getToken(MySQLStatementParser.SESSION, 0); }
		public ShowVariablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showVariables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowVariables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowVariablesContext showVariables() throws RecognitionException {
		ShowVariablesContext _localctx = new ShowVariablesContext(_ctx, getState());
		enterRule(_localctx, 924, RULE_showVariables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6462);
			match(SHOW);
			setState(6464);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GLOBAL || _la==SESSION) {
				{
				setState(6463);
				_la = _input.LA(1);
				if ( !(_la==GLOBAL || _la==SESSION) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6466);
			match(VARIABLES);
			setState(6468);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIKE || _la==WHERE) {
				{
				setState(6467);
				showFilter();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowWarningsContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode WARNINGS() { return getToken(MySQLStatementParser.WARNINGS, 0); }
		public TerminalNode COUNT() { return getToken(MySQLStatementParser.COUNT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public LimitClauseContext limitClause() {
			return getRuleContext(LimitClauseContext.class,0);
		}
		public ShowWarningsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showWarnings; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowWarnings(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowWarningsContext showWarnings() throws RecognitionException {
		ShowWarningsContext _localctx = new ShowWarningsContext(_ctx, getState());
		enterRule(_localctx, 926, RULE_showWarnings);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6470);
			match(SHOW);
			setState(6475);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COUNT) {
				{
				setState(6471);
				match(COUNT);
				setState(6472);
				match(LP_);
				setState(6473);
				match(ASTERISK_);
				setState(6474);
				match(RP_);
				}
			}

			setState(6477);
			match(WARNINGS);
			setState(6479);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LIMIT) {
				{
				setState(6478);
				limitClause();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowCharsetContext extends ParserRuleContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode CHARSET() { return getToken(MySQLStatementParser.CHARSET, 0); }
		public ShowCharsetContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_showCharset; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShowCharset(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowCharsetContext showCharset() throws RecognitionException {
		ShowCharsetContext _localctx = new ShowCharsetContext(_ctx, getState());
		enterRule(_localctx, 928, RULE_showCharset);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6481);
			match(SHOW);
			setState(6482);
			match(CHARSET);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetCharacterContext extends ParserRuleContext {
		public List SET() { return getTokens(MySQLStatementParser.SET); }
		public TerminalNode SET(int i) {
			return getToken(MySQLStatementParser.SET, i);
		}
		public TerminalNode CHARACTER() { return getToken(MySQLStatementParser.CHARACTER, 0); }
		public TerminalNode CHARSET() { return getToken(MySQLStatementParser.CHARSET, 0); }
		public CharsetNameContext charsetName() {
			return getRuleContext(CharsetNameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public SetCharacterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setCharacter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetCharacter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetCharacterContext setCharacter() throws RecognitionException {
		SetCharacterContext _localctx = new SetCharacterContext(_ctx, getState());
		enterRule(_localctx, 930, RULE_setCharacter);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6484);
			match(SET);
			setState(6488);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CHARACTER:
				{
				setState(6485);
				match(CHARACTER);
				setState(6486);
				match(SET);
				}
				break;
			case CHARSET:
				{
				setState(6487);
				match(CHARSET);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(6492);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,836,_ctx) ) {
			case 1:
				{
				setState(6490);
				charsetName();
				}
				break;
			case 2:
				{
				setState(6491);
				match(DEFAULT);
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CloneContext extends ParserRuleContext {
		public TerminalNode CLONE() { return getToken(MySQLStatementParser.CLONE, 0); }
		public CloneActionContext cloneAction() {
			return getRuleContext(CloneActionContext.class,0);
		}
		public CloneContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_clone; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitClone(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CloneContext clone() throws RecognitionException {
		CloneContext _localctx = new CloneContext(_ctx, getState());
		enterRule(_localctx, 932, RULE_clone);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6494);
			match(CLONE);
			setState(6495);
			cloneAction();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CloneActionContext extends ParserRuleContext {
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public TerminalNode DATA() { return getToken(MySQLStatementParser.DATA, 0); }
		public TerminalNode DIRECTORY() { return getToken(MySQLStatementParser.DIRECTORY, 0); }
		public CloneDirContext cloneDir() {
			return getRuleContext(CloneDirContext.class,0);
		}
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode INSTANCE() { return getToken(MySQLStatementParser.INSTANCE, 0); }
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public CloneInstanceContext cloneInstance() {
			return getRuleContext(CloneInstanceContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode REQUIRE() { return getToken(MySQLStatementParser.REQUIRE, 0); }
		public TerminalNode SSL() { return getToken(MySQLStatementParser.SSL, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public CloneActionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cloneAction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCloneAction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CloneActionContext cloneAction() throws RecognitionException {
		CloneActionContext _localctx = new CloneActionContext(_ctx, getState());
		enterRule(_localctx, 934, RULE_cloneAction);
		int _la;
		try {
			setState(6525);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case LOCAL:
				enterOuterAlt(_localctx, 1);
				{
				setState(6497);
				match(LOCAL);
				setState(6498);
				match(DATA);
				setState(6499);
				match(DIRECTORY);
				setState(6501);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6500);
					match(EQ_);
					}
				}

				setState(6503);
				cloneDir();
				}
				break;
			case INSTANCE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6504);
				match(INSTANCE);
				setState(6505);
				match(FROM);
				setState(6506);
				cloneInstance();
				setState(6507);
				match(IDENTIFIED);
				setState(6508);
				match(BY);
				setState(6509);
				string_();
				setState(6516);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DATA) {
					{
					setState(6510);
					match(DATA);
					setState(6511);
					match(DIRECTORY);
					setState(6513);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==EQ_) {
						{
						setState(6512);
						match(EQ_);
						}
					}

					setState(6515);
					cloneDir();
					}
				}

				setState(6523);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(6518);
					match(REQUIRE);
					setState(6520);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==NO) {
						{
						setState(6519);
						match(NO);
						}
					}

					setState(6522);
					match(SSL);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateLoadableFunctionContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public FunctionNameContext functionName() {
			return getRuleContext(FunctionNameContext.class,0);
		}
		public TerminalNode RETURNS() { return getToken(MySQLStatementParser.RETURNS, 0); }
		public TerminalNode SONAME() { return getToken(MySQLStatementParser.SONAME, 0); }
		public ShardLibraryNameContext shardLibraryName() {
			return getRuleContext(ShardLibraryNameContext.class,0);
		}
		public TerminalNode STRING() { return getToken(MySQLStatementParser.STRING, 0); }
		public TerminalNode INTEGER() { return getToken(MySQLStatementParser.INTEGER, 0); }
		public TerminalNode REAL() { return getToken(MySQLStatementParser.REAL, 0); }
		public TerminalNode DECIMAL() { return getToken(MySQLStatementParser.DECIMAL, 0); }
		public TerminalNode AGGREGATE() { return getToken(MySQLStatementParser.AGGREGATE, 0); }
		public CreateLoadableFunctionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createLoadableFunction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateLoadableFunction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateLoadableFunctionContext createLoadableFunction() throws RecognitionException {
		CreateLoadableFunctionContext _localctx = new CreateLoadableFunctionContext(_ctx, getState());
		enterRule(_localctx, 936, RULE_createLoadableFunction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6527);
			match(CREATE);
			setState(6529);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AGGREGATE) {
				{
				setState(6528);
				match(AGGREGATE);
				}
			}

			setState(6531);
			match(FUNCTION);
			setState(6532);
			functionName();
			setState(6533);
			match(RETURNS);
			setState(6534);
			_la = _input.LA(1);
			if ( !(_la==DECIMAL || _la==INTEGER || _la==REAL || _la==STRING) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6535);
			match(SONAME);
			setState(6536);
			shardLibraryName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InstallContext extends ParserRuleContext {
		public InstallComponentContext installComponent() {
			return getRuleContext(InstallComponentContext.class,0);
		}
		public InstallPluginContext installPlugin() {
			return getRuleContext(InstallPluginContext.class,0);
		}
		public InstallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_install; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInstall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InstallContext install() throws RecognitionException {
		InstallContext _localctx = new InstallContext(_ctx, getState());
		enterRule(_localctx, 938, RULE_install);
		try {
			setState(6540);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,844,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6538);
				installComponent();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6539);
				installPlugin();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UninstallContext extends ParserRuleContext {
		public UninstallComponentContext uninstallComponent() {
			return getRuleContext(UninstallComponentContext.class,0);
		}
		public UninstallPluginContext uninstallPlugin() {
			return getRuleContext(UninstallPluginContext.class,0);
		}
		public UninstallContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uninstall; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUninstall(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UninstallContext uninstall() throws RecognitionException {
		UninstallContext _localctx = new UninstallContext(_ctx, getState());
		enterRule(_localctx, 940, RULE_uninstall);
		try {
			setState(6544);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,845,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6542);
				uninstallComponent();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6543);
				uninstallPlugin();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InstallComponentContext extends ParserRuleContext {
		public TerminalNode INSTALL() { return getToken(MySQLStatementParser.INSTALL, 0); }
		public TerminalNode COMPONENT() { return getToken(MySQLStatementParser.COMPONENT, 0); }
		public List componentName() {
			return getRuleContexts(ComponentNameContext.class);
		}
		public ComponentNameContext componentName(int i) {
			return getRuleContext(ComponentNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public InstallComponentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_installComponent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInstallComponent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InstallComponentContext installComponent() throws RecognitionException {
		InstallComponentContext _localctx = new InstallComponentContext(_ctx, getState());
		enterRule(_localctx, 942, RULE_installComponent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6546);
			match(INSTALL);
			setState(6547);
			match(COMPONENT);
			setState(6548);
			componentName();
			setState(6553);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6549);
				match(COMMA_);
				setState(6550);
				componentName();
				}
				}
				setState(6555);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class InstallPluginContext extends ParserRuleContext {
		public TerminalNode INSTALL() { return getToken(MySQLStatementParser.INSTALL, 0); }
		public TerminalNode PLUGIN() { return getToken(MySQLStatementParser.PLUGIN, 0); }
		public PluginNameContext pluginName() {
			return getRuleContext(PluginNameContext.class,0);
		}
		public TerminalNode SONAME() { return getToken(MySQLStatementParser.SONAME, 0); }
		public ShardLibraryNameContext shardLibraryName() {
			return getRuleContext(ShardLibraryNameContext.class,0);
		}
		public InstallPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_installPlugin; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitInstallPlugin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final InstallPluginContext installPlugin() throws RecognitionException {
		InstallPluginContext _localctx = new InstallPluginContext(_ctx, getState());
		enterRule(_localctx, 944, RULE_installPlugin);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6556);
			match(INSTALL);
			setState(6557);
			match(PLUGIN);
			setState(6558);
			pluginName();
			setState(6559);
			match(SONAME);
			setState(6560);
			shardLibraryName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UninstallComponentContext extends ParserRuleContext {
		public TerminalNode UNINSTALL() { return getToken(MySQLStatementParser.UNINSTALL, 0); }
		public TerminalNode COMPONENT() { return getToken(MySQLStatementParser.COMPONENT, 0); }
		public List componentName() {
			return getRuleContexts(ComponentNameContext.class);
		}
		public ComponentNameContext componentName(int i) {
			return getRuleContext(ComponentNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public UninstallComponentContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uninstallComponent; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUninstallComponent(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UninstallComponentContext uninstallComponent() throws RecognitionException {
		UninstallComponentContext _localctx = new UninstallComponentContext(_ctx, getState());
		enterRule(_localctx, 946, RULE_uninstallComponent);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6562);
			match(UNINSTALL);
			setState(6563);
			match(COMPONENT);
			setState(6564);
			componentName();
			setState(6569);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6565);
				match(COMMA_);
				setState(6566);
				componentName();
				}
				}
				setState(6571);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UninstallPluginContext extends ParserRuleContext {
		public TerminalNode UNINSTALL() { return getToken(MySQLStatementParser.UNINSTALL, 0); }
		public TerminalNode PLUGIN() { return getToken(MySQLStatementParser.PLUGIN, 0); }
		public PluginNameContext pluginName() {
			return getRuleContext(PluginNameContext.class,0);
		}
		public UninstallPluginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_uninstallPlugin; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUninstallPlugin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UninstallPluginContext uninstallPlugin() throws RecognitionException {
		UninstallPluginContext _localctx = new UninstallPluginContext(_ctx, getState());
		enterRule(_localctx, 948, RULE_uninstallPlugin);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6572);
			match(UNINSTALL);
			setState(6573);
			match(PLUGIN);
			setState(6574);
			pluginName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AnalyzeTableContext extends ParserRuleContext {
		public TerminalNode ANALYZE() { return getToken(MySQLStatementParser.ANALYZE, 0); }
		public TableOrTablesContext tableOrTables() {
			return getRuleContext(TableOrTablesContext.class,0);
		}
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public HistogramContext histogram() {
			return getRuleContext(HistogramContext.class,0);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySQLStatementParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public AnalyzeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_analyzeTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAnalyzeTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AnalyzeTableContext analyzeTable() throws RecognitionException {
		AnalyzeTableContext _localctx = new AnalyzeTableContext(_ctx, getState());
		enterRule(_localctx, 950, RULE_analyzeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6576);
			match(ANALYZE);
			setState(6578);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL || _la==NO_WRITE_TO_BINLOG) {
				{
				setState(6577);
				_la = _input.LA(1);
				if ( !(_la==LOCAL || _la==NO_WRITE_TO_BINLOG) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6580);
			tableOrTables();
			setState(6581);
			tableList();
			setState(6583);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DROP || _la==UPDATE) {
				{
				setState(6582);
				histogram();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class HistogramContext extends ParserRuleContext {
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public TerminalNode HISTOGRAM() { return getToken(MySQLStatementParser.HISTOGRAM, 0); }
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode BUCKETS() { return getToken(MySQLStatementParser.BUCKETS, 0); }
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public HistogramContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_histogram; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitHistogram(this);
			else return visitor.visitChildren(this);
		}
	}

	public final HistogramContext histogram() throws RecognitionException {
		HistogramContext _localctx = new HistogramContext(_ctx, getState());
		enterRule(_localctx, 952, RULE_histogram);
		int _la;
		try {
			setState(6598);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case UPDATE:
				enterOuterAlt(_localctx, 1);
				{
				setState(6585);
				match(UPDATE);
				setState(6586);
				match(HISTOGRAM);
				setState(6587);
				match(ON);
				setState(6588);
				columnNames();
				setState(6592);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(6589);
					match(WITH);
					setState(6590);
					match(NUMBER_);
					setState(6591);
					match(BUCKETS);
					}
				}

				}
				break;
			case DROP:
				enterOuterAlt(_localctx, 2);
				{
				setState(6594);
				match(DROP);
				setState(6595);
				match(HISTOGRAM);
				setState(6596);
				match(ON);
				setState(6597);
				columnNames();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTableContext extends ParserRuleContext {
		public TerminalNode CHECK() { return getToken(MySQLStatementParser.CHECK, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public CheckTableOptionContext checkTableOption() {
			return getRuleContext(CheckTableOptionContext.class,0);
		}
		public CheckTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCheckTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckTableContext checkTable() throws RecognitionException {
		CheckTableContext _localctx = new CheckTableContext(_ctx, getState());
		enterRule(_localctx, 954, RULE_checkTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6600);
			match(CHECK);
			setState(6601);
			match(TABLE);
			setState(6602);
			tableList();
			setState(6604);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CHANGED || ((((_la - 252)) & ~0x3f) == 0 && ((1L << (_la - 252)) & ((1L << (EXTENDED - 252)) | (1L << (FAST - 252)) | (1L << (FOR - 252)))) != 0) || _la==MEDIUM || _la==QUICK) {
				{
				setState(6603);
				checkTableOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CheckTableOptionContext extends ParserRuleContext {
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode UPGRADE() { return getToken(MySQLStatementParser.UPGRADE, 0); }
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode FAST() { return getToken(MySQLStatementParser.FAST, 0); }
		public TerminalNode MEDIUM() { return getToken(MySQLStatementParser.MEDIUM, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode CHANGED() { return getToken(MySQLStatementParser.CHANGED, 0); }
		public CheckTableOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checkTableOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCheckTableOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CheckTableOptionContext checkTableOption() throws RecognitionException {
		CheckTableOptionContext _localctx = new CheckTableOptionContext(_ctx, getState());
		enterRule(_localctx, 956, RULE_checkTableOption);
		try {
			setState(6613);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case FOR:
				enterOuterAlt(_localctx, 1);
				{
				setState(6606);
				match(FOR);
				setState(6607);
				match(UPGRADE);
				}
				break;
			case QUICK:
				enterOuterAlt(_localctx, 2);
				{
				setState(6608);
				match(QUICK);
				}
				break;
			case FAST:
				enterOuterAlt(_localctx, 3);
				{
				setState(6609);
				match(FAST);
				}
				break;
			case MEDIUM:
				enterOuterAlt(_localctx, 4);
				{
				setState(6610);
				match(MEDIUM);
				}
				break;
			case EXTENDED:
				enterOuterAlt(_localctx, 5);
				{
				setState(6611);
				match(EXTENDED);
				}
				break;
			case CHANGED:
				enterOuterAlt(_localctx, 6);
				{
				setState(6612);
				match(CHANGED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChecksumTableContext extends ParserRuleContext {
		public TerminalNode CHECKSUM() { return getToken(MySQLStatementParser.CHECKSUM, 0); }
		public TableOrTablesContext tableOrTables() {
			return getRuleContext(TableOrTablesContext.class,0);
		}
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public ChecksumTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_checksumTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChecksumTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChecksumTableContext checksumTable() throws RecognitionException {
		ChecksumTableContext _localctx = new ChecksumTableContext(_ctx, getState());
		enterRule(_localctx, 958, RULE_checksumTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6615);
			match(CHECKSUM);
			setState(6616);
			tableOrTables();
			setState(6617);
			tableList();
			setState(6619);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED || _la==QUICK) {
				{
				setState(6618);
				_la = _input.LA(1);
				if ( !(_la==EXTENDED || _la==QUICK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptimizeTableContext extends ParserRuleContext {
		public TerminalNode OPTIMIZE() { return getToken(MySQLStatementParser.OPTIMIZE, 0); }
		public TableOrTablesContext tableOrTables() {
			return getRuleContext(TableOrTablesContext.class,0);
		}
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySQLStatementParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public OptimizeTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optimizeTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptimizeTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptimizeTableContext optimizeTable() throws RecognitionException {
		OptimizeTableContext _localctx = new OptimizeTableContext(_ctx, getState());
		enterRule(_localctx, 960, RULE_optimizeTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6621);
			match(OPTIMIZE);
			setState(6623);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL || _la==NO_WRITE_TO_BINLOG) {
				{
				setState(6622);
				_la = _input.LA(1);
				if ( !(_la==LOCAL || _la==NO_WRITE_TO_BINLOG) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6625);
			tableOrTables();
			setState(6626);
			tableList();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RepairTableContext extends ParserRuleContext {
		public TerminalNode REPAIR() { return getToken(MySQLStatementParser.REPAIR, 0); }
		public TableOrTablesContext tableOrTables() {
			return getRuleContext(TableOrTablesContext.class,0);
		}
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public TerminalNode QUICK() { return getToken(MySQLStatementParser.QUICK, 0); }
		public TerminalNode EXTENDED() { return getToken(MySQLStatementParser.EXTENDED, 0); }
		public TerminalNode USE_FRM() { return getToken(MySQLStatementParser.USE_FRM, 0); }
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySQLStatementParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public RepairTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_repairTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRepairTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RepairTableContext repairTable() throws RecognitionException {
		RepairTableContext _localctx = new RepairTableContext(_ctx, getState());
		enterRule(_localctx, 962, RULE_repairTable);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6628);
			match(REPAIR);
			setState(6630);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL || _la==NO_WRITE_TO_BINLOG) {
				{
				setState(6629);
				_la = _input.LA(1);
				if ( !(_la==LOCAL || _la==NO_WRITE_TO_BINLOG) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6632);
			tableOrTables();
			setState(6633);
			tableList();
			setState(6635);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==QUICK) {
				{
				setState(6634);
				match(QUICK);
				}
			}

			setState(6638);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==EXTENDED) {
				{
				setState(6637);
				match(EXTENDED);
				}
			}

			setState(6641);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USE_FRM) {
				{
				setState(6640);
				match(USE_FRM);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterResourceGroupContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode RESOURCE() { return getToken(MySQLStatementParser.RESOURCE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public GroupNameContext groupName() {
			return getRuleContext(GroupNameContext.class,0);
		}
		public TerminalNode VCPU() { return getToken(MySQLStatementParser.VCPU, 0); }
		public List vcpuSpec() {
			return getRuleContexts(VcpuSpecContext.class);
		}
		public VcpuSpecContext vcpuSpec(int i) {
			return getRuleContext(VcpuSpecContext.class,i);
		}
		public TerminalNode THREAD_PRIORITY() { return getToken(MySQLStatementParser.THREAD_PRIORITY, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode FORCE() { return getToken(MySQLStatementParser.FORCE, 0); }
		public AlterResourceGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterResourceGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterResourceGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterResourceGroupContext alterResourceGroup() throws RecognitionException {
		AlterResourceGroupContext _localctx = new AlterResourceGroupContext(_ctx, getState());
		enterRule(_localctx, 964, RULE_alterResourceGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6643);
			match(ALTER);
			setState(6644);
			match(RESOURCE);
			setState(6645);
			match(GROUP);
			setState(6646);
			groupName();
			setState(6659);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VCPU) {
				{
				setState(6647);
				match(VCPU);
				setState(6649);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6648);
					match(EQ_);
					}
				}

				setState(6651);
				vcpuSpec();
				setState(6656);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6652);
					match(COMMA_);
					setState(6653);
					vcpuSpec();
					}
					}
					setState(6658);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6666);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==THREAD_PRIORITY) {
				{
				setState(6661);
				match(THREAD_PRIORITY);
				setState(6663);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6662);
					match(EQ_);
					}
				}

				setState(6665);
				match(NUMBER_);
				}
			}

			setState(6673);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case ENABLE:
				{
				setState(6668);
				match(ENABLE);
				}
				break;
			case DISABLE:
				{
				setState(6669);
				match(DISABLE);
				setState(6671);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FORCE) {
					{
					setState(6670);
					match(FORCE);
					}
				}

				}
				break;
			case EOF:
			case SEMI_:
				break;
			default:
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class VcpuSpecContext extends ParserRuleContext {
		public List NUMBER_() { return getTokens(MySQLStatementParser.NUMBER_); }
		public TerminalNode NUMBER_(int i) {
			return getToken(MySQLStatementParser.NUMBER_, i);
		}
		public TerminalNode MINUS_() { return getToken(MySQLStatementParser.MINUS_, 0); }
		public VcpuSpecContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_vcpuSpec; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitVcpuSpec(this);
			else return visitor.visitChildren(this);
		}
	}

	public final VcpuSpecContext vcpuSpec() throws RecognitionException {
		VcpuSpecContext _localctx = new VcpuSpecContext(_ctx, getState());
		enterRule(_localctx, 966, RULE_vcpuSpec);
		try {
			setState(6679);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,867,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6675);
				match(NUMBER_);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6676);
				match(NUMBER_);
				setState(6677);
				match(MINUS_);
				setState(6678);
				match(NUMBER_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateResourceGroupContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode RESOURCE() { return getToken(MySQLStatementParser.RESOURCE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public GroupNameContext groupName() {
			return getRuleContext(GroupNameContext.class,0);
		}
		public TerminalNode TYPE() { return getToken(MySQLStatementParser.TYPE, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public TerminalNode SYSTEM() { return getToken(MySQLStatementParser.SYSTEM, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public TerminalNode VCPU() { return getToken(MySQLStatementParser.VCPU, 0); }
		public List vcpuSpec() {
			return getRuleContexts(VcpuSpecContext.class);
		}
		public VcpuSpecContext vcpuSpec(int i) {
			return getRuleContext(VcpuSpecContext.class,i);
		}
		public TerminalNode THREAD_PRIORITY() { return getToken(MySQLStatementParser.THREAD_PRIORITY, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode ENABLE() { return getToken(MySQLStatementParser.ENABLE, 0); }
		public TerminalNode DISABLE() { return getToken(MySQLStatementParser.DISABLE, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CreateResourceGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createResourceGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateResourceGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateResourceGroupContext createResourceGroup() throws RecognitionException {
		CreateResourceGroupContext _localctx = new CreateResourceGroupContext(_ctx, getState());
		enterRule(_localctx, 968, RULE_createResourceGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6681);
			match(CREATE);
			setState(6682);
			match(RESOURCE);
			setState(6683);
			match(GROUP);
			setState(6684);
			groupName();
			setState(6685);
			match(TYPE);
			setState(6686);
			match(EQ_);
			setState(6687);
			_la = _input.LA(1);
			if ( !(_la==SYSTEM || _la==USER) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(6700);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==VCPU) {
				{
				setState(6688);
				match(VCPU);
				setState(6690);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6689);
					match(EQ_);
					}
				}

				setState(6692);
				vcpuSpec();
				setState(6697);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6693);
					match(COMMA_);
					setState(6694);
					vcpuSpec();
					}
					}
					setState(6699);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			setState(6707);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==THREAD_PRIORITY) {
				{
				setState(6702);
				match(THREAD_PRIORITY);
				setState(6704);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==EQ_) {
					{
					setState(6703);
					match(EQ_);
					}
				}

				setState(6706);
				match(NUMBER_);
				}
			}

			setState(6710);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISABLE || _la==ENABLE) {
				{
				setState(6709);
				_la = _input.LA(1);
				if ( !(_la==DISABLE || _la==ENABLE) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropResourceGroupContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode RESOURCE() { return getToken(MySQLStatementParser.RESOURCE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public GroupNameContext groupName() {
			return getRuleContext(GroupNameContext.class,0);
		}
		public TerminalNode FORCE() { return getToken(MySQLStatementParser.FORCE, 0); }
		public DropResourceGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropResourceGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropResourceGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropResourceGroupContext dropResourceGroup() throws RecognitionException {
		DropResourceGroupContext _localctx = new DropResourceGroupContext(_ctx, getState());
		enterRule(_localctx, 970, RULE_dropResourceGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6712);
			match(DROP);
			setState(6713);
			match(RESOURCE);
			setState(6714);
			match(GROUP);
			setState(6715);
			groupName();
			setState(6717);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FORCE) {
				{
				setState(6716);
				match(FORCE);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetResourceGroupContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode RESOURCE() { return getToken(MySQLStatementParser.RESOURCE, 0); }
		public TerminalNode GROUP() { return getToken(MySQLStatementParser.GROUP, 0); }
		public GroupNameContext groupName() {
			return getRuleContext(GroupNameContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public List NUMBER_() { return getTokens(MySQLStatementParser.NUMBER_); }
		public TerminalNode NUMBER_(int i) {
			return getToken(MySQLStatementParser.NUMBER_, i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SetResourceGroupContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setResourceGroup; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetResourceGroup(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetResourceGroupContext setResourceGroup() throws RecognitionException {
		SetResourceGroupContext _localctx = new SetResourceGroupContext(_ctx, getState());
		enterRule(_localctx, 972, RULE_setResourceGroup);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6719);
			match(SET);
			setState(6720);
			match(RESOURCE);
			setState(6721);
			match(GROUP);
			setState(6722);
			groupName();
			setState(6732);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(6723);
				match(FOR);
				setState(6724);
				match(NUMBER_);
				setState(6729);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6725);
					match(COMMA_);
					setState(6726);
					match(NUMBER_);
					}
					}
					setState(6731);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BinlogContext extends ParserRuleContext {
		public TerminalNode BINLOG() { return getToken(MySQLStatementParser.BINLOG, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public BinlogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_binlog; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBinlog(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BinlogContext binlog() throws RecognitionException {
		BinlogContext _localctx = new BinlogContext(_ctx, getState());
		enterRule(_localctx, 974, RULE_binlog);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6734);
			match(BINLOG);
			setState(6735);
			stringLiterals();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CacheIndexContext extends ParserRuleContext {
		public TerminalNode CACHE() { return getToken(MySQLStatementParser.CACHE, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode IN() { return getToken(MySQLStatementParser.IN, 0); }
		public List cacheTableIndexList() {
			return getRuleContexts(CacheTableIndexListContext.class);
		}
		public CacheTableIndexListContext cacheTableIndexList(int i) {
			return getRuleContext(CacheTableIndexListContext.class,i);
		}
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public PartitionListContext partitionList() {
			return getRuleContext(PartitionListContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CacheIndexContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cacheIndex; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCacheIndex(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CacheIndexContext cacheIndex() throws RecognitionException {
		CacheIndexContext _localctx = new CacheIndexContext(_ctx, getState());
		enterRule(_localctx, 976, RULE_cacheIndex);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6737);
			match(CACHE);
			setState(6738);
			match(INDEX);
			setState(6753);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,878,_ctx) ) {
			case 1:
				{
				setState(6739);
				cacheTableIndexList();
				setState(6744);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6740);
					match(COMMA_);
					setState(6741);
					cacheTableIndexList();
					}
					}
					setState(6746);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				{
				setState(6747);
				tableName();
				setState(6748);
				match(PARTITION);
				setState(6749);
				match(LP_);
				setState(6750);
				partitionList();
				setState(6751);
				match(RP_);
				}
				break;
			}
			setState(6755);
			match(IN);
			setState(6758);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				{
				setState(6756);
				identifier();
				}
				break;
			case DEFAULT:
				{
				setState(6757);
				match(DEFAULT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CacheTableIndexListContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public List indexName() {
			return getRuleContexts(IndexNameContext.class);
		}
		public IndexNameContext indexName(int i) {
			return getRuleContext(IndexNameContext.class,i);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CacheTableIndexListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_cacheTableIndexList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCacheTableIndexList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CacheTableIndexListContext cacheTableIndexList() throws RecognitionException {
		CacheTableIndexListContext _localctx = new CacheTableIndexListContext(_ctx, getState());
		enterRule(_localctx, 978, RULE_cacheTableIndexList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6760);
			tableName();
			setState(6773);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INDEX || _la==KEY) {
				{
				setState(6761);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6762);
				match(LP_);
				setState(6763);
				indexName();
				setState(6768);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6764);
					match(COMMA_);
					setState(6765);
					indexName();
					}
					}
					setState(6770);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6771);
				match(RP_);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PartitionListContext extends ParserRuleContext {
		public List partitionName() {
			return getRuleContexts(PartitionNameContext.class);
		}
		public PartitionNameContext partitionName(int i) {
			return getRuleContext(PartitionNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public PartitionListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_partitionList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPartitionList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PartitionListContext partitionList() throws RecognitionException {
		PartitionListContext _localctx = new PartitionListContext(_ctx, getState());
		enterRule(_localctx, 980, RULE_partitionList);
		int _la;
		try {
			setState(6784);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX:
			case MIN:
			case SUM:
			case COUNT:
			case GROUP_CONCAT:
			case CAST:
			case POSITION:
			case SUBSTRING:
			case SUBSTR:
			case EXTRACT:
			case TRIM:
			case LAST_DAY:
			case TRADITIONAL:
			case TREE:
			case MYSQL_MAIN:
			case MYSQL_ADMIN:
			case INSTANT:
			case INPLACE:
			case COPY:
			case UL_BINARY:
			case AUTOCOMMIT:
			case INNODB:
			case REDO_LOG:
			case ACCOUNT:
			case ACTION:
			case ACTIVE:
			case ADMIN:
			case AFTER:
			case AGAINST:
			case AGGREGATE:
			case ALGORITHM:
			case ALWAYS:
			case ANY:
			case ARRAY:
			case ASCII:
			case AT:
			case ATTRIBUTE:
			case AUTOEXTEND_SIZE:
			case AUTO_INCREMENT:
			case AVG:
			case BIT_XOR:
			case AVG_ROW_LENGTH:
			case BACKUP:
			case BEGIN:
			case BINLOG:
			case BIT:
			case BLOCK:
			case BOOL:
			case BOOLEAN:
			case BTREE:
			case BUCKETS:
			case BYTE:
			case CACHE:
			case CASCADED:
			case CATALOG_NAME:
			case CHAIN:
			case CHANGED:
			case CHANNEL:
			case CHARSET:
			case CHECKSUM:
			case CIPHER:
			case CLASS_ORIGIN:
			case CLIENT:
			case CLONE:
			case CLOSE:
			case COALESCE:
			case CODE:
			case COLLATION:
			case COLUMNS:
			case COLUMN_FORMAT:
			case COLUMN_NAME:
			case COMMENT:
			case COMMIT:
			case COMMITTED:
			case COMPACT:
			case COMPLETION:
			case COMPONENT:
			case COMPRESSED:
			case COMPRESSION:
			case CONCURRENT:
			case CONNECTION:
			case CONSISTENT:
			case CONSTRAINT_CATALOG:
			case CONSTRAINT_NAME:
			case CONSTRAINT_SCHEMA:
			case CONTAINS:
			case CONTEXT:
			case CPU:
			case CREATE:
			case CURRENT:
			case CURSOR_NAME:
			case DATA:
			case DATAFILE:
			case DATE:
			case DATETIME:
			case DAY:
			case DEALLOCATE:
			case DEFAULT_AUTH:
			case DEFINER:
			case DEFINITION:
			case DELAY_KEY_WRITE:
			case DESCRIPTION:
			case DIAGNOSTICS:
			case DIRECTORY:
			case DISABLE:
			case DISCARD:
			case DISK:
			case DO:
			case DUMPFILE:
			case DUPLICATE:
			case DYNAMIC:
			case ENABLE:
			case ENCRYPTION:
			case END:
			case ENDS:
			case ENFORCED:
			case ENGINE:
			case ENGINES:
			case ENGINE_ATTRIBUTE:
			case ENUM:
			case ERROR:
			case ERRORS:
			case ESCAPE:
			case EVENT:
			case EVENTS:
			case EVERY:
			case EXCHANGE:
			case EXCLUDE:
			case EXECUTE:
			case EXPANSION:
			case EXPIRE:
			case EXPORT:
			case EXTENDED:
			case EXTENT_SIZE:
			case FAILED_LOGIN_ATTEMPTS:
			case FAST:
			case FAULTS:
			case FILE:
			case FILE_BLOCK_SIZE:
			case FILTER:
			case FIRST:
			case FIXED:
			case FLUSH:
			case FOLLOWING:
			case FOLLOWS:
			case FORMAT:
			case FOUND:
			case FULL:
			case GENERAL:
			case GEOMETRY:
			case GEOMETRYCOLLECTION:
			case GET_FORMAT:
			case GET_MASTER_PUBLIC_KEY:
			case GLOBAL:
			case GRANTS:
			case GROUP_REPLICATION:
			case HANDLER:
			case HASH:
			case HELP:
			case HISTOGRAM:
			case HISTORY:
			case HOST:
			case HOSTS:
			case HOUR:
			case IDENTIFIED:
			case IGNORE_SERVER_IDS:
			case IMPORT:
			case INACTIVE:
			case INDEXES:
			case INITIAL_SIZE:
			case INSERT_METHOD:
			case INSTALL:
			case INSTANCE:
			case INVISIBLE:
			case INVOKER:
			case IO:
			case IPC:
			case ISOLATION:
			case ISSUER:
			case JSON:
			case JSON_VALUE:
			case KEY:
			case KEY_BLOCK_SIZE:
			case LANGUAGE:
			case LAST:
			case LAST_VALUE:
			case LEAVES:
			case LESS:
			case LEVEL:
			case LINESTRING:
			case LIST:
			case LOCAL:
			case LOCKED:
			case LOCKS:
			case LOGFILE:
			case LOGS:
			case MASTER:
			case MASTER_AUTO_POSITION:
			case MASTER_COMPRESSION_ALGORITHM:
			case MASTER_CONNECT_RETRY:
			case MASTER_DELAY:
			case MASTER_HEARTBEAT_PERIOD:
			case MASTER_HOST:
			case MASTER_LOG_FILE:
			case MASTER_LOG_POS:
			case MASTER_PASSWORD:
			case MASTER_PORT:
			case MASTER_PUBLIC_KEY_PATH:
			case MASTER_RETRY_COUNT:
			case MASTER_SERVER_ID:
			case MASTER_SSL:
			case MASTER_SSL_CA:
			case MASTER_SSL_CAPATH:
			case MASTER_SSL_CERT:
			case MASTER_SSL_CIPHER:
			case MASTER_SSL_CRL:
			case MASTER_SSL_CRLPATH:
			case MASTER_SSL_KEY:
			case MASTER_TLS_CIPHERSUITES:
			case MASTER_TLS_VERSION:
			case MASTER_USER:
			case MASTER_ZSTD_COMPRESSION_LEVEL:
			case MAXVALUE:
			case MAX_CONNECTIONS_PER_HOUR:
			case MAX_QUERIES_PER_HOUR:
			case MAX_ROWS:
			case MAX_SIZE:
			case MAX_UPDATES_PER_HOUR:
			case MAX_USER_CONNECTIONS:
			case MEDIUM:
			case MEMBER:
			case MEMORY:
			case MERGE:
			case MESSAGE_TEXT:
			case MICROSECOND:
			case MIGRATE:
			case MINUTE:
			case MIN_ROWS:
			case MODE:
			case MODIFY:
			case MONTH:
			case MULTILINESTRING:
			case MULTIPOINT:
			case MULTIPOLYGON:
			case MUTEX:
			case MYSQL_ERRNO:
			case NAME:
			case NAMES:
			case NATIONAL:
			case NCHAR:
			case NDBCLUSTER:
			case NESTED:
			case NETWORK_NAMESPACE:
			case NEVER:
			case NEW:
			case NEXT:
			case NO:
			case NODEGROUP:
			case NONE:
			case NOWAIT:
			case NO_WAIT:
			case NULLS:
			case NUMBER:
			case NVARCHAR:
			case OFF:
			case OFFSET:
			case OJ:
			case OLD:
			case ONE:
			case ONLY:
			case OPEN:
			case OPTIONAL:
			case OPTIONS:
			case ORDINALITY:
			case ORGANIZATION:
			case OTHERS:
			case OWNER:
			case PACK_KEYS:
			case PAGE:
			case PARSER:
			case PARTIAL:
			case PARTITIONING:
			case PARTITIONS:
			case PASSWORD:
			case PASSWORD_LOCK_TIME:
			case PATH:
			case PERSIST:
			case PERSIST_ONLY:
			case PHASE:
			case PLUGIN:
			case PLUGINS:
			case PLUGIN_DIR:
			case POINT:
			case POLYGON:
			case PORT:
			case PRECEDES:
			case PRECEDING:
			case PREPARE:
			case PRESERVE:
			case PREV:
			case PRIMARY:
			case PRIVILEGES:
			case PRIVILEGE_CHECKS_USER:
			case PROCESS:
			case PROCESSLIST:
			case PROFILE:
			case PROFILES:
			case PROXY:
			case QUARTER:
			case QUERY:
			case QUICK:
			case RANDOM:
			case READ_ONLY:
			case REBUILD:
			case RECOVER:
			case REDO_BUFFER_SIZE:
			case REDUNDANT:
			case REFERENCE:
			case RELAY:
			case RELAYLOG:
			case RELAY_LOG_FILE:
			case RELAY_LOG_POS:
			case RELAY_THREAD:
			case RELOAD:
			case REMOVE:
			case REORGANIZE:
			case REPAIR:
			case REPEATABLE:
			case REPLICATE_DO_DB:
			case REPLICATE_DO_TABLE:
			case REPLICATE_IGNORE_DB:
			case REPLICATE_IGNORE_TABLE:
			case REPLICATE_REWRITE_DB:
			case REPLICATE_WILD_DO_TABLE:
			case REPLICATE_WILD_IGNORE_TABLE:
			case REPLICATION:
			case REQUIRE_ROW_FORMAT:
			case RESET:
			case RESOURCE:
			case RESPECT:
			case RESTART:
			case RESTORE:
			case RESUME:
			case RETAIN:
			case RETURNED_SQLSTATE:
			case RETURNING:
			case RETURNS:
			case REUSE:
			case REVERSE:
			case ROLE:
			case ROLLBACK:
			case ROLLUP:
			case ROTATE:
			case ROUTINE:
			case ROW_COUNT:
			case ROW_FORMAT:
			case RTREE:
			case SAVEPOINT:
			case SCHEDULE:
			case SCHEMA_NAME:
			case SECOND:
			case SECONDARY:
			case SECONDARY_ENGINE:
			case SECONDARY_ENGINE_ATTRIBUTE:
			case SECONDARY_LOAD:
			case SECONDARY_UNLOAD:
			case SECURITY:
			case SERIAL:
			case SERIALIZABLE:
			case SERVER:
			case SESSION:
			case SHARE:
			case SHUTDOWN:
			case SIGNED:
			case SIMPLE:
			case SLAVE:
			case SLOW:
			case SNAPSHOT:
			case SOCKET:
			case SONAME:
			case SOUNDS:
			case SOURCE:
			case SQL_AFTER_GTIDS:
			case SQL_AFTER_MTS_GAPS:
			case SQL_BEFORE_GTIDS:
			case SQL_BUFFER_RESULT:
			case SQL_NO_CACHE:
			case SQL_THREAD:
			case SRID:
			case STACKED:
			case START:
			case STARTS:
			case STATS_AUTO_RECALC:
			case STATS_PERSISTENT:
			case STATS_SAMPLE_PAGES:
			case STATUS:
			case STOP:
			case STORAGE:
			case STREAM:
			case STRING:
			case SUBCLASS_ORIGIN:
			case SUBJECT:
			case SUBPARTITION:
			case SUBPARTITIONS:
			case SUPER:
			case SUSPEND:
			case SWAPS:
			case SWITCHES:
			case TABLES:
			case TABLESPACE:
			case TABLE_CHECKSUM:
			case TABLE_NAME:
			case TEMPORARY:
			case TEMPTABLE:
			case TEXT:
			case THAN:
			case THREAD_PRIORITY:
			case TIES:
			case TIME:
			case TIMESTAMP:
			case TIMESTAMP_ADD:
			case TIMESTAMP_DIFF:
			case TLS:
			case TRANSACTION:
			case TRIGGERS:
			case TRUNCATE:
			case TYPE:
			case TYPES:
			case UNBOUNDED:
			case UNCOMMITTED:
			case UNDEFINED:
			case UNDOFILE:
			case UNDO_BUFFER_SIZE:
			case UNICODE:
			case UNINSTALL:
			case UNKNOWN:
			case UNTIL:
			case UPGRADE:
			case USER:
			case USER_RESOURCES:
			case USE_FRM:
			case UTC_DATE:
			case UTC_TIME:
			case UTC_TIMESTAMP:
			case VALIDATION:
			case VALUE:
			case VARIABLES:
			case VCPU:
			case VIEW:
			case VISIBLE:
			case WAIT:
			case WARNINGS:
			case WEEK:
			case WEIGHT_STRING:
			case WITHOUT:
			case WORK:
			case WRAPPER:
			case X509:
			case XA:
			case XID:
			case XML:
			case YEAR:
			case DOUBLE_QUOTED_TEXT:
			case UNDERSCORE_CHARSET:
			case IDENTIFIER_:
				enterOuterAlt(_localctx, 1);
				{
				setState(6775);
				partitionName();
				setState(6780);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6776);
					match(COMMA_);
					setState(6777);
					partitionName();
					}
					}
					setState(6782);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case ALL:
				enterOuterAlt(_localctx, 2);
				{
				setState(6783);
				match(ALL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushContext extends ParserRuleContext {
		public TerminalNode FLUSH() { return getToken(MySQLStatementParser.FLUSH, 0); }
		public List flushOption() {
			return getRuleContexts(FlushOptionContext.class);
		}
		public FlushOptionContext flushOption(int i) {
			return getRuleContext(FlushOptionContext.class,i);
		}
		public TablesOptionContext tablesOption() {
			return getRuleContext(TablesOptionContext.class,0);
		}
		public TerminalNode NO_WRITE_TO_BINLOG() { return getToken(MySQLStatementParser.NO_WRITE_TO_BINLOG, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public FlushContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flush; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFlush(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FlushContext flush() throws RecognitionException {
		FlushContext _localctx = new FlushContext(_ctx, getState());
		enterRule(_localctx, 982, RULE_flush);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6786);
			match(FLUSH);
			setState(6788);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==LOCAL || _la==NO_WRITE_TO_BINLOG) {
				{
				setState(6787);
				_la = _input.LA(1);
				if ( !(_la==LOCAL || _la==NO_WRITE_TO_BINLOG) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6799);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BINARY:
			case ENGINE:
			case ERROR:
			case GENERAL:
			case HOSTS:
			case LOGS:
			case OPTIMIZER_COSTS:
			case PRIVILEGES:
			case RELAY:
			case SLOW:
			case STATUS:
			case USER_RESOURCES:
				{
				setState(6790);
				flushOption();
				setState(6795);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6791);
					match(COMMA_);
					setState(6792);
					flushOption();
					}
					}
					setState(6797);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case TABLES:
				{
				setState(6798);
				tablesOption();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FlushOptionContext extends ParserRuleContext {
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode LOGS() { return getToken(MySQLStatementParser.LOGS, 0); }
		public TerminalNode ENGINE() { return getToken(MySQLStatementParser.ENGINE, 0); }
		public TerminalNode ERROR() { return getToken(MySQLStatementParser.ERROR, 0); }
		public TerminalNode GENERAL() { return getToken(MySQLStatementParser.GENERAL, 0); }
		public TerminalNode HOSTS() { return getToken(MySQLStatementParser.HOSTS, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySQLStatementParser.PRIVILEGES, 0); }
		public TerminalNode OPTIMIZER_COSTS() { return getToken(MySQLStatementParser.OPTIMIZER_COSTS, 0); }
		public TerminalNode RELAY() { return getToken(MySQLStatementParser.RELAY, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode CHANNEL() { return getToken(MySQLStatementParser.CHANNEL, 0); }
		public ChannelNameContext channelName() {
			return getRuleContext(ChannelNameContext.class,0);
		}
		public TerminalNode SLOW() { return getToken(MySQLStatementParser.SLOW, 0); }
		public TerminalNode STATUS() { return getToken(MySQLStatementParser.STATUS, 0); }
		public TerminalNode USER_RESOURCES() { return getToken(MySQLStatementParser.USER_RESOURCES, 0); }
		public FlushOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_flushOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFlushOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FlushOptionContext flushOption() throws RecognitionException {
		FlushOptionContext _localctx = new FlushOptionContext(_ctx, getState());
		enterRule(_localctx, 984, RULE_flushOption);
		int _la;
		try {
			setState(6824);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BINARY:
				enterOuterAlt(_localctx, 1);
				{
				setState(6801);
				match(BINARY);
				setState(6802);
				match(LOGS);
				}
				break;
			case ENGINE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6803);
				match(ENGINE);
				setState(6804);
				match(LOGS);
				}
				break;
			case ERROR:
				enterOuterAlt(_localctx, 3);
				{
				setState(6805);
				match(ERROR);
				setState(6806);
				match(LOGS);
				}
				break;
			case GENERAL:
				enterOuterAlt(_localctx, 4);
				{
				setState(6807);
				match(GENERAL);
				setState(6808);
				match(LOGS);
				}
				break;
			case HOSTS:
				enterOuterAlt(_localctx, 5);
				{
				setState(6809);
				match(HOSTS);
				}
				break;
			case LOGS:
				enterOuterAlt(_localctx, 6);
				{
				setState(6810);
				match(LOGS);
				}
				break;
			case PRIVILEGES:
				enterOuterAlt(_localctx, 7);
				{
				setState(6811);
				match(PRIVILEGES);
				}
				break;
			case OPTIMIZER_COSTS:
				enterOuterAlt(_localctx, 8);
				{
				setState(6812);
				match(OPTIMIZER_COSTS);
				}
				break;
			case RELAY:
				enterOuterAlt(_localctx, 9);
				{
				setState(6813);
				match(RELAY);
				setState(6814);
				match(LOGS);
				setState(6818);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(6815);
					match(FOR);
					setState(6816);
					match(CHANNEL);
					setState(6817);
					channelName();
					}
				}

				}
				break;
			case SLOW:
				enterOuterAlt(_localctx, 10);
				{
				setState(6820);
				match(SLOW);
				setState(6821);
				match(LOGS);
				}
				break;
			case STATUS:
				enterOuterAlt(_localctx, 11);
				{
				setState(6822);
				match(STATUS);
				}
				break;
			case USER_RESOURCES:
				enterOuterAlt(_localctx, 12);
				{
				setState(6823);
				match(USER_RESOURCES);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TablesOptionContext extends ParserRuleContext {
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public List tableName() {
			return getRuleContexts(TableNameContext.class);
		}
		public TableNameContext tableName(int i) {
			return getRuleContext(TableNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public TerminalNode LOCK() { return getToken(MySQLStatementParser.LOCK, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode EXPORT() { return getToken(MySQLStatementParser.EXPORT, 0); }
		public TablesOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tablesOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTablesOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TablesOptionContext tablesOption() throws RecognitionException {
		TablesOptionContext _localctx = new TablesOptionContext(_ctx, getState());
		enterRule(_localctx, 986, RULE_tablesOption);
		int _la;
		try {
			setState(6865);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,892,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6826);
				match(TABLES);
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6827);
				match(TABLES);
				setState(6828);
				tableName();
				setState(6833);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6829);
					match(COMMA_);
					setState(6830);
					tableName();
					}
					}
					setState(6835);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6836);
				match(TABLES);
				setState(6837);
				match(WITH);
				setState(6838);
				match(READ);
				setState(6839);
				match(LOCK);
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6840);
				match(TABLES);
				setState(6841);
				tableName();
				setState(6846);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6842);
					match(COMMA_);
					setState(6843);
					tableName();
					}
					}
					setState(6848);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6849);
				match(WITH);
				setState(6850);
				match(READ);
				setState(6851);
				match(LOCK);
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6853);
				match(TABLES);
				setState(6854);
				tableName();
				setState(6859);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6855);
					match(COMMA_);
					setState(6856);
					tableName();
					}
					}
					setState(6861);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6862);
				match(FOR);
				setState(6863);
				match(EXPORT);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class KillContext extends ParserRuleContext {
		public TerminalNode KILL() { return getToken(MySQLStatementParser.KILL, 0); }
		public TerminalNode IDENTIFIER_() { return getToken(MySQLStatementParser.IDENTIFIER_, 0); }
		public TerminalNode CONNECTION() { return getToken(MySQLStatementParser.CONNECTION, 0); }
		public TerminalNode QUERY() { return getToken(MySQLStatementParser.QUERY, 0); }
		public KillContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_kill; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitKill(this);
			else return visitor.visitChildren(this);
		}
	}

	public final KillContext kill() throws RecognitionException {
		KillContext _localctx = new KillContext(_ctx, getState());
		enterRule(_localctx, 988, RULE_kill);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6867);
			match(KILL);
			setState(6869);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==CONNECTION || _la==QUERY) {
				{
				setState(6868);
				_la = _input.LA(1);
				if ( !(_la==CONNECTION || _la==QUERY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
			}

			setState(6871);
			match(IDENTIFIER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadIndexInfoContext extends ParserRuleContext {
		public TerminalNode LOAD() { return getToken(MySQLStatementParser.LOAD, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode INTO() { return getToken(MySQLStatementParser.INTO, 0); }
		public TerminalNode CACHE() { return getToken(MySQLStatementParser.CACHE, 0); }
		public List loadTableIndexList() {
			return getRuleContexts(LoadTableIndexListContext.class);
		}
		public LoadTableIndexListContext loadTableIndexList(int i) {
			return getRuleContext(LoadTableIndexListContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public LoadIndexInfoContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadIndexInfo; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLoadIndexInfo(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadIndexInfoContext loadIndexInfo() throws RecognitionException {
		LoadIndexInfoContext _localctx = new LoadIndexInfoContext(_ctx, getState());
		enterRule(_localctx, 990, RULE_loadIndexInfo);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6873);
			match(LOAD);
			setState(6874);
			match(INDEX);
			setState(6875);
			match(INTO);
			setState(6876);
			match(CACHE);
			setState(6877);
			loadTableIndexList();
			setState(6882);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(6878);
				match(COMMA_);
				setState(6879);
				loadTableIndexList();
				}
				}
				setState(6884);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LoadTableIndexListContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public TerminalNode PARTITION() { return getToken(MySQLStatementParser.PARTITION, 0); }
		public List LP_() { return getTokens(MySQLStatementParser.LP_); }
		public TerminalNode LP_(int i) {
			return getToken(MySQLStatementParser.LP_, i);
		}
		public PartitionListContext partitionList() {
			return getRuleContext(PartitionListContext.class,0);
		}
		public List RP_() { return getTokens(MySQLStatementParser.RP_); }
		public TerminalNode RP_(int i) {
			return getToken(MySQLStatementParser.RP_, i);
		}
		public List indexName() {
			return getRuleContexts(IndexNameContext.class);
		}
		public IndexNameContext indexName(int i) {
			return getRuleContext(IndexNameContext.class,i);
		}
		public TerminalNode IGNORE() { return getToken(MySQLStatementParser.IGNORE, 0); }
		public TerminalNode LEAVES() { return getToken(MySQLStatementParser.LEAVES, 0); }
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public TerminalNode KEY() { return getToken(MySQLStatementParser.KEY, 0); }
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public LoadTableIndexListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_loadTableIndexList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLoadTableIndexList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LoadTableIndexListContext loadTableIndexList() throws RecognitionException {
		LoadTableIndexListContext _localctx = new LoadTableIndexListContext(_ctx, getState());
		enterRule(_localctx, 992, RULE_loadTableIndexList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6885);
			tableName();
			setState(6891);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PARTITION) {
				{
				setState(6886);
				match(PARTITION);
				setState(6887);
				match(LP_);
				setState(6888);
				partitionList();
				setState(6889);
				match(RP_);
				}
			}

			setState(6905);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==INDEX || _la==KEY) {
				{
				setState(6893);
				_la = _input.LA(1);
				if ( !(_la==INDEX || _la==KEY) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(6894);
				match(LP_);
				setState(6895);
				indexName();
				setState(6900);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6896);
					match(COMMA_);
					setState(6897);
					indexName();
					}
					}
					setState(6902);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				setState(6903);
				match(RP_);
				}
			}

			setState(6909);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IGNORE) {
				{
				setState(6907);
				match(IGNORE);
				setState(6908);
				match(LEAVES);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetStatementContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySQLStatementParser.RESET, 0); }
		public List resetOption() {
			return getRuleContexts(ResetOptionContext.class);
		}
		public ResetOptionContext resetOption(int i) {
			return getRuleContext(ResetOptionContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public ResetPersistContext resetPersist() {
			return getRuleContext(ResetPersistContext.class,0);
		}
		public ResetStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitResetStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetStatementContext resetStatement() throws RecognitionException {
		ResetStatementContext _localctx = new ResetStatementContext(_ctx, getState());
		enterRule(_localctx, 994, RULE_resetStatement);
		int _la;
		try {
			setState(6921);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,900,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6911);
				match(RESET);
				setState(6912);
				resetOption();
				setState(6917);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(6913);
					match(COMMA_);
					setState(6914);
					resetOption();
					}
					}
					setState(6919);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6920);
				resetPersist();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetOptionContext extends ParserRuleContext {
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public BinaryLogFileIndexNumberContext binaryLogFileIndexNumber() {
			return getRuleContext(BinaryLogFileIndexNumberContext.class,0);
		}
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public TerminalNode REPLICA() { return getToken(MySQLStatementParser.REPLICA, 0); }
		public TerminalNode QUERY() { return getToken(MySQLStatementParser.QUERY, 0); }
		public TerminalNode CACHE() { return getToken(MySQLStatementParser.CACHE, 0); }
		public ResetOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitResetOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetOptionContext resetOption() throws RecognitionException {
		ResetOptionContext _localctx = new ResetOptionContext(_ctx, getState());
		enterRule(_localctx, 996, RULE_resetOption);
		int _la;
		try {
			setState(6938);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MASTER:
				enterOuterAlt(_localctx, 1);
				{
				setState(6923);
				match(MASTER);
				setState(6926);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==TO) {
					{
					setState(6924);
					match(TO);
					setState(6925);
					binaryLogFileIndexNumber();
					}
				}

				}
				break;
			case SLAVE:
				enterOuterAlt(_localctx, 2);
				{
				setState(6928);
				match(SLAVE);
				setState(6930);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ALL) {
					{
					setState(6929);
					match(ALL);
					}
				}

				setState(6933);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FOR) {
					{
					setState(6932);
					channelOption();
					}
				}

				}
				break;
			case REPLICA:
				enterOuterAlt(_localctx, 3);
				{
				setState(6935);
				match(REPLICA);
				}
				break;
			case QUERY:
				enterOuterAlt(_localctx, 4);
				{
				setState(6936);
				match(QUERY);
				setState(6937);
				match(CACHE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ResetPersistContext extends ParserRuleContext {
		public TerminalNode RESET() { return getToken(MySQLStatementParser.RESET, 0); }
		public TerminalNode PERSIST() { return getToken(MySQLStatementParser.PERSIST, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public ResetPersistContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_resetPersist; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitResetPersist(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ResetPersistContext resetPersist() throws RecognitionException {
		ResetPersistContext _localctx = new ResetPersistContext(_ctx, getState());
		enterRule(_localctx, 998, RULE_resetPersist);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6940);
			match(RESET);
			setState(6941);
			match(PERSIST);
			setState(6946);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IF - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(6943);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(6942);
					ifExists();
					}
				}

				setState(6945);
				identifier();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RestartContext extends ParserRuleContext {
		public TerminalNode RESTART() { return getToken(MySQLStatementParser.RESTART, 0); }
		public RestartContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_restart; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRestart(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RestartContext restart() throws RecognitionException {
		RestartContext _localctx = new RestartContext(_ctx, getState());
		enterRule(_localctx, 1000, RULE_restart);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6948);
			match(RESTART);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShutdownContext extends ParserRuleContext {
		public TerminalNode SHUTDOWN() { return getToken(MySQLStatementParser.SHUTDOWN, 0); }
		public ShutdownContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_shutdown; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShutdown(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShutdownContext shutdown() throws RecognitionException {
		ShutdownContext _localctx = new ShutdownContext(_ctx, getState());
		enterRule(_localctx, 1002, RULE_shutdown);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6950);
			match(SHUTDOWN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainTypeContext extends ParserRuleContext {
		public TerminalNode FORMAT() { return getToken(MySQLStatementParser.FORMAT, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public FormatNameContext formatName() {
			return getRuleContext(FormatNameContext.class,0);
		}
		public ExplainTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExplainType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainTypeContext explainType() throws RecognitionException {
		ExplainTypeContext _localctx = new ExplainTypeContext(_ctx, getState());
		enterRule(_localctx, 1004, RULE_explainType);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6952);
			match(FORMAT);
			setState(6953);
			match(EQ_);
			setState(6954);
			formatName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ExplainableStatementContext extends ParserRuleContext {
		public SelectContext select() {
			return getRuleContext(SelectContext.class,0);
		}
		public DeleteContext delete() {
			return getRuleContext(DeleteContext.class,0);
		}
		public InsertContext insert() {
			return getRuleContext(InsertContext.class,0);
		}
		public ReplaceContext replace() {
			return getRuleContext(ReplaceContext.class,0);
		}
		public UpdateContext update() {
			return getRuleContext(UpdateContext.class,0);
		}
		public ExplainableStatementContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_explainableStatement; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitExplainableStatement(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ExplainableStatementContext explainableStatement() throws RecognitionException {
		ExplainableStatementContext _localctx = new ExplainableStatementContext(_ctx, getState());
		enterRule(_localctx, 1006, RULE_explainableStatement);
		try {
			setState(6961);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,907,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6956);
				select();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6957);
				delete();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6958);
				insert();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6959);
				replace();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6960);
				update();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FormatNameContext extends ParserRuleContext {
		public TerminalNode TRADITIONAL() { return getToken(MySQLStatementParser.TRADITIONAL, 0); }
		public TerminalNode JSON() { return getToken(MySQLStatementParser.JSON, 0); }
		public TerminalNode TREE() { return getToken(MySQLStatementParser.TREE, 0); }
		public FormatNameContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_formatName; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFormatName(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FormatNameContext formatName() throws RecognitionException {
		FormatNameContext _localctx = new FormatNameContext(_ctx, getState());
		enterRule(_localctx, 1008, RULE_formatName);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6963);
			_la = _input.LA(1);
			if ( !(_la==TRADITIONAL || _la==TREE || _la==JSON) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DelimiterContext extends ParserRuleContext {
		public TerminalNode DELIMITER() { return getToken(MySQLStatementParser.DELIMITER, 0); }
		public DelimiterNameContext delimiterName() {
			return getRuleContext(DelimiterNameContext.class,0);
		}
		public DelimiterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_delimiter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDelimiter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DelimiterContext delimiter() throws RecognitionException {
		DelimiterContext _localctx = new DelimiterContext(_ctx, getState());
		enterRule(_localctx, 1010, RULE_delimiter);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(6965);
			match(DELIMITER);
			setState(6966);
			delimiterName();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ShowContext extends ParserRuleContext {
		public ShowDatabasesContext showDatabases() {
			return getRuleContext(ShowDatabasesContext.class,0);
		}
		public ShowTablesContext showTables() {
			return getRuleContext(ShowTablesContext.class,0);
		}
		public ShowTableStatusContext showTableStatus() {
			return getRuleContext(ShowTableStatusContext.class,0);
		}
		public ShowBinaryLogsContext showBinaryLogs() {
			return getRuleContext(ShowBinaryLogsContext.class,0);
		}
		public ShowColumnsContext showColumns() {
			return getRuleContext(ShowColumnsContext.class,0);
		}
		public ShowIndexContext showIndex() {
			return getRuleContext(ShowIndexContext.class,0);
		}
		public ShowCreateDatabaseContext showCreateDatabase() {
			return getRuleContext(ShowCreateDatabaseContext.class,0);
		}
		public ShowCreateTableContext showCreateTable() {
			return getRuleContext(ShowCreateTableContext.class,0);
		}
		public ShowBinlogEventsContext showBinlogEvents() {
			return getRuleContext(ShowBinlogEventsContext.class,0);
		}
		public ShowCharacterSetContext showCharacterSet() {
			return getRuleContext(ShowCharacterSetContext.class,0);
		}
		public ShowCollationContext showCollation() {
			return getRuleContext(ShowCollationContext.class,0);
		}
		public ShowCreateEventContext showCreateEvent() {
			return getRuleContext(ShowCreateEventContext.class,0);
		}
		public ShowCreateFunctionContext showCreateFunction() {
			return getRuleContext(ShowCreateFunctionContext.class,0);
		}
		public ShowCreateProcedureContext showCreateProcedure() {
			return getRuleContext(ShowCreateProcedureContext.class,0);
		}
		public ShowCreateTriggerContext showCreateTrigger() {
			return getRuleContext(ShowCreateTriggerContext.class,0);
		}
		public ShowCreateUserContext showCreateUser() {
			return getRuleContext(ShowCreateUserContext.class,0);
		}
		public ShowCreateViewContext showCreateView() {
			return getRuleContext(ShowCreateViewContext.class,0);
		}
		public ShowEngineContext showEngine() {
			return getRuleContext(ShowEngineContext.class,0);
		}
		public ShowEnginesContext showEngines() {
			return getRuleContext(ShowEnginesContext.class,0);
		}
		public ShowCharsetContext showCharset() {
			return getRuleContext(ShowCharsetContext.class,0);
		}
		public ShowErrorsContext showErrors() {
			return getRuleContext(ShowErrorsContext.class,0);
		}
		public ShowEventsContext showEvents() {
			return getRuleContext(ShowEventsContext.class,0);
		}
		public ShowFunctionCodeContext showFunctionCode() {
			return getRuleContext(ShowFunctionCodeContext.class,0);
		}
		public ShowFunctionStatusContext showFunctionStatus() {
			return getRuleContext(ShowFunctionStatusContext.class,0);
		}
		public ShowGrantsContext showGrants() {
			return getRuleContext(ShowGrantsContext.class,0);
		}
		public ShowMasterStatusContext showMasterStatus() {
			return getRuleContext(ShowMasterStatusContext.class,0);
		}
		public ShowPluginsContext showPlugins() {
			return getRuleContext(ShowPluginsContext.class,0);
		}
		public ShowOpenTablesContext showOpenTables() {
			return getRuleContext(ShowOpenTablesContext.class,0);
		}
		public ShowPrivilegesContext showPrivileges() {
			return getRuleContext(ShowPrivilegesContext.class,0);
		}
		public ShowProcedureCodeContext showProcedureCode() {
			return getRuleContext(ShowProcedureCodeContext.class,0);
		}
		public ShowProcesslistContext showProcesslist() {
			return getRuleContext(ShowProcesslistContext.class,0);
		}
		public ShowProfileContext showProfile() {
			return getRuleContext(ShowProfileContext.class,0);
		}
		public ShowProcedureStatusContext showProcedureStatus() {
			return getRuleContext(ShowProcedureStatusContext.class,0);
		}
		public ShowProfilesContext showProfiles() {
			return getRuleContext(ShowProfilesContext.class,0);
		}
		public ShowSlaveHostsContext showSlaveHosts() {
			return getRuleContext(ShowSlaveHostsContext.class,0);
		}
		public ShowSlaveStatusContext showSlaveStatus() {
			return getRuleContext(ShowSlaveStatusContext.class,0);
		}
		public ShowRelaylogEventContext showRelaylogEvent() {
			return getRuleContext(ShowRelaylogEventContext.class,0);
		}
		public ShowStatusContext showStatus() {
			return getRuleContext(ShowStatusContext.class,0);
		}
		public ShowTriggersContext showTriggers() {
			return getRuleContext(ShowTriggersContext.class,0);
		}
		public ShowWarningsContext showWarnings() {
			return getRuleContext(ShowWarningsContext.class,0);
		}
		public ShowVariablesContext showVariables() {
			return getRuleContext(ShowVariablesContext.class,0);
		}
		public ShowReplicasContext showReplicas() {
			return getRuleContext(ShowReplicasContext.class,0);
		}
		public ShowReplicaStatusContext showReplicaStatus() {
			return getRuleContext(ShowReplicaStatusContext.class,0);
		}
		public ShowContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_show; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitShow(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ShowContext show() throws RecognitionException {
		ShowContext _localctx = new ShowContext(_ctx, getState());
		enterRule(_localctx, 1012, RULE_show);
		try {
			setState(7011);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,908,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(6968);
				showDatabases();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(6969);
				showTables();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(6970);
				showTableStatus();
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(6971);
				showBinaryLogs();
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(6972);
				showColumns();
				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(6973);
				showIndex();
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(6974);
				showCreateDatabase();
				}
				break;
			case 8:
				enterOuterAlt(_localctx, 8);
				{
				setState(6975);
				showCreateTable();
				}
				break;
			case 9:
				enterOuterAlt(_localctx, 9);
				{
				setState(6976);
				showBinlogEvents();
				}
				break;
			case 10:
				enterOuterAlt(_localctx, 10);
				{
				setState(6977);
				showCharacterSet();
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 11);
				{
				setState(6978);
				showCollation();
				}
				break;
			case 12:
				enterOuterAlt(_localctx, 12);
				{
				setState(6979);
				showCreateEvent();
				}
				break;
			case 13:
				enterOuterAlt(_localctx, 13);
				{
				setState(6980);
				showCreateFunction();
				}
				break;
			case 14:
				enterOuterAlt(_localctx, 14);
				{
				setState(6981);
				showCreateProcedure();
				}
				break;
			case 15:
				enterOuterAlt(_localctx, 15);
				{
				setState(6982);
				showCreateTrigger();
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 16);
				{
				setState(6983);
				showCreateUser();
				}
				break;
			case 17:
				enterOuterAlt(_localctx, 17);
				{
				setState(6984);
				showCreateView();
				}
				break;
			case 18:
				enterOuterAlt(_localctx, 18);
				{
				setState(6985);
				showEngine();
				}
				break;
			case 19:
				enterOuterAlt(_localctx, 19);
				{
				setState(6986);
				showEngines();
				}
				break;
			case 20:
				enterOuterAlt(_localctx, 20);
				{
				setState(6987);
				showCharset();
				}
				break;
			case 21:
				enterOuterAlt(_localctx, 21);
				{
				setState(6988);
				showErrors();
				}
				break;
			case 22:
				enterOuterAlt(_localctx, 22);
				{
				setState(6989);
				showEvents();
				}
				break;
			case 23:
				enterOuterAlt(_localctx, 23);
				{
				setState(6990);
				showFunctionCode();
				}
				break;
			case 24:
				enterOuterAlt(_localctx, 24);
				{
				setState(6991);
				showFunctionStatus();
				}
				break;
			case 25:
				enterOuterAlt(_localctx, 25);
				{
				setState(6992);
				showGrants();
				}
				break;
			case 26:
				enterOuterAlt(_localctx, 26);
				{
				setState(6993);
				showMasterStatus();
				}
				break;
			case 27:
				enterOuterAlt(_localctx, 27);
				{
				setState(6994);
				showPlugins();
				}
				break;
			case 28:
				enterOuterAlt(_localctx, 28);
				{
				setState(6995);
				showOpenTables();
				}
				break;
			case 29:
				enterOuterAlt(_localctx, 29);
				{
				setState(6996);
				showPrivileges();
				}
				break;
			case 30:
				enterOuterAlt(_localctx, 30);
				{
				setState(6997);
				showProcedureCode();
				}
				break;
			case 31:
				enterOuterAlt(_localctx, 31);
				{
				setState(6998);
				showProcesslist();
				}
				break;
			case 32:
				enterOuterAlt(_localctx, 32);
				{
				setState(6999);
				showProfile();
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 33);
				{
				setState(7000);
				showProcedureStatus();
				}
				break;
			case 34:
				enterOuterAlt(_localctx, 34);
				{
				setState(7001);
				showProfiles();
				}
				break;
			case 35:
				enterOuterAlt(_localctx, 35);
				{
				setState(7002);
				showSlaveHosts();
				}
				break;
			case 36:
				enterOuterAlt(_localctx, 36);
				{
				setState(7003);
				showSlaveStatus();
				}
				break;
			case 37:
				enterOuterAlt(_localctx, 37);
				{
				setState(7004);
				showRelaylogEvent();
				}
				break;
			case 38:
				enterOuterAlt(_localctx, 38);
				{
				setState(7005);
				showStatus();
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 39);
				{
				setState(7006);
				showTriggers();
				}
				break;
			case 40:
				enterOuterAlt(_localctx, 40);
				{
				setState(7007);
				showWarnings();
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 41);
				{
				setState(7008);
				showVariables();
				}
				break;
			case 42:
				enterOuterAlt(_localctx, 42);
				{
				setState(7009);
				showReplicas();
				}
				break;
			case 43:
				enterOuterAlt(_localctx, 43);
				{
				setState(7010);
				showReplicaStatus();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetTransactionContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySQLStatementParser.TRANSACTION, 0); }
		public TransactionCharacteristicsContext transactionCharacteristics() {
			return getRuleContext(TransactionCharacteristicsContext.class,0);
		}
		public OptionTypeContext optionType() {
			return getRuleContext(OptionTypeContext.class,0);
		}
		public SetTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setTransaction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetTransactionContext setTransaction() throws RecognitionException {
		SetTransactionContext _localctx = new SetTransactionContext(_ctx, getState());
		enterRule(_localctx, 1014, RULE_setTransaction);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7013);
			match(SET);
			setState(7015);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GLOBAL || _la==LOCAL || _la==PERSIST || _la==PERSIST_ONLY || _la==SESSION) {
				{
				setState(7014);
				optionType();
				}
			}

			setState(7017);
			match(TRANSACTION);
			setState(7018);
			transactionCharacteristics();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetAutoCommitContext extends ParserRuleContext {
		public Token autoCommitValue;
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode AUTOCOMMIT() { return getToken(MySQLStatementParser.AUTOCOMMIT, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public TerminalNode OFF() { return getToken(MySQLStatementParser.OFF, 0); }
		public List AT_() { return getTokens(MySQLStatementParser.AT_); }
		public TerminalNode AT_(int i) {
			return getToken(MySQLStatementParser.AT_, i);
		}
		public OptionTypeContext optionType() {
			return getRuleContext(OptionTypeContext.class,0);
		}
		public TerminalNode DOT_() { return getToken(MySQLStatementParser.DOT_, 0); }
		public SetAutoCommitContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setAutoCommit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetAutoCommit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetAutoCommitContext setAutoCommit() throws RecognitionException {
		SetAutoCommitContext _localctx = new SetAutoCommitContext(_ctx, getState());
		enterRule(_localctx, 1016, RULE_setAutoCommit);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7020);
			match(SET);
			setState(7025);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AT_) {
				{
				setState(7022);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,910,_ctx) ) {
				case 1:
					{
					setState(7021);
					match(AT_);
					}
					break;
				}
				setState(7024);
				match(AT_);
				}
			}

			setState(7028);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==GLOBAL || _la==LOCAL || _la==PERSIST || _la==PERSIST_ONLY || _la==SESSION) {
				{
				setState(7027);
				optionType();
				}
			}

			setState(7031);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DOT_) {
				{
				setState(7030);
				match(DOT_);
				}
			}

			setState(7033);
			match(AUTOCOMMIT);
			setState(7034);
			match(EQ_);
			setState(7035);
			((SetAutoCommitContext)_localctx).autoCommitValue = _input.LT(1);
			_la = _input.LA(1);
			if ( !(_la==OFF || _la==ON || _la==NUMBER_) ) {
				((SetAutoCommitContext)_localctx).autoCommitValue = (Token)_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BeginTransactionContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySQLStatementParser.BEGIN, 0); }
		public TerminalNode WORK() { return getToken(MySQLStatementParser.WORK, 0); }
		public TerminalNode START() { return getToken(MySQLStatementParser.START, 0); }
		public TerminalNode TRANSACTION() { return getToken(MySQLStatementParser.TRANSACTION, 0); }
		public List transactionCharacteristic() {
			return getRuleContexts(TransactionCharacteristicContext.class);
		}
		public TransactionCharacteristicContext transactionCharacteristic(int i) {
			return getRuleContext(TransactionCharacteristicContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public BeginTransactionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_beginTransaction; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBeginTransaction(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BeginTransactionContext beginTransaction() throws RecognitionException {
		BeginTransactionContext _localctx = new BeginTransactionContext(_ctx, getState());
		enterRule(_localctx, 1018, RULE_beginTransaction);
		int _la;
		try {
			setState(7053);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BEGIN:
				enterOuterAlt(_localctx, 1);
				{
				setState(7037);
				match(BEGIN);
				setState(7039);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WORK) {
					{
					setState(7038);
					match(WORK);
					}
				}

				}
				break;
			case START:
				enterOuterAlt(_localctx, 2);
				{
				setState(7041);
				match(START);
				setState(7042);
				match(TRANSACTION);
				setState(7051);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==READ || _la==WITH) {
					{
					setState(7043);
					transactionCharacteristic();
					setState(7048);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA_) {
						{
						{
						setState(7044);
						match(COMMA_);
						setState(7045);
						transactionCharacteristic();
						}
						}
						setState(7050);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TransactionCharacteristicContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode CONSISTENT() { return getToken(MySQLStatementParser.CONSISTENT, 0); }
		public TerminalNode SNAPSHOT() { return getToken(MySQLStatementParser.SNAPSHOT, 0); }
		public TransactionAccessModeContext transactionAccessMode() {
			return getRuleContext(TransactionAccessModeContext.class,0);
		}
		public TransactionCharacteristicContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_transactionCharacteristic; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTransactionCharacteristic(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TransactionCharacteristicContext transactionCharacteristic() throws RecognitionException {
		TransactionCharacteristicContext _localctx = new TransactionCharacteristicContext(_ctx, getState());
		enterRule(_localctx, 1020, RULE_transactionCharacteristic);
		try {
			setState(7059);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case WITH:
				enterOuterAlt(_localctx, 1);
				{
				setState(7055);
				match(WITH);
				setState(7056);
				match(CONSISTENT);
				setState(7057);
				match(SNAPSHOT);
				}
				break;
			case READ:
				enterOuterAlt(_localctx, 2);
				{
				setState(7058);
				transactionAccessMode();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CommitContext extends ParserRuleContext {
		public TerminalNode COMMIT() { return getToken(MySQLStatementParser.COMMIT, 0); }
		public TerminalNode WORK() { return getToken(MySQLStatementParser.WORK, 0); }
		public OptionChainContext optionChain() {
			return getRuleContext(OptionChainContext.class,0);
		}
		public OptionReleaseContext optionRelease() {
			return getRuleContext(OptionReleaseContext.class,0);
		}
		public CommitContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_commit; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCommit(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CommitContext commit() throws RecognitionException {
		CommitContext _localctx = new CommitContext(_ctx, getState());
		enterRule(_localctx, 1022, RULE_commit);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7061);
			match(COMMIT);
			setState(7063);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,919,_ctx) ) {
			case 1:
				{
				setState(7062);
				match(WORK);
				}
				break;
			}
			setState(7066);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==AND) {
				{
				setState(7065);
				optionChain();
				}
			}

			setState(7069);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,921,_ctx) ) {
			case 1:
				{
				setState(7068);
				optionRelease();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RollbackContext extends ParserRuleContext {
		public TerminalNode ROLLBACK() { return getToken(MySQLStatementParser.ROLLBACK, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode WORK() { return getToken(MySQLStatementParser.WORK, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySQLStatementParser.SAVEPOINT, 0); }
		public OptionChainContext optionChain() {
			return getRuleContext(OptionChainContext.class,0);
		}
		public OptionReleaseContext optionRelease() {
			return getRuleContext(OptionReleaseContext.class,0);
		}
		public RollbackContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_rollback; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRollback(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RollbackContext rollback() throws RecognitionException {
		RollbackContext _localctx = new RollbackContext(_ctx, getState());
		enterRule(_localctx, 1024, RULE_rollback);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7071);
			match(ROLLBACK);
			setState(7089);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,927,_ctx) ) {
			case 1:
				{
				setState(7073);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WORK) {
					{
					setState(7072);
					match(WORK);
					}
				}

				setState(7075);
				match(TO);
				setState(7077);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,923,_ctx) ) {
				case 1:
					{
					setState(7076);
					match(SAVEPOINT);
					}
					break;
				}
				setState(7079);
				identifier();
				}
				break;
			case 2:
				{
				setState(7081);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WORK) {
					{
					setState(7080);
					match(WORK);
					}
				}

				setState(7084);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AND) {
					{
					setState(7083);
					optionChain();
					}
				}

				setState(7087);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==NO || _la==RELEASE) {
					{
					setState(7086);
					optionRelease();
					}
				}

				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SavepointContext extends ParserRuleContext {
		public TerminalNode SAVEPOINT() { return getToken(MySQLStatementParser.SAVEPOINT, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public SavepointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_savepoint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSavepoint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SavepointContext savepoint() throws RecognitionException {
		SavepointContext _localctx = new SavepointContext(_ctx, getState());
		enterRule(_localctx, 1026, RULE_savepoint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7091);
			match(SAVEPOINT);
			setState(7092);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class BeginContext extends ParserRuleContext {
		public TerminalNode BEGIN() { return getToken(MySQLStatementParser.BEGIN, 0); }
		public TerminalNode WORK() { return getToken(MySQLStatementParser.WORK, 0); }
		public BeginContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_begin; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitBegin(this);
			else return visitor.visitChildren(this);
		}
	}

	public final BeginContext begin() throws RecognitionException {
		BeginContext _localctx = new BeginContext(_ctx, getState());
		enterRule(_localctx, 1028, RULE_begin);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7094);
			match(BEGIN);
			setState(7096);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WORK) {
				{
				setState(7095);
				match(WORK);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockContext extends ParserRuleContext {
		public TerminalNode LOCK() { return getToken(MySQLStatementParser.LOCK, 0); }
		public TerminalNode INSTANCE() { return getToken(MySQLStatementParser.INSTANCE, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode BACKUP() { return getToken(MySQLStatementParser.BACKUP, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public List tableLock() {
			return getRuleContexts(TableLockContext.class);
		}
		public TableLockContext tableLock(int i) {
			return getRuleContext(TableLockContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public LockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lock; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockContext lock() throws RecognitionException {
		LockContext _localctx = new LockContext(_ctx, getState());
		enterRule(_localctx, 1030, RULE_lock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7098);
			match(LOCK);
			setState(7111);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case INSTANCE:
				{
				setState(7099);
				match(INSTANCE);
				setState(7100);
				match(FOR);
				setState(7101);
				match(BACKUP);
				}
				break;
			case TABLES:
				{
				{
				setState(7102);
				match(TABLES);
				setState(7103);
				tableLock();
				setState(7108);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(7104);
					match(COMMA_);
					setState(7105);
					tableLock();
					}
					}
					setState(7110);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UnlockContext extends ParserRuleContext {
		public TerminalNode UNLOCK() { return getToken(MySQLStatementParser.UNLOCK, 0); }
		public TerminalNode INSTANCE() { return getToken(MySQLStatementParser.INSTANCE, 0); }
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public UnlockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_unlock; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUnlock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UnlockContext unlock() throws RecognitionException {
		UnlockContext _localctx = new UnlockContext(_ctx, getState());
		enterRule(_localctx, 1032, RULE_unlock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7113);
			match(UNLOCK);
			setState(7114);
			_la = _input.LA(1);
			if ( !(_la==INSTANCE || _la==TABLE || _la==TABLES) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ReleaseSavepointContext extends ParserRuleContext {
		public TerminalNode RELEASE() { return getToken(MySQLStatementParser.RELEASE, 0); }
		public TerminalNode SAVEPOINT() { return getToken(MySQLStatementParser.SAVEPOINT, 0); }
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public ReleaseSavepointContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_releaseSavepoint; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitReleaseSavepoint(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ReleaseSavepointContext releaseSavepoint() throws RecognitionException {
		ReleaseSavepointContext _localctx = new ReleaseSavepointContext(_ctx, getState());
		enterRule(_localctx, 1034, RULE_releaseSavepoint);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7116);
			match(RELEASE);
			setState(7117);
			match(SAVEPOINT);
			setState(7118);
			identifier();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XaContext extends ParserRuleContext {
		public TerminalNode XA() { return getToken(MySQLStatementParser.XA, 0); }
		public XidContext xid() {
			return getRuleContext(XidContext.class,0);
		}
		public TerminalNode END() { return getToken(MySQLStatementParser.END, 0); }
		public TerminalNode PREPARE() { return getToken(MySQLStatementParser.PREPARE, 0); }
		public TerminalNode COMMIT() { return getToken(MySQLStatementParser.COMMIT, 0); }
		public TerminalNode ROLLBACK() { return getToken(MySQLStatementParser.ROLLBACK, 0); }
		public TerminalNode RECOVER() { return getToken(MySQLStatementParser.RECOVER, 0); }
		public TerminalNode START() { return getToken(MySQLStatementParser.START, 0); }
		public TerminalNode BEGIN() { return getToken(MySQLStatementParser.BEGIN, 0); }
		public TerminalNode SUSPEND() { return getToken(MySQLStatementParser.SUSPEND, 0); }
		public TerminalNode ONE() { return getToken(MySQLStatementParser.ONE, 0); }
		public TerminalNode PHASE() { return getToken(MySQLStatementParser.PHASE, 0); }
		public TerminalNode CONVERT() { return getToken(MySQLStatementParser.CONVERT, 0); }
		public TerminalNode XID() { return getToken(MySQLStatementParser.XID, 0); }
		public TerminalNode JOIN() { return getToken(MySQLStatementParser.JOIN, 0); }
		public TerminalNode RESUME() { return getToken(MySQLStatementParser.RESUME, 0); }
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public TerminalNode MIGRATE() { return getToken(MySQLStatementParser.MIGRATE, 0); }
		public XaContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xa; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitXa(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XaContext xa() throws RecognitionException {
		XaContext _localctx = new XaContext(_ctx, getState());
		enterRule(_localctx, 1036, RULE_xa);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7120);
			match(XA);
			setState(7150);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case BEGIN:
			case START:
				{
				setState(7121);
				_la = _input.LA(1);
				if ( !(_la==BEGIN || _la==START) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7122);
				xid();
				setState(7124);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==JOIN || _la==RESUME) {
					{
					setState(7123);
					_la = _input.LA(1);
					if ( !(_la==JOIN || _la==RESUME) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				}
				break;
			case END:
				{
				setState(7126);
				match(END);
				setState(7127);
				xid();
				setState(7133);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SUSPEND) {
					{
					setState(7128);
					match(SUSPEND);
					setState(7131);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==FOR) {
						{
						setState(7129);
						match(FOR);
						setState(7130);
						match(MIGRATE);
						}
					}

					}
				}

				}
				break;
			case PREPARE:
				{
				setState(7135);
				match(PREPARE);
				setState(7136);
				xid();
				}
				break;
			case COMMIT:
				{
				setState(7137);
				match(COMMIT);
				setState(7138);
				xid();
				setState(7141);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ONE) {
					{
					setState(7139);
					match(ONE);
					setState(7140);
					match(PHASE);
					}
				}

				}
				break;
			case ROLLBACK:
				{
				setState(7143);
				match(ROLLBACK);
				setState(7144);
				xid();
				}
				break;
			case RECOVER:
				{
				setState(7145);
				match(RECOVER);
				setState(7148);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==CONVERT) {
					{
					setState(7146);
					match(CONVERT);
					setState(7147);
					match(XID);
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionChainContext extends ParserRuleContext {
		public TerminalNode AND() { return getToken(MySQLStatementParser.AND, 0); }
		public TerminalNode CHAIN() { return getToken(MySQLStatementParser.CHAIN, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public OptionChainContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionChain; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptionChain(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionChainContext optionChain() throws RecognitionException {
		OptionChainContext _localctx = new OptionChainContext(_ctx, getState());
		enterRule(_localctx, 1038, RULE_optionChain);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7152);
			match(AND);
			setState(7154);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO) {
				{
				setState(7153);
				match(NO);
				}
			}

			setState(7156);
			match(CHAIN);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class OptionReleaseContext extends ParserRuleContext {
		public TerminalNode RELEASE() { return getToken(MySQLStatementParser.RELEASE, 0); }
		public TerminalNode NO() { return getToken(MySQLStatementParser.NO, 0); }
		public OptionReleaseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_optionRelease; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitOptionRelease(this);
			else return visitor.visitChildren(this);
		}
	}

	public final OptionReleaseContext optionRelease() throws RecognitionException {
		OptionReleaseContext _localctx = new OptionReleaseContext(_ctx, getState());
		enterRule(_localctx, 1040, RULE_optionRelease);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7159);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==NO) {
				{
				setState(7158);
				match(NO);
				}
			}

			setState(7161);
			match(RELEASE);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TableLockContext extends ParserRuleContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public LockOptionContext lockOption() {
			return getRuleContext(LockOptionContext.class,0);
		}
		public AliasContext alias() {
			return getRuleContext(AliasContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public TableLockContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tableLock; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTableLock(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TableLockContext tableLock() throws RecognitionException {
		TableLockContext _localctx = new TableLockContext(_ctx, getState());
		enterRule(_localctx, 1042, RULE_tableLock);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7163);
			tableName();
			setState(7168);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (AS - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (SINGLE_QUOTED_TEXT - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
				{
				setState(7165);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(7164);
					match(AS);
					}
				}

				setState(7167);
				alias();
				}
			}

			setState(7170);
			lockOption();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class LockOptionContext extends ParserRuleContext {
		public TerminalNode READ() { return getToken(MySQLStatementParser.READ, 0); }
		public TerminalNode LOCAL() { return getToken(MySQLStatementParser.LOCAL, 0); }
		public TerminalNode WRITE() { return getToken(MySQLStatementParser.WRITE, 0); }
		public TerminalNode LOW_PRIORITY() { return getToken(MySQLStatementParser.LOW_PRIORITY, 0); }
		public LockOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_lockOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitLockOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final LockOptionContext lockOption() throws RecognitionException {
		LockOptionContext _localctx = new LockOptionContext(_ctx, getState());
		enterRule(_localctx, 1044, RULE_lockOption);
		int _la;
		try {
			setState(7180);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case READ:
				enterOuterAlt(_localctx, 1);
				{
				setState(7172);
				match(READ);
				setState(7174);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOCAL) {
					{
					setState(7173);
					match(LOCAL);
					}
				}

				}
				break;
			case LOW_PRIORITY:
			case WRITE:
				enterOuterAlt(_localctx, 2);
				{
				setState(7177);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LOW_PRIORITY) {
					{
					setState(7176);
					match(LOW_PRIORITY);
					}
				}

				setState(7179);
				match(WRITE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class XidContext extends ParserRuleContext {
		public TextStringContext gtrid;
		public TextStringContext bqual;
		public Token formatID;
		public List textString() {
			return getRuleContexts(TextStringContext.class);
		}
		public TextStringContext textString(int i) {
			return getRuleContext(TextStringContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public XidContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_xid; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitXid(this);
			else return visitor.visitChildren(this);
		}
	}

	public final XidContext xid() throws RecognitionException {
		XidContext _localctx = new XidContext(_ctx, getState());
		enterRule(_localctx, 1046, RULE_xid);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7182);
			((XidContext)_localctx).gtrid = textString();
			setState(7189);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==COMMA_) {
				{
				setState(7183);
				match(COMMA_);
				setState(7184);
				((XidContext)_localctx).bqual = textString();
				setState(7187);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==COMMA_) {
					{
					setState(7185);
					match(COMMA_);
					setState(7186);
					((XidContext)_localctx).formatID = match(NUMBER_);
					}
				}

				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantContext extends ParserRuleContext {
		public GrantContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grant; }
	 
		public GrantContext() { }
		public void copyFrom(GrantContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class GrantRoleOrPrivilegeToContext extends GrantContext {
		public TerminalNode GRANT() { return getToken(MySQLStatementParser.GRANT, 0); }
		public RoleOrPrivilegesContext roleOrPrivileges() {
			return getRuleContext(RoleOrPrivilegesContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public UserListContext userList() {
			return getRuleContext(UserListContext.class,0);
		}
		public WithGrantOptionContext withGrantOption() {
			return getRuleContext(WithGrantOptionContext.class,0);
		}
		public GrantRoleOrPrivilegeToContext(GrantContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantRoleOrPrivilegeTo(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GrantProxyContext extends GrantContext {
		public TerminalNode GRANT() { return getToken(MySQLStatementParser.GRANT, 0); }
		public TerminalNode PROXY() { return getToken(MySQLStatementParser.PROXY, 0); }
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public UserListContext userList() {
			return getRuleContext(UserListContext.class,0);
		}
		public WithGrantOptionContext withGrantOption() {
			return getRuleContext(WithGrantOptionContext.class,0);
		}
		public GrantProxyContext(GrantContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantProxy(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GrantRoleOrPrivilegeOnToContext extends GrantContext {
		public TerminalNode GRANT() { return getToken(MySQLStatementParser.GRANT, 0); }
		public RoleOrPrivilegesContext roleOrPrivileges() {
			return getRuleContext(RoleOrPrivilegesContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public GrantIdentifierContext grantIdentifier() {
			return getRuleContext(GrantIdentifierContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public UserListContext userList() {
			return getRuleContext(UserListContext.class,0);
		}
		public AclTypeContext aclType() {
			return getRuleContext(AclTypeContext.class,0);
		}
		public WithGrantOptionContext withGrantOption() {
			return getRuleContext(WithGrantOptionContext.class,0);
		}
		public GrantAsContext grantAs() {
			return getRuleContext(GrantAsContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySQLStatementParser.PRIVILEGES, 0); }
		public GrantRoleOrPrivilegeOnToContext(GrantContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantRoleOrPrivilegeOnTo(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantContext grant() throws RecognitionException {
		GrantContext _localctx = new GrantContext(_ctx, getState());
		enterRule(_localctx, 1048, RULE_grant);
		int _la;
		try {
			setState(7240);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,955,_ctx) ) {
			case 1:
				_localctx = new GrantRoleOrPrivilegeToContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7191);
				match(GRANT);
				setState(7192);
				roleOrPrivileges();
				setState(7193);
				match(TO);
				setState(7194);
				userList();
				setState(7196);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7195);
					withGrantOption();
					}
				}

				}
				break;
			case 2:
				_localctx = new GrantRoleOrPrivilegeOnToContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7198);
				match(GRANT);
				setState(7199);
				roleOrPrivileges();
				setState(7200);
				match(ON);
				setState(7202);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FUNCTION || _la==PROCEDURE || _la==TABLE) {
					{
					setState(7201);
					aclType();
					}
				}

				setState(7204);
				grantIdentifier();
				setState(7205);
				match(TO);
				setState(7206);
				userList();
				setState(7208);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7207);
					withGrantOption();
					}
				}

				setState(7211);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(7210);
					grantAs();
					}
				}

				}
				break;
			case 3:
				_localctx = new GrantRoleOrPrivilegeOnToContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7213);
				match(GRANT);
				setState(7214);
				match(ALL);
				setState(7216);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(7215);
					match(PRIVILEGES);
					}
				}

				setState(7218);
				match(ON);
				setState(7220);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FUNCTION || _la==PROCEDURE || _la==TABLE) {
					{
					setState(7219);
					aclType();
					}
				}

				setState(7222);
				grantIdentifier();
				setState(7223);
				match(TO);
				setState(7224);
				userList();
				setState(7226);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7225);
					withGrantOption();
					}
				}

				setState(7229);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==AS) {
					{
					setState(7228);
					grantAs();
					}
				}

				}
				break;
			case 4:
				_localctx = new GrantProxyContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7231);
				match(GRANT);
				setState(7232);
				match(PROXY);
				setState(7233);
				match(ON);
				setState(7234);
				username();
				setState(7235);
				match(TO);
				setState(7236);
				userList();
				setState(7238);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7237);
					withGrantOption();
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RevokeContext extends ParserRuleContext {
		public RevokeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_revoke; }
	 
		public RevokeContext() { }
		public void copyFrom(RevokeContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class RevokeOnFromContext extends RevokeContext {
		public TerminalNode REVOKE() { return getToken(MySQLStatementParser.REVOKE, 0); }
		public RoleOrPrivilegesContext roleOrPrivileges() {
			return getRuleContext(RoleOrPrivilegesContext.class,0);
		}
		public TerminalNode ON() { return getToken(MySQLStatementParser.ON, 0); }
		public GrantIdentifierContext grantIdentifier() {
			return getRuleContext(GrantIdentifierContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public UserListContext userList() {
			return getRuleContext(UserListContext.class,0);
		}
		public AclTypeContext aclType() {
			return getRuleContext(AclTypeContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySQLStatementParser.PRIVILEGES, 0); }
		public TerminalNode PROXY() { return getToken(MySQLStatementParser.PROXY, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public RevokeOnFromContext(RevokeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRevokeOnFrom(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RevokeFromContext extends RevokeContext {
		public TerminalNode REVOKE() { return getToken(MySQLStatementParser.REVOKE, 0); }
		public RoleOrPrivilegesContext roleOrPrivileges() {
			return getRuleContext(RoleOrPrivilegesContext.class,0);
		}
		public TerminalNode FROM() { return getToken(MySQLStatementParser.FROM, 0); }
		public UserListContext userList() {
			return getRuleContext(UserListContext.class,0);
		}
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public TerminalNode GRANT() { return getToken(MySQLStatementParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySQLStatementParser.OPTION, 0); }
		public TerminalNode PRIVILEGES() { return getToken(MySQLStatementParser.PRIVILEGES, 0); }
		public RevokeFromContext(RevokeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRevokeFrom(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RevokeContext revoke() throws RecognitionException {
		RevokeContext _localctx = new RevokeContext(_ctx, getState());
		enterRule(_localctx, 1050, RULE_revoke);
		int _la;
		try {
			setState(7287);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,960,_ctx) ) {
			case 1:
				_localctx = new RevokeFromContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7242);
				match(REVOKE);
				setState(7243);
				roleOrPrivileges();
				setState(7244);
				match(FROM);
				setState(7245);
				userList();
				}
				break;
			case 2:
				_localctx = new RevokeOnFromContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7247);
				match(REVOKE);
				setState(7248);
				roleOrPrivileges();
				setState(7249);
				match(ON);
				setState(7251);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FUNCTION || _la==PROCEDURE || _la==TABLE) {
					{
					setState(7250);
					aclType();
					}
				}

				setState(7253);
				grantIdentifier();
				setState(7254);
				match(FROM);
				setState(7255);
				userList();
				}
				break;
			case 3:
				_localctx = new RevokeOnFromContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7257);
				match(REVOKE);
				setState(7258);
				match(ALL);
				setState(7260);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(7259);
					match(PRIVILEGES);
					}
				}

				setState(7262);
				match(ON);
				setState(7264);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==FUNCTION || _la==PROCEDURE || _la==TABLE) {
					{
					setState(7263);
					aclType();
					}
				}

				setState(7266);
				grantIdentifier();
				setState(7267);
				match(FROM);
				setState(7268);
				userList();
				}
				break;
			case 4:
				_localctx = new RevokeFromContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7270);
				match(REVOKE);
				setState(7271);
				match(ALL);
				setState(7273);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==PRIVILEGES) {
					{
					setState(7272);
					match(PRIVILEGES);
					}
				}

				setState(7275);
				match(COMMA_);
				setState(7276);
				match(GRANT);
				setState(7277);
				match(OPTION);
				setState(7278);
				match(FROM);
				setState(7279);
				userList();
				}
				break;
			case 5:
				_localctx = new RevokeOnFromContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(7280);
				match(REVOKE);
				setState(7281);
				match(PROXY);
				setState(7282);
				match(ON);
				setState(7283);
				username();
				setState(7284);
				match(FROM);
				setState(7285);
				userList();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserListContext extends ParserRuleContext {
		public List username() {
			return getRuleContexts(UsernameContext.class);
		}
		public UsernameContext username(int i) {
			return getRuleContext(UsernameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public UserListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserListContext userList() throws RecognitionException {
		UserListContext _localctx = new UserListContext(_ctx, getState());
		enterRule(_localctx, 1052, RULE_userList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7289);
			username();
			setState(7294);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7290);
				match(COMMA_);
				setState(7291);
				username();
				}
				}
				setState(7296);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleOrPrivilegesContext extends ParserRuleContext {
		public List roleOrPrivilege() {
			return getRuleContexts(RoleOrPrivilegeContext.class);
		}
		public RoleOrPrivilegeContext roleOrPrivilege(int i) {
			return getRuleContext(RoleOrPrivilegeContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public RoleOrPrivilegesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleOrPrivileges; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoleOrPrivileges(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleOrPrivilegesContext roleOrPrivileges() throws RecognitionException {
		RoleOrPrivilegesContext _localctx = new RoleOrPrivilegesContext(_ctx, getState());
		enterRule(_localctx, 1054, RULE_roleOrPrivileges);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7297);
			roleOrPrivilege();
			setState(7302);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7298);
				match(COMMA_);
				setState(7299);
				roleOrPrivilege();
				}
				}
				setState(7304);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RoleOrPrivilegeContext extends ParserRuleContext {
		public RoleOrPrivilegeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roleOrPrivilege; }
	 
		public RoleOrPrivilegeContext() { }
		public void copyFrom(RoleOrPrivilegeContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class StaticPrivilegeProcessContext extends RoleOrPrivilegeContext {
		public TerminalNode PROCESS() { return getToken(MySQLStatementParser.PROCESS, 0); }
		public StaticPrivilegeProcessContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeProcess(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeSuperContext extends RoleOrPrivilegeContext {
		public TerminalNode SUPER() { return getToken(MySQLStatementParser.SUPER, 0); }
		public StaticPrivilegeSuperContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeSuper(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeReferencesContext extends RoleOrPrivilegeContext {
		public TerminalNode REFERENCES() { return getToken(MySQLStatementParser.REFERENCES, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public StaticPrivilegeReferencesContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeReferences(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateTemporaryTablesContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TEMPORARY() { return getToken(MySQLStatementParser.TEMPORARY, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public StaticPrivilegeCreateTemporaryTablesContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreateTemporaryTables(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeTriggerContext extends RoleOrPrivilegeContext {
		public TerminalNode TRIGGER() { return getToken(MySQLStatementParser.TRIGGER, 0); }
		public StaticPrivilegeTriggerContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeTrigger(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateRoleContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public StaticPrivilegeCreateRoleContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreateRole(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeUsageContext extends RoleOrPrivilegeContext {
		public TerminalNode USAGE() { return getToken(MySQLStatementParser.USAGE, 0); }
		public StaticPrivilegeUsageContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeUsage(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeReplicationClientContext extends RoleOrPrivilegeContext {
		public TerminalNode REPLICATION() { return getToken(MySQLStatementParser.REPLICATION, 0); }
		public TerminalNode CLIENT() { return getToken(MySQLStatementParser.CLIENT, 0); }
		public StaticPrivilegeReplicationClientContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeReplicationClient(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeAlterRoutineContext extends RoleOrPrivilegeContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public TerminalNode ROUTINE() { return getToken(MySQLStatementParser.ROUTINE, 0); }
		public StaticPrivilegeAlterRoutineContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeAlterRoutine(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeDropRoleContext extends RoleOrPrivilegeContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public StaticPrivilegeDropRoleContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeDropRole(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeExecuteContext extends RoleOrPrivilegeContext {
		public TerminalNode EXECUTE() { return getToken(MySQLStatementParser.EXECUTE, 0); }
		public StaticPrivilegeExecuteContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeExecute(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeGrantContext extends RoleOrPrivilegeContext {
		public TerminalNode GRANT() { return getToken(MySQLStatementParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySQLStatementParser.OPTION, 0); }
		public StaticPrivilegeGrantContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeGrant(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeShowDatabasesContext extends RoleOrPrivilegeContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode DATABASES() { return getToken(MySQLStatementParser.DATABASES, 0); }
		public StaticPrivilegeShowDatabasesContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeShowDatabases(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeFileContext extends RoleOrPrivilegeContext {
		public TerminalNode FILE() { return getToken(MySQLStatementParser.FILE, 0); }
		public StaticPrivilegeFileContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeFile(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeUpdateContext extends RoleOrPrivilegeContext {
		public TerminalNode UPDATE() { return getToken(MySQLStatementParser.UPDATE, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public StaticPrivilegeUpdateContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeUpdate(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateTablespaceContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode TABLESPACE() { return getToken(MySQLStatementParser.TABLESPACE, 0); }
		public StaticPrivilegeCreateTablespaceContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreateTablespace(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeDropContext extends RoleOrPrivilegeContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public StaticPrivilegeDropContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeDrop(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeReplicationSlaveContext extends RoleOrPrivilegeContext {
		public TerminalNode REPLICATION() { return getToken(MySQLStatementParser.REPLICATION, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public StaticPrivilegeReplicationSlaveContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeReplicationSlave(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateViewContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public StaticPrivilegeCreateViewContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreateView(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeShowViewContext extends RoleOrPrivilegeContext {
		public TerminalNode SHOW() { return getToken(MySQLStatementParser.SHOW, 0); }
		public TerminalNode VIEW() { return getToken(MySQLStatementParser.VIEW, 0); }
		public StaticPrivilegeShowViewContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeShowView(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeEventContext extends RoleOrPrivilegeContext {
		public TerminalNode EVENT() { return getToken(MySQLStatementParser.EVENT, 0); }
		public StaticPrivilegeEventContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeEvent(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeIndexContext extends RoleOrPrivilegeContext {
		public TerminalNode INDEX() { return getToken(MySQLStatementParser.INDEX, 0); }
		public StaticPrivilegeIndexContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeIndex(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeSelectContext extends RoleOrPrivilegeContext {
		public TerminalNode SELECT() { return getToken(MySQLStatementParser.SELECT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public StaticPrivilegeSelectContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeSelect(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeLockTablesContext extends RoleOrPrivilegeContext {
		public TerminalNode LOCK() { return getToken(MySQLStatementParser.LOCK, 0); }
		public TerminalNode TABLES() { return getToken(MySQLStatementParser.TABLES, 0); }
		public StaticPrivilegeLockTablesContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeLockTables(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeAlterContext extends RoleOrPrivilegeContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public StaticPrivilegeAlterContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeAlter(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeShutdownContext extends RoleOrPrivilegeContext {
		public TerminalNode SHUTDOWN() { return getToken(MySQLStatementParser.SHUTDOWN, 0); }
		public StaticPrivilegeShutdownContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeShutdown(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeDeleteContext extends RoleOrPrivilegeContext {
		public TerminalNode DELETE() { return getToken(MySQLStatementParser.DELETE, 0); }
		public StaticPrivilegeDeleteContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeDelete(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RoleAtHostContext extends RoleOrPrivilegeContext {
		public RoleIdentifierOrTextContext roleIdentifierOrText() {
			return getRuleContext(RoleIdentifierOrTextContext.class,0);
		}
		public TerminalNode AT_() { return getToken(MySQLStatementParser.AT_, 0); }
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public RoleAtHostContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoleAtHost(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateUserContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public StaticPrivilegeCreateUserContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreateUser(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeInsertContext extends RoleOrPrivilegeContext {
		public TerminalNode INSERT() { return getToken(MySQLStatementParser.INSERT, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public StaticPrivilegeInsertContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeInsert(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateRoutineContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode ROUTINE() { return getToken(MySQLStatementParser.ROUTINE, 0); }
		public StaticPrivilegeCreateRoutineContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreateRoutine(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class RoleOrDynamicPrivilegeContext extends RoleOrPrivilegeContext {
		public RoleIdentifierOrTextContext roleIdentifierOrText() {
			return getRuleContext(RoleIdentifierOrTextContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public ColumnNamesContext columnNames() {
			return getRuleContext(ColumnNamesContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public RoleOrDynamicPrivilegeContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoleOrDynamicPrivilege(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeReloadContext extends RoleOrPrivilegeContext {
		public TerminalNode RELOAD() { return getToken(MySQLStatementParser.RELOAD, 0); }
		public StaticPrivilegeReloadContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeReload(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class StaticPrivilegeCreateContext extends RoleOrPrivilegeContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public StaticPrivilegeCreateContext(RoleOrPrivilegeContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStaticPrivilegeCreate(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RoleOrPrivilegeContext roleOrPrivilege() throws RecognitionException {
		RoleOrPrivilegeContext _localctx = new RoleOrPrivilegeContext(_ctx, getState());
		enterRule(_localctx, 1056, RULE_roleOrPrivilege);
		int _la;
		try {
			setState(7387);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,968,_ctx) ) {
			case 1:
				_localctx = new RoleOrDynamicPrivilegeContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7305);
				roleIdentifierOrText();
				setState(7310);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7306);
					match(LP_);
					setState(7307);
					columnNames();
					setState(7308);
					match(RP_);
					}
				}

				}
				break;
			case 2:
				_localctx = new RoleAtHostContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7312);
				roleIdentifierOrText();
				setState(7313);
				match(AT_);
				setState(7314);
				textOrIdentifier();
				}
				break;
			case 3:
				_localctx = new StaticPrivilegeSelectContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7316);
				match(SELECT);
				setState(7321);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7317);
					match(LP_);
					setState(7318);
					columnNames();
					setState(7319);
					match(RP_);
					}
				}

				}
				break;
			case 4:
				_localctx = new StaticPrivilegeInsertContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7323);
				match(INSERT);
				setState(7328);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7324);
					match(LP_);
					setState(7325);
					columnNames();
					setState(7326);
					match(RP_);
					}
				}

				}
				break;
			case 5:
				_localctx = new StaticPrivilegeUpdateContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(7330);
				match(UPDATE);
				setState(7335);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7331);
					match(LP_);
					setState(7332);
					columnNames();
					setState(7333);
					match(RP_);
					}
				}

				}
				break;
			case 6:
				_localctx = new StaticPrivilegeReferencesContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(7337);
				match(REFERENCES);
				setState(7342);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(7338);
					match(LP_);
					setState(7339);
					columnNames();
					setState(7340);
					match(RP_);
					}
				}

				}
				break;
			case 7:
				_localctx = new StaticPrivilegeDeleteContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(7344);
				match(DELETE);
				}
				break;
			case 8:
				_localctx = new StaticPrivilegeUsageContext(_localctx);
				enterOuterAlt(_localctx, 8);
				{
				setState(7345);
				match(USAGE);
				}
				break;
			case 9:
				_localctx = new StaticPrivilegeIndexContext(_localctx);
				enterOuterAlt(_localctx, 9);
				{
				setState(7346);
				match(INDEX);
				}
				break;
			case 10:
				_localctx = new StaticPrivilegeAlterContext(_localctx);
				enterOuterAlt(_localctx, 10);
				{
				setState(7347);
				match(ALTER);
				}
				break;
			case 11:
				_localctx = new StaticPrivilegeCreateContext(_localctx);
				enterOuterAlt(_localctx, 11);
				{
				setState(7348);
				match(CREATE);
				}
				break;
			case 12:
				_localctx = new StaticPrivilegeDropContext(_localctx);
				enterOuterAlt(_localctx, 12);
				{
				setState(7349);
				match(DROP);
				}
				break;
			case 13:
				_localctx = new StaticPrivilegeExecuteContext(_localctx);
				enterOuterAlt(_localctx, 13);
				{
				setState(7350);
				match(EXECUTE);
				}
				break;
			case 14:
				_localctx = new StaticPrivilegeReloadContext(_localctx);
				enterOuterAlt(_localctx, 14);
				{
				setState(7351);
				match(RELOAD);
				}
				break;
			case 15:
				_localctx = new StaticPrivilegeShutdownContext(_localctx);
				enterOuterAlt(_localctx, 15);
				{
				setState(7352);
				match(SHUTDOWN);
				}
				break;
			case 16:
				_localctx = new StaticPrivilegeProcessContext(_localctx);
				enterOuterAlt(_localctx, 16);
				{
				setState(7353);
				match(PROCESS);
				}
				break;
			case 17:
				_localctx = new StaticPrivilegeFileContext(_localctx);
				enterOuterAlt(_localctx, 17);
				{
				setState(7354);
				match(FILE);
				}
				break;
			case 18:
				_localctx = new StaticPrivilegeGrantContext(_localctx);
				enterOuterAlt(_localctx, 18);
				{
				setState(7355);
				match(GRANT);
				setState(7356);
				match(OPTION);
				}
				break;
			case 19:
				_localctx = new StaticPrivilegeShowDatabasesContext(_localctx);
				enterOuterAlt(_localctx, 19);
				{
				setState(7357);
				match(SHOW);
				setState(7358);
				match(DATABASES);
				}
				break;
			case 20:
				_localctx = new StaticPrivilegeSuperContext(_localctx);
				enterOuterAlt(_localctx, 20);
				{
				setState(7359);
				match(SUPER);
				}
				break;
			case 21:
				_localctx = new StaticPrivilegeCreateTemporaryTablesContext(_localctx);
				enterOuterAlt(_localctx, 21);
				{
				setState(7360);
				match(CREATE);
				setState(7361);
				match(TEMPORARY);
				setState(7362);
				match(TABLES);
				}
				break;
			case 22:
				_localctx = new StaticPrivilegeLockTablesContext(_localctx);
				enterOuterAlt(_localctx, 22);
				{
				setState(7363);
				match(LOCK);
				setState(7364);
				match(TABLES);
				}
				break;
			case 23:
				_localctx = new StaticPrivilegeReplicationSlaveContext(_localctx);
				enterOuterAlt(_localctx, 23);
				{
				setState(7365);
				match(REPLICATION);
				setState(7366);
				match(SLAVE);
				}
				break;
			case 24:
				_localctx = new StaticPrivilegeReplicationClientContext(_localctx);
				enterOuterAlt(_localctx, 24);
				{
				setState(7367);
				match(REPLICATION);
				setState(7368);
				match(CLIENT);
				}
				break;
			case 25:
				_localctx = new StaticPrivilegeCreateViewContext(_localctx);
				enterOuterAlt(_localctx, 25);
				{
				setState(7369);
				match(CREATE);
				setState(7370);
				match(VIEW);
				}
				break;
			case 26:
				_localctx = new StaticPrivilegeShowViewContext(_localctx);
				enterOuterAlt(_localctx, 26);
				{
				setState(7371);
				match(SHOW);
				setState(7372);
				match(VIEW);
				}
				break;
			case 27:
				_localctx = new StaticPrivilegeCreateRoutineContext(_localctx);
				enterOuterAlt(_localctx, 27);
				{
				setState(7373);
				match(CREATE);
				setState(7374);
				match(ROUTINE);
				}
				break;
			case 28:
				_localctx = new StaticPrivilegeAlterRoutineContext(_localctx);
				enterOuterAlt(_localctx, 28);
				{
				setState(7375);
				match(ALTER);
				setState(7376);
				match(ROUTINE);
				}
				break;
			case 29:
				_localctx = new StaticPrivilegeCreateUserContext(_localctx);
				enterOuterAlt(_localctx, 29);
				{
				setState(7377);
				match(CREATE);
				setState(7378);
				match(USER);
				}
				break;
			case 30:
				_localctx = new StaticPrivilegeEventContext(_localctx);
				enterOuterAlt(_localctx, 30);
				{
				setState(7379);
				match(EVENT);
				}
				break;
			case 31:
				_localctx = new StaticPrivilegeTriggerContext(_localctx);
				enterOuterAlt(_localctx, 31);
				{
				setState(7380);
				match(TRIGGER);
				}
				break;
			case 32:
				_localctx = new StaticPrivilegeCreateTablespaceContext(_localctx);
				enterOuterAlt(_localctx, 32);
				{
				setState(7381);
				match(CREATE);
				setState(7382);
				match(TABLESPACE);
				}
				break;
			case 33:
				_localctx = new StaticPrivilegeCreateRoleContext(_localctx);
				enterOuterAlt(_localctx, 33);
				{
				setState(7383);
				match(CREATE);
				setState(7384);
				match(ROLE);
				}
				break;
			case 34:
				_localctx = new StaticPrivilegeDropRoleContext(_localctx);
				enterOuterAlt(_localctx, 34);
				{
				setState(7385);
				match(DROP);
				setState(7386);
				match(ROLE);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AclTypeContext extends ParserRuleContext {
		public TerminalNode TABLE() { return getToken(MySQLStatementParser.TABLE, 0); }
		public TerminalNode FUNCTION() { return getToken(MySQLStatementParser.FUNCTION, 0); }
		public TerminalNode PROCEDURE() { return getToken(MySQLStatementParser.PROCEDURE, 0); }
		public AclTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_aclType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAclType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AclTypeContext aclType() throws RecognitionException {
		AclTypeContext _localctx = new AclTypeContext(_ctx, getState());
		enterRule(_localctx, 1058, RULE_aclType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7389);
			_la = _input.LA(1);
			if ( !(_la==FUNCTION || _la==PROCEDURE || _la==TABLE) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantIdentifierContext extends ParserRuleContext {
		public GrantIdentifierContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantIdentifier; }
	 
		public GrantIdentifierContext() { }
		public void copyFrom(GrantIdentifierContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class GrantLevelSchemaGlobalContext extends GrantIdentifierContext {
		public SchemaNameContext schemaName() {
			return getRuleContext(SchemaNameContext.class,0);
		}
		public TerminalNode DOT_ASTERISK_() { return getToken(MySQLStatementParser.DOT_ASTERISK_, 0); }
		public GrantLevelSchemaGlobalContext(GrantIdentifierContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantLevelSchemaGlobal(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GrantLevelGlobalContext extends GrantIdentifierContext {
		public TerminalNode ASTERISK_() { return getToken(MySQLStatementParser.ASTERISK_, 0); }
		public TerminalNode DOT_ASTERISK_() { return getToken(MySQLStatementParser.DOT_ASTERISK_, 0); }
		public GrantLevelGlobalContext(GrantIdentifierContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantLevelGlobal(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class GrantLevelTableContext extends GrantIdentifierContext {
		public TableNameContext tableName() {
			return getRuleContext(TableNameContext.class,0);
		}
		public GrantLevelTableContext(GrantIdentifierContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantLevelTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantIdentifierContext grantIdentifier() throws RecognitionException {
		GrantIdentifierContext _localctx = new GrantIdentifierContext(_ctx, getState());
		enterRule(_localctx, 1060, RULE_grantIdentifier);
		try {
			setState(7398);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,969,_ctx) ) {
			case 1:
				_localctx = new GrantLevelGlobalContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7391);
				match(ASTERISK_);
				}
				break;
			case 2:
				_localctx = new GrantLevelGlobalContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7392);
				match(ASTERISK_);
				setState(7393);
				match(DOT_ASTERISK_);
				}
				break;
			case 3:
				_localctx = new GrantLevelSchemaGlobalContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7394);
				schemaName();
				setState(7395);
				match(DOT_ASTERISK_);
				}
				break;
			case 4:
				_localctx = new GrantLevelTableContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7397);
				tableName();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public CreateUserListContext createUserList() {
			return getRuleContext(CreateUserListContext.class,0);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public DefaultRoleClauseContext defaultRoleClause() {
			return getRuleContext(DefaultRoleClauseContext.class,0);
		}
		public RequireClauseContext requireClause() {
			return getRuleContext(RequireClauseContext.class,0);
		}
		public ConnectOptionsContext connectOptions() {
			return getRuleContext(ConnectOptionsContext.class,0);
		}
		public AccountLockPasswordExpireOptionsContext accountLockPasswordExpireOptions() {
			return getRuleContext(AccountLockPasswordExpireOptionsContext.class,0);
		}
		public CreateUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUserContext createUser() throws RecognitionException {
		CreateUserContext _localctx = new CreateUserContext(_ctx, getState());
		enterRule(_localctx, 1062, RULE_createUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7400);
			match(CREATE);
			setState(7401);
			match(USER);
			setState(7403);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7402);
				ifNotExists();
				}
			}

			setState(7405);
			createUserList();
			setState(7407);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT) {
				{
				setState(7406);
				defaultRoleClause();
				}
			}

			setState(7410);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REQUIRE) {
				{
				setState(7409);
				requireClause();
				}
			}

			setState(7413);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(7412);
				connectOptions();
				}
			}

			setState(7416);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==ACCOUNT || _la==FAILED_LOGIN_ATTEMPTS || _la==PASSWORD || _la==PASSWORD_LOCK_TIME) {
				{
				setState(7415);
				accountLockPasswordExpireOptions();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserEntryContext extends ParserRuleContext {
		public CreateUserEntryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUserEntry; }
	 
		public CreateUserEntryContext() { }
		public void copyFrom(CreateUserEntryContext ctx) {
			super.copyFrom(ctx);
		}
	}
	public static class CreateUserEntryIdentifiedByContext extends CreateUserEntryContext {
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode RANDOM() { return getToken(MySQLStatementParser.RANDOM, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public CreateUserEntryIdentifiedByContext(CreateUserEntryContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateUserEntryIdentifiedBy(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CreateUserEntryIdentifiedWithContext extends CreateUserEntryContext {
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TextOrIdentifierContext textOrIdentifier() {
			return getRuleContext(TextOrIdentifierContext.class,0);
		}
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public TerminalNode RANDOM() { return getToken(MySQLStatementParser.RANDOM, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public CreateUserEntryIdentifiedWithContext(CreateUserEntryContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateUserEntryIdentifiedWith(this);
			else return visitor.visitChildren(this);
		}
	}
	public static class CreateUserEntryNoOptionContext extends CreateUserEntryContext {
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public CreateUserEntryNoOptionContext(CreateUserEntryContext ctx) { copyFrom(ctx); }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateUserEntryNoOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUserEntryContext createUserEntry() throws RecognitionException {
		CreateUserEntryContext _localctx = new CreateUserEntryContext(_ctx, getState());
		enterRule(_localctx, 1064, RULE_createUserEntry);
		try {
			setState(7457);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,975,_ctx) ) {
			case 1:
				_localctx = new CreateUserEntryNoOptionContext(_localctx);
				enterOuterAlt(_localctx, 1);
				{
				setState(7418);
				username();
				}
				break;
			case 2:
				_localctx = new CreateUserEntryIdentifiedByContext(_localctx);
				enterOuterAlt(_localctx, 2);
				{
				setState(7419);
				username();
				setState(7420);
				match(IDENTIFIED);
				setState(7421);
				match(BY);
				setState(7422);
				string_();
				}
				break;
			case 3:
				_localctx = new CreateUserEntryIdentifiedByContext(_localctx);
				enterOuterAlt(_localctx, 3);
				{
				setState(7424);
				username();
				setState(7425);
				match(IDENTIFIED);
				setState(7426);
				match(BY);
				setState(7427);
				match(RANDOM);
				setState(7428);
				match(PASSWORD);
				}
				break;
			case 4:
				_localctx = new CreateUserEntryIdentifiedWithContext(_localctx);
				enterOuterAlt(_localctx, 4);
				{
				setState(7430);
				username();
				setState(7431);
				match(IDENTIFIED);
				setState(7432);
				match(WITH);
				setState(7433);
				textOrIdentifier();
				}
				break;
			case 5:
				_localctx = new CreateUserEntryIdentifiedWithContext(_localctx);
				enterOuterAlt(_localctx, 5);
				{
				setState(7435);
				username();
				setState(7436);
				match(IDENTIFIED);
				setState(7437);
				match(WITH);
				setState(7438);
				textOrIdentifier();
				setState(7439);
				match(AS);
				setState(7440);
				string_();
				}
				break;
			case 6:
				_localctx = new CreateUserEntryIdentifiedWithContext(_localctx);
				enterOuterAlt(_localctx, 6);
				{
				setState(7442);
				username();
				setState(7443);
				match(IDENTIFIED);
				setState(7444);
				match(WITH);
				setState(7445);
				textOrIdentifier();
				setState(7446);
				match(BY);
				setState(7447);
				string_();
				}
				break;
			case 7:
				_localctx = new CreateUserEntryIdentifiedWithContext(_localctx);
				enterOuterAlt(_localctx, 7);
				{
				setState(7449);
				username();
				setState(7450);
				match(IDENTIFIED);
				setState(7451);
				match(WITH);
				setState(7452);
				textOrIdentifier();
				setState(7453);
				match(BY);
				setState(7454);
				match(RANDOM);
				setState(7455);
				match(PASSWORD);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateUserListContext extends ParserRuleContext {
		public List createUserEntry() {
			return getRuleContexts(CreateUserEntryContext.class);
		}
		public CreateUserEntryContext createUserEntry(int i) {
			return getRuleContext(CreateUserEntryContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CreateUserListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createUserList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateUserList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateUserListContext createUserList() throws RecognitionException {
		CreateUserListContext _localctx = new CreateUserListContext(_ctx, getState());
		enterRule(_localctx, 1066, RULE_createUserList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7459);
			createUserEntry();
			setState(7464);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7460);
				match(COMMA_);
				setState(7461);
				createUserEntry();
				}
				}
				setState(7466);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DefaultRoleClauseContext extends ParserRuleContext {
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public DefaultRoleClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_defaultRoleClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDefaultRoleClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DefaultRoleClauseContext defaultRoleClause() throws RecognitionException {
		DefaultRoleClauseContext _localctx = new DefaultRoleClauseContext(_ctx, getState());
		enterRule(_localctx, 1068, RULE_defaultRoleClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7467);
			match(DEFAULT);
			setState(7468);
			match(ROLE);
			setState(7469);
			roleName();
			setState(7474);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7470);
				match(COMMA_);
				setState(7471);
				roleName();
				}
				}
				setState(7476);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RequireClauseContext extends ParserRuleContext {
		public TerminalNode REQUIRE() { return getToken(MySQLStatementParser.REQUIRE, 0); }
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode SSL() { return getToken(MySQLStatementParser.SSL, 0); }
		public TerminalNode X509() { return getToken(MySQLStatementParser.X509, 0); }
		public List tlsOption() {
			return getRuleContexts(TlsOptionContext.class);
		}
		public TlsOptionContext tlsOption(int i) {
			return getRuleContext(TlsOptionContext.class,i);
		}
		public List AND() { return getTokens(MySQLStatementParser.AND); }
		public TerminalNode AND(int i) {
			return getToken(MySQLStatementParser.AND, i);
		}
		public RequireClauseContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_requireClause; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRequireClause(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RequireClauseContext requireClause() throws RecognitionException {
		RequireClauseContext _localctx = new RequireClauseContext(_ctx, getState());
		enterRule(_localctx, 1070, RULE_requireClause);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7477);
			match(REQUIRE);
			setState(7491);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case NONE:
				{
				setState(7478);
				match(NONE);
				}
				break;
			case SSL:
				{
				setState(7479);
				match(SSL);
				}
				break;
			case X509:
				{
				setState(7480);
				match(X509);
				}
				break;
			case CIPHER:
			case ISSUER:
			case SUBJECT:
				{
				setState(7481);
				tlsOption();
				setState(7488);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==AND || _la==CIPHER || _la==ISSUER || _la==SUBJECT) {
					{
					{
					setState(7483);
					_errHandler.sync(this);
					_la = _input.LA(1);
					if (_la==AND) {
						{
						setState(7482);
						match(AND);
						}
					}

					setState(7485);
					tlsOption();
					}
					}
					setState(7490);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConnectOptionsContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public List connectOption() {
			return getRuleContexts(ConnectOptionContext.class);
		}
		public ConnectOptionContext connectOption(int i) {
			return getRuleContext(ConnectOptionContext.class,i);
		}
		public ConnectOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_connectOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConnectOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConnectOptionsContext connectOptions() throws RecognitionException {
		ConnectOptionsContext _localctx = new ConnectOptionsContext(_ctx, getState());
		enterRule(_localctx, 1072, RULE_connectOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7493);
			match(WITH);
			setState(7494);
			connectOption();
			setState(7498);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (((((_la - 414)) & ~0x3f) == 0 && ((1L << (_la - 414)) & ((1L << (MAX_CONNECTIONS_PER_HOUR - 414)) | (1L << (MAX_QUERIES_PER_HOUR - 414)) | (1L << (MAX_UPDATES_PER_HOUR - 414)) | (1L << (MAX_USER_CONNECTIONS - 414)))) != 0)) {
				{
				{
				setState(7495);
				connectOption();
				}
				}
				setState(7500);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AccountLockPasswordExpireOptionsContext extends ParserRuleContext {
		public List accountLockPasswordExpireOption() {
			return getRuleContexts(AccountLockPasswordExpireOptionContext.class);
		}
		public AccountLockPasswordExpireOptionContext accountLockPasswordExpireOption(int i) {
			return getRuleContext(AccountLockPasswordExpireOptionContext.class,i);
		}
		public AccountLockPasswordExpireOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_accountLockPasswordExpireOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAccountLockPasswordExpireOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AccountLockPasswordExpireOptionsContext accountLockPasswordExpireOptions() throws RecognitionException {
		AccountLockPasswordExpireOptionsContext _localctx = new AccountLockPasswordExpireOptionsContext(_ctx, getState());
		enterRule(_localctx, 1074, RULE_accountLockPasswordExpireOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7502); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7501);
				accountLockPasswordExpireOption();
				}
				}
				setState(7504); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==ACCOUNT || _la==FAILED_LOGIN_ATTEMPTS || _la==PASSWORD || _la==PASSWORD_LOCK_TIME );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AccountLockPasswordExpireOptionContext extends ParserRuleContext {
		public TerminalNode ACCOUNT() { return getToken(MySQLStatementParser.ACCOUNT, 0); }
		public TerminalNode LOCK() { return getToken(MySQLStatementParser.LOCK, 0); }
		public TerminalNode UNLOCK() { return getToken(MySQLStatementParser.UNLOCK, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public TerminalNode EXPIRE() { return getToken(MySQLStatementParser.EXPIRE, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode NEVER() { return getToken(MySQLStatementParser.NEVER, 0); }
		public TerminalNode INTERVAL() { return getToken(MySQLStatementParser.INTERVAL, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode DAY() { return getToken(MySQLStatementParser.DAY, 0); }
		public TerminalNode HISTORY() { return getToken(MySQLStatementParser.HISTORY, 0); }
		public TerminalNode REUSE() { return getToken(MySQLStatementParser.REUSE, 0); }
		public TerminalNode REQUIRE() { return getToken(MySQLStatementParser.REQUIRE, 0); }
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public TerminalNode OPTIONAL() { return getToken(MySQLStatementParser.OPTIONAL, 0); }
		public TerminalNode FAILED_LOGIN_ATTEMPTS() { return getToken(MySQLStatementParser.FAILED_LOGIN_ATTEMPTS, 0); }
		public TerminalNode PASSWORD_LOCK_TIME() { return getToken(MySQLStatementParser.PASSWORD_LOCK_TIME, 0); }
		public TerminalNode UNBOUNDED() { return getToken(MySQLStatementParser.UNBOUNDED, 0); }
		public AccountLockPasswordExpireOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_accountLockPasswordExpireOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAccountLockPasswordExpireOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AccountLockPasswordExpireOptionContext accountLockPasswordExpireOption() throws RecognitionException {
		AccountLockPasswordExpireOptionContext _localctx = new AccountLockPasswordExpireOptionContext(_ctx, getState());
		enterRule(_localctx, 1076, RULE_accountLockPasswordExpireOption);
		int _la;
		try {
			setState(7538);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,986,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7506);
				match(ACCOUNT);
				setState(7507);
				_la = _input.LA(1);
				if ( !(_la==LOCK || _la==UNLOCK) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7508);
				match(PASSWORD);
				setState(7509);
				match(EXPIRE);
				setState(7515);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(7510);
					match(DEFAULT);
					}
					break;
				case NEVER:
					{
					setState(7511);
					match(NEVER);
					}
					break;
				case INTERVAL:
					{
					setState(7512);
					match(INTERVAL);
					setState(7513);
					match(NUMBER_);
					setState(7514);
					match(DAY);
					}
					break;
				case EOF:
				case SEMI_:
				case ACCOUNT:
				case FAILED_LOGIN_ATTEMPTS:
				case PASSWORD:
				case PASSWORD_LOCK_TIME:
					break;
				default:
					break;
				}
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7517);
				match(PASSWORD);
				setState(7518);
				match(HISTORY);
				setState(7519);
				_la = _input.LA(1);
				if ( !(_la==DEFAULT || _la==NUMBER_) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case 4:
				enterOuterAlt(_localctx, 4);
				{
				setState(7520);
				match(PASSWORD);
				setState(7521);
				match(REUSE);
				setState(7522);
				match(INTERVAL);
				setState(7526);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case DEFAULT:
					{
					setState(7523);
					match(DEFAULT);
					}
					break;
				case NUMBER_:
					{
					setState(7524);
					match(NUMBER_);
					setState(7525);
					match(DAY);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 5:
				enterOuterAlt(_localctx, 5);
				{
				setState(7528);
				match(PASSWORD);
				setState(7529);
				match(REQUIRE);
				setState(7530);
				match(CURRENT);
				setState(7532);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==DEFAULT || _la==OPTIONAL) {
					{
					setState(7531);
					_la = _input.LA(1);
					if ( !(_la==DEFAULT || _la==OPTIONAL) ) {
					_errHandler.recoverInline(this);
					}
					else {
						if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
						_errHandler.reportMatch(this);
						consume();
					}
					}
				}

				}
				break;
			case 6:
				enterOuterAlt(_localctx, 6);
				{
				setState(7534);
				match(FAILED_LOGIN_ATTEMPTS);
				setState(7535);
				match(NUMBER_);
				}
				break;
			case 7:
				enterOuterAlt(_localctx, 7);
				{
				setState(7536);
				match(PASSWORD_LOCK_TIME);
				setState(7537);
				_la = _input.LA(1);
				if ( !(_la==UNBOUNDED || _la==NUMBER_) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserContext extends ParserRuleContext {
		public TerminalNode ALTER() { return getToken(MySQLStatementParser.ALTER, 0); }
		public List USER() { return getTokens(MySQLStatementParser.USER); }
		public TerminalNode USER(int i) {
			return getToken(MySQLStatementParser.USER, i);
		}
		public AlterUserListContext alterUserList() {
			return getRuleContext(AlterUserListContext.class,0);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public RequireClauseContext requireClause() {
			return getRuleContext(RequireClauseContext.class,0);
		}
		public ConnectOptionsContext connectOptions() {
			return getRuleContext(ConnectOptionsContext.class,0);
		}
		public AccountLockPasswordExpireOptionsContext accountLockPasswordExpireOptions() {
			return getRuleContext(AccountLockPasswordExpireOptionsContext.class,0);
		}
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public UserFuncAuthOptionContext userFuncAuthOption() {
			return getRuleContext(UserFuncAuthOptionContext.class,0);
		}
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AlterUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserContext alterUser() throws RecognitionException {
		AlterUserContext _localctx = new AlterUserContext(_ctx, getState());
		enterRule(_localctx, 1078, RULE_alterUser);
		int _la;
		try {
			setState(7584);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,995,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7540);
				match(ALTER);
				setState(7541);
				match(USER);
				setState(7543);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(7542);
					ifExists();
					}
				}

				setState(7545);
				alterUserList();
				setState(7547);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REQUIRE) {
					{
					setState(7546);
					requireClause();
					}
				}

				setState(7550);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==WITH) {
					{
					setState(7549);
					connectOptions();
					}
				}

				setState(7553);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==ACCOUNT || _la==FAILED_LOGIN_ATTEMPTS || _la==PASSWORD || _la==PASSWORD_LOCK_TIME) {
					{
					setState(7552);
					accountLockPasswordExpireOptions();
					}
				}

				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7555);
				match(ALTER);
				setState(7556);
				match(USER);
				setState(7558);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(7557);
					ifExists();
					}
				}

				setState(7560);
				match(USER);
				setState(7561);
				match(LP_);
				setState(7562);
				match(RP_);
				setState(7563);
				userFuncAuthOption();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7564);
				match(ALTER);
				setState(7565);
				match(USER);
				setState(7567);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==IF) {
					{
					setState(7566);
					ifExists();
					}
				}

				setState(7569);
				username();
				setState(7570);
				match(DEFAULT);
				setState(7571);
				match(ROLE);
				setState(7582);
				_errHandler.sync(this);
				switch ( getInterpreter().adaptivePredict(_input,994,_ctx) ) {
				case 1:
					{
					setState(7572);
					match(NONE);
					}
					break;
				case 2:
					{
					setState(7573);
					match(ALL);
					}
					break;
				case 3:
					{
					setState(7574);
					roleName();
					setState(7579);
					_errHandler.sync(this);
					_la = _input.LA(1);
					while (_la==COMMA_) {
						{
						{
						setState(7575);
						match(COMMA_);
						setState(7576);
						roleName();
						}
						}
						setState(7581);
						_errHandler.sync(this);
						_la = _input.LA(1);
					}
					}
					break;
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserEntryContext extends ParserRuleContext {
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public UserAuthOptionContext userAuthOption() {
			return getRuleContext(UserAuthOptionContext.class,0);
		}
		public AlterUserEntryContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUserEntry; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterUserEntry(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserEntryContext alterUserEntry() throws RecognitionException {
		AlterUserEntryContext _localctx = new AlterUserEntryContext(_ctx, getState());
		enterRule(_localctx, 1080, RULE_alterUserEntry);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7586);
			username();
			setState(7588);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DISCARD || _la==IDENTIFIED) {
				{
				setState(7587);
				userAuthOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AlterUserListContext extends ParserRuleContext {
		public List alterUserEntry() {
			return getRuleContexts(AlterUserEntryContext.class);
		}
		public AlterUserEntryContext alterUserEntry(int i) {
			return getRuleContext(AlterUserEntryContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public AlterUserListContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_alterUserList; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAlterUserList(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AlterUserListContext alterUserList() throws RecognitionException {
		AlterUserListContext _localctx = new AlterUserListContext(_ctx, getState());
		enterRule(_localctx, 1082, RULE_alterUserList);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7590);
			alterUserEntry();
			setState(7595);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7591);
				match(COMMA_);
				setState(7592);
				alterUserEntry();
				}
				}
				setState(7597);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropUserContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public List username() {
			return getRuleContexts(UsernameContext.class);
		}
		public UsernameContext username(int i) {
			return getRuleContext(UsernameContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public DropUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropUserContext dropUser() throws RecognitionException {
		DropUserContext _localctx = new DropUserContext(_ctx, getState());
		enterRule(_localctx, 1084, RULE_dropUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7598);
			match(DROP);
			setState(7599);
			match(USER);
			setState(7601);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7600);
				ifExists();
				}
			}

			setState(7603);
			username();
			setState(7608);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7604);
				match(COMMA_);
				setState(7605);
				username();
				}
				}
				setState(7610);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class CreateRoleContext extends ParserRuleContext {
		public TerminalNode CREATE() { return getToken(MySQLStatementParser.CREATE, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public IfNotExistsContext ifNotExists() {
			return getRuleContext(IfNotExistsContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public CreateRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_createRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitCreateRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final CreateRoleContext createRole() throws RecognitionException {
		CreateRoleContext _localctx = new CreateRoleContext(_ctx, getState());
		enterRule(_localctx, 1086, RULE_createRole);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7611);
			match(CREATE);
			setState(7612);
			match(ROLE);
			setState(7614);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7613);
				ifNotExists();
				}
			}

			setState(7616);
			roleName();
			setState(7621);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7617);
				match(COMMA_);
				setState(7618);
				roleName();
				}
				}
				setState(7623);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class DropRoleContext extends ParserRuleContext {
		public TerminalNode DROP() { return getToken(MySQLStatementParser.DROP, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public IfExistsContext ifExists() {
			return getRuleContext(IfExistsContext.class,0);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public DropRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_dropRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitDropRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final DropRoleContext dropRole() throws RecognitionException {
		DropRoleContext _localctx = new DropRoleContext(_ctx, getState());
		enterRule(_localctx, 1088, RULE_dropRole);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7624);
			match(DROP);
			setState(7625);
			match(ROLE);
			setState(7627);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==IF) {
				{
				setState(7626);
				ifExists();
				}
			}

			setState(7629);
			roleName();
			setState(7634);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7630);
				match(COMMA_);
				setState(7631);
				roleName();
				}
				}
				setState(7636);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RenameUserContext extends ParserRuleContext {
		public TerminalNode RENAME() { return getToken(MySQLStatementParser.RENAME, 0); }
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public List username() {
			return getRuleContexts(UsernameContext.class);
		}
		public UsernameContext username(int i) {
			return getRuleContext(UsernameContext.class,i);
		}
		public List TO() { return getTokens(MySQLStatementParser.TO); }
		public TerminalNode TO(int i) {
			return getToken(MySQLStatementParser.TO, i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public RenameUserContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_renameUser; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRenameUser(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RenameUserContext renameUser() throws RecognitionException {
		RenameUserContext _localctx = new RenameUserContext(_ctx, getState());
		enterRule(_localctx, 1090, RULE_renameUser);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7637);
			match(RENAME);
			setState(7638);
			match(USER);
			setState(7639);
			username();
			setState(7640);
			match(TO);
			setState(7641);
			username();
			setState(7649);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7642);
				match(COMMA_);
				setState(7643);
				username();
				setState(7644);
				match(TO);
				setState(7645);
				username();
				}
				}
				setState(7651);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetDefaultRoleContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public List username() {
			return getRuleContexts(UsernameContext.class);
		}
		public UsernameContext username(int i) {
			return getRuleContext(UsernameContext.class,i);
		}
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public SetDefaultRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setDefaultRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetDefaultRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetDefaultRoleContext setDefaultRole() throws RecognitionException {
		SetDefaultRoleContext _localctx = new SetDefaultRoleContext(_ctx, getState());
		enterRule(_localctx, 1092, RULE_setDefaultRole);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7652);
			match(SET);
			setState(7653);
			match(DEFAULT);
			setState(7654);
			match(ROLE);
			setState(7665);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1006,_ctx) ) {
			case 1:
				{
				setState(7655);
				match(NONE);
				}
				break;
			case 2:
				{
				setState(7656);
				match(ALL);
				}
				break;
			case 3:
				{
				setState(7657);
				roleName();
				setState(7662);
				_errHandler.sync(this);
				_la = _input.LA(1);
				while (_la==COMMA_) {
					{
					{
					setState(7658);
					match(COMMA_);
					setState(7659);
					roleName();
					}
					}
					setState(7664);
					_errHandler.sync(this);
					_la = _input.LA(1);
				}
				}
				break;
			}
			setState(7667);
			match(TO);
			setState(7668);
			username();
			setState(7673);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7669);
				match(COMMA_);
				setState(7670);
				username();
				}
				}
				setState(7675);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetRoleContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode EXCEPT() { return getToken(MySQLStatementParser.EXCEPT, 0); }
		public RolesContext roles() {
			return getRuleContext(RolesContext.class,0);
		}
		public SetRoleContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setRole; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetRole(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetRoleContext setRole() throws RecognitionException {
		SetRoleContext _localctx = new SetRoleContext(_ctx, getState());
		enterRule(_localctx, 1094, RULE_setRole);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7676);
			match(SET);
			setState(7677);
			match(ROLE);
			setState(7685);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1008,_ctx) ) {
			case 1:
				{
				setState(7678);
				match(DEFAULT);
				}
				break;
			case 2:
				{
				setState(7679);
				match(NONE);
				}
				break;
			case 3:
				{
				setState(7680);
				match(ALL);
				}
				break;
			case 4:
				{
				setState(7681);
				match(ALL);
				setState(7682);
				match(EXCEPT);
				setState(7683);
				roles();
				}
				break;
			case 5:
				{
				setState(7684);
				roles();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class SetPasswordContext extends ParserRuleContext {
		public TerminalNode SET() { return getToken(MySQLStatementParser.SET, 0); }
		public List PASSWORD() { return getTokens(MySQLStatementParser.PASSWORD); }
		public TerminalNode PASSWORD(int i) {
			return getToken(MySQLStatementParser.PASSWORD, i);
		}
		public AuthOptionContext authOption() {
			return getRuleContext(AuthOptionContext.class,0);
		}
		public TerminalNode FOR() { return getToken(MySQLStatementParser.FOR, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode RETAIN() { return getToken(MySQLStatementParser.RETAIN, 0); }
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public SetPasswordContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_setPassword; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitSetPassword(this);
			else return visitor.visitChildren(this);
		}
	}

	public final SetPasswordContext setPassword() throws RecognitionException {
		SetPasswordContext _localctx = new SetPasswordContext(_ctx, getState());
		enterRule(_localctx, 1096, RULE_setPassword);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7687);
			match(SET);
			setState(7688);
			match(PASSWORD);
			setState(7691);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(7689);
				match(FOR);
				setState(7690);
				username();
				}
			}

			setState(7693);
			authOption();
			setState(7696);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REPLACE) {
				{
				setState(7694);
				match(REPLACE);
				setState(7695);
				string_();
				}
			}

			setState(7701);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RETAIN) {
				{
				setState(7698);
				match(RETAIN);
				setState(7699);
				match(CURRENT);
				setState(7700);
				match(PASSWORD);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class AuthOptionContext extends ParserRuleContext {
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public TerminalNode RANDOM() { return getToken(MySQLStatementParser.RANDOM, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public AuthOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_authOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final AuthOptionContext authOption() throws RecognitionException {
		AuthOptionContext _localctx = new AuthOptionContext(_ctx, getState());
		enterRule(_localctx, 1098, RULE_authOption);
		try {
			setState(7713);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1012,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7703);
				match(EQ_);
				setState(7704);
				stringLiterals();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7705);
				match(TO);
				setState(7706);
				match(RANDOM);
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7707);
				match(EQ_);
				setState(7708);
				match(PASSWORD);
				setState(7709);
				match(LP_);
				setState(7710);
				stringLiterals();
				setState(7711);
				match(RP_);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithGrantOptionContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode GRANT() { return getToken(MySQLStatementParser.GRANT, 0); }
		public TerminalNode OPTION() { return getToken(MySQLStatementParser.OPTION, 0); }
		public WithGrantOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withGrantOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWithGrantOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithGrantOptionContext withGrantOption() throws RecognitionException {
		WithGrantOptionContext _localctx = new WithGrantOptionContext(_ctx, getState());
		enterRule(_localctx, 1100, RULE_withGrantOption);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7715);
			match(WITH);
			setState(7716);
			match(GRANT);
			setState(7717);
			match(OPTION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserOrRolesContext extends ParserRuleContext {
		public List userOrRole() {
			return getRuleContexts(UserOrRoleContext.class);
		}
		public UserOrRoleContext userOrRole(int i) {
			return getRuleContext(UserOrRoleContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public UserOrRolesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userOrRoles; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserOrRoles(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserOrRolesContext userOrRoles() throws RecognitionException {
		UserOrRolesContext _localctx = new UserOrRolesContext(_ctx, getState());
		enterRule(_localctx, 1102, RULE_userOrRoles);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7719);
			userOrRole();
			setState(7724);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7720);
				match(COMMA_);
				setState(7721);
				userOrRole();
				}
				}
				setState(7726);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class RolesContext extends ParserRuleContext {
		public List roleName() {
			return getRuleContexts(RoleNameContext.class);
		}
		public RoleNameContext roleName(int i) {
			return getRuleContext(RoleNameContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public RolesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_roles; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitRoles(this);
			else return visitor.visitChildren(this);
		}
	}

	public final RolesContext roles() throws RecognitionException {
		RolesContext _localctx = new RolesContext(_ctx, getState());
		enterRule(_localctx, 1104, RULE_roles);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7727);
			roleName();
			setState(7732);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7728);
				match(COMMA_);
				setState(7729);
				roleName();
				}
				}
				setState(7734);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GrantAsContext extends ParserRuleContext {
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public UsernameContext username() {
			return getRuleContext(UsernameContext.class,0);
		}
		public WithRolesContext withRoles() {
			return getRuleContext(WithRolesContext.class,0);
		}
		public GrantAsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_grantAs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGrantAs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GrantAsContext grantAs() throws RecognitionException {
		GrantAsContext _localctx = new GrantAsContext(_ctx, getState());
		enterRule(_localctx, 1106, RULE_grantAs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7735);
			match(AS);
			setState(7736);
			username();
			setState(7738);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==WITH) {
				{
				setState(7737);
				withRoles();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WithRolesContext extends ParserRuleContext {
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public TerminalNode ROLE() { return getToken(MySQLStatementParser.ROLE, 0); }
		public TerminalNode DEFAULT() { return getToken(MySQLStatementParser.DEFAULT, 0); }
		public TerminalNode NONE() { return getToken(MySQLStatementParser.NONE, 0); }
		public TerminalNode ALL() { return getToken(MySQLStatementParser.ALL, 0); }
		public TerminalNode EXCEPT() { return getToken(MySQLStatementParser.EXCEPT, 0); }
		public RolesContext roles() {
			return getRuleContext(RolesContext.class,0);
		}
		public WithRolesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_withRoles; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWithRoles(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WithRolesContext withRoles() throws RecognitionException {
		WithRolesContext _localctx = new WithRolesContext(_ctx, getState());
		enterRule(_localctx, 1108, RULE_withRoles);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7740);
			match(WITH);
			setState(7741);
			match(ROLE);
			setState(7749);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1016,_ctx) ) {
			case 1:
				{
				setState(7742);
				match(DEFAULT);
				}
				break;
			case 2:
				{
				setState(7743);
				match(NONE);
				}
				break;
			case 3:
				{
				setState(7744);
				match(ALL);
				}
				break;
			case 4:
				{
				setState(7745);
				match(ALL);
				setState(7746);
				match(EXCEPT);
				setState(7747);
				roles();
				}
				break;
			case 5:
				{
				setState(7748);
				roles();
				}
				break;
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserAuthOptionContext extends ParserRuleContext {
		public IdentifiedByContext identifiedBy() {
			return getRuleContext(IdentifiedByContext.class,0);
		}
		public IdentifiedWithContext identifiedWith() {
			return getRuleContext(IdentifiedWithContext.class,0);
		}
		public TerminalNode DISCARD() { return getToken(MySQLStatementParser.DISCARD, 0); }
		public TerminalNode OLD() { return getToken(MySQLStatementParser.OLD, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public UserAuthOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userAuthOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserAuthOptionContext userAuthOption() throws RecognitionException {
		UserAuthOptionContext _localctx = new UserAuthOptionContext(_ctx, getState());
		enterRule(_localctx, 1110, RULE_userAuthOption);
		try {
			setState(7756);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1017,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7751);
				identifiedBy();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7752);
				identifiedWith();
				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7753);
				match(DISCARD);
				setState(7754);
				match(OLD);
				setState(7755);
				match(PASSWORD);
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifiedByContext extends ParserRuleContext {
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode RANDOM() { return getToken(MySQLStatementParser.RANDOM, 0); }
		public List PASSWORD() { return getTokens(MySQLStatementParser.PASSWORD); }
		public TerminalNode PASSWORD(int i) {
			return getToken(MySQLStatementParser.PASSWORD, i);
		}
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public TerminalNode RETAIN() { return getToken(MySQLStatementParser.RETAIN, 0); }
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public IdentifiedByContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifiedBy; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifiedBy(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifiedByContext identifiedBy() throws RecognitionException {
		IdentifiedByContext _localctx = new IdentifiedByContext(_ctx, getState());
		enterRule(_localctx, 1112, RULE_identifiedBy);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7758);
			match(IDENTIFIED);
			setState(7759);
			match(BY);
			setState(7763);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SINGLE_QUOTED_TEXT:
			case DOUBLE_QUOTED_TEXT:
				{
				setState(7760);
				string_();
				}
				break;
			case RANDOM:
				{
				setState(7761);
				match(RANDOM);
				setState(7762);
				match(PASSWORD);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			setState(7767);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==REPLACE) {
				{
				setState(7765);
				match(REPLACE);
				setState(7766);
				string_();
				}
			}

			setState(7772);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RETAIN) {
				{
				setState(7769);
				match(RETAIN);
				setState(7770);
				match(CURRENT);
				setState(7771);
				match(PASSWORD);
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IdentifiedWithContext extends ParserRuleContext {
		public TerminalNode IDENTIFIED() { return getToken(MySQLStatementParser.IDENTIFIED, 0); }
		public TerminalNode WITH() { return getToken(MySQLStatementParser.WITH, 0); }
		public PluginNameContext pluginName() {
			return getRuleContext(PluginNameContext.class,0);
		}
		public TerminalNode BY() { return getToken(MySQLStatementParser.BY, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode RANDOM() { return getToken(MySQLStatementParser.RANDOM, 0); }
		public List PASSWORD() { return getTokens(MySQLStatementParser.PASSWORD); }
		public TerminalNode PASSWORD(int i) {
			return getToken(MySQLStatementParser.PASSWORD, i);
		}
		public TerminalNode REPLACE() { return getToken(MySQLStatementParser.REPLACE, 0); }
		public StringLiteralsContext stringLiterals() {
			return getRuleContext(StringLiteralsContext.class,0);
		}
		public TerminalNode RETAIN() { return getToken(MySQLStatementParser.RETAIN, 0); }
		public TerminalNode CURRENT() { return getToken(MySQLStatementParser.CURRENT, 0); }
		public TerminalNode AS() { return getToken(MySQLStatementParser.AS, 0); }
		public TextStringHashContext textStringHash() {
			return getRuleContext(TextStringHashContext.class,0);
		}
		public IdentifiedWithContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_identifiedWith; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIdentifiedWith(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IdentifiedWithContext identifiedWith() throws RecognitionException {
		IdentifiedWithContext _localctx = new IdentifiedWithContext(_ctx, getState());
		enterRule(_localctx, 1114, RULE_identifiedWith);
		int _la;
		try {
			setState(7805);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1025,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7774);
				match(IDENTIFIED);
				setState(7775);
				match(WITH);
				setState(7776);
				pluginName();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7777);
				match(IDENTIFIED);
				setState(7778);
				match(WITH);
				setState(7779);
				pluginName();
				setState(7780);
				match(BY);
				setState(7784);
				_errHandler.sync(this);
				switch (_input.LA(1)) {
				case SINGLE_QUOTED_TEXT:
				case DOUBLE_QUOTED_TEXT:
					{
					setState(7781);
					string_();
					}
					break;
				case RANDOM:
					{
					setState(7782);
					match(RANDOM);
					setState(7783);
					match(PASSWORD);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				setState(7788);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==REPLACE) {
					{
					setState(7786);
					match(REPLACE);
					setState(7787);
					stringLiterals();
					}
				}

				setState(7793);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RETAIN) {
					{
					setState(7790);
					match(RETAIN);
					setState(7791);
					match(CURRENT);
					setState(7792);
					match(PASSWORD);
					}
				}

				}
				break;
			case 3:
				enterOuterAlt(_localctx, 3);
				{
				setState(7795);
				match(IDENTIFIED);
				setState(7796);
				match(WITH);
				setState(7797);
				pluginName();
				setState(7798);
				match(AS);
				setState(7799);
				textStringHash();
				setState(7803);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==RETAIN) {
					{
					setState(7800);
					match(RETAIN);
					setState(7801);
					match(CURRENT);
					setState(7802);
					match(PASSWORD);
					}
				}

				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConnectOptionContext extends ParserRuleContext {
		public TerminalNode MAX_QUERIES_PER_HOUR() { return getToken(MySQLStatementParser.MAX_QUERIES_PER_HOUR, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode MAX_UPDATES_PER_HOUR() { return getToken(MySQLStatementParser.MAX_UPDATES_PER_HOUR, 0); }
		public TerminalNode MAX_CONNECTIONS_PER_HOUR() { return getToken(MySQLStatementParser.MAX_CONNECTIONS_PER_HOUR, 0); }
		public TerminalNode MAX_USER_CONNECTIONS() { return getToken(MySQLStatementParser.MAX_USER_CONNECTIONS, 0); }
		public ConnectOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_connectOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConnectOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConnectOptionContext connectOption() throws RecognitionException {
		ConnectOptionContext _localctx = new ConnectOptionContext(_ctx, getState());
		enterRule(_localctx, 1116, RULE_connectOption);
		try {
			setState(7815);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MAX_QUERIES_PER_HOUR:
				enterOuterAlt(_localctx, 1);
				{
				setState(7807);
				match(MAX_QUERIES_PER_HOUR);
				setState(7808);
				match(NUMBER_);
				}
				break;
			case MAX_UPDATES_PER_HOUR:
				enterOuterAlt(_localctx, 2);
				{
				setState(7809);
				match(MAX_UPDATES_PER_HOUR);
				setState(7810);
				match(NUMBER_);
				}
				break;
			case MAX_CONNECTIONS_PER_HOUR:
				enterOuterAlt(_localctx, 3);
				{
				setState(7811);
				match(MAX_CONNECTIONS_PER_HOUR);
				setState(7812);
				match(NUMBER_);
				}
				break;
			case MAX_USER_CONNECTIONS:
				enterOuterAlt(_localctx, 4);
				{
				setState(7813);
				match(MAX_USER_CONNECTIONS);
				setState(7814);
				match(NUMBER_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class TlsOptionContext extends ParserRuleContext {
		public TerminalNode CIPHER() { return getToken(MySQLStatementParser.CIPHER, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode ISSUER() { return getToken(MySQLStatementParser.ISSUER, 0); }
		public TerminalNode SUBJECT() { return getToken(MySQLStatementParser.SUBJECT, 0); }
		public TlsOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_tlsOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitTlsOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final TlsOptionContext tlsOption() throws RecognitionException {
		TlsOptionContext _localctx = new TlsOptionContext(_ctx, getState());
		enterRule(_localctx, 1118, RULE_tlsOption);
		try {
			setState(7823);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case CIPHER:
				enterOuterAlt(_localctx, 1);
				{
				setState(7817);
				match(CIPHER);
				setState(7818);
				string_();
				}
				break;
			case ISSUER:
				enterOuterAlt(_localctx, 2);
				{
				setState(7819);
				match(ISSUER);
				setState(7820);
				string_();
				}
				break;
			case SUBJECT:
				enterOuterAlt(_localctx, 3);
				{
				setState(7821);
				match(SUBJECT);
				setState(7822);
				string_();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UserFuncAuthOptionContext extends ParserRuleContext {
		public IdentifiedByContext identifiedBy() {
			return getRuleContext(IdentifiedByContext.class,0);
		}
		public TerminalNode DISCARD() { return getToken(MySQLStatementParser.DISCARD, 0); }
		public TerminalNode OLD() { return getToken(MySQLStatementParser.OLD, 0); }
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public UserFuncAuthOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_userFuncAuthOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUserFuncAuthOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UserFuncAuthOptionContext userFuncAuthOption() throws RecognitionException {
		UserFuncAuthOptionContext _localctx = new UserFuncAuthOptionContext(_ctx, getState());
		enterRule(_localctx, 1120, RULE_userFuncAuthOption);
		try {
			setState(7829);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case IDENTIFIED:
				enterOuterAlt(_localctx, 1);
				{
				setState(7825);
				identifiedBy();
				}
				break;
			case DISCARD:
				enterOuterAlt(_localctx, 2);
				{
				setState(7826);
				match(DISCARD);
				setState(7827);
				match(OLD);
				setState(7828);
				match(PASSWORD);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeContext extends ParserRuleContext {
		public ChangeMasterToContext changeMasterTo() {
			return getRuleContext(ChangeMasterToContext.class,0);
		}
		public ChangeReplicationFilterContext changeReplicationFilter() {
			return getRuleContext(ChangeReplicationFilterContext.class,0);
		}
		public ChangeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_change; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChange(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChangeContext change() throws RecognitionException {
		ChangeContext _localctx = new ChangeContext(_ctx, getState());
		enterRule(_localctx, 1122, RULE_change);
		try {
			setState(7833);
			_errHandler.sync(this);
			switch ( getInterpreter().adaptivePredict(_input,1029,_ctx) ) {
			case 1:
				enterOuterAlt(_localctx, 1);
				{
				setState(7831);
				changeMasterTo();
				}
				break;
			case 2:
				enterOuterAlt(_localctx, 2);
				{
				setState(7832);
				changeReplicationFilter();
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeMasterToContext extends ParserRuleContext {
		public TerminalNode CHANGE() { return getToken(MySQLStatementParser.CHANGE, 0); }
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public MasterDefsContext masterDefs() {
			return getRuleContext(MasterDefsContext.class,0);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ChangeMasterToContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_changeMasterTo; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChangeMasterTo(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChangeMasterToContext changeMasterTo() throws RecognitionException {
		ChangeMasterToContext _localctx = new ChangeMasterToContext(_ctx, getState());
		enterRule(_localctx, 1124, RULE_changeMasterTo);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7835);
			match(CHANGE);
			setState(7836);
			match(MASTER);
			setState(7837);
			match(TO);
			setState(7838);
			masterDefs();
			setState(7840);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(7839);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ChangeReplicationFilterContext extends ParserRuleContext {
		public TerminalNode CHANGE() { return getToken(MySQLStatementParser.CHANGE, 0); }
		public TerminalNode REPLICATION() { return getToken(MySQLStatementParser.REPLICATION, 0); }
		public TerminalNode FILTER() { return getToken(MySQLStatementParser.FILTER, 0); }
		public FilterDefsContext filterDefs() {
			return getRuleContext(FilterDefsContext.class,0);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public ChangeReplicationFilterContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_changeReplicationFilter; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitChangeReplicationFilter(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ChangeReplicationFilterContext changeReplicationFilter() throws RecognitionException {
		ChangeReplicationFilterContext _localctx = new ChangeReplicationFilterContext(_ctx, getState());
		enterRule(_localctx, 1126, RULE_changeReplicationFilter);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7842);
			match(CHANGE);
			setState(7843);
			match(REPLICATION);
			setState(7844);
			match(FILTER);
			setState(7845);
			filterDefs();
			setState(7847);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(7846);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartSlaveContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySQLStatementParser.START, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public ConnectionOptionsContext connectionOptions() {
			return getRuleContext(ConnectionOptionsContext.class,0);
		}
		public ThreadTypesContext threadTypes() {
			return getRuleContext(ThreadTypesContext.class,0);
		}
		public UtilOptionContext utilOption() {
			return getRuleContext(UtilOptionContext.class,0);
		}
		public ChannelOptionContext channelOption() {
			return getRuleContext(ChannelOptionContext.class,0);
		}
		public StartSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startSlave; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStartSlave(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StartSlaveContext startSlave() throws RecognitionException {
		StartSlaveContext _localctx = new StartSlaveContext(_ctx, getState());
		enterRule(_localctx, 1128, RULE_startSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7849);
			match(START);
			setState(7850);
			match(SLAVE);
			setState(7852);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==RELAY_THREAD || _la==SQL_THREAD) {
				{
				setState(7851);
				threadTypes();
				}
			}

			setState(7855);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==UNTIL) {
				{
				setState(7854);
				utilOption();
				}
			}

			setState(7857);
			connectionOptions();
			setState(7859);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==FOR) {
				{
				setState(7858);
				channelOption();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StopSlaveContext extends ParserRuleContext {
		public TerminalNode STOP() { return getToken(MySQLStatementParser.STOP, 0); }
		public TerminalNode SLAVE() { return getToken(MySQLStatementParser.SLAVE, 0); }
		public ThreadTypesContext threadTypes() {
			return getRuleContext(ThreadTypesContext.class,0);
		}
		public List channelOption() {
			return getRuleContexts(ChannelOptionContext.class);
		}
		public ChannelOptionContext channelOption(int i) {
			return getRuleContext(ChannelOptionContext.class,i);
		}
		public StopSlaveContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stopSlave; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStopSlave(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StopSlaveContext stopSlave() throws RecognitionException {
		StopSlaveContext _localctx = new StopSlaveContext(_ctx, getState());
		enterRule(_localctx, 1130, RULE_stopSlave);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7861);
			match(STOP);
			setState(7862);
			match(SLAVE);
			setState(7863);
			threadTypes();
			setState(7867);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==FOR) {
				{
				{
				setState(7864);
				channelOption();
				}
				}
				setState(7869);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class GroupReplicationContext extends ParserRuleContext {
		public StartGroupReplicationContext startGroupReplication() {
			return getRuleContext(StartGroupReplicationContext.class,0);
		}
		public StopGroupReplicationContext stopGroupReplication() {
			return getRuleContext(StopGroupReplicationContext.class,0);
		}
		public GroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_groupReplication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitGroupReplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final GroupReplicationContext groupReplication() throws RecognitionException {
		GroupReplicationContext _localctx = new GroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 1132, RULE_groupReplication);
		try {
			setState(7872);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case START:
				enterOuterAlt(_localctx, 1);
				{
				setState(7870);
				startGroupReplication();
				}
				break;
			case STOP:
				enterOuterAlt(_localctx, 2);
				{
				setState(7871);
				stopGroupReplication();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StartGroupReplicationContext extends ParserRuleContext {
		public TerminalNode START() { return getToken(MySQLStatementParser.START, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySQLStatementParser.GROUP_REPLICATION, 0); }
		public StartGroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_startGroupReplication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStartGroupReplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StartGroupReplicationContext startGroupReplication() throws RecognitionException {
		StartGroupReplicationContext _localctx = new StartGroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 1134, RULE_startGroupReplication);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7874);
			match(START);
			setState(7875);
			match(GROUP_REPLICATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class StopGroupReplicationContext extends ParserRuleContext {
		public TerminalNode STOP() { return getToken(MySQLStatementParser.STOP, 0); }
		public TerminalNode GROUP_REPLICATION() { return getToken(MySQLStatementParser.GROUP_REPLICATION, 0); }
		public StopGroupReplicationContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_stopGroupReplication; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitStopGroupReplication(this);
			else return visitor.visitChildren(this);
		}
	}

	public final StopGroupReplicationContext stopGroupReplication() throws RecognitionException {
		StopGroupReplicationContext _localctx = new StopGroupReplicationContext(_ctx, getState());
		enterRule(_localctx, 1136, RULE_stopGroupReplication);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7877);
			match(STOP);
			setState(7878);
			match(GROUP_REPLICATION);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class PurgeBinaryLogContext extends ParserRuleContext {
		public TerminalNode PURGE() { return getToken(MySQLStatementParser.PURGE, 0); }
		public TerminalNode LOGS() { return getToken(MySQLStatementParser.LOGS, 0); }
		public TerminalNode BINARY() { return getToken(MySQLStatementParser.BINARY, 0); }
		public TerminalNode MASTER() { return getToken(MySQLStatementParser.MASTER, 0); }
		public TerminalNode TO() { return getToken(MySQLStatementParser.TO, 0); }
		public LogNameContext logName() {
			return getRuleContext(LogNameContext.class,0);
		}
		public TerminalNode BEFORE() { return getToken(MySQLStatementParser.BEFORE, 0); }
		public DatetimeExprContext datetimeExpr() {
			return getRuleContext(DatetimeExprContext.class,0);
		}
		public PurgeBinaryLogContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_purgeBinaryLog; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitPurgeBinaryLog(this);
			else return visitor.visitChildren(this);
		}
	}

	public final PurgeBinaryLogContext purgeBinaryLog() throws RecognitionException {
		PurgeBinaryLogContext _localctx = new PurgeBinaryLogContext(_ctx, getState());
		enterRule(_localctx, 1138, RULE_purgeBinaryLog);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7880);
			match(PURGE);
			setState(7881);
			_la = _input.LA(1);
			if ( !(_la==BINARY || _la==MASTER) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			setState(7882);
			match(LOGS);
			setState(7887);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case TO:
				{
				setState(7883);
				match(TO);
				setState(7884);
				logName();
				}
				break;
			case BEFORE:
				{
				setState(7885);
				match(BEFORE);
				setState(7886);
				datetimeExpr();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ThreadTypesContext extends ParserRuleContext {
		public List threadType() {
			return getRuleContexts(ThreadTypeContext.class);
		}
		public ThreadTypeContext threadType(int i) {
			return getRuleContext(ThreadTypeContext.class,i);
		}
		public ThreadTypesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_threadTypes; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitThreadTypes(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ThreadTypesContext threadTypes() throws RecognitionException {
		ThreadTypesContext _localctx = new ThreadTypesContext(_ctx, getState());
		enterRule(_localctx, 1140, RULE_threadTypes);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7890); 
			_errHandler.sync(this);
			_la = _input.LA(1);
			do {
				{
				{
				setState(7889);
				threadType();
				}
				}
				setState(7892); 
				_errHandler.sync(this);
				_la = _input.LA(1);
			} while ( _la==RELAY_THREAD || _la==SQL_THREAD );
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ThreadTypeContext extends ParserRuleContext {
		public TerminalNode RELAY_THREAD() { return getToken(MySQLStatementParser.RELAY_THREAD, 0); }
		public TerminalNode SQL_THREAD() { return getToken(MySQLStatementParser.SQL_THREAD, 0); }
		public ThreadTypeContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_threadType; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitThreadType(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ThreadTypeContext threadType() throws RecognitionException {
		ThreadTypeContext _localctx = new ThreadTypeContext(_ctx, getState());
		enterRule(_localctx, 1142, RULE_threadType);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7894);
			_la = _input.LA(1);
			if ( !(_la==RELAY_THREAD || _la==SQL_THREAD) ) {
			_errHandler.recoverInline(this);
			}
			else {
				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
				_errHandler.reportMatch(this);
				consume();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class UtilOptionContext extends ParserRuleContext {
		public TerminalNode UNTIL() { return getToken(MySQLStatementParser.UNTIL, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public IdentifierContext identifier() {
			return getRuleContext(IdentifierContext.class,0);
		}
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySQLStatementParser.MASTER_LOG_FILE, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySQLStatementParser.MASTER_LOG_POS, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySQLStatementParser.RELAY_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySQLStatementParser.RELAY_LOG_POS, 0); }
		public TerminalNode SQL_AFTER_MTS_GAPS() { return getToken(MySQLStatementParser.SQL_AFTER_MTS_GAPS, 0); }
		public TerminalNode SQL_BEFORE_GTIDS() { return getToken(MySQLStatementParser.SQL_BEFORE_GTIDS, 0); }
		public TerminalNode SQL_AFTER_GTIDS() { return getToken(MySQLStatementParser.SQL_AFTER_GTIDS, 0); }
		public UtilOptionContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_utilOption; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitUtilOption(this);
			else return visitor.visitChildren(this);
		}
	}

	public final UtilOptionContext utilOption() throws RecognitionException {
		UtilOptionContext _localctx = new UtilOptionContext(_ctx, getState());
		enterRule(_localctx, 1144, RULE_utilOption);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7896);
			match(UNTIL);
			setState(7917);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case SQL_AFTER_GTIDS:
			case SQL_BEFORE_GTIDS:
				{
				setState(7897);
				_la = _input.LA(1);
				if ( !(_la==SQL_AFTER_GTIDS || _la==SQL_BEFORE_GTIDS) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				setState(7898);
				match(EQ_);
				setState(7899);
				identifier();
				}
				break;
			case MASTER_LOG_FILE:
				{
				setState(7900);
				match(MASTER_LOG_FILE);
				setState(7901);
				match(EQ_);
				setState(7902);
				string_();
				setState(7903);
				match(COMMA_);
				setState(7904);
				match(MASTER_LOG_POS);
				setState(7905);
				match(EQ_);
				setState(7906);
				match(NUMBER_);
				}
				break;
			case RELAY_LOG_FILE:
				{
				setState(7908);
				match(RELAY_LOG_FILE);
				setState(7909);
				match(EQ_);
				setState(7910);
				string_();
				setState(7911);
				match(COMMA_);
				setState(7912);
				match(RELAY_LOG_POS);
				setState(7913);
				match(EQ_);
				setState(7914);
				match(NUMBER_);
				}
				break;
			case SQL_AFTER_MTS_GAPS:
				{
				setState(7916);
				match(SQL_AFTER_MTS_GAPS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class ConnectionOptionsContext extends ParserRuleContext {
		public TerminalNode USER() { return getToken(MySQLStatementParser.USER, 0); }
		public List EQ_() { return getTokens(MySQLStatementParser.EQ_); }
		public TerminalNode EQ_(int i) {
			return getToken(MySQLStatementParser.EQ_, i);
		}
		public List string_() {
			return getRuleContexts(String_Context.class);
		}
		public String_Context string_(int i) {
			return getRuleContext(String_Context.class,i);
		}
		public TerminalNode PASSWORD() { return getToken(MySQLStatementParser.PASSWORD, 0); }
		public TerminalNode DEFAULT_AUTH() { return getToken(MySQLStatementParser.DEFAULT_AUTH, 0); }
		public TerminalNode PLUGIN_DIR() { return getToken(MySQLStatementParser.PLUGIN_DIR, 0); }
		public ConnectionOptionsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_connectionOptions; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitConnectionOptions(this);
			else return visitor.visitChildren(this);
		}
	}

	public final ConnectionOptionsContext connectionOptions() throws RecognitionException {
		ConnectionOptionsContext _localctx = new ConnectionOptionsContext(_ctx, getState());
		enterRule(_localctx, 1146, RULE_connectionOptions);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7922);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==USER) {
				{
				setState(7919);
				match(USER);
				setState(7920);
				match(EQ_);
				setState(7921);
				string_();
				}
			}

			setState(7927);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PASSWORD) {
				{
				setState(7924);
				match(PASSWORD);
				setState(7925);
				match(EQ_);
				setState(7926);
				string_();
				}
			}

			setState(7932);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==DEFAULT_AUTH) {
				{
				setState(7929);
				match(DEFAULT_AUTH);
				setState(7930);
				match(EQ_);
				setState(7931);
				string_();
				}
			}

			setState(7937);
			_errHandler.sync(this);
			_la = _input.LA(1);
			if (_la==PLUGIN_DIR) {
				{
				setState(7934);
				match(PLUGIN_DIR);
				setState(7935);
				match(EQ_);
				setState(7936);
				string_();
				}
			}

			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MasterDefsContext extends ParserRuleContext {
		public List masterDef() {
			return getRuleContexts(MasterDefContext.class);
		}
		public MasterDefContext masterDef(int i) {
			return getRuleContext(MasterDefContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public MasterDefsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_masterDefs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitMasterDefs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MasterDefsContext masterDefs() throws RecognitionException {
		MasterDefsContext _localctx = new MasterDefsContext(_ctx, getState());
		enterRule(_localctx, 1148, RULE_masterDefs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(7939);
			masterDef();
			setState(7944);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(7940);
				match(COMMA_);
				setState(7941);
				masterDef();
				}
				}
				setState(7946);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class MasterDefContext extends ParserRuleContext {
		public TerminalNode MASTER_BIND() { return getToken(MySQLStatementParser.MASTER_BIND, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public TerminalNode MASTER_HOST() { return getToken(MySQLStatementParser.MASTER_HOST, 0); }
		public TerminalNode MASTER_USER() { return getToken(MySQLStatementParser.MASTER_USER, 0); }
		public TerminalNode MASTER_PASSWORD() { return getToken(MySQLStatementParser.MASTER_PASSWORD, 0); }
		public TerminalNode MASTER_PORT() { return getToken(MySQLStatementParser.MASTER_PORT, 0); }
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public TerminalNode PRIVILEGE_CHECKS_USER() { return getToken(MySQLStatementParser.PRIVILEGE_CHECKS_USER, 0); }
		public TerminalNode ACCOUNT() { return getToken(MySQLStatementParser.ACCOUNT, 0); }
		public TerminalNode NULL() { return getToken(MySQLStatementParser.NULL, 0); }
		public TerminalNode REQUIRE_ROW_FORMAT() { return getToken(MySQLStatementParser.REQUIRE_ROW_FORMAT, 0); }
		public TerminalNode MASTER_CONNECT_RETRY() { return getToken(MySQLStatementParser.MASTER_CONNECT_RETRY, 0); }
		public TerminalNode MASTER_RETRY_COUNT() { return getToken(MySQLStatementParser.MASTER_RETRY_COUNT, 0); }
		public TerminalNode MASTER_DELAY() { return getToken(MySQLStatementParser.MASTER_DELAY, 0); }
		public TerminalNode MASTER_HEARTBEAT_PERIOD() { return getToken(MySQLStatementParser.MASTER_HEARTBEAT_PERIOD, 0); }
		public TerminalNode MASTER_LOG_FILE() { return getToken(MySQLStatementParser.MASTER_LOG_FILE, 0); }
		public TerminalNode MASTER_LOG_POS() { return getToken(MySQLStatementParser.MASTER_LOG_POS, 0); }
		public TerminalNode MASTER_AUTO_POSITION() { return getToken(MySQLStatementParser.MASTER_AUTO_POSITION, 0); }
		public TerminalNode RELAY_LOG_FILE() { return getToken(MySQLStatementParser.RELAY_LOG_FILE, 0); }
		public TerminalNode RELAY_LOG_POS() { return getToken(MySQLStatementParser.RELAY_LOG_POS, 0); }
		public TerminalNode MASTER_COMPRESSION_ALGORITHM() { return getToken(MySQLStatementParser.MASTER_COMPRESSION_ALGORITHM, 0); }
		public TerminalNode MASTER_ZSTD_COMPRESSION_LEVEL() { return getToken(MySQLStatementParser.MASTER_ZSTD_COMPRESSION_LEVEL, 0); }
		public TerminalNode MASTER_SSL() { return getToken(MySQLStatementParser.MASTER_SSL, 0); }
		public TerminalNode MASTER_SSL_CA() { return getToken(MySQLStatementParser.MASTER_SSL_CA, 0); }
		public TerminalNode MASTER_SSL_CAPATH() { return getToken(MySQLStatementParser.MASTER_SSL_CAPATH, 0); }
		public TerminalNode MASTER_SSL_CERT() { return getToken(MySQLStatementParser.MASTER_SSL_CERT, 0); }
		public TerminalNode MASTER_SSL_CRL() { return getToken(MySQLStatementParser.MASTER_SSL_CRL, 0); }
		public TerminalNode MASTER_SSL_CRLPATH() { return getToken(MySQLStatementParser.MASTER_SSL_CRLPATH, 0); }
		public TerminalNode MASTER_SSL_KEY() { return getToken(MySQLStatementParser.MASTER_SSL_KEY, 0); }
		public TerminalNode MASTER_SSL_CIPHER() { return getToken(MySQLStatementParser.MASTER_SSL_CIPHER, 0); }
		public TerminalNode MASTER_SSL_VERIFY_SERVER_CERT() { return getToken(MySQLStatementParser.MASTER_SSL_VERIFY_SERVER_CERT, 0); }
		public TerminalNode MASTER_TLS_VERSION() { return getToken(MySQLStatementParser.MASTER_TLS_VERSION, 0); }
		public TerminalNode MASTER_TLS_CIPHERSUITES() { return getToken(MySQLStatementParser.MASTER_TLS_CIPHERSUITES, 0); }
		public TerminalNode MASTER_PUBLIC_KEY_PATH() { return getToken(MySQLStatementParser.MASTER_PUBLIC_KEY_PATH, 0); }
		public TerminalNode GET_MASTER_PUBLIC_KEY() { return getToken(MySQLStatementParser.GET_MASTER_PUBLIC_KEY, 0); }
		public TerminalNode IGNORE_SERVER_IDS() { return getToken(MySQLStatementParser.IGNORE_SERVER_IDS, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public IgnoreServerIdsContext ignoreServerIds() {
			return getRuleContext(IgnoreServerIdsContext.class,0);
		}
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public MasterDefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_masterDef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitMasterDef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final MasterDefContext masterDef() throws RecognitionException {
		MasterDefContext _localctx = new MasterDefContext(_ctx, getState());
		enterRule(_localctx, 1150, RULE_masterDef);
		int _la;
		try {
			setState(8046);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case MASTER_BIND:
				enterOuterAlt(_localctx, 1);
				{
				setState(7947);
				match(MASTER_BIND);
				setState(7948);
				match(EQ_);
				setState(7949);
				string_();
				}
				break;
			case MASTER_HOST:
				enterOuterAlt(_localctx, 2);
				{
				setState(7950);
				match(MASTER_HOST);
				setState(7951);
				match(EQ_);
				setState(7952);
				string_();
				}
				break;
			case MASTER_USER:
				enterOuterAlt(_localctx, 3);
				{
				setState(7953);
				match(MASTER_USER);
				setState(7954);
				match(EQ_);
				setState(7955);
				string_();
				}
				break;
			case MASTER_PASSWORD:
				enterOuterAlt(_localctx, 4);
				{
				setState(7956);
				match(MASTER_PASSWORD);
				setState(7957);
				match(EQ_);
				setState(7958);
				string_();
				}
				break;
			case MASTER_PORT:
				enterOuterAlt(_localctx, 5);
				{
				setState(7959);
				match(MASTER_PORT);
				setState(7960);
				match(EQ_);
				setState(7961);
				match(NUMBER_);
				}
				break;
			case PRIVILEGE_CHECKS_USER:
				enterOuterAlt(_localctx, 6);
				{
				setState(7962);
				match(PRIVILEGE_CHECKS_USER);
				setState(7963);
				match(EQ_);
				setState(7964);
				_la = _input.LA(1);
				if ( !(_la==ACCOUNT || _la==NULL) ) {
				_errHandler.recoverInline(this);
				}
				else {
					if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
					_errHandler.reportMatch(this);
					consume();
				}
				}
				break;
			case REQUIRE_ROW_FORMAT:
				enterOuterAlt(_localctx, 7);
				{
				setState(7965);
				match(REQUIRE_ROW_FORMAT);
				setState(7966);
				match(EQ_);
				setState(7967);
				match(NUMBER_);
				}
				break;
			case MASTER_CONNECT_RETRY:
				enterOuterAlt(_localctx, 8);
				{
				setState(7968);
				match(MASTER_CONNECT_RETRY);
				setState(7969);
				match(EQ_);
				setState(7970);
				match(NUMBER_);
				}
				break;
			case MASTER_RETRY_COUNT:
				enterOuterAlt(_localctx, 9);
				{
				setState(7971);
				match(MASTER_RETRY_COUNT);
				setState(7972);
				match(EQ_);
				setState(7973);
				match(NUMBER_);
				}
				break;
			case MASTER_DELAY:
				enterOuterAlt(_localctx, 10);
				{
				setState(7974);
				match(MASTER_DELAY);
				setState(7975);
				match(EQ_);
				setState(7976);
				match(NUMBER_);
				}
				break;
			case MASTER_HEARTBEAT_PERIOD:
				enterOuterAlt(_localctx, 11);
				{
				setState(7977);
				match(MASTER_HEARTBEAT_PERIOD);
				setState(7978);
				match(EQ_);
				setState(7979);
				match(NUMBER_);
				}
				break;
			case MASTER_LOG_FILE:
				enterOuterAlt(_localctx, 12);
				{
				setState(7980);
				match(MASTER_LOG_FILE);
				setState(7981);
				match(EQ_);
				setState(7982);
				string_();
				}
				break;
			case MASTER_LOG_POS:
				enterOuterAlt(_localctx, 13);
				{
				setState(7983);
				match(MASTER_LOG_POS);
				setState(7984);
				match(EQ_);
				setState(7985);
				match(NUMBER_);
				}
				break;
			case MASTER_AUTO_POSITION:
				enterOuterAlt(_localctx, 14);
				{
				setState(7986);
				match(MASTER_AUTO_POSITION);
				setState(7987);
				match(EQ_);
				setState(7988);
				match(NUMBER_);
				}
				break;
			case RELAY_LOG_FILE:
				enterOuterAlt(_localctx, 15);
				{
				setState(7989);
				match(RELAY_LOG_FILE);
				setState(7990);
				match(EQ_);
				setState(7991);
				string_();
				}
				break;
			case RELAY_LOG_POS:
				enterOuterAlt(_localctx, 16);
				{
				setState(7992);
				match(RELAY_LOG_POS);
				setState(7993);
				match(EQ_);
				setState(7994);
				match(NUMBER_);
				}
				break;
			case MASTER_COMPRESSION_ALGORITHM:
				enterOuterAlt(_localctx, 17);
				{
				setState(7995);
				match(MASTER_COMPRESSION_ALGORITHM);
				setState(7996);
				match(EQ_);
				setState(7997);
				string_();
				}
				break;
			case MASTER_ZSTD_COMPRESSION_LEVEL:
				enterOuterAlt(_localctx, 18);
				{
				setState(7998);
				match(MASTER_ZSTD_COMPRESSION_LEVEL);
				setState(7999);
				match(EQ_);
				setState(8000);
				match(NUMBER_);
				}
				break;
			case MASTER_SSL:
				enterOuterAlt(_localctx, 19);
				{
				setState(8001);
				match(MASTER_SSL);
				setState(8002);
				match(EQ_);
				setState(8003);
				match(NUMBER_);
				}
				break;
			case MASTER_SSL_CA:
				enterOuterAlt(_localctx, 20);
				{
				setState(8004);
				match(MASTER_SSL_CA);
				setState(8005);
				match(EQ_);
				setState(8006);
				string_();
				}
				break;
			case MASTER_SSL_CAPATH:
				enterOuterAlt(_localctx, 21);
				{
				setState(8007);
				match(MASTER_SSL_CAPATH);
				setState(8008);
				match(EQ_);
				setState(8009);
				string_();
				}
				break;
			case MASTER_SSL_CERT:
				enterOuterAlt(_localctx, 22);
				{
				setState(8010);
				match(MASTER_SSL_CERT);
				setState(8011);
				match(EQ_);
				setState(8012);
				string_();
				}
				break;
			case MASTER_SSL_CRL:
				enterOuterAlt(_localctx, 23);
				{
				setState(8013);
				match(MASTER_SSL_CRL);
				setState(8014);
				match(EQ_);
				setState(8015);
				string_();
				}
				break;
			case MASTER_SSL_CRLPATH:
				enterOuterAlt(_localctx, 24);
				{
				setState(8016);
				match(MASTER_SSL_CRLPATH);
				setState(8017);
				match(EQ_);
				setState(8018);
				string_();
				}
				break;
			case MASTER_SSL_KEY:
				enterOuterAlt(_localctx, 25);
				{
				setState(8019);
				match(MASTER_SSL_KEY);
				setState(8020);
				match(EQ_);
				setState(8021);
				string_();
				}
				break;
			case MASTER_SSL_CIPHER:
				enterOuterAlt(_localctx, 26);
				{
				setState(8022);
				match(MASTER_SSL_CIPHER);
				setState(8023);
				match(EQ_);
				setState(8024);
				string_();
				}
				break;
			case MASTER_SSL_VERIFY_SERVER_CERT:
				enterOuterAlt(_localctx, 27);
				{
				setState(8025);
				match(MASTER_SSL_VERIFY_SERVER_CERT);
				setState(8026);
				match(EQ_);
				setState(8027);
				match(NUMBER_);
				}
				break;
			case MASTER_TLS_VERSION:
				enterOuterAlt(_localctx, 28);
				{
				setState(8028);
				match(MASTER_TLS_VERSION);
				setState(8029);
				match(EQ_);
				setState(8030);
				string_();
				}
				break;
			case MASTER_TLS_CIPHERSUITES:
				enterOuterAlt(_localctx, 29);
				{
				setState(8031);
				match(MASTER_TLS_CIPHERSUITES);
				setState(8032);
				match(EQ_);
				setState(8033);
				string_();
				}
				break;
			case MASTER_PUBLIC_KEY_PATH:
				enterOuterAlt(_localctx, 30);
				{
				setState(8034);
				match(MASTER_PUBLIC_KEY_PATH);
				setState(8035);
				match(EQ_);
				setState(8036);
				string_();
				}
				break;
			case GET_MASTER_PUBLIC_KEY:
				enterOuterAlt(_localctx, 31);
				{
				setState(8037);
				match(GET_MASTER_PUBLIC_KEY);
				setState(8038);
				match(EQ_);
				setState(8039);
				match(NUMBER_);
				}
				break;
			case IGNORE_SERVER_IDS:
				enterOuterAlt(_localctx, 32);
				{
				setState(8040);
				match(IGNORE_SERVER_IDS);
				setState(8041);
				match(EQ_);
				setState(8042);
				match(LP_);
				setState(8043);
				ignoreServerIds();
				setState(8044);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IgnoreServerIdsContext extends ParserRuleContext {
		public List ignoreServerId() {
			return getRuleContexts(IgnoreServerIdContext.class);
		}
		public IgnoreServerIdContext ignoreServerId(int i) {
			return getRuleContext(IgnoreServerIdContext.class,i);
		}
		public TerminalNode COMMA_() { return getToken(MySQLStatementParser.COMMA_, 0); }
		public IgnoreServerIdsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ignoreServerIds; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIgnoreServerIds(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IgnoreServerIdsContext ignoreServerIds() throws RecognitionException {
		IgnoreServerIdsContext _localctx = new IgnoreServerIdsContext(_ctx, getState());
		enterRule(_localctx, 1152, RULE_ignoreServerIds);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8048);
			ignoreServerId();
			{
			setState(8049);
			match(COMMA_);
			setState(8050);
			ignoreServerId();
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class IgnoreServerIdContext extends ParserRuleContext {
		public TerminalNode NUMBER_() { return getToken(MySQLStatementParser.NUMBER_, 0); }
		public IgnoreServerIdContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_ignoreServerId; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitIgnoreServerId(this);
			else return visitor.visitChildren(this);
		}
	}

	public final IgnoreServerIdContext ignoreServerId() throws RecognitionException {
		IgnoreServerIdContext _localctx = new IgnoreServerIdContext(_ctx, getState());
		enterRule(_localctx, 1154, RULE_ignoreServerId);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8052);
			match(NUMBER_);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FilterDefsContext extends ParserRuleContext {
		public List filterDef() {
			return getRuleContexts(FilterDefContext.class);
		}
		public FilterDefContext filterDef(int i) {
			return getRuleContext(FilterDefContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public FilterDefsContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_filterDefs; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFilterDefs(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FilterDefsContext filterDefs() throws RecognitionException {
		FilterDefsContext _localctx = new FilterDefsContext(_ctx, getState());
		enterRule(_localctx, 1156, RULE_filterDefs);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8054);
			filterDef();
			setState(8059);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8055);
				match(COMMA_);
				setState(8056);
				filterDef();
				}
				}
				setState(8061);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class FilterDefContext extends ParserRuleContext {
		public TerminalNode REPLICATE_DO_DB() { return getToken(MySQLStatementParser.REPLICATE_DO_DB, 0); }
		public TerminalNode EQ_() { return getToken(MySQLStatementParser.EQ_, 0); }
		public TerminalNode LP_() { return getToken(MySQLStatementParser.LP_, 0); }
		public TerminalNode RP_() { return getToken(MySQLStatementParser.RP_, 0); }
		public SchemaNamesContext schemaNames() {
			return getRuleContext(SchemaNamesContext.class,0);
		}
		public TerminalNode REPLICATE_IGNORE_DB() { return getToken(MySQLStatementParser.REPLICATE_IGNORE_DB, 0); }
		public TerminalNode REPLICATE_DO_TABLE() { return getToken(MySQLStatementParser.REPLICATE_DO_TABLE, 0); }
		public TableListContext tableList() {
			return getRuleContext(TableListContext.class,0);
		}
		public TerminalNode REPLICATE_IGNORE_TABLE() { return getToken(MySQLStatementParser.REPLICATE_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATE_WILD_DO_TABLE() { return getToken(MySQLStatementParser.REPLICATE_WILD_DO_TABLE, 0); }
		public WildTablesContext wildTables() {
			return getRuleContext(WildTablesContext.class,0);
		}
		public TerminalNode REPLICATE_WILD_IGNORE_TABLE() { return getToken(MySQLStatementParser.REPLICATE_WILD_IGNORE_TABLE, 0); }
		public TerminalNode REPLICATE_REWRITE_DB() { return getToken(MySQLStatementParser.REPLICATE_REWRITE_DB, 0); }
		public SchemaPairsContext schemaPairs() {
			return getRuleContext(SchemaPairsContext.class,0);
		}
		public FilterDefContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_filterDef; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitFilterDef(this);
			else return visitor.visitChildren(this);
		}
	}

	public final FilterDefContext filterDef() throws RecognitionException {
		FilterDefContext _localctx = new FilterDefContext(_ctx, getState());
		enterRule(_localctx, 1158, RULE_filterDef);
		int _la;
		try {
			setState(8111);
			_errHandler.sync(this);
			switch (_input.LA(1)) {
			case REPLICATE_DO_DB:
				enterOuterAlt(_localctx, 1);
				{
				setState(8062);
				match(REPLICATE_DO_DB);
				setState(8063);
				match(EQ_);
				setState(8064);
				match(LP_);
				setState(8066);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(8065);
					schemaNames();
					}
				}

				setState(8068);
				match(RP_);
				}
				break;
			case REPLICATE_IGNORE_DB:
				enterOuterAlt(_localctx, 2);
				{
				setState(8069);
				match(REPLICATE_IGNORE_DB);
				setState(8070);
				match(EQ_);
				setState(8071);
				match(LP_);
				setState(8073);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(8072);
					schemaNames();
					}
				}

				setState(8075);
				match(RP_);
				}
				break;
			case REPLICATE_DO_TABLE:
				enterOuterAlt(_localctx, 3);
				{
				setState(8076);
				match(REPLICATE_DO_TABLE);
				setState(8077);
				match(EQ_);
				setState(8078);
				match(LP_);
				setState(8080);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(8079);
					tableList();
					}
				}

				setState(8082);
				match(RP_);
				}
				break;
			case REPLICATE_IGNORE_TABLE:
				enterOuterAlt(_localctx, 4);
				{
				setState(8083);
				match(REPLICATE_IGNORE_TABLE);
				setState(8084);
				match(EQ_);
				setState(8085);
				match(LP_);
				setState(8087);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (((((_la - 49)) & ~0x3f) == 0 && ((1L << (_la - 49)) & ((1L << (MAX - 49)) | (1L << (MIN - 49)) | (1L << (SUM - 49)) | (1L << (COUNT - 49)) | (1L << (GROUP_CONCAT - 49)) | (1L << (CAST - 49)) | (1L << (POSITION - 49)) | (1L << (SUBSTRING - 49)) | (1L << (SUBSTR - 49)) | (1L << (EXTRACT - 49)) | (1L << (TRIM - 49)) | (1L << (LAST_DAY - 49)) | (1L << (TRADITIONAL - 49)) | (1L << (TREE - 49)) | (1L << (MYSQL_MAIN - 49)) | (1L << (MYSQL_ADMIN - 49)) | (1L << (INSTANT - 49)) | (1L << (INPLACE - 49)) | (1L << (COPY - 49)) | (1L << (UL_BINARY - 49)) | (1L << (AUTOCOMMIT - 49)) | (1L << (INNODB - 49)) | (1L << (REDO_LOG - 49)) | (1L << (ACCOUNT - 49)) | (1L << (ACTION - 49)) | (1L << (ACTIVE - 49)) | (1L << (ADMIN - 49)) | (1L << (AFTER - 49)) | (1L << (AGAINST - 49)) | (1L << (AGGREGATE - 49)) | (1L << (ALGORITHM - 49)) | (1L << (ALWAYS - 49)) | (1L << (ANY - 49)) | (1L << (ARRAY - 49)) | (1L << (ASCII - 49)) | (1L << (AT - 49)) | (1L << (ATTRIBUTE - 49)) | (1L << (AUTOEXTEND_SIZE - 49)) | (1L << (AUTO_INCREMENT - 49)) | (1L << (AVG - 49)) | (1L << (BIT_XOR - 49)) | (1L << (AVG_ROW_LENGTH - 49)) | (1L << (BACKUP - 49)) | (1L << (BEGIN - 49)) | (1L << (BINLOG - 49)) | (1L << (BIT - 49)) | (1L << (BLOCK - 49)) | (1L << (BOOL - 49)))) != 0) || ((((_la - 113)) & ~0x3f) == 0 && ((1L << (_la - 113)) & ((1L << (BOOLEAN - 113)) | (1L << (BTREE - 113)) | (1L << (BUCKETS - 113)) | (1L << (BYTE - 113)) | (1L << (CACHE - 113)) | (1L << (CASCADED - 113)) | (1L << (CATALOG_NAME - 113)) | (1L << (CHAIN - 113)) | (1L << (CHANGED - 113)) | (1L << (CHANNEL - 113)) | (1L << (CHARSET - 113)) | (1L << (CHECKSUM - 113)) | (1L << (CIPHER - 113)) | (1L << (CLASS_ORIGIN - 113)) | (1L << (CLIENT - 113)) | (1L << (CLONE - 113)) | (1L << (CLOSE - 113)) | (1L << (COALESCE - 113)) | (1L << (CODE - 113)) | (1L << (COLLATION - 113)) | (1L << (COLUMNS - 113)) | (1L << (COLUMN_FORMAT - 113)) | (1L << (COLUMN_NAME - 113)) | (1L << (COMMENT - 113)) | (1L << (COMMIT - 113)) | (1L << (COMMITTED - 113)) | (1L << (COMPACT - 113)) | (1L << (COMPLETION - 113)) | (1L << (COMPONENT - 113)) | (1L << (COMPRESSED - 113)) | (1L << (COMPRESSION - 113)) | (1L << (CONCURRENT - 113)) | (1L << (CONNECTION - 113)) | (1L << (CONSISTENT - 113)) | (1L << (CONSTRAINT_CATALOG - 113)) | (1L << (CONSTRAINT_NAME - 113)) | (1L << (CONSTRAINT_SCHEMA - 113)) | (1L << (CONTAINS - 113)) | (1L << (CONTEXT - 113)) | (1L << (CPU - 113)) | (1L << (CREATE - 113)) | (1L << (CURRENT - 113)))) != 0) || ((((_la - 178)) & ~0x3f) == 0 && ((1L << (_la - 178)) & ((1L << (CURSOR_NAME - 178)) | (1L << (DATA - 178)) | (1L << (DATAFILE - 178)) | (1L << (DATE - 178)) | (1L << (DATETIME - 178)) | (1L << (DAY - 178)) | (1L << (DEALLOCATE - 178)) | (1L << (DEFAULT_AUTH - 178)) | (1L << (DEFINER - 178)) | (1L << (DEFINITION - 178)) | (1L << (DELAY_KEY_WRITE - 178)) | (1L << (DESCRIPTION - 178)) | (1L << (DIAGNOSTICS - 178)) | (1L << (DIRECTORY - 178)) | (1L << (DISABLE - 178)) | (1L << (DISCARD - 178)) | (1L << (DISK - 178)) | (1L << (DO - 178)) | (1L << (DUMPFILE - 178)) | (1L << (DUPLICATE - 178)) | (1L << (DYNAMIC - 178)) | (1L << (ENABLE - 178)) | (1L << (ENCRYPTION - 178)) | (1L << (END - 178)) | (1L << (ENDS - 178)) | (1L << (ENFORCED - 178)) | (1L << (ENGINE - 178)) | (1L << (ENGINES - 178)) | (1L << (ENGINE_ATTRIBUTE - 178)) | (1L << (ENUM - 178)) | (1L << (ERROR - 178)) | (1L << (ERRORS - 178)) | (1L << (ESCAPE - 178)) | (1L << (EVENT - 178)) | (1L << (EVENTS - 178)) | (1L << (EVERY - 178)))) != 0) || ((((_la - 243)) & ~0x3f) == 0 && ((1L << (_la - 243)) & ((1L << (EXCHANGE - 243)) | (1L << (EXCLUDE - 243)) | (1L << (EXECUTE - 243)) | (1L << (EXPANSION - 243)) | (1L << (EXPIRE - 243)) | (1L << (EXPORT - 243)) | (1L << (EXTENDED - 243)) | (1L << (EXTENT_SIZE - 243)) | (1L << (FAILED_LOGIN_ATTEMPTS - 243)) | (1L << (FAST - 243)) | (1L << (FAULTS - 243)) | (1L << (FILE - 243)) | (1L << (FILE_BLOCK_SIZE - 243)) | (1L << (FILTER - 243)) | (1L << (FIRST - 243)) | (1L << (FIXED - 243)) | (1L << (FLUSH - 243)) | (1L << (FOLLOWING - 243)) | (1L << (FOLLOWS - 243)) | (1L << (FORMAT - 243)) | (1L << (FOUND - 243)) | (1L << (FULL - 243)) | (1L << (GENERAL - 243)) | (1L << (GEOMETRY - 243)) | (1L << (GEOMETRYCOLLECTION - 243)) | (1L << (GET_FORMAT - 243)) | (1L << (GET_MASTER_PUBLIC_KEY - 243)) | (1L << (GLOBAL - 243)) | (1L << (GRANTS - 243)) | (1L << (GROUP_REPLICATION - 243)) | (1L << (HANDLER - 243)) | (1L << (HASH - 243)) | (1L << (HELP - 243)) | (1L << (HISTOGRAM - 243)) | (1L << (HISTORY - 243)) | (1L << (HOST - 243)) | (1L << (HOSTS - 243)) | (1L << (HOUR - 243)))) != 0) || ((((_la - 307)) & ~0x3f) == 0 && ((1L << (_la - 307)) & ((1L << (IDENTIFIED - 307)) | (1L << (IGNORE_SERVER_IDS - 307)) | (1L << (IMPORT - 307)) | (1L << (INACTIVE - 307)) | (1L << (INDEXES - 307)) | (1L << (INITIAL_SIZE - 307)) | (1L << (INSERT_METHOD - 307)) | (1L << (INSTALL - 307)) | (1L << (INSTANCE - 307)) | (1L << (INVISIBLE - 307)) | (1L << (INVOKER - 307)) | (1L << (IO - 307)) | (1L << (IPC - 307)) | (1L << (ISOLATION - 307)) | (1L << (ISSUER - 307)) | (1L << (JSON - 307)) | (1L << (JSON_VALUE - 307)) | (1L << (KEY - 307)) | (1L << (KEY_BLOCK_SIZE - 307)) | (1L << (LANGUAGE - 307)) | (1L << (LAST - 307)) | (1L << (LAST_VALUE - 307)) | (1L << (LEAVES - 307)) | (1L << (LESS - 307)) | (1L << (LEVEL - 307)) | (1L << (LINESTRING - 307)) | (1L << (LIST - 307)))) != 0) || ((((_la - 371)) & ~0x3f) == 0 && ((1L << (_la - 371)) & ((1L << (LOCAL - 371)) | (1L << (LOCKED - 371)) | (1L << (LOCKS - 371)) | (1L << (LOGFILE - 371)) | (1L << (LOGS - 371)) | (1L << (MASTER - 371)) | (1L << (MASTER_AUTO_POSITION - 371)) | (1L << (MASTER_COMPRESSION_ALGORITHM - 371)) | (1L << (MASTER_CONNECT_RETRY - 371)) | (1L << (MASTER_DELAY - 371)) | (1L << (MASTER_HEARTBEAT_PERIOD - 371)) | (1L << (MASTER_HOST - 371)) | (1L << (MASTER_LOG_FILE - 371)) | (1L << (MASTER_LOG_POS - 371)) | (1L << (MASTER_PASSWORD - 371)) | (1L << (MASTER_PORT - 371)) | (1L << (MASTER_PUBLIC_KEY_PATH - 371)) | (1L << (MASTER_RETRY_COUNT - 371)) | (1L << (MASTER_SERVER_ID - 371)) | (1L << (MASTER_SSL - 371)) | (1L << (MASTER_SSL_CA - 371)) | (1L << (MASTER_SSL_CAPATH - 371)) | (1L << (MASTER_SSL_CERT - 371)) | (1L << (MASTER_SSL_CIPHER - 371)) | (1L << (MASTER_SSL_CRL - 371)) | (1L << (MASTER_SSL_CRLPATH - 371)) | (1L << (MASTER_SSL_KEY - 371)) | (1L << (MASTER_TLS_CIPHERSUITES - 371)) | (1L << (MASTER_TLS_VERSION - 371)) | (1L << (MASTER_USER - 371)) | (1L << (MASTER_ZSTD_COMPRESSION_LEVEL - 371)) | (1L << (MAXVALUE - 371)) | (1L << (MAX_CONNECTIONS_PER_HOUR - 371)) | (1L << (MAX_QUERIES_PER_HOUR - 371)) | (1L << (MAX_ROWS - 371)) | (1L << (MAX_SIZE - 371)) | (1L << (MAX_UPDATES_PER_HOUR - 371)) | (1L << (MAX_USER_CONNECTIONS - 371)) | (1L << (MEDIUM - 371)) | (1L << (MEMBER - 371)) | (1L << (MEMORY - 371)) | (1L << (MERGE - 371)) | (1L << (MESSAGE_TEXT - 371)) | (1L << (MICROSECOND - 371)) | (1L << (MIGRATE - 371)) | (1L << (MINUTE - 371)) | (1L << (MIN_ROWS - 371)))) != 0) || ((((_la - 436)) & ~0x3f) == 0 && ((1L << (_la - 436)) & ((1L << (MODE - 436)) | (1L << (MODIFY - 436)) | (1L << (MONTH - 436)) | (1L << (MULTILINESTRING - 436)) | (1L << (MULTIPOINT - 436)) | (1L << (MULTIPOLYGON - 436)) | (1L << (MUTEX - 436)) | (1L << (MYSQL_ERRNO - 436)) | (1L << (NAME - 436)) | (1L << (NAMES - 436)) | (1L << (NATIONAL - 436)) | (1L << (NCHAR - 436)) | (1L << (NDBCLUSTER - 436)) | (1L << (NESTED - 436)) | (1L << (NETWORK_NAMESPACE - 436)) | (1L << (NEVER - 436)) | (1L << (NEW - 436)) | (1L << (NEXT - 436)) | (1L << (NO - 436)) | (1L << (NODEGROUP - 436)) | (1L << (NONE - 436)) | (1L << (NOWAIT - 436)) | (1L << (NO_WAIT - 436)) | (1L << (NULLS - 436)) | (1L << (NUMBER - 436)) | (1L << (NVARCHAR - 436)) | (1L << (OFF - 436)) | (1L << (OFFSET - 436)) | (1L << (OJ - 436)) | (1L << (OLD - 436)) | (1L << (ONE - 436)) | (1L << (ONLY - 436)) | (1L << (OPEN - 436)) | (1L << (OPTIONAL - 436)) | (1L << (OPTIONS - 436)) | (1L << (ORDINALITY - 436)) | (1L << (ORGANIZATION - 436)) | (1L << (OTHERS - 436)) | (1L << (OWNER - 436)) | (1L << (PACK_KEYS - 436)) | (1L << (PAGE - 436)) | (1L << (PARSER - 436)) | (1L << (PARTIAL - 436)))) != 0) || ((((_la - 500)) & ~0x3f) == 0 && ((1L << (_la - 500)) & ((1L << (PARTITIONING - 500)) | (1L << (PARTITIONS - 500)) | (1L << (PASSWORD - 500)) | (1L << (PASSWORD_LOCK_TIME - 500)) | (1L << (PATH - 500)) | (1L << (PERSIST - 500)) | (1L << (PERSIST_ONLY - 500)) | (1L << (PHASE - 500)) | (1L << (PLUGIN - 500)) | (1L << (PLUGINS - 500)) | (1L << (PLUGIN_DIR - 500)) | (1L << (POINT - 500)) | (1L << (POLYGON - 500)) | (1L << (PORT - 500)) | (1L << (PRECEDES - 500)) | (1L << (PRECEDING - 500)) | (1L << (PREPARE - 500)) | (1L << (PRESERVE - 500)) | (1L << (PREV - 500)) | (1L << (PRIMARY - 500)) | (1L << (PRIVILEGES - 500)) | (1L << (PRIVILEGE_CHECKS_USER - 500)) | (1L << (PROCESS - 500)) | (1L << (PROCESSLIST - 500)) | (1L << (PROFILE - 500)) | (1L << (PROFILES - 500)) | (1L << (PROXY - 500)) | (1L << (QUARTER - 500)) | (1L << (QUERY - 500)) | (1L << (QUICK - 500)) | (1L << (RANDOM - 500)) | (1L << (READ_ONLY - 500)) | (1L << (REBUILD - 500)) | (1L << (RECOVER - 500)) | (1L << (REDO_BUFFER_SIZE - 500)) | (1L << (REDUNDANT - 500)) | (1L << (REFERENCE - 500)) | (1L << (RELAY - 500)) | (1L << (RELAYLOG - 500)) | (1L << (RELAY_LOG_FILE - 500)) | (1L << (RELAY_LOG_POS - 500)) | (1L << (RELAY_THREAD - 500)) | (1L << (RELOAD - 500)) | (1L << (REMOVE - 500)) | (1L << (REORGANIZE - 500)) | (1L << (REPAIR - 500)) | (1L << (REPEATABLE - 500)))) != 0) || ((((_la - 566)) & ~0x3f) == 0 && ((1L << (_la - 566)) & ((1L << (REPLICATE_DO_DB - 566)) | (1L << (REPLICATE_DO_TABLE - 566)) | (1L << (REPLICATE_IGNORE_DB - 566)) | (1L << (REPLICATE_IGNORE_TABLE - 566)) | (1L << (REPLICATE_REWRITE_DB - 566)) | (1L << (REPLICATE_WILD_DO_TABLE - 566)) | (1L << (REPLICATE_WILD_IGNORE_TABLE - 566)) | (1L << (REPLICATION - 566)) | (1L << (REQUIRE_ROW_FORMAT - 566)) | (1L << (RESET - 566)) | (1L << (RESOURCE - 566)) | (1L << (RESPECT - 566)) | (1L << (RESTART - 566)) | (1L << (RESTORE - 566)) | (1L << (RESUME - 566)) | (1L << (RETAIN - 566)) | (1L << (RETURNED_SQLSTATE - 566)) | (1L << (RETURNING - 566)) | (1L << (RETURNS - 566)) | (1L << (REUSE - 566)) | (1L << (REVERSE - 566)) | (1L << (ROLE - 566)) | (1L << (ROLLBACK - 566)) | (1L << (ROLLUP - 566)) | (1L << (ROTATE - 566)) | (1L << (ROUTINE - 566)) | (1L << (ROW_COUNT - 566)) | (1L << (ROW_FORMAT - 566)) | (1L << (RTREE - 566)) | (1L << (SAVEPOINT - 566)) | (1L << (SCHEDULE - 566)) | (1L << (SCHEMA_NAME - 566)) | (1L << (SECOND - 566)) | (1L << (SECONDARY - 566)) | (1L << (SECONDARY_ENGINE - 566)) | (1L << (SECONDARY_ENGINE_ATTRIBUTE - 566)) | (1L << (SECONDARY_LOAD - 566)) | (1L << (SECONDARY_UNLOAD - 566)) | (1L << (SECURITY - 566)) | (1L << (SERIAL - 566)) | (1L << (SERIALIZABLE - 566)) | (1L << (SERVER - 566)) | (1L << (SESSION - 566)) | (1L << (SHARE - 566)) | (1L << (SHUTDOWN - 566)))) != 0) || ((((_la - 630)) & ~0x3f) == 0 && ((1L << (_la - 630)) & ((1L << (SIGNED - 630)) | (1L << (SIMPLE - 630)) | (1L << (SLAVE - 630)) | (1L << (SLOW - 630)) | (1L << (SNAPSHOT - 630)) | (1L << (SOCKET - 630)) | (1L << (SONAME - 630)) | (1L << (SOUNDS - 630)) | (1L << (SOURCE - 630)) | (1L << (SQL_AFTER_GTIDS - 630)) | (1L << (SQL_AFTER_MTS_GAPS - 630)) | (1L << (SQL_BEFORE_GTIDS - 630)) | (1L << (SQL_BUFFER_RESULT - 630)) | (1L << (SQL_NO_CACHE - 630)) | (1L << (SQL_THREAD - 630)) | (1L << (SRID - 630)) | (1L << (STACKED - 630)) | (1L << (START - 630)) | (1L << (STARTS - 630)) | (1L << (STATS_AUTO_RECALC - 630)) | (1L << (STATS_PERSISTENT - 630)) | (1L << (STATS_SAMPLE_PAGES - 630)) | (1L << (STATUS - 630)) | (1L << (STOP - 630)) | (1L << (STORAGE - 630)) | (1L << (STREAM - 630)) | (1L << (STRING - 630)) | (1L << (SUBCLASS_ORIGIN - 630)) | (1L << (SUBJECT - 630)) | (1L << (SUBPARTITION - 630)) | (1L << (SUBPARTITIONS - 630)) | (1L << (SUPER - 630)) | (1L << (SUSPEND - 630)) | (1L << (SWAPS - 630)) | (1L << (SWITCHES - 630)) | (1L << (TABLES - 630)) | (1L << (TABLESPACE - 630)) | (1L << (TABLE_CHECKSUM - 630)) | (1L << (TABLE_NAME - 630)) | (1L << (TEMPORARY - 630)) | (1L << (TEMPTABLE - 630)) | (1L << (TEXT - 630)) | (1L << (THAN - 630)) | (1L << (THREAD_PRIORITY - 630)) | (1L << (TIES - 630)))) != 0) || ((((_la - 694)) & ~0x3f) == 0 && ((1L << (_la - 694)) & ((1L << (TIME - 694)) | (1L << (TIMESTAMP - 694)) | (1L << (TIMESTAMP_ADD - 694)) | (1L << (TIMESTAMP_DIFF - 694)) | (1L << (TLS - 694)) | (1L << (TRANSACTION - 694)) | (1L << (TRIGGERS - 694)) | (1L << (TRUNCATE - 694)) | (1L << (TYPE - 694)) | (1L << (TYPES - 694)) | (1L << (UNBOUNDED - 694)) | (1L << (UNCOMMITTED - 694)) | (1L << (UNDEFINED - 694)) | (1L << (UNDOFILE - 694)) | (1L << (UNDO_BUFFER_SIZE - 694)) | (1L << (UNICODE - 694)) | (1L << (UNINSTALL - 694)) | (1L << (UNKNOWN - 694)) | (1L << (UNTIL - 694)) | (1L << (UPGRADE - 694)) | (1L << (USER - 694)) | (1L << (USER_RESOURCES - 694)) | (1L << (USE_FRM - 694)) | (1L << (UTC_DATE - 694)) | (1L << (UTC_TIME - 694)) | (1L << (UTC_TIMESTAMP - 694)) | (1L << (VALIDATION - 694)) | (1L << (VALUE - 694)) | (1L << (VARIABLES - 694)) | (1L << (VCPU - 694)) | (1L << (VIEW - 694)) | (1L << (VISIBLE - 694)) | (1L << (WAIT - 694)) | (1L << (WARNINGS - 694)) | (1L << (WEEK - 694)) | (1L << (WEIGHT_STRING - 694)) | (1L << (WITHOUT - 694)))) != 0) || ((((_la - 758)) & ~0x3f) == 0 && ((1L << (_la - 758)) & ((1L << (WORK - 758)) | (1L << (WRAPPER - 758)) | (1L << (X509 - 758)) | (1L << (XA - 758)) | (1L << (XID - 758)) | (1L << (XML - 758)) | (1L << (YEAR - 758)) | (1L << (DOUBLE_QUOTED_TEXT - 758)) | (1L << (UNDERSCORE_CHARSET - 758)) | (1L << (IDENTIFIER_ - 758)))) != 0)) {
					{
					setState(8086);
					tableList();
					}
				}

				setState(8089);
				match(RP_);
				}
				break;
			case REPLICATE_WILD_DO_TABLE:
				enterOuterAlt(_localctx, 5);
				{
				setState(8090);
				match(REPLICATE_WILD_DO_TABLE);
				setState(8091);
				match(EQ_);
				setState(8092);
				match(LP_);
				setState(8094);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SINGLE_QUOTED_TEXT || _la==DOUBLE_QUOTED_TEXT) {
					{
					setState(8093);
					wildTables();
					}
				}

				setState(8096);
				match(RP_);
				}
				break;
			case REPLICATE_WILD_IGNORE_TABLE:
				enterOuterAlt(_localctx, 6);
				{
				setState(8097);
				match(REPLICATE_WILD_IGNORE_TABLE);
				setState(8098);
				match(EQ_);
				setState(8099);
				match(LP_);
				setState(8101);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==SINGLE_QUOTED_TEXT || _la==DOUBLE_QUOTED_TEXT) {
					{
					setState(8100);
					wildTables();
					}
				}

				setState(8103);
				match(RP_);
				}
				break;
			case REPLICATE_REWRITE_DB:
				enterOuterAlt(_localctx, 7);
				{
				setState(8104);
				match(REPLICATE_REWRITE_DB);
				setState(8105);
				match(EQ_);
				setState(8106);
				match(LP_);
				setState(8108);
				_errHandler.sync(this);
				_la = _input.LA(1);
				if (_la==LP_) {
					{
					setState(8107);
					schemaPairs();
					}
				}

				setState(8110);
				match(RP_);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WildTablesContext extends ParserRuleContext {
		public List wildTable() {
			return getRuleContexts(WildTableContext.class);
		}
		public WildTableContext wildTable(int i) {
			return getRuleContext(WildTableContext.class,i);
		}
		public List COMMA_() { return getTokens(MySQLStatementParser.COMMA_); }
		public TerminalNode COMMA_(int i) {
			return getToken(MySQLStatementParser.COMMA_, i);
		}
		public WildTablesContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_wildTables; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWildTables(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WildTablesContext wildTables() throws RecognitionException {
		WildTablesContext _localctx = new WildTablesContext(_ctx, getState());
		enterRule(_localctx, 1160, RULE_wildTables);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8113);
			wildTable();
			setState(8118);
			_errHandler.sync(this);
			_la = _input.LA(1);
			while (_la==COMMA_) {
				{
				{
				setState(8114);
				match(COMMA_);
				setState(8115);
				wildTable();
				}
				}
				setState(8120);
				_errHandler.sync(this);
				_la = _input.LA(1);
			}
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public static class WildTableContext extends ParserRuleContext {
		public String_Context string_() {
			return getRuleContext(String_Context.class,0);
		}
		public WildTableContext(ParserRuleContext parent, int invokingState) {
			super(parent, invokingState);
		}
		@Override public int getRuleIndex() { return RULE_wildTable; }
		@Override
		public  T accept(ParseTreeVisitor visitor) {
			if ( visitor instanceof MySQLStatementVisitor ) return ((MySQLStatementVisitor)visitor).visitWildTable(this);
			else return visitor.visitChildren(this);
		}
	}

	public final WildTableContext wildTable() throws RecognitionException {
		WildTableContext _localctx = new WildTableContext(_ctx, getState());
		enterRule(_localctx, 1162, RULE_wildTable);
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(8121);
			string_();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}

	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
		switch (ruleIndex) {
		case 176:
			return queryExpressionBody_sempred((QueryExpressionBodyContext)_localctx, predIndex);
		case 312:
			return expr_sempred((ExprContext)_localctx, predIndex);
		case 316:
			return booleanPrimary_sempred((BooleanPrimaryContext)_localctx, predIndex);
		case 320:
			return bitExpr_sempred((BitExprContext)_localctx, predIndex);
		case 321:
			return simpleExpr_sempred((SimpleExprContext)_localctx, predIndex);
		}
		return true;
	}
	private boolean queryExpressionBody_sempred(QueryExpressionBodyContext _localctx, int predIndex) {
		switch (predIndex) {
		case 0:
			return precpred(_ctx, 1);
		}
		return true;
	}
	private boolean expr_sempred(ExprContext _localctx, int predIndex) {
		switch (predIndex) {
		case 1:
			return precpred(_ctx, 4);
		case 2:
			return precpred(_ctx, 3);
		case 3:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean booleanPrimary_sempred(BooleanPrimaryContext _localctx, int predIndex) {
		switch (predIndex) {
		case 4:
			return precpred(_ctx, 6);
		case 5:
			return precpred(_ctx, 5);
		case 6:
			return precpred(_ctx, 4);
		case 7:
			return precpred(_ctx, 3);
		case 8:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean bitExpr_sempred(BitExprContext _localctx, int predIndex) {
		switch (predIndex) {
		case 9:
			return precpred(_ctx, 15);
		case 10:
			return precpred(_ctx, 14);
		case 11:
			return precpred(_ctx, 13);
		case 12:
			return precpred(_ctx, 12);
		case 13:
			return precpred(_ctx, 11);
		case 14:
			return precpred(_ctx, 10);
		case 15:
			return precpred(_ctx, 9);
		case 16:
			return precpred(_ctx, 8);
		case 17:
			return precpred(_ctx, 7);
		case 18:
			return precpred(_ctx, 6);
		case 19:
			return precpred(_ctx, 5);
		case 20:
			return precpred(_ctx, 4);
		case 21:
			return precpred(_ctx, 3);
		case 22:
			return precpred(_ctx, 2);
		}
		return true;
	}
	private boolean simpleExpr_sempred(SimpleExprContext _localctx, int predIndex) {
		switch (predIndex) {
		case 23:
			return precpred(_ctx, 10);
		case 24:
			return precpred(_ctx, 12);
		}
		return true;
	}

	private static final String _serializedATNSegment0 =
		"\u0004\u0001\u032a\u1fbc\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+
		"\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+
		"\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+
		"\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+
		"\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+
		"\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007"+
		"\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007"+
		"\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007"+
		"\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007"+
		"\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007"+
		"\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007"+
		"\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007"+
		"\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007"+
		",\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u0007"+
		"1\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u0007"+
		"6\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007"+
		";\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007"+
		"@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007"+
		"E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007"+
		"J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007"+
		"O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007"+
		"T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007"+
		"Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007"+
		"^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007"+
		"c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007"+
		"h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007"+
		"m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007"+
		"r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007"+
		"w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007"+
		"|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007"+
		"\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007"+
		"\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007"+
		"\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007"+
		"\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007"+
		"\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007"+
		"\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007"+
		"\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007"+
		"\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007"+
		"\u0098\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007"+
		"\u009b\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007"+
		"\u009e\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007"+
		"\u00a1\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007"+
		"\u00a4\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007"+
		"\u00a7\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007"+
		"\u00aa\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007"+
		"\u00ad\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007"+
		"\u00b0\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007"+
		"\u00b3\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007"+
		"\u00b6\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007"+
		"\u00b9\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007"+
		"\u00bc\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007"+
		"\u00bf\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007"+
		"\u00c2\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007"+
		"\u00c5\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007"+
		"\u00c8\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007"+
		"\u00cb\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007"+
		"\u00ce\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007"+
		"\u00d1\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007"+
		"\u00d4\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007"+
		"\u00d7\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007"+
		"\u00da\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007"+
		"\u00dd\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007"+
		"\u00e0\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007"+
		"\u00e3\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007"+
		"\u00e6\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007"+
		"\u00e9\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007"+
		"\u00ec\u0002\u00ed\u0007\u00ed\u0002\u00ee\u0007\u00ee\u0002\u00ef\u0007"+
		"\u00ef\u0002\u00f0\u0007\u00f0\u0002\u00f1\u0007\u00f1\u0002\u00f2\u0007"+
		"\u00f2\u0002\u00f3\u0007\u00f3\u0002\u00f4\u0007\u00f4\u0002\u00f5\u0007"+
		"\u00f5\u0002\u00f6\u0007\u00f6\u0002\u00f7\u0007\u00f7\u0002\u00f8\u0007"+
		"\u00f8\u0002\u00f9\u0007\u00f9\u0002\u00fa\u0007\u00fa\u0002\u00fb\u0007"+
		"\u00fb\u0002\u00fc\u0007\u00fc\u0002\u00fd\u0007\u00fd\u0002\u00fe\u0007"+
		"\u00fe\u0002\u00ff\u0007\u00ff\u0002\u0100\u0007\u0100\u0002\u0101\u0007"+
		"\u0101\u0002\u0102\u0007\u0102\u0002\u0103\u0007\u0103\u0002\u0104\u0007"+
		"\u0104\u0002\u0105\u0007\u0105\u0002\u0106\u0007\u0106\u0002\u0107\u0007"+
		"\u0107\u0002\u0108\u0007\u0108\u0002\u0109\u0007\u0109\u0002\u010a\u0007"+
		"\u010a\u0002\u010b\u0007\u010b\u0002\u010c\u0007\u010c\u0002\u010d\u0007"+
		"\u010d\u0002\u010e\u0007\u010e\u0002\u010f\u0007\u010f\u0002\u0110\u0007"+
		"\u0110\u0002\u0111\u0007\u0111\u0002\u0112\u0007\u0112\u0002\u0113\u0007"+
		"\u0113\u0002\u0114\u0007\u0114\u0002\u0115\u0007\u0115\u0002\u0116\u0007"+
		"\u0116\u0002\u0117\u0007\u0117\u0002\u0118\u0007\u0118\u0002\u0119\u0007"+
		"\u0119\u0002\u011a\u0007\u011a\u0002\u011b\u0007\u011b\u0002\u011c\u0007"+
		"\u011c\u0002\u011d\u0007\u011d\u0002\u011e\u0007\u011e\u0002\u011f\u0007"+
		"\u011f\u0002\u0120\u0007\u0120\u0002\u0121\u0007\u0121\u0002\u0122\u0007"+
		"\u0122\u0002\u0123\u0007\u0123\u0002\u0124\u0007\u0124\u0002\u0125\u0007"+
		"\u0125\u0002\u0126\u0007\u0126\u0002\u0127\u0007\u0127\u0002\u0128\u0007"+
		"\u0128\u0002\u0129\u0007\u0129\u0002\u012a\u0007\u012a\u0002\u012b\u0007"+
		"\u012b\u0002\u012c\u0007\u012c\u0002\u012d\u0007\u012d\u0002\u012e\u0007"+
		"\u012e\u0002\u012f\u0007\u012f\u0002\u0130\u0007\u0130\u0002\u0131\u0007"+
		"\u0131\u0002\u0132\u0007\u0132\u0002\u0133\u0007\u0133\u0002\u0134\u0007"+
		"\u0134\u0002\u0135\u0007\u0135\u0002\u0136\u0007\u0136\u0002\u0137\u0007"+
		"\u0137\u0002\u0138\u0007\u0138\u0002\u0139\u0007\u0139\u0002\u013a\u0007"+
		"\u013a\u0002\u013b\u0007\u013b\u0002\u013c\u0007\u013c\u0002\u013d\u0007"+
		"\u013d\u0002\u013e\u0007\u013e\u0002\u013f\u0007\u013f\u0002\u0140\u0007"+
		"\u0140\u0002\u0141\u0007\u0141\u0002\u0142\u0007\u0142\u0002\u0143\u0007"+
		"\u0143\u0002\u0144\u0007\u0144\u0002\u0145\u0007\u0145\u0002\u0146\u0007"+
		"\u0146\u0002\u0147\u0007\u0147\u0002\u0148\u0007\u0148\u0002\u0149\u0007"+
		"\u0149\u0002\u014a\u0007\u014a\u0002\u014b\u0007\u014b\u0002\u014c\u0007"+
		"\u014c\u0002\u014d\u0007\u014d\u0002\u014e\u0007\u014e\u0002\u014f\u0007"+
		"\u014f\u0002\u0150\u0007\u0150\u0002\u0151\u0007\u0151\u0002\u0152\u0007"+
		"\u0152\u0002\u0153\u0007\u0153\u0002\u0154\u0007\u0154\u0002\u0155\u0007"+
		"\u0155\u0002\u0156\u0007\u0156\u0002\u0157\u0007\u0157\u0002\u0158\u0007"+
		"\u0158\u0002\u0159\u0007\u0159\u0002\u015a\u0007\u015a\u0002\u015b\u0007"+
		"\u015b\u0002\u015c\u0007\u015c\u0002\u015d\u0007\u015d\u0002\u015e\u0007"+
		"\u015e\u0002\u015f\u0007\u015f\u0002\u0160\u0007\u0160\u0002\u0161\u0007"+
		"\u0161\u0002\u0162\u0007\u0162\u0002\u0163\u0007\u0163\u0002\u0164\u0007"+
		"\u0164\u0002\u0165\u0007\u0165\u0002\u0166\u0007\u0166\u0002\u0167\u0007"+
		"\u0167\u0002\u0168\u0007\u0168\u0002\u0169\u0007\u0169\u0002\u016a\u0007"+
		"\u016a\u0002\u016b\u0007\u016b\u0002\u016c\u0007\u016c\u0002\u016d\u0007"+
		"\u016d\u0002\u016e\u0007\u016e\u0002\u016f\u0007\u016f\u0002\u0170\u0007"+
		"\u0170\u0002\u0171\u0007\u0171\u0002\u0172\u0007\u0172\u0002\u0173\u0007"+
		"\u0173\u0002\u0174\u0007\u0174\u0002\u0175\u0007\u0175\u0002\u0176\u0007"+
		"\u0176\u0002\u0177\u0007\u0177\u0002\u0178\u0007\u0178\u0002\u0179\u0007"+
		"\u0179\u0002\u017a\u0007\u017a\u0002\u017b\u0007\u017b\u0002\u017c\u0007"+
		"\u017c\u0002\u017d\u0007\u017d\u0002\u017e\u0007\u017e\u0002\u017f\u0007"+
		"\u017f\u0002\u0180\u0007\u0180\u0002\u0181\u0007\u0181\u0002\u0182\u0007"+
		"\u0182\u0002\u0183\u0007\u0183\u0002\u0184\u0007\u0184\u0002\u0185\u0007"+
		"\u0185\u0002\u0186\u0007\u0186\u0002\u0187\u0007\u0187\u0002\u0188\u0007"+
		"\u0188\u0002\u0189\u0007\u0189\u0002\u018a\u0007\u018a\u0002\u018b\u0007"+
		"\u018b\u0002\u018c\u0007\u018c\u0002\u018d\u0007\u018d\u0002\u018e\u0007"+
		"\u018e\u0002\u018f\u0007\u018f\u0002\u0190\u0007\u0190\u0002\u0191\u0007"+
		"\u0191\u0002\u0192\u0007\u0192\u0002\u0193\u0007\u0193\u0002\u0194\u0007"+
		"\u0194\u0002\u0195\u0007\u0195\u0002\u0196\u0007\u0196\u0002\u0197\u0007"+
		"\u0197\u0002\u0198\u0007\u0198\u0002\u0199\u0007\u0199\u0002\u019a\u0007"+
		"\u019a\u0002\u019b\u0007\u019b\u0002\u019c\u0007\u019c\u0002\u019d\u0007"+
		"\u019d\u0002\u019e\u0007\u019e\u0002\u019f\u0007\u019f\u0002\u01a0\u0007"+
		"\u01a0\u0002\u01a1\u0007\u01a1\u0002\u01a2\u0007\u01a2\u0002\u01a3\u0007"+
		"\u01a3\u0002\u01a4\u0007\u01a4\u0002\u01a5\u0007\u01a5\u0002\u01a6\u0007"+
		"\u01a6\u0002\u01a7\u0007\u01a7\u0002\u01a8\u0007\u01a8\u0002\u01a9\u0007"+
		"\u01a9\u0002\u01aa\u0007\u01aa\u0002\u01ab\u0007\u01ab\u0002\u01ac\u0007"+
		"\u01ac\u0002\u01ad\u0007\u01ad\u0002\u01ae\u0007\u01ae\u0002\u01af\u0007"+
		"\u01af\u0002\u01b0\u0007\u01b0\u0002\u01b1\u0007\u01b1\u0002\u01b2\u0007"+
		"\u01b2\u0002\u01b3\u0007\u01b3\u0002\u01b4\u0007\u01b4\u0002\u01b5\u0007"+
		"\u01b5\u0002\u01b6\u0007\u01b6\u0002\u01b7\u0007\u01b7\u0002\u01b8\u0007"+
		"\u01b8\u0002\u01b9\u0007\u01b9\u0002\u01ba\u0007\u01ba\u0002\u01bb\u0007"+
		"\u01bb\u0002\u01bc\u0007\u01bc\u0002\u01bd\u0007\u01bd\u0002\u01be\u0007"+
		"\u01be\u0002\u01bf\u0007\u01bf\u0002\u01c0\u0007\u01c0\u0002\u01c1\u0007"+
		"\u01c1\u0002\u01c2\u0007\u01c2\u0002\u01c3\u0007\u01c3\u0002\u01c4\u0007"+
		"\u01c4\u0002\u01c5\u0007\u01c5\u0002\u01c6\u0007\u01c6\u0002\u01c7\u0007"+
		"\u01c7\u0002\u01c8\u0007\u01c8\u0002\u01c9\u0007\u01c9\u0002\u01ca\u0007"+
		"\u01ca\u0002\u01cb\u0007\u01cb\u0002\u01cc\u0007\u01cc\u0002\u01cd\u0007"+
		"\u01cd\u0002\u01ce\u0007\u01ce\u0002\u01cf\u0007\u01cf\u0002\u01d0\u0007"+
		"\u01d0\u0002\u01d1\u0007\u01d1\u0002\u01d2\u0007\u01d2\u0002\u01d3\u0007"+
		"\u01d3\u0002\u01d4\u0007\u01d4\u0002\u01d5\u0007\u01d5\u0002\u01d6\u0007"+
		"\u01d6\u0002\u01d7\u0007\u01d7\u0002\u01d8\u0007\u01d8\u0002\u01d9\u0007"+
		"\u01d9\u0002\u01da\u0007\u01da\u0002\u01db\u0007\u01db\u0002\u01dc\u0007"+
		"\u01dc\u0002\u01dd\u0007\u01dd\u0002\u01de\u0007\u01de\u0002\u01df\u0007"+
		"\u01df\u0002\u01e0\u0007\u01e0\u0002\u01e1\u0007\u01e1\u0002\u01e2\u0007"+
		"\u01e2\u0002\u01e3\u0007\u01e3\u0002\u01e4\u0007\u01e4\u0002\u01e5\u0007"+
		"\u01e5\u0002\u01e6\u0007\u01e6\u0002\u01e7\u0007\u01e7\u0002\u01e8\u0007"+
		"\u01e8\u0002\u01e9\u0007\u01e9\u0002\u01ea\u0007\u01ea\u0002\u01eb\u0007"+
		"\u01eb\u0002\u01ec\u0007\u01ec\u0002\u01ed\u0007\u01ed\u0002\u01ee\u0007"+
		"\u01ee\u0002\u01ef\u0007\u01ef\u0002\u01f0\u0007\u01f0\u0002\u01f1\u0007"+
		"\u01f1\u0002\u01f2\u0007\u01f2\u0002\u01f3\u0007\u01f3\u0002\u01f4\u0007"+
		"\u01f4\u0002\u01f5\u0007\u01f5\u0002\u01f6\u0007\u01f6\u0002\u01f7\u0007"+
		"\u01f7\u0002\u01f8\u0007\u01f8\u0002\u01f9\u0007\u01f9\u0002\u01fa\u0007"+
		"\u01fa\u0002\u01fb\u0007\u01fb\u0002\u01fc\u0007\u01fc\u0002\u01fd\u0007"+
		"\u01fd\u0002\u01fe\u0007\u01fe\u0002\u01ff\u0007\u01ff\u0002\u0200\u0007"+
		"\u0200\u0002\u0201\u0007\u0201\u0002\u0202\u0007\u0202\u0002\u0203\u0007"+
		"\u0203\u0002\u0204\u0007\u0204\u0002\u0205\u0007\u0205\u0002\u0206\u0007"+
		"\u0206\u0002\u0207\u0007\u0207\u0002\u0208\u0007\u0208\u0002\u0209\u0007"+
		"\u0209\u0002\u020a\u0007\u020a\u0002\u020b\u0007\u020b\u0002\u020c\u0007"+
		"\u020c\u0002\u020d\u0007\u020d\u0002\u020e\u0007\u020e\u0002\u020f\u0007"+
		"\u020f\u0002\u0210\u0007\u0210\u0002\u0211\u0007\u0211\u0002\u0212\u0007"+
		"\u0212\u0002\u0213\u0007\u0213\u0002\u0214\u0007\u0214\u0002\u0215\u0007"+
		"\u0215\u0002\u0216\u0007\u0216\u0002\u0217\u0007\u0217\u0002\u0218\u0007"+
		"\u0218\u0002\u0219\u0007\u0219\u0002\u021a\u0007\u021a\u0002\u021b\u0007"+
		"\u021b\u0002\u021c\u0007\u021c\u0002\u021d\u0007\u021d\u0002\u021e\u0007"+
		"\u021e\u0002\u021f\u0007\u021f\u0002\u0220\u0007\u0220\u0002\u0221\u0007"+
		"\u0221\u0002\u0222\u0007\u0222\u0002\u0223\u0007\u0223\u0002\u0224\u0007"+
		"\u0224\u0002\u0225\u0007\u0225\u0002\u0226\u0007\u0226\u0002\u0227\u0007"+
		"\u0227\u0002\u0228\u0007\u0228\u0002\u0229\u0007\u0229\u0002\u022a\u0007"+
		"\u022a\u0002\u022b\u0007\u022b\u0002\u022c\u0007\u022c\u0002\u022d\u0007"+
		"\u022d\u0002\u022e\u0007\u022e\u0002\u022f\u0007\u022f\u0002\u0230\u0007"+
		"\u0230\u0002\u0231\u0007\u0231\u0002\u0232\u0007\u0232\u0002\u0233\u0007"+
		"\u0233\u0002\u0234\u0007\u0234\u0002\u0235\u0007\u0235\u0002\u0236\u0007"+
		"\u0236\u0002\u0237\u0007\u0237\u0002\u0238\u0007\u0238\u0002\u0239\u0007"+
		"\u0239\u0002\u023a\u0007\u023a\u0002\u023b\u0007\u023b\u0002\u023c\u0007"+
		"\u023c\u0002\u023d\u0007\u023d\u0002\u023e\u0007\u023e\u0002\u023f\u0007"+
		"\u023f\u0002\u0240\u0007\u0240\u0002\u0241\u0007\u0241\u0002\u0242\u0007"+
		"\u0242\u0002\u0243\u0007\u0243\u0002\u0244\u0007\u0244\u0002\u0245\u0007"+
		"\u0245\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
		"\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u04f1"+
		"\b\u0000\u0001\u0000\u0001\u0000\u0003\u0000\u04f5\b\u0000\u0001\u0000"+
		"\u0003\u0000\u04f8\b\u0000\u0001\u0000\u0003\u0000\u04fb\b\u0000\u0001"+
		"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
		"\u0001\u0001\u0001\u0001\u0001\u0003\u0001\u0506\b\u0001\u0001\u0002\u0001"+
		"\u0002\u0003\u0002\u050a\b\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u050e"+
		"\b\u0002\u0001\u0002\u0001\u0002\u0003\u0002\u0512\b\u0002\u0001\u0002"+
		"\u0003\u0002\u0515\b\u0002\u0001\u0002\u0003\u0002\u0518\b\u0002\u0001"+
		"\u0002\u0003\u0002\u051b\b\u0002\u0001\u0002\u0003\u0002\u051e\b\u0002"+
		"\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0003\u0003"+
		"\u0525\b\u0003\u0001\u0003\u0003\u0003\u0528\b\u0003\u0001\u0003\u0003"+
		"\u0003\u052b\b\u0003\u0001\u0004\u0003\u0004\u052e\b\u0004\u0001\u0004"+
		"\u0001\u0004\u0003\u0004\u0532\b\u0004\u0001\u0004\u0001\u0004\u0003\u0004"+
		"\u0536\b\u0004\u0001\u0004\u0001\u0004\u0003\u0004\u053a\b\u0004\u0001"+
		"\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
		"\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
		"\u0004\u0001\u0004\u0001\u0004\u0003\u0004\u054b\b\u0004\u0003\u0004\u054d"+
		"\b\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u0552\b\u0005"+
		"\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0003\u0005\u055b\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+
		"\u0001\u0005\u0003\u0005\u0561\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+
		"\u0565\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007"+
		"\u0003\u0007\u056c\b\u0007\u0001\u0007\u0003\u0007\u056f\b\u0007\u0001"+
		"\u0007\u0003\u0007\u0572\b\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u0576"+
		"\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u057c\b\b\u0001\b\u0001"+
		"\b\u0001\b\u0001\b\u0001\b\u0003\b\u0583\b\b\u0001\t\u0001\t\u0001\t\u0003"+
		"\t\u0588\b\t\u0001\t\u0001\t\u0001\n\u0001\n\u0003\n\u058e\b\n\u0001\n"+
		"\u0003\n\u0591\b\n\u0001\u000b\u0001\u000b\u0001\u000b\u0003\u000b\u0596"+
		"\b\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0003\f\u059c\b\f\u0001\f\u0003"+
		"\f\u059f\b\f\u0001\r\u0001\r\u0003\r\u05a3\b\r\u0001\r\u0001\r\u0001\r"+
		"\u0001\r\u0003\r\u05a9\b\r\u0005\r\u05ab\b\r\n\r\f\r\u05ae\t\r\u0001\u000e"+
		"\u0004\u000e\u05b1\b\u000e\u000b\u000e\f\u000e\u05b2\u0001\u000f\u0001"+
		"\u000f\u0003\u000f\u05b7\b\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u05bb"+
		"\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u05c1"+
		"\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u05c7"+
		"\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u05cc\b\u000f"+
		"\u0001\u000f\u0001\u000f\u0003\u000f\u05d0\b\u000f\u0001\u000f\u0001\u000f"+
		"\u0001\u000f\u0003\u000f\u05d5\b\u000f\u0001\u000f\u0001\u000f\u0003\u000f"+
		"\u05d9\b\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u05dd\b\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003"+
		"\u000f\u05eb\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0003\u000f\u05f3\b\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003"+
		"\u000f\u05fd\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003"+
		"\u000f\u0603\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0003\u000f\u061c\b\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u062a\b\u000f\u0001\u000f\u0001"+
		"\u000f\u0001\u000f\u0001\u000f\u0003\u000f\u0630\b\u000f\u0001\u0010\u0001"+
		"\u0010\u0003\u0010\u0634\b\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0003"+
		"\u0010\u0639\b\u0010\u0005\u0010\u063b\b\u0010\n\u0010\f\u0010\u063e\t"+
		"\u0010\u0001\u0011\u0001\u0011\u0003\u0011\u0642\b\u0011\u0001\u0011\u0003"+
		"\u0011\u0645\b\u0011\u0001\u0011\u0001\u0011\u0005\u0011\u0649\b\u0011"+
		"\n\u0011\f\u0011\u064c\t\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u0650"+
		"\b\u0011\u0001\u0011\u0003\u0011\u0653\b\u0011\u0001\u0011\u0001\u0011"+
		"\u0005\u0011\u0657\b\u0011\n\u0011\f\u0011\u065a\t\u0011\u0001\u0011\u0001"+
		"\u0011\u0003\u0011\u065e\b\u0011\u0001\u0011\u0003\u0011\u0661\b\u0011"+
		"\u0001\u0011\u0001\u0011\u0005\u0011\u0665\b\u0011\n\u0011\f\u0011\u0668"+
		"\t\u0011\u0001\u0011\u0003\u0011\u066b\b\u0011\u0001\u0011\u0001\u0011"+
		"\u0001\u0011\u0001\u0011\u0003\u0011\u0671\b\u0011\u0003\u0011\u0673\b"+
		"\u0011\u0001\u0011\u0003\u0011\u0676\b\u0011\u0001\u0011\u0003\u0011\u0679"+
		"\b\u0011\u0001\u0011\u0001\u0011\u0005\u0011\u067d\b\u0011\n\u0011\f\u0011"+
		"\u0680\t\u0011\u0001\u0011\u0003\u0011\u0683\b\u0011\u0001\u0011\u0001"+
		"\u0011\u0001\u0011\u0003\u0011\u0688\b\u0011\u0001\u0011\u0001\u0011\u0001"+
		"\u0011\u0001\u0011\u0003\u0011\u068e\b\u0011\u0001\u0011\u0001\u0011\u0003"+
		"\u0011\u0692\b\u0011\u0003\u0011\u0694\b\u0011\u0001\u0012\u0001\u0012"+
		"\u0001\u0012\u0005\u0012\u0699\b\u0012\n\u0012\f\u0012\u069c\t\u0012\u0001"+
		"\u0013\u0001\u0013\u0001\u0013\u0003\u0013\u06a1\b\u0013\u0001\u0014\u0001"+
		"\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+
		"\u0015\u0001\u0015\u0003\u0015\u06ac\b\u0015\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0003\u0016\u06b1\b\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0003"+
		"\u0016\u06b6\b\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0001\u0016\u0003\u0016\u06be\b\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0001\u0016\u0003\u0016\u06c4\b\u0016\u0001\u0016\u0001\u0016\u0003"+
		"\u0016\u06c8\b\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u06cd"+
		"\b\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0005"+
		"\u0016\u06d4\b\u0016\n\u0016\f\u0016\u06d7\t\u0016\u0001\u0016\u0001\u0016"+
		"\u0001\u0016\u0003\u0016\u06dc\b\u0016\u0001\u0016\u0001\u0016\u0005\u0016"+
		"\u06e0\b\u0016\n\u0016\f\u0016\u06e3\t\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0003\u0016\u06e8\b\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u06f1\b\u0016\u0001"+
		"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0003\u0016\u06f7\b\u0016\u0001"+
		"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0003\u0016\u0700\b\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
		"\u0016\u0003\u0016\u070c\b\u0016\u0001\u0017\u0001\u0017\u0003\u0017\u0710"+
		"\b\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0005\u0018\u0715\b\u0018"+
		"\n\u0018\f\u0018\u0718\t\u0018\u0001\u0019\u0001\u0019\u0003\u0019\u071c"+
		"\b\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
		"\u001b\u0003\u001b\u0724\b\u001b\u0001\u001c\u0001\u001c\u0003\u001c\u0728"+
		"\b\u001c\u0001\u001c\u0001\u001c\u0003\u001c\u072c\b\u001c\u0001\u001c"+
		"\u0001\u001c\u0003\u001c\u0730\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d"+
		"\u0001\u001d\u0001\u001d\u0003\u001d\u0737\b\u001d\u0001\u001d\u0001\u001d"+
		"\u0005\u001d\u073b\b\u001d\n\u001d\f\u001d\u073e\t\u001d\u0001\u001e\u0001"+
		"\u001e\u0003\u001e\u0742\b\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+
		"\u001f\u0003\u001f\u0748\b\u001f\u0001\u001f\u0001\u001f\u0001 \u0001"+
		" \u0003 \u074e\b \u0001 \u0001 \u0001!\u0001!\u0003!\u0754\b!\u0001!\u0001"+
		"!\u0001!\u0003!\u0759\b!\u0001!\u0001!\u0001!\u0001!\u0003!\u075f\b!\u0001"+
		"!\u0001!\u0005!\u0763\b!\n!\f!\u0766\t!\u0001\"\u0001\"\u0001\"\u0003"+
		"\"\u076b\b\"\u0001\"\u0001\"\u0005\"\u076f\b\"\n\"\f\"\u0772\t\"\u0001"+
		"#\u0001#\u0001#\u0003#\u0777\b#\u0001#\u0005#\u077a\b#\n#\f#\u077d\t#"+
		"\u0001$\u0001$\u0001$\u0003$\u0782\b$\u0001%\u0001%\u0001%\u0001%\u0003"+
		"%\u0788\b%\u0001%\u0003%\u078b\b%\u0001&\u0001&\u0001&\u0003&\u0790\b"+
		"&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001"+
		"(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001"+
		"(\u0001(\u0001(\u0003(\u07a8\b(\u0001(\u0001(\u0001(\u0001(\u0003(\u07ae"+
		"\b(\u0003(\u07b0\b(\u0001)\u0001)\u0001*\u0001*\u0003*\u07b6\b*\u0001"+
		"*\u0001*\u0003*\u07ba\b*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+
		"*\u0003*\u07c3\b*\u0001*\u0003*\u07c6\b*\u0001*\u0001*\u0001*\u0001*\u0001"+
		"*\u0003*\u07cd\b*\u0001*\u0001*\u0003*\u07d1\b*\u0001*\u0001*\u0001*\u0001"+
		"+\u0001+\u0003+\u07d8\b+\u0001+\u0001+\u0001+\u0001+\u0001+\u0003+\u07df"+
		"\b+\u0001+\u0001+\u0001+\u0003+\u07e4\b+\u0001+\u0003+\u07e7\b+\u0001"+
		"+\u0001+\u0001+\u0003+\u07ec\b+\u0001+\u0001+\u0001+\u0001+\u0001+\u0003"+
		"+\u07f3\b+\u0001+\u0001+\u0003+\u07f7\b+\u0001+\u0001+\u0003+\u07fb\b"+
		"+\u0001,\u0001,\u0001,\u0003,\u0800\b,\u0001,\u0001,\u0001-\u0001-\u0003"+
		"-\u0806\b-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0003-\u080e\b-\u0001"+
		"-\u0001-\u0001-\u0001-\u0005-\u0814\b-\n-\f-\u0817\t-\u0001-\u0001-\u0001"+
		"-\u0001-\u0005-\u081d\b-\n-\f-\u0820\t-\u0001-\u0001-\u0001.\u0001.\u0001"+
		".\u0001.\u0005.\u0828\b.\n.\f.\u082b\t.\u0001/\u0001/\u0001/\u0003/\u0830"+
		"\b/\u0001/\u0001/\u00010\u00010\u00030\u0836\b0\u00010\u00010\u00010\u0001"+
		"0\u00030\u083c\b0\u00010\u00010\u00050\u0840\b0\n0\f0\u0843\t0\u00010"+
		"\u00010\u00050\u0847\b0\n0\f0\u084a\t0\u00010\u00010\u00011\u00011\u0001"+
		"1\u00011\u00051\u0852\b1\n1\f1\u0855\t1\u00012\u00012\u00012\u00032\u085a"+
		"\b2\u00012\u00012\u00013\u00013\u00013\u00013\u00013\u00013\u00013\u0001"+
		"3\u00013\u00013\u00013\u00013\u00053\u086a\b3\n3\f3\u086d\t3\u00013\u0001"+
		"3\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00014\u00054\u0879"+
		"\b4\n4\f4\u087c\t4\u00014\u00014\u00015\u00015\u00015\u00035\u0883\b5"+
		"\u00015\u00015\u00016\u00016\u00016\u00036\u088a\b6\u00016\u00016\u0001"+
		"6\u00036\u088f\b6\u00016\u00036\u0892\b6\u00016\u00016\u00016\u00036\u0897"+
		"\b6\u00016\u00016\u00016\u00016\u00016\u00016\u00036\u089f\b6\u00016\u0001"+
		"6\u00016\u00016\u00036\u08a5\b6\u00016\u00016\u00036\u08a9\b6\u00017\u0001"+
		"7\u00017\u00017\u00037\u08af\b7\u00017\u00037\u08b2\b7\u00017\u00017\u0001"+
		"7\u00037\u08b7\b7\u00017\u00017\u00017\u00017\u00017\u00017\u00037\u08bf"+
		"\b7\u00017\u00017\u00017\u00017\u00037\u08c5\b7\u00017\u00017\u00037\u08c9"+
		"\b7\u00018\u00018\u00018\u00038\u08ce\b8\u00018\u00018\u00038\u08d2\b"+
		"8\u00019\u00019\u00039\u08d6\b9\u0001:\u0001:\u0003:\u08da\b:\u0001:\u0001"+
		":\u0001:\u0001:\u0001:\u0001:\u0001:\u0001:\u0003:\u08e4\b:\u0001:\u0001"+
		":\u0001:\u0003:\u08e9\b:\u0001:\u0001:\u0003:\u08ed\b:\u0001:\u0003:\u08f0"+
		"\b:\u0001;\u0001;\u0003;\u08f4\b;\u0001;\u0001;\u0001;\u0001;\u0001;\u0001"+
		";\u0001;\u0001;\u0001;\u0001;\u0001;\u0003;\u0901\b;\u0001;\u0003;\u0904"+
		"\b;\u0001;\u0001;\u0003;\u0908\b;\u0001;\u0003;\u090b\b;\u0001;\u0001"+
		";\u0003;\u090f\b;\u0001;\u0003;\u0912\b;\u0001;\u0001;\u0003;\u0916\b"+
		";\u0001;\u0003;\u0919\b;\u0001;\u0001;\u0003;\u091d\b;\u0001;\u0003;\u0920"+
		"\b;\u0001;\u0003;\u0923\b;\u0001;\u0001;\u0003;\u0927\b;\u0001;\u0003"+
		";\u092a\b;\u0001;\u0001;\u0003;\u092e\b;\u0001;\u0003;\u0931\b;\u0001"+
		"<\u0001<\u0003<\u0935\b<\u0001=\u0001=\u0003=\u0939\b=\u0001=\u0001=\u0001"+
		"=\u0001=\u0001=\u0001=\u0001=\u0001=\u0003=\u0943\b=\u0001=\u0003=\u0946"+
		"\b=\u0001=\u0001=\u0001=\u0003=\u094b\b=\u0001=\u0001=\u0003=\u094f\b"+
		"=\u0001=\u0003=\u0952\b=\u0001>\u0001>\u0003>\u0956\b>\u0001>\u0001>\u0001"+
		">\u0001>\u0003>\u095c\b>\u0001>\u0001>\u0003>\u0960\b>\u0001>\u0001>\u0001"+
		">\u0001>\u0001>\u0003>\u0967\b>\u0001>\u0001>\u0003>\u096b\b>\u0001>\u0003"+
		">\u096e\b>\u0001?\u0001?\u0003?\u0972\b?\u0001?\u0001?\u0001?\u0001?\u0003"+
		"?\u0978\b?\u0001?\u0003?\u097b\b?\u0001@\u0001@\u0001@\u0001@\u0001@\u0001"+
		"@\u0001@\u0001@\u0001@\u0003@\u0986\b@\u0001@\u0003@\u0989\b@\u0001@\u0001"+
		"@\u0003@\u098d\b@\u0001@\u0003@\u0990\b@\u0001@\u0001@\u0003@\u0994\b"+
		"@\u0001@\u0003@\u0997\b@\u0001@\u0001@\u0003@\u099b\b@\u0001@\u0003@\u099e"+
		"\b@\u0001@\u0003@\u09a1\b@\u0001@\u0001@\u0003@\u09a5\b@\u0001@\u0003"+
		"@\u09a8\b@\u0001@\u0001@\u0003@\u09ac\b@\u0001@\u0003@\u09af\b@\u0001"+
		"A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0003A\u09ba"+
		"\bA\u0001A\u0003A\u09bd\bA\u0001A\u0003A\u09c0\bA\u0001A\u0001A\u0003"+
		"A\u09c4\bA\u0001A\u0003A\u09c7\bA\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+
		"B\u0003B\u09cf\bB\u0001B\u0003B\u09d2\bB\u0001C\u0001C\u0003C\u09d6\b"+
		"C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+
		"C\u0003C\u09e2\bC\u0001C\u0001C\u0001D\u0001D\u0001D\u0003D\u09e9\bD\u0001"+
		"D\u0001D\u0001D\u0003D\u09ee\bD\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+
		"E\u0001E\u0001E\u0001E\u0001E\u0001E\u0001E\u0005E\u09fc\bE\nE\fE\u09ff"+
		"\tE\u0001F\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0003G\u0a08\bG\u0001"+
		"H\u0001H\u0005H\u0a0c\bH\nH\fH\u0a0f\tH\u0001H\u0003H\u0a12\bH\u0001H"+
		"\u0003H\u0a15\bH\u0001H\u0001H\u0001H\u0001H\u0001H\u0003H\u0a1c\bH\u0001"+
		"H\u0005H\u0a1f\bH\nH\fH\u0a22\tH\u0003H\u0a24\bH\u0001I\u0003I\u0a27\b"+
		"I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+
		"I\u0003I\u0a33\bI\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001"+
		"I\u0003I\u0a3d\bI\u0001I\u0001I\u0001I\u0003I\u0a42\bI\u0001I\u0001I\u0001"+
		"I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0001I\u0003I\u0a4e\bI\u0001"+
		"I\u0001I\u0001I\u0003I\u0a53\bI\u0001J\u0001J\u0001J\u0001J\u0001J\u0001"+
		"K\u0003K\u0a5b\bK\u0001K\u0001K\u0001L\u0001L\u0001L\u0001M\u0001M\u0001"+
		"M\u0001M\u0001M\u0001M\u0001M\u0001M\u0001M\u0003M\u0a6b\bM\u0001M\u0003"+
		"M\u0a6e\bM\u0001N\u0001N\u0001N\u0001N\u0001N\u0001N\u0003N\u0a76\bN\u0001"+
		"N\u0001N\u0001N\u0001N\u0001N\u0001N\u0003N\u0a7e\bN\u0003N\u0a80\bN\u0001"+
		"O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0003O\u0a8a\bO\u0001"+
		"P\u0001P\u0001Q\u0001Q\u0001Q\u0001R\u0001R\u0001R\u0001R\u0005R\u0a95"+
		"\bR\nR\fR\u0a98\tR\u0001R\u0001R\u0001S\u0001S\u0003S\u0a9e\bS\u0001S"+
		"\u0003S\u0aa1\bS\u0001T\u0001T\u0001T\u0001T\u0001T\u0003T\u0aa8\bT\u0003"+
		"T\u0aaa\bT\u0001U\u0001U\u0001U\u0001U\u0005U\u0ab0\bU\nU\fU\u0ab3\tU"+
		"\u0001U\u0001U\u0001V\u0001V\u0003V\u0ab9\bV\u0001W\u0001W\u0003W\u0abd"+
		"\bW\u0001W\u0001W\u0001W\u0001W\u0003W\u0ac3\bW\u0001X\u0001X\u0001Y\u0003"+
		"Y\u0ac8\bY\u0001Y\u0001Y\u0001Y\u0003Y\u0acd\bY\u0001Z\u0001Z\u0001[\u0001"+
		"[\u0003[\u0ad3\b[\u0001[\u0005[\u0ad6\b[\n[\f[\u0ad9\t[\u0001\\\u0001"+
		"\\\u0003\\\u0add\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0ae2\b\\\u0001\\"+
		"\u0001\\\u0001\\\u0003\\\u0ae7\b\\\u0001\\\u0001\\\u0003\\\u0aeb\b\\\u0001"+
		"\\\u0001\\\u0001\\\u0003\\\u0af0\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0af5"+
		"\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0afa\b\\\u0001\\\u0001\\\u0001\\"+
		"\u0003\\\u0aff\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b04\b\\\u0001\\\u0001"+
		"\\\u0001\\\u0003\\\u0b09\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b0e\b\\"+
		"\u0001\\\u0001\\\u0001\\\u0003\\\u0b13\b\\\u0001\\\u0001\\\u0001\\\u0003"+
		"\\\u0b18\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b1d\b\\\u0001\\\u0001\\"+
		"\u0001\\\u0003\\\u0b22\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b27\b\\\u0001"+
		"\\\u0001\\\u0001\\\u0003\\\u0b2c\b\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+
		"\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b36\b\\\u0001\\\u0001\\\u0001\\\u0001"+
		"\\\u0003\\\u0b3c\b\\\u0001\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b42\b\\"+
		"\u0001\\\u0001\\\u0001\\\u0003\\\u0b47\b\\\u0001\\\u0001\\\u0001\\\u0001"+
		"\\\u0001\\\u0003\\\u0b4e\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u0b53\b\\"+
		"\u0001\\\u0001\\\u0001\\\u0003\\\u0b58\b\\\u0001\\\u0001\\\u0001\\\u0001"+
		"\\\u0003\\\u0b5e\b\\\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]\u0001]"+
		"\u0001]\u0005]\u0b68\b]\n]\f]\u0b6b\t]\u0001]\u0001]\u0001]\u0001]\u0001"+
		"]\u0003]\u0b72\b]\u0001]\u0001]\u0005]\u0b76\b]\n]\f]\u0b79\t]\u0003]"+
		"\u0b7b\b]\u0001^\u0001^\u0001^\u0001^\u0001^\u0003^\u0b82\b^\u0001^\u0001"+
		"^\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001_\u0001"+
		"_\u0001_\u0001_\u0003_\u0b92\b_\u0001`\u0001`\u0001`\u0003`\u0b97\b`\u0001"+
		"a\u0001a\u0001a\u0001a\u0005a\u0b9d\ba\na\fa\u0ba0\ta\u0001a\u0001a\u0001"+
		"b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+
		"b\u0003b\u0baf\bb\u0003b\u0bb1\bb\u0001b\u0005b\u0bb4\bb\nb\fb\u0bb7\t"+
		"b\u0001b\u0001b\u0001b\u0001b\u0005b\u0bbd\bb\nb\fb\u0bc0\tb\u0001b\u0001"+
		"b\u0003b\u0bc4\bb\u0001c\u0001c\u0001c\u0003c\u0bc9\bc\u0001c\u0001c\u0001"+
		"c\u0003c\u0bce\bc\u0001d\u0001d\u0001d\u0005d\u0bd3\bd\nd\fd\u0bd6\td"+
		"\u0001e\u0003e\u0bd9\be\u0001e\u0001e\u0003e\u0bdd\be\u0001e\u0001e\u0001"+
		"e\u0003e\u0be2\be\u0001e\u0001e\u0001e\u0001e\u0003e\u0be8\be\u0001e\u0001"+
		"e\u0001e\u0001e\u0003e\u0bee\be\u0001e\u0001e\u0001e\u0003e\u0bf3\be\u0001"+
		"e\u0001e\u0001e\u0003e\u0bf8\be\u0001e\u0001e\u0001e\u0003e\u0bfd\be\u0001"+
		"e\u0003e\u0c00\be\u0001f\u0001f\u0001f\u0005f\u0c05\bf\nf\ff\u0c08\tf"+
		"\u0001g\u0001g\u0001g\u0001g\u0001g\u0001g\u0003g\u0c10\bg\u0003g\u0c12"+
		"\bg\u0001h\u0001h\u0001h\u0001h\u0005h\u0c18\bh\nh\fh\u0c1b\th\u0001h"+
		"\u0001h\u0001h\u0001h\u0001h\u0001h\u0005h\u0c23\bh\nh\fh\u0c26\th\u0003"+
		"h\u0c28\bh\u0001h\u0001h\u0001h\u0001h\u0005h\u0c2e\bh\nh\fh\u0c31\th"+
		"\u0003h\u0c33\bh\u0003h\u0c35\bh\u0001i\u0001i\u0001i\u0001i\u0003i\u0c3b"+
		"\bi\u0001j\u0001j\u0003j\u0c3f\bj\u0001k\u0001k\u0001k\u0001k\u0001k\u0001"+
		"k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0001k\u0003k\u0c4f"+
		"\bk\u0001l\u0001l\u0001l\u0001l\u0001l\u0003l\u0c56\bl\u0001l\u0001l\u0001"+
		"l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0001l\u0003l\u0c63"+
		"\bl\u0001l\u0001l\u0001l\u0003l\u0c68\bl\u0001m\u0003m\u0c6b\bm\u0001"+
		"m\u0001m\u0001m\u0001n\u0001n\u0003n\u0c72\bn\u0001o\u0001o\u0001p\u0001"+
		"p\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+
		"q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001q\u0001"+
		"q\u0001q\u0003q\u0c8d\bq\u0001q\u0003q\u0c90\bq\u0001r\u0001r\u0001r\u0003"+
		"r\u0c95\br\u0001r\u0001r\u0005r\u0c99\br\nr\fr\u0c9c\tr\u0001r\u0001r"+
		"\u0003r\u0ca0\br\u0001r\u0003r\u0ca3\br\u0001s\u0001s\u0001s\u0001s\u0005"+
		"s\u0ca9\bs\ns\fs\u0cac\ts\u0001s\u0001s\u0001s\u0005s\u0cb1\bs\ns\fs\u0cb4"+
		"\ts\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0001t\u0003t\u0cbe"+
		"\bt\u0001u\u0001u\u0003u\u0cc2\bu\u0001u\u0001u\u0001u\u0001u\u0004u\u0cc8"+
		"\bu\u000bu\fu\u0cc9\u0004u\u0ccc\bu\u000bu\fu\u0ccd\u0001u\u0001u\u0004"+
		"u\u0cd2\bu\u000bu\fu\u0cd3\u0003u\u0cd6\bu\u0001u\u0001u\u0001u\u0001"+
		"v\u0001v\u0001v\u0001v\u0004v\u0cdf\bv\u000bv\fv\u0ce0\u0001v\u0001v\u0001"+
		"v\u0001v\u0004v\u0ce7\bv\u000bv\fv\u0ce8\u0005v\u0ceb\bv\nv\fv\u0cee\t"+
		"v\u0001v\u0001v\u0004v\u0cf2\bv\u000bv\fv\u0cf3\u0003v\u0cf6\bv\u0001"+
		"v\u0001v\u0001v\u0001w\u0001w\u0001w\u0001x\u0001x\u0001x\u0001y\u0001"+
		"y\u0001y\u0003y\u0d04\by\u0001y\u0001y\u0004y\u0d08\by\u000by\fy\u0d09"+
		"\u0001y\u0001y\u0001y\u0003y\u0d0f\by\u0001z\u0001z\u0001z\u0003z\u0d14"+
		"\bz\u0001z\u0001z\u0004z\u0d18\bz\u000bz\fz\u0d19\u0001z\u0001z\u0001"+
		"z\u0001z\u0001z\u0003z\u0d21\bz\u0001{\u0001{\u0001{\u0001|\u0001|\u0001"+
		"|\u0003|\u0d29\b|\u0001|\u0001|\u0001|\u0001|\u0004|\u0d2f\b|\u000b|\f"+
		"|\u0d30\u0001|\u0001|\u0001|\u0003|\u0d36\b|\u0001}\u0001}\u0001}\u0001"+
		"}\u0003}\u0d3c\b}\u0001~\u0001~\u0001~\u0001\u007f\u0001\u007f\u0001\u007f"+
		"\u0001\u007f\u0001\u007f\u0001\u007f\u0001\u0080\u0001\u0080\u0003\u0080"+
		"\u0d49\b\u0080\u0001\u0080\u0003\u0080\u0d4c\b\u0080\u0001\u0080\u0001"+
		"\u0080\u0001\u0080\u0001\u0080\u0001\u0080\u0005\u0080\u0d53\b\u0080\n"+
		"\u0080\f\u0080\u0d56\t\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001"+
		"\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0001\u0082\u0003\u0082\u0d60"+
		"\b\u0082\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001"+
		"\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084\u0001"+
		"\u0084\u0001\u0084\u0005\u0084\u0d6f\b\u0084\n\u0084\f\u0084\u0d72\t\u0084"+
		"\u0001\u0084\u0001\u0084\u0001\u0085\u0001\u0085\u0003\u0085\u0d78\b\u0085"+
		"\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0005\u0085\u0d7e\b\u0085"+
		"\n\u0085\f\u0085\u0d81\t\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001"+
		"\u0085\u0001\u0085\u0005\u0085\u0d88\b\u0085\n\u0085\f\u0085\u0d8b\t\u0085"+
		"\u0003\u0085\u0d8d\b\u0085\u0001\u0086\u0001\u0086\u0001\u0086\u0001\u0086"+
		"\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088"+
		"\u0003\u0088\u0d99\b\u0088\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a"+
		"\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c\u0003\u008c"+
		"\u0da4\b\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c"+
		"\u0001\u008c\u0003\u008c\u0dac\b\u008c\u0001\u008d\u0001\u008d\u0003\u008d"+
		"\u0db0\b\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0005\u008d"+
		"\u0db6\b\u008d\n\u008d\f\u008d\u0db9\t\u008d\u0003\u008d\u0dbb\b\u008d"+
		"\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+
		"\u0005\u008e\u0dc3\b\u008e\n\u008e\f\u008e\u0dc6\t\u008e\u0003\u008e\u0dc8"+
		"\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090\u0001"+
		"\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0003\u0090\u0dd3\b\u0090\u0001"+
		"\u0091\u0001\u0091\u0001\u0091\u0001\u0091\u0003\u0091\u0dd9\b\u0091\u0001"+
		"\u0092\u0001\u0092\u0001\u0092\u0005\u0092\u0dde\b\u0092\n\u0092\f\u0092"+
		"\u0de1\t\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0094"+
		"\u0001\u0094\u0001\u0094\u0003\u0094\u0dea\b\u0094\u0001\u0094\u0001\u0094"+
		"\u0003\u0094\u0dee\b\u0094\u0001\u0094\u0001\u0094\u0001\u0094\u0003\u0094"+
		"\u0df3\b\u0094\u0001\u0094\u0003\u0094\u0df6\b\u0094\u0001\u0095\u0003"+
		"\u0095\u0df9\b\u0095\u0001\u0095\u0003\u0095\u0dfc\b\u0095\u0001\u0096"+
		"\u0001\u0096\u0003\u0096\u0e00\b\u0096\u0001\u0096\u0003\u0096\u0e03\b"+
		"\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0096\u0005\u0096\u0e09"+
		"\b\u0096\n\u0096\f\u0096\u0e0c\t\u0096\u0001\u0096\u0003\u0096\u0e0f\b"+
		"\u0096\u0001\u0096\u0003\u0096\u0e12\b\u0096\u0001\u0097\u0001\u0097\u0001"+
		"\u0097\u0005\u0097\u0e17\b\u0097\n\u0097\f\u0097\u0e1a\t\u0097\u0001\u0098"+
		"\u0001\u0098\u0003\u0098\u0e1e\b\u0098\u0001\u0099\u0001\u0099\u0001\u0099"+
		"\u0001\u0099\u0001\u0099\u0003\u0099\u0e25\b\u0099\u0001\u0099\u0001\u0099"+
		"\u0001\u009a\u0003\u009a\u0e2a\b\u009a\u0001\u009a\u0001\u009a\u0003\u009a"+
		"\u0e2e\b\u009a\u0001\u009a\u0003\u009a\u0e31\b\u009a\u0001\u009a\u0001"+
		"\u009a\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001"+
		"\u009b\u0001\u009b\u0005\u009b\u0e3c\b\u009b\n\u009b\f\u009b\u0e3f\t\u009b"+
		"\u0001\u009c\u0001\u009c\u0001\u009c\u0003\u009c\u0e44\b\u009c\u0001\u009d"+
		"\u0001\u009d\u0001\u009d\u0001\u009d\u0005\u009d\u0e4a\b\u009d\n\u009d"+
		"\f\u009d\u0e4d\t\u009d\u0001\u009d\u0001\u009d\u0001\u009e\u0001\u009e"+
		"\u0003\u009e\u0e53\b\u009e\u0001\u009e\u0003\u009e\u0e56\b\u009e\u0001"+
		"\u009e\u0001\u009e\u0003\u009e\u0e5a\b\u009e\u0001\u009e\u0001\u009e\u0001"+
		"\u009e\u0003\u009e\u0e5f\b\u009e\u0001\u009f\u0001\u009f\u0001\u00a0\u0001"+
		"\u00a0\u0003\u00a0\u0e65\b\u00a0\u0001\u00a0\u0003\u00a0\u0e68\b\u00a0"+
		"\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0005\u00a0\u0e6e\b\u00a0"+
		"\n\u00a0\f\u00a0\u0e71\t\u00a0\u0001\u00a0\u0003\u00a0\u0e74\b\u00a0\u0001"+
		"\u00a0\u0003\u00a0\u0e77\b\u00a0\u0001\u00a1\u0003\u00a1\u0e7a\b\u00a1"+
		"\u0001\u00a1\u0001\u00a1\u0003\u00a1\u0e7e\b\u00a1\u0001\u00a1\u0003\u00a1"+
		"\u0e81\b\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0003\u00a2\u0e86\b"+
		"\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a2\u0003"+
		"\u00a2\u0e8d\b\u00a2\u0001\u00a2\u0003\u00a2\u0e90\b\u00a2\u0001\u00a2"+
		"\u0003\u00a2\u0e93\b\u00a2\u0001\u00a3\u0003\u00a3\u0e96\b\u00a3\u0001"+
		"\u00a3\u0003\u00a3\u0e99\b\u00a3\u0001\u00a4\u0001\u00a4\u0001\u00a4\u0001"+
		"\u00a4\u0001\u00a5\u0003\u00a5\u0ea0\b\u00a5\u0001\u00a5\u0001\u00a5\u0001"+
		"\u00a5\u0001\u00a5\u0005\u00a5\u0ea6\b\u00a5\n\u00a5\f\u00a5\u0ea9\t\u00a5"+
		"\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0005\u00a6\u0eaf\b\u00a6"+
		"\n\u00a6\f\u00a6\u0eb2\t\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001"+
		"\u00a6\u0003\u00a6\u0eb8\b\u00a6\u0001\u00a7\u0001\u00a7\u0001\u00a7\u0003"+
		"\u00a7\u0ebd\b\u00a7\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0001"+
		"\u00a9\u0001\u00a9\u0001\u00a9\u0003\u00a9\u0ec6\b\u00a9\u0001\u00a9\u0003"+
		"\u00a9\u0ec9\b\u00a9\u0001\u00a9\u0003\u00a9\u0ecc\b\u00a9\u0001\u00a9"+
		"\u0003\u00a9\u0ecf\b\u00a9\u0001\u00aa\u0003\u00aa\u0ed2\b\u00aa\u0001"+
		"\u00aa\u0003\u00aa\u0ed5\b\u00aa\u0001\u00aa\u0003\u00aa\u0ed8\b\u00aa"+
		"\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0003\u00ab\u0edd\b\u00ab\u0001\u00ab"+
		"\u0003\u00ab\u0ee0\b\u00ab\u0001\u00ab\u0003\u00ab\u0ee3\b\u00ab\u0001"+
		"\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0001"+
		"\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u0eee\b\u00ac\u0001\u00ad\u0001"+
		"\u00ad\u0003\u00ad\u0ef2\b\u00ad\u0001\u00ad\u0001\u00ad\u0003\u00ad\u0ef6"+
		"\b\u00ad\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001\u00ae\u0001"+
		"\u00ae\u0001\u00ae\u0003\u00ae\u0eff\b\u00ae\u0001\u00ae\u0001\u00ae\u0001"+
		"\u00ae\u0001\u00ae\u0003\u00ae\u0f05\b\u00ae\u0001\u00af\u0003\u00af\u0f08"+
		"\b\u00af\u0001\u00af\u0001\u00af\u0003\u00af\u0f0c\b\u00af\u0001\u00af"+
		"\u0003\u00af\u0f0f\b\u00af\u0001\u00af\u0003\u00af\u0f12\b\u00af\u0001"+
		"\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0001\u00b0\u0003\u00b0\u0f19"+
		"\b\u00b0\u0001\u00b0\u0001\u00b0\u0005\u00b0\u0f1d\b\u00b0\n\u00b0\f\u00b0"+
		"\u0f20\t\u00b0\u0001\u00b1\u0001\u00b1\u0003\u00b1\u0f24\b\u00b1\u0001"+
		"\u00b1\u0001\u00b1\u0003\u00b1\u0f28\b\u00b1\u0001\u00b2\u0001\u00b2\u0001"+
		"\u00b2\u0001\u00b2\u0003\u00b2\u0f2e\b\u00b2\u0003\u00b2\u0f30\b\u00b2"+
		"\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0003\u00b3"+
		"\u0f37\b\u00b3\u0001\u00b4\u0001\u00b4\u0005\u00b4\u0f3b\b\u00b4\n\u00b4"+
		"\f\u00b4\u0f3e\t\u00b4\u0001\u00b4\u0001\u00b4\u0003\u00b4\u0f42\b\u00b4"+
		"\u0001\u00b4\u0003\u00b4\u0f45\b\u00b4\u0001\u00b4\u0003\u00b4\u0f48\b"+
		"\u00b4\u0001\u00b4\u0003\u00b4\u0f4b\b\u00b4\u0001\u00b4\u0003\u00b4\u0f4e"+
		"\b\u00b4\u0001\u00b4\u0003\u00b4\u0f51\b\u00b4\u0001\u00b5\u0001\u00b5"+
		"\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0001\u00b5\u0005\u00b5\u0f59\b\u00b5"+
		"\n\u00b5\f\u00b5\u0f5c\t\u00b5\u0003\u00b5\u0f5e\b\u00b5\u0001\u00b5\u0003"+
		"\u00b5\u0f61\b\u00b5\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0005"+
		"\u00b6\u0f67\b\u00b6\n\u00b6\f\u00b6\u0f6a\t\u00b6\u0001\u00b7\u0001\u00b7"+
		"\u0001\u00b7\u0001\u00b7\u0003\u00b7\u0f70\b\u00b7\u0001\u00b8\u0001\u00b8"+
		"\u0001\u00b8\u0001\u00b8\u0003\u00b8\u0f76\b\u00b8\u0001\u00b8\u0003\u00b8"+
		"\u0f79\b\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9"+
		"\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0003\u00b9"+
		"\u0f85\b\u00b9\u0001\u00b9\u0003\u00b9\u0f88\b\u00b9\u0001\u00b9\u0003"+
		"\u00b9\u0f8b\b\u00b9\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba\u0001"+
		"\u00ba\u0003\u00ba\u0f92\b\u00ba\u0001\u00ba\u0003\u00ba\u0f95\b\u00ba"+
		"\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0001\u00bc\u0001\u00bc"+
		"\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0fa1\b\u00bc"+
		"\u0001\u00bd\u0001\u00bd\u0003\u00bd\u0fa5\b\u00bd\u0001\u00be\u0001\u00be"+
		"\u0001\u00be\u0003\u00be\u0faa\b\u00be\u0001\u00be\u0003\u00be\u0fad\b"+
		"\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0003\u00be\u0fb2\b\u00be\u0001"+
		"\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0003\u00be\u0fb8\b\u00be\u0001"+
		"\u00be\u0001\u00be\u0001\u00be\u0003\u00be\u0fbd\b\u00be\u0001\u00be\u0001"+
		"\u00be\u0004\u00be\u0fc1\b\u00be\u000b\u00be\f\u00be\u0fc2\u0003\u00be"+
		"\u0fc5\b\u00be\u0001\u00be\u0001\u00be\u0004\u00be\u0fc9\b\u00be\u000b"+
		"\u00be\f\u00be\u0fca\u0003\u00be\u0fcd\b\u00be\u0001\u00be\u0001\u00be"+
		"\u0001\u00be\u0001\u00be\u0003\u00be\u0fd3\b\u00be\u0001\u00be\u0003\u00be"+
		"\u0fd6\b\u00be\u0001\u00be\u0003\u00be\u0fd9\b\u00be\u0001\u00bf\u0001"+
		"\u00bf\u0001\u00bf\u0003\u00bf\u0fde\b\u00bf\u0001\u00bf\u0003\u00bf\u0fe1"+
		"\b\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0fe6\b\u00bf"+
		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+
		"\u0003\u00bf\u0fee\b\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00bf"+
		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0ff7\b\u00bf\u0001\u00bf"+
		"\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0003\u00bf\u0ffd\b\u00bf\u0001\u00bf"+
		"\u0003\u00bf\u1000\b\u00bf\u0001\u00bf\u0003\u00bf\u1003\b\u00bf\u0001"+
		"\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001"+
		"\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0005\u00c2\u1010"+
		"\b\u00c2\n\u00c2\f\u00c2\u1013\t\u00c2\u0001\u00c3\u0001\u00c3\u0003\u00c3"+
		"\u1017\b\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0005\u00c3\u101c\b"+
		"\u00c3\n\u00c3\f\u00c3\u101f\t\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c4\u0003\u00c4\u1026\b\u00c4\u0001\u00c4\u0001\u00c4"+
		"\u0001\u00c4\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0001\u00c5"+
		"\u0001\u00c5\u0001\u00c5\u0001\u00c5\u0003\u00c5\u1033\b\u00c5\u0001\u00c6"+
		"\u0001\u00c6\u0001\u00c7\u0001\u00c7\u0003\u00c7\u1039\b\u00c7\u0001\u00c7"+
		"\u0001\u00c7\u0005\u00c7\u103d\b\u00c7\n\u00c7\f\u00c7\u1040\t\u00c7\u0001"+
		"\u00c8\u0001\u00c8\u0003\u00c8\u1044\b\u00c8\u0001\u00c8\u0003\u00c8\u1047"+
		"\b\u00c8\u0001\u00c8\u0003\u00c8\u104a\b\u00c8\u0001\u00c9\u0001\u00c9"+
		"\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u1051\b\u00ca\u0001\u00ca"+
		"\u0001\u00ca\u0001\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003\u00cb"+
		"\u1059\b\u00cb\u0001\u00cc\u0001\u00cc\u0001\u00cc\u0005\u00cc\u105e\b"+
		"\u00cc\n\u00cc\f\u00cc\u1061\t\u00cc\u0001\u00cd\u0001\u00cd\u0005\u00cd"+
		"\u1065\b\u00cd\n\u00cd\f\u00cd\u1068\t\u00cd\u0001\u00ce\u0001\u00ce\u0001"+
		"\u00ce\u0001\u00ce\u0001\u00ce\u0001\u00ce\u0003\u00ce\u1070\b\u00ce\u0001"+
		"\u00ce\u0005\u00ce\u1073\b\u00ce\n\u00ce\f\u00ce\u1076\t\u00ce\u0001\u00cf"+
		"\u0001\u00cf\u0003\u00cf\u107a\b\u00cf\u0001\u00cf\u0003\u00cf\u107d\b"+
		"\u00cf\u0001\u00cf\u0003\u00cf\u1080\b\u00cf\u0001\u00cf\u0003\u00cf\u1083"+
		"\b\u00cf\u0001\u00cf\u0001\u00cf\u0003\u00cf\u1087\b\u00cf\u0001\u00cf"+
		"\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0003\u00cf\u108e\b\u00cf"+
		"\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0001\u00cf\u0003\u00cf\u1094\b\u00cf"+
		"\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0005\u00d0"+
		"\u109b\b\u00d0\n\u00d0\f\u00d0\u109e\t\u00d0\u0001\u00d0\u0001\u00d0\u0001"+
		"\u00d1\u0001\u00d1\u0001\u00d1\u0005\u00d1\u10a5\b\u00d1\n\u00d1\f\u00d1"+
		"\u10a8\t\u00d1\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2"+
		"\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0003\u00d2\u10b2\b\u00d2\u0003\u00d2"+
		"\u10b4\b\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0001\u00d2\u0005\u00d2"+
		"\u10ba\b\u00d2\n\u00d2\f\u00d2\u10bd\t\u00d2\u0001\u00d2\u0001\u00d2\u0001"+
		"\u00d3\u0001\u00d3\u0001\u00d3\u0003\u00d3\u10c4\b\u00d3\u0001\u00d3\u0001"+
		"\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0001\u00d3\u0003"+
		"\u00d3\u10cd\b\u00d3\u0001\u00d4\u0003\u00d4\u10d0\b\u00d4\u0001\u00d4"+
		"\u0001\u00d4\u0003\u00d4\u10d4\b\u00d4\u0001\u00d5\u0001\u00d5\u0003\u00d5"+
		"\u10d8\b\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d6\u0001\u00d6\u0003\u00d6"+
		"\u10de\b\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6"+
		"\u10e4\b\u00d6\u0001\u00d6\u0003\u00d6\u10e7\b\u00d6\u0001\u00d7\u0001"+
		"\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0001\u00d7\u0003"+
		"\u00d7\u10f0\b\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d9\u0001"+
		"\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0005\u00d9\u10fa\b\u00d9\n"+
		"\u00d9\f\u00d9\u10fd\t\u00d9\u0001\u00d9\u0001\u00d9\u0003\u00d9\u1101"+
		"\b\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001\u00db\u0001\u00db\u0001"+
		"\u00db\u0001\u00db\u0003\u00db\u110a\b\u00db\u0001\u00db\u0001\u00db\u0001"+
		"\u00db\u0001\u00db\u0001\u00db\u0003\u00db\u1111\b\u00db\u0001\u00dc\u0001"+
		"\u00dc\u0003\u00dc\u1115\b\u00dc\u0001\u00dd\u0001\u00dd\u0003\u00dd\u1119"+
		"\b\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0005\u00de\u111f"+
		"\b\u00de\n\u00de\f\u00de\u1122\t\u00de\u0001\u00df\u0001\u00df\u0001\u00df"+
		"\u0001\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e1\u0001\u00e1\u0001\u00e1"+
		"\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0003\u00e1\u1130\b\u00e1\u0001\u00e2"+
		"\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0003\u00e2\u1136\b\u00e2\u0001\u00e2"+
		"\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0003\u00e2"+
		"\u113e\b\u00e2\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0005\u00e3"+
		"\u1144\b\u00e3\n\u00e3\f\u00e3\u1147\t\u00e3\u0001\u00e3\u0001\u00e3\u0001"+
		"\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001"+
		"\u00e3\u0003\u00e3\u1152\b\u00e3\u0001\u00e3\u0001\u00e3\u0004\u00e3\u1156"+
		"\b\u00e3\u000b\u00e3\f\u00e3\u1157\u0003\u00e3\u115a\b\u00e3\u0001\u00e3"+
		"\u0001\u00e3\u0004\u00e3\u115e\b\u00e3\u000b\u00e3\f\u00e3\u115f\u0003"+
		"\u00e3\u1162\b\u00e3\u0003\u00e3\u1164\b\u00e3\u0001\u00e4\u0001\u00e4"+
		"\u0001\u00e4\u0003\u00e4\u1169\b\u00e4\u0001\u00e4\u0003\u00e4\u116c\b"+
		"\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0003\u00e4\u1172"+
		"\b\u00e4\u0001\u00e5\u0004\u00e5\u1175\b\u00e5\u000b\u00e5\f\u00e5\u1176"+
		"\u0001\u00e6\u0001\u00e6\u0001\u00e7\u0001\u00e7\u0001\u00e7\u0003\u00e7"+
		"\u117e\b\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8\u0001\u00e9\u0001\u00e9"+
		"\u0003\u00e9\u1185\b\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0005\u00ea"+
		"\u118a\b\u00ea\n\u00ea\f\u00ea\u118d\t\u00ea\u0001\u00eb\u0001\u00eb\u0001"+
		"\u00ec\u0001\u00ec\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001\u00ed\u0001"+
		"\u00ed\u0001\u00ed\u0001\u00ed\u0003\u00ed\u119a\b\u00ed\u0001\u00ee\u0001"+
		"\u00ee\u0001\u00ef\u0003\u00ef\u119f\b\u00ef\u0001\u00ef\u0001\u00ef\u0003"+
		"\u00ef\u11a3\b\u00ef\u0001\u00f0\u0003\u00f0\u11a6\b\u00f0\u0001\u00f0"+
		"\u0001\u00f0\u0001\u00f1\u0001\u00f1\u0001\u00f1\u0001\u00f2\u0003\u00f2"+
		"\u11ae\b\u00f2\u0001\u00f2\u0001\u00f2\u0003\u00f2\u11b2\b\u00f2\u0001"+
		"\u00f3\u0003\u00f3\u11b5\b\u00f3\u0001\u00f3\u0001\u00f3\u0003\u00f3\u11b9"+
		"\b\u00f3\u0001\u00f4\u0001\u00f4\u0001\u00f5\u0001\u00f5\u0001\u00f6\u0001"+
		"\u00f6\u0003\u00f6\u11c1\b\u00f6\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001"+
		"\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0001\u00f7\u0003"+
		"\u00f7\u11cc\b\u00f7\u0001\u00f8\u0001\u00f8\u0001\u00f9\u0001\u00f9\u0001"+
		"\u00fa\u0001\u00fa\u0001\u00fb\u0001\u00fb\u0001\u00fc\u0001\u00fc\u0001"+
		"\u00fd\u0001\u00fd\u0003\u00fd\u11da\b\u00fd\u0001\u00fe\u0001\u00fe\u0003"+
		"\u00fe\u11de\b\u00fe\u0001\u00ff\u0001\u00ff\u0001\u00ff\u0003\u00ff\u11e3"+
		"\b\u00ff\u0001\u0100\u0001\u0100\u0001\u0100\u0003\u0100\u11e8\b\u0100"+
		"\u0001\u0100\u0001\u0100\u0001\u0100\u0003\u0100\u11ed\b\u0100\u0001\u0101"+
		"\u0001\u0101\u0001\u0101\u0001\u0101\u0001\u0101\u0003\u0101\u11f4\b\u0101"+
		"\u0001\u0101\u0001\u0101\u0001\u0102\u0001\u0102\u0001\u0103\u0001\u0103"+
		"\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103\u0001\u0103"+
		"\u0003\u0103\u1202\b\u0103\u0001\u0104\u0001\u0104\u0001\u0104\u0001\u0104"+
		"\u0001\u0104\u0001\u0104\u0001\u0104\u0003\u0104\u120b\b\u0104\u0001\u0105"+
		"\u0001\u0105\u0001\u0105\u0003\u0105\u1210\b\u0105\u0001\u0105\u0001\u0105"+
		"\u0001\u0105\u0003\u0105\u1215\b\u0105\u0003\u0105\u1217\b\u0105\u0001"+
		"\u0106\u0001\u0106\u0001\u0106\u0001\u0106\u0001\u0107\u0001\u0107\u0001"+
		"\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0001\u0107\u0003\u0107\u1224"+
		"\b\u0107\u0001\u0108\u0001\u0108\u0001\u0108\u0001\u0109\u0001\u0109\u0001"+
		"\u010a\u0001\u010a\u0001\u010a\u0005\u010a\u122e\b\u010a\n\u010a\f\u010a"+
		"\u1231\t\u010a\u0001\u010b\u0001\u010b\u0001\u010b\u0003\u010b\u1236\b"+
		"\u010b\u0001\u010c\u0001\u010c\u0001\u010c\u0005\u010c\u123b\b\u010c\n"+
		"\u010c\f\u010c\u123e\t\u010c\u0001\u010d\u0001\u010d\u0001\u010d\u0001"+
		"\u010d\u0001\u010d\u0001\u010d\u0001\u010e\u0001\u010e\u0001\u010e\u0003"+
		"\u010e\u1249\b\u010e\u0001\u010e\u0001\u010e\u0001\u010f\u0001\u010f\u0001"+
		"\u0110\u0001\u0110\u0001\u0111\u0001\u0111\u0001\u0112\u0001\u0112\u0001"+
		"\u0112\u0001\u0112\u0004\u0112\u1257\b\u0112\u000b\u0112\f\u0112\u1258"+
		"\u0003\u0112\u125b\b\u0112\u0001\u0113\u0001\u0113\u0001\u0113\u0003\u0113"+
		"\u1260\b\u0113\u0001\u0114\u0001\u0114\u0001\u0114\u0001\u0114\u0003\u0114"+
		"\u1266\b\u0114\u0003\u0114\u1268\b\u0114\u0001\u0115\u0001\u0115\u0001"+
		"\u0115\u0003\u0115\u126d\b\u0115\u0001\u0115\u0001\u0115\u0001\u0116\u0001"+
		"\u0116\u0001\u0117\u0001\u0117\u0001\u0118\u0001\u0118\u0001\u0118\u0003"+
		"\u0118\u1278\b\u0118\u0001\u0118\u0001\u0118\u0001\u0119\u0001\u0119\u0001"+
		"\u0119\u0003\u0119\u127f\b\u0119\u0001\u0119\u0001\u0119\u0001\u011a\u0001"+
		"\u011a\u0001\u011a\u0003\u011a\u1286\b\u011a\u0001\u011a\u0001\u011a\u0001"+
		"\u011b\u0001\u011b\u0001\u011c\u0001\u011c\u0001\u011d\u0001\u011d\u0001"+
		"\u011e\u0001\u011e\u0001\u011e\u0005\u011e\u1293\b\u011e\n\u011e\f\u011e"+
		"\u1296\t\u011e\u0001\u011f\u0001\u011f\u0001\u011f\u0005\u011f\u129b\b"+
		"\u011f\n\u011f\f\u011f\u129e\t\u011f\u0001\u0120\u0001\u0120\u0001\u0120"+
		"\u0005\u0120\u12a3\b\u0120\n\u0120\f\u0120\u12a6\t\u0120\u0001\u0121\u0001"+
		"\u0121\u0001\u0122\u0001\u0122\u0001\u0123\u0001\u0123\u0001\u0124\u0001"+
		"\u0124\u0001\u0125\u0001\u0125\u0001\u0126\u0001\u0126\u0001\u0127\u0001"+
		"\u0127\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001\u0128\u0001"+
		"\u0128\u0001\u0129\u0001\u0129\u0001\u012a\u0001\u012a\u0001\u012a\u0003"+
		"\u012a\u12c1\b\u012a\u0001\u012b\u0001\u012b\u0001\u012c\u0001\u012c\u0001"+
		"\u012c\u0003\u012c\u12c8\b\u012c\u0001\u012d\u0001\u012d\u0003\u012d\u12cc"+
		"\b\u012d\u0001\u012e\u0001\u012e\u0001\u012f\u0001\u012f\u0001\u012f\u0003"+
		"\u012f\u12d3\b\u012f\u0001\u0130\u0001\u0130\u0001\u0131\u0001\u0131\u0001"+
		"\u0132\u0001\u0132\u0003\u0132\u12db\b\u0132\u0001\u0133\u0001\u0133\u0001"+
		"\u0134\u0001\u0134\u0001\u0134\u0005\u0134\u12e2\b\u0134\n\u0134\f\u0134"+
		"\u12e5\t\u0134\u0001\u0135\u0001\u0135\u0003\u0135\u12e9\b\u0135\u0001"+
		"\u0136\u0001\u0136\u0001\u0137\u0001\u0137\u0001\u0137\u0001\u0138\u0001"+
		"\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0003\u0138\u12f5\b\u0138\u0001"+
		"\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001"+
		"\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0001\u0138\u0005\u0138\u1302"+
		"\b\u0138\n\u0138\f\u0138\u1305\t\u0138\u0001\u0139\u0001\u0139\u0001\u013a"+
		"\u0001\u013a\u0001\u013b\u0001\u013b\u0001\u013c\u0001\u013c\u0001\u013c"+
		"\u0001\u013c\u0001\u013c\u0001\u013c\u0003\u013c\u1313\b\u013c\u0001\u013c"+
		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c"+
		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c"+
		"\u0001\u013c\u0001\u013c\u0001\u013c\u0001\u013c\u0005\u013c\u1326\b\u013c"+
		"\n\u013c\f\u013c\u1329\t\u013c\u0001\u013d\u0001\u013d\u0001\u013e\u0001"+
		"\u013e\u0001\u013f\u0001\u013f\u0003\u013f\u1331\b\u013f\u0001\u013f\u0001"+
		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u1338\b\u013f\u0001"+
		"\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0005\u013f\u133f"+
		"\b\u013f\n\u013f\f\u013f\u1342\t\u013f\u0001\u013f\u0001\u013f\u0001\u013f"+
		"\u0001\u013f\u0003\u013f\u1348\b\u013f\u0001\u013f\u0001\u013f\u0001\u013f"+
		"\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f\u0001\u013f"+
		"\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u1356\b\u013f\u0001\u013f"+
		"\u0001\u013f\u0001\u013f\u0001\u013f\u0003\u013f\u135c\b\u013f\u0001\u013f"+
		"\u0001\u013f\u0003\u013f\u1360\b\u013f\u0001\u013f\u0001\u013f\u0001\u013f"+
		"\u0001\u013f\u0003\u013f\u1366\b\u013f\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140\u0001\u0140"+
		"\u0005\u0140\u1395\b\u0140\n\u0140\f\u0140\u1398\t\u0140\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0003\u0141\u13a5\b\u0141\u0001"+
		"\u0141\u0001\u0141\u0003\u0141\u13a9\b\u0141\u0001\u0141\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0005\u0141\u13af\b\u0141\n\u0141\f\u0141\u13b2\t\u0141"+
		"\u0001\u0141\u0001\u0141\u0001\u0141\u0003\u0141\u13b7\b\u0141\u0001\u0141"+
		"\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+
		"\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0001\u0141"+
		"\u0003\u0141\u13c6\b\u0141\u0001\u0141\u0003\u0141\u13c9\b\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0003\u0141\u13ce\b\u0141\u0001\u0141\u0001"+
		"\u0141\u0001\u0141\u0001\u0141\u0001\u0141\u0005\u0141\u13d5\b\u0141\n"+
		"\u0141\f\u0141\u13d8\t\u0141\u0001\u0142\u0001\u0142\u0001\u0143\u0001"+
		"\u0143\u0001\u0143\u0001\u0143\u0003\u0143\u13e0\b\u0143\u0001\u0143\u0001"+
		"\u0143\u0001\u0143\u0001\u0144\u0001\u0144\u0001\u0144\u0003\u0144\u13e8"+
		"\b\u0144\u0001\u0144\u0001\u0144\u0003\u0144\u13ec\b\u0144\u0001\u0145"+
		"\u0001\u0145\u0001\u0145\u0005\u0145\u13f1\b\u0145\n\u0145\f\u0145\u13f4"+
		"\t\u0145\u0001\u0146\u0001\u0146\u0001\u0146\u0001\u0146\u0003\u0146\u13fa"+
		"\b\u0146\u0001\u0147\u0001\u0147\u0001\u0147\u0003\u0147\u13ff\b\u0147"+
		"\u0001\u0147\u0001\u0147\u0001\u0147\u0005\u0147\u1404\b\u0147\n\u0147"+
		"\f\u0147\u1407\t\u0147\u0001\u0147\u0003\u0147\u140a\b\u0147\u0001\u0147"+
		"\u0003\u0147\u140d\b\u0147\u0001\u0147\u0001\u0147\u0003\u0147\u1411\b"+
		"\u0147\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001\u0148\u0001"+
		"\u0148\u0001\u0148\u0003\u0148\u141a\b\u0148\u0001\u0148\u0001\u0148\u0001"+
		"\u0148\u0005\u0148\u141f\b\u0148\n\u0148\f\u0148\u1422\t\u0148\u0003\u0148"+
		"\u1424\b\u0148\u0001\u0148\u0001\u0148\u0003\u0148\u1428\b\u0148\u0001"+
		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
		"\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001\u0149\u0001"+
		"\u0149\u0001\u0149\u0003\u0149\u144a\b\u0149\u0001\u014a\u0001\u014a\u0001"+
		"\u014b\u0001\u014b\u0001\u014c\u0001\u014c\u0001\u014c\u0003\u014c\u1453"+
		"\b\u014c\u0001\u014d\u0001\u014d\u0003\u014d\u1457\b\u014d\u0001\u014d"+
		"\u0001\u014d\u0001\u014d\u0001\u014d\u0001\u014d\u0005\u014d\u145e\b\u014d"+
		"\n\u014d\f\u014d\u1461\t\u014d\u0003\u014d\u1463\b\u014d\u0001\u014d\u0003"+
		"\u014d\u1466\b\u014d\u0001\u014d\u0003\u014d\u1469\b\u014d\u0001\u014d"+
		"\u0001\u014d\u0001\u014e\u0001\u014e\u0001\u014e\u0003\u014e\u1470\b\u014e"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f\u0001\u014f"+
		"\u0003\u014f\u147e\b\u014f\u0001\u0150\u0001\u0150\u0001\u0151\u0001\u0151"+
		"\u0001\u0151\u0001\u0151\u0001\u0151\u0001\u0152\u0001\u0152\u0001\u0152"+
		"\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152\u0001\u0152"+
		"\u0001\u0152\u0001\u0152\u0001\u0152\u0003\u0152\u1493\b\u0152\u0001\u0153"+
		"\u0001\u0153\u0001\u0153\u0003\u0153\u1498\b\u0153\u0001\u0154\u0001\u0154"+
		"\u0001\u0154\u0003\u0154\u149d\b\u0154\u0001\u0154\u0001\u0154\u0001\u0154"+
		"\u0005\u0154\u14a2\b\u0154\n\u0154\f\u0154\u14a5\t\u0154\u0001\u0154\u0003"+
		"\u0154\u14a8\b\u0154\u0001\u0154\u0003\u0154\u14ab\b\u0154\u0001\u0154"+
		"\u0001\u0154\u0003\u0154\u14af\b\u0154\u0001\u0154\u0001\u0154\u0001\u0155"+
		"\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155"+
		"\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0003\u0155"+
		"\u14bf\b\u0155\u0001\u0155\u0001\u0155\u0003\u0155\u14c3\b\u0155\u0001"+
		"\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001"+
		"\u0155\u0003\u0155\u14cc\b\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001"+
		"\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001\u0155\u0001"+
		"\u0155\u0003\u0155\u14d8\b\u0155\u0001\u0155\u0003\u0155\u14db\b\u0155"+
		"\u0001\u0155\u0001\u0155\u0003\u0155\u14df\b\u0155\u0001\u0156\u0001\u0156"+
		"\u0001\u0156\u0003\u0156\u14e4\b\u0156\u0001\u0157\u0001\u0157\u0001\u0157"+
		"\u0001\u0157\u0003\u0157\u14ea\b\u0157\u0001\u0158\u0001\u0158\u0001\u0158"+
		"\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159\u0001\u0159"+
		"\u0001\u0159\u0003\u0159\u14f6\b\u0159\u0001\u015a\u0001\u015a\u0001\u015b"+
		"\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b\u0001\u015b"+
		"\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+
		"\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c\u0001\u015c"+
		"\u0001\u015c\u0001\u015c\u0003\u015c\u150f\b\u015c\u0001\u015d\u0001\u015d"+
		"\u0003\u015d\u1513\b\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u1517\b"+
		"\u015d\u0001\u015d\u0003\u015d\u151a\b\u015d\u0001\u015d\u0001\u015d\u0003"+
		"\u015d\u151e\b\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u1522\b\u015d"+
		"\u0001\u015d\u0001\u015d\u0003\u015d\u1526\b\u015d\u0001\u015d\u0001\u015d"+
		"\u0001\u015d\u0003\u015d\u152b\b\u015d\u0001\u015d\u0001\u015d\u0003\u015d"+
		"\u152f\b\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0003\u015d\u1534\b"+
		"\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001\u015d\u0001"+
		"\u015d\u0003\u015d\u153c\b\u015d\u0003\u015d\u153e\b\u015d\u0001\u015e"+
		"\u0001\u015e\u0001\u015e\u0003\u015e\u1543\b\u015e\u0001\u015f\u0001\u015f"+
		"\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u015f\u0001\u0160"+
		"\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+
		"\u0003\u0160\u1553\b\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160"+
		"\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0001\u0160\u0003\u0160"+
		"\u155e\b\u0160\u0001\u0160\u0001\u0160\u0003\u0160\u1562\b\u0160\u0001"+
		"\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001\u0161\u0001"+
		"\u0161\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0001\u0162\u0005"+
		"\u0162\u1570\b\u0162\n\u0162\f\u0162\u1573\t\u0162\u0001\u0162\u0001\u0162"+
		"\u0003\u0162\u1577\b\u0162\u0001\u0162\u0001\u0162\u0001\u0163\u0001\u0163"+
		"\u0001\u0163\u0001\u0163\u0003\u0163\u157f\b\u0163\u0001\u0163\u0003\u0163"+
		"\u1582\b\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163\u0001\u0163"+
		"\u0001\u0163\u0001\u0163\u0001\u0163\u0003\u0163\u158c\b\u0163\u0001\u0163"+
		"\u0001\u0163\u0001\u0163\u0003\u0163\u1591\b\u0163\u0001\u0164\u0001\u0164"+
		"\u0001\u0164\u0001\u0164\u0001\u0164\u0001\u0165\u0001\u0165\u0001\u0165"+
		"\u0001\u0165\u0001\u0165\u0003\u0165\u159d\b\u0165\u0001\u0165\u0003\u0165"+
		"\u15a0\b\u0165\u0001\u0165\u0001\u0165\u0001\u0166\u0001\u0166\u0001\u0166"+
		"\u0001\u0166\u0005\u0166\u15a8\b\u0166\n\u0166\f\u0166\u15ab\t\u0166\u0001"+
		"\u0166\u0001\u0166\u0001\u0166\u0003\u0166\u15b0\b\u0166\u0001\u0167\u0001"+
		"\u0167\u0003\u0167\u15b4\b\u0167\u0001\u0167\u0003\u0167\u15b7\b\u0167"+
		"\u0001\u0168\u0001\u0168\u0003\u0168\u15bb\b\u0168\u0001\u0169\u0001\u0169"+
		"\u0001\u0169\u0001\u0169\u0003\u0169\u15c1\b\u0169\u0001\u0169\u0003\u0169"+
		"\u15c4\b\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0001\u0169\u0003\u0169"+
		"\u15ca\b\u0169\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a\u0001\u016a"+
		"\u0005\u016a\u15d1\b\u016a\n\u016a\f\u016a\u15d4\t\u016a\u0001\u016a\u0003"+
		"\u016a\u15d7\b\u016a\u0001\u016a\u0001\u016a\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001"+
		"\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0001\u016b\u0003\u016b\u15fa"+
		"\b\u016b\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+
		"\u016c\u0003\u016c\u1602\b\u016c\u0001\u016c\u0001\u016c\u0001\u016c\u0001"+
		"\u016c\u0003\u016c\u1608\b\u016c\u0001\u016c\u0001\u016c\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0001"+
		"\u016d\u0001\u016d\u0001\u016d\u0001\u016d\u0003\u016d\u161d\b\u016d\u0001"+
		"\u016e\u0001\u016e\u0003\u016e\u1621\b\u016e\u0001\u016e\u0004\u016e\u1624"+
		"\b\u016e\u000b\u016e\f\u016e\u1625\u0001\u016e\u0003\u016e\u1629\b\u016e"+
		"\u0001\u016e\u0001\u016e\u0001\u016f\u0001\u016f\u0001\u0170\u0001\u0170"+
		"\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0171\u0001\u0172"+
		"\u0001\u0172\u0001\u0172\u0001\u0173\u0001\u0173\u0001\u0173\u0001\u0174"+
		"\u0001\u0174\u0001\u0174\u0001\u0175\u0001\u0175\u0001\u0176\u0001\u0176"+
		"\u0001\u0176\u0001\u0176\u0001\u0176\u0005\u0176\u1646\b\u0176\n\u0176"+
		"\f\u0176\u1649\t\u0176\u0001\u0177\u0001\u0177\u0003\u0177\u164d\b\u0177"+
		"\u0001\u0177\u0003\u0177\u1650\b\u0177\u0001\u0178\u0001\u0178\u0003\u0178"+
		"\u1654\b\u0178\u0001\u0178\u0003\u0178\u1657\b\u0178\u0001\u0178\u0001"+
		"\u0178\u0001\u0178\u0003\u0178\u165c\b\u0178\u0003\u0178\u165e\b\u0178"+
		"\u0001\u0178\u0003\u0178\u1661\b\u0178\u0001\u0178\u0003\u0178\u1664\b"+
		"\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u1669\b\u0178\u0001"+
		"\u0178\u0003\u0178\u166c\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u1670"+
		"\b\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u1675\b\u0178"+
		"\u0001\u0178\u0003\u0178\u1678\b\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+
		"\u0003\u0178\u167d\b\u0178\u0001\u0178\u0003\u0178\u1680\b\u0178\u0001"+
		"\u0178\u0003\u0178\u1683\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u1687"+
		"\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u168b\b\u0178\u0001\u0178"+
		"\u0001\u0178\u0001\u0178\u0003\u0178\u1690\b\u0178\u0001\u0178\u0001\u0178"+
		"\u0003\u0178\u1694\b\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+
		"\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178"+
		"\u0003\u0178\u16a0\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16a4\b"+
		"\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16a8\b\u0178\u0001\u0178\u0001"+
		"\u0178\u0003\u0178\u16ac\b\u0178\u0001\u0178\u0003\u0178\u16af\b\u0178"+
		"\u0001\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16b4\b\u0178\u0001\u0178"+
		"\u0001\u0178\u0003\u0178\u16b8\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178"+
		"\u16bc\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16c0\b\u0178\u0001"+
		"\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16c5\b\u0178\u0001\u0178\u0001"+
		"\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0003"+
		"\u0178\u16ce\b\u0178\u0001\u0178\u0003\u0178\u16d1\b\u0178\u0001\u0178"+
		"\u0001\u0178\u0003\u0178\u16d5\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178"+
		"\u16d9\b\u0178\u0001\u0178\u0003\u0178\u16dc\b\u0178\u0001\u0178\u0001"+
		"\u0178\u0003\u0178\u16e0\b\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16e4"+
		"\b\u0178\u0001\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16e9\b\u0178"+
		"\u0001\u0178\u0001\u0178\u0001\u0178\u0003\u0178\u16ee\b\u0178\u0001\u0178"+
		"\u0003\u0178\u16f1\b\u0178\u0001\u0179\u0001\u0179\u0001\u0179\u0001\u0179"+
		"\u0005\u0179\u16f7\b\u0179\n\u0179\f\u0179\u16fa\t\u0179\u0001\u0179\u0001"+
		"\u0179\u0001\u017a\u0001\u017a\u0001\u017a\u0003\u017a\u1701\b\u017a\u0001"+
		"\u017b\u0001\u017b\u0003\u017b\u1705\b\u017b\u0001\u017c\u0004\u017c\u1708"+
		"\b\u017c\u000b\u017c\f\u017c\u1709\u0001\u017d\u0001\u017d\u0001\u017d"+
		"\u0001\u017d\u0001\u017d\u0001\u017d\u0001\u017e\u0001\u017e\u0001\u017e"+
		"\u0001\u017e\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f\u0001\u017f"+
		"\u0001\u017f\u0003\u017f\u171c\b\u017f\u0001\u017f\u0001\u017f\u0001\u017f"+
		"\u0001\u017f\u0003\u017f\u1722\b\u017f\u0003\u017f\u1724\b\u017f\u0001"+
		"\u0180\u0001\u0180\u0003\u0180\u1728\b\u0180\u0001\u0180\u0001\u0180\u0003"+
		"\u0180\u172c\b\u0180\u0001\u0181\u0001\u0181\u0003\u0181\u1730\b\u0181"+
		"\u0001\u0181\u0001\u0181\u0003\u0181\u1734\b\u0181\u0001\u0182\u0001\u0182"+
		"\u0001\u0182\u0003\u0182\u1739\b\u0182\u0001\u0183\u0003\u0183\u173c\b"+
		"\u0183\u0001\u0183\u0001\u0183\u0003\u0183\u1740\b\u0183\u0001\u0183\u0001"+
		"\u0183\u0001\u0184\u0003\u0184\u1745\b\u0184\u0001\u0184\u0001\u0184\u0003"+
		"\u0184\u1749\b\u0184\u0001\u0184\u0001\u0184\u0001\u0185\u0003\u0185\u174e"+
		"\b\u0185\u0001\u0185\u0001\u0185\u0003\u0185\u1752\b\u0185\u0001\u0185"+
		"\u0001\u0185\u0001\u0186\u0001\u0186\u0001\u0186\u0003\u0186\u1759\b\u0186"+
		"\u0001\u0186\u0003\u0186\u175c\b\u0186\u0001\u0187\u0001\u0187\u0001\u0188"+
		"\u0001\u0188\u0001\u0189\u0001\u0189\u0001\u018a\u0001\u018a\u0001\u018b"+
		"\u0001\u018b\u0001\u018b\u0001\u018b\u0001\u018c\u0001\u018c\u0001\u018c"+
		"\u0001\u018d\u0001\u018d\u0001\u018d\u0003\u018d\u1770\b\u018d\u0001\u018e"+
		"\u0001\u018e\u0001\u018e\u0001\u018e\u0005\u018e\u1776\b\u018e\n\u018e"+
		"\f\u018e\u1779\t\u018e\u0003\u018e\u177b\b\u018e\u0001\u018e\u0001\u018e"+
		"\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u018f\u0001\u0190\u0001\u0190"+
		"\u0001\u0190\u0001\u0191\u0001\u0191\u0001\u0192\u0001\u0192\u0001\u0193"+
		"\u0001\u0193\u0001\u0194\u0001\u0194\u0001\u0195\u0001\u0195\u0001\u0196"+
		"\u0001\u0196\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0197\u0001\u0198"+
		"\u0001\u0198\u0001\u0198\u0001\u0199\u0001\u0199\u0001\u0199\u0001\u019a"+
		"\u0001\u019a\u0001\u019a\u0001\u019a\u0003\u019a\u17a0\b\u019a\u0001\u019a"+
		"\u0003\u019a\u17a3\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
		"\u0003\u019a\u17a9\b\u019a\u0001\u019a\u0001\u019a\u0001\u019a\u0001\u019a"+
		"\u0003\u019a\u17af\b\u019a\u0001\u019a\u0003\u019a\u17b2\b\u019a\u0001"+
		"\u019b\u0001\u019b\u0001\u019b\u0001\u019c\u0001\u019c\u0001\u019c\u0001"+
		"\u019d\u0001\u019d\u0001\u019d\u0001\u019e\u0001\u019e\u0001\u019e\u0001"+
		"\u019f\u0001\u019f\u0003\u019f\u17c2\b\u019f\u0001\u01a0\u0001\u01a0\u0001"+
		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0001"+
		"\u01a0\u0001\u01a0\u0001\u01a0\u0001\u01a0\u0003\u01a0\u17d0\b\u01a0\u0001"+
		"\u01a1\u0001\u01a1\u0001\u01a1\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0005"+
		"\u01a2\u17d8\b\u01a2\n\u01a2\f\u01a2\u17db\t\u01a2\u0001\u01a2\u0001\u01a2"+
		"\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0001\u01a2\u0005\u01a2"+
		"\u17e4\b\u01a2\n\u01a2\f\u01a2\u17e7\t\u01a2\u0003\u01a2\u17e9\b\u01a2"+
		"\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3"+
		"\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3"+
		"\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3\u0001\u01a3"+
		"\u0003\u01a3\u17fd\b\u01a3\u0001\u01a3\u0003\u01a3\u1800\b\u01a3\u0003"+
		"\u01a3\u1802\b\u01a3\u0001\u01a4\u0001\u01a4\u0001\u01a5\u0001\u01a5\u0001"+
		"\u01a5\u0001\u01a5\u0001\u01a5\u0001\u01a5\u0003\u01a5\u180c\b\u01a5\u0001"+
		"\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a6\u0001\u01a7\u0001\u01a7\u0001"+
		"\u01a7\u0001\u01a7\u0001\u01a7\u0003\u01a7\u1817\b\u01a7\u0001\u01a7\u0001"+
		"\u01a7\u0003\u01a7\u181b\b\u01a7\u0001\u01a7\u0003\u01a7\u181e\b\u01a7"+
		"\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0001\u01a8\u0003\u01a8\u1824\b\u01a8"+
		"\u0001\u01a9\u0001\u01a9\u0001\u01a9\u0003\u01a9\u1829\b\u01a9\u0001\u01aa"+
		"\u0001\u01aa\u0003\u01aa\u182d\b\u01aa\u0001\u01aa\u0003\u01aa\u1830\b"+
		"\u01aa\u0001\u01aa\u0001\u01aa\u0001\u01aa\u0003\u01aa\u1835\b\u01aa\u0001"+
		"\u01aa\u0003\u01aa\u1838\b\u01aa\u0001\u01ab\u0001\u01ab\u0001\u01ab\u0001"+
		"\u01ab\u0003\u01ab\u183e\b\u01ab\u0001\u01ab\u0001\u01ab\u0001\u01ac\u0001"+
		"\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ac\u0001\u01ad\u0001\u01ad\u0001"+
		"\u01ad\u0001\u01ad\u0001\u01ad\u0001\u01ae\u0001\u01ae\u0001\u01ae\u0001"+
		"\u01ae\u0001\u01ae\u0001\u01af\u0001\u01af\u0001\u01af\u0001\u01af\u0001"+
		"\u01af\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001\u01b0\u0001"+
		"\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b1\u0001\u01b2\u0001"+
		"\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b2\u0001\u01b3\u0001\u01b3\u0001"+
		"\u01b3\u0003\u01b3\u1868\b\u01b3\u0001\u01b4\u0001\u01b4\u0001\u01b4\u0001"+
		"\u01b4\u0001\u01b4\u0001\u01b5\u0001\u01b5\u0003\u01b5\u1871\b\u01b5\u0001"+
		"\u01b5\u0001\u01b5\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001\u01b6\u0001"+
		"\u01b6\u0003\u01b6\u187a\b\u01b6\u0001\u01b6\u0001\u01b6\u0003\u01b6\u187e"+
		"\b\u01b6\u0001\u01b7\u0001\u01b7\u0001\u01b7\u0003\u01b7\u1883\b\u01b7"+
		"\u0001\u01b7\u0003\u01b7\u1886\b\u01b7\u0001\u01b8\u0001\u01b8\u0001\u01b8"+
		"\u0001\u01b8\u0001\u01b8\u0001\u01b9\u0001\u01b9\u0001\u01b9\u0001\u01b9"+
		"\u0003\u01b9\u1891\b\u01b9\u0001\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba"+
		"\u0001\u01ba\u0003\u01ba\u1898\b\u01ba\u0001\u01ba\u0001\u01ba\u0001\u01ba"+
		"\u0001\u01ba\u0005\u01ba\u189e\b\u01ba\n\u01ba\f\u01ba\u18a1\t\u01ba\u0003"+
		"\u01ba\u18a3\b\u01ba\u0003\u01ba\u18a5\b\u01ba\u0001\u01bb\u0001\u01bb"+
		"\u0003\u01bb\u18a9\b\u01bb\u0001\u01bb\u0001\u01bb\u0001\u01bb\u0003\u01bb"+
		"\u18ae\b\u01bb\u0001\u01bb\u0003\u01bb\u18b1\b\u01bb\u0001\u01bc\u0001"+
		"\u01bc\u0001\u01bc\u0001\u01bc\u0001\u01bd\u0001\u01bd\u0001\u01bd\u0001"+
		"\u01bd\u0003\u01bd\u18bb\b\u01bd\u0001\u01bd\u0003\u01bd\u18be\b\u01bd"+
		"\u0001\u01be\u0001\u01be\u0001\u01be\u0001\u01bf\u0001\u01bf\u0001\u01bf"+
		"\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c0\u0001\u01c1"+
		"\u0001\u01c1\u0001\u01c1\u0001\u01c1\u0003\u01c1\u18cf\b\u01c1\u0001\u01c2"+
		"\u0001\u01c2\u0003\u01c2\u18d3\b\u01c2\u0001\u01c2\u0001\u01c2\u0001\u01c3"+
		"\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0001\u01c3\u0005\u01c3\u18dc\b\u01c3"+
		"\n\u01c3\f\u01c3\u18df\t\u01c3\u0003\u01c3\u18e1\b\u01c3\u0001\u01c3\u0001"+
		"\u01c3\u0001\u01c3\u0003\u01c3\u18e6\b\u01c3\u0001\u01c3\u0003\u01c3\u18e9"+
		"\b\u01c3\u0001\u01c4\u0001\u01c4\u0001\u01c4\u0001\u01c5\u0001\u01c5\u0001"+
		"\u01c5\u0001\u01c5\u0001\u01c5\u0003\u01c5\u18f3\b\u01c5\u0001\u01c5\u0001"+
		"\u01c5\u0003\u01c5\u18f7\b\u01c5\u0001\u01c5\u0003\u01c5\u18fa\b\u01c5"+
		"\u0001\u01c5\u0001\u01c5\u0001\u01c5\u0003\u01c5\u18ff\b\u01c5\u0001\u01c6"+
		"\u0001\u01c6\u0001\u01c6\u0001\u01c7\u0001\u01c7\u0001\u01c7\u0001\u01c7"+
		"\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8\u0001\u01c8"+
		"\u0003\u01c8\u190e\b\u01c8\u0001\u01c9\u0001\u01c9\u0001\u01c9\u0001\u01c9"+
		"\u0001\u01c9\u0001\u01c9\u0003\u01c9\u1916\b\u01c9\u0001\u01ca\u0001\u01ca"+
		"\u0003\u01ca\u191a\b\u01ca\u0001\u01ca\u0001\u01ca\u0003\u01ca\u191e\b"+
		"\u01ca\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0001\u01cb\u0003\u01cb\u1924"+
		"\b\u01cb\u0001\u01cb\u0003\u01cb\u1927\b\u01cb\u0001\u01cc\u0001\u01cc"+
		"\u0003\u01cc\u192b\b\u01cc\u0001\u01cc\u0003\u01cc\u192e\b\u01cc\u0001"+
		"\u01cc\u0001\u01cc\u0003\u01cc\u1932\b\u01cc\u0001\u01cc\u0003\u01cc\u1935"+
		"\b\u01cc\u0001\u01cd\u0001\u01cd\u0001\u01cd\u0003\u01cd\u193a\b\u01cd"+
		"\u0001\u01cd\u0003\u01cd\u193d\b\u01cd\u0001\u01ce\u0001\u01ce\u0003\u01ce"+
		"\u1941\b\u01ce\u0001\u01ce\u0001\u01ce\u0003\u01ce\u1945\b\u01ce\u0001"+
		"\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0001\u01cf\u0003\u01cf\u194c"+
		"\b\u01cf\u0001\u01cf\u0001\u01cf\u0003\u01cf\u1950\b\u01cf\u0001\u01d0"+
		"\u0001\u01d0\u0001\u01d0\u0001\u01d1\u0001\u01d1\u0001\u01d1\u0001\u01d1"+
		"\u0003\u01d1\u1959\b\u01d1\u0001\u01d1\u0001\u01d1\u0003\u01d1\u195d\b"+
		"\u01d1\u0001\u01d2\u0001\u01d2\u0001\u01d2\u0001\u01d3\u0001\u01d3\u0001"+
		"\u01d3\u0001\u01d3\u0003\u01d3\u1966\b\u01d3\u0001\u01d3\u0001\u01d3\u0001"+
		"\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001\u01d3\u0001"+
		"\u01d3\u0001\u01d3\u0003\u01d3\u1972\b\u01d3\u0001\u01d3\u0003\u01d3\u1975"+
		"\b\u01d3\u0001\u01d3\u0001\u01d3\u0003\u01d3\u1979\b\u01d3\u0001\u01d3"+
		"\u0003\u01d3\u197c\b\u01d3\u0003\u01d3\u197e\b\u01d3\u0001\u01d4\u0001"+
		"\u01d4\u0003\u01d4\u1982\b\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001"+
		"\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d4\u0001\u01d5\u0001\u01d5\u0003"+
		"\u01d5\u198d\b\u01d5\u0001\u01d6\u0001\u01d6\u0003\u01d6\u1991\b\u01d6"+
		"\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0001\u01d7\u0005\u01d7"+
		"\u1998\b\u01d7\n\u01d7\f\u01d7\u199b\t\u01d7\u0001\u01d8\u0001\u01d8\u0001"+
		"\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d8\u0001\u01d9\u0001\u01d9\u0001"+
		"\u01d9\u0001\u01d9\u0001\u01d9\u0005\u01d9\u19a8\b\u01d9\n\u01d9\f\u01d9"+
		"\u19ab\t\u01d9\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01da\u0001\u01db"+
		"\u0001\u01db\u0003\u01db\u19b3\b\u01db\u0001\u01db\u0001\u01db\u0001\u01db"+
		"\u0003\u01db\u19b8\b\u01db\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0001\u01dc"+
		"\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0003\u01dc\u19c1\b\u01dc\u0001\u01dc"+
		"\u0001\u01dc\u0001\u01dc\u0001\u01dc\u0003\u01dc\u19c7\b\u01dc\u0001\u01dd"+
		"\u0001\u01dd\u0001\u01dd\u0001\u01dd\u0003\u01dd\u19cd\b\u01dd\u0001\u01de"+
		"\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de\u0001\u01de"+
		"\u0003\u01de\u19d6\b\u01de\u0001\u01df\u0001\u01df\u0001\u01df\u0001\u01df"+
		"\u0003\u01df\u19dc\b\u01df\u0001\u01e0\u0001\u01e0\u0003\u01e0\u19e0\b"+
		"\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e0\u0001\u01e1\u0001\u01e1\u0003"+
		"\u01e1\u19e7\b\u01e1\u0001\u01e1\u0001\u01e1\u0001\u01e1\u0003\u01e1\u19ec"+
		"\b\u01e1\u0001\u01e1\u0003\u01e1\u19ef\b\u01e1\u0001\u01e1\u0003\u01e1"+
		"\u19f2\b\u01e1\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2"+
		"\u0001\u01e2\u0003\u01e2\u19fa\b\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2"+
		"\u0005\u01e2\u19ff\b\u01e2\n\u01e2\f\u01e2\u1a02\t\u01e2\u0003\u01e2\u1a04"+
		"\b\u01e2\u0001\u01e2\u0001\u01e2\u0003\u01e2\u1a08\b\u01e2\u0001\u01e2"+
		"\u0003\u01e2\u1a0b\b\u01e2\u0001\u01e2\u0001\u01e2\u0001\u01e2\u0003\u01e2"+
		"\u1a10\b\u01e2\u0003\u01e2\u1a12\b\u01e2\u0001\u01e3\u0001\u01e3\u0001"+
		"\u01e3\u0001\u01e3\u0003\u01e3\u1a18\b\u01e3\u0001\u01e4\u0001\u01e4\u0001"+
		"\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0001"+
		"\u01e4\u0003\u01e4\u1a23\b\u01e4\u0001\u01e4\u0001\u01e4\u0001\u01e4\u0005"+
		"\u01e4\u1a28\b\u01e4\n\u01e4\f\u01e4\u1a2b\t\u01e4\u0003\u01e4\u1a2d\b"+
		"\u01e4\u0001\u01e4\u0001\u01e4\u0003\u01e4\u1a31\b\u01e4\u0001\u01e4\u0003"+
		"\u01e4\u1a34\b\u01e4\u0001\u01e4\u0003\u01e4\u1a37\b\u01e4\u0001\u01e5"+
		"\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0001\u01e5\u0003\u01e5\u1a3e\b\u01e5"+
		"\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6\u0001\u01e6"+
		"\u0001\u01e6\u0001\u01e6\u0005\u01e6\u1a48\b\u01e6\n\u01e6\f\u01e6\u1a4b"+
		"\t\u01e6\u0003\u01e6\u1a4d\b\u01e6\u0001\u01e7\u0001\u01e7\u0001\u01e7"+
		"\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0005\u01e8"+
		"\u1a57\b\u01e8\n\u01e8\f\u01e8\u1a5a\t\u01e8\u0001\u01e8\u0001\u01e8\u0001"+
		"\u01e8\u0001\u01e8\u0001\u01e8\u0001\u01e8\u0003\u01e8\u1a62\b\u01e8\u0001"+
		"\u01e8\u0001\u01e8\u0001\u01e8\u0003\u01e8\u1a67\b\u01e8\u0001\u01e9\u0001"+
		"\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0001\u01e9\u0005\u01e9\u1a6f"+
		"\b\u01e9\n\u01e9\f\u01e9\u1a72\t\u01e9\u0001\u01e9\u0001\u01e9\u0003\u01e9"+
		"\u1a76\b\u01e9\u0001\u01ea\u0001\u01ea\u0001\u01ea\u0005\u01ea\u1a7b\b"+
		"\u01ea\n\u01ea\f\u01ea\u1a7e\t\u01ea\u0001\u01ea\u0003\u01ea\u1a81\b\u01ea"+
		"\u0001\u01eb\u0001\u01eb\u0003\u01eb\u1a85\b\u01eb\u0001\u01eb\u0001\u01eb"+
		"\u0001\u01eb\u0005\u01eb\u1a8a\b\u01eb\n\u01eb\f\u01eb\u1a8d\t\u01eb\u0001"+
		"\u01eb\u0003\u01eb\u1a90\b\u01eb\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001"+
		"\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001"+
		"\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001\u01ec\u0001"+
		"\u01ec\u0001\u01ec\u0003\u01ec\u1aa3\b\u01ec\u0001\u01ec\u0001\u01ec\u0001"+
		"\u01ec\u0001\u01ec\u0003\u01ec\u1aa9\b\u01ec\u0001\u01ed\u0001\u01ed\u0001"+
		"\u01ed\u0001\u01ed\u0001\u01ed\u0005\u01ed\u1ab0\b\u01ed\n\u01ed\f\u01ed"+
		"\u1ab3\t\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed"+
		"\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0005\u01ed\u1abd\b\u01ed\n\u01ed"+
		"\f\u01ed\u1ac0\t\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed"+
		"\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0005\u01ed\u1aca\b\u01ed"+
		"\n\u01ed\f\u01ed\u1acd\t\u01ed\u0001\u01ed\u0001\u01ed\u0001\u01ed\u0003"+
		"\u01ed\u1ad2\b\u01ed\u0001\u01ee\u0001\u01ee\u0003\u01ee\u1ad6\b\u01ee"+
		"\u0001\u01ee\u0001\u01ee\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0001\u01ef"+
		"\u0001\u01ef\u0001\u01ef\u0001\u01ef\u0005\u01ef\u1ae1\b\u01ef\n\u01ef"+
		"\f\u01ef\u1ae4\t\u01ef\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0001\u01f0"+
		"\u0001\u01f0\u0001\u01f0\u0003\u01f0\u1aec\b\u01f0\u0001\u01f0\u0001\u01f0"+
		"\u0001\u01f0\u0001\u01f0\u0001\u01f0\u0005\u01f0\u1af3\b\u01f0\n\u01f0"+
		"\f\u01f0\u1af6\t\u01f0\u0001\u01f0\u0001\u01f0\u0003\u01f0\u1afa\b\u01f0"+
		"\u0001\u01f0\u0001\u01f0\u0003\u01f0\u1afe\b\u01f0\u0001\u01f1\u0001\u01f1"+
		"\u0001\u01f1\u0001\u01f1\u0005\u01f1\u1b04\b\u01f1\n\u01f1\f\u01f1\u1b07"+
		"\t\u01f1\u0001\u01f1\u0003\u01f1\u1b0a\b\u01f1\u0001\u01f2\u0001\u01f2"+
		"\u0001\u01f2\u0003\u01f2\u1b0f\b\u01f2\u0001\u01f2\u0001\u01f2\u0003\u01f2"+
		"\u1b13\b\u01f2\u0001\u01f2\u0003\u01f2\u1b16\b\u01f2\u0001\u01f2\u0001"+
		"\u01f2\u0001\u01f2\u0003\u01f2\u1b1b\b\u01f2\u0001\u01f3\u0001\u01f3\u0001"+
		"\u01f3\u0003\u01f3\u1b20\b\u01f3\u0001\u01f3\u0003\u01f3\u1b23\b\u01f3"+
		"\u0001\u01f4\u0001\u01f4\u0001\u01f5\u0001\u01f5\u0001\u01f6\u0001\u01f6"+
		"\u0001\u01f6\u0001\u01f6\u0001\u01f7\u0001\u01f7\u0001\u01f7\u0001\u01f7"+
		"\u0001\u01f7\u0003\u01f7\u1b32\b\u01f7\u0001\u01f8\u0001\u01f8\u0001\u01f9"+
		"\u0001\u01f9\u0001\u01f9\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0001\u01fa"+
		"\u0001\u01fa\u0001\u01fa\u0001\u01fa\u0003\u01fa\u1b64\b\u01fa\u0001\u01fb"+
		"\u0001\u01fb\u0003\u01fb\u1b68\b\u01fb\u0001\u01fb\u0001\u01fb\u0001\u01fb"+
		"\u0001\u01fc\u0001\u01fc\u0003\u01fc\u1b6f\b\u01fc\u0001\u01fc\u0003\u01fc"+
		"\u1b72\b\u01fc\u0001\u01fc\u0003\u01fc\u1b75\b\u01fc\u0001\u01fc\u0003"+
		"\u01fc\u1b78\b\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001\u01fc\u0001"+
		"\u01fd\u0001\u01fd\u0003\u01fd\u1b80\b\u01fd\u0001\u01fd\u0001\u01fd\u0001"+
		"\u01fd\u0001\u01fd\u0001\u01fd\u0005\u01fd\u1b87\b\u01fd\n\u01fd\f\u01fd"+
		"\u1b8a\t\u01fd\u0003\u01fd\u1b8c\b\u01fd\u0003\u01fd\u1b8e\b\u01fd\u0001"+
		"\u01fe\u0001\u01fe\u0001\u01fe\u0001\u01fe\u0003\u01fe\u1b94\b\u01fe\u0001"+
		"\u01ff\u0001\u01ff\u0003\u01ff\u1b98\b\u01ff\u0001\u01ff\u0003\u01ff\u1b9b"+
		"\b\u01ff\u0001\u01ff\u0003\u01ff\u1b9e\b\u01ff\u0001\u0200\u0001\u0200"+
		"\u0003\u0200\u1ba2\b\u0200\u0001\u0200\u0001\u0200\u0003\u0200\u1ba6\b"+
		"\u0200\u0001\u0200\u0001\u0200\u0003\u0200\u1baa\b\u0200\u0001\u0200\u0003"+
		"\u0200\u1bad\b\u0200\u0001\u0200\u0003\u0200\u1bb0\b\u0200\u0003\u0200"+
		"\u1bb2\b\u0200\u0001\u0201\u0001\u0201\u0001\u0201\u0001\u0202\u0001\u0202"+
		"\u0003\u0202\u1bb9\b\u0202\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203"+
		"\u0001\u0203\u0001\u0203\u0001\u0203\u0001\u0203\u0005\u0203\u1bc3\b\u0203"+
		"\n\u0203\f\u0203\u1bc6\t\u0203\u0003\u0203\u1bc8\b\u0203\u0001\u0204\u0001"+
		"\u0204\u0001\u0204\u0001\u0205\u0001\u0205\u0001\u0205\u0001\u0205\u0001"+
		"\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0003\u0206\u1bd5\b\u0206\u0001"+
		"\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0003\u0206\u1bdc"+
		"\b\u0206\u0003\u0206\u1bde\b\u0206\u0001\u0206\u0001\u0206\u0001\u0206"+
		"\u0001\u0206\u0001\u0206\u0001\u0206\u0003\u0206\u1be6\b\u0206\u0001\u0206"+
		"\u0001\u0206\u0001\u0206\u0001\u0206\u0001\u0206\u0003\u0206\u1bed\b\u0206"+
		"\u0003\u0206\u1bef\b\u0206\u0001\u0207\u0001\u0207\u0003\u0207\u1bf3\b"+
		"\u0207\u0001\u0207\u0001\u0207\u0001\u0208\u0003\u0208\u1bf8\b\u0208\u0001"+
		"\u0208\u0001\u0208\u0001\u0209\u0001\u0209\u0003\u0209\u1bfe\b\u0209\u0001"+
		"\u0209\u0003\u0209\u1c01\b\u0209\u0001\u0209\u0001\u0209\u0001\u020a\u0001"+
		"\u020a\u0003\u020a\u1c07\b\u020a\u0001\u020a\u0003\u020a\u1c0a\b\u020a"+
		"\u0001\u020a\u0003\u020a\u1c0d\b\u020a\u0001\u020b\u0001\u020b\u0001\u020b"+
		"\u0001\u020b\u0001\u020b\u0003\u020b\u1c14\b\u020b\u0003\u020b\u1c16\b"+
		"\u020b\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0003"+
		"\u020c\u1c1d\b\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0003"+
		"\u020c\u1c23\b\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0003"+
		"\u020c\u1c29\b\u020c\u0001\u020c\u0003\u020c\u1c2c\b\u020c\u0001\u020c"+
		"\u0001\u020c\u0001\u020c\u0003\u020c\u1c31\b\u020c\u0001\u020c\u0001\u020c"+
		"\u0003\u020c\u1c35\b\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c"+
		"\u0003\u020c\u1c3b\b\u020c\u0001\u020c\u0003\u020c\u1c3e\b\u020c\u0001"+
		"\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001\u020c\u0001"+
		"\u020c\u0003\u020c\u1c47\b\u020c\u0003\u020c\u1c49\b\u020c\u0001\u020d"+
		"\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d"+
		"\u0001\u020d\u0001\u020d\u0003\u020d\u1c54\b\u020d\u0001\u020d\u0001\u020d"+
		"\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0003\u020d"+
		"\u1c5d\b\u020d\u0001\u020d\u0001\u020d\u0003\u020d\u1c61\b\u020d\u0001"+
		"\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001"+
		"\u020d\u0003\u020d\u1c6a\b\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001"+
		"\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001\u020d\u0001"+
		"\u020d\u0001\u020d\u0001\u020d\u0003\u020d\u1c78\b\u020d\u0001\u020e\u0001"+
		"\u020e\u0001\u020e\u0005\u020e\u1c7d\b\u020e\n\u020e\f\u020e\u1c80\t\u020e"+
		"\u0001\u020f\u0001\u020f\u0001\u020f\u0005\u020f\u1c85\b\u020f\n\u020f"+
		"\f\u020f\u1c88\t\u020f\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0003\u0210\u1c8f\b\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0003\u0210\u1c9a\b\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0003\u0210\u1ca1\b\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0003\u0210\u1ca8\b\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0003\u0210\u1caf\b\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210\u0001\u0210"+
		"\u0003\u0210\u1cdc\b\u0210\u0001\u0211\u0001\u0211\u0001\u0212\u0001\u0212"+
		"\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212\u0001\u0212\u0003\u0212"+
		"\u1ce7\b\u0212\u0001\u0213\u0001\u0213\u0001\u0213\u0003\u0213\u1cec\b"+
		"\u0213\u0001\u0213\u0001\u0213\u0003\u0213\u1cf0\b\u0213\u0001\u0213\u0003"+
		"\u0213\u1cf3\b\u0213\u0001\u0213\u0003\u0213\u1cf6\b\u0213\u0001\u0213"+
		"\u0003\u0213\u1cf9\b\u0213\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+
		"\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+
		"\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+
		"\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+
		"\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+
		"\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214"+
		"\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0001\u0214\u0003\u0214"+
		"\u1d22\b\u0214\u0001\u0215\u0001\u0215\u0001\u0215\u0005\u0215\u1d27\b"+
		"\u0215\n\u0215\f\u0215\u1d2a\t\u0215\u0001\u0216\u0001\u0216\u0001\u0216"+
		"\u0001\u0216\u0001\u0216\u0005\u0216\u1d31\b\u0216\n\u0216\f\u0216\u1d34"+
		"\t\u0216\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001\u0217\u0001"+
		"\u0217\u0003\u0217\u1d3c\b\u0217\u0001\u0217\u0005\u0217\u1d3f\b\u0217"+
		"\n\u0217\f\u0217\u1d42\t\u0217\u0003\u0217\u1d44\b\u0217\u0001\u0218\u0001"+
		"\u0218\u0001\u0218\u0005\u0218\u1d49\b\u0218\n\u0218\f\u0218\u1d4c\t\u0218"+
		"\u0001\u0219\u0004\u0219\u1d4f\b\u0219\u000b\u0219\f\u0219\u1d50\u0001"+
		"\u021a\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+
		"\u021a\u0001\u021a\u0001\u021a\u0003\u021a\u1d5c\b\u021a\u0001\u021a\u0001"+
		"\u021a\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021a\u0001\u021a\u0001"+
		"\u021a\u0001\u021a\u0003\u021a\u1d67\b\u021a\u0001\u021a\u0001\u021a\u0001"+
		"\u021a\u0001\u021a\u0003\u021a\u1d6d\b\u021a\u0001\u021a\u0001\u021a\u0001"+
		"\u021a\u0001\u021a\u0003\u021a\u1d73\b\u021a\u0001\u021b\u0001\u021b\u0001"+
		"\u021b\u0003\u021b\u1d78\b\u021b\u0001\u021b\u0001\u021b\u0003\u021b\u1d7c"+
		"\b\u021b\u0001\u021b\u0003\u021b\u1d7f\b\u021b\u0001\u021b\u0003\u021b"+
		"\u1d82\b\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0003\u021b\u1d87\b"+
		"\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001"+
		"\u021b\u0001\u021b\u0003\u021b\u1d90\b\u021b\u0001\u021b\u0001\u021b\u0001"+
		"\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0001\u021b\u0005"+
		"\u021b\u1d9a\b\u021b\n\u021b\f\u021b\u1d9d\t\u021b\u0003\u021b\u1d9f\b"+
		"\u021b\u0003\u021b\u1da1\b\u021b\u0001\u021c\u0001\u021c\u0003\u021c\u1da5"+
		"\b\u021c\u0001\u021d\u0001\u021d\u0001\u021d\u0005\u021d\u1daa\b\u021d"+
		"\n\u021d\f\u021d\u1dad\t\u021d\u0001\u021e\u0001\u021e\u0001\u021e\u0003"+
		"\u021e\u1db2\b\u021e\u0001\u021e\u0001\u021e\u0001\u021e\u0005\u021e\u1db7"+
		"\b\u021e\n\u021e\f\u021e\u1dba\t\u021e\u0001\u021f\u0001\u021f\u0001\u021f"+
		"\u0003\u021f\u1dbf\b\u021f\u0001\u021f\u0001\u021f\u0001\u021f\u0005\u021f"+
		"\u1dc4\b\u021f\n\u021f\f\u021f\u1dc7\t\u021f\u0001\u0220\u0001\u0220\u0001"+
		"\u0220\u0003\u0220\u1dcc\b\u0220\u0001\u0220\u0001\u0220\u0001\u0220\u0005"+
		"\u0220\u1dd1\b\u0220\n\u0220\f\u0220\u1dd4\t\u0220\u0001\u0221\u0001\u0221"+
		"\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221\u0001\u0221"+
		"\u0001\u0221\u0001\u0221\u0005\u0221\u1de0\b\u0221\n\u0221\f\u0221\u1de3"+
		"\t\u0221\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001\u0222\u0001"+
		"\u0222\u0001\u0222\u0001\u0222\u0005\u0222\u1ded\b\u0222\n\u0222\f\u0222"+
		"\u1df0\t\u0222\u0003\u0222\u1df2\b\u0222\u0001\u0222\u0001\u0222\u0001"+
		"\u0222\u0001\u0222\u0005\u0222\u1df8\b\u0222\n\u0222\f\u0222\u1dfb\t\u0222"+
		"\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223\u0001\u0223"+
		"\u0001\u0223\u0001\u0223\u0001\u0223\u0003\u0223\u1e06\b\u0223\u0001\u0224"+
		"\u0001\u0224\u0001\u0224\u0001\u0224\u0003\u0224\u1e0c\b\u0224\u0001\u0224"+
		"\u0001\u0224\u0001\u0224\u0003\u0224\u1e11\b\u0224\u0001\u0224\u0001\u0224"+
		"\u0001\u0224\u0003\u0224\u1e16\b\u0224\u0001\u0225\u0001\u0225\u0001\u0225"+
		"\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225\u0001\u0225"+
		"\u0001\u0225\u0003\u0225\u1e22\b\u0225\u0001\u0226\u0001\u0226\u0001\u0226"+
		"\u0001\u0226\u0001\u0227\u0001\u0227\u0001\u0227\u0005\u0227\u1e2b\b\u0227"+
		"\n\u0227\f\u0227\u1e2e\t\u0227\u0001\u0228\u0001\u0228\u0001\u0228\u0005"+
		"\u0228\u1e33\b\u0228\n\u0228\f\u0228\u1e36\t\u0228\u0001\u0229\u0001\u0229"+
		"\u0001\u0229\u0003\u0229\u1e3b\b\u0229\u0001\u022a\u0001\u022a\u0001\u022a"+
		"\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a\u0001\u022a"+
		"\u0003\u022a\u1e46\b\u022a\u0001\u022b\u0001\u022b\u0001\u022b\u0001\u022b"+
		"\u0001\u022b\u0003\u022b\u1e4d\b\u022b\u0001\u022c\u0001\u022c\u0001\u022c"+
		"\u0001\u022c\u0001\u022c\u0003\u022c\u1e54\b\u022c\u0001\u022c\u0001\u022c"+
		"\u0003\u022c\u1e58\b\u022c\u0001\u022c\u0001\u022c\u0001\u022c\u0003\u022c"+
		"\u1e5d\b\u022c\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022d"+
		"\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0003\u022d"+
		"\u1e69\b\u022d\u0001\u022d\u0001\u022d\u0003\u022d\u1e6d\b\u022d\u0001"+
		"\u022d\u0001\u022d\u0001\u022d\u0003\u022d\u1e72\b\u022d\u0001\u022d\u0001"+
		"\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001\u022d\u0001"+
		"\u022d\u0003\u022d\u1e7c\b\u022d\u0003\u022d\u1e7e\b\u022d\u0001\u022e"+
		"\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e\u0001\u022e"+
		"\u0001\u022e\u0003\u022e\u1e88\b\u022e\u0001\u022f\u0001\u022f\u0001\u022f"+
		"\u0001\u022f\u0001\u022f\u0001\u022f\u0003\u022f\u1e90\b\u022f\u0001\u0230"+
		"\u0001\u0230\u0001\u0230\u0001\u0230\u0003\u0230\u1e96\b\u0230\u0001\u0231"+
		"\u0001\u0231\u0003\u0231\u1e9a\b\u0231\u0001\u0232\u0001\u0232\u0001\u0232"+
		"\u0001\u0232\u0001\u0232\u0003\u0232\u1ea1\b\u0232\u0001\u0233\u0001\u0233"+
		"\u0001\u0233\u0001\u0233\u0001\u0233\u0003\u0233\u1ea8\b\u0233\u0001\u0234"+
		"\u0001\u0234\u0001\u0234\u0003\u0234\u1ead\b\u0234\u0001\u0234\u0003\u0234"+
		"\u1eb0\b\u0234\u0001\u0234\u0001\u0234\u0003\u0234\u1eb4\b\u0234\u0001"+
		"\u0235\u0001\u0235\u0001\u0235\u0001\u0235\u0005\u0235\u1eba\b\u0235\n"+
		"\u0235\f\u0235\u1ebd\t\u0235\u0001\u0236\u0001\u0236\u0003\u0236\u1ec1"+
		"\b\u0236\u0001\u0237\u0001\u0237\u0001\u0237\u0001\u0238\u0001\u0238\u0001"+
		"\u0238\u0001\u0239\u0001\u0239\u0001\u0239\u0001\u0239\u0001\u0239\u0001"+
		"\u0239\u0001\u0239\u0003\u0239\u1ed0\b\u0239\u0001\u023a\u0004\u023a\u1ed3"+
		"\b\u023a\u000b\u023a\f\u023a\u1ed4\u0001\u023b\u0001\u023b\u0001\u023c"+
		"\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c"+
		"\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c"+
		"\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c\u0001\u023c"+
		"\u0001\u023c\u0001\u023c\u0003\u023c\u1eee\b\u023c\u0001\u023d\u0001\u023d"+
		"\u0001\u023d\u0003\u023d\u1ef3\b\u023d\u0001\u023d\u0001\u023d\u0001\u023d"+
		"\u0003\u023d\u1ef8\b\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0003\u023d"+
		"\u1efd\b\u023d\u0001\u023d\u0001\u023d\u0001\u023d\u0003\u023d\u1f02\b"+
		"\u023d\u0001\u023e\u0001\u023e\u0001\u023e\u0005\u023e\u1f07\b\u023e\n"+
		"\u023e\f\u023e\u1f0a\t\u023e\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001"+
		"\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0001\u023f\u0003"+
		"\u023f\u1f6f\b\u023f\u0001\u0240\u0001\u0240\u0001\u0240\u0001\u0240\u0001"+
		"\u0241\u0001\u0241\u0001\u0242\u0001\u0242\u0001\u0242\u0005\u0242\u1f7a"+
		"\b\u0242\n\u0242\f\u0242\u1f7d\t\u0242\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0003\u0243\u1f83\b\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0003\u0243\u1f8a\b\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0003\u0243\u1f91\b\u0243\u0001\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0003\u0243\u1f98\b\u0243"+
		"\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0003\u0243"+
		"\u1f9f\b\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0003\u0243\u1fa6\b\u0243\u0001\u0243\u0001\u0243\u0001\u0243\u0001\u0243"+
		"\u0001\u0243\u0003\u0243\u1fad\b\u0243\u0001\u0243\u0003\u0243\u1fb0\b"+
		"\u0243\u0001\u0244\u0001\u0244\u0001\u0244\u0005\u0244\u1fb5\b\u0244\n"+
		"\u0244\f\u0244\u1fb8\t\u0244\u0001\u0245\u0001\u0245\u0001\u0245\u0000"+
		"\u0005\u0160\u0270\u0278\u0280\u0282\u0246\u0000\u0002\u0004\u0006\b\n"+
		"\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.0246"+
		"8:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a"+
		"\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2"+
		"\u00a4\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba"+
		"\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2"+
		"\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea"+
		"\u00ec\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102"+
		"\u0104\u0106\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a"+
		"\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132"+
		"\u0134\u0136\u0138\u013a\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a"+
		"\u014c\u014e\u0150\u0152\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162"+
		"\u0164\u0166\u0168\u016a\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a"+
		"\u017c\u017e\u0180\u0182\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192"+
		"\u0194\u0196\u0198\u019a\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa"+
		"\u01ac\u01ae\u01b0\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2"+
		"\u01c4\u01c6\u01c8\u01ca\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u01da"+
		"\u01dc\u01de\u01e0\u01e2\u01e4\u01e6\u01e8\u01ea\u01ec\u01ee\u01f0\u01f2"+
		"\u01f4\u01f6\u01f8\u01fa\u01fc\u01fe\u0200\u0202\u0204\u0206\u0208\u020a"+
		"\u020c\u020e\u0210\u0212\u0214\u0216\u0218\u021a\u021c\u021e\u0220\u0222"+
		"\u0224\u0226\u0228\u022a\u022c\u022e\u0230\u0232\u0234\u0236\u0238\u023a"+
		"\u023c\u023e\u0240\u0242\u0244\u0246\u0248\u024a\u024c\u024e\u0250\u0252"+
		"\u0254\u0256\u0258\u025a\u025c\u025e\u0260\u0262\u0264\u0266\u0268\u026a"+
		"\u026c\u026e\u0270\u0272\u0274\u0276\u0278\u027a\u027c\u027e\u0280\u0282"+
		"\u0284\u0286\u0288\u028a\u028c\u028e\u0290\u0292\u0294\u0296\u0298\u029a"+
		"\u029c\u029e\u02a0\u02a2\u02a4\u02a6\u02a8\u02aa\u02ac\u02ae\u02b0\u02b2"+
		"\u02b4\u02b6\u02b8\u02ba\u02bc\u02be\u02c0\u02c2\u02c4\u02c6\u02c8\u02ca"+
		"\u02cc\u02ce\u02d0\u02d2\u02d4\u02d6\u02d8\u02da\u02dc\u02de\u02e0\u02e2"+
		"\u02e4\u02e6\u02e8\u02ea\u02ec\u02ee\u02f0\u02f2\u02f4\u02f6\u02f8\u02fa"+
		"\u02fc\u02fe\u0300\u0302\u0304\u0306\u0308\u030a\u030c\u030e\u0310\u0312"+
		"\u0314\u0316\u0318\u031a\u031c\u031e\u0320\u0322\u0324\u0326\u0328\u032a"+
		"\u032c\u032e\u0330\u0332\u0334\u0336\u0338\u033a\u033c\u033e\u0340\u0342"+
		"\u0344\u0346\u0348\u034a\u034c\u034e\u0350\u0352\u0354\u0356\u0358\u035a"+
		"\u035c\u035e\u0360\u0362\u0364\u0366\u0368\u036a\u036c\u036e\u0370\u0372"+
		"\u0374\u0376\u0378\u037a\u037c\u037e\u0380\u0382\u0384\u0386\u0388\u038a"+
		"\u038c\u038e\u0390\u0392\u0394\u0396\u0398\u039a\u039c\u039e\u03a0\u03a2"+
		"\u03a4\u03a6\u03a8\u03aa\u03ac\u03ae\u03b0\u03b2\u03b4\u03b6\u03b8\u03ba"+
		"\u03bc\u03be\u03c0\u03c2\u03c4\u03c6\u03c8\u03ca\u03cc\u03ce\u03d0\u03d2"+
		"\u03d4\u03d6\u03d8\u03da\u03dc\u03de\u03e0\u03e2\u03e4\u03e6\u03e8\u03ea"+
		"\u03ec\u03ee\u03f0\u03f2\u03f4\u03f6\u03f8\u03fa\u03fc\u03fe\u0400\u0402"+
		"\u0404\u0406\u0408\u040a\u040c\u040e\u0410\u0412\u0414\u0416\u0418\u041a"+
		"\u041c\u041e\u0420\u0422\u0424\u0426\u0428\u042a\u042c\u042e\u0430\u0432"+
		"\u0434\u0436\u0438\u043a\u043c\u043e\u0440\u0442\u0444\u0446\u0448\u044a"+
		"\u044c\u044e\u0450\u0452\u0454\u0456\u0458\u045a\u045c\u045e\u0460\u0462"+
		"\u0464\u0466\u0468\u046a\u046c\u046e\u0470\u0472\u0474\u0476\u0478\u047a"+
		"\u047c\u047e\u0480\u0482\u0484\u0486\u0488\u048a\u0000{\u0002\u0000\u0171"+
		"\u0171\u0217\u0217\u0002\u0000\u0135\u0135\u0233\u0233\u0002\u0000[[\u02be"+
		"\u02be\u0001\u0000\u02f4\u02f5\u0001\u0000\u0266\u0267\u0002\u0000yy\u0246"+
		"\u0246\u0002\u0000AC\u00c2\u00c2\u0003\u0000\u0001\u0002\u00c2\u00c2\u01ca"+
		"\u01ca\u0002\u0000\u00b4\u00b4\u025f\u025f\u0002\u0000\u00c2\u00c2\u0322"+
		"\u0322\u0002\u0000\u00d0\u00d0\u00e1\u00e1\u0001\u0000?@\u0003\u0000\u01aa"+
		"\u01aa\u02af\u02af\u02c9\u02c9\u0002\u0000\u00c4\u00c4\u014f\u014f\u0002"+
		"\u0000zz\u0173\u0173\u0002\u0000NN\u00d8\u00d8\u0002\u0000MM\u0139\u0139"+
		"\u0002\u0000\u029c\u029c\u02ea\u02ea\u0003\u0000ss\u0127\u0127\u025c\u025c"+
		"\u0002\u0000\u02c5\u02c5\u02dc\u02dc\u0002\u0000\u014e\u014e\u02eb\u02eb"+
		"\u0003\u0000\u0116\u0116\u0281\u0281\u02d0\u02d0\u0001\u0000\u0296\u0298"+
		"\u0002\u0000\u0085\u0085\u02ac\u02ac\u0006\u0000\u0096\u0096\u0099\u0099"+
		"\u00c2\u00c2\u00dc\u00dc\u0108\u0108\u0222\u0222\u0003\u0000\u0106\u0106"+
		"\u0162\u0162\u01c8\u01c8\u0002\u0000\u00d2\u00d2\u01a9\u01a9\u0003\u0000"+
		"\u0138\u0138\u013f\u013f\u01ea\u01ea\u0002\u0000\u00ac\u00ac\u0292\u0292"+
		"\u0002\u0000\u01d3\u01d3\u0259\u0259\u000b\u0000||\u0087\u0087\u0092\u0092"+
		"\u00a0\u00a2\u00b2\u00b2\u01ab\u01ab\u01bc\u01bc\u024a\u024a\u0261\u0261"+
		"\u02a0\u02a0\u02ad\u02ad\u0003\u0000\u00a5\u00a5\u00f7\u00f7\u02ca\u02ca"+
		"\u0002\u0000\u00be\u00be\u00d8\u00d8\u0003\u0000\u00c6\u00c6\u012a\u012a"+
		"\u017f\u017f\u0001\u0000\u02e1\u02e2\u0002\u0000\u00c6\u00c6\u017f\u017f"+
		"\u0004\u0000\u0106\u0106\u0162\u0162\u01c7\u01c7\u0208\u0208\u0002\u0000"+
		"\u0106\u0106\u01c7\u01c7\u0002\u0000\u009b\u009b\u017f\u017f\u0002\u0000"+
		"\u016f\u016f\u0258\u0258\u0002\u0000TT\u00d3\u00d4\u0003\u0000\u0110\u0110"+
		"\u0135\u0135\u02d8\u02d8\u0002\u0000\u013a\u013a\u015c\u015c\u0002\u0000"+
		"\u00a9\u00a9\u013e\u013e\u0002\u0000\u0169\u0169\u0250\u0250\u0002\u0000"+
		"\u0272\u0272\u02d5\u02d5\u0006\u00001Gdd\u0163\u0163\u019d\u019d\u0209"+
		"\u0209\u02dd\u02df\u0001\u0000\u031e\u031f\u0002\u0000DD\u0321\u0321\u0001"+
		"\u0000\u0010\u0011\u0002\u0000\u00b7\u00b7\u02b6\u02b7\u0002\u0000\u00ff"+
		"\u00ff\u02c3\u02c3\u0094\u0000KMOSVVYZ_ceflmoqstzz|}\u007f\u0080\u0086"+
		"\u0088\u008a\u008c\u008e\u008e\u0090\u0092\u0095\u009b\u009d\u009e\u00a0"+
		"\u00a2\u00a4\u00a4\u00a7\u00a8\u00ac\u00ac\u00b2\u00b3\u00b6\u00b9\u00c3"+
		"\u00c5\u00c7\u00c7\u00cc\u00cc\u00ce\u00d2\u00da\u00dc\u00e1\u00e1\u00e3"+
		"\u00e3\u00e5\u00ed\u00f0\u00f1\u00f3\u00f4\u00f8\u00f9\u00fb\u00fe\u0100"+
		"\u0101\u0104\u0106\u0108\u0108\u010d\u010d\u0112\u0113\u0115\u0115\u0118"+
		"\u0118\u011a\u011b\u011d\u011e\u0121\u0121\u0125\u0125\u0127\u0127\u012b"+
		"\u012f\u0133\u0133\u0136\u0136\u0139\u0139\u013b\u013b\u013d\u013d\u0142"+
		"\u0142\u0144\u0144\u014e\u0150\u0153\u0153\u0155\u0156\u0159\u0159\u015b"+
		"\u015c\u015e\u015e\u0162\u0162\u0168\u0168\u016a\u016b\u0170\u0171\u0177"+
		"\u017a\u0180\u0181\u0183\u0196\u0198\u019b\u019e\u01a4\u01a8\u01ac\u01ae"+
		"\u01af\u01b2\u01b2\u01b4\u01b4\u01b6\u01bf\u01c1\u01c7\u01c9\u01c9\u01cc"+
		"\u01cd\u01d2\u01d3\u01d5\u01d5\u01d7\u01da\u01dc\u01de\u01e2\u01e2\u01e4"+
		"\u01e4\u01e7\u01e9\u01ee\u01f2\u01f4\u01f8\u01fc\u0202\u0204\u0204\u0207"+
		"\u0208\u020a\u020b\u020e\u0210\u0213\u0216\u021b\u021b\u021e\u021f\u0221"+
		"\u0223\u0226\u022a\u022d\u022d\u022f\u022f\u0232\u0232\u0236\u023c\u023f"+
		"\u023f\u0243\u0243\u0245\u0245\u0247\u0248\u024a\u024e\u0252\u0252\u0254"+
		"\u0256\u0259\u025a\u025c\u025c\u025e\u025e\u0261\u0267\u0269\u0269\u026d"+
		"\u026f\u0272\u0272\u0277\u0277\u027a\u027a\u027c\u0280\u0287\u0289\u028b"+
		"\u028b\u028d\u028d\u028f\u0290\u0292\u0292\u0295\u0299\u029b\u029b\u029e"+
		"\u02a3\u02a5\u02a7\u02aa\u02af\u02b1\u02b2\u02b4\u02b9\u02bd\u02bd\u02c0"+
		"\u02c0\u02c2\u02c2\u02c5\u02c9\u02cb\u02cc\u02d1\u02d1\u02d4\u02d4\u02d6"+
		"\u02d6\u02d9\u02db\u02e0\u02e1\u02e6\u02e6\u02e8\u02e9\u02eb\u02ef\u02f5"+
		"\u02f7\u02f9\u02f9\u02fb\u02fc\u02fe\u02fe\u0003\u0000\u00f5\u00f5\u0244"+
		"\u0244\u0274\u0274 \u0000]]hhvw\u0083\u0083\u0085\u0085\u0089\u0089\u0093"+
		"\u0094\u00a3\u00a3\u00be\u00be\u00d6\u00d6\u00e4\u00e4\u010c\u010c\u010e"+
		"\u010e\u0126\u0126\u0129\u0129\u0137\u0137\u0143\u0143\u0161\u0161\u01c8"+
		"\u01c8\u0203\u0203\u0206\u0206\u0230\u0230\u0240\u0240\u0253\u0253\u025d"+
		"\u025d\u0276\u0276\u0279\u0279\u0293\u0293\u029a\u029a\u02c4\u02c4\u02cd"+
		"\u02ce\u02fa\u02fa\t\u0000\u00ef\u00ef\u0103\u0103\u01ca\u01ca\u020d\u020d"+
		"\u0211\u0211\u022c\u022c\u023d\u023d\u0242\u0242\u02a4\u02a4\u0004\u0000"+
		"\u011f\u011f\u0173\u0173\u01fa\u01fb\u0270\u0270\u0003\u0000\u011f\u011f"+
		"\u0173\u0173\u0270\u0270\u0002\u0000\u01dd\u01dd\u02f8\u02f8\u0002\u0000"+
		"\u0014\u0014\')\u0002\u0000PPgg\u0001\u0000\u02a9\u02aa\u0003\u0000\u00c8"+
		"\u00c8\u0141\u0141\u02d5\u02d5\u0002\u0000\u010e\u010e\u0203\u0203\u0002"+
		"\u0000\u0005\u0005XX\u0002\u0000\u0006\u0006\u01e5\u01e5\u0002\u0000\u0007"+
		"\u0007\u01cb\u01cb\u0004\u0000\u00ff\u00ff\u01d1\u01d1\u02c3\u02c3\u02d1"+
		"\u02d1\u0002\u0000TTYY\u0002\u0000\u0019\u0019--\u0001\u0000\u0019\u001e"+
		"\u0001\u0000./\u0002\u0000\u00e0\u00e0\u00eb\u00eb\u0002\u000014cd\u0002"+
		"\u0000\u0217\u0217\u0258\u0258\u0005\u0000\u00ab\u00ab\u00c9\u00c9\u01f9"+
		"\u01f9\u0218\u0218\u025b\u025b\u0002\u0000\u0160\u0160\u0165\u0165\u0002"+
		"\u0000\u0107\u0107\u0163\u0163\u0002\u0000\u0106\u0106\u0162\u0162\u0002"+
		"\u0000**\u0322\u0322\u0002\u0000\u0135\u0135\u0243\u0243\u0003\u0000\u00fc"+
		"\u00fc\u0215\u0215\u02db\u02db\u0001\u000089\u0003\u0000rr\u0166\u0166"+
		"\u02bf\u02bf\n\u0000\u00b9\u00bd\u012f\u0132\u01ac\u01ac\u01af\u01b1\u01b7"+
		"\u01b7\u0213\u0213\u0262\u0262\u0268\u0268\u02ee\u02ee\u02fe\u02ff\u0007"+
		"\u0000jj\u0145\u0145\u014b\u014b\u01a6\u01a6\u01ad\u01ad\u027b\u027b\u02bb"+
		"\u02bb\u0003\u0000\u00c0\u00c0\u0108\u0109\u01d4\u01d4\u0001\u0000pq\u0002"+
		"\u0000\u0145\u0145\u014b\u014b\u0002\u0000\u017c\u017c\u01a5\u01a5\u0006"+
		"\u0000\u011a\u011b\u0159\u0159\u0170\u0170\u01b8\u01ba\u0200\u0201\u026d"+
		"\u026d\u0003\u0000\u0276\u0276\u02d3\u02d3\u0300\u0300\u0001\u0000\u0081"+
		"\u0082\u0002\u0000\u00af\u00af\u0174\u0175\u0003\u0000\u00c2\u00c2\u00dc"+
		"\u00dc\u0108\u0108\u0003\u0000\u00c2\u00c2\u00d2\u00d2\u01a9\u01a9\u0002"+
		"\u0000\\\\\u00ca\u00ca\u0002\u0000TT\u00d3\u00d3\u0002\u0000\u0173\u0173"+
		"\u01ce\u01ce\u0002\u0000\u00ca\u00cb\u00fa\u00fa\u0002\u0000\u0114\u0114"+
		"\u0138\u0138\u0002\u0000kk\u0180\u0180\u0002\u0000\u0090\u0090\u032a\u032a"+
		"\u0002\u0000\u00b5\u00b5\u0260\u0260\u0002\u0000\u01bb\u01bb\u0299\u0299"+
		"\u0002\u0000\u013a\u013b\u015d\u015d\u0002\u0000\u011f\u011f\u0270\u0270"+
		"\u0004\u0000\u00c0\u00c0\u014b\u014b\u021d\u021d\u029f\u029f\u0002\u0000"+
		"\u00fc\u00fc\u0215\u0215\u0002\u0000\u02a8\u02a8\u02d9\u02d9\u0002\u0000"+
		"\u009d\u009d\u0214\u0214\u0002\u0000=>\u0159\u0159\u0003\u0000\u01d7\u01d7"+
		"\u01db\u01db\u0322\u0322\u0002\u0000\u0144\u0144\u02a9\u02aa\u0002\u0000"+
		"hh\u0293\u0293\u0002\u0000\u0158\u0158\u0247\u0247\u0003\u0000\u0117\u0117"+
		"\u020c\u020c\u02a9\u02a9\u0002\u0000\u0176\u0176\u02d2\u02d2\u0002\u0000"+
		"\u00c2\u00c2\u01e2\u01e2\u0002\u0000\u02c7\u02c7\u0322\u0322\u0002\u0000"+
		"\u022a\u022a\u028f\u028f\u0002\u0000\u0287\u0287\u0289\u0289\u0002\u0000"+
		"KK\u01d1\u01d1\u2421\u0000\u04fa\u0001\u0000\u0000\u0000\u0002\u0505\u0001"+
		"\u0000\u0000\u0000\u0004\u0507\u0001\u0000\u0000\u0000\u0006\u051f\u0001"+
		"\u0000\u0000\u0000\b\u054c\u0001\u0000\u0000\u0000\n\u054e\u0001\u0000"+
		"\u0000\u0000\f\u0566\u0001\u0000\u0000\u0000\u000e\u056b\u0001\u0000\u0000"+
		"\u0000\u0010\u0582\u0001\u0000\u0000\u0000\u0012\u0587\u0001\u0000\u0000"+
		"\u0000\u0014\u0590\u0001\u0000\u0000\u0000\u0016\u0595\u0001\u0000\u0000"+
		"\u0000\u0018\u059e\u0001\u0000\u0000\u0000\u001a\u05a2\u0001\u0000\u0000"+
		"\u0000\u001c\u05b0\u0001\u0000\u0000\u0000\u001e\u062f\u0001\u0000\u0000"+
		"\u0000 \u0631\u0001\u0000\u0000\u0000\"\u0693\u0001\u0000\u0000\u0000"+
		"$\u0695\u0001\u0000\u0000\u0000&\u06a0\u0001\u0000\u0000\u0000(\u06a2"+
		"\u0001\u0000\u0000\u0000*\u06ab\u0001\u0000\u0000\u0000,\u070b\u0001\u0000"+
		"\u0000\u0000.\u070d\u0001\u0000\u0000\u00000\u0711\u0001\u0000\u0000\u0000"+
		"2\u071b\u0001\u0000\u0000\u00004\u071d\u0001\u0000\u0000\u00006\u0723"+
		"\u0001\u0000\u0000\u00008\u0725\u0001\u0000\u0000\u0000:\u0731\u0001\u0000"+
		"\u0000\u0000<\u073f\u0001\u0000\u0000\u0000>\u0745\u0001\u0000\u0000\u0000"+
		"@\u074b\u0001\u0000\u0000\u0000B\u0751\u0001\u0000\u0000\u0000D\u0767"+
		"\u0001\u0000\u0000\u0000F\u0773\u0001\u0000\u0000\u0000H\u0781\u0001\u0000"+
		"\u0000\u0000J\u078a\u0001\u0000\u0000\u0000L\u078c\u0001\u0000\u0000\u0000"+
		"N\u0793\u0001\u0000\u0000\u0000P\u07af\u0001\u0000\u0000\u0000R\u07b1"+
		"\u0001\u0000\u0000\u0000T\u07b3\u0001\u0000\u0000\u0000V\u07d5\u0001\u0000"+
		"\u0000\u0000X\u07fc\u0001\u0000\u0000\u0000Z\u0803\u0001\u0000\u0000\u0000"+
		"\\\u0823\u0001\u0000\u0000\u0000^\u082c\u0001\u0000\u0000\u0000`\u0833"+
		"\u0001\u0000\u0000\u0000b\u084d\u0001\u0000\u0000\u0000d\u0856\u0001\u0000"+
		"\u0000\u0000f\u085d\u0001\u0000\u0000\u0000h\u0870\u0001\u0000\u0000\u0000"+
		"j\u087f\u0001\u0000\u0000\u0000l\u0886\u0001\u0000\u0000\u0000n\u08aa"+
		"\u0001\u0000\u0000\u0000p\u08ca\u0001\u0000\u0000\u0000r\u08d5\u0001\u0000"+
		"\u0000\u0000t\u08d7\u0001\u0000\u0000\u0000v\u08f1\u0001\u0000\u0000\u0000"+
		"x\u0934\u0001\u0000\u0000\u0000z\u0936\u0001\u0000\u0000\u0000|\u0953"+
		"\u0001\u0000\u0000\u0000~\u096f\u0001\u0000\u0000\u0000\u0080\u097c\u0001"+
		"\u0000\u0000\u0000\u0082\u09b0\u0001\u0000\u0000\u0000\u0084\u09c8\u0001"+
		"\u0000\u0000\u0000\u0086\u09d3\u0001\u0000\u0000\u0000\u0088\u09e5\u0001"+
		"\u0000\u0000\u0000\u008a\u09f1\u0001\u0000\u0000\u0000\u008c\u0a00\u0001"+
		"\u0000\u0000\u0000\u008e\u0a04\u0001\u0000\u0000\u0000\u0090\u0a09\u0001"+
		"\u0000\u0000\u0000\u0092\u0a52\u0001\u0000\u0000\u0000\u0094\u0a54\u0001"+
		"\u0000\u0000\u0000\u0096\u0a5a\u0001\u0000\u0000\u0000\u0098\u0a5e\u0001"+
		"\u0000\u0000\u0000\u009a\u0a61\u0001\u0000\u0000\u0000\u009c\u0a7f\u0001"+
		"\u0000\u0000\u0000\u009e\u0a89\u0001\u0000\u0000\u0000\u00a0\u0a8b\u0001"+
		"\u0000\u0000\u0000\u00a2\u0a8d\u0001\u0000\u0000\u0000\u00a4\u0a90\u0001"+
		"\u0000\u0000\u0000\u00a6\u0a9b\u0001\u0000\u0000\u0000\u00a8\u0aa9\u0001"+
		"\u0000\u0000\u0000\u00aa\u0aab\u0001\u0000\u0000\u0000\u00ac\u0ab8\u0001"+
		"\u0000\u0000\u0000\u00ae\u0ac2\u0001\u0000\u0000\u0000\u00b0\u0ac4\u0001"+
		"\u0000\u0000\u0000\u00b2\u0ac7\u0001\u0000\u0000\u0000\u00b4\u0ace\u0001"+
		"\u0000\u0000\u0000\u00b6\u0ad0\u0001\u0000\u0000\u0000\u00b8\u0b5d\u0001"+
		"\u0000\u0000\u0000\u00ba\u0b7a\u0001\u0000\u0000\u0000\u00bc\u0b7c\u0001"+
		"\u0000\u0000\u0000\u00be\u0b91\u0001\u0000\u0000\u0000\u00c0\u0b96\u0001"+
		"\u0000\u0000\u0000\u00c2\u0b98\u0001\u0000\u0000\u0000\u00c4\u0ba3\u0001"+
		"\u0000\u0000\u0000\u00c6\u0bcd\u0001\u0000\u0000\u0000\u00c8\u0bcf\u0001"+
		"\u0000\u0000\u0000\u00ca\u0bff\u0001\u0000\u0000\u0000\u00cc\u0c01\u0001"+
		"\u0000\u0000\u0000\u00ce\u0c09\u0001\u0000\u0000\u0000\u00d0\u0c34\u0001"+
		"\u0000\u0000\u0000\u00d2\u0c3a\u0001\u0000\u0000\u0000\u00d4\u0c3e\u0001"+
		"\u0000\u0000\u0000\u00d6\u0c4e\u0001\u0000\u0000\u0000\u00d8\u0c67\u0001"+
		"\u0000\u0000\u0000\u00da\u0c6a\u0001\u0000\u0000\u0000\u00dc\u0c71\u0001"+
		"\u0000\u0000\u0000\u00de\u0c73\u0001\u0000\u0000\u0000\u00e0\u0c75\u0001"+
		"\u0000\u0000\u0000\u00e2\u0c8c\u0001\u0000\u0000\u0000\u00e4\u0c94\u0001"+
		"\u0000\u0000\u0000\u00e6\u0ca4\u0001\u0000\u0000\u0000\u00e8\u0cbd\u0001"+
		"\u0000\u0000\u0000\u00ea\u0cbf\u0001\u0000\u0000\u0000\u00ec\u0cda\u0001"+
		"\u0000\u0000\u0000\u00ee\u0cfa\u0001\u0000\u0000\u0000\u00f0\u0cfd\u0001"+
		"\u0000\u0000\u0000\u00f2\u0d03\u0001\u0000\u0000\u0000\u00f4\u0d13\u0001"+
		"\u0000\u0000\u0000\u00f6\u0d22\u0001\u0000\u0000\u0000\u00f8\u0d28\u0001"+
		"\u0000\u0000\u0000\u00fa\u0d3b\u0001\u0000\u0000\u0000\u00fc\u0d3d\u0001"+
		"\u0000\u0000\u0000\u00fe\u0d40\u0001\u0000\u0000\u0000\u0100\u0d46\u0001"+
		"\u0000\u0000\u0000\u0102\u0d57\u0001\u0000\u0000\u0000\u0104\u0d5f\u0001"+
		"\u0000\u0000\u0000\u0106\u0d61\u0001\u0000\u0000\u0000\u0108\u0d67\u0001"+
		"\u0000\u0000\u0000\u010a\u0d75\u0001\u0000\u0000\u0000\u010c\u0d8e\u0001"+
		"\u0000\u0000\u0000\u010e\u0d92\u0001\u0000\u0000\u0000\u0110\u0d98\u0001"+
		"\u0000\u0000\u0000\u0112\u0d9a\u0001\u0000\u0000\u0000\u0114\u0d9c\u0001"+
		"\u0000\u0000\u0000\u0116\u0d9e\u0001\u0000\u0000\u0000\u0118\u0dab\u0001"+
		"\u0000\u0000\u0000\u011a\u0dad\u0001\u0000\u0000\u0000\u011c\u0dbc\u0001"+
		"\u0000\u0000\u0000\u011e\u0dc9\u0001\u0000\u0000\u0000\u0120\u0dcd\u0001"+
		"\u0000\u0000\u0000\u0122\u0dd4\u0001\u0000\u0000\u0000\u0124\u0dda\u0001"+
		"\u0000\u0000\u0000\u0126\u0de2\u0001\u0000\u0000\u0000\u0128\u0de6\u0001"+
		"\u0000\u0000\u0000\u012a\u0df8\u0001\u0000\u0000\u0000\u012c\u0e02\u0001"+
		"\u0000\u0000\u0000\u012e\u0e13\u0001\u0000\u0000\u0000\u0130\u0e1d\u0001"+
		"\u0000\u0000\u0000\u0132\u0e1f\u0001\u0000\u0000\u0000\u0134\u0e29\u0001"+
		"\u0000\u0000\u0000\u0136\u0e34\u0001\u0000\u0000\u0000\u0138\u0e40\u0001"+
		"\u0000\u0000\u0000\u013a\u0e45\u0001\u0000\u0000\u0000\u013c\u0e50\u0001"+
		"\u0000\u0000\u0000\u013e\u0e60\u0001\u0000\u0000\u0000\u0140\u0e67\u0001"+
		"\u0000\u0000\u0000\u0142\u0e79\u0001\u0000\u0000\u0000\u0144\u0e85\u0001"+
		"\u0000\u0000\u0000\u0146\u0e95\u0001\u0000\u0000\u0000\u0148\u0e9a\u0001"+
		"\u0000\u0000\u0000\u014a\u0e9f\u0001\u0000\u0000\u0000\u014c\u0eb7\u0001"+
		"\u0000\u0000\u0000\u014e\u0ebc\u0001\u0000\u0000\u0000\u0150\u0ebe\u0001"+
		"\u0000\u0000\u0000\u0152\u0ec1\u0001\u0000\u0000\u0000\u0154\u0ed1\u0001"+
		"\u0000\u0000\u0000\u0156\u0ed9\u0001\u0000\u0000\u0000\u0158\u0eed\u0001"+
		"\u0000\u0000\u0000\u015a\u0ef5\u0001\u0000\u0000\u0000\u015c\u0f04\u0001"+
		"\u0000\u0000\u0000\u015e\u0f07\u0001\u0000\u0000\u0000\u0160\u0f18\u0001"+
		"\u0000\u0000\u0000\u0162\u0f21\u0001\u0000\u0000\u0000\u0164\u0f29\u0001"+
		"\u0000\u0000\u0000\u0166\u0f36\u0001\u0000\u0000\u0000\u0168\u0f38\u0001"+
		"\u0000\u0000\u0000\u016a\u0f52\u0001\u0000\u0000\u0000\u016c\u0f62\u0001"+
		"\u0000\u0000\u0000\u016e\u0f6f\u0001\u0000\u0000\u0000\u0170\u0f71\u0001"+
		"\u0000\u0000\u0000\u0172\u0f7a\u0001\u0000\u0000\u0000\u0174\u0f8c\u0001"+
		"\u0000\u0000\u0000\u0176\u0f96\u0001\u0000\u0000\u0000\u0178\u0f9a\u0001"+
		"\u0000\u0000\u0000\u017a\u0fa4\u0001\u0000\u0000\u0000\u017c\u0fa6\u0001"+
		"\u0000\u0000\u0000\u017e\u0fda\u0001\u0000\u0000\u0000\u0180\u1004\u0001"+
		"\u0000\u0000\u0000\u0182\u1007\u0001\u0000\u0000\u0000\u0184\u100a\u0001"+
		"\u0000\u0000\u0000\u0186\u1014\u0001\u0000\u0000\u0000\u0188\u1020\u0001"+
		"\u0000\u0000\u0000\u018a\u1032\u0001\u0000\u0000\u0000\u018c\u1034\u0001"+
		"\u0000\u0000\u0000\u018e\u1038\u0001\u0000\u0000\u0000\u0190\u1049\u0001"+
		"\u0000\u0000\u0000\u0192\u104b\u0001\u0000\u0000\u0000\u0194\u1050\u0001"+
		"\u0000\u0000\u0000\u0196\u1055\u0001\u0000\u0000\u0000\u0198\u105a\u0001"+
		"\u0000\u0000\u0000\u019a\u1062\u0001\u0000\u0000\u0000\u019c\u106f\u0001"+
		"\u0000\u0000\u0000\u019e\u1093\u0001\u0000\u0000\u0000\u01a0\u1095\u0001"+
		"\u0000\u0000\u0000\u01a2\u10a1\u0001\u0000\u0000\u0000\u01a4\u10a9\u0001"+
		"\u0000\u0000\u0000\u01a6\u10cc\u0001\u0000\u0000\u0000\u01a8\u10d3\u0001"+
		"\u0000\u0000\u0000\u01aa\u10d5\u0001\u0000\u0000\u0000\u01ac\u10e6\u0001"+
		"\u0000\u0000\u0000\u01ae\u10ef\u0001\u0000\u0000\u0000\u01b0\u10f1\u0001"+
		"\u0000\u0000\u0000\u01b2\u10f4\u0001\u0000\u0000\u0000\u01b4\u1102\u0001"+
		"\u0000\u0000\u0000\u01b6\u1105\u0001\u0000\u0000\u0000\u01b8\u1114\u0001"+
		"\u0000\u0000\u0000\u01ba\u1118\u0001\u0000\u0000\u0000\u01bc\u111a\u0001"+
		"\u0000\u0000\u0000\u01be\u1123\u0001\u0000\u0000\u0000\u01c0\u1127\u0001"+
		"\u0000\u0000\u0000\u01c2\u112f\u0001\u0000\u0000\u0000\u01c4\u113d\u0001"+
		"\u0000\u0000\u0000\u01c6\u1163\u0001\u0000\u0000\u0000\u01c8\u1171\u0001"+
		"\u0000\u0000\u0000\u01ca\u1174\u0001\u0000\u0000\u0000\u01cc\u1178\u0001"+
		"\u0000\u0000\u0000\u01ce\u117d\u0001\u0000\u0000\u0000\u01d0\u117f\u0001"+
		"\u0000\u0000\u0000\u01d2\u1182\u0001\u0000\u0000\u0000\u01d4\u1186\u0001"+
		"\u0000\u0000\u0000\u01d6\u118e\u0001\u0000\u0000\u0000\u01d8\u1190\u0001"+
		"\u0000\u0000\u0000\u01da\u1199\u0001\u0000\u0000\u0000\u01dc\u119b\u0001"+
		"\u0000\u0000\u0000\u01de\u11a2\u0001\u0000\u0000\u0000\u01e0\u11a5\u0001"+
		"\u0000\u0000\u0000\u01e2\u11a9\u0001\u0000\u0000\u0000\u01e4\u11ad\u0001"+
		"\u0000\u0000\u0000\u01e6\u11b4\u0001\u0000\u0000\u0000\u01e8\u11ba\u0001"+
		"\u0000\u0000\u0000\u01ea\u11bc\u0001\u0000\u0000\u0000\u01ec\u11c0\u0001"+
		"\u0000\u0000\u0000\u01ee\u11cb\u0001\u0000\u0000\u0000\u01f0\u11cd\u0001"+
		"\u0000\u0000\u0000\u01f2\u11cf\u0001\u0000\u0000\u0000\u01f4\u11d1\u0001"+
		"\u0000\u0000\u0000\u01f6\u11d3\u0001\u0000\u0000\u0000\u01f8\u11d5\u0001"+
		"\u0000\u0000\u0000\u01fa\u11d9\u0001\u0000\u0000\u0000\u01fc\u11dd\u0001"+
		"\u0000\u0000\u0000\u01fe\u11e2\u0001\u0000\u0000\u0000\u0200\u11e4\u0001"+
		"\u0000\u0000\u0000\u0202\u11ee\u0001\u0000\u0000\u0000\u0204\u11f7\u0001"+
		"\u0000\u0000\u0000\u0206\u1201\u0001\u0000\u0000\u0000\u0208\u120a\u0001"+
		"\u0000\u0000\u0000\u020a\u1216\u0001\u0000\u0000\u0000\u020c\u1218\u0001"+
		"\u0000\u0000\u0000\u020e\u1223\u0001\u0000\u0000\u0000\u0210\u1225\u0001"+
		"\u0000\u0000\u0000\u0212\u1228\u0001\u0000\u0000\u0000\u0214\u122a\u0001"+
		"\u0000\u0000\u0000\u0216\u1235\u0001\u0000\u0000\u0000\u0218\u1237\u0001"+
		"\u0000\u0000\u0000\u021a\u123f\u0001\u0000\u0000\u0000\u021c\u1248\u0001"+
		"\u0000\u0000\u0000\u021e\u124c\u0001\u0000\u0000\u0000\u0220\u124e\u0001"+
		"\u0000\u0000\u0000\u0222\u1250\u0001\u0000\u0000\u0000\u0224\u125a\u0001"+
		"\u0000\u0000\u0000\u0226\u125c\u0001\u0000\u0000\u0000\u0228\u1267\u0001"+
		"\u0000\u0000\u0000\u022a\u126c\u0001\u0000\u0000\u0000\u022c\u1270\u0001"+
		"\u0000\u0000\u0000\u022e\u1272\u0001\u0000\u0000\u0000\u0230\u1277\u0001"+
		"\u0000\u0000\u0000\u0232\u127e\u0001\u0000\u0000\u0000\u0234\u1285\u0001"+
		"\u0000\u0000\u0000\u0236\u1289\u0001\u0000\u0000\u0000\u0238\u128b\u0001"+
		"\u0000\u0000\u0000\u023a\u128d\u0001\u0000\u0000\u0000\u023c\u128f\u0001"+
		"\u0000\u0000\u0000\u023e\u1297\u0001\u0000\u0000\u0000\u0240\u129f\u0001"+
		"\u0000\u0000\u0000\u0242\u12a7\u0001\u0000\u0000\u0000\u0244\u12a9\u0001"+
		"\u0000\u0000\u0000\u0246\u12ab\u0001\u0000\u0000\u0000\u0248\u12ad\u0001"+
		"\u0000\u0000\u0000\u024a\u12af\u0001\u0000\u0000\u0000\u024c\u12b1\u0001"+
		"\u0000\u0000\u0000\u024e\u12b3\u0001\u0000\u0000\u0000\u0250\u12b5\u0001"+
		"\u0000\u0000\u0000\u0252\u12bb\u0001\u0000\u0000\u0000\u0254\u12bd\u0001"+
		"\u0000\u0000\u0000\u0256\u12c2\u0001\u0000\u0000\u0000\u0258\u12c4\u0001"+
		"\u0000\u0000\u0000\u025a\u12cb\u0001\u0000\u0000\u0000\u025c\u12cd\u0001"+
		"\u0000\u0000\u0000\u025e\u12cf\u0001\u0000\u0000\u0000\u0260\u12d4\u0001"+
		"\u0000\u0000\u0000\u0262\u12d6\u0001\u0000\u0000\u0000\u0264\u12da\u0001"+
		"\u0000\u0000\u0000\u0266\u12dc\u0001\u0000\u0000\u0000\u0268\u12de\u0001"+
		"\u0000\u0000\u0000\u026a\u12e8\u0001\u0000\u0000\u0000\u026c\u12ea\u0001"+
		"\u0000\u0000\u0000\u026e\u12ec\u0001\u0000\u0000\u0000\u0270\u12f4\u0001"+
		"\u0000\u0000\u0000\u0272\u1306\u0001\u0000\u0000\u0000\u0274\u1308\u0001"+
		"\u0000\u0000\u0000\u0276\u130a\u0001\u0000\u0000\u0000\u0278\u130c\u0001"+
		"\u0000\u0000\u0000\u027a\u132a\u0001\u0000\u0000\u0000\u027c\u132c\u0001"+
		"\u0000\u0000\u0000\u027e\u1365\u0001\u0000\u0000\u0000\u0280\u1367\u0001"+
		"\u0000\u0000\u0000\u0282\u13cd\u0001\u0000\u0000\u0000\u0284\u13d9\u0001"+
		"\u0000\u0000\u0000\u0286\u13df\u0001\u0000\u0000\u0000\u0288\u13e4\u0001"+
		"\u0000\u0000\u0000\u028a\u13ed\u0001\u0000\u0000\u0000\u028c\u13f9\u0001"+
		"\u0000\u0000\u0000\u028e\u13fb\u0001\u0000\u0000\u0000\u0290\u1427\u0001"+
		"\u0000\u0000\u0000\u0292\u1449\u0001\u0000\u0000\u0000\u0294\u144b\u0001"+
		"\u0000\u0000\u0000\u0296\u144d\u0001\u0000\u0000\u0000\u0298\u144f\u0001"+
		"\u0000\u0000\u0000\u029a\u1454\u0001\u0000\u0000\u0000\u029c\u146c\u0001"+
		"\u0000\u0000\u0000\u029e\u147d\u0001\u0000\u0000\u0000\u02a0\u147f\u0001"+
		"\u0000\u0000\u0000\u02a2\u1481\u0001\u0000\u0000\u0000\u02a4\u1492\u0001"+
		"\u0000\u0000\u0000\u02a6\u1494\u0001\u0000\u0000\u0000\u02a8\u1499\u0001"+
		"\u0000\u0000\u0000\u02aa\u14de\u0001\u0000\u0000\u0000\u02ac\u14e0\u0001"+
		"\u0000\u0000\u0000\u02ae\u14e5\u0001\u0000\u0000\u0000\u02b0\u14eb\u0001"+
		"\u0000\u0000\u0000\u02b2\u14f5\u0001\u0000\u0000\u0000\u02b4\u14f7\u0001"+
		"\u0000\u0000\u0000\u02b6\u14f9\u0001\u0000\u0000\u0000\u02b8\u150e\u0001"+
		"\u0000\u0000\u0000\u02ba\u153d\u0001\u0000\u0000\u0000\u02bc\u1542\u0001"+
		"\u0000\u0000\u0000\u02be\u1544\u0001\u0000\u0000\u0000\u02c0\u1561\u0001"+
		"\u0000\u0000\u0000\u02c2\u1563\u0001\u0000\u0000\u0000\u02c4\u156a\u0001"+
		"\u0000\u0000\u0000\u02c6\u1590\u0001\u0000\u0000\u0000\u02c8\u1592\u0001"+
		"\u0000\u0000\u0000\u02ca\u1597\u0001\u0000\u0000\u0000\u02cc\u15a3\u0001"+
		"\u0000\u0000\u0000\u02ce\u15b1\u0001\u0000\u0000\u0000\u02d0\u15ba\u0001"+
		"\u0000\u0000\u0000\u02d2\u15c9\u0001\u0000\u0000\u0000\u02d4\u15cb\u0001"+
		"\u0000\u0000\u0000\u02d6\u15f9\u0001\u0000\u0000\u0000\u02d8\u15fb\u0001"+
		"\u0000\u0000\u0000\u02da\u161c\u0001\u0000\u0000\u0000\u02dc\u161e\u0001"+
		"\u0000\u0000\u0000\u02de\u162c\u0001\u0000\u0000\u0000\u02e0\u162e\u0001"+
		"\u0000\u0000\u0000\u02e2\u1630\u0001\u0000\u0000\u0000\u02e4\u1635\u0001"+
		"\u0000\u0000\u0000\u02e6\u1638\u0001\u0000\u0000\u0000\u02e8\u163b\u0001"+
		"\u0000\u0000\u0000\u02ea\u163e\u0001\u0000\u0000\u0000\u02ec\u1640\u0001"+
		"\u0000\u0000\u0000\u02ee\u164c\u0001\u0000\u0000\u0000\u02f0\u16f0\u0001"+
		"\u0000\u0000\u0000\u02f2\u16f2\u0001\u0000\u0000\u0000\u02f4\u1700\u0001"+
		"\u0000\u0000\u0000\u02f6\u1704\u0001\u0000\u0000\u0000\u02f8\u1707\u0001"+
		"\u0000\u0000\u0000\u02fa\u170b\u0001\u0000\u0000\u0000\u02fc\u1711\u0001"+
		"\u0000\u0000\u0000\u02fe\u1723\u0001\u0000\u0000\u0000\u0300\u172b\u0001"+
		"\u0000\u0000\u0000\u0302\u1733\u0001\u0000\u0000\u0000\u0304\u1738\u0001"+
		"\u0000\u0000\u0000\u0306\u173b\u0001\u0000\u0000\u0000\u0308\u1744\u0001"+
		"\u0000\u0000\u0000\u030a\u174d\u0001\u0000\u0000\u0000\u030c\u1755\u0001"+
		"\u0000\u0000\u0000\u030e\u175d\u0001\u0000\u0000\u0000\u0310\u175f\u0001"+
		"\u0000\u0000\u0000\u0312\u1761\u0001\u0000\u0000\u0000\u0314\u1763\u0001"+
		"\u0000\u0000\u0000\u0316\u1765\u0001\u0000\u0000\u0000\u0318\u1769\u0001"+
		"\u0000\u0000\u0000\u031a\u176c\u0001\u0000\u0000\u0000\u031c\u1771\u0001"+
		"\u0000\u0000\u0000\u031e\u177e\u0001\u0000\u0000\u0000\u0320\u1782\u0001"+
		"\u0000\u0000\u0000\u0322\u1785\u0001\u0000\u0000\u0000\u0324\u1787\u0001"+
		"\u0000\u0000\u0000\u0326\u1789\u0001\u0000\u0000\u0000\u0328\u178b\u0001"+
		"\u0000\u0000\u0000\u032a\u178d\u0001\u0000\u0000\u0000\u032c\u178f\u0001"+
		"\u0000\u0000\u0000\u032e\u1791\u0001\u0000\u0000\u0000\u0330\u1795\u0001"+
		"\u0000\u0000\u0000\u0332\u1798\u0001\u0000\u0000\u0000\u0334\u179b\u0001"+
		"\u0000\u0000\u0000\u0336\u17b3\u0001\u0000\u0000\u0000\u0338\u17b6\u0001"+
		"\u0000\u0000\u0000\u033a\u17b9\u0001\u0000\u0000\u0000\u033c\u17bc\u0001"+
		"\u0000\u0000\u0000\u033e\u17c1\u0001\u0000\u0000\u0000\u0340\u17cf\u0001"+
		"\u0000\u0000\u0000\u0342\u17d1\u0001\u0000\u0000\u0000\u0344\u17e8\u0001"+
		"\u0000\u0000\u0000\u0346\u1801\u0001\u0000\u0000\u0000\u0348\u1803\u0001"+
		"\u0000\u0000\u0000\u034a\u180b\u0001\u0000\u0000\u0000\u034c\u180d\u0001"+
		"\u0000\u0000\u0000\u034e\u1811\u0001\u0000\u0000\u0000\u0350\u181f\u0001"+
		"\u0000\u0000\u0000\u0352\u1825\u0001\u0000\u0000\u0000\u0354\u182a\u0001"+
		"\u0000\u0000\u0000\u0356\u1839\u0001\u0000\u0000\u0000\u0358\u1841\u0001"+
		"\u0000\u0000\u0000\u035a\u1846\u0001\u0000\u0000\u0000\u035c\u184b\u0001"+
		"\u0000\u0000\u0000";
	private static final String _serializedATNSegment1 =
		"\u035e\u1850\u0001\u0000\u0000\u0000\u0360\u1855\u0001\u0000\u0000\u0000"+
		"\u0362\u185a\u0001\u0000\u0000\u0000\u0364\u185f\u0001\u0000\u0000\u0000"+
		"\u0366\u1864\u0001\u0000\u0000\u0000\u0368\u1869\u0001\u0000\u0000\u0000"+
		"\u036a\u186e\u0001\u0000\u0000\u0000\u036c\u1874\u0001\u0000\u0000\u0000"+
		"\u036e\u187f\u0001\u0000\u0000\u0000\u0370\u1887\u0001\u0000\u0000\u0000"+
		"\u0372\u188c\u0001\u0000\u0000\u0000\u0374\u1892\u0001\u0000\u0000\u0000"+
		"\u0376\u18a6\u0001\u0000\u0000\u0000\u0378\u18b2\u0001\u0000\u0000\u0000"+
		"\u037a\u18b6\u0001\u0000\u0000\u0000\u037c\u18bf\u0001\u0000\u0000\u0000"+
		"\u037e\u18c2\u0001\u0000\u0000\u0000\u0380\u18c5\u0001\u0000\u0000\u0000"+
		"\u0382\u18ca\u0001\u0000\u0000\u0000\u0384\u18d0\u0001\u0000\u0000\u0000"+
		"\u0386\u18d6\u0001\u0000\u0000\u0000\u0388\u18ea\u0001\u0000\u0000\u0000"+
		"\u038a\u18ed\u0001\u0000\u0000\u0000\u038c\u1900\u0001\u0000\u0000\u0000"+
		"\u038e\u1903\u0001\u0000\u0000\u0000\u0390\u1907\u0001\u0000\u0000\u0000"+
		"\u0392\u190f\u0001\u0000\u0000\u0000\u0394\u1917\u0001\u0000\u0000\u0000"+
		"\u0396\u191f\u0001\u0000\u0000\u0000\u0398\u1928\u0001\u0000\u0000\u0000"+
		"\u039a\u1936\u0001\u0000\u0000\u0000\u039c\u193e\u0001\u0000\u0000\u0000"+
		"\u039e\u1946\u0001\u0000\u0000\u0000\u03a0\u1951\u0001\u0000\u0000\u0000"+
		"\u03a2\u1954\u0001\u0000\u0000\u0000\u03a4\u195e\u0001\u0000\u0000\u0000"+
		"\u03a6\u197d\u0001\u0000\u0000\u0000\u03a8\u197f\u0001\u0000\u0000\u0000"+
		"\u03aa\u198c\u0001\u0000\u0000\u0000\u03ac\u1990\u0001\u0000\u0000\u0000"+
		"\u03ae\u1992\u0001\u0000\u0000\u0000\u03b0\u199c\u0001\u0000\u0000\u0000"+
		"\u03b2\u19a2\u0001\u0000\u0000\u0000\u03b4\u19ac\u0001\u0000\u0000\u0000"+
		"\u03b6\u19b0\u0001\u0000\u0000\u0000\u03b8\u19c6\u0001\u0000\u0000\u0000"+
		"\u03ba\u19c8\u0001\u0000\u0000\u0000\u03bc\u19d5\u0001\u0000\u0000\u0000"+
		"\u03be\u19d7\u0001\u0000\u0000\u0000\u03c0\u19dd\u0001\u0000\u0000\u0000"+
		"\u03c2\u19e4\u0001\u0000\u0000\u0000\u03c4\u19f3\u0001\u0000\u0000\u0000"+
		"\u03c6\u1a17\u0001\u0000\u0000\u0000\u03c8\u1a19\u0001\u0000\u0000\u0000"+
		"\u03ca\u1a38\u0001\u0000\u0000\u0000\u03cc\u1a3f\u0001\u0000\u0000\u0000"+
		"\u03ce\u1a4e\u0001\u0000\u0000\u0000\u03d0\u1a51\u0001\u0000\u0000\u0000"+
		"\u03d2\u1a68\u0001\u0000\u0000\u0000\u03d4\u1a80\u0001\u0000\u0000\u0000"+
		"\u03d6\u1a82\u0001\u0000\u0000\u0000\u03d8\u1aa8\u0001\u0000\u0000\u0000"+
		"\u03da\u1ad1\u0001\u0000\u0000\u0000\u03dc\u1ad3\u0001\u0000\u0000\u0000"+
		"\u03de\u1ad9\u0001\u0000\u0000\u0000\u03e0\u1ae5\u0001\u0000\u0000\u0000"+
		"\u03e2\u1b09\u0001\u0000\u0000\u0000\u03e4\u1b1a\u0001\u0000\u0000\u0000"+
		"\u03e6\u1b1c\u0001\u0000\u0000\u0000\u03e8\u1b24\u0001\u0000\u0000\u0000"+
		"\u03ea\u1b26\u0001\u0000\u0000\u0000\u03ec\u1b28\u0001\u0000\u0000\u0000"+
		"\u03ee\u1b31\u0001\u0000\u0000\u0000\u03f0\u1b33\u0001\u0000\u0000\u0000"+
		"\u03f2\u1b35\u0001\u0000\u0000\u0000\u03f4\u1b63\u0001\u0000\u0000\u0000"+
		"\u03f6\u1b65\u0001\u0000\u0000\u0000\u03f8\u1b6c\u0001\u0000\u0000\u0000"+
		"\u03fa\u1b8d\u0001\u0000\u0000\u0000\u03fc\u1b93\u0001\u0000\u0000\u0000"+
		"\u03fe\u1b95\u0001\u0000\u0000\u0000\u0400\u1b9f\u0001\u0000\u0000\u0000"+
		"\u0402\u1bb3\u0001\u0000\u0000\u0000\u0404\u1bb6\u0001\u0000\u0000\u0000"+
		"\u0406\u1bba\u0001\u0000\u0000\u0000\u0408\u1bc9\u0001\u0000\u0000\u0000"+
		"\u040a\u1bcc\u0001\u0000\u0000\u0000\u040c\u1bd0\u0001\u0000\u0000\u0000"+
		"\u040e\u1bf0\u0001\u0000\u0000\u0000\u0410\u1bf7\u0001\u0000\u0000\u0000"+
		"\u0412\u1bfb\u0001\u0000\u0000\u0000\u0414\u1c0c\u0001\u0000\u0000\u0000"+
		"\u0416\u1c0e\u0001\u0000\u0000\u0000\u0418\u1c48\u0001\u0000\u0000\u0000"+
		"\u041a\u1c77\u0001\u0000\u0000\u0000\u041c\u1c79\u0001\u0000\u0000\u0000"+
		"\u041e\u1c81\u0001\u0000\u0000\u0000\u0420\u1cdb\u0001\u0000\u0000\u0000"+
		"\u0422\u1cdd\u0001\u0000\u0000\u0000\u0424\u1ce6\u0001\u0000\u0000\u0000"+
		"\u0426\u1ce8\u0001\u0000\u0000\u0000\u0428\u1d21\u0001\u0000\u0000\u0000"+
		"\u042a\u1d23\u0001\u0000\u0000\u0000\u042c\u1d2b\u0001\u0000\u0000\u0000"+
		"\u042e\u1d35\u0001\u0000\u0000\u0000\u0430\u1d45\u0001\u0000\u0000\u0000"+
		"\u0432\u1d4e\u0001\u0000\u0000\u0000\u0434\u1d72\u0001\u0000\u0000\u0000"+
		"\u0436\u1da0\u0001\u0000\u0000\u0000\u0438\u1da2\u0001\u0000\u0000\u0000"+
		"\u043a\u1da6\u0001\u0000\u0000\u0000\u043c\u1dae\u0001\u0000\u0000\u0000"+
		"\u043e\u1dbb\u0001\u0000\u0000\u0000\u0440\u1dc8\u0001\u0000\u0000\u0000"+
		"\u0442\u1dd5\u0001\u0000\u0000\u0000\u0444\u1de4\u0001\u0000\u0000\u0000"+
		"\u0446\u1dfc\u0001\u0000\u0000\u0000\u0448\u1e07\u0001\u0000\u0000\u0000"+
		"\u044a\u1e21\u0001\u0000\u0000\u0000\u044c\u1e23\u0001\u0000\u0000\u0000"+
		"\u044e\u1e27\u0001\u0000\u0000\u0000\u0450\u1e2f\u0001\u0000\u0000\u0000"+
		"\u0452\u1e37\u0001\u0000\u0000\u0000\u0454\u1e3c\u0001\u0000\u0000\u0000"+
		"\u0456\u1e4c\u0001\u0000\u0000\u0000\u0458\u1e4e\u0001\u0000\u0000\u0000"+
		"\u045a\u1e7d\u0001\u0000\u0000\u0000\u045c\u1e87\u0001\u0000\u0000\u0000"+
		"\u045e\u1e8f\u0001\u0000\u0000\u0000\u0460\u1e95\u0001\u0000\u0000\u0000"+
		"\u0462\u1e99\u0001\u0000\u0000\u0000\u0464\u1e9b\u0001\u0000\u0000\u0000"+
		"\u0466\u1ea2\u0001\u0000\u0000\u0000\u0468\u1ea9\u0001\u0000\u0000\u0000"+
		"\u046a\u1eb5\u0001\u0000\u0000\u0000\u046c\u1ec0\u0001\u0000\u0000\u0000"+
		"\u046e\u1ec2\u0001\u0000\u0000\u0000\u0470\u1ec5\u0001\u0000\u0000\u0000"+
		"\u0472\u1ec8\u0001\u0000\u0000\u0000\u0474\u1ed2\u0001\u0000\u0000\u0000"+
		"\u0476\u1ed6\u0001\u0000\u0000\u0000\u0478\u1ed8\u0001\u0000\u0000\u0000"+
		"\u047a\u1ef2\u0001\u0000\u0000\u0000\u047c\u1f03\u0001\u0000\u0000\u0000"+
		"\u047e\u1f6e\u0001\u0000\u0000\u0000\u0480\u1f70\u0001\u0000\u0000\u0000"+
		"\u0482\u1f74\u0001\u0000\u0000\u0000\u0484\u1f76\u0001\u0000\u0000\u0000"+
		"\u0486\u1faf\u0001\u0000\u0000\u0000\u0488\u1fb1\u0001\u0000\u0000\u0000"+
		"\u048a\u1fb9\u0001\u0000\u0000\u0000\u048c\u04f1\u0003\u015a\u00ad\u0000"+
		"\u048d\u04f1\u0003\u0128\u0094\u0000\u048e\u04f1\u0003\u0144\u00a2\u0000"+
		"\u048f\u04f1\u0003\u0152\u00a9\u0000\u0490\u04f1\u0003\u013c\u009e\u0000"+
		"\u0491\u04f1\u0003\u03ce\u01e7\u0000\u0492\u04f1\u0003\u0004\u0002\u0000"+
		"\u0493\u04f1\u0003\u0002\u0001\u0000\u0494\u04f1\u0003\u03c2\u01e1\u0000"+
		"\u0495\u04f1\u00038\u001c\u0000\u0496\u04f1\u0003@ \u0000\u0497\u04f1"+
		"\u0003B!\u0000\u0498\u04f1\u0003:\u001d\u0000\u0499\u04f1\u0003`0\u0000"+
		"\u049a\u04f1\u0003d2\u0000\u049b\u04f1\u0003Z-\u0000\u049c\u04f1\u0003"+
		"^/\u0000\u049d\u04f1\u0003D\"\u0000\u049e\u04f1\u0003L&\u0000\u049f\u04f1"+
		"\u0003T*\u0000\u04a0\u04f1\u0003X,\u0000\u04a1\u04f1\u0003\u0080@\u0000"+
		"\u04a2\u04f1\u0003\u0084B\u0000\u04a3\u04f1\u0003f3\u0000\u04a4\u04f1"+
		"\u0003j5\u0000\u04a5\u04f1\u0003l6\u0000\u04a6\u04f1\u0003p8\u0000\u04a7"+
		"\u04f1\u0003\u0086C\u0000\u04a8\u04f1\u0003\u0088D\u0000\u04a9\u04f1\u0003"+
		"\u03c4\u01e2\u0000\u04aa\u04f1\u0003\u03c8\u01e4\u0000\u04ab\u04f1\u0003"+
		"\u03ca\u01e5\u0000\u04ac\u04f1\u0003\u0120\u0090\u0000\u04ad\u04f1\u0003"+
		"\u0122\u0091\u0000\u04ae\u04f1\u0003\u0126\u0093\u0000\u04af\u04f1\u0003"+
		"\u03f6\u01fb\u0000\u04b0\u04f1\u0003\u03fa\u01fd\u0000\u04b1\u04f1\u0003"+
		"\u03f8\u01fc\u0000\u04b2\u04f1\u0003\u03fe\u01ff\u0000\u04b3\u04f1\u0003"+
		"\u0400\u0200\u0000\u04b4\u04f1\u0003\u0402\u0201\u0000\u04b5\u04f1\u0003"+
		"\u0418\u020c\u0000\u04b6\u04f1\u0003\u041a\u020d\u0000\u04b7\u04f1\u0003"+
		"\u0426\u0213\u0000\u04b8\u04f1\u0003\u043c\u021e\u0000\u04b9\u04f1\u0003"+
		"\u0436\u021b\u0000\u04ba\u04f1\u0003\u0442\u0221\u0000\u04bb\u04f1\u0003"+
		"\u043e\u021f\u0000\u04bc\u04f1\u0003\u0440\u0220\u0000\u04bd\u04f1\u0003"+
		"\u0444\u0222\u0000\u04be\u04f1\u0003\u0446\u0223\u0000\u04bf\u04f1\u0003"+
		"\u00ba]\u0000\u04c0\u04f1\u0003\u00bc^\u0000\u04c1\u04f1\u0003\u03d6\u01eb"+
		"\u0000\u04c2\u04f1\u0003\u010a\u0085\u0000\u04c3\u04f1\u0003\u046c\u0236"+
		"\u0000\u04c4\u04f1\u0003\u016e\u00b7\u0000\u04c5\u04f1\u0003\u0332\u0199"+
		"\u0000\u04c6\u04f1\u0003\u0178\u00bc\u0000\u04c7\u04f1\u0003\u03aa\u01d5"+
		"\u0000\u04c8\u04f1\u0003\u03dc\u01ee\u0000\u04c9\u04f1\u0003\u017a\u00bd"+
		"\u0000\u04ca\u04f1\u0003\u0406\u0203\u0000\u04cb\u04f1\u0003\u03d0\u01e8"+
		"\u0000\u04cc\u04f1\u0003\u03de\u01ef\u0000\u04cd\u04f1\u0003\u03c0\u01e0"+
		"\u0000\u04ce\u04f1\u0003\u0472\u0239\u0000\u04cf\u04f1\u0003\u040a\u0205"+
		"\u0000\u04d0\u04f1\u0003\u03e2\u01f1\u0000\u04d1\u04f1\u0003\u0448\u0224"+
		"\u0000\u04d2\u04f1\u0003\u03f6\u01fb\u0000\u04d3\u04f1\u0003\u03cc\u01e6"+
		"\u0000\u04d4\u04f1\u0003\u011a\u008d\u0000\u04d5\u04f1\u0003\u011c\u008e"+
		"\u0000\u04d6\u04f1\u0003\u03e8\u01f4\u0000\u04d7\u04f1\u0003\u03ea\u01f5"+
		"\u0000\u04d8\u04f1\u0003\u0404\u0202\u0000\u04d9\u04f1\u0003\u0330\u0198"+
		"\u0000\u04da\u04f1\u0003\u0334\u019a\u0000\u04db\u04f1\u0003\u016c\u00b6"+
		"\u0000\u04dc\u04f1\u0003\u03f4\u01fa\u0000\u04dd\u04f1\u0003\u0342\u01a1"+
		"\u0000\u04de\u04f1\u0003\u03a2\u01d1\u0000\u04df\u04f1\u0003\u016a\u00b5"+
		"\u0000\u04e0\u04f1\u0003\u0462\u0231\u0000\u04e1\u04f1\u0003\u03ba\u01dd"+
		"\u0000\u04e2\u04f1\u0003\u03be\u01df\u0000\u04e3\u04f1\u0003\u03a4\u01d2"+
		"\u0000\u04e4\u04f1\u0003\u0468\u0234\u0000\u04e5\u04f1\u0003\u046a\u0235"+
		"\u0000\u04e6\u04f1\u0003\u03b6\u01db\u0000\u04e7\u04f1\u0003\u008aE\u0000"+
		"\u04e8\u04f1\u0003\u03ac\u01d6\u0000\u04e9\u04f1\u0003\u0408\u0204\u0000"+
		"\u04ea\u04f1\u0003\u040c\u0206\u0000\u04eb\u04f1\u0003\u03a8\u01d4\u0000"+
		"\u04ec\u04f1\u0003r9\u0000\u04ed\u04f1\u0003x<\u0000\u04ee\u04f1\u0003"+
		"~?\u0000\u04ef\u04f1\u0003\u03f2\u01f9\u0000\u04f0\u048c\u0001\u0000\u0000"+
		"\u0000\u04f0\u048d\u0001\u0000\u0000\u0000\u04f0\u048e\u0001\u0000\u0000"+
		"\u0000\u04f0\u048f\u0001\u0000\u0000\u0000\u04f0\u0490\u0001\u0000\u0000"+
		"\u0000\u04f0\u0491\u0001\u0000\u0000\u0000\u04f0\u0492\u0001\u0000\u0000"+
		"\u0000\u04f0\u0493\u0001\u0000\u0000\u0000\u04f0\u0494\u0001\u0000\u0000"+
		"\u0000\u04f0\u0495\u0001\u0000\u0000\u0000\u04f0\u0496\u0001\u0000\u0000"+
		"\u0000\u04f0\u0497\u0001\u0000\u0000\u0000\u04f0\u0498\u0001\u0000\u0000"+
		"\u0000\u04f0\u0499\u0001\u0000\u0000\u0000\u04f0\u049a\u0001\u0000\u0000"+
		"\u0000\u04f0\u049b\u0001\u0000\u0000\u0000\u04f0\u049c\u0001\u0000\u0000"+
		"\u0000\u04f0\u049d\u0001\u0000\u0000\u0000\u04f0\u049e\u0001\u0000\u0000"+
		"\u0000\u04f0\u049f\u0001\u0000\u0000\u0000\u04f0\u04a0\u0001\u0000\u0000"+
		"\u0000\u04f0\u04a1\u0001\u0000\u0000\u0000\u04f0\u04a2\u0001\u0000\u0000"+
		"\u0000\u04f0\u04a3\u0001\u0000\u0000\u0000\u04f0\u04a4\u0001\u0000\u0000"+
		"\u0000\u04f0\u04a5\u0001\u0000\u0000\u0000\u04f0\u04a6\u0001\u0000\u0000"+
		"\u0000\u04f0\u04a7\u0001\u0000\u0000\u0000\u04f0\u04a8\u0001\u0000\u0000"+
		"\u0000\u04f0\u04a9\u0001\u0000\u0000\u0000\u04f0\u04aa\u0001\u0000\u0000"+
		"\u0000\u04f0\u04ab\u0001\u0000\u0000\u0000\u04f0\u04ac\u0001\u0000\u0000"+
		"\u0000\u04f0\u04ad\u0001\u0000\u0000\u0000\u04f0\u04ae\u0001\u0000\u0000"+
		"\u0000\u04f0\u04af\u0001\u0000\u0000\u0000\u04f0\u04b0\u0001\u0000\u0000"+
		"\u0000\u04f0\u04b1\u0001\u0000\u0000\u0000\u04f0\u04b2\u0001\u0000\u0000"+
		"\u0000\u04f0\u04b3\u0001\u0000\u0000\u0000\u04f0\u04b4\u0001\u0000\u0000"+
		"\u0000\u04f0\u04b5\u0001\u0000\u0000\u0000\u04f0\u04b6\u0001\u0000\u0000"+
		"\u0000\u04f0\u04b7\u0001\u0000\u0000\u0000\u04f0\u04b8\u0001\u0000\u0000"+
		"\u0000\u04f0\u04b9\u0001\u0000\u0000\u0000\u04f0\u04ba\u0001\u0000\u0000"+
		"\u0000\u04f0\u04bb\u0001\u0000\u0000\u0000\u04f0\u04bc\u0001\u0000\u0000"+
		"\u0000\u04f0\u04bd\u0001\u0000\u0000\u0000\u04f0\u04be\u0001\u0000\u0000"+
		"\u0000\u04f0\u04bf\u0001\u0000\u0000\u0000\u04f0\u04c0\u0001\u0000\u0000"+
		"\u0000\u04f0\u04c1\u0001\u0000\u0000\u0000\u04f0\u04c2\u0001\u0000\u0000"+
		"\u0000\u04f0\u04c3\u0001\u0000\u0000\u0000\u04f0\u04c4\u0001\u0000\u0000"+
		"\u0000\u04f0\u04c5\u0001\u0000\u0000\u0000\u04f0\u04c6\u0001\u0000\u0000"+
		"\u0000\u04f0\u04c7\u0001\u0000\u0000\u0000\u04f0\u04c8\u0001\u0000\u0000"+
		"\u0000\u04f0\u04c9\u0001\u0000\u0000\u0000\u04f0\u04ca\u0001\u0000\u0000"+
		"\u0000\u04f0\u04cb\u0001\u0000\u0000\u0000\u04f0\u04cc\u0001\u0000\u0000"+
		"\u0000\u04f0\u04cd\u0001\u0000\u0000\u0000\u04f0\u04ce\u0001\u0000\u0000"+
		"\u0000\u04f0\u04cf\u0001\u0000\u0000\u0000\u04f0\u04d0\u0001\u0000\u0000"+
		"\u0000\u04f0\u04d1\u0001\u0000\u0000\u0000\u04f0\u04d2\u0001\u0000\u0000"+
		"\u0000\u04f0\u04d3\u0001\u0000\u0000\u0000\u04f0\u04d4\u0001\u0000\u0000"+
		"\u0000\u04f0\u04d5\u0001\u0000\u0000\u0000\u04f0\u04d6\u0001\u0000\u0000"+
		"\u0000\u04f0\u04d7\u0001\u0000\u0000\u0000\u04f0\u04d8\u0001\u0000\u0000"+
		"\u0000\u04f0\u04d9\u0001\u0000\u0000\u0000\u04f0\u04da\u0001\u0000\u0000"+
		"\u0000\u04f0\u04db\u0001\u0000\u0000\u0000\u04f0\u04dc\u0001\u0000\u0000"+
		"\u0000\u04f0\u04dd\u0001\u0000\u0000\u0000\u04f0\u04de\u0001\u0000\u0000"+
		"\u0000\u04f0\u04df\u0001\u0000\u0000\u0000\u04f0\u04e0\u0001\u0000\u0000"+
		"\u0000\u04f0\u04e1\u0001\u0000\u0000\u0000\u04f0\u04e2\u0001\u0000\u0000"+
		"\u0000\u04f0\u04e3\u0001\u0000\u0000\u0000\u04f0\u04e4\u0001\u0000\u0000"+
		"\u0000\u04f0\u04e5\u0001\u0000\u0000\u0000\u04f0\u04e6\u0001\u0000\u0000"+
		"\u0000\u04f0\u04e7\u0001\u0000\u0000\u0000\u04f0\u04e8\u0001\u0000\u0000"+
		"\u0000\u04f0\u04e9\u0001\u0000\u0000\u0000\u04f0\u04ea\u0001\u0000\u0000"+
		"\u0000\u04f0\u04eb\u0001\u0000\u0000\u0000\u04f0\u04ec\u0001\u0000\u0000"+
		"\u0000\u04f0\u04ed\u0001\u0000\u0000\u0000\u04f0\u04ee\u0001\u0000\u0000"+
		"\u0000\u04f0\u04ef\u0001\u0000\u0000\u0000\u04f1\u04f7\u0001\u0000\u0000"+
		"\u0000\u04f2\u04f4\u0005,\u0000\u0000\u04f3\u04f5\u0005\u0000\u0000\u0001"+
		"\u04f4\u04f3\u0001\u0000\u0000\u0000\u04f4\u04f5\u0001\u0000\u0000\u0000"+
		"\u04f5\u04f8\u0001\u0000\u0000\u0000\u04f6\u04f8\u0005\u0000\u0000\u0001"+
		"\u04f7\u04f2\u0001\u0000\u0000\u0000\u04f7\u04f6\u0001\u0000\u0000\u0000"+
		"\u04f8\u04fb\u0001\u0000\u0000\u0000\u04f9\u04fb\u0005\u0000\u0000\u0001"+
		"\u04fa\u04f0\u0001\u0000\u0000\u0000\u04fa\u04f9\u0001\u0000\u0000\u0000"+
		"\u04fb\u0001\u0001\u0000\u0000\u0000\u04fc\u0506\u0003\u0010\b\u0000\u04fd"+
		"\u0506\u0003F#\u0000\u04fe\u0506\u0003b1\u0000\u04ff\u0506\u0003\\.\u0000"+
		"\u0500\u0506\u0003V+\u0000\u0501\u0506\u0003n7\u0000\u0502\u0506\u0003"+
		"\u0082A\u0000\u0503\u0506\u0003N\'\u0000\u0504\u0506\u0003h4\u0000\u0505"+
		"\u04fc\u0001\u0000\u0000\u0000\u0505\u04fd\u0001\u0000\u0000\u0000\u0505"+
		"\u04fe\u0001\u0000\u0000\u0000\u0505\u04ff\u0001\u0000\u0000\u0000\u0505"+
		"\u0500\u0001\u0000\u0000\u0000\u0505\u0501\u0001\u0000\u0000\u0000\u0505"+
		"\u0502\u0001\u0000\u0000\u0000\u0505\u0503\u0001\u0000\u0000\u0000\u0505"+
		"\u0504\u0001\u0000\u0000\u0000\u0506\u0003\u0001\u0000\u0000\u0000\u0507"+
		"\u0509\u0005\u00a8\u0000\u0000\u0508\u050a\u0005\u02ae\u0000\u0000\u0509"+
		"\u0508\u0001\u0000\u0000\u0000\u0509\u050a\u0001\u0000\u0000\u0000\u050a"+
		"\u050b\u0001\u0000\u0000\u0000\u050b\u050d\u0005\u02a9\u0000\u0000\u050c"+
		"\u050e\u0003\u031e\u018f\u0000\u050d\u050c\u0001\u0000\u0000\u0000\u050d"+
		"\u050e\u0001\u0000\u0000\u0000\u050e\u050f\u0001\u0000\u0000\u0000\u050f"+
		"\u051d\u0003\u021c\u010e\u0000\u0510\u0512\u0003\u008cF\u0000\u0511\u0510"+
		"\u0001\u0000\u0000\u0000\u0511\u0512\u0001\u0000\u0000\u0000\u0512\u0514"+
		"\u0001\u0000\u0000\u0000\u0513\u0515\u0003\u00b6[\u0000\u0514\u0513\u0001"+
		"\u0000\u0000\u0000\u0514\u0515\u0001\u0000\u0000\u0000\u0515\u0517\u0001"+
		"\u0000\u0000\u0000\u0516\u0518\u0003\u0006\u0003\u0000\u0517\u0516\u0001"+
		"\u0000\u0000\u0000\u0517\u0518\u0001\u0000\u0000\u0000\u0518\u051a\u0001"+
		"\u0000\u0000\u0000\u0519\u051b\u0003\u000e\u0007\u0000\u051a\u0519\u0001"+
		"\u0000\u0000\u0000\u051a\u051b\u0001\u0000\u0000\u0000\u051b\u051e\u0001"+
		"\u0000\u0000\u0000\u051c\u051e\u0003\u00b2Y\u0000\u051d\u0511\u0001\u0000"+
		"\u0000\u0000\u051d\u051c\u0001\u0000\u0000\u0000\u051e\u0005\u0001\u0000"+
		"\u0000\u0000\u051f\u0520\u0005\u01f3\u0000\u0000\u0520\u0521\u0005u\u0000"+
		"\u0000\u0521\u0524\u0003\b\u0004\u0000\u0522\u0523\u0005\u01f5\u0000\u0000"+
		"\u0523\u0525\u0005\u0322\u0000\u0000\u0524\u0522\u0001\u0000\u0000\u0000"+
		"\u0524\u0525\u0001\u0000\u0000\u0000\u0525\u0527\u0001\u0000\u0000\u0000"+
		"\u0526\u0528\u0003\n\u0005\u0000\u0527\u0526\u0001\u0000\u0000\u0000\u0527"+
		"\u0528\u0001\u0000\u0000\u0000\u0528\u052a\u0001\u0000\u0000\u0000\u0529"+
		"\u052b\u0003\u00c2a\u0000\u052a\u0529\u0001\u0000\u0000\u0000\u052a\u052b"+
		"\u0001\u0000\u0000\u0000\u052b\u0007\u0001\u0000\u0000\u0000\u052c\u052e"+
		"\u0005\u016e\u0000\u0000\u052d\u052c\u0001\u0000\u0000\u0000\u052d\u052e"+
		"\u0001\u0000\u0000\u0000\u052e\u052f\u0001\u0000\u0000\u0000\u052f\u0531"+
		"\u0005\u015c\u0000\u0000\u0530\u0532\u0003\f\u0006\u0000\u0531\u0530\u0001"+
		"\u0000\u0000\u0000\u0531\u0532\u0001\u0000\u0000\u0000\u0532\u0533\u0001"+
		"\u0000\u0000\u0000\u0533\u0535\u0005 \u0000\u0000\u0534\u0536\u0003\u0240"+
		"\u0120\u0000\u0535\u0534\u0001\u0000\u0000\u0000\u0535\u0536\u0001\u0000"+
		"\u0000\u0000\u0536\u0537\u0001\u0000\u0000\u0000\u0537\u054d\u0005!\u0000"+
		"\u0000\u0538\u053a\u0005\u016e\u0000\u0000\u0539\u0538\u0001\u0000\u0000"+
		"\u0000\u0539\u053a\u0001\u0000\u0000\u0000\u053a\u053b\u0001\u0000\u0000"+
		"\u0000\u053b\u053c\u0005\u0127\u0000\u0000\u053c\u053d\u0005 \u0000\u0000"+
		"\u053d\u053e\u0003\u0280\u0140\u0000\u053e\u053f\u0005!\u0000\u0000\u053f"+
		"\u054d\u0001\u0000\u0000\u0000\u0540\u054a\u0007\u0000\u0000\u0000\u0541"+
		"\u0542\u0005 \u0000\u0000\u0542\u0543\u0003\u0280\u0140\u0000\u0543\u0544"+
		"\u0005!\u0000\u0000\u0544\u054b\u0001\u0000\u0000\u0000\u0545\u0546\u0005"+
		"\u0090\u0000\u0000\u0546\u0547\u0005 \u0000\u0000\u0547\u0548\u0003\u0240"+
		"\u0120\u0000\u0548\u0549\u0005!\u0000\u0000\u0549\u054b\u0001\u0000\u0000"+
		"\u0000\u054a\u0541\u0001\u0000\u0000\u0000\u054a\u0545\u0001\u0000\u0000"+
		"\u0000\u054b\u054d\u0001\u0000\u0000\u0000\u054c\u052d\u0001\u0000\u0000"+
		"\u0000\u054c\u0539\u0001\u0000\u0000\u0000\u054c\u0540\u0001\u0000\u0000"+
		"\u0000\u054d\t\u0001\u0000\u0000\u0000\u054e\u054f\u0005\u02a2\u0000\u0000"+
		"\u054f\u0551\u0005u\u0000\u0000\u0550\u0552\u0005\u016e\u0000\u0000\u0551"+
		"\u0550\u0001\u0000\u0000\u0000\u0551\u0552\u0001\u0000\u0000\u0000\u0552"+
		"\u0560\u0001\u0000\u0000\u0000\u0553\u0554\u0005\u0127\u0000\u0000\u0554"+
		"\u0555\u0005 \u0000\u0000\u0555\u0556\u0003\u0280\u0140\u0000\u0556\u0557"+
		"\u0005!\u0000\u0000\u0557\u0561\u0001\u0000\u0000\u0000\u0558\u055a\u0005"+
		"\u015c\u0000\u0000\u0559\u055b\u0003\f\u0006\u0000\u055a\u0559\u0001\u0000"+
		"\u0000\u0000\u055a\u055b\u0001\u0000\u0000\u0000\u055b\u055c\u0001\u0000"+
		"\u0000\u0000\u055c\u055d\u0005 \u0000\u0000\u055d\u055e\u0003\u0240\u0120"+
		"\u0000\u055e\u055f\u0005!\u0000\u0000\u055f\u0561\u0001\u0000\u0000\u0000"+
		"\u0560\u0553\u0001\u0000\u0000\u0000\u0560\u0558\u0001\u0000\u0000\u0000"+
		"\u0561\u0564\u0001\u0000\u0000\u0000\u0562\u0563\u0005\u02a3\u0000\u0000"+
		"\u0563\u0565\u0005\u0322\u0000\u0000\u0564\u0562\u0001\u0000\u0000\u0000"+
		"\u0564\u0565\u0001\u0000\u0000\u0000\u0565\u000b\u0001\u0000\u0000\u0000"+
		"\u0566\u0567\u0005S\u0000\u0000\u0567\u0568\u0005\u0019\u0000\u0000\u0568"+
		"\u0569\u0005\u0322\u0000\u0000\u0569\r\u0001\u0000\u0000\u0000\u056a\u056c"+
		"\u0007\u0001\u0000\u0000\u056b\u056a\u0001\u0000\u0000\u0000\u056b\u056c"+
		"\u0001\u0000\u0000\u0000\u056c\u056e\u0001\u0000\u0000\u0000\u056d\u056f"+
		"\u0005[\u0000\u0000\u056e\u056d\u0001\u0000\u0000\u0000\u056e\u056f\u0001"+
		"\u0000\u0000\u0000\u056f\u0571\u0001\u0000\u0000\u0000\u0570\u0572\u0005"+
		" \u0000\u0000\u0571\u0570\u0001\u0000\u0000\u0000\u0571\u0572\u0001\u0000"+
		"\u0000\u0000\u0572\u0573\u0001\u0000\u0000\u0000\u0573\u0575\u0003\u015a"+
		"\u00ad\u0000\u0574\u0576\u0005!\u0000\u0000\u0575\u0574\u0001\u0000\u0000"+
		"\u0000\u0575\u0576\u0001\u0000\u0000\u0000\u0576\u000f\u0001\u0000\u0000"+
		"\u0000\u0577\u0578\u0005U\u0000\u0000\u0578\u0579\u0005\u02a9\u0000\u0000"+
		"\u0579\u057b\u0003\u021c\u010e\u0000\u057a\u057c\u0003\u0014\n\u0000\u057b"+
		"\u057a\u0001\u0000\u0000\u0000\u057b\u057c\u0001\u0000\u0000\u0000\u057c"+
		"\u0583\u0001\u0000\u0000\u0000\u057d\u057e\u0005U\u0000\u0000\u057e\u057f"+
		"\u0005\u02a9\u0000\u0000\u057f\u0580\u0003\u021c\u010e\u0000\u0580\u0581"+
		"\u0003\u0012\t\u0000\u0581\u0583\u0001\u0000\u0000\u0000\u0582\u0577\u0001"+
		"\u0000\u0000\u0000\u0582\u057d\u0001\u0000\u0000\u0000\u0583\u0011\u0001"+
		"\u0000\u0000\u0000\u0584\u0585\u0003$\u0012\u0000\u0585\u0586\u0005&\u0000"+
		"\u0000\u0586\u0588\u0001\u0000\u0000\u0000\u0587\u0584\u0001\u0000\u0000"+
		"\u0000\u0587\u0588\u0001\u0000\u0000\u0000\u0588\u0589\u0001\u0000\u0000"+
		"\u0000\u0589\u058a\u0003*\u0015\u0000\u058a\u0013\u0001\u0000\u0000\u0000"+
		"\u058b\u058d\u0003\u0018\f\u0000\u058c\u058e\u0003\u0016\u000b\u0000\u058d"+
		"\u058c\u0001\u0000\u0000\u0000\u058d\u058e\u0001\u0000\u0000\u0000\u058e"+
		"\u0591\u0001\u0000\u0000\u0000\u058f\u0591\u0003\u0016\u000b\u0000\u0590"+
		"\u058b\u0001\u0000\u0000\u0000\u0590\u058f\u0001\u0000\u0000\u0000\u0591"+
		"\u0015\u0001\u0000\u0000\u0000\u0592\u0596\u0003\u0006\u0003\u0000\u0593"+
		"\u0594\u0005\u022d\u0000\u0000\u0594\u0596\u0005\u01f4\u0000\u0000\u0595"+
		"\u0592\u0001\u0000\u0000\u0000\u0595\u0593\u0001\u0000\u0000\u0000\u0596"+
		"\u0017\u0001\u0000\u0000\u0000\u0597\u059f\u0003$\u0012\u0000\u0598\u0599"+
		"\u0003$\u0012\u0000\u0599\u059a\u0005&\u0000\u0000\u059a\u059c\u0001\u0000"+
		"\u0000\u0000\u059b\u0598\u0001\u0000\u0000\u0000\u059b\u059c\u0001\u0000"+
		"\u0000\u0000\u059c\u059d\u0001\u0000\u0000\u0000\u059d\u059f\u0003\u001a"+
		"\r\u0000\u059e\u0597\u0001\u0000\u0000\u0000\u059e\u059b\u0001\u0000\u0000"+
		"\u0000\u059f\u0019\u0001\u0000\u0000\u0000\u05a0\u05a3\u0003\u001e\u000f"+
		"\u0000\u05a1\u05a3\u0003\u001c\u000e\u0000\u05a2\u05a0\u0001\u0000\u0000"+
		"\u0000\u05a2\u05a1\u0001\u0000\u0000\u0000\u05a3\u05ac\u0001\u0000\u0000"+
		"\u0000\u05a4\u05a8\u0005&\u0000\u0000\u05a5\u05a9\u0003\u001e\u000f\u0000"+
		"\u05a6\u05a9\u0003&\u0013\u0000\u05a7\u05a9\u0003\u001c\u000e\u0000\u05a8"+
		"\u05a5\u0001\u0000\u0000\u0000\u05a8\u05a6\u0001\u0000\u0000\u0000\u05a8"+
		"\u05a7\u0001\u0000\u0000\u0000\u05a9\u05ab\u0001\u0000\u0000\u0000\u05aa"+
		"\u05a4\u0001\u0000\u0000\u0000\u05ab\u05ae\u0001\u0000\u0000\u0000\u05ac"+
		"\u05aa\u0001\u0000\u0000\u0000\u05ac\u05ad\u0001\u0000\u0000\u0000\u05ad"+
		"\u001b\u0001\u0000\u0000\u0000\u05ae\u05ac\u0001\u0000\u0000\u0000\u05af"+
		"\u05b1\u0003\u00b8\\\u0000\u05b0\u05af\u0001\u0000\u0000\u0000\u05b1\u05b2"+
		"\u0001\u0000\u0000\u0000\u05b2\u05b0\u0001\u0000\u0000\u0000\u05b2\u05b3"+
		"\u0001\u0000\u0000\u0000\u05b3\u001d\u0001\u0000\u0000\u0000\u05b4\u05b6"+
		"\u0005N\u0000\u0000\u05b5\u05b7\u0005\u008f\u0000\u0000\u05b6\u05b5\u0001"+
		"\u0000\u0000\u0000\u05b6\u05b7\u0001\u0000\u0000\u0000\u05b7\u05c0\u0001"+
		"\u0000\u0000\u0000\u05b8\u05ba\u0003\u008eG\u0000\u05b9\u05bb\u0003\u00c0"+
		"`\u0000\u05ba\u05b9\u0001\u0000\u0000\u0000\u05ba\u05bb\u0001\u0000\u0000"+
		"\u0000\u05bb\u05c1\u0001\u0000\u0000\u0000\u05bc\u05bd\u0005 \u0000\u0000"+
		"\u05bd\u05be\u00030\u0018\u0000\u05be\u05bf\u0005!\u0000\u0000\u05bf\u05c1"+
		"\u0001\u0000\u0000\u0000\u05c0\u05b8\u0001\u0000\u0000\u0000\u05c0\u05bc"+
		"\u0001\u0000\u0000\u0000\u05c1\u0630\u0001\u0000\u0000\u0000\u05c2\u05c3"+
		"\u0005N\u0000\u0000\u05c3\u0630\u0003\"\u0011\u0000\u05c4\u05c6\u0005"+
		"~\u0000\u0000\u05c5\u05c7\u0005\u008f\u0000\u0000\u05c6\u05c5\u0001\u0000"+
		"\u0000\u0000\u05c6\u05c7\u0001\u0000\u0000\u0000\u05c7\u05c8\u0001\u0000"+
		"\u0000\u0000\u05c8\u05c9\u0003\u01ee\u00f7\u0000\u05c9\u05cb\u0003\u008e"+
		"G\u0000\u05ca\u05cc\u0003\u00c0`\u0000\u05cb\u05ca\u0001\u0000\u0000\u0000"+
		"\u05cb\u05cc\u0001\u0000\u0000\u0000\u05cc\u0630\u0001\u0000\u0000\u0000"+
		"\u05cd\u05cf\u0005\u01b6\u0000\u0000\u05ce\u05d0\u0005\u008f\u0000\u0000"+
		"\u05cf\u05ce\u0001\u0000\u0000\u0000\u05cf\u05d0\u0001\u0000\u0000\u0000"+
		"\u05d0\u05d1\u0001\u0000\u0000\u0000\u05d1\u05d2\u0003\u01ee\u00f7\u0000"+
		"\u05d2\u05d4\u0003\u0090H\u0000\u05d3\u05d5\u0003\u00c0`\u0000\u05d4\u05d3"+
		"\u0001\u0000\u0000\u0000\u05d4\u05d5\u0001\u0000\u0000\u0000\u05d5\u0630"+
		"\u0001\u0000\u0000\u0000\u05d6\u05ea\u0005\u00d8\u0000\u0000\u05d7\u05d9"+
		"\u0005\u008f\u0000\u0000\u05d8\u05d7\u0001\u0000\u0000\u0000\u05d8\u05d9"+
		"\u0001\u0000\u0000\u0000\u05d9\u05da\u0001\u0000\u0000\u0000\u05da\u05dc"+
		"\u0003\u01ee\u00f7\u0000\u05db\u05dd\u00034\u001a\u0000\u05dc\u05db\u0001"+
		"\u0000\u0000\u0000\u05dc\u05dd\u0001\u0000\u0000\u0000\u05dd\u05eb\u0001"+
		"\u0000\u0000\u0000\u05de\u05df\u0005\u0111\u0000\u0000\u05df\u05e0\u0005"+
		"\u015c\u0000\u0000\u05e0\u05eb\u0003\u01ee\u00f7\u0000\u05e1\u05e2\u0005"+
		"\u0209\u0000\u0000\u05e2\u05eb\u0005\u015c\u0000\u0000\u05e3\u05e4\u0003"+
		"\u0314\u018a\u0000\u05e4\u05e5\u0003\u0220\u0110\u0000\u05e5\u05eb\u0001"+
		"\u0000\u0000\u0000\u05e6\u05e7\u0005\u0084\u0000\u0000\u05e7\u05eb\u0003"+
		"\u01ee\u00f7\u0000\u05e8\u05e9\u0005\u009f\u0000\u0000\u05e9\u05eb\u0003"+
		"\u01ee\u00f7\u0000\u05ea\u05d8\u0001\u0000\u0000\u0000\u05ea\u05de\u0001"+
		"\u0000\u0000\u0000\u05ea\u05e1\u0001\u0000\u0000\u0000\u05ea\u05e3\u0001"+
		"\u0000\u0000\u0000\u05ea\u05e6\u0001\u0000\u0000\u0000\u05ea\u05e8\u0001"+
		"\u0000\u0000\u0000\u05eb\u0630\u0001\u0000\u0000\u0000\u05ec\u05ed\u0005"+
		"\u00d0\u0000\u0000\u05ed\u0630\u0005\u015d\u0000\u0000\u05ee\u05ef\u0005"+
		"\u00e1\u0000\u0000\u05ef\u0630\u0005\u015d\u0000\u0000\u05f0\u05f2\u0005"+
		"U\u0000\u0000\u05f1\u05f3\u0005\u008f\u0000\u0000\u05f2\u05f1\u0001\u0000"+
		"\u0000\u0000\u05f2\u05f3\u0001\u0000\u0000\u0000\u05f3\u05f4\u0001\u0000"+
		"\u0000\u0000\u05f4\u0602\u0003\u01ee\u00f7\u0000\u05f5\u05f6\u0005\u0271"+
		"\u0000\u0000\u05f6\u05fc\u0005\u00c2\u0000\u0000\u05f7\u05f8\u0005 \u0000"+
		"\u0000\u05f8\u05f9\u0003\u0270\u0138\u0000\u05f9\u05fa\u0005!\u0000\u0000"+
		"\u05fa\u05fd\u0001\u0000\u0000\u0000\u05fb\u05fd\u0003\u01da\u00ed\u0000"+
		"\u05fc\u05f7\u0001\u0000\u0000\u0000\u05fc\u05fb\u0001\u0000\u0000\u0000"+
		"\u05fd\u0603\u0001\u0000\u0000\u0000\u05fe\u05ff\u0005\u0271\u0000\u0000"+
		"\u05ff\u0603\u0003\u00b0X\u0000\u0600\u0601\u0005\u00d8\u0000\u0000\u0601"+
		"\u0603\u0005\u00c2\u0000\u0000\u0602\u05f5\u0001\u0000\u0000\u0000\u0602"+
		"\u05fe\u0001\u0000\u0000\u0000\u0602\u0600\u0001\u0000\u0000\u0000\u0603"+
		"\u0630\u0001\u0000\u0000\u0000\u0604\u0605\u0005U\u0000\u0000\u0605\u0606"+
		"\u0005\u013a\u0000\u0000\u0606\u0607\u0003\u0220\u0110\u0000\u0607\u0608"+
		"\u0003\u00b0X\u0000\u0608\u0630\u0001\u0000\u0000\u0000\u0609\u060a\u0005"+
		"U\u0000\u0000\u060a\u060b\u0005\u0084\u0000\u0000\u060b\u060c\u0003\u0222"+
		"\u0111\u0000\u060c\u060d\u0003\u0096K\u0000\u060d\u0630\u0001\u0000\u0000"+
		"\u0000\u060e\u060f\u0005U\u0000\u0000\u060f\u0610\u0005\u009f\u0000\u0000"+
		"\u0610\u0611\u0003\u0222\u0111\u0000\u0611\u0612\u0003\u0096K\u0000\u0612"+
		"\u0630\u0001\u0000\u0000\u0000\u0613\u0614\u0005\u022e\u0000\u0000\u0614"+
		"\u0615\u0005\u008f\u0000\u0000\u0615\u0616\u0003\u01ee\u00f7\u0000\u0616"+
		"\u0617\u0005\u02be\u0000\u0000\u0617\u0618\u0003\u01ee\u00f7\u0000\u0618"+
		"\u0630\u0001\u0000\u0000\u0000\u0619\u061b\u0005\u022e\u0000\u0000\u061a"+
		"\u061c\u0007\u0002\u0000\u0000\u061b\u061a\u0001\u0000\u0000\u0000\u061b"+
		"\u061c\u0001\u0000\u0000\u0000\u061c\u061d\u0001\u0000\u0000\u0000\u061d"+
		"\u0630\u0003\u021c\u010e\u0000\u061e\u061f\u0005\u022e\u0000\u0000\u061f"+
		"\u0620\u0003\u0314\u018a\u0000\u0620\u0621\u0003\u0220\u0110\u0000\u0621"+
		"\u0622\u0005\u02be\u0000\u0000\u0622\u0623\u0003\u0220\u0110\u0000\u0623"+
		"\u0630\u0001\u0000\u0000\u0000\u0624\u0625\u0005\u00a6\u0000\u0000\u0625"+
		"\u0626\u0005\u02be\u0000\u0000\u0626\u0627\u0003\u0304\u0182\u0000\u0627"+
		"\u0629\u0003\u0216\u010b\u0000\u0628\u062a\u0003\u031a\u018d\u0000\u0629"+
		"\u0628\u0001\u0000\u0000\u0000\u0629\u062a\u0001\u0000\u0000\u0000\u062a"+
		"\u0630\u0001\u0000\u0000\u0000\u062b\u0630\u0005\u0110\u0000\u0000\u062c"+
		"\u062d\u0005\u01e6\u0000\u0000\u062d\u062e\u0005u\u0000\u0000\u062e\u0630"+
		"\u0003 \u0010\u0000\u062f\u05b4\u0001\u0000\u0000\u0000\u062f\u05c2\u0001"+
		"\u0000\u0000\u0000\u062f\u05c4\u0001\u0000\u0000\u0000\u062f\u05cd\u0001"+
		"\u0000\u0000\u0000\u062f\u05d6\u0001\u0000\u0000\u0000\u062f\u05ec\u0001"+
		"\u0000\u0000\u0000\u062f\u05ee\u0001\u0000\u0000\u0000\u062f\u05f0\u0001"+
		"\u0000\u0000\u0000\u062f\u0604\u0001\u0000\u0000\u0000\u062f\u0609\u0001"+
		"\u0000\u0000\u0000\u062f\u060e\u0001\u0000\u0000\u0000\u062f\u0613\u0001"+
		"\u0000\u0000\u0000\u062f\u0619\u0001\u0000\u0000\u0000\u062f\u061e\u0001"+
		"\u0000\u0000\u0000\u062f\u0624\u0001\u0000\u0000\u0000\u062f\u062b\u0001"+
		"\u0000\u0000\u0000\u062f\u062c\u0001\u0000\u0000\u0000\u0630\u001f\u0001"+
		"\u0000\u0000\u0000\u0631\u0633\u0003\u01ee\u00f7\u0000\u0632\u0634\u0003"+
		"\u0312\u0189\u0000\u0633\u0632\u0001\u0000\u0000\u0000\u0633\u0634\u0001"+
		"\u0000\u0000\u0000\u0634\u063c\u0001\u0000\u0000\u0000\u0635\u0636\u0005"+
		"&\u0000\u0000\u0636\u0638\u0003\u01ee\u00f7\u0000\u0637\u0639\u0003\u0312"+
		"\u0189\u0000\u0638\u0637\u0001\u0000\u0000\u0000\u0638\u0639\u0001\u0000"+
		"\u0000\u0000\u0639\u063b\u0001\u0000\u0000\u0000\u063a\u0635\u0001\u0000"+
		"\u0000\u0000\u063b\u063e\u0001\u0000\u0000\u0000\u063c\u063a\u0001\u0000"+
		"\u0000\u0000\u063c\u063d\u0001\u0000\u0000\u0000\u063d!\u0001\u0000\u0000"+
		"\u0000\u063e\u063c\u0001\u0000\u0000\u0000\u063f\u0641\u0003\u0314\u018a"+
		"\u0000\u0640\u0642\u0003\u0220\u0110\u0000\u0641\u0640\u0001\u0000\u0000"+
		"\u0000\u0641\u0642\u0001\u0000\u0000\u0000\u0642\u0644\u0001\u0000\u0000"+
		"\u0000\u0643\u0645\u0003\u00a2Q\u0000\u0644\u0643\u0001\u0000\u0000\u0000"+
		"\u0644\u0645\u0001\u0000\u0000\u0000\u0645\u0646\u0001\u0000\u0000\u0000"+
		"\u0646\u064a\u0003\u00aaU\u0000\u0647\u0649\u0003\u00acV\u0000\u0648\u0647"+
		"\u0001\u0000\u0000\u0000\u0649\u064c\u0001\u0000\u0000\u0000\u064a\u0648"+
		"\u0001\u0000\u0000\u0000\u064a\u064b\u0001\u0000\u0000\u0000\u064b\u0694"+
		"\u0001\u0000\u0000\u0000\u064c\u064a\u0001\u0000\u0000\u0000\u064d\u064f"+
		"\u0005\u0116\u0000\u0000\u064e\u0650\u0003\u0314\u018a\u0000\u064f\u064e"+
		"\u0001\u0000\u0000\u0000\u064f\u0650\u0001\u0000\u0000\u0000\u0650\u0652"+
		"\u0001\u0000\u0000\u0000\u0651\u0653\u0003\u0220\u0110\u0000\u0652\u0651"+
		"\u0001\u0000\u0000\u0000\u0652\u0653\u0001\u0000\u0000\u0000\u0653\u0654"+
		"\u0001\u0000\u0000\u0000\u0654\u0658\u0003\u00aaU\u0000\u0655\u0657\u0003"+
		"6\u001b\u0000\u0656\u0655\u0001\u0000\u0000\u0000\u0657\u065a\u0001\u0000"+
		"\u0000\u0000\u0658\u0656\u0001\u0000\u0000\u0000\u0658\u0659\u0001\u0000"+
		"\u0000\u0000\u0659\u0694\u0001\u0000\u0000\u0000\u065a\u0658\u0001\u0000"+
		"\u0000\u0000\u065b\u065d\u0005\u0281\u0000\u0000\u065c\u065e\u0003\u0314"+
		"\u018a\u0000\u065d\u065c\u0001\u0000\u0000\u0000\u065d\u065e\u0001\u0000"+
		"\u0000\u0000\u065e\u0660\u0001\u0000\u0000\u0000\u065f\u0661\u0003\u0220"+
		"\u0110\u0000\u0660\u065f\u0001\u0000\u0000\u0000\u0660\u0661\u0001\u0000"+
		"\u0000\u0000\u0661\u0662\u0001\u0000\u0000\u0000\u0662\u0666\u0003\u00aa"+
		"U\u0000\u0663\u0665\u0003\u00aeW\u0000\u0664\u0663\u0001\u0000\u0000\u0000"+
		"\u0665\u0668\u0001\u0000\u0000\u0000\u0666\u0664\u0001\u0000\u0000\u0000"+
		"\u0666\u0667\u0001\u0000\u0000\u0000\u0667\u0694\u0001\u0000\u0000\u0000"+
		"\u0668\u0666\u0001\u0000\u0000\u0000\u0669\u066b\u0003.\u0017\u0000\u066a"+
		"\u0669\u0001\u0000\u0000\u0000\u066a\u066b\u0001\u0000\u0000\u0000\u066b"+
		"\u0672\u0001\u0000\u0000\u0000\u066c\u066d\u0005\u0209\u0000\u0000\u066d"+
		"\u0673\u0005\u015c\u0000\u0000\u066e\u0670\u0005\u02d0\u0000\u0000\u066f"+
		"\u0671\u0003\u0314\u018a\u0000\u0670\u066f\u0001\u0000\u0000\u0000\u0670"+
		"\u0671\u0001\u0000\u0000\u0000\u0671\u0673\u0001\u0000\u0000\u0000\u0672"+
		"\u066c\u0001\u0000\u0000\u0000\u0672\u066e\u0001\u0000\u0000\u0000\u0673"+
		"\u0675\u0001\u0000\u0000\u0000\u0674\u0676\u0003\u0220\u0110\u0000\u0675"+
		"\u0674\u0001\u0000\u0000\u0000\u0675\u0676\u0001\u0000\u0000\u0000\u0676"+
		"\u0678\u0001\u0000\u0000\u0000\u0677\u0679\u0003\u00a2Q\u0000\u0678\u0677"+
		"\u0001\u0000\u0000\u0000\u0678\u0679\u0001\u0000\u0000\u0000\u0679\u067a"+
		"\u0001\u0000\u0000\u0000\u067a\u067e\u0003\u00aaU\u0000\u067b\u067d\u0003"+
		"\u00acV\u0000\u067c\u067b\u0001\u0000\u0000\u0000\u067d\u0680\u0001\u0000"+
		"\u0000\u0000\u067e\u067c\u0001\u0000\u0000\u0000\u067e\u067f\u0001\u0000"+
		"\u0000\u0000\u067f\u0694\u0001\u0000\u0000\u0000\u0680\u067e\u0001\u0000"+
		"\u0000\u0000\u0681\u0683\u0003.\u0017\u0000\u0682\u0681\u0001\u0000\u0000"+
		"\u0000\u0682\u0683\u0001\u0000\u0000\u0000\u0683\u0684\u0001\u0000\u0000"+
		"\u0000\u0684\u0685\u0005\u0111\u0000\u0000\u0685\u0687\u0005\u015c\u0000"+
		"\u0000\u0686\u0688\u0003\u0220\u0110\u0000\u0687\u0686\u0001\u0000\u0000"+
		"\u0000\u0687\u0688\u0001\u0000\u0000\u0000\u0688\u0689\u0001\u0000\u0000"+
		"\u0000\u0689\u068a\u0003\u00a4R\u0000\u068a\u068b\u0003\u009aM\u0000\u068b"+
		"\u0694\u0001\u0000\u0000\u0000\u068c\u068e\u0003.\u0017\u0000\u068d\u068c"+
		"\u0001\u0000\u0000\u0000\u068d\u068e\u0001\u0000\u0000\u0000\u068e\u068f"+
		"\u0001\u0000\u0000\u0000\u068f\u0691\u0003\u0094J\u0000\u0690\u0692\u0003"+
		"\u0096K\u0000\u0691\u0690\u0001\u0000\u0000\u0000\u0691\u0692\u0001\u0000"+
		"\u0000\u0000\u0692\u0694\u0001\u0000\u0000\u0000\u0693\u063f\u0001\u0000"+
		"\u0000\u0000\u0693\u064d\u0001\u0000\u0000\u0000\u0693\u065b\u0001\u0000"+
		"\u0000\u0000\u0693\u066a\u0001\u0000\u0000\u0000\u0693\u0682\u0001\u0000"+
		"\u0000\u0000\u0693\u068d\u0001\u0000\u0000\u0000\u0694#\u0001\u0000\u0000"+
		"\u0000\u0695\u069a\u0003&\u0013\u0000\u0696\u0697\u0005&\u0000\u0000\u0697"+
		"\u0699\u0003&\u0013\u0000\u0698\u0696\u0001\u0000\u0000\u0000\u0699\u069c"+
		"\u0001\u0000\u0000\u0000\u069a\u0698\u0001\u0000\u0000\u0000\u069a\u069b"+
		"\u0001\u0000\u0000\u0000\u069b%\u0001\u0000\u0000\u0000\u069c\u069a\u0001"+
		"\u0000\u0000\u0000\u069d\u06a1\u0003<\u001e\u0000\u069e\u06a1\u0003>\u001f"+
		"\u0000\u069f\u06a1\u0003(\u0014\u0000\u06a0\u069d\u0001\u0000\u0000\u0000"+
		"\u06a0\u069e\u0001\u0000\u0000\u0000\u06a0\u069f\u0001\u0000\u0000\u0000"+
		"\u06a1\'\u0001\u0000\u0000\u0000\u06a2\u06a3\u0007\u0003\u0000\u0000\u06a3"+
		"\u06a4\u0005\u02e0\u0000\u0000\u06a4)\u0001\u0000\u0000\u0000\u06a5\u06a6"+
		"\u0005\u00d1\u0000\u0000\u06a6\u06ac\u0005\u02ab\u0000\u0000\u06a7\u06a8"+
		"\u0005\u0137\u0000\u0000\u06a8\u06ac\u0005\u02ab\u0000\u0000\u06a9\u06ac"+
		"\u0003,\u0016\u0000\u06aa\u06ac\u0007\u0004\u0000\u0000\u06ab\u06a5\u0001"+
		"\u0000\u0000\u0000\u06ab\u06a7\u0001\u0000\u0000\u0000\u06ab\u06a9\u0001"+
		"\u0000\u0000\u0000\u06ab\u06aa\u0001\u0000\u0000\u0000\u06ac+\u0001\u0000"+
		"\u0000\u0000\u06ad\u06ae\u0005N\u0000\u0000\u06ae\u06b0\u0005\u01f3\u0000"+
		"\u0000\u06af\u06b1\u0003\u032c\u0196\u0000\u06b0\u06af\u0001\u0000\u0000"+
		"\u0000\u06b0\u06b1\u0001\u0000\u0000\u0000\u06b1\u06b5\u0001\u0000\u0000"+
		"\u0000\u06b2\u06b6\u0003\u00c2a\u0000\u06b3\u06b4\u0005\u01f5\u0000\u0000"+
		"\u06b4\u06b6\u0005\u0322\u0000\u0000\u06b5\u06b2\u0001\u0000\u0000\u0000"+
		"\u06b5\u06b3\u0001\u0000\u0000\u0000\u06b6\u070c\u0001\u0000\u0000\u0000"+
		"\u06b7\u06b8\u0005\u00d8\u0000\u0000\u06b8\u06b9\u0005\u01f3\u0000\u0000"+
		"\u06b9\u070c\u0003\u0268\u0134\u0000\u06ba\u06bb\u0005\u021e\u0000\u0000"+
		"\u06bb\u06bd\u0005\u01f3\u0000\u0000\u06bc\u06be\u0003\u032c\u0196\u0000"+
		"\u06bd\u06bc\u0001\u0000\u0000\u0000\u06bd\u06be\u0001\u0000\u0000\u0000"+
		"\u06be\u06bf\u0001\u0000\u0000\u0000\u06bf\u070c\u0003\u026a\u0135\u0000"+
		"\u06c0\u06c1\u0005\u01df\u0000\u0000\u06c1\u06c3\u0005\u01f3\u0000\u0000"+
		"\u06c2\u06c4\u0003\u032c\u0196\u0000\u06c3\u06c2\u0001\u0000\u0000\u0000"+
		"\u06c3\u06c4\u0001\u0000\u0000\u0000\u06c4\u06c5\u0001\u0000\u0000\u0000"+
		"\u06c5\u06c7\u0003\u026a\u0135\u0000\u06c6\u06c8\u0003\u032c\u0196\u0000"+
		"\u06c7\u06c6\u0001\u0000\u0000\u0000\u06c7\u06c8\u0001\u0000\u0000\u0000"+
		"\u06c8\u070c\u0001\u0000\u0000\u0000\u06c9\u06ca\u0005W\u0000\u0000\u06ca"+
		"\u06cc\u0005\u01f3\u0000\u0000\u06cb\u06cd\u0003\u032c\u0196\u0000\u06cc"+
		"\u06cb\u0001\u0000\u0000\u0000\u06cc\u06cd\u0001\u0000\u0000\u0000\u06cd"+
		"\u06ce\u0001\u0000\u0000\u0000\u06ce\u070c\u0003\u026a\u0135\u0000\u06cf"+
		"\u06d0\u0005\u0084\u0000\u0000\u06d0\u06d1\u0005\u01f3\u0000\u0000\u06d1"+
		"\u06d5\u0003\u026a\u0135\u0000\u06d2\u06d4\u0003\u02b2\u0159\u0000\u06d3"+
		"\u06d2\u0001\u0000\u0000\u0000\u06d4\u06d7\u0001\u0000\u0000\u0000\u06d5"+
		"\u06d3\u0001\u0000\u0000\u0000\u06d5\u06d6\u0001\u0000\u0000\u0000\u06d6"+
		"\u070c\u0001\u0000\u0000\u0000\u06d7\u06d5\u0001\u0000\u0000\u0000\u06d8"+
		"\u06d9\u0005\u0230\u0000\u0000\u06d9\u06db\u0005\u01f3\u0000\u0000\u06da"+
		"\u06dc\u0003\u032c\u0196\u0000\u06db\u06da\u0001\u0000\u0000\u0000\u06db"+
		"\u06dc\u0001\u0000\u0000\u0000\u06dc\u06dd\u0001\u0000\u0000\u0000\u06dd"+
		"\u06e1\u0003\u026a\u0135\u0000\u06de\u06e0\u0003\u02b4\u015a\u0000\u06df"+
		"\u06de\u0001\u0000\u0000\u0000\u06e0\u06e3\u0001\u0000\u0000\u0000\u06e1"+
		"\u06df\u0001\u0000\u0000\u0000\u06e1\u06e2\u0001\u0000\u0000\u0000\u06e2"+
		"\u070c\u0001\u0000\u0000\u0000\u06e3\u06e1\u0001\u0000\u0000\u0000\u06e4"+
		"\u06e5\u0005\u008b\u0000\u0000\u06e5\u06e7\u0005\u01f3\u0000\u0000\u06e6"+
		"\u06e8\u0003\u032c\u0196\u0000\u06e7\u06e6\u0001\u0000\u0000\u0000\u06e7"+
		"\u06e8\u0001\u0000\u0000\u0000\u06e8\u06e9\u0001\u0000\u0000\u0000\u06e9"+
		"\u070c\u0005\u0322\u0000\u0000\u06ea\u06eb\u0005\u02c4\u0000\u0000\u06eb"+
		"\u06ec\u0005\u01f3\u0000\u0000\u06ec\u070c\u0003\u026a\u0135\u0000\u06ed"+
		"\u06ee\u0005\u022f\u0000\u0000\u06ee\u06f0\u0005\u01f3\u0000\u0000\u06ef"+
		"\u06f1\u0003\u032c\u0196\u0000\u06f0\u06ef\u0001\u0000\u0000\u0000\u06f0"+
		"\u06f1\u0001\u0000\u0000\u0000\u06f1\u06f6\u0001\u0000\u0000\u0000\u06f2"+
		"\u06f3\u0003\u0268\u0134\u0000\u06f3\u06f4\u0005\u014d\u0000\u0000\u06f4"+
		"\u06f5\u0003\u00c2a\u0000\u06f5\u06f7\u0001\u0000\u0000\u0000\u06f6\u06f2"+
		"\u0001\u0000\u0000\u0000\u06f6\u06f7\u0001\u0000\u0000\u0000\u06f7\u070c"+
		"\u0001\u0000\u0000\u0000\u06f8\u06f9\u0005\u00f3\u0000\u0000\u06f9\u06fa"+
		"\u0005\u01f3\u0000\u0000\u06fa\u06fb\u0003\u01ee\u00f7\u0000\u06fb\u06fc"+
		"\u0005\u02f4\u0000\u0000\u06fc\u06fd\u0005\u02a9\u0000\u0000\u06fd\u06ff"+
		"\u0003\u021c\u010e\u0000\u06fe\u0700\u0003(\u0014\u0000\u06ff\u06fe\u0001"+
		"\u0000\u0000\u0000\u06ff\u0700\u0001\u0000\u0000\u0000\u0700\u070c\u0001"+
		"\u0000\u0000\u0000\u0701\u0702\u0005\u00d1\u0000\u0000\u0702\u0703\u0005"+
		"\u01f3\u0000\u0000\u0703\u0704\u0003\u026a\u0135\u0000\u0704\u0705\u0005"+
		"\u02ab\u0000\u0000\u0705\u070c\u0001\u0000\u0000\u0000\u0706\u0707\u0005"+
		"\u0137\u0000\u0000\u0707\u0708\u0005\u01f3\u0000\u0000\u0708\u0709\u0003"+
		"\u026a\u0135\u0000\u0709\u070a\u0005\u02ab\u0000\u0000\u070a\u070c\u0001"+
		"\u0000\u0000\u0000\u070b\u06ad\u0001\u0000\u0000\u0000\u070b\u06b7\u0001"+
		"\u0000\u0000\u0000\u070b\u06ba\u0001\u0000\u0000\u0000\u070b\u06c0\u0001"+
		"\u0000\u0000\u0000\u070b\u06c9\u0001\u0000\u0000\u0000\u070b\u06cf\u0001"+
		"\u0000\u0000\u0000\u070b\u06d8\u0001\u0000\u0000\u0000\u070b\u06e4\u0001"+
		"\u0000\u0000\u0000\u070b\u06ea\u0001\u0000\u0000\u0000\u070b\u06ed\u0001"+
		"\u0000\u0000\u0000\u070b\u06f8\u0001\u0000\u0000\u0000\u070b\u0701\u0001"+
		"\u0000\u0000\u0000\u070b\u0706\u0001\u0000\u0000\u0000\u070c-\u0001\u0000"+
		"\u0000\u0000\u070d\u070f\u0005\u009f\u0000\u0000\u070e\u0710\u0003\u0222"+
		"\u0111\u0000\u070f\u070e\u0001\u0000\u0000\u0000\u070f\u0710\u0001\u0000"+
		"\u0000\u0000\u0710/\u0001\u0000\u0000\u0000\u0711\u0716\u00032\u0019\u0000"+
		"\u0712\u0713\u0005&\u0000\u0000\u0713\u0715\u00032\u0019\u0000\u0714\u0712"+
		"\u0001\u0000\u0000\u0000\u0715\u0718\u0001\u0000\u0000\u0000\u0716\u0714"+
		"\u0001\u0000\u0000\u0000\u0716\u0717\u0001\u0000\u0000\u0000\u07171\u0001"+
		"\u0000\u0000\u0000\u0718\u0716\u0001\u0000\u0000\u0000\u0719\u071c\u0003"+
		"\u008eG\u0000\u071a\u071c\u0003\"\u0011\u0000\u071b\u0719\u0001\u0000"+
		"\u0000\u0000\u071b\u071a\u0001\u0000\u0000\u0000\u071c3\u0001\u0000\u0000"+
		"\u0000\u071d\u071e\u0007\u0005\u0000\u0000\u071e5\u0001\u0000\u0000\u0000"+
		"\u071f\u0724\u0003\u00aeW\u0000\u0720\u0721\u0005\u02f4\u0000\u0000\u0721"+
		"\u0722\u0005\u01f1\u0000\u0000\u0722\u0724\u0003\u01ee\u00f7\u0000\u0723"+
		"\u071f\u0001\u0000\u0000\u0000\u0723\u0720\u0001\u0000\u0000\u0000\u0724"+
		"7\u0001\u0000\u0000\u0000\u0725\u0727\u0005\u00d8\u0000\u0000\u0726\u0728"+
		"\u0005\u02ae\u0000\u0000\u0727\u0726\u0001\u0000\u0000\u0000\u0727\u0728"+
		"\u0001\u0000\u0000\u0000\u0728\u0729\u0001\u0000\u0000\u0000\u0729\u072b"+
		"\u0003\u0262\u0131\u0000\u072a\u072c\u0003\u0320\u0190\u0000\u072b\u072a"+
		"\u0001\u0000\u0000\u0000\u072b\u072c\u0001\u0000\u0000\u0000\u072c\u072d"+
		"\u0001\u0000\u0000\u0000\u072d\u072f\u0003\u023c\u011e\u0000\u072e\u0730"+
		"\u00034\u001a\u0000\u072f\u072e\u0001\u0000\u0000\u0000\u072f\u0730\u0001"+
		"\u0000\u0000\u0000\u07309\u0001\u0000\u0000\u0000\u0731\u0732\u0005\u00d8"+
		"\u0000\u0000\u0732\u0733\u0005\u013a\u0000\u0000\u0733\u0736\u0003\u0220"+
		"\u0110\u0000\u0734\u0735\u0005\u01db\u0000\u0000\u0735\u0737\u0003\u021c"+
		"\u010e\u0000\u0736\u0734\u0001\u0000\u0000\u0000\u0736\u0737\u0001\u0000"+
		"\u0000\u0000\u0737\u073c\u0001\u0000\u0000\u0000\u0738\u073b\u0003<\u001e"+
		"\u0000\u0739\u073b\u0003>\u001f\u0000\u073a\u0738\u0001\u0000\u0000\u0000"+
		"\u073a\u0739\u0001\u0000\u0000\u0000\u073b\u073e\u0001\u0000\u0000\u0000"+
		"\u073c\u073a\u0001\u0000\u0000\u0000\u073c\u073d\u0001\u0000\u0000\u0000"+
		"\u073d;\u0001\u0000\u0000\u0000\u073e\u073c\u0001\u0000\u0000\u0000\u073f"+
		"\u0741\u0005S\u0000\u0000\u0740\u0742\u0005\u0019\u0000\u0000\u0741\u0740"+
		"\u0001\u0000\u0000\u0000\u0741\u0742\u0001\u0000\u0000\u0000\u0742\u0743"+
		"\u0001\u0000\u0000\u0000\u0743\u0744\u0007\u0006\u0000\u0000\u0744=\u0001"+
		"\u0000\u0000\u0000\u0745\u0747\u0005\u0176\u0000\u0000\u0746\u0748\u0005"+
		"\u0019\u0000\u0000\u0747\u0746\u0001\u0000\u0000\u0000\u0747\u0748\u0001"+
		"\u0000\u0000\u0000\u0748\u0749\u0001\u0000\u0000\u0000\u0749\u074a\u0007"+
		"\u0007\u0000\u0000\u074a?\u0001\u0000\u0000\u0000\u074b\u074d\u0005\u02c4"+
		"\u0000\u0000\u074c\u074e\u0005\u02a9\u0000\u0000\u074d\u074c\u0001\u0000"+
		"\u0000\u0000\u074d\u074e\u0001\u0000\u0000\u0000\u074e\u074f\u0001\u0000"+
		"\u0000\u0000\u074f\u0750\u0003\u021c\u010e\u0000\u0750A\u0001\u0000\u0000"+
		"\u0000\u0751\u0753\u0005\u00a8\u0000\u0000\u0752\u0754\u0003\u00b4Z\u0000"+
		"\u0753\u0752\u0001\u0000\u0000\u0000\u0753\u0754\u0001\u0000\u0000\u0000"+
		"\u0754\u0755\u0001\u0000\u0000\u0000\u0755\u0756\u0005\u013a\u0000\u0000"+
		"\u0756\u0758\u0003\u0220\u0110\u0000\u0757\u0759\u0003\u00a2Q\u0000\u0758"+
		"\u0757\u0001\u0000\u0000\u0000\u0758\u0759\u0001\u0000\u0000\u0000\u0759"+
		"\u075a\u0001\u0000\u0000\u0000\u075a\u075b\u0005\u01db\u0000\u0000\u075b"+
		"\u075c\u0003\u021c\u010e\u0000\u075c\u075e\u0003\u00aaU\u0000\u075d\u075f"+
		"\u0003\u00acV\u0000\u075e\u075d\u0001\u0000\u0000\u0000\u075e\u075f\u0001"+
		"\u0000\u0000\u0000\u075f\u0764\u0001\u0000\u0000\u0000\u0760\u0763\u0003"+
		"<\u001e\u0000\u0761\u0763\u0003>\u001f\u0000\u0762\u0760\u0001\u0000\u0000"+
		"\u0000\u0762\u0761\u0001\u0000\u0000\u0000\u0763\u0766\u0001\u0000\u0000"+
		"\u0000\u0764\u0762\u0001\u0000\u0000\u0000\u0764\u0765\u0001\u0000\u0000"+
		"\u0000\u0765C\u0001\u0000\u0000\u0000\u0766\u0764\u0001\u0000\u0000\u0000"+
		"\u0767\u0768\u0005\u00a8\u0000\u0000\u0768\u076a\u0007\b\u0000\u0000\u0769"+
		"\u076b\u0003\u031e\u018f\u0000\u076a\u0769\u0001\u0000\u0000\u0000\u076a"+
		"\u076b\u0001\u0000\u0000\u0000\u076b\u076c\u0001\u0000\u0000\u0000\u076c"+
		"\u0770\u0003\u0212\u0109\u0000\u076d\u076f\u0003H$\u0000\u076e\u076d\u0001"+
		"\u0000\u0000\u0000\u076f\u0772\u0001\u0000\u0000\u0000\u0770\u076e\u0001"+
		"\u0000\u0000\u0000\u0770\u0771\u0001\u0000\u0000\u0000\u0771E\u0001\u0000"+
		"\u0000\u0000\u0772\u0770\u0001\u0000\u0000\u0000\u0773\u0774\u0005U\u0000"+
		"\u0000\u0774\u0776\u0007\b\u0000\u0000\u0775\u0777\u0003\u0212\u0109\u0000"+
		"\u0776\u0775\u0001\u0000\u0000\u0000\u0776\u0777\u0001\u0000\u0000\u0000"+
		"\u0777\u077b\u0001\u0000\u0000\u0000\u0778\u077a\u0003J%\u0000\u0779\u0778"+
		"\u0001\u0000\u0000\u0000\u077a\u077d\u0001\u0000\u0000\u0000\u077b\u0779"+
		"\u0001\u0000\u0000\u0000\u077b\u077c\u0001\u0000\u0000\u0000\u077cG\u0001"+
		"\u0000\u0000\u0000\u077d\u077b\u0001\u0000\u0000\u0000\u077e\u0782\u0003"+
		"\u030a\u0185\u0000\u077f\u0782\u0003\u0306\u0183\u0000\u0780\u0782\u0003"+
		"\u0308\u0184\u0000\u0781\u077e\u0001\u0000\u0000\u0000\u0781\u077f\u0001"+
		"\u0000\u0000\u0000\u0781\u0780\u0001\u0000\u0000\u0000\u0782I\u0001\u0000"+
		"\u0000\u0000\u0783\u078b\u0003H$\u0000\u0784\u0785\u0005\u0219\u0000\u0000"+
		"\u0785\u0787\u0005\u01dd\u0000\u0000\u0786\u0788\u0005\u0019\u0000\u0000"+
		"\u0787\u0786\u0001\u0000\u0000\u0000\u0787\u0788\u0001\u0000\u0000\u0000"+
		"\u0788\u0789\u0001\u0000\u0000\u0000\u0789\u078b\u0007\t\u0000\u0000\u078a"+
		"\u0783\u0001\u0000\u0000\u0000\u078a\u0784\u0001\u0000\u0000\u0000\u078b"+
		"K\u0001\u0000\u0000\u0000\u078c\u078d\u0005\u00d8\u0000\u0000\u078d\u078f"+
		"\u0007\b\u0000\u0000\u078e\u0790\u0003\u0320\u0190\u0000\u078f\u078e\u0001"+
		"\u0000\u0000\u0000\u078f\u0790\u0001\u0000\u0000\u0000\u0790\u0791\u0001"+
		"\u0000\u0000\u0000\u0791\u0792\u0003\u0212\u0109\u0000\u0792M\u0001\u0000"+
		"\u0000\u0000\u0793\u0794\u0005U\u0000\u0000\u0794\u0795\u0005\u0144\u0000"+
		"\u0000\u0795\u0796\u0003P(\u0000\u0796O\u0001\u0000\u0000\u0000\u0797"+
		"\u0798\u0007\n\u0000\u0000\u0798\u0799\u0005F\u0000\u0000\u0799\u07b0"+
		"\u0005G\u0000\u0000\u079a\u079b\u0005\u0255\u0000\u0000\u079b\u079c\u0005"+
		"F\u0000\u0000\u079c\u079d\u0005\u0180\u0000\u0000\u079d\u07b0\u0005\u015c"+
		"\u0000\u0000\u079e\u079f\u0005\u0255\u0000\u0000\u079f\u07a0\u0005l\u0000"+
		"\u0000\u07a0\u07a1\u0005\u0180\u0000\u0000\u07a1\u07b0\u0005\u015c\u0000"+
		"\u0000\u07a2\u07a3\u0005\u022c\u0000\u0000\u07a3\u07a7\u0005\u02bd\u0000"+
		"\u0000\u07a4\u07a5\u0005\u010f\u0000\u0000\u07a5\u07a6\u0005\u0080\u0000"+
		"\u0000\u07a6\u07a8\u0003R)\u0000\u07a7\u07a4\u0001\u0000\u0000\u0000\u07a7"+
		"\u07a8\u0001\u0000\u0000\u0000\u07a8\u07ad\u0001\u0000\u0000\u0000\u07a9"+
		"\u07aa\u0005\u01c8\u0000\u0000\u07aa\u07ab\u0005\u0253\u0000\u0000\u07ab"+
		"\u07ac\u0005\u01db\u0000\u0000\u07ac\u07ae\u0005\u00eb\u0000\u0000\u07ad"+
		"\u07a9\u0001\u0000\u0000\u0000\u07ad\u07ae\u0001\u0000\u0000\u0000\u07ae"+
		"\u07b0\u0001\u0000\u0000\u0000\u07af\u0797\u0001\u0000\u0000\u0000\u07af"+
		"\u079a\u0001\u0000\u0000\u0000\u07af\u079e\u0001\u0000\u0000\u0000\u07af"+
		"\u07a2\u0001\u0000\u0000\u0000\u07b0Q\u0001\u0000\u0000\u0000\u07b1\u07b2"+
		"\u0007\u000b\u0000\u0000\u07b2S\u0001\u0000\u0000\u0000\u07b3\u07b5\u0005"+
		"\u00a8\u0000\u0000\u07b4\u07b6\u0003\u00ceg\u0000\u07b5\u07b4\u0001\u0000"+
		"\u0000\u0000\u07b5\u07b6\u0001\u0000\u0000\u0000\u07b6\u07b7\u0001\u0000"+
		"\u0000\u0000\u07b7\u07b9\u0005\u00ef\u0000\u0000\u07b8\u07ba\u0003\u031e"+
		"\u018f\u0000\u07b9\u07b8\u0001\u0000\u0000\u0000\u07b9\u07ba\u0001\u0000"+
		"\u0000\u0000\u07ba\u07bb\u0001\u0000\u0000\u0000\u07bb\u07bc\u0003\u022a"+
		"\u0115\u0000\u07bc\u07bd\u0005\u01db\u0000\u0000\u07bd\u07be\u0005\u025e"+
		"\u0000\u0000\u07be\u07c5\u0003\u00d0h\u0000\u07bf\u07c0\u0005\u01db\u0000"+
		"\u0000\u07c0\u07c2\u0005\u0097\u0000\u0000\u07c1\u07c3\u0005\u01cb\u0000"+
		"\u0000\u07c2\u07c1\u0001\u0000\u0000\u0000\u07c2\u07c3\u0001\u0000\u0000"+
		"\u0000\u07c3\u07c4\u0001\u0000\u0000\u0000\u07c4\u07c6\u0005\u0207\u0000"+
		"\u0000\u07c5\u07bf\u0001\u0000\u0000\u0000\u07c5\u07c6\u0001\u0000\u0000"+
		"\u0000\u07c6\u07cc\u0001\u0000\u0000\u0000\u07c7\u07cd\u0005\u00e1\u0000"+
		"\u0000\u07c8\u07cd\u0005\u00d0\u0000\u0000\u07c9\u07ca\u0005\u00d0\u0000"+
		"\u0000\u07ca\u07cb\u0005\u01db\u0000\u0000\u07cb\u07cd\u0005\u0279\u0000"+
		"\u0000\u07cc\u07c7\u0001\u0000\u0000\u0000\u07cc\u07c8\u0001\u0000\u0000"+
		"\u0000\u07cc\u07c9\u0001\u0000\u0000\u0000\u07cc\u07cd\u0001\u0000\u0000"+
		"\u0000\u07cd\u07d0\u0001\u0000\u0000\u0000\u07ce\u07cf\u0005\u0093\u0000"+
		"\u0000\u07cf\u07d1\u0003\u01dc\u00ee\u0000\u07d0\u07ce\u0001\u0000\u0000"+
		"\u0000\u07d0\u07d1\u0001\u0000\u0000\u0000\u07d1\u07d2\u0001\u0000\u0000"+
		"\u0000\u07d2\u07d3\u0005\u00d6\u0000\u0000\u07d3\u07d4\u0003\u00d4j\u0000"+
		"\u07d4U\u0001\u0000\u0000\u0000\u07d5\u07d7\u0005U\u0000\u0000\u07d6\u07d8"+
		"\u0003\u00ceg\u0000\u07d7\u07d6\u0001\u0000\u0000\u0000\u07d7\u07d8\u0001"+
		"\u0000\u0000\u0000\u07d8\u07d9\u0001\u0000\u0000\u0000\u07d9\u07da\u0005"+
		"\u00ef\u0000\u0000\u07da\u07de\u0003\u022a\u0115\u0000\u07db\u07dc\u0005"+
		"\u01db\u0000\u0000\u07dc\u07dd\u0005\u025e\u0000\u0000\u07dd\u07df\u0003"+
		"\u00d0h\u0000\u07de\u07db\u0001\u0000\u0000\u0000\u07de\u07df\u0001\u0000"+
		"\u0000\u0000\u07df\u07e6\u0001\u0000\u0000\u0000\u07e0\u07e1\u0005\u01db"+
		"\u0000\u0000\u07e1\u07e3\u0005\u0097\u0000\u0000\u07e2\u07e4\u0005\u01cb"+
		"\u0000\u0000\u07e3\u07e2\u0001\u0000\u0000\u0000\u07e3\u07e4\u0001\u0000"+
		"\u0000\u0000\u07e4\u07e5\u0001\u0000\u0000\u0000\u07e5\u07e7\u0005\u0207"+
		"\u0000\u0000\u07e6\u07e0\u0001\u0000\u0000\u0000\u07e6\u07e7\u0001\u0000"+
		"\u0000\u0000\u07e7\u07eb\u0001\u0000\u0000\u0000\u07e8\u07e9\u0005\u022e"+
		"\u0000\u0000\u07e9\u07ea\u0005\u02be\u0000\u0000\u07ea\u07ec\u0003\u022a"+
		"\u0115\u0000\u07eb\u07e8\u0001\u0000\u0000\u0000\u07eb\u07ec\u0001\u0000"+
		"\u0000\u0000\u07ec\u07f2\u0001\u0000\u0000\u0000\u07ed\u07f3\u0005\u00e1"+
		"\u0000\u0000\u07ee\u07f3\u0005\u00d0\u0000\u0000\u07ef\u07f0\u0005\u00d0"+
		"\u0000\u0000\u07f0\u07f1\u0005\u01db\u0000\u0000\u07f1\u07f3\u0005\u0279"+
		"\u0000\u0000\u07f2\u07ed\u0001\u0000\u0000\u0000\u07f2\u07ee\u0001\u0000"+
		"\u0000\u0000\u07f2\u07ef\u0001\u0000\u0000\u0000\u07f2\u07f3\u0001\u0000"+
		"\u0000\u0000\u07f3\u07f6\u0001\u0000\u0000\u0000\u07f4\u07f5\u0005\u0093"+
		"\u0000\u0000\u07f5\u07f7\u0003\u01dc\u00ee\u0000\u07f6\u07f4\u0001\u0000"+
		"\u0000\u0000\u07f6\u07f7\u0001\u0000\u0000\u0000\u07f7\u07fa\u0001\u0000"+
		"\u0000\u0000\u07f8\u07f9\u0005\u00d6\u0000\u0000\u07f9\u07fb\u0003\u00d4"+
		"j\u0000\u07fa\u07f8\u0001\u0000\u0000\u0000\u07fa\u07fb\u0001\u0000\u0000"+
		"\u0000\u07fbW\u0001\u0000\u0000\u0000\u07fc\u07fd\u0005\u00d8\u0000\u0000"+
		"\u07fd\u07ff\u0005\u00ef\u0000\u0000\u07fe\u0800\u0003\u0320\u0190\u0000"+
		"\u07ff\u07fe\u0001\u0000\u0000\u0000\u07ff\u0800\u0001\u0000\u0000\u0000"+
		"\u0800\u0801\u0001\u0000\u0000\u0000\u0801\u0802\u0003\u022a\u0115\u0000"+
		"\u0802Y\u0001\u0000\u0000\u0000\u0803\u0805\u0005\u00a8\u0000\u0000\u0804"+
		"\u0806\u0003\u00ceg\u0000\u0805\u0804\u0001\u0000\u0000\u0000\u0805\u0806"+
		"\u0001\u0000\u0000\u0000\u0806\u0807\u0001\u0000\u0000\u0000\u0807\u0808"+
		"\u0005\u0117\u0000\u0000\u0808\u0809\u0003\u0230\u0118\u0000\u0809\u080d"+
		"\u0005 \u0000\u0000\u080a\u080b\u0003\u01ee\u00f7\u0000\u080b\u080c\u0003"+
		"\u02f0\u0178\u0000\u080c\u080e\u0001\u0000\u0000\u0000\u080d\u080a\u0001"+
		"\u0000\u0000\u0000\u080d\u080e\u0001\u0000\u0000\u0000\u080e\u0815\u0001"+
		"\u0000\u0000\u0000\u080f\u0810\u0005&\u0000\u0000\u0810\u0811\u0003\u01ee"+
		"\u00f7\u0000\u0811\u0812\u0003\u02f0\u0178\u0000\u0812\u0814\u0001\u0000"+
		"\u0000\u0000\u0813\u080f\u0001\u0000\u0000\u0000\u0814\u0817\u0001\u0000"+
		"\u0000\u0000\u0815\u0813\u0001\u0000\u0000\u0000\u0815\u0816\u0001\u0000"+
		"\u0000\u0000\u0816\u0818\u0001\u0000\u0000\u0000\u0817\u0815\u0001\u0000"+
		"\u0000\u0000\u0818\u0819\u0005!\u0000\u0000\u0819\u081a\u0005\u024c\u0000"+
		"\u0000\u081a\u081e\u0003\u02f0\u0178\u0000\u081b\u081d\u0003\u00d8l\u0000"+
		"\u081c\u081b\u0001\u0000\u0000\u0000\u081d\u0820\u0001\u0000\u0000\u0000"+
		"\u081e\u081c\u0001\u0000\u0000\u0000\u081e\u081f\u0001\u0000\u0000\u0000"+
		"\u081f\u0821\u0001\u0000\u0000\u0000\u0820\u081e\u0001\u0000\u0000\u0000"+
		"\u0821\u0822\u0003\u00d4j\u0000\u0822[\u0001\u0000\u0000\u0000\u0823\u0824"+
		"\u0005U\u0000\u0000\u0824\u0825\u0005\u0117\u0000\u0000\u0825\u0829\u0003"+
		"\u0230\u0118\u0000\u0826\u0828\u0003\u00d8l\u0000\u0827\u0826\u0001\u0000"+
		"\u0000\u0000\u0828\u082b\u0001\u0000\u0000\u0000\u0829\u0827\u0001\u0000"+
		"\u0000\u0000\u0829\u082a\u0001\u0000\u0000\u0000\u082a]\u0001\u0000\u0000"+
		"\u0000\u082b\u0829\u0001\u0000\u0000\u0000\u082c\u082d\u0005\u00d8\u0000"+
		"\u0000\u082d\u082f\u0005\u0117\u0000\u0000\u082e\u0830\u0003\u0320\u0190"+
		"\u0000\u082f\u082e\u0001\u0000\u0000\u0000\u082f\u0830\u0001\u0000\u0000"+
		"\u0000\u0830\u0831\u0001\u0000\u0000\u0000\u0831\u0832\u0003\u0230\u0118"+
		"\u0000\u0832_\u0001\u0000\u0000\u0000\u0833\u0835\u0005\u00a8\u0000\u0000"+
		"\u0834\u0836\u0003\u00ceg\u0000\u0835\u0834\u0001\u0000\u0000\u0000\u0835"+
		"\u0836\u0001\u0000\u0000\u0000\u0836\u0837\u0001\u0000\u0000\u0000\u0837"+
		"\u0838\u0005\u020c\u0000\u0000\u0838\u0839\u0003\u0230\u0118\u0000\u0839"+
		"\u083b\u0005 \u0000\u0000\u083a\u083c\u0003\u00dam\u0000\u083b\u083a\u0001"+
		"\u0000\u0000\u0000\u083b\u083c\u0001\u0000\u0000\u0000\u083c\u0841\u0001"+
		"\u0000\u0000\u0000\u083d\u083e\u0005&\u0000\u0000\u083e\u0840\u0003\u00da"+
		"m\u0000\u083f\u083d\u0001\u0000\u0000\u0000\u0840\u0843\u0001\u0000\u0000"+
		"\u0000\u0841\u083f\u0001\u0000\u0000\u0000\u0841\u0842\u0001\u0000\u0000"+
		"\u0000\u0842\u0844\u0001\u0000\u0000\u0000\u0843\u0841\u0001\u0000\u0000"+
		"\u0000\u0844\u0848\u0005!\u0000\u0000\u0845\u0847\u0003\u00d8l\u0000\u0846"+
		"\u0845\u0001\u0000\u0000\u0000\u0847\u084a\u0001\u0000\u0000\u0000\u0848"+
		"\u0846\u0001\u0000\u0000\u0000\u0848\u0849\u0001\u0000\u0000\u0000\u0849"+
		"\u084b\u0001\u0000\u0000\u0000\u084a\u0848\u0001\u0000\u0000\u0000\u084b"+
		"\u084c\u0003\u00d4j\u0000\u084ca\u0001\u0000\u0000\u0000\u084d\u084e\u0005"+
		"U\u0000\u0000\u084e\u084f\u0005\u020c\u0000\u0000\u084f\u0853\u0003\u0230"+
		"\u0118\u0000\u0850\u0852\u0003\u00d8l\u0000\u0851\u0850\u0001\u0000\u0000"+
		"\u0000\u0852\u0855\u0001\u0000\u0000\u0000\u0853\u0851\u0001\u0000\u0000"+
		"\u0000\u0853\u0854\u0001\u0000\u0000\u0000\u0854c\u0001\u0000\u0000\u0000"+
		"\u0855\u0853\u0001\u0000\u0000\u0000\u0856\u0857\u0005\u00d8\u0000\u0000"+
		"\u0857\u0859\u0005\u020c\u0000\u0000\u0858\u085a\u0003\u0320\u0190\u0000"+
		"\u0859\u0858\u0001\u0000\u0000\u0000\u0859\u085a\u0001\u0000\u0000\u0000"+
		"\u085a\u085b\u0001\u0000\u0000\u0000\u085b\u085c\u0003\u0230\u0118\u0000"+
		"\u085ce\u0001\u0000\u0000\u0000\u085d\u085e\u0005\u00a8\u0000\u0000\u085e"+
		"\u085f\u0005\u026f\u0000\u0000\u085f\u0860\u0003\u022c\u0116\u0000\u0860"+
		"\u0861\u0005\u0111\u0000\u0000\u0861\u0862\u0005\u00b3\u0000\u0000\u0862"+
		"\u0863\u0005\u02f7\u0000\u0000\u0863\u0864\u0003\u022e\u0117\u0000\u0864"+
		"\u0865\u0005\u01e4\u0000\u0000\u0865\u0866\u0005 \u0000\u0000\u0866\u086b"+
		"\u0003\u00d6k\u0000\u0867\u0868\u0005&\u0000\u0000\u0868\u086a\u0003\u00d6"+
		"k\u0000\u0869\u0867\u0001\u0000\u0000\u0000\u086a\u086d\u0001\u0000\u0000"+
		"\u0000\u086b\u0869\u0001\u0000\u0000\u0000\u086b\u086c\u0001\u0000\u0000"+
		"\u0000\u086c\u086e\u0001\u0000\u0000\u0000\u086d\u086b\u0001\u0000\u0000"+
		"\u0000\u086e\u086f\u0005!\u0000\u0000\u086fg\u0001\u0000\u0000\u0000\u0870"+
		"\u0871\u0005U\u0000\u0000\u0871\u0872\u0005\u026f\u0000\u0000\u0872\u0873"+
		"\u0003\u022c\u0116\u0000\u0873\u0874\u0005\u01e4\u0000\u0000\u0874\u0875"+
		"\u0005 \u0000\u0000\u0875\u087a\u0003\u00d6k\u0000\u0876\u0877\u0005&"+
		"\u0000\u0000\u0877\u0879\u0003\u00d6k\u0000\u0878\u0876\u0001\u0000\u0000"+
		"\u0000\u0879\u087c\u0001\u0000\u0000\u0000\u087a\u0878\u0001\u0000\u0000"+
		"\u0000\u087a\u087b\u0001\u0000\u0000\u0000\u087b\u087d\u0001\u0000\u0000"+
		"\u0000\u087c\u087a\u0001\u0000\u0000\u0000\u087d\u087e\u0005!\u0000\u0000"+
		"\u087ei\u0001\u0000\u0000\u0000\u087f\u0880\u0005\u00d8\u0000\u0000\u0880"+
		"\u0882\u0005\u026f\u0000\u0000\u0881\u0883\u0003\u0320\u0190\u0000\u0882"+
		"\u0881\u0001\u0000\u0000\u0000\u0882\u0883\u0001\u0000\u0000\u0000\u0883"+
		"\u0884\u0001\u0000\u0000\u0000\u0884\u0885\u0003\u022c\u0116\u0000\u0885"+
		"k\u0001\u0000\u0000\u0000\u0886\u0889\u0005\u00a8\u0000\u0000\u0887\u0888"+
		"\u0005\u01e5\u0000\u0000\u0888\u088a\u0005\u0233\u0000\u0000\u0889\u0887"+
		"\u0001\u0000\u0000\u0000\u0889\u088a\u0001\u0000\u0000\u0000\u088a\u088e"+
		"\u0001\u0000\u0000\u0000\u088b\u088c\u0005S\u0000\u0000\u088c\u088d\u0005"+
		"\u0019\u0000\u0000\u088d\u088f\u0007\f\u0000\u0000\u088e\u088b\u0001\u0000"+
		"\u0000\u0000\u088e\u088f\u0001\u0000\u0000\u0000\u088f\u0891\u0001\u0000"+
		"\u0000\u0000\u0890\u0892\u0003\u00ceg\u0000\u0891\u0890\u0001\u0000\u0000"+
		"\u0000\u0891\u0892\u0001\u0000\u0000\u0000\u0892\u0896\u0001\u0000\u0000"+
		"\u0000\u0893\u0894\u0005\u0283\u0000\u0000\u0894\u0895\u0005\u0269\u0000"+
		"\u0000\u0895\u0897\u0007\r\u0000\u0000\u0896\u0893\u0001\u0000\u0000\u0000"+
		"\u0896\u0897\u0001\u0000\u0000\u0000\u0897\u0898\u0001\u0000\u0000\u0000"+
		"\u0898\u0899\u0005\u02e9\u0000\u0000\u0899\u089e\u0003\u0234\u011a\u0000"+
		"\u089a\u089b\u0005 \u0000\u0000\u089b\u089c\u0003\u0240\u0120\u0000\u089c"+
		"\u089d\u0005!\u0000\u0000\u089d\u089f\u0001\u0000\u0000\u0000\u089e\u089a"+
		"\u0001\u0000\u0000\u0000\u089e\u089f\u0001\u0000\u0000\u0000\u089f\u08a0"+
		"\u0001\u0000\u0000\u0000\u08a0\u08a1\u0005[\u0000\u0000\u08a1\u08a8\u0003"+
		"\u015a\u00ad\u0000\u08a2\u08a4\u0005\u02f4\u0000\u0000\u08a3\u08a5\u0007"+
		"\u000e\u0000\u0000\u08a4\u08a3\u0001\u0000\u0000\u0000\u08a4\u08a5\u0001"+
		"\u0000\u0000\u0000\u08a5\u08a6\u0001\u0000\u0000\u0000\u08a6\u08a7\u0005"+
		"\u0084\u0000\u0000\u08a7\u08a9\u0005\u01e1\u0000\u0000\u08a8\u08a2\u0001"+
		"\u0000\u0000\u0000\u08a8\u08a9\u0001\u0000\u0000\u0000\u08a9m\u0001\u0000"+
		"\u0000\u0000\u08aa\u08ae\u0005U\u0000\u0000\u08ab\u08ac\u0005S\u0000\u0000"+
		"\u08ac\u08ad\u0005\u0019\u0000\u0000\u08ad\u08af\u0007\f\u0000\u0000\u08ae"+
		"\u08ab\u0001\u0000\u0000\u0000\u08ae\u08af\u0001\u0000\u0000\u0000\u08af"+
		"\u08b1\u0001\u0000\u0000\u0000\u08b0\u08b2\u0003\u00ceg\u0000\u08b1\u08b0"+
		"\u0001\u0000\u0000\u0000\u08b1\u08b2\u0001\u0000\u0000\u0000\u08b2\u08b6"+
		"\u0001\u0000\u0000\u0000\u08b3\u08b4\u0005\u0283\u0000\u0000\u08b4\u08b5"+
		"\u0005\u0269\u0000\u0000\u08b5\u08b7\u0007\r\u0000\u0000\u08b6\u08b3\u0001"+
		"\u0000\u0000\u0000\u08b6\u08b7\u0001\u0000\u0000\u0000\u08b7\u08b8\u0001"+
		"\u0000\u0000\u0000\u08b8\u08b9\u0005\u02e9\u0000\u0000\u08b9\u08be\u0003"+
		"\u0234\u011a\u0000\u08ba\u08bb\u0005 \u0000\u0000\u08bb\u08bc\u0003\u0240"+
		"\u0120\u0000\u08bc\u08bd\u0005!\u0000\u0000\u08bd\u08bf\u0001\u0000\u0000"+
		"\u0000\u08be\u08ba\u0001\u0000\u0000\u0000\u08be\u08bf\u0001\u0000\u0000"+
		"\u0000\u08bf\u08c0\u0001\u0000\u0000\u0000\u08c0\u08c1\u0005[\u0000\u0000"+
		"\u08c1\u08c8\u0003\u015a\u00ad\u0000\u08c2\u08c4\u0005\u02f4\u0000\u0000"+
		"\u08c3\u08c5\u0007\u000e\u0000\u0000\u08c4\u08c3\u0001\u0000\u0000\u0000"+
		"\u08c4\u08c5\u0001\u0000\u0000\u0000\u08c5\u08c6\u0001\u0000\u0000\u0000"+
		"\u08c6\u08c7\u0005\u0084\u0000\u0000\u08c7\u08c9\u0005\u01e1\u0000\u0000"+
		"\u08c8\u08c2\u0001\u0000\u0000\u0000\u08c8\u08c9\u0001\u0000\u0000\u0000"+
		"\u08c9o\u0001\u0000\u0000\u0000\u08ca\u08cb\u0005\u00d8\u0000\u0000\u08cb"+
		"\u08cd\u0005\u02e9\u0000\u0000\u08cc\u08ce\u0003\u0320\u0190\u0000\u08cd"+
		"\u08cc\u0001\u0000\u0000\u0000\u08cd\u08ce\u0001\u0000\u0000\u0000\u08ce"+
		"\u08cf\u0001\u0000\u0000\u0000\u08cf\u08d1\u0003\u023e\u011f\u0000\u08d0"+
		"\u08d2\u00034\u001a\u0000\u08d1\u08d0\u0001\u0000\u0000\u0000\u08d1\u08d2"+
		"\u0001\u0000\u0000\u0000\u08d2q\u0001\u0000\u0000\u0000\u08d3\u08d6\u0003"+
		"t:\u0000\u08d4\u08d6\u0003v;\u0000\u08d5\u08d3\u0001\u0000\u0000\u0000"+
		"\u08d5\u08d4\u0001\u0000\u0000\u0000\u08d6s\u0001\u0000\u0000\u0000\u08d7"+
		"\u08d9\u0005\u00a8\u0000\u0000\u08d8\u08da\u0005\u02ca\u0000\u0000\u08d9"+
		"\u08d8\u0001\u0000\u0000\u0000\u08d9\u08da\u0001\u0000\u0000\u0000\u08da"+
		"\u08db\u0001\u0000\u0000\u0000\u08db\u08dc\u0005\u02ab\u0000\u0000\u08dc"+
		"\u08dd\u0003\u01ee\u00f7\u0000\u08dd\u08de\u0005N\u0000\u0000\u08de\u08df"+
		"\u0005\u00b6\u0000\u0000\u08df\u08e3\u0003\u01dc\u00ee\u0000\u08e0\u08e1"+
		"\u0005\u0104\u0000\u0000\u08e1\u08e2\u0005\u0019\u0000\u0000\u08e2\u08e4"+
		"\u0003\u00dcn\u0000\u08e3\u08e0\u0001\u0000\u0000\u0000\u08e3\u08e4\u0001"+
		"\u0000\u0000\u0000\u08e4\u08e8\u0001\u0000\u0000\u0000\u08e5\u08e6\u0005"+
		"\u00e3\u0000\u0000\u08e6\u08e7\u0005\u0019\u0000\u0000\u08e7\u08e9\u0003"+
		"\u01dc\u00ee\u0000\u08e8\u08e5\u0001\u0000\u0000\u0000\u08e8\u08e9\u0001"+
		"\u0000\u0000\u0000\u08e9\u08ef\u0001\u0000\u0000\u0000\u08ea\u08ec\u0005"+
		"\u00e7\u0000\u0000\u08eb\u08ed\u0005\u0019\u0000\u0000\u08ec\u08eb\u0001"+
		"\u0000\u0000\u0000\u08ec\u08ed\u0001\u0000\u0000\u0000\u08ed\u08ee\u0001"+
		"\u0000\u0000\u0000\u08ee\u08f0\u0003\u01ee\u00f7\u0000\u08ef\u08ea\u0001"+
		"\u0000\u0000\u0000\u08ef\u08f0\u0001\u0000\u0000\u0000\u08f0u\u0001\u0000"+
		"\u0000\u0000\u08f1\u08f3\u0005\u00a8\u0000\u0000\u08f2\u08f4\u0005\u02ca"+
		"\u0000\u0000\u08f3\u08f2\u0001\u0000\u0000\u0000\u08f3\u08f4\u0001\u0000"+
		"\u0000\u0000\u08f4\u08f5\u0001\u0000\u0000\u0000\u08f5\u08f6\u0005\u02ab"+
		"\u0000\u0000\u08f6\u08f7\u0003\u01ee\u00f7\u0000\u08f7\u08f8\u0005N\u0000"+
		"\u0000\u08f8\u08f9\u0005\u00b6\u0000\u0000\u08f9\u08fa\u0003\u01dc\u00ee"+
		"\u0000\u08fa\u08fb\u0005\u02d8\u0000\u0000\u08fb\u08fc\u0005\u0179\u0000"+
		"\u0000\u08fc\u08fd\u0005\u0122\u0000\u0000\u08fd\u0903\u0003\u01ee\u00f7"+
		"\u0000\u08fe\u0900\u0005\u00fd\u0000\u0000\u08ff\u0901\u0005\u0019\u0000"+
		"\u0000\u0900\u08ff\u0001\u0000\u0000\u0000\u0900\u0901\u0001\u0000\u0000"+
		"\u0000\u0901\u0902\u0001\u0000\u0000\u0000\u0902\u0904\u0003\u00dcn\u0000"+
		"\u0903\u08fe\u0001\u0000\u0000\u0000\u0903\u0904\u0001\u0000\u0000\u0000"+
		"\u0904\u090a\u0001\u0000\u0000\u0000\u0905\u0907\u0005\u013d\u0000\u0000"+
		"\u0906\u0908\u0005\u0019\u0000\u0000\u0907\u0906\u0001\u0000\u0000\u0000"+
		"\u0907\u0908\u0001\u0000\u0000\u0000\u0908\u0909\u0001\u0000\u0000\u0000"+
		"\u0909\u090b\u0003\u00dcn\u0000\u090a\u0905\u0001\u0000\u0000\u0000\u090a"+
		"\u090b\u0001\u0000\u0000\u0000\u090b\u0911\u0001\u0000\u0000\u0000\u090c"+
		"\u090e\u0005a\u0000\u0000\u090d\u090f\u0005\u0019\u0000\u0000\u090e\u090d"+
		"\u0001\u0000\u0000\u0000\u090e\u090f\u0001\u0000\u0000\u0000\u090f\u0910"+
		"\u0001\u0000\u0000\u0000\u0910\u0912\u0003\u00dcn\u0000\u0911\u090c\u0001"+
		"\u0000\u0000\u0000\u0911\u0912\u0001\u0000\u0000\u0000\u0912\u0918\u0001"+
		"\u0000\u0000\u0000\u0913\u0915\u0005\u01a1\u0000\u0000\u0914\u0916\u0005"+
		"\u0019\u0000\u0000\u0915\u0914\u0001\u0000\u0000\u0000\u0915\u0916\u0001"+
		"\u0000\u0000\u0000\u0916\u0917\u0001\u0000\u0000\u0000\u0917\u0919\u0003"+
		"\u00dcn\u0000\u0918\u0913\u0001\u0000\u0000\u0000\u0918\u0919\u0001\u0000"+
		"\u0000\u0000\u0919\u091f\u0001\u0000\u0000\u0000\u091a\u091c\u0005\u01c9"+
		"\u0000\u0000\u091b\u091d\u0005\u0019\u0000\u0000\u091c\u091b\u0001\u0000"+
		"\u0000\u0000\u091c\u091d\u0001\u0000\u0000\u0000\u091d\u091e\u0001\u0000"+
		"\u0000\u0000\u091e\u0920\u0003\u01ee\u00f7\u0000\u091f\u091a\u0001\u0000"+
		"\u0000\u0000\u091f\u0920\u0001\u0000\u0000\u0000\u0920\u0922\u0001\u0000"+
		"\u0000\u0000\u0921\u0923\u0005\u02ec\u0000\u0000\u0922\u0921\u0001\u0000"+
		"\u0000\u0000\u0922\u0923\u0001\u0000\u0000\u0000\u0923\u0929\u0001\u0000"+
		"\u0000\u0000\u0924\u0926\u0005\u0093\u0000\u0000\u0925\u0927\u0005\u0019"+
		"\u0000\u0000\u0926\u0925\u0001\u0000\u0000\u0000\u0926\u0927\u0001\u0000"+
		"\u0000\u0000\u0927\u0928\u0001\u0000\u0000\u0000\u0928\u092a\u0003\u01dc"+
		"\u00ee\u0000\u0929\u0924\u0001\u0000\u0000\u0000\u0929\u092a\u0001\u0000"+
		"\u0000\u0000\u092a\u0930\u0001\u0000\u0000\u0000\u092b\u092d\u0005\u00e7"+
		"\u0000\u0000\u092c\u092e\u0005\u0019\u0000\u0000\u092d\u092c\u0001\u0000"+
		"\u0000\u0000\u092d\u092e\u0001\u0000\u0000\u0000\u092e\u092f\u0001\u0000"+
		"\u0000\u0000\u092f\u0931\u0003\u01ee\u00f7\u0000\u0930\u092b\u0001\u0000"+
		"\u0000\u0000\u0930\u0931\u0001\u0000\u0000\u0000\u0931w\u0001\u0000\u0000"+
		"\u0000\u0932\u0935\u0003|>\u0000\u0933\u0935\u0003z=\u0000\u0934\u0932"+
		"\u0001\u0000\u0000\u0000\u0934\u0933\u0001\u0000\u0000\u0000\u0935y\u0001"+
		"\u0000\u0000\u0000\u0936\u0938\u0005U\u0000\u0000\u0937\u0939\u0005\u02ca"+
		"\u0000\u0000\u0938\u0937\u0001\u0000\u0000\u0000\u0938\u0939\u0001\u0000"+
		"\u0000\u0000\u0939\u093a\u0001\u0000\u0000\u0000\u093a\u093b\u0005\u02ab"+
		"\u0000\u0000\u093b\u093c\u0003\u01ee\u00f7\u0000\u093c\u093d\u0007\u000f"+
		"\u0000\u0000\u093d\u093e\u0005\u00b6\u0000\u0000\u093e\u0942\u0003\u01dc"+
		"\u00ee\u0000\u093f\u0940\u0005\u013d\u0000\u0000\u0940\u0941\u0005\u0019"+
		"\u0000\u0000\u0941\u0943\u0003\u00dcn\u0000\u0942\u093f\u0001\u0000\u0000"+
		"\u0000\u0942\u0943\u0001\u0000\u0000\u0000\u0943\u0945\u0001\u0000\u0000"+
		"\u0000\u0944\u0946\u0005\u02ec\u0000\u0000\u0945\u0944\u0001\u0000\u0000"+
		"\u0000\u0945\u0946\u0001\u0000\u0000\u0000\u0946\u094a\u0001\u0000\u0000"+
		"\u0000\u0947\u0948\u0005\u022e\u0000\u0000\u0948\u0949\u0005\u02be\u0000"+
		"\u0000\u0949\u094b\u0003\u01ee\u00f7\u0000\u094a\u0947\u0001\u0000\u0000"+
		"\u0000\u094a\u094b\u0001\u0000\u0000\u0000\u094b\u0951\u0001\u0000\u0000"+
		"\u0000\u094c\u094e\u0005\u00e7\u0000\u0000\u094d\u094f\u0005\u0019\u0000"+
		"\u0000\u094e\u094d\u0001\u0000\u0000\u0000\u094e\u094f\u0001\u0000\u0000"+
		"\u0000\u094f\u0950\u0001\u0000\u0000\u0000\u0950\u0952\u0003\u01ee\u00f7"+
		"\u0000\u0951\u094c\u0001\u0000\u0000\u0000\u0951\u0952\u0001\u0000\u0000"+
		"\u0000\u0952{\u0001\u0000\u0000\u0000\u0953\u0955\u0005U\u0000\u0000\u0954"+
		"\u0956\u0005\u02ca\u0000\u0000\u0955\u0954\u0001\u0000\u0000\u0000\u0955"+
		"\u0956\u0001\u0000\u0000\u0000\u0956\u0957\u0001\u0000\u0000\u0000\u0957"+
		"\u0958\u0005\u02ab\u0000\u0000\u0958\u095b\u0003\u01ee\u00f7\u0000\u0959"+
		"\u095a\u0005\u0271\u0000\u0000\u095a\u095c\u0007\u0010\u0000\u0000\u095b"+
		"\u0959\u0001\u0000\u0000\u0000\u095b\u095c\u0001\u0000\u0000\u0000\u095c"+
		"\u095d\u0001\u0000\u0000\u0000\u095d\u095f\u0005\u00e3\u0000\u0000\u095e"+
		"\u0960\u0005\u0019\u0000\u0000\u095f\u095e\u0001\u0000\u0000\u0000\u095f"+
		"\u0960\u0001\u0000\u0000\u0000\u0960\u0961\u0001\u0000\u0000\u0000\u0961"+
		"\u0962\u0003\u01dc\u00ee\u0000\u0962\u0966\u0001\u0000\u0000\u0000\u0963"+
		"\u0964\u0005\u022e\u0000\u0000\u0964\u0965\u0005\u02be\u0000\u0000\u0965"+
		"\u0967\u0003\u01ee\u00f7\u0000\u0966\u0963\u0001\u0000\u0000\u0000\u0966"+
		"\u0967\u0001\u0000\u0000\u0000\u0967\u096d\u0001\u0000\u0000\u0000\u0968"+
		"\u096a\u0005\u00e7\u0000\u0000\u0969\u096b\u0005\u0019\u0000\u0000\u096a"+
		"\u0969\u0001\u0000\u0000\u0000\u096a\u096b\u0001\u0000\u0000\u0000\u096b"+
		"\u096c\u0001\u0000\u0000\u0000\u096c\u096e\u0003\u01ee\u00f7\u0000\u096d"+
		"\u0968\u0001\u0000\u0000\u0000\u096d\u096e\u0001\u0000\u0000\u0000\u096e"+
		"}\u0001\u0000\u0000\u0000\u096f\u0971\u0005\u00d8\u0000\u0000\u0970\u0972"+
		"\u0005\u02ca\u0000\u0000\u0971\u0970\u0001\u0000\u0000\u0000\u0971\u0972"+
		"\u0001\u0000\u0000\u0000\u0972\u0973\u0001\u0000\u0000\u0000\u0973\u0974"+
		"\u0005\u02ab\u0000\u0000\u0974\u097a\u0003\u01ee\u00f7\u0000\u0975\u0977"+
		"\u0005\u00e7\u0000\u0000\u0976\u0978\u0005\u0019\u0000\u0000\u0977\u0976"+
		"\u0001\u0000\u0000\u0000\u0977\u0978\u0001\u0000\u0000\u0000\u0978\u0979"+
		"\u0001\u0000\u0000\u0000\u0979\u097b\u0003\u01ee\u00f7\u0000\u097a\u0975"+
		"\u0001\u0000\u0000\u0000\u097a\u097b\u0001\u0000\u0000\u0000\u097b\u007f"+
		"\u0001\u0000\u0000\u0000\u097c\u097d\u0005\u00a8\u0000\u0000\u097d\u097e"+
		"\u0005\u0179\u0000\u0000\u097e\u097f\u0005\u0122\u0000\u0000\u097f\u0980"+
		"\u0003\u01ee\u00f7\u0000\u0980\u0981\u0005N\u0000\u0000\u0981\u0982\u0005"+
		"\u02cb\u0000\u0000\u0982\u0988\u0003\u01dc\u00ee\u0000\u0983\u0985\u0005"+
		"\u013d\u0000\u0000\u0984\u0986\u0005\u0019\u0000\u0000\u0985\u0984\u0001"+
		"\u0000\u0000\u0000\u0985\u0986\u0001\u0000\u0000\u0000\u0986\u0987\u0001"+
		"\u0000\u0000\u0000\u0987\u0989\u0003\u00dcn\u0000\u0988\u0983\u0001\u0000"+
		"\u0000\u0000\u0988\u0989\u0001\u0000\u0000\u0000\u0989\u098f\u0001\u0000"+
		"\u0000\u0000\u098a\u098c\u0005\u02cc\u0000\u0000\u098b\u098d\u0005\u0019"+
		"\u0000\u0000\u098c\u098b\u0001\u0000\u0000\u0000\u098c\u098d\u0001\u0000"+
		"\u0000\u0000\u098d\u098e\u0001\u0000\u0000\u0000\u098e\u0990\u0003\u00dc"+
		"n\u0000\u098f\u098a\u0001\u0000\u0000\u0000\u098f\u0990\u0001\u0000\u0000"+
		"\u0000\u0990\u0996\u0001\u0000\u0000\u0000\u0991\u0993\u0005\u0221\u0000"+
		"\u0000\u0992\u0994\u0005\u0019\u0000\u0000\u0993\u0992\u0001\u0000\u0000"+
		"\u0000\u0993\u0994\u0001\u0000\u0000\u0000\u0994\u0995\u0001\u0000\u0000"+
		"\u0000\u0995\u0997\u0003\u00dcn\u0000\u0996\u0991\u0001\u0000\u0000\u0000"+
		"\u0996\u0997\u0001\u0000\u0000\u0000\u0997\u099d\u0001\u0000\u0000\u0000"+
		"\u0998\u099a\u0005\u01c9\u0000\u0000\u0999\u099b\u0005\u0019\u0000\u0000"+
		"\u099a\u0999\u0001\u0000\u0000\u0000\u099a\u099b\u0001\u0000\u0000\u0000"+
		"\u099b\u099c\u0001\u0000\u0000\u0000\u099c\u099e\u0003\u01ee\u00f7\u0000"+
		"\u099d\u0998\u0001\u0000\u0000\u0000\u099d\u099e\u0001\u0000\u0000\u0000"+
		"\u099e\u09a0\u0001\u0000\u0000\u0000\u099f\u09a1\u0005\u02ec\u0000\u0000"+
		"\u09a0\u099f\u0001\u0000\u0000\u0000\u09a0\u09a1\u0001\u0000\u0000\u0000"+
		"\u09a1\u09a7\u0001\u0000\u0000\u0000\u09a2\u09a4\u0005\u0093\u0000\u0000"+
		"\u09a3\u09a5\u0005\u0019\u0000\u0000\u09a4\u09a3\u0001\u0000\u0000\u0000"+
		"\u09a4\u09a5\u0001\u0000\u0000\u0000\u09a5\u09a6\u0001\u0000\u0000\u0000"+
		"\u09a6\u09a8\u0003\u01dc\u00ee\u0000\u09a7\u09a2\u0001\u0000\u0000\u0000"+
		"\u09a7\u09a8\u0001\u0000\u0000\u0000\u09a8\u09ae\u0001\u0000\u0000\u0000"+
		"\u09a9\u09ab\u0005\u00e7\u0000\u0000\u09aa\u09ac\u0005\u0019\u0000\u0000"+
		"\u09ab\u09aa\u0001\u0000\u0000\u0000\u09ab\u09ac\u0001\u0000\u0000\u0000"+
		"\u09ac\u09ad\u0001\u0000\u0000\u0000\u09ad\u09af\u0003\u01ee\u00f7\u0000"+
		"\u09ae\u09a9\u0001\u0000\u0000\u0000\u09ae\u09af\u0001\u0000\u0000\u0000"+
		"\u09af\u0081\u0001\u0000\u0000\u0000\u09b0\u09b1\u0005U\u0000\u0000\u09b1"+
		"\u09b2\u0005\u0179\u0000\u0000\u09b2\u09b3\u0005\u0122\u0000\u0000\u09b3"+
		"\u09b4\u0003\u01ee\u00f7\u0000\u09b4\u09b5\u0005N\u0000\u0000\u09b5\u09b6"+
		"\u0005\u02cb\u0000\u0000\u09b6\u09bc\u0003\u01dc\u00ee\u0000\u09b7\u09b9"+
		"\u0005\u013d\u0000\u0000\u09b8\u09ba\u0005\u0019\u0000\u0000\u09b9\u09b8"+
		"\u0001\u0000\u0000\u0000\u09b9\u09ba\u0001\u0000\u0000\u0000\u09ba\u09bb"+
		"\u0001\u0000\u0000\u0000\u09bb\u09bd\u0003\u00dcn\u0000\u09bc\u09b7\u0001"+
		"\u0000\u0000\u0000\u09bc\u09bd\u0001\u0000\u0000\u0000\u09bd\u09bf\u0001"+
		"\u0000\u0000\u0000\u09be\u09c0\u0005\u02ec\u0000\u0000\u09bf\u09be\u0001"+
		"\u0000\u0000\u0000\u09bf\u09c0\u0001\u0000\u0000\u0000\u09c0\u09c6\u0001"+
		"\u0000\u0000\u0000\u09c1\u09c3\u0005\u00e7\u0000\u0000\u09c2\u09c4\u0005"+
		"\u0019\u0000\u0000\u09c3\u09c2\u0001\u0000\u0000\u0000\u09c3\u09c4\u0001"+
		"\u0000\u0000\u0000\u09c4\u09c5\u0001\u0000\u0000\u0000\u09c5\u09c7\u0003"+
		"\u01ee\u00f7\u0000\u09c6\u09c1\u0001\u0000\u0000\u0000\u09c6\u09c7\u0001"+
		"\u0000\u0000\u0000\u09c7\u0083\u0001\u0000\u0000\u0000\u09c8\u09c9\u0005"+
		"\u00d8\u0000\u0000\u09c9\u09ca\u0005\u0179\u0000\u0000\u09ca\u09cb\u0005"+
		"\u0122\u0000\u0000\u09cb\u09d1\u0003\u01ee\u00f7\u0000\u09cc\u09ce\u0005"+
		"\u00e7\u0000\u0000\u09cd\u09cf\u0005\u0019\u0000\u0000\u09ce\u09cd\u0001"+
		"\u0000\u0000\u0000\u09ce\u09cf\u0001\u0000\u0000\u0000\u09cf\u09d0\u0001"+
		"\u0000\u0000\u0000\u09d0\u09d2\u0003\u01ee\u00f7\u0000\u09d1\u09cc\u0001"+
		"\u0000\u0000\u0000\u09d1\u09d2\u0001\u0000\u0000\u0000\u09d2\u0085\u0001"+
		"\u0000\u0000\u0000\u09d3\u09d5\u0005\u00a8\u0000\u0000\u09d4\u09d6\u0003"+
		"\u00ceg\u0000\u09d5\u09d4\u0001\u0000\u0000\u0000\u09d5\u09d6\u0001\u0000"+
		"\u0000\u0000\u09d6\u09d7\u0001\u0000\u0000\u0000\u09d7\u09d8\u0005\u02c1"+
		"\u0000\u0000\u09d8\u09d9\u0003\u025e\u012f\u0000\u09d9\u09da\u0003\u0260"+
		"\u0130\u0000\u09da\u09db\u0003\u026c\u0136\u0000\u09db\u09dc\u0005\u01db"+
		"\u0000\u0000\u09dc\u09dd\u0003\u021c\u010e\u0000\u09dd\u09de\u0005\u010f"+
		"\u0000\u0000\u09de\u09df\u0005\u00dd\u0000\u0000\u09df\u09e1\u0005\u0257"+
		"\u0000\u0000\u09e0\u09e2\u0003\u026e\u0137\u0000\u09e1\u09e0\u0001\u0000"+
		"\u0000\u0000\u09e1\u09e2\u0001\u0000\u0000\u0000\u09e2\u09e3\u0001\u0000"+
		"\u0000\u0000\u09e3\u09e4\u0003\u00d4j\u0000\u09e4\u0087\u0001\u0000\u0000"+
		"\u0000\u09e5\u09e6\u0005\u00d8\u0000\u0000\u09e6\u09e8\u0005\u02c1\u0000"+
		"\u0000\u09e7\u09e9\u0003\u0320\u0190\u0000\u09e8\u09e7\u0001\u0000\u0000"+
		"\u0000\u09e8\u09e9\u0001\u0000\u0000\u0000\u09e9\u09ed\u0001\u0000\u0000"+
		"\u0000\u09ea\u09eb\u0003\u0212\u0109\u0000\u09eb\u09ec\u0005\u0015\u0000"+
		"\u0000\u09ec\u09ee\u0001\u0000\u0000\u0000\u09ed\u09ea\u0001\u0000\u0000"+
		"\u0000\u09ed\u09ee\u0001\u0000\u0000\u0000\u09ee\u09ef\u0001\u0000\u0000"+
		"\u0000\u09ef\u09f0\u0003\u025e\u012f\u0000\u09f0\u0089\u0001\u0000\u0000"+
		"\u0000\u09f1\u09f2\u0005\u022e\u0000\u0000\u09f2\u09f3\u0005\u02a9\u0000"+
		"\u0000\u09f3\u09f4\u0003\u021c\u010e\u0000\u09f4\u09f5\u0005\u02be\u0000"+
		"\u0000\u09f5\u09fd\u0003\u021c\u010e\u0000\u09f6\u09f7\u0005&\u0000\u0000"+
		"\u09f7\u09f8\u0003\u021c\u010e\u0000\u09f8\u09f9\u0005\u02be\u0000\u0000"+
		"\u09f9\u09fa\u0003\u021c\u010e\u0000\u09fa\u09fc\u0001\u0000\u0000\u0000"+
		"\u09fb\u09f6\u0001\u0000\u0000\u0000\u09fc\u09ff\u0001\u0000\u0000\u0000"+
		"\u09fd\u09fb\u0001\u0000\u0000\u0000\u09fd\u09fe\u0001\u0000\u0000\u0000"+
		"\u09fe\u008b\u0001\u0000\u0000\u0000\u09ff\u09fd\u0001\u0000\u0000\u0000"+
		"\u0a00\u0a01\u0005 \u0000\u0000\u0a01\u0a02\u00030\u0018\u0000\u0a02\u0a03"+
		"\u0005!\u0000\u0000\u0a03\u008d\u0001\u0000\u0000\u0000\u0a04\u0a05\u0003"+
		"\u01ee\u00f7\u0000\u0a05\u0a07\u0003\u0090H\u0000\u0a06\u0a08\u0003\u009a"+
		"M\u0000\u0a07\u0a06\u0001\u0000\u0000\u0000\u0a07\u0a08\u0001\u0000\u0000"+
		"\u0000\u0a08\u008f\u0001\u0000\u0000\u0000\u0a09\u0a23\u0003\u02f0\u0178"+
		"\u0000\u0a0a\u0a0c\u0003\u0092I\u0000\u0a0b\u0a0a\u0001\u0000\u0000\u0000"+
		"\u0a0c\u0a0f\u0001\u0000\u0000\u0000\u0a0d\u0a0b\u0001\u0000\u0000\u0000"+
		"\u0a0d\u0a0e\u0001\u0000\u0000\u0000\u0a0e\u0a24\u0001\u0000\u0000\u0000"+
		"\u0a0f\u0a0d\u0001\u0000\u0000\u0000\u0a10\u0a12\u0003\u031a\u018d\u0000"+
		"\u0a11\u0a10\u0001\u0000\u0000\u0000\u0a11\u0a12\u0001\u0000\u0000\u0000"+
		"\u0a12\u0a14\u0001\u0000\u0000\u0000\u0a13\u0a15\u0003\u0098L\u0000\u0a14"+
		"\u0a13\u0001\u0000\u0000\u0000\u0a14\u0a15\u0001\u0000\u0000\u0000\u0a15"+
		"\u0a16\u0001\u0000\u0000\u0000\u0a16\u0a17\u0005[\u0000\u0000\u0a17\u0a18"+
		"\u0005 \u0000\u0000\u0a18\u0a19\u0003\u0270\u0138\u0000\u0a19\u0a1b\u0005"+
		"!\u0000\u0000\u0a1a\u0a1c\u0007\u0011\u0000\u0000\u0a1b\u0a1a\u0001\u0000"+
		"\u0000\u0000\u0a1b\u0a1c\u0001\u0000\u0000\u0000\u0a1c\u0a20\u0001\u0000"+
		"\u0000\u0000\u0a1d\u0a1f\u0003\u0092I\u0000\u0a1e\u0a1d\u0001\u0000\u0000"+
		"\u0000\u0a1f\u0a22\u0001\u0000\u0000\u0000\u0a20\u0a1e\u0001\u0000\u0000"+
		"\u0000\u0a20\u0a21\u0001\u0000\u0000\u0000\u0a21\u0a24\u0001\u0000\u0000"+
		"\u0000\u0a22\u0a20\u0001\u0000\u0000\u0000\u0a23\u0a0d\u0001\u0000\u0000"+
		"\u0000\u0a23\u0a11\u0001\u0000\u0000\u0000\u0a24\u0091\u0001\u0000\u0000"+
		"\u0000\u0a25\u0a27\u0005\u01cb\u0000\u0000\u0a26\u0a25\u0001\u0000\u0000"+
		"\u0000\u0a26\u0a27\u0001\u0000\u0000\u0000\u0a27\u0a28\u0001\u0000\u0000"+
		"\u0000\u0a28\u0a53\u0005\u01d1\u0000\u0000\u0a29\u0a2a\u0005\u01cb\u0000"+
		"\u0000\u0a2a\u0a53\u0005\u0263\u0000\u0000\u0a2b\u0a32\u0005\u00c2\u0000"+
		"\u0000\u0a2c\u0a33\u0003\u01da\u00ed\u0000\u0a2d\u0a33\u0003\u030c\u0186"+
		"\u0000\u0a2e\u0a2f\u0005 \u0000\u0000\u0a2f\u0a30\u0003\u0270\u0138\u0000"+
		"\u0a30\u0a31\u0005!\u0000\u0000\u0a31\u0a33\u0001\u0000\u0000\u0000\u0a32"+
		"\u0a2c\u0001\u0000\u0000\u0000\u0a32\u0a2d\u0001\u0000\u0000\u0000\u0a32"+
		"\u0a2e\u0001\u0000\u0000\u0000\u0a33\u0a53\u0001\u0000\u0000\u0000\u0a34"+
		"\u0a35\u0005\u01db\u0000\u0000\u0a35\u0a36\u0005\u02d5\u0000\u0000\u0a36"+
		"\u0a53\u0003\u030c\u0186\u0000\u0a37\u0a53\u0005b\u0000\u0000\u0a38\u0a39"+
		"\u0005\u026d\u0000\u0000\u0a39\u0a3a\u0005\u00c2\u0000\u0000\u0a3a\u0a53"+
		"\u0005\u02e1\u0000\u0000\u0a3b\u0a3d\u0005\u0209\u0000\u0000\u0a3c\u0a3b"+
		"\u0001\u0000\u0000\u0000\u0a3c\u0a3d\u0001\u0000\u0000\u0000\u0a3d\u0a3e"+
		"\u0001\u0000\u0000\u0000\u0a3e\u0a53\u0005\u015c\u0000\u0000\u0a3f\u0a41"+
		"\u0005\u02d0\u0000\u0000\u0a40\u0a42\u0005\u015c\u0000\u0000\u0a41\u0a40"+
		"\u0001\u0000\u0000\u0000\u0a41\u0a42\u0001\u0000\u0000\u0000\u0a42\u0a53"+
		"\u0001\u0000\u0000\u0000\u0a43\u0a44\u0005\u0093\u0000\u0000\u0a44\u0a53"+
		"\u0003\u01dc\u00ee\u0000\u0a45\u0a53\u0003\u031a\u018d\u0000\u0a46\u0a47"+
		"\u0005\u0091\u0000\u0000\u0a47\u0a53\u0003\u030e\u0187\u0000\u0a48\u0a49"+
		"\u0005\u029b\u0000\u0000\u0a49\u0a53\u0003\u0310\u0188\u0000\u0a4a\u0a4b"+
		"\u0005\u0290\u0000\u0000\u0a4b\u0a53\u0005\u0322\u0000\u0000\u0a4c\u0a4e"+
		"\u0003.\u0017\u0000\u0a4d\u0a4c\u0001\u0000\u0000\u0000\u0a4d\u0a4e\u0001"+
		"\u0000\u0000\u0000\u0a4e\u0a4f\u0001\u0000\u0000\u0000\u0a4f\u0a53\u0003"+
		"\u0094J\u0000\u0a50\u0a53\u0003\u0096K\u0000\u0a51\u0a53\u0003\u00b0X"+
		"\u0000\u0a52\u0a26\u0001\u0000\u0000\u0000\u0a52\u0a29\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a2b\u0001\u0000\u0000\u0000\u0a52\u0a34\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a37\u0001\u0000\u0000\u0000\u0a52\u0a38\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a3c\u0001\u0000\u0000\u0000\u0a52\u0a3f\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a43\u0001\u0000\u0000\u0000\u0a52\u0a45\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a46\u0001\u0000\u0000\u0000\u0a52\u0a48\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a4a\u0001\u0000\u0000\u0000\u0a52\u0a4d\u0001\u0000\u0000"+
		"\u0000\u0a52\u0a50\u0001\u0000\u0000\u0000\u0a52\u0a51\u0001\u0000\u0000"+
		"\u0000\u0a53\u0093\u0001\u0000\u0000\u0000\u0a54\u0a55\u0005\u0084\u0000"+
		"\u0000\u0a55\u0a56\u0005 \u0000\u0000\u0a56\u0a57\u0003\u0270\u0138\u0000"+
		"\u0a57\u0a58\u0005!\u0000\u0000\u0a58\u0095\u0001\u0000\u0000\u0000\u0a59"+
		"\u0a5b\u0005\u01cb\u0000\u0000\u0a5a\u0a59\u0001\u0000\u0000\u0000\u0a5a"+
		"\u0a5b\u0001\u0000\u0000\u0000\u0a5b\u0a5c\u0001\u0000\u0000\u0000\u0a5c"+
		"\u0a5d\u0005\u00e6\u0000\u0000\u0a5d\u0097\u0001\u0000\u0000\u0000\u0a5e"+
		"\u0a5f\u0005\u0119\u0000\u0000\u0a5f\u0a60\u0005V\u0000\u0000\u0a60\u0099"+
		"\u0001\u0000\u0000\u0000\u0a61\u0a62\u0005\u0224\u0000\u0000\u0a62\u0a63"+
		"\u0003\u021c\u010e\u0000\u0a63\u0a6a\u0003\u00a4R\u0000\u0a64\u0a65\u0005"+
		"\u019c\u0000\u0000\u0a65\u0a6b\u0005\u0115\u0000\u0000\u0a66\u0a67\u0005"+
		"\u019c\u0000\u0000\u0a67\u0a6b\u0005\u01f2\u0000\u0000\u0a68\u0a69\u0005"+
		"\u019c\u0000\u0000\u0a69\u0a6b\u0005\u0277\u0000\u0000\u0a6a\u0a64\u0001"+
		"\u0000\u0000\u0000\u0a6a\u0a66\u0001\u0000\u0000\u0000\u0a6a\u0a68\u0001"+
		"\u0000\u0000\u0000\u0a6a\u0a6b\u0001\u0000\u0000\u0000\u0a6b\u0a6d\u0001"+
		"\u0000\u0000\u0000\u0a6c\u0a6e\u0003\u009cN\u0000\u0a6d\u0a6c\u0001\u0000"+
		"\u0000\u0000\u0a6d\u0a6e\u0001\u0000\u0000\u0000\u0a6e\u009b\u0001\u0000"+
		"\u0000\u0000\u0a6f\u0a70\u0005\u01db\u0000\u0000\u0a70\u0a71\u0005\u02d5"+
		"\u0000\u0000\u0a71\u0a75\u0003\u009eO\u0000\u0a72\u0a73\u0005\u01db\u0000"+
		"\u0000\u0a73\u0a74\u0005\u00c8\u0000\u0000\u0a74\u0a76\u0003\u009eO\u0000"+
		"\u0a75\u0a72\u0001\u0000\u0000\u0000\u0a75\u0a76\u0001\u0000\u0000\u0000"+
		"\u0a76\u0a80\u0001\u0000\u0000\u0000\u0a77\u0a78\u0005\u01db\u0000\u0000"+
		"\u0a78\u0a79\u0005\u00c8\u0000\u0000\u0a79\u0a7d\u0003\u009eO\u0000\u0a7a"+
		"\u0a7b\u0005\u01db\u0000\u0000\u0a7b\u0a7c\u0005\u02d5\u0000\u0000\u0a7c"+
		"\u0a7e\u0003\u009eO\u0000\u0a7d\u0a7a\u0001\u0000\u0000\u0000\u0a7d\u0a7e"+
		"\u0001\u0000\u0000\u0000\u0a7e\u0a80\u0001\u0000\u0000\u0000\u0a7f\u0a6f"+
		"\u0001\u0000\u0000\u0000\u0a7f\u0a77\u0001\u0000\u0000\u0000\u0a80\u009d"+
		"\u0001\u0000\u0000\u0000\u0a81\u0a8a\u0005\u0246\u0000\u0000\u0a82\u0a8a"+
		"\u0005y\u0000\u0000\u0a83\u0a84\u0005\u0271\u0000\u0000\u0a84\u0a8a\u0005"+
		"\u01d1\u0000\u0000\u0a85\u0a86\u0005\u01c8\u0000\u0000\u0a86\u0a8a\u0005"+
		"L\u0000\u0000\u0a87\u0a88\u0005\u0271\u0000\u0000\u0a88\u0a8a\u0005\u00c2"+
		"\u0000\u0000\u0a89\u0a81\u0001\u0000\u0000\u0000\u0a89\u0a82\u0001\u0000"+
		"\u0000\u0000\u0a89\u0a83\u0001\u0000\u0000\u0000\u0a89\u0a85\u0001\u0000"+
		"\u0000\u0000\u0a89\u0a87\u0001\u0000\u0000\u0000\u0a8a\u009f\u0001\u0000"+
		"\u0000\u0000\u0a8b\u0a8c\u0007\u0012\u0000\u0000\u0a8c\u00a1\u0001\u0000"+
		"\u0000\u0000\u0a8d\u0a8e\u0007\u0013\u0000\u0000\u0a8e\u0a8f\u0003\u00a0"+
		"P\u0000\u0a8f\u00a3\u0001\u0000\u0000\u0000\u0a90\u0a91\u0005 \u0000\u0000"+
		"\u0a91\u0a96\u0003\u00a6S\u0000\u0a92\u0a93\u0005&\u0000\u0000\u0a93\u0a95"+
		"\u0003\u00a6S\u0000\u0a94\u0a92\u0001\u0000\u0000\u0000\u0a95\u0a98\u0001"+
		"\u0000\u0000\u0000\u0a96\u0a94\u0001\u0000\u0000\u0000\u0a96\u0a97\u0001"+
		"\u0000\u0000\u0000\u0a97\u0a99\u0001\u0000\u0000\u0000\u0a98\u0a96\u0001"+
		"\u0000\u0000\u0000\u0a99\u0a9a\u0005!\u0000\u0000\u0a9a\u00a5\u0001\u0000"+
		"\u0000\u0000\u0a9b\u0a9d\u0003\u021e\u010f\u0000\u0a9c\u0a9e\u0003\u0316"+
		"\u018b\u0000\u0a9d\u0a9c\u0001\u0000\u0000\u0000\u0a9d\u0a9e\u0001\u0000"+
		"\u0000\u0000\u0a9e\u0aa0\u0001\u0000\u0000\u0000\u0a9f\u0aa1\u0003\u0312"+
		"\u0189\u0000\u0aa0\u0a9f\u0001\u0000\u0000\u0000\u0aa0\u0aa1\u0001\u0000"+
		"\u0000\u0000\u0aa1\u00a7\u0001\u0000\u0000\u0000\u0aa2\u0aaa\u0003\u00a6"+
		"S\u0000\u0aa3\u0aa4\u0005 \u0000\u0000\u0aa4\u0aa5\u0003\u0270\u0138\u0000"+
		"\u0aa5\u0aa7\u0005!\u0000\u0000\u0aa6\u0aa8\u0003\u0312\u0189\u0000\u0aa7"+
		"\u0aa6\u0001\u0000\u0000\u0000\u0aa7\u0aa8\u0001\u0000\u0000\u0000\u0aa8"+
		"\u0aaa\u0001\u0000\u0000\u0000\u0aa9\u0aa2\u0001\u0000\u0000\u0000\u0aa9"+
		"\u0aa3\u0001\u0000\u0000\u0000\u0aaa\u00a9\u0001\u0000\u0000\u0000\u0aab"+
		"\u0aac\u0005 \u0000\u0000\u0aac\u0ab1\u0003\u00a8T\u0000\u0aad\u0aae\u0005"+
		"&\u0000\u0000\u0aae\u0ab0\u0003\u00a8T\u0000\u0aaf\u0aad\u0001\u0000\u0000"+
		"\u0000\u0ab0\u0ab3\u0001\u0000\u0000\u0000\u0ab1\u0aaf\u0001\u0000\u0000"+
		"\u0000\u0ab1\u0ab2\u0001\u0000\u0000\u0000\u0ab2\u0ab4\u0001\u0000\u0000"+
		"\u0000\u0ab3\u0ab1\u0001\u0000\u0000\u0000\u0ab4\u0ab5\u0005!\u0000\u0000"+
		"\u0ab5\u00ab\u0001\u0000\u0000\u0000\u0ab6\u0ab9\u0003\u00aeW\u0000\u0ab7"+
		"\u0ab9\u0003\u00a2Q\u0000\u0ab8\u0ab6\u0001\u0000\u0000\u0000\u0ab8\u0ab7"+
		"\u0001\u0000\u0000\u0000\u0ab9\u00ad\u0001\u0000\u0000\u0000\u0aba\u0abc"+
		"\u0005\u015e\u0000\u0000\u0abb\u0abd\u0005\u0019\u0000\u0000\u0abc\u0abb"+
		"\u0001\u0000\u0000\u0000\u0abc\u0abd\u0001\u0000\u0000\u0000\u0abd\u0abe"+
		"\u0001\u0000\u0000\u0000\u0abe\u0ac3\u0005\u0322\u0000\u0000\u0abf\u0ac0"+
		"\u0005\u0093\u0000\u0000\u0ac0\u0ac3\u0003\u01de\u00ef\u0000\u0ac1\u0ac3"+
		"\u0003\u00b0X\u0000\u0ac2\u0aba\u0001\u0000\u0000\u0000\u0ac2\u0abf\u0001"+
		"\u0000\u0000\u0000\u0ac2\u0ac1\u0001\u0000\u0000\u0000\u0ac3\u00af\u0001"+
		"\u0000\u0000\u0000\u0ac4\u0ac5\u0007\u0014\u0000\u0000\u0ac5\u00b1\u0001"+
		"\u0000\u0000\u0000\u0ac6\u0ac8\u0005 \u0000\u0000\u0ac7\u0ac6\u0001\u0000"+
		"\u0000\u0000\u0ac7\u0ac8\u0001\u0000\u0000\u0000\u0ac8\u0ac9\u0001\u0000"+
		"\u0000\u0000\u0ac9\u0aca\u0005\u016c\u0000\u0000\u0aca\u0acc\u0003\u021c"+
		"\u010e\u0000\u0acb\u0acd\u0005!\u0000\u0000\u0acc\u0acb\u0001\u0000\u0000"+
		"\u0000\u0acc\u0acd\u0001\u0000\u0000\u0000\u0acd\u00b3\u0001\u0000\u0000"+
		"\u0000\u0ace\u0acf\u0007\u0015\u0000\u0000\u0acf\u00b5\u0001\u0000\u0000"+
		"\u0000\u0ad0\u0ad7\u0003\u00b8\\\u0000\u0ad1\u0ad3\u0005&\u0000\u0000"+
		"\u0ad2\u0ad1\u0001\u0000\u0000\u0000\u0ad2\u0ad3\u0001\u0000\u0000\u0000"+
		"\u0ad3\u0ad4\u0001\u0000\u0000\u0000\u0ad4\u0ad6\u0003\u00b8\\\u0000\u0ad5"+
		"\u0ad2\u0001\u0000\u0000\u0000\u0ad6\u0ad9\u0001\u0000\u0000\u0000\u0ad7"+
		"\u0ad5\u0001\u0000\u0000\u0000\u0ad7\u0ad8\u0001\u0000\u0000\u0000\u0ad8"+
		"\u00b7\u0001\u0000\u0000\u0000\u0ad9\u0ad7\u0001\u0000\u0000\u0000\u0ada"+
		"\u0adc\u0005\u00e7\u0000\u0000\u0adb\u0add\u0005\u0019\u0000\u0000\u0adc"+
		"\u0adb\u0001\u0000\u0000\u0000\u0adc\u0add\u0001\u0000\u0000\u0000\u0add"+
		"\u0ade\u0001\u0000\u0000\u0000\u0ade\u0b5e\u0003\u025c\u012e\u0000\u0adf"+
		"\u0ae1\u0005\u0264\u0000\u0000\u0ae0\u0ae2\u0005\u0019\u0000\u0000\u0ae1"+
		"\u0ae0\u0001\u0000\u0000\u0000\u0ae1\u0ae2\u0001\u0000\u0000\u0000\u0ae2"+
		"\u0ae6\u0001\u0000\u0000\u0000\u0ae3\u0ae7\u0005\u01d1\u0000\u0000\u0ae4"+
		"\u0ae7\u0003\u01dc\u00ee\u0000\u0ae5\u0ae7\u0003\u01ee\u00f7\u0000\u0ae6"+
		"\u0ae3\u0001\u0000\u0000\u0000\u0ae6\u0ae4\u0001\u0000\u0000\u0000\u0ae6"+
		"\u0ae5\u0001\u0000\u0000\u0000\u0ae7\u0b5e\u0001\u0000\u0000\u0000\u0ae8"+
		"\u0aea\u0005\u01a0\u0000\u0000\u0ae9\u0aeb\u0005\u0019\u0000\u0000\u0aea"+
		"\u0ae9\u0001\u0000\u0000\u0000\u0aea\u0aeb\u0001\u0000\u0000\u0000\u0aeb"+
		"\u0aec\u0001\u0000\u0000\u0000\u0aec\u0b5e\u0005\u0322\u0000\u0000\u0aed"+
		"\u0aef\u0005\u01b2\u0000\u0000\u0aee\u0af0\u0005\u0019\u0000\u0000\u0aef"+
		"\u0aee\u0001\u0000\u0000\u0000\u0aef\u0af0\u0001\u0000\u0000\u0000\u0af0"+
		"\u0af1\u0001\u0000\u0000\u0000\u0af1\u0b5e\u0005\u0322\u0000\u0000\u0af2"+
		"\u0af4\u0005e\u0000\u0000\u0af3\u0af5\u0005\u0019\u0000\u0000\u0af4\u0af3"+
		"\u0001\u0000\u0000\u0000\u0af4\u0af5\u0001\u0000\u0000\u0000\u0af5\u0af6"+
		"\u0001\u0000\u0000\u0000\u0af6\u0b5e\u0005\u0322\u0000\u0000\u0af7\u0af9"+
		"\u0005\u01f6\u0000\u0000\u0af8\u0afa\u0005\u0019\u0000\u0000\u0af9\u0af8"+
		"\u0001\u0000\u0000\u0000\u0af9\u0afa\u0001\u0000\u0000\u0000\u0afa\u0afb"+
		"\u0001\u0000\u0000\u0000\u0afb\u0b5e\u0003\u01dc\u00ee\u0000\u0afc\u0afe"+
		"\u0005\u0093\u0000\u0000\u0afd\u0aff\u0005\u0019\u0000\u0000\u0afe\u0afd"+
		"\u0001\u0000\u0000\u0000\u0afe\u0aff\u0001\u0000\u0000\u0000\u0aff\u0b00"+
		"\u0001\u0000\u0000\u0000\u0b00\u0b5e\u0003\u01dc\u00ee\u0000\u0b01\u0b03"+
		"\u0005\u009a\u0000\u0000\u0b02\u0b04\u0005\u0019\u0000\u0000\u0b03\u0b02"+
		"\u0001\u0000\u0000\u0000\u0b03\u0b04\u0001\u0000\u0000\u0000\u0b04\u0b05"+
		"\u0001\u0000\u0000\u0000\u0b05\u0b5e\u0003\u02f4\u017a\u0000\u0b06\u0b08"+
		"\u0005\u00e3\u0000\u0000\u0b07\u0b09\u0005\u0019\u0000\u0000\u0b08\u0b07"+
		"\u0001\u0000\u0000\u0000\u0b08\u0b09\u0001\u0000\u0000\u0000\u0b09\u0b0a"+
		"\u0001\u0000\u0000\u0000\u0b0a\u0b5e\u0003\u02f4\u017a\u0000\u0b0b\u0b0d"+
		"\u0005b\u0000\u0000\u0b0c\u0b0e\u0005\u0019\u0000\u0000\u0b0d\u0b0c\u0001"+
		"\u0000\u0000\u0000\u0b0d\u0b0e\u0001\u0000\u0000\u0000\u0b0e\u0b0f\u0001"+
		"\u0000\u0000\u0000\u0b0f\u0b5e\u0005\u0322\u0000\u0000\u0b10\u0b12\u0005"+
		"\u01ef\u0000\u0000\u0b11\u0b13\u0005\u0019\u0000\u0000\u0b12\u0b11\u0001"+
		"\u0000\u0000\u0000\u0b12\u0b13\u0001\u0000\u0000\u0000\u0b13\u0b14\u0001"+
		"\u0000\u0000\u0000\u0b14\u0b5e\u0007\t\u0000\u0000\u0b15\u0b17\u0007\u0016"+
		"\u0000\u0000\u0b16\u0b18\u0005\u0019\u0000\u0000\u0b17\u0b16\u0001\u0000"+
		"\u0000\u0000\u0b17\u0b18\u0001\u0000\u0000\u0000\u0b18\u0b19\u0001\u0000"+
		"\u0000\u0000\u0b19\u0b5e\u0007\t\u0000\u0000\u0b1a\u0b1c\u0007\u0017\u0000"+
		"\u0000\u0b1b\u0b1d\u0005\u0019\u0000\u0000\u0b1c\u0b1b\u0001\u0000\u0000"+
		"\u0000\u0b1c\u0b1d\u0001\u0000\u0000\u0000\u0b1d\u0b1e\u0001\u0000\u0000"+
		"\u0000\u0b1e\u0b5e\u0005\u0322\u0000\u0000\u0b1f\u0b21\u0005\u00c7\u0000"+
		"\u0000\u0b20\u0b22\u0005\u0019\u0000\u0000\u0b21\u0b20\u0001\u0000\u0000"+
		"\u0000\u0b21\u0b22\u0001\u0000\u0000\u0000\u0b22\u0b23\u0001\u0000\u0000"+
		"\u0000\u0b23\u0b5e\u0005\u0322\u0000\u0000\u0b24\u0b26\u0005\u025a\u0000"+
		"\u0000\u0b25\u0b27\u0005\u0019\u0000\u0000\u0b26\u0b25\u0001\u0000\u0000"+
		"\u0000\u0b26\u0b27\u0001\u0000\u0000\u0000\u0b27\u0b28\u0001\u0000\u0000"+
		"\u0000\u0b28\u0b5e\u0007\u0018\u0000\u0000\u0b29\u0b2b\u0005\u02cf\u0000"+
		"\u0000\u0b2a\u0b2c\u0005\u0019\u0000\u0000\u0b2b\u0b2a\u0001\u0000\u0000"+
		"\u0000\u0b2b\u0b2c\u0001\u0000\u0000\u0000\u0b2c\u0b2d\u0001\u0000\u0000"+
		"\u0000\u0b2d\u0b2e\u0005 \u0000\u0000\u0b2e\u0b2f\u0003\u023c\u011e\u0000"+
		"\u0b2f\u0b30\u0005!\u0000\u0000\u0b30\u0b5e\u0001\u0000\u0000\u0000\u0b31"+
		"\u0b5e\u0003\u030a\u0185\u0000\u0b32\u0b5e\u0003\u0306\u0183\u0000\u0b33"+
		"\u0b35\u0005\u0142\u0000\u0000\u0b34\u0b36\u0005\u0019\u0000\u0000\u0b35"+
		"\u0b34\u0001\u0000\u0000\u0000\u0b35\u0b36\u0001\u0000\u0000\u0000\u0b36"+
		"\u0b37\u0001\u0000\u0000\u0000\u0b37\u0b5e\u0007\u0019\u0000\u0000\u0b38"+
		"\u0b39\u0005\u00b3\u0000\u0000\u0b39\u0b3b\u0005\u00cf\u0000\u0000\u0b3a"+
		"\u0b3c\u0005\u0019\u0000\u0000\u0b3b\u0b3a\u0001\u0000\u0000\u0000\u0b3b"+
		"\u0b3c\u0001\u0000\u0000\u0000\u0b3c\u0b3d\u0001\u0000\u0000\u0000\u0b3d"+
		"\u0b5e\u0003\u02f4\u017a\u0000\u0b3e\u0b3f\u0005\u013a\u0000\u0000\u0b3f"+
		"\u0b41\u0005\u00cf\u0000\u0000\u0b40\u0b42\u0005\u0019\u0000\u0000\u0b41"+
		"\u0b40\u0001\u0000\u0000\u0000\u0b41\u0b42\u0001\u0000\u0000\u0000\u0b42"+
		"\u0b43\u0001\u0000\u0000\u0000\u0b43\u0b5e\u0003\u02f4\u017a\u0000\u0b44"+
		"\u0b46\u0005\u02ab\u0000\u0000\u0b45\u0b47\u0005\u0019\u0000\u0000\u0b46"+
		"\u0b45\u0001\u0000\u0000\u0000\u0b46\u0b47\u0001\u0000\u0000\u0000\u0b47"+
		"\u0b48\u0001\u0000\u0000\u0000\u0b48\u0b5e\u0003\u01ee\u00f7\u0000\u0b49"+
		"\u0b4a\u0005\u029b\u0000\u0000\u0b4a\u0b5e\u0007\u001a\u0000\u0000\u0b4b"+
		"\u0b4d\u0005\u009d\u0000\u0000\u0b4c\u0b4e\u0005\u0019\u0000\u0000\u0b4d"+
		"\u0b4c\u0001\u0000\u0000\u0000\u0b4d\u0b4e\u0001\u0000\u0000\u0000\u0b4e"+
		"\u0b4f\u0001\u0000\u0000\u0000\u0b4f\u0b5e\u0003\u02f4\u017a\u0000\u0b50"+
		"\u0b52\u0005\u015e\u0000\u0000\u0b51\u0b53\u0005\u0019\u0000\u0000\u0b52"+
		"\u0b51\u0001\u0000\u0000\u0000\u0b52\u0b53\u0001\u0000\u0000\u0000\u0b53"+
		"\u0b54\u0001\u0000\u0000\u0000\u0b54\u0b5e\u0005\u0322\u0000\u0000\u0b55"+
		"\u0b57\u0005\u00e9\u0000\u0000\u0b56\u0b58\u0005\u0019\u0000\u0000\u0b57"+
		"\u0b56\u0001\u0000\u0000\u0000\u0b57\u0b58\u0001\u0000\u0000\u0000\u0b58"+
		"\u0b59\u0001\u0000\u0000\u0000\u0b59\u0b5e\u0003\u01dc\u00ee\u0000\u0b5a"+
		"\u0b5b\u0005\u0265\u0000\u0000\u0b5b\u0b5c\u0005\u0019\u0000\u0000\u0b5c"+
		"\u0b5e\u0003\u01dc\u00ee\u0000\u0b5d\u0ada\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0adf\u0001\u0000\u0000\u0000\u0b5d\u0ae8\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0aed\u0001\u0000\u0000\u0000\u0b5d\u0af2\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0af7\u0001\u0000\u0000\u0000\u0b5d\u0afc\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b01\u0001\u0000\u0000\u0000\u0b5d\u0b06\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b0b\u0001\u0000\u0000\u0000\u0b5d\u0b10\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b15\u0001\u0000\u0000\u0000\u0b5d\u0b1a\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b1f\u0001\u0000\u0000\u0000\u0b5d\u0b24\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b29\u0001\u0000\u0000\u0000\u0b5d\u0b31\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b32\u0001\u0000\u0000\u0000\u0b5d\u0b33\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b38\u0001\u0000\u0000\u0000\u0b5d\u0b3e\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b44\u0001\u0000\u0000\u0000\u0b5d\u0b49\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b4b\u0001\u0000\u0000\u0000\u0b5d\u0b50\u0001\u0000\u0000\u0000\u0b5d"+
		"\u0b55\u0001\u0000\u0000\u0000\u0b5d\u0b5a\u0001\u0000\u0000\u0000\u0b5e"+
		"\u00b9\u0001\u0000\u0000\u0000\u0b5f\u0b60\u0005\u00a8\u0000\u0000\u0b60"+
		"\u0b61\u0005\u01e5\u0000\u0000\u0b61\u0b62\u0005\u0233\u0000\u0000\u0b62"+
		"\u0b63\u0005\u0281\u0000\u0000\u0b63\u0b64\u0005\u0223\u0000\u0000\u0b64"+
		"\u0b65\u0005\u02a8\u0000\u0000\u0b65\u0b69\u0005\u0322\u0000\u0000\u0b66"+
		"\u0b68\u0003\u00be_\u0000\u0b67\u0b66\u0001\u0000\u0000\u0000\u0b68\u0b6b"+
		"\u0001\u0000\u0000\u0000\u0b69\u0b67\u0001\u0000\u0000\u0000\u0b69\u0b6a"+
		"\u0001\u0000\u0000\u0000\u0b6a\u0b7b\u0001\u0000\u0000\u0000\u0b6b\u0b69"+
		"\u0001\u0000\u0000\u0000\u0b6c\u0b6d\u0005\u00a8\u0000\u0000\u0b6d\u0b6e"+
		"\u0005\u0281\u0000\u0000\u0b6e\u0b6f\u0005\u0223\u0000\u0000\u0b6f\u0b71"+
		"\u0005\u02a8\u0000\u0000\u0b70\u0b72\u0003\u031e\u018f\u0000\u0b71\u0b70"+
		"\u0001\u0000\u0000\u0000\u0b71\u0b72\u0001\u0000\u0000\u0000\u0b72\u0b73"+
		"\u0001\u0000\u0000\u0000\u0b73\u0b77\u0005\u0322\u0000\u0000\u0b74\u0b76"+
		"\u0003\u00be_\u0000\u0b75\u0b74\u0001\u0000\u0000\u0000\u0b76\u0b79\u0001"+
		"\u0000\u0000\u0000\u0b77\u0b75\u0001\u0000\u0000\u0000\u0b77\u0b78\u0001"+
		"\u0000\u0000\u0000\u0b78\u0b7b\u0001\u0000\u0000\u0000\u0b79\u0b77\u0001"+
		"\u0000\u0000\u0000\u0b7a\u0b5f\u0001\u0000\u0000\u0000\u0b7a\u0b6c\u0001"+
		"\u0000\u0000\u0000\u0b7b\u00bb\u0001\u0000\u0000\u0000\u0b7c\u0b7d\u0005"+
		"\u00d8\u0000\u0000\u0b7d\u0b7e\u0005\u0281\u0000\u0000\u0b7e\u0b7f\u0005"+
		"\u0223\u0000\u0000\u0b7f\u0b81\u0005\u02a8\u0000\u0000\u0b80\u0b82\u0003"+
		"\u031e\u018f\u0000\u0b81\u0b80\u0001\u0000\u0000\u0000\u0b81\u0b82\u0001"+
		"\u0000\u0000\u0000\u0b82\u0b83\u0001\u0000\u0000\u0000\u0b83\u0b84\u0005"+
		"\u0322\u0000\u0000\u0b84\u00bd\u0001\u0000\u0000\u0000\u0b85\u0b86\u0005"+
		"\u01bd\u0000\u0000\u0b86\u0b92\u0003\u01dc\u00ee\u0000\u0b87\u0b88\u0005"+
		"\u00c5\u0000\u0000\u0b88\u0b92\u0003\u01dc\u00ee\u0000\u0b89\u0b8a\u0005"+
		"\u01e8\u0000\u0000\u0b8a\u0b8b\u0003\u01dc\u00ee\u0000\u0b8b\u0b8c\u0005"+
		"\u0133\u0000\u0000\u0b8c\u0b8d\u0005u\u0000\u0000\u0b8d\u0b8e\u0005\u0322"+
		"\u0000\u0000\u0b8e\u0b92\u0001\u0000\u0000\u0000\u0b8f\u0b90\u0005\u00cc"+
		"\u0000\u0000\u0b90\u0b92\u0003\u01dc\u00ee\u0000\u0b91\u0b85\u0001\u0000"+
		"\u0000\u0000\u0b91\u0b87\u0001\u0000\u0000\u0000\u0b91\u0b89\u0001\u0000"+
		"\u0000\u0000\u0b91\u0b8f\u0001\u0000\u0000\u0000\u0b92\u00bf\u0001\u0000"+
		"\u0000\u0000\u0b93\u0b97\u0005\u0106\u0000\u0000\u0b94\u0b95\u0005P\u0000"+
		"\u0000\u0b95\u0b97\u0003\u021e\u010f\u0000\u0b96\u0b93\u0001\u0000\u0000"+
		"\u0000\u0b96\u0b94\u0001\u0000\u0000\u0000\u0b97\u00c1\u0001\u0000\u0000"+
		"\u0000\u0b98\u0b99\u0005 \u0000\u0000\u0b99\u0b9e\u0003\u00c4b\u0000\u0b9a"+
		"\u0b9b\u0005&\u0000\u0000\u0b9b\u0b9d\u0003\u00c4b\u0000\u0b9c\u0b9a\u0001"+
		"\u0000\u0000\u0000\u0b9d\u0ba0\u0001\u0000\u0000\u0000\u0b9e\u0b9c\u0001"+
		"\u0000\u0000\u0000\u0b9e\u0b9f\u0001\u0000\u0000\u0000\u0b9f\u0ba1\u0001"+
		"\u0000\u0000\u0000\u0ba0\u0b9e\u0001\u0000\u0000\u0000\u0ba1\u0ba2\u0005"+
		"!\u0000\u0000\u0ba2\u00c3\u0001\u0000\u0000\u0000\u0ba3\u0ba4\u0005\u01f3"+
		"\u0000\u0000\u0ba4\u0bb0\u0003\u0266\u0133\u0000\u0ba5\u0bae\u0005\u02e2"+
		"\u0000\u0000\u0ba6\u0ba7\u0005\u016a\u0000\u0000\u0ba7\u0ba8\u0005\u02b2"+
		"\u0000\u0000\u0ba8\u0baf\u0003\u00c6c\u0000\u0ba9\u0baa\u0005\u0138\u0000"+
		"\u0000\u0baa\u0bab\u0005 \u0000\u0000\u0bab\u0bac\u0003\u00c8d\u0000\u0bac"+
		"\u0bad\u0005!\u0000\u0000\u0bad\u0baf\u0001\u0000\u0000\u0000\u0bae\u0ba6"+
		"\u0001\u0000\u0000\u0000\u0bae\u0ba9\u0001\u0000\u0000\u0000\u0baf\u0bb1"+
		"\u0001\u0000\u0000\u0000\u0bb0\u0ba5\u0001\u0000\u0000\u0000\u0bb0\u0bb1"+
		"\u0001\u0000\u0000\u0000\u0bb1\u0bb5\u0001\u0000\u0000\u0000\u0bb2\u0bb4"+
		"\u0003\u00cae\u0000\u0bb3\u0bb2\u0001\u0000\u0000\u0000\u0bb4\u0bb7\u0001"+
		"\u0000\u0000\u0000\u0bb5\u0bb3\u0001\u0000\u0000\u0000\u0bb5\u0bb6\u0001"+
		"\u0000\u0000\u0000\u0bb6\u0bc3\u0001\u0000\u0000\u0000\u0bb7\u0bb5\u0001"+
		"\u0000\u0000\u0000\u0bb8\u0bb9\u0005 \u0000\u0000\u0bb9\u0bbe\u0003\u00cc"+
		"f\u0000\u0bba\u0bbb\u0005&\u0000\u0000\u0bbb\u0bbd\u0003\u00ccf\u0000"+
		"\u0bbc\u0bba\u0001\u0000\u0000\u0000\u0bbd\u0bc0\u0001\u0000\u0000\u0000"+
		"\u0bbe\u0bbc\u0001\u0000\u0000\u0000\u0bbe\u0bbf\u0001\u0000\u0000\u0000"+
		"\u0bbf\u0bc1\u0001\u0000\u0000\u0000\u0bc0\u0bbe\u0001\u0000\u0000\u0000"+
		"\u0bc1\u0bc2\u0005!\u0000\u0000\u0bc2\u0bc4\u0001\u0000\u0000\u0000\u0bc3"+
		"\u0bb8\u0001\u0000\u0000\u0000\u0bc3\u0bc4\u0001\u0000\u0000\u0000\u0bc4"+
		"\u00c5\u0001\u0000\u0000\u0000\u0bc5\u0bc8\u0005 \u0000\u0000\u0bc6\u0bc9"+
		"\u0003\u0270\u0138\u0000\u0bc7\u0bc9\u0003\u00c8d\u0000\u0bc8\u0bc6\u0001"+
		"\u0000\u0000\u0000\u0bc8\u0bc7\u0001\u0000\u0000\u0000\u0bc9\u0bca\u0001"+
		"\u0000\u0000\u0000\u0bca\u0bcb\u0005!\u0000\u0000\u0bcb\u0bce\u0001\u0000"+
		"\u0000\u0000\u0bcc\u0bce\u0005\u019d\u0000\u0000\u0bcd\u0bc5\u0001\u0000"+
		"\u0000\u0000\u0bcd\u0bcc\u0001\u0000\u0000\u0000\u0bce\u00c7\u0001\u0000"+
		"\u0000\u0000\u0bcf\u0bd4\u0003\u0270\u0138\u0000\u0bd0\u0bd1\u0005&\u0000"+
		"\u0000\u0bd1\u0bd3\u0003\u0270\u0138\u0000\u0bd2\u0bd0\u0001\u0000\u0000"+
		"\u0000\u0bd3\u0bd6\u0001\u0000\u0000\u0000\u0bd4\u0bd2\u0001\u0000\u0000"+
		"\u0000\u0bd4\u0bd5\u0001\u0000\u0000\u0000\u0bd5\u00c9\u0001\u0000\u0000"+
		"\u0000\u0bd6\u0bd4\u0001\u0000\u0000\u0000\u0bd7\u0bd9\u0005\u029b\u0000"+
		"\u0000\u0bd8\u0bd7\u0001\u0000\u0000\u0000\u0bd8\u0bd9\u0001\u0000\u0000"+
		"\u0000\u0bd9\u0bda\u0001\u0000\u0000\u0000\u0bda\u0bdc\u0005\u00e7\u0000"+
		"\u0000\u0bdb\u0bdd\u0005\u0019\u0000\u0000\u0bdc\u0bdb\u0001\u0000\u0000"+
		"\u0000\u0bdc\u0bdd\u0001\u0000\u0000\u0000\u0bdd\u0bde\u0001\u0000\u0000"+
		"\u0000\u0bde\u0c00\u0003\u01ee\u00f7\u0000\u0bdf\u0be1\u0005\u0093\u0000"+
		"\u0000\u0be0\u0be2\u0005\u0019\u0000\u0000\u0be1\u0be0\u0001\u0000\u0000"+
		"\u0000\u0be1\u0be2\u0001\u0000\u0000\u0000\u0be2\u0be3\u0001\u0000\u0000"+
		"\u0000\u0be3\u0c00\u0003\u01dc\u00ee\u0000\u0be4\u0be5\u0005\u00b3\u0000"+
		"\u0000\u0be5\u0be7\u0005\u00cf\u0000\u0000\u0be6\u0be8\u0005\u0019\u0000"+
		"\u0000\u0be7\u0be6\u0001\u0000\u0000\u0000\u0be7\u0be8\u0001\u0000\u0000"+
		"\u0000\u0be8\u0be9\u0001\u0000\u0000\u0000\u0be9\u0c00\u0003\u01dc\u00ee"+
		"\u0000\u0bea\u0beb\u0005\u013a\u0000\u0000\u0beb\u0bed\u0005\u00cf\u0000"+
		"\u0000\u0bec\u0bee\u0005\u0019\u0000\u0000\u0bed\u0bec\u0001\u0000\u0000"+
		"\u0000\u0bed\u0bee\u0001\u0000\u0000\u0000\u0bee\u0bef\u0001\u0000\u0000"+
		"\u0000\u0bef\u0c00\u0003\u01dc\u00ee\u0000\u0bf0\u0bf2\u0005\u01a0\u0000"+
		"\u0000\u0bf1\u0bf3\u0005\u0019\u0000\u0000\u0bf2\u0bf1\u0001\u0000\u0000"+
		"\u0000\u0bf2\u0bf3\u0001\u0000\u0000\u0000\u0bf3\u0bf4\u0001\u0000\u0000"+
		"\u0000\u0bf4\u0c00\u0005\u0322\u0000\u0000\u0bf5\u0bf7\u0005\u01b2\u0000"+
		"\u0000\u0bf6\u0bf8\u0005\u0019\u0000\u0000\u0bf7\u0bf6\u0001\u0000\u0000"+
		"\u0000\u0bf7\u0bf8\u0001\u0000\u0000\u0000\u0bf8\u0bf9\u0001\u0000\u0000"+
		"\u0000\u0bf9\u0c00\u0005\u0322\u0000\u0000\u0bfa\u0bfc\u0005\u02ab\u0000"+
		"\u0000\u0bfb\u0bfd\u0005\u0019\u0000\u0000\u0bfc\u0bfb\u0001\u0000\u0000"+
		"\u0000\u0bfc\u0bfd\u0001\u0000\u0000\u0000\u0bfd\u0bfe\u0001\u0000\u0000"+
		"\u0000\u0bfe\u0c00\u0003\u01ee\u00f7\u0000\u0bff\u0bd8\u0001\u0000\u0000"+
		"\u0000\u0bff\u0bdf\u0001\u0000\u0000\u0000\u0bff\u0be4\u0001\u0000\u0000"+
		"\u0000\u0bff\u0bea\u0001\u0000\u0000\u0000\u0bff\u0bf0\u0001\u0000\u0000"+
		"\u0000\u0bff\u0bf5\u0001\u0000\u0000\u0000\u0bff\u0bfa\u0001\u0000\u0000"+
		"\u0000\u0c00\u00cb\u0001\u0000\u0000\u0000\u0c01\u0c02\u0005\u02a2\u0000"+
		"\u0000\u0c02\u0c06\u0003\u01ee\u00f7\u0000\u0c03\u0c05\u0003\u00cae\u0000"+
		"\u0c04\u0c03\u0001\u0000\u0000\u0000\u0c05\u0c08\u0001\u0000\u0000\u0000"+
		"\u0c06\u0c04\u0001\u0000\u0000\u0000\u0c06\u0c07\u0001\u0000\u0000\u0000"+
		"\u0c07\u00cd\u0001\u0000\u0000\u0000\u0c08\u0c06\u0001\u0000\u0000\u0000"+
		"\u0c09\u0c0a\u0005\u00c4\u0000\u0000\u0c0a\u0c11\u0005\u0019\u0000\u0000"+
		"\u0c0b\u0c12\u0003\u0228\u0114\u0000\u0c0c\u0c0f\u0005\u00b0\u0000\u0000"+
		"\u0c0d\u0c0e\u0005 \u0000\u0000\u0c0e\u0c10\u0005!\u0000\u0000\u0c0f\u0c0d"+
		"\u0001\u0000\u0000\u0000\u0c0f\u0c10\u0001\u0000\u0000\u0000\u0c10\u0c12"+
		"\u0001\u0000\u0000\u0000\u0c11\u0c0b\u0001\u0000\u0000\u0000\u0c11\u0c0c"+
		"\u0001\u0000\u0000\u0000\u0c12\u00cf\u0001\u0000\u0000\u0000\u0c13\u0c14"+
		"\u0005_\u0000\u0000\u0c14\u0c19\u0003\u00d2i\u0000\u0c15\u0c16\u0005\u0010"+
		"\u0000\u0000\u0c16\u0c18\u0003\u02e6\u0173\u0000\u0c17\u0c15\u0001\u0000"+
		"\u0000\u0000\u0c18\u0c1b\u0001\u0000\u0000\u0000\u0c19\u0c17\u0001\u0000"+
		"\u0000\u0000\u0c19\u0c1a\u0001\u0000\u0000\u0000\u0c1a\u0c35\u0001\u0000"+
		"\u0000\u0000\u0c1b\u0c19\u0001\u0000\u0000\u0000\u0c1c\u0c1d\u0005\u00f1"+
		"\u0000\u0000\u0c1d\u0c27\u0003\u02e8\u0174\u0000\u0c1e\u0c1f\u0005\u0295"+
		"\u0000\u0000\u0c1f\u0c24\u0003\u00d2i\u0000\u0c20\u0c21\u0005\u0010\u0000"+
		"\u0000\u0c21\u0c23\u0003\u02e6\u0173\u0000\u0c22\u0c20\u0001\u0000\u0000"+
		"\u0000\u0c23\u0c26\u0001\u0000\u0000\u0000\u0c24\u0c22\u0001\u0000\u0000"+
		"\u0000\u0c24\u0c25\u0001\u0000\u0000\u0000\u0c25\u0c28\u0001\u0000\u0000"+
		"\u0000\u0c26\u0c24\u0001\u0000\u0000\u0000\u0c27\u0c1e\u0001\u0000\u0000"+
		"\u0000\u0c27\u0c28\u0001\u0000\u0000\u0000\u0c28\u0c32\u0001\u0000\u0000"+
		"\u0000\u0c29\u0c2a\u0005\u00e5\u0000\u0000\u0c2a\u0c2f\u0003\u00d2i\u0000"+
		"\u0c2b\u0c2c\u0005\u0010\u0000\u0000\u0c2c\u0c2e\u0003\u02e6\u0173\u0000"+
		"\u0c2d\u0c2b\u0001\u0000\u0000\u0000\u0c2e\u0c31\u0001\u0000\u0000\u0000"+
		"\u0c2f\u0c2d\u0001\u0000\u0000\u0000\u0c2f\u0c30\u0001\u0000\u0000\u0000"+
		"\u0c30\u0c33\u0001\u0000\u0000\u0000\u0c31\u0c2f\u0001\u0000\u0000\u0000"+
		"\u0c32\u0c29\u0001\u0000\u0000\u0000\u0c32\u0c33\u0001\u0000\u0000\u0000"+
		"\u0c33\u0c35\u0001\u0000\u0000\u0000\u0c34\u0c13\u0001\u0000\u0000\u0000"+
		"\u0c34\u0c1c\u0001\u0000\u0000\u0000\u0c35\u00d1\u0001\u0000\u0000\u0000"+
		"\u0c36\u0c3b\u0005\u00af\u0000\u0000\u0c37\u0c3b\u0003\u01de\u00ef\u0000"+
		"\u0c38\u0c3b\u0003\u01e0\u00f0\u0000\u0c39\u0c3b\u0003\u0270\u0138\u0000"+
		"\u0c3a\u0c36\u0001\u0000\u0000\u0000\u0c3a\u0c37\u0001\u0000\u0000\u0000"+
		"\u0c3a\u0c38\u0001\u0000\u0000\u0000\u0c3a\u0c39\u0001\u0000\u0000\u0000"+
		"\u0c3b\u00d3\u0001\u0000\u0000\u0000\u0c3c\u0c3f\u0003\u00deo\u0000\u0c3d"+
		"\u0c3f\u0003\u00e0p\u0000\u0c3e\u0c3c\u0001\u0000\u0000\u0000\u0c3e\u0c3d"+
		"\u0001\u0000\u0000\u0000\u0c3f\u00d5\u0001\u0000\u0000\u0000\u0c40\u0c41"+
		"\u0005\u012d\u0000\u0000\u0c41\u0c4f\u0003\u01dc\u00ee\u0000\u0c42\u0c43"+
		"\u0005\u00b4\u0000\u0000\u0c43\u0c4f\u0003\u01dc\u00ee\u0000\u0c44\u0c45"+
		"\u0005\u02d9\u0000\u0000\u0c45\u0c4f\u0003\u01dc\u00ee\u0000\u0c46\u0c47"+
		"\u0005\u01f6\u0000\u0000\u0c47\u0c4f\u0003\u01dc\u00ee\u0000\u0c48\u0c49"+
		"\u0005\u027d\u0000\u0000\u0c49\u0c4f\u0003\u01dc\u00ee\u0000\u0c4a\u0c4b"+
		"\u0005\u01ee\u0000\u0000\u0c4b\u0c4f\u0003\u01dc\u00ee\u0000\u0c4c\u0c4d"+
		"\u0005\u0202\u0000\u0000\u0c4d\u0c4f\u0003\u01e0\u00f0\u0000\u0c4e\u0c40"+
		"\u0001\u0000\u0000\u0000\u0c4e\u0c42\u0001\u0000\u0000\u0000\u0c4e\u0c44"+
		"\u0001\u0000\u0000\u0000\u0c4e\u0c46\u0001\u0000\u0000\u0000\u0c4e\u0c48"+
		"\u0001\u0000\u0000\u0000\u0c4e\u0c4a\u0001\u0000\u0000\u0000\u0c4e\u0c4c"+
		"\u0001\u0000\u0000\u0000\u0c4f\u00d7\u0001\u0000\u0000\u0000\u0c50\u0c51"+
		"\u0005\u0093\u0000\u0000\u0c51\u0c68\u0003\u01dc\u00ee\u0000\u0c52\u0c53"+
		"\u0005\u0161\u0000\u0000\u0c53\u0c68\u0005\u0283\u0000\u0000\u0c54\u0c56"+
		"\u0005\u01cb\u0000\u0000\u0c55\u0c54\u0001\u0000\u0000\u0000\u0c55\u0c56"+
		"\u0001\u0000\u0000\u0000\u0c56\u0c57\u0001\u0000\u0000\u0000\u0c57\u0c68"+
		"\u0005\u00cd\u0000\u0000\u0c58\u0c59\u0005\u00a3\u0000\u0000\u0c59\u0c63"+
		"\u0005\u0283\u0000\u0000\u0c5a\u0c5b\u0005\u01c8\u0000\u0000\u0c5b\u0c63"+
		"\u0005\u0283\u0000\u0000\u0c5c\u0c5d\u0005\u021a\u0000\u0000\u0c5d\u0c5e"+
		"\u0005\u0283\u0000\u0000\u0c5e\u0c63\u0005\u00b3\u0000\u0000\u0c5f\u0c60"+
		"\u0005\u01b5\u0000\u0000\u0c60\u0c61\u0005\u0283\u0000\u0000\u0c61\u0c63"+
		"\u0005\u00b3\u0000\u0000\u0c62\u0c58\u0001\u0000\u0000\u0000\u0c62\u0c5a"+
		"\u0001\u0000\u0000\u0000\u0c62\u0c5c\u0001\u0000\u0000\u0000\u0c62\u0c5f"+
		"\u0001\u0000\u0000\u0000\u0c63\u0c68\u0001\u0000\u0000\u0000\u0c64\u0c65"+
		"\u0005\u0283\u0000\u0000\u0c65\u0c66\u0005\u0269\u0000\u0000\u0c66\u0c68"+
		"\u0007\r\u0000\u0000\u0c67\u0c50\u0001\u0000\u0000\u0000\u0c67\u0c52\u0001"+
		"\u0000\u0000\u0000\u0c67\u0c55\u0001\u0000\u0000\u0000\u0c67\u0c62\u0001"+
		"\u0000\u0000\u0000\u0c67\u0c64\u0001\u0000\u0000\u0000\u0c68\u00d9\u0001"+
		"\u0000\u0000\u0000\u0c69\u0c6b\u0007\u001b\u0000\u0000\u0c6a\u0c69\u0001"+
		"\u0000\u0000\u0000\u0c6a\u0c6b\u0001\u0000\u0000\u0000\u0c6b\u0c6c\u0001"+
		"\u0000\u0000\u0000\u0c6c\u0c6d\u0003\u01ee\u00f7\u0000\u0c6d\u0c6e\u0003"+
		"\u02f0\u0178\u0000\u0c6e\u00db\u0001\u0000\u0000\u0000\u0c6f\u0c72\u0005"+
		"\u031d\u0000\u0000\u0c70\u0c72\u0003\u01e0\u00f0\u0000\u0c71\u0c6f\u0001"+
		"\u0000\u0000\u0000\u0c71\u0c70\u0001\u0000\u0000\u0000\u0c72\u00dd\u0001"+
		"\u0000\u0000\u0000\u0c73\u0c74\u0003\u00e2q\u0000\u0c74\u00df\u0001\u0000"+
		"\u0000\u0000\u0c75\u0c76\u0003\u00e4r\u0000\u0c76\u00e1\u0001\u0000\u0000"+
		"\u0000\u0c77\u0c8d\u0003\u0004\u0002\u0000\u0c78\u0c8d\u0003\u0010\b\u0000"+
		"\u0c79\u0c8d\u00038\u001c\u0000\u0c7a\u0c8d\u0003@ \u0000\u0c7b\u0c8d"+
		"\u0003\u0128\u0094\u0000\u0c7c\u0c8d\u0003\u013c\u009e\u0000\u0c7d\u0c8d"+
		"\u0003\u0144\u00a2\u0000\u0c7e\u0c8d\u0003\u0152\u00a9\u0000\u0c7f\u0c8d"+
		"\u0003\u015a\u00ad\u0000\u0c80\u0c8d\u0003\u016a\u00b5\u0000\u0c81\u0c8d"+
		"\u0003l6\u0000\u0c82\u0c8d\u0003\u0120\u0090\u0000\u0c83\u0c8d\u0003\u0122"+
		"\u0091\u0000\u0c84\u0c8d\u0003\u03fe\u01ff\u0000\u0c85\u0c8d\u0003\u0126"+
		"\u0093\u0000\u0c86\u0c8d\u0003\u0342\u01a1\u0000\u0c87\u0c8d\u0003\u00e4"+
		"r\u0000\u0c88\u0c8d\u0003\u00e6s\u0000\u0c89\u0c8d\u0003\u00e8t\u0000"+
		"\u0c8a\u0c8d\u0003\u00fa}\u0000\u0c8b\u0c8d\u0003\u0104\u0082\u0000\u0c8c"+
		"\u0c77\u0001\u0000\u0000\u0000\u0c8c\u0c78\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c79\u0001\u0000\u0000\u0000\u0c8c\u0c7a\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c7b\u0001\u0000\u0000\u0000\u0c8c\u0c7c\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c7d\u0001\u0000\u0000\u0000\u0c8c\u0c7e\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c7f\u0001\u0000\u0000\u0000\u0c8c\u0c80\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c81\u0001\u0000\u0000\u0000\u0c8c\u0c82\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c83\u0001\u0000\u0000\u0000\u0c8c\u0c84\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c85\u0001\u0000\u0000\u0000\u0c8c\u0c86\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c87\u0001\u0000\u0000\u0000\u0c8c\u0c88\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c89\u0001\u0000\u0000\u0000\u0c8c\u0c8a\u0001\u0000\u0000\u0000\u0c8c"+
		"\u0c8b\u0001\u0000\u0000\u0000\u0c8d\u0c8f\u0001\u0000\u0000\u0000\u0c8e"+
		"\u0c90\u0005,\u0000\u0000\u0c8f\u0c8e\u0001\u0000\u0000\u0000\u0c8f\u0c90"+
		"\u0001\u0000\u0000\u0000\u0c90\u00e3\u0001\u0000\u0000\u0000\u0c91\u0c92"+
		"\u0003\u0324\u0192\u0000\u0c92\u0c93\u0005\u000f\u0000\u0000\u0c93\u0c95"+
		"\u0001\u0000\u0000\u0000\u0c94\u0c91\u0001\u0000\u0000\u0000\u0c94\u0c95"+
		"\u0001\u0000\u0000\u0000\u0c95\u0c96\u0001\u0000\u0000\u0000\u0c96\u0c9a"+
		"\u0005h\u0000\u0000\u0c97\u0c99\u0003\u00e2q\u0000\u0c98\u0c97\u0001\u0000"+
		"\u0000\u0000\u0c99\u0c9c\u0001\u0000\u0000\u0000\u0c9a\u0c98\u0001\u0000"+
		"\u0000\u0000\u0c9a\u0c9b\u0001\u0000\u0000\u0000\u0c9b\u0c9d\u0001\u0000"+
		"\u0000\u0000\u0c9c\u0c9a\u0001\u0000\u0000\u0000\u0c9d\u0c9f\u0005\u00e4"+
		"\u0000\u0000\u0c9e\u0ca0\u0003\u0324\u0192\u0000\u0c9f\u0c9e\u0001\u0000"+
		"\u0000\u0000\u0c9f\u0ca0\u0001\u0000\u0000\u0000\u0ca0\u0ca2\u0001\u0000"+
		"\u0000\u0000\u0ca1\u0ca3\u0005,\u0000\u0000\u0ca2\u0ca1\u0001\u0000\u0000"+
		"\u0000\u0ca2\u0ca3\u0001\u0000\u0000\u0000\u0ca3\u00e5\u0001\u0000\u0000"+
		"\u0000\u0ca4\u0ca5\u0005\u00c1\u0000\u0000\u0ca5\u0caa\u0003\u01fc\u00fe"+
		"\u0000\u0ca6\u0ca7\u0005&\u0000\u0000\u0ca7\u0ca9\u0003\u01fc\u00fe\u0000"+
		"\u0ca8\u0ca6\u0001\u0000\u0000\u0000\u0ca9\u0cac\u0001\u0000\u0000\u0000"+
		"\u0caa\u0ca8\u0001\u0000\u0000\u0000\u0caa\u0cab\u0001\u0000\u0000\u0000"+
		"\u0cab\u0cad\u0001\u0000\u0000\u0000\u0cac\u0caa\u0001\u0000\u0000\u0000"+
		"\u0cad\u0cb2\u0003\u02f0\u0178\u0000\u0cae\u0caf\u0005\u00c2\u0000\u0000"+
		"\u0caf\u0cb1\u0003\u0282\u0141\u0000\u0cb0\u0cae\u0001\u0000\u0000\u0000"+
		"\u0cb1\u0cb4\u0001\u0000\u0000\u0000\u0cb2\u0cb0\u0001\u0000\u0000\u0000"+
		"\u0cb2\u0cb3\u0001\u0000\u0000\u0000\u0cb3\u00e7\u0001\u0000\u0000\u0000"+
		"\u0cb4\u0cb2\u0001\u0000\u0000\u0000\u0cb5\u0cbe\u0003\u00eau\u0000\u0cb6"+
		"\u0cbe\u0003\u00ecv\u0000\u0cb7\u0cbe\u0003\u00eew\u0000\u0cb8\u0cbe\u0003"+
		"\u00f0x\u0000\u0cb9\u0cbe\u0003\u00f2y\u0000\u0cba\u0cbe\u0003\u00f4z"+
		"\u0000\u0cbb\u0cbe\u0003\u00f6{\u0000\u0cbc\u0cbe\u0003\u00f8|\u0000\u0cbd"+
		"\u0cb5\u0001\u0000\u0000\u0000\u0cbd\u0cb6\u0001\u0000\u0000\u0000\u0cbd"+
		"\u0cb7\u0001\u0000\u0000\u0000\u0cbd\u0cb8\u0001\u0000\u0000\u0000\u0cbd"+
		"\u0cb9\u0001\u0000\u0000\u0000\u0cbd\u0cba\u0001\u0000\u0000\u0000\u0cbd"+
		"\u0cbb\u0001\u0000\u0000\u0000\u0cbd\u0cbc\u0001\u0000\u0000\u0000\u0cbe"+
		"\u00e9\u0001\u0000\u0000\u0000\u0cbf\u0cc1\u0005{\u0000\u0000\u0cc0\u0cc2"+
		"\u0003\u0270\u0138\u0000\u0cc1\u0cc0\u0001\u0000\u0000\u0000\u0cc1\u0cc2"+
		"\u0001\u0000\u0000\u0000\u0cc2\u0ccb\u0001\u0000\u0000\u0000\u0cc3\u0cc4"+
		"\u0005\u02f0\u0000\u0000\u0cc4\u0cc5\u0003\u0270\u0138\u0000\u0cc5\u0cc7"+
		"\u0005\u02b3\u0000\u0000\u0cc6\u0cc8\u0003\u00e2q\u0000\u0cc7\u0cc6\u0001"+
		"\u0000\u0000\u0000\u0cc8\u0cc9\u0001\u0000\u0000\u0000\u0cc9\u0cc7\u0001"+
		"\u0000\u0000\u0000\u0cc9\u0cca\u0001\u0000\u0000\u0000\u0cca\u0ccc\u0001"+
		"\u0000\u0000\u0000\u0ccb\u0cc3\u0001\u0000\u0000\u0000\u0ccc\u0ccd\u0001"+
		"\u0000\u0000\u0000\u0ccd\u0ccb\u0001\u0000\u0000\u0000\u0ccd\u0cce\u0001"+
		"\u0000\u0000\u0000\u0cce\u0cd5\u0001\u0000\u0000\u0000\u0ccf\u0cd1\u0005"+
		"\u00de\u0000\u0000\u0cd0\u0cd2\u0003\u00e2q\u0000\u0cd1\u0cd0\u0001\u0000"+
		"\u0000\u0000\u0cd2\u0cd3\u0001\u0000\u0000\u0000\u0cd3\u0cd1\u0001\u0000"+
		"\u0000\u0000\u0cd3\u0cd4\u0001\u0000\u0000\u0000\u0cd4\u0cd6\u0001\u0000"+
		"\u0000\u0000\u0cd5\u0ccf\u0001\u0000\u0000\u0000\u0cd5\u0cd6\u0001\u0000"+
		"\u0000\u0000\u0cd6\u0cd7\u0001\u0000\u0000\u0000\u0cd7\u0cd8\u0005\u00e4"+
		"\u0000\u0000\u0cd8\u0cd9\u0005{\u0000\u0000\u0cd9\u00eb\u0001\u0000\u0000"+
		"\u0000\u0cda\u0cdb\u0005\u0134\u0000\u0000\u0cdb\u0cdc\u0003\u0270\u0138"+
		"\u0000\u0cdc\u0cde\u0005\u02b3\u0000\u0000\u0cdd\u0cdf\u0003\u00e2q\u0000"+
		"\u0cde\u0cdd\u0001\u0000\u0000\u0000\u0cdf\u0ce0\u0001\u0000\u0000\u0000"+
		"\u0ce0\u0cde\u0001\u0000\u0000\u0000\u0ce0\u0ce1\u0001\u0000\u0000\u0000"+
		"\u0ce1\u0cec\u0001\u0000\u0000\u0000\u0ce2\u0ce3\u0005\u00df\u0000\u0000"+
		"\u0ce3\u0ce4\u0003\u0270\u0138\u0000\u0ce4\u0ce6\u0005\u02b3\u0000\u0000"+
		"\u0ce5\u0ce7\u0003\u00e2q\u0000\u0ce6\u0ce5\u0001\u0000\u0000\u0000\u0ce7"+
		"\u0ce8\u0001\u0000\u0000\u0000\u0ce8\u0ce6\u0001\u0000\u0000\u0000\u0ce8"+
		"\u0ce9\u0001\u0000\u0000\u0000\u0ce9\u0ceb\u0001\u0000\u0000\u0000\u0cea"+
		"\u0ce2\u0001\u0000\u0000\u0000\u0ceb\u0cee\u0001\u0000\u0000\u0000\u0cec"+
		"\u0cea\u0001\u0000\u0000\u0000\u0cec\u0ced\u0001\u0000\u0000\u0000\u0ced"+
		"\u0cf5\u0001\u0000\u0000\u0000\u0cee\u0cec\u0001\u0000\u0000\u0000\u0cef"+
		"\u0cf1\u0005\u00de\u0000\u0000\u0cf0\u0cf2\u0003\u00e2q\u0000\u0cf1\u0cf0"+
		"\u0001\u0000\u0000\u0000\u0cf2\u0cf3\u0001\u0000\u0000\u0000\u0cf3\u0cf1"+
		"\u0001\u0000\u0000\u0000\u0cf3\u0cf4\u0001\u0000\u0000\u0000\u0cf4\u0cf6"+
		"\u0001\u0000\u0000\u0000\u0cf5\u0cef\u0001\u0000\u0000\u0000\u0cf5\u0cf6"+
		"\u0001\u0000\u0000\u0000\u0cf6\u0cf7\u0001\u0000\u0000\u0000\u0cf7\u0cf8"+
		"\u0005\u00e4\u0000\u0000\u0cf8\u0cf9\u0005\u0134\u0000\u0000\u0cf9\u00ed"+
		"\u0001\u0000\u0000\u0000\u0cfa\u0cfb\u0005\u0157\u0000\u0000\u0cfb\u0cfc"+
		"\u0003\u0324\u0192\u0000\u0cfc\u00ef\u0001\u0000\u0000\u0000\u0cfd\u0cfe"+
		"\u0005\u0167\u0000\u0000\u0cfe\u0cff\u0003\u0324\u0192\u0000\u0cff\u00f1"+
		"\u0001\u0000\u0000\u0000\u0d00\u0d01\u0003\u0324\u0192\u0000\u0d01\u0d02"+
		"\u0005\u000f\u0000\u0000\u0d02\u0d04\u0001\u0000\u0000\u0000\u0d03\u0d00"+
		"\u0001\u0000\u0000\u0000\u0d03\u0d04\u0001\u0000\u0000\u0000\u0d04\u0d05"+
		"\u0001\u0000\u0000\u0000\u0d05\u0d07\u0005\u017e\u0000\u0000\u0d06\u0d08"+
		"\u0003\u00e2q\u0000\u0d07\u0d06\u0001\u0000\u0000\u0000\u0d08\u0d09\u0001"+
		"\u0000\u0000\u0000\u0d09\u0d07\u0001\u0000\u0000\u0000\u0d09\u0d0a\u0001"+
		"\u0000\u0000\u0000\u0d0a\u0d0b\u0001\u0000\u0000\u0000\u0d0b\u0d0c\u0005"+
		"\u00e4\u0000\u0000\u0d0c\u0d0e\u0005\u017e\u0000\u0000\u0d0d\u0d0f\u0003"+
		"\u0324\u0192\u0000\u0d0e\u0d0d\u0001\u0000\u0000\u0000\u0d0e\u0d0f\u0001"+
		"\u0000\u0000\u0000\u0d0f\u00f3\u0001\u0000\u0000\u0000\u0d10\u0d11\u0003"+
		"\u0324\u0192\u0000\u0d11\u0d12\u0005\u000f\u0000\u0000\u0d12\u0d14\u0001"+
		"\u0000\u0000\u0000\u0d13\u0d10\u0001\u0000\u0000\u0000\u0d13\u0d14\u0001"+
		"\u0000\u0000\u0000\u0d14\u0d15\u0001\u0000\u0000\u0000\u0d15\u0d17\u0005"+
		"\u0231\u0000\u0000\u0d16\u0d18\u0003\u00e2q\u0000\u0d17\u0d16\u0001\u0000"+
		"\u0000\u0000\u0d18\u0d19\u0001\u0000\u0000\u0000\u0d19\u0d17\u0001\u0000"+
		"\u0000\u0000\u0d19\u0d1a\u0001\u0000\u0000\u0000\u0d1a\u0d1b\u0001\u0000"+
		"\u0000\u0000\u0d1b\u0d1c\u0005\u02d4\u0000\u0000\u0d1c\u0d1d\u0003\u0270"+
		"\u0138\u0000\u0d1d\u0d1e\u0005\u00e4\u0000\u0000\u0d1e\u0d20\u0005\u0231"+
		"\u0000\u0000\u0d1f\u0d21\u0003\u0324\u0192\u0000\u0d20\u0d1f\u0001\u0000"+
		"\u0000\u0000\u0d20\u0d21\u0001\u0000\u0000\u0000\u0d21\u00f5\u0001\u0000"+
		"\u0000\u0000\u0d22\u0d23\u0005\u0249\u0000\u0000\u0d23\u0d24\u0003\u0270"+
		"\u0138\u0000\u0d24\u00f7\u0001\u0000\u0000\u0000\u0d25\u0d26\u0003\u0324"+
		"\u0192\u0000\u0d26\u0d27\u0005\u000f\u0000\u0000\u0d27\u0d29\u0001\u0000"+
		"\u0000\u0000\u0d28\u0d25\u0001\u0000\u0000\u0000\u0d28\u0d29\u0001\u0000"+
		"\u0000\u0000\u0d29\u0d2a\u0001\u0000\u0000\u0000\u0d2a\u0d2b\u0005\u02f2"+
		"\u0000\u0000\u0d2b\u0d2c\u0003\u0270\u0138\u0000\u0d2c\u0d2e\u0005\u00d6"+
		"\u0000\u0000\u0d2d\u0d2f\u0003\u00e2q\u0000\u0d2e\u0d2d\u0001\u0000\u0000"+
		"\u0000\u0d2f\u0d30\u0001\u0000\u0000\u0000\u0d30\u0d2e\u0001\u0000\u0000"+
		"\u0000\u0d30\u0d31\u0001\u0000\u0000\u0000\u0d31\u0d32\u0001\u0000\u0000"+
		"\u0000\u0d32\u0d33\u0005\u00e4\u0000\u0000\u0d33\u0d35\u0005\u02f2\u0000"+
		"\u0000\u0d34\u0d36\u0003\u0324\u0192\u0000\u0d35\u0d34\u0001\u0000\u0000"+
		"\u0000\u0d35\u0d36\u0001\u0000\u0000\u0000\u0d36\u00f9\u0001\u0000\u0000"+
		"\u0000\u0d37\u0d3c\u0003\u00fc~\u0000\u0d38\u0d3c\u0003\u00fe\u007f\u0000"+
		"\u0d39\u0d3c\u0003\u0100\u0080\u0000\u0d3a\u0d3c\u0003\u0102\u0081\u0000"+
		"\u0d3b\u0d37\u0001\u0000\u0000\u0000\u0d3b\u0d38\u0001\u0000\u0000\u0000"+
		"\u0d3b\u0d39\u0001\u0000\u0000\u0000\u0d3b\u0d3a\u0001\u0000\u0000\u0000"+
		"\u0d3c\u00fb\u0001\u0000\u0000\u0000\u0d3d\u0d3e\u0005\u008a\u0000\u0000"+
		"\u0d3e\u0d3f\u0003\u0326\u0193\u0000\u0d3f\u00fd\u0001\u0000\u0000\u0000"+
		"\u0d40\u0d41\u0005\u00c1\u0000\u0000\u0d41\u0d42\u0003\u0326\u0193\u0000"+
		"\u0d42\u0d43\u0005\u00b1\u0000\u0000\u0d43\u0d44\u0005\u010f\u0000\u0000"+
		"\u0d44\u0d45\u0003\u015a\u00ad\u0000\u0d45\u00ff\u0001\u0000\u0000\u0000"+
		"\u0d46\u0d4b\u0005\u0102\u0000\u0000\u0d47\u0d49\u0005\u01c7\u0000\u0000"+
		"\u0d48\u0d47\u0001\u0000\u0000\u0000\u0d48\u0d49\u0001\u0000\u0000\u0000"+
		"\u0d49\u0d4a\u0001\u0000\u0000\u0000\u0d4a\u0d4c\u0005\u0114\u0000\u0000"+
		"\u0d4b\u0d48\u0001\u0000\u0000\u0000\u0d4b\u0d4c\u0001\u0000\u0000\u0000"+
		"\u0d4c\u0d4d\u0001\u0000\u0000\u0000\u0d4d\u0d4e\u0003\u0326\u0193\u0000"+
		"\u0d4e\u0d4f\u0005\u014d\u0000\u0000\u0d4f\u0d54\u0003\u01fc\u00fe\u0000"+
		"\u0d50\u0d51\u0005&\u0000\u0000\u0d51\u0d53\u0003\u01fc\u00fe\u0000\u0d52"+
		"\u0d50\u0001\u0000\u0000\u0000\u0d53\u0d56\u0001\u0000\u0000\u0000\u0d54"+
		"\u0d52\u0001\u0000\u0000\u0000\u0d54\u0d55\u0001\u0000\u0000\u0000\u0d55"+
		"\u0101\u0001\u0000\u0000\u0000\u0d56\u0d54\u0001\u0000\u0000\u0000\u0d57"+
		"\u0d58\u0005\u01de\u0000\u0000\u0d58\u0d59\u0003\u0326\u0193\u0000\u0d59"+
		"\u0103\u0001\u0000\u0000\u0000\u0d5a\u0d60\u0003\u0106\u0083\u0000\u0d5b"+
		"\u0d60\u0003\u0108\u0084\u0000\u0d5c\u0d60\u0003\u010a\u0085\u0000\u0d5d"+
		"\u0d60\u0003\u011a\u008d\u0000\u0d5e\u0d60\u0003\u011c\u008e\u0000\u0d5f"+
		"\u0d5a\u0001\u0000\u0000\u0000\u0d5f\u0d5b\u0001\u0000\u0000\u0000\u0d5f"+
		"\u0d5c\u0001\u0000\u0000\u0000\u0d5f\u0d5d\u0001\u0000\u0000\u0000\u0d5f"+
		"\u0d5e\u0001\u0000\u0000\u0000\u0d60\u0105\u0001\u0000\u0000\u0000\u0d61"+
		"\u0d62\u0005\u00c1\u0000\u0000\u0d62\u0d63\u0003\u0328\u0194\u0000\u0d63"+
		"\u0d64\u0005\u009c\u0000\u0000\u0d64\u0d65\u0005\u010f\u0000\u0000\u0d65"+
		"\u0d66\u0003\u0118\u008c\u0000\u0d66\u0107\u0001\u0000\u0000\u0000\u0d67"+
		"\u0d68\u0005\u00c1\u0000\u0000\u0d68\u0d69\u0003\u0116\u008b\u0000\u0d69"+
		"\u0d6a\u0005\u0126\u0000\u0000\u0d6a\u0d6b\u0005\u010f\u0000\u0000\u0d6b"+
		"\u0d70\u0003\u0118\u008c\u0000\u0d6c\u0d6d\u0005&\u0000\u0000\u0d6d\u0d6f"+
		"\u0003\u0118\u008c\u0000\u0d6e\u0d6c\u0001\u0000\u0000\u0000\u0d6f\u0d72"+
		"\u0001\u0000\u0000\u0000\u0d70\u0d6e\u0001\u0000\u0000\u0000\u0d70\u0d71"+
		"\u0001\u0000\u0000\u0000\u0d71\u0d73\u0001\u0000\u0000\u0000\u0d72\u0d70"+
		"\u0001\u0000\u0000\u0000\u0d73\u0d74\u0003\u00e2q\u0000\u0d74\u0109\u0001"+
		"\u0000\u0000\u0000\u0d75\u0d77\u0005\u011c\u0000\u0000\u0d76\u0d78\u0007"+
		"\u001c\u0000\u0000\u0d77\u0d76\u0001\u0000\u0000\u0000\u0d77\u0d78\u0001"+
		"\u0000\u0000\u0000\u0d78\u0d79\u0001\u0000\u0000\u0000\u0d79\u0d8c\u0005"+
		"\u00ce\u0000\u0000\u0d7a\u0d7f\u0003\u010c\u0086\u0000\u0d7b\u0d7c\u0005"+
		"&\u0000\u0000\u0d7c\u0d7e\u0003\u010c\u0086\u0000\u0d7d\u0d7b\u0001\u0000"+
		"\u0000\u0000\u0d7e\u0d81\u0001\u0000\u0000\u0000\u0d7f\u0d7d\u0001\u0000"+
		"\u0000\u0000\u0d7f\u0d80\u0001\u0000\u0000\u0000\u0d80\u0d8d\u0001\u0000"+
		"\u0000\u0000\u0d81\u0d7f\u0001\u0000\u0000\u0000\u0d82\u0d83\u0005\u009c"+
		"\u0000\u0000\u0d83\u0d84\u0003\u0110\u0088\u0000\u0d84\u0d89\u0003\u010e"+
		"\u0087\u0000\u0d85\u0d86\u0005&\u0000\u0000\u0d86\u0d88\u0003\u010e\u0087"+
		"\u0000\u0d87\u0d85\u0001\u0000\u0000\u0000\u0d88\u0d8b\u0001\u0000\u0000"+
		"\u0000\u0d89\u0d87\u0001\u0000\u0000\u0000\u0d89\u0d8a\u0001\u0000\u0000"+
		"\u0000\u0d8a\u0d8d\u0001\u0000\u0000\u0000\u0d8b\u0d89\u0001\u0000\u0000"+
		"\u0000\u0d8c\u0d7a\u0001\u0000\u0000\u0000\u0d8c\u0d82\u0001\u0000\u0000"+
		"\u0000\u0d8d\u010b\u0001\u0000\u0000\u0000\u0d8e\u0d8f\u0003\u01fc\u00fe"+
		"\u0000\u0d8f\u0d90\u0005\u0019\u0000\u0000\u0d90\u0d91\u0003\u0112\u0089"+
		"\u0000\u0d91\u010d\u0001\u0000\u0000\u0000\u0d92\u0d93\u0003\u01fc\u00fe"+
		"\u0000\u0d93\u0d94\u0005\u0019\u0000\u0000\u0d94\u0d95\u0003\u0114\u008a"+
		"\u0000\u0d95\u010f\u0001\u0000\u0000\u0000\u0d96\u0d99\u0003\u01fc\u00fe"+
		"\u0000\u0d97\u0d99\u0003\u01e0\u00f0\u0000\u0d98\u0d96\u0001\u0000\u0000"+
		"\u0000\u0d98\u0d97\u0001\u0000\u0000\u0000\u0d99\u0111\u0001\u0000\u0000"+
		"\u0000\u0d9a\u0d9b\u0007\u001d\u0000\u0000\u0d9b\u0113\u0001\u0000\u0000"+
		"\u0000\u0d9c\u0d9d\u0007\u001e\u0000\u0000\u0d9d\u0115\u0001\u0000\u0000"+
		"\u0000\u0d9e\u0d9f\u0007\u001f\u0000\u0000\u0d9f\u0117\u0001\u0000\u0000"+
		"\u0000\u0da0\u0dac\u0003\u01e0\u00f0\u0000\u0da1\u0da3\u0005\u0285\u0000"+
		"\u0000\u0da2\u0da4\u0005\u02e1\u0000\u0000\u0da3\u0da2\u0001\u0000\u0000"+
		"\u0000\u0da3\u0da4\u0001\u0000\u0000\u0000\u0da4\u0da5\u0001\u0000\u0000"+
		"\u0000\u0da5\u0dac\u0003\u01de\u00ef\u0000\u0da6\u0dac\u0003\u0328\u0194"+
		"\u0000\u0da7\u0dac\u0005\u0286\u0000\u0000\u0da8\u0da9\u0005\u01cb\u0000"+
		"\u0000\u0da9\u0dac\u0005\u0113\u0000\u0000\u0daa\u0dac\u0005\u0284\u0000"+
		"\u0000\u0dab\u0da0\u0001\u0000\u0000\u0000\u0dab\u0da1\u0001\u0000\u0000"+
		"\u0000\u0dab\u0da6\u0001\u0000\u0000\u0000\u0dab\u0da7\u0001\u0000\u0000"+
		"\u0000\u0dab\u0da8\u0001\u0000\u0000\u0000\u0dab\u0daa\u0001\u0000\u0000"+
		"\u0000\u0dac\u0119\u0001\u0000\u0000\u0000\u0dad\u0daf\u0005\u0241\u0000"+
		"\u0000\u0dae\u0db0\u0003\u0118\u008c\u0000\u0daf\u0dae\u0001\u0000\u0000"+
		"\u0000\u0daf\u0db0\u0001\u0000\u0000\u0000\u0db0\u0dba\u0001\u0000\u0000"+
		"\u0000\u0db1\u0db2\u0005\u0271\u0000\u0000\u0db2\u0db7\u0003\u011e\u008f"+
		"\u0000\u0db3\u0db4\u0005&\u0000\u0000\u0db4\u0db6\u0003\u011e\u008f\u0000"+
		"\u0db5\u0db3\u0001\u0000\u0000\u0000\u0db6\u0db9\u0001\u0000\u0000\u0000"+
		"\u0db7\u0db5\u0001\u0000\u0000\u0000\u0db7\u0db8\u0001\u0000\u0000\u0000"+
		"\u0db8\u0dbb\u0001\u0000\u0000\u0000\u0db9\u0db7\u0001\u0000\u0000\u0000"+
		"\u0dba\u0db1\u0001\u0000\u0000\u0000\u0dba\u0dbb\u0001\u0000\u0000\u0000"+
		"\u0dbb\u011b\u0001\u0000\u0000\u0000\u0dbc\u0dbd\u0005\u0275\u0000\u0000"+
		"\u0dbd\u0dc7\u0003\u0118\u008c\u0000\u0dbe\u0dbf\u0005\u0271\u0000\u0000"+
		"\u0dbf\u0dc4\u0003\u011e\u008f\u0000\u0dc0\u0dc1\u0005&\u0000\u0000\u0dc1"+
		"\u0dc3\u0003\u011e\u008f\u0000\u0dc2\u0dc0\u0001\u0000\u0000\u0000\u0dc3"+
		"\u0dc6\u0001\u0000\u0000\u0000\u0dc4\u0dc2\u0001\u0000\u0000\u0000\u0dc4"+
		"\u0dc5\u0001\u0000\u0000\u0000\u0dc5\u0dc8\u0001\u0000\u0000\u0000\u0dc6"+
		"\u0dc4\u0001\u0000\u0000\u0000\u0dc7\u0dbe\u0001\u0000\u0000\u0000\u0dc7"+
		"\u0dc8\u0001\u0000\u0000\u0000\u0dc8\u011d\u0001\u0000\u0000\u0000\u0dc9"+
		"\u0dca\u0003\u0114\u008a\u0000\u0dca\u0dcb\u0005\u0019\u0000\u0000\u0dcb"+
		"\u0dcc\u0003\u0270\u0138\u0000\u0dcc\u011f\u0001\u0000\u0000\u0000\u0dcd"+
		"\u0dce\u0005\u0206\u0000\u0000\u0dce\u0dcf\u0003\u01ee\u00f7\u0000\u0dcf"+
		"\u0dd2\u0005\u0114\u0000\u0000\u0dd0\u0dd3\u0003\u01de\u00ef\u0000\u0dd1"+
		"\u0dd3\u0003\u01fe\u00ff\u0000\u0dd2\u0dd0\u0001\u0000\u0000\u0000\u0dd2"+
		"\u0dd1\u0001\u0000\u0000\u0000\u0dd3\u0121\u0001\u0000\u0000\u0000\u0dd4"+
		"\u0dd5\u0005\u00f5\u0000\u0000\u0dd5\u0dd8\u0003\u01ee\u00f7\u0000\u0dd6"+
		"\u0dd7\u0005\u02dc\u0000\u0000\u0dd7\u0dd9\u0003\u0124\u0092\u0000\u0dd8"+
		"\u0dd6\u0001\u0000\u0000\u0000\u0dd8\u0dd9\u0001\u0000\u0000\u0000\u0dd9"+
		"\u0123\u0001\u0000\u0000\u0000\u0dda\u0ddf\u0003\u01fe\u00ff\u0000\u0ddb"+
		"\u0ddc\u0005&\u0000\u0000\u0ddc\u0dde\u0003\u01fe\u00ff\u0000\u0ddd\u0ddb"+
		"\u0001\u0000\u0000\u0000\u0dde\u0de1\u0001\u0000\u0000\u0000\u0ddf\u0ddd"+
		"\u0001\u0000\u0000\u0000\u0ddf\u0de0\u0001\u0000\u0000\u0000\u0de0\u0125"+
		"\u0001\u0000\u0000\u0000\u0de1\u0ddf\u0001\u0000\u0000\u0000\u0de2\u0de3"+
		"\u0007 \u0000\u0000\u0de3\u0de4\u0005\u0206\u0000\u0000\u0de4\u0de5\u0003"+
		"\u01ee\u00f7\u0000\u0de5\u0127\u0001\u0000\u0000\u0000\u0de6\u0de7\u0005"+
		"\u0141\u0000\u0000\u0de7\u0de9\u0003\u012a\u0095\u0000\u0de8\u0dea\u0005"+
		"\u014d\u0000\u0000\u0de9\u0de8\u0001\u0000\u0000\u0000\u0de9\u0dea\u0001"+
		"\u0000\u0000\u0000\u0dea\u0deb\u0001\u0000\u0000\u0000\u0deb\u0ded\u0003"+
		"\u021c\u010e\u0000\u0dec\u0dee\u0003\u01a0\u00d0\u0000\u0ded\u0dec\u0001"+
		"\u0000\u0000\u0000\u0ded\u0dee\u0001\u0000\u0000\u0000\u0dee\u0df2\u0001"+
		"\u0000\u0000\u0000\u0def\u0df3\u0003\u012c\u0096\u0000\u0df0\u0df3\u0003"+
		"\u014a\u00a5\u0000\u0df1\u0df3\u0003\u0134\u009a\u0000\u0df2\u0def\u0001"+
		"\u0000\u0000\u0000\u0df2\u0df0\u0001\u0000\u0000\u0000\u0df2\u0df1\u0001"+
		"\u0000\u0000\u0000\u0df3\u0df5\u0001\u0000\u0000\u0000\u0df4\u0df6\u0003"+
		"\u0136\u009b\u0000\u0df5\u0df4\u0001\u0000\u0000\u0000\u0df5\u0df6\u0001"+
		"\u0000\u0000\u0000\u0df6\u0129\u0001\u0000\u0000\u0000\u0df7\u0df9\u0007"+
		"!\u0000\u0000\u0df8\u0df7\u0001\u0000\u0000\u0000\u0df8\u0df9\u0001\u0000"+
		"\u0000\u0000\u0df9\u0dfb\u0001\u0000\u0000\u0000\u0dfa\u0dfc\u0005\u0135"+
		"\u0000\u0000\u0dfb\u0dfa\u0001\u0000\u0000\u0000\u0dfb\u0dfc\u0001\u0000"+
		"\u0000\u0000\u0dfc\u012b\u0001\u0000\u0000\u0000\u0dfd\u0dff\u0005 \u0000"+
		"\u0000\u0dfe\u0e00\u0003\u012e\u0097\u0000\u0dff\u0dfe\u0001\u0000\u0000"+
		"\u0000\u0dff\u0e00\u0001\u0000\u0000\u0000\u0e00\u0e01\u0001\u0000\u0000"+
		"\u0000\u0e01\u0e03\u0005!\u0000\u0000\u0e02\u0dfd\u0001\u0000\u0000\u0000"+
		"\u0e02\u0e03\u0001\u0000\u0000\u0000\u0e03\u0e04\u0001\u0000\u0000\u0000"+
		"\u0e04\u0e0e\u0007\"\u0000\u0000\u0e05\u0e0a\u0003\u014c\u00a6\u0000\u0e06"+
		"\u0e07\u0005&\u0000\u0000\u0e07\u0e09\u0003\u014c\u00a6\u0000\u0e08\u0e06"+
		"\u0001\u0000\u0000\u0000\u0e09\u0e0c\u0001\u0000\u0000\u0000\u0e0a\u0e08"+
		"\u0001\u0000\u0000\u0000\u0e0a\u0e0b\u0001\u0000\u0000\u0000\u0e0b\u0e0f"+
		"\u0001\u0000\u0000\u0000\u0e0c\u0e0a\u0001\u0000\u0000\u0000\u0e0d\u0e0f"+
		"\u0003\u0184\u00c2\u0000\u0e0e\u0e05\u0001\u0000\u0000\u0000\u0e0e\u0e0d"+
		"\u0001\u0000\u0000\u0000\u0e0f\u0e11\u0001\u0000\u0000\u0000\u0e10\u0e12"+
		"\u0003\u0138\u009c\u0000\u0e11\u0e10\u0001\u0000\u0000\u0000\u0e11\u0e12"+
		"\u0001\u0000\u0000\u0000\u0e12\u012d\u0001\u0000\u0000\u0000\u0e13\u0e18"+
		"\u0003\u0130\u0098\u0000\u0e14\u0e15\u0005&\u0000\u0000\u0e15\u0e17\u0003"+
		"\u0130\u0098\u0000\u0e16\u0e14\u0001\u0000\u0000\u0000\u0e17\u0e1a\u0001"+
		"\u0000\u0000\u0000\u0e18\u0e16\u0001\u0000\u0000\u0000\u0e18\u0e19\u0001"+
		"\u0000\u0000\u0000\u0e19\u012f\u0001\u0000\u0000\u0000\u0e1a\u0e18\u0001"+
		"\u0000\u0000\u0000\u0e1b\u0e1e\u0003\u0288\u0144\u0000\u0e1c\u0e1e\u0003"+
		"\u0132\u0099\u0000\u0e1d\u0e1b\u0001\u0000\u0000\u0000\u0e1d\u0e1c\u0001"+
		"\u0000\u0000\u0000\u0e1e\u0131\u0001\u0000\u0000\u0000\u0e1f\u0e20\u0003"+
		"\u01ee\u00f7\u0000\u0e20\u0e24\u0005\u0015\u0000\u0000\u0e21\u0e22\u0003"+
		"\u01ee\u00f7\u0000\u0e22\u0e23\u0005\u0015\u0000\u0000\u0e23\u0e25\u0001"+
		"\u0000\u0000\u0000\u0e24\u0e21\u0001\u0000\u0000\u0000\u0e24\u0e25\u0001"+
		"\u0000\u0000\u0000\u0e25\u0e26\u0001\u0000\u0000\u0000\u0e26\u0e27\u0005"+
		"\u0012\u0000\u0000\u0e27\u0133\u0001\u0000\u0000\u0000\u0e28\u0e2a\u0003"+
		"\u0138\u009c\u0000\u0e29\u0e28\u0001\u0000\u0000\u0000\u0e29\u0e2a\u0001"+
		"\u0000\u0000\u0000\u0e2a\u0e30\u0001\u0000\u0000\u0000\u0e2b\u0e2d\u0005"+
		" \u0000\u0000\u0e2c\u0e2e\u0003\u012e\u0097\u0000\u0e2d\u0e2c\u0001\u0000"+
		"\u0000\u0000\u0e2d\u0e2e\u0001\u0000\u0000\u0000\u0e2e\u0e2f\u0001\u0000"+
		"\u0000\u0000\u0e2f\u0e31\u0005!\u0000\u0000\u0e30\u0e2b\u0001\u0000\u0000"+
		"\u0000\u0e30\u0e31\u0001\u0000\u0000\u0000\u0e31\u0e32\u0001\u0000\u0000"+
		"\u0000\u0e32\u0e33\u0003\u015a\u00ad\u0000\u0e33\u0135\u0001\u0000\u0000"+
		"\u0000\u0e34\u0e35\u0005\u01db\u0000\u0000\u0e35\u0e36\u0005\u00db\u0000"+
		"\u0000\u0e36\u0e37\u0005\u015c\u0000\u0000\u0e37\u0e38\u0005\u02d5\u0000"+
		"\u0000\u0e38\u0e3d\u0003\u0148\u00a4\u0000\u0e39\u0e3a\u0005&\u0000\u0000"+
		"\u0e3a\u0e3c\u0003\u0148\u00a4\u0000\u0e3b\u0e39\u0001\u0000\u0000\u0000"+
		"\u0e3c\u0e3f\u0001\u0000\u0000\u0000\u0e3d\u0e3b\u0001\u0000\u0000\u0000"+
		"\u0e3d\u0e3e\u0001\u0000\u0000\u0000\u0e3e\u0137\u0001\u0000\u0000\u0000"+
		"\u0e3f\u0e3d\u0001\u0000\u0000\u0000\u0e40\u0e41\u0005[\u0000\u0000\u0e41"+
		"\u0e43\u0003\u0238\u011c\u0000\u0e42\u0e44\u0003\u013a\u009d\u0000\u0e43"+
		"\u0e42\u0001\u0000\u0000\u0000\u0e43\u0e44\u0001\u0000\u0000\u0000\u0e44"+
		"\u0139\u0001\u0000\u0000\u0000\u0e45\u0e46\u0005 \u0000\u0000\u0e46\u0e4b"+
		"\u0003\u0238\u011c\u0000\u0e47\u0e48\u0005&\u0000\u0000\u0e48\u0e4a\u0003"+
		"\u0238\u011c\u0000\u0e49\u0e47\u0001\u0000\u0000\u0000\u0e4a\u0e4d\u0001"+
		"\u0000\u0000\u0000\u0e4b\u0e49\u0001\u0000\u0000\u0000\u0e4b\u0e4c\u0001"+
		"\u0000\u0000\u0000\u0e4c\u0e4e\u0001\u0000\u0000\u0000\u0e4d\u0e4b\u0001"+
		"\u0000\u0000\u0000\u0e4e\u0e4f\u0005!\u0000\u0000\u0e4f\u013b\u0001\u0000"+
		"\u0000\u0000\u0e50\u0e52\u0005\u0233\u0000\u0000\u0e51\u0e53\u0003\u013e"+
		"\u009f\u0000\u0e52\u0e51\u0001\u0000\u0000\u0000\u0e52\u0e53\u0001\u0000"+
		"\u0000\u0000\u0e53\u0e55\u0001\u0000\u0000\u0000\u0e54\u0e56\u0005\u014d"+
		"\u0000\u0000\u0e55\u0e54\u0001\u0000\u0000\u0000\u0e55\u0e56\u0001\u0000"+
		"\u0000\u0000\u0e56\u0e57\u0001\u0000\u0000\u0000\u0e57\u0e59\u0003\u021c"+
		"\u010e\u0000\u0e58\u0e5a\u0003\u01a0\u00d0\u0000\u0e59\u0e58\u0001\u0000"+
		"\u0000\u0000\u0e59\u0e5a\u0001\u0000\u0000\u0000\u0e5a\u0e5e\u0001\u0000"+
		"\u0000\u0000\u0e5b\u0e5f\u0003\u0140\u00a0\u0000\u0e5c\u0e5f\u0003\u014a"+
		"\u00a5\u0000\u0e5d\u0e5f\u0003\u0142\u00a1\u0000\u0e5e\u0e5b\u0001\u0000"+
		"\u0000\u0000\u0e5e\u0e5c\u0001\u0000\u0000\u0000\u0e5e\u0e5d\u0001\u0000"+
		"\u0000\u0000\u0e5f\u013d\u0001\u0000\u0000\u0000\u0e60\u0e61\u0007#\u0000"+
		"\u0000\u0e61\u013f\u0001\u0000\u0000\u0000\u0e62\u0e64\u0005 \u0000\u0000"+
		"\u0e63\u0e65\u0003\u012e\u0097\u0000\u0e64\u0e63\u0001\u0000\u0000\u0000"+
		"\u0e64\u0e65\u0001\u0000\u0000\u0000\u0e65\u0e66\u0001\u0000\u0000\u0000"+
		"\u0e66\u0e68\u0005!\u0000\u0000\u0e67\u0e62\u0001\u0000\u0000\u0000\u0e67"+
		"\u0e68\u0001\u0000\u0000\u0000\u0e68\u0e69\u0001\u0000\u0000\u0000\u0e69"+
		"\u0e73\u0007\"\u0000\u0000\u0e6a\u0e6f\u0003\u014c\u00a6\u0000\u0e6b\u0e6c"+
		"\u0005&\u0000\u0000\u0e6c\u0e6e\u0003\u014c\u00a6\u0000\u0e6d\u0e6b\u0001"+
		"\u0000\u0000\u0000\u0e6e\u0e71\u0001\u0000\u0000\u0000\u0e6f\u0e6d\u0001"+
		"\u0000\u0000\u0000\u0e6f\u0e70\u0001\u0000\u0000\u0000\u0e70\u0e74\u0001"+
		"\u0000\u0000\u0000\u0e71\u0e6f\u0001\u0000\u0000\u0000\u0e72\u0e74\u0003"+
		"\u0184\u00c2\u0000\u0e73\u0e6a\u0001\u0000\u0000\u0000\u0e73\u0e72\u0001"+
		"\u0000\u0000\u0000\u0e74\u0e76\u0001\u0000\u0000\u0000\u0e75\u0e77\u0003"+
		"\u0138\u009c\u0000\u0e76\u0e75\u0001\u0000\u0000\u0000\u0e76\u0e77\u0001"+
		"\u0000\u0000\u0000\u0e77\u0141\u0001\u0000\u0000\u0000\u0e78\u0e7a\u0003"+
		"\u0138\u009c\u0000\u0e79\u0e78\u0001\u0000\u0000\u0000\u0e79\u0e7a\u0001"+
		"\u0000\u0000\u0000\u0e7a\u0e80\u0001\u0000\u0000\u0000\u0e7b\u0e7d\u0005"+
		" \u0000\u0000\u0e7c\u0e7e\u0003\u012e\u0097\u0000\u0e7d\u0e7c\u0001\u0000"+
		"\u0000\u0000\u0e7d\u0e7e\u0001\u0000\u0000\u0000\u0e7e\u0e7f\u0001\u0000"+
		"\u0000\u0000\u0e7f\u0e81\u0005!\u0000\u0000\u0e80\u0e7b\u0001\u0000\u0000"+
		"\u0000\u0e80\u0e81\u0001\u0000\u0000\u0000\u0e81\u0e82\u0001\u0000\u0000"+
		"\u0000\u0e82\u0e83\u0003\u015a\u00ad\u0000\u0e83\u0143\u0001\u0000\u0000"+
		"\u0000\u0e84\u0e86\u0003\u0186\u00c3\u0000\u0e85\u0e84\u0001\u0000\u0000"+
		"\u0000\u0e85\u0e86\u0001\u0000\u0000\u0000\u0e86\u0e87\u0001\u0000\u0000"+
		"\u0000\u0e87\u0e88\u0005\u02d5\u0000\u0000\u0e88\u0e89\u0003\u0146\u00a3"+
		"\u0000\u0e89\u0e8a\u0003\u0198\u00cc\u0000\u0e8a\u0e8c\u0003\u014a\u00a5"+
		"\u0000\u0e8b\u0e8d\u0003\u01b0\u00d8\u0000\u0e8c\u0e8b\u0001\u0000\u0000"+
		"\u0000\u0e8c\u0e8d\u0001\u0000\u0000\u0000\u0e8d\u0e8f\u0001\u0000\u0000"+
		"\u0000\u0e8e\u0e90\u0003\u02ec\u0176\u0000\u0e8f\u0e8e\u0001\u0000\u0000"+
		"\u0000\u0e8f\u0e90\u0001\u0000\u0000\u0000\u0e90\u0e92\u0001\u0000\u0000"+
		"\u0000\u0e91\u0e93\u0003\u01b6\u00db\u0000\u0e92\u0e91\u0001\u0000\u0000"+
		"\u0000\u0e92\u0e93\u0001\u0000\u0000\u0000\u0e93\u0145\u0001\u0000\u0000"+
		"\u0000\u0e94\u0e96\u0005\u017f\u0000\u0000\u0e95\u0e94\u0001\u0000\u0000"+
		"\u0000\u0e95\u0e96\u0001\u0000\u0000\u0000\u0e96\u0e98\u0001\u0000\u0000"+
		"\u0000\u0e97\u0e99\u0005\u0135\u0000\u0000\u0e98\u0e97\u0001\u0000\u0000"+
		"\u0000\u0e98\u0e99\u0001\u0000\u0000\u0000\u0e99\u0147\u0001\u0000\u0000"+
		"\u0000\u0e9a\u0e9b\u0003\u0288\u0144\u0000\u0e9b\u0e9c\u0005\u0019\u0000"+
		"\u0000\u0e9c\u0e9d\u0003\u014e\u00a7\u0000\u0e9d\u0149\u0001\u0000\u0000"+
		"\u0000\u0e9e\u0ea0\u0003\u0138\u009c\u0000\u0e9f\u0e9e\u0001\u0000\u0000"+
		"\u0000\u0e9f\u0ea0\u0001\u0000\u0000\u0000\u0ea0\u0ea1\u0001\u0000\u0000"+
		"\u0000\u0ea1\u0ea2\u0005\u0271\u0000\u0000\u0ea2\u0ea7\u0003\u0148\u00a4"+
		"\u0000\u0ea3\u0ea4\u0005&\u0000\u0000\u0ea4\u0ea6\u0003\u0148\u00a4\u0000"+
		"\u0ea5\u0ea3\u0001\u0000\u0000\u0000\u0ea6\u0ea9\u0001\u0000\u0000\u0000"+
		"\u0ea7\u0ea5\u0001\u0000\u0000\u0000\u0ea7\u0ea8\u0001\u0000\u0000\u0000"+
		"\u0ea8\u014b\u0001\u0000\u0000\u0000\u0ea9\u0ea7\u0001\u0000\u0000\u0000"+
		"\u0eaa\u0eab\u0005 \u0000\u0000\u0eab\u0eb0\u0003\u014e\u00a7\u0000\u0eac"+
		"\u0ead\u0005&\u0000\u0000\u0ead\u0eaf\u0003\u014e\u00a7\u0000\u0eae\u0eac"+
		"\u0001\u0000\u0000\u0000\u0eaf\u0eb2\u0001\u0000\u0000\u0000\u0eb0\u0eae"+
		"\u0001\u0000\u0000\u0000\u0eb0\u0eb1\u0001\u0000\u0000\u0000\u0eb1\u0eb3"+
		"\u0001\u0000\u0000\u0000\u0eb2\u0eb0\u0001\u0000\u0000\u0000\u0eb3\u0eb4"+
		"\u0005!\u0000\u0000\u0eb4\u0eb8\u0001\u0000\u0000\u0000\u0eb5\u0eb6\u0005"+
		" \u0000\u0000\u0eb6\u0eb8\u0005!\u0000\u0000\u0eb7\u0eaa\u0001\u0000\u0000"+
		"\u0000\u0eb7\u0eb5\u0001\u0000\u0000\u0000\u0eb8\u014d\u0001\u0000\u0000"+
		"\u0000\u0eb9\u0ebd\u0003\u0150\u00a8\u0000\u0eba\u0ebd\u0003\u0270\u0138"+
		"\u0000\u0ebb\u0ebd\u0005\u00c2\u0000\u0000\u0ebc\u0eb9\u0001\u0000\u0000"+
		"\u0000\u0ebc\u0eba\u0001\u0000\u0000\u0000\u0ebc\u0ebb\u0001\u0000\u0000"+
		"\u0000\u0ebd\u014f\u0001\u0000\u0000\u0000\u0ebe\u0ebf\u0005D\u0000\u0000"+
		"\u0ebf\u0ec0\u0003\u01dc\u00ee\u0000\u0ec0\u0151\u0001\u0000\u0000\u0000"+
		"\u0ec1\u0ec2\u0005\u00c8\u0000\u0000\u0ec2\u0ec5\u0003\u0154\u00aa\u0000"+
		"\u0ec3\u0ec6\u0003\u0156\u00ab\u0000\u0ec4\u0ec6\u0003\u0158\u00ac\u0000"+
		"\u0ec5\u0ec3\u0001\u0000\u0000\u0000\u0ec5\u0ec4\u0001\u0000\u0000\u0000"+
		"\u0ec6\u0ec8\u0001\u0000\u0000\u0000\u0ec7\u0ec9\u0003\u01b0\u00d8\u0000"+
		"\u0ec8\u0ec7\u0001\u0000\u0000\u0000\u0ec8\u0ec9\u0001\u0000\u0000\u0000"+
		"\u0ec9\u0ecb\u0001\u0000\u0000\u0000\u0eca\u0ecc\u0003\u02ec\u0176\u0000"+
		"\u0ecb\u0eca\u0001\u0000\u0000\u0000\u0ecb\u0ecc\u0001\u0000\u0000\u0000"+
		"\u0ecc\u0ece\u0001\u0000\u0000\u0000\u0ecd\u0ecf\u0003\u01b6\u00db\u0000"+
		"\u0ece\u0ecd\u0001\u0000\u0000\u0000\u0ece\u0ecf\u0001\u0000\u0000\u0000"+
		"\u0ecf\u0153\u0001\u0000\u0000\u0000\u0ed0\u0ed2\u0005\u017f\u0000\u0000"+
		"\u0ed1\u0ed0\u0001\u0000\u0000\u0000\u0ed1\u0ed2\u0001\u0000\u0000\u0000"+
		"\u0ed2\u0ed4\u0001\u0000\u0000\u0000\u0ed3\u0ed5\u0005\u0215\u0000\u0000"+
		"\u0ed4\u0ed3\u0001\u0000\u0000\u0000\u0ed4\u0ed5\u0001\u0000\u0000\u0000"+
		"\u0ed5\u0ed7\u0001\u0000\u0000\u0000\u0ed6\u0ed8\u0005\u0135\u0000\u0000"+
		"\u0ed7\u0ed6\u0001\u0000\u0000\u0000\u0ed7\u0ed8\u0001\u0000\u0000\u0000"+
		"\u0ed8\u0155\u0001\u0000\u0000\u0000\u0ed9\u0eda\u0005\u0114\u0000\u0000"+
		"\u0eda\u0edf\u0003\u021c\u010e\u0000\u0edb\u0edd\u0005[\u0000\u0000\u0edc"+
		"\u0edb\u0001\u0000\u0000\u0000\u0edc\u0edd\u0001\u0000\u0000\u0000\u0edd"+
		"\u0ede\u0001\u0000\u0000\u0000\u0ede\u0ee0\u0003\u0238\u011c\u0000\u0edf"+
		"\u0edc\u0001\u0000\u0000\u0000\u0edf\u0ee0\u0001\u0000\u0000\u0000\u0ee0"+
		"\u0ee2\u0001\u0000\u0000\u0000\u0ee1\u0ee3\u0003\u01a0\u00d0\u0000\u0ee2"+
		"\u0ee1\u0001\u0000\u0000\u0000\u0ee2\u0ee3\u0001\u0000\u0000\u0000\u0ee3"+
		"\u0157\u0001\u0000\u0000\u0000\u0ee4\u0ee5\u0003\u01d4\u00ea\u0000\u0ee5"+
		"\u0ee6\u0005\u0114\u0000\u0000\u0ee6\u0ee7\u0003\u0198\u00cc\u0000\u0ee7"+
		"\u0eee\u0001\u0000\u0000\u0000\u0ee8\u0ee9\u0005\u0114\u0000\u0000\u0ee9"+
		"\u0eea\u0003\u01d4\u00ea\u0000\u0eea\u0eeb\u0005\u02dc\u0000\u0000\u0eeb"+
		"\u0eec\u0003\u0198\u00cc\u0000\u0eec\u0eee\u0001\u0000\u0000\u0000\u0eed"+
		"\u0ee4\u0001\u0000\u0000\u0000\u0eed\u0ee8\u0001\u0000\u0000\u0000\u0eee"+
		"\u0159\u0001\u0000\u0000\u0000\u0eef\u0ef1\u0003\u015e\u00af\u0000\u0ef0"+
		"\u0ef2\u0003\u01ca\u00e5\u0000\u0ef1\u0ef0\u0001\u0000\u0000\u0000\u0ef1"+
		"\u0ef2\u0001\u0000\u0000\u0000\u0ef2\u0ef6\u0001\u0000\u0000\u0000\u0ef3"+
		"\u0ef6\u0003\u0164\u00b2\u0000\u0ef4\u0ef6\u0003\u015c\u00ae\u0000\u0ef5"+
		"\u0eef\u0001\u0000\u0000\u0000\u0ef5\u0ef3\u0001\u0000\u0000\u0000\u0ef5"+
		"\u0ef4\u0001\u0000\u0000\u0000\u0ef6\u015b\u0001\u0000\u0000\u0000\u0ef7"+
		"\u0ef8\u0005 \u0000\u0000\u0ef8\u0ef9\u0003\u015c\u00ae\u0000\u0ef9\u0efa"+
		"\u0005!\u0000\u0000\u0efa\u0f05\u0001\u0000\u0000\u0000\u0efb\u0efc\u0003"+
		"\u015e\u00af\u0000\u0efc\u0efe\u0003\u01c6\u00e3\u0000\u0efd\u0eff\u0003"+
		"\u01ca\u00e5\u0000\u0efe\u0efd\u0001\u0000\u0000\u0000\u0efe\u0eff\u0001"+
		"\u0000\u0000\u0000\u0eff\u0f05\u0001\u0000\u0000\u0000\u0f00\u0f01\u0003"+
		"\u015e\u00af\u0000\u0f01\u0f02\u0003\u01ca\u00e5\u0000\u0f02\u0f03\u0003"+
		"\u01c6\u00e3\u0000\u0f03\u0f05\u0001\u0000\u0000\u0000\u0f04\u0ef7\u0001"+
		"\u0000\u0000\u0000\u0f04\u0efb\u0001\u0000\u0000\u0000\u0f04\u0f00\u0001"+
		"\u0000\u0000\u0000\u0f05\u015d\u0001\u0000\u0000\u0000\u0f06\u0f08\u0003"+
		"\u0186\u00c3\u0000\u0f07\u0f06\u0001\u0000\u0000\u0000\u0f07\u0f08\u0001"+
		"\u0000\u0000\u0000\u0f08\u0f0b\u0001\u0000\u0000\u0000\u0f09\u0f0c\u0003"+
		"\u0160\u00b0\u0000\u0f0a\u0f0c\u0003\u0164\u00b2\u0000\u0f0b\u0f09\u0001"+
		"\u0000\u0000\u0000\u0f0b\u0f0a\u0001\u0000\u0000\u0000\u0f0c\u0f0e\u0001"+
		"\u0000\u0000\u0000\u0f0d\u0f0f\u0003\u02ec\u0176\u0000\u0f0e\u0f0d\u0001"+
		"\u0000\u0000\u0000\u0f0e\u0f0f\u0001\u0000\u0000\u0000\u0f0f\u0f11\u0001"+
		"\u0000\u0000\u0000\u0f10\u0f12\u0003\u01b6\u00db\u0000\u0f11\u0f10\u0001"+
		"\u0000\u0000\u0000\u0f11\u0f12\u0001\u0000\u0000\u0000\u0f12\u015f\u0001"+
		"\u0000\u0000\u0000\u0f13\u0f14\u0006\u00b0\uffff\uffff\u0000\u0f14\u0f19"+
		"\u0003\u0166\u00b3\u0000\u0f15\u0f16\u0003\u0164\u00b2\u0000\u0f16\u0f17"+
		"\u0003\u0162\u00b1\u0000\u0f17\u0f19\u0001\u0000\u0000\u0000\u0f18\u0f13"+
		"\u0001\u0000\u0000\u0000\u0f18\u0f15\u0001\u0000\u0000\u0000\u0f19\u0f1e"+
		"\u0001\u0000\u0000\u0000\u0f1a\u0f1b\n\u0001\u0000\u0000\u0f1b\u0f1d\u0003"+
		"\u0162\u00b1\u0000\u0f1c\u0f1a\u0001\u0000\u0000\u0000\u0f1d\u0f20\u0001"+
		"\u0000\u0000\u0000\u0f1e\u0f1c\u0001\u0000\u0000\u0000\u0f1e\u0f1f\u0001"+
		"\u0000\u0000\u0000\u0f1f\u0161\u0001\u0000\u0000\u0000\u0f20\u0f1e\u0001"+
		"\u0000\u0000\u0000\u0f21\u0f23\u0005\u02cf\u0000\u0000\u0f22\u0f24\u0003"+
		"\u032a\u0195\u0000\u0f23\u0f22\u0001\u0000\u0000\u0000\u0f23\u0f24\u0001"+
		"\u0000\u0000\u0000\u0f24\u0f27\u0001\u0000\u0000\u0000\u0f25\u0f28\u0003"+
		"\u0166\u00b3\u0000\u0f26\u0f28\u0003\u0164\u00b2\u0000\u0f27\u0f25\u0001"+
		"\u0000\u0000\u0000\u0f27\u0f26\u0001\u0000\u0000\u0000\u0f28\u0163\u0001"+
		"\u0000\u0000\u0000\u0f29\u0f2f\u0005 \u0000\u0000\u0f2a\u0f30\u0003\u0164"+
		"\u00b2\u0000\u0f2b\u0f2d\u0003\u015e\u00af\u0000\u0f2c\u0f2e\u0003\u01ca"+
		"\u00e5\u0000\u0f2d\u0f2c\u0001\u0000\u0000\u0000\u0f2d\u0f2e\u0001\u0000"+
		"\u0000\u0000\u0f2e\u0f30\u0001\u0000\u0000\u0000\u0f2f\u0f2a\u0001\u0000"+
		"\u0000\u0000\u0f2f\u0f2b\u0001\u0000\u0000\u0000\u0f30\u0f31\u0001\u0000"+
		"\u0000\u0000\u0f31\u0f32\u0005!\u0000\u0000\u0f32\u0165\u0001\u0000\u0000"+
		"\u0000\u0f33\u0f37\u0003\u0168\u00b4\u0000\u0f34\u0f37\u0003\u0182\u00c1"+
		"\u0000\u0f35\u0f37\u0003\u0180\u00c0\u0000\u0f36\u0f33\u0001\u0000\u0000"+
		"\u0000\u0f36\u0f34\u0001\u0000\u0000\u0000\u0f36\u0f35\u0001\u0000\u0000"+
		"\u0000\u0f37\u0167\u0001\u0000\u0000\u0000\u0f38\u0f3c\u0005\u026a\u0000"+
		"\u0000\u0f39\u0f3b\u0003\u018a\u00c5\u0000\u0f3a\u0f39\u0001\u0000\u0000"+
		"\u0000\u0f3b\u0f3e\u0001\u0000\u0000\u0000\u0f3c\u0f3a\u0001\u0000\u0000"+
		"\u0000\u0f3c\u0f3d\u0001\u0000\u0000\u0000\u0f3d\u0f3f\u0001\u0000\u0000"+
		"\u0000\u0f3e\u0f3c\u0001\u0000\u0000\u0000\u0f3f\u0f41\u0003\u018e\u00c7"+
		"\u0000\u0f40\u0f42\u0003\u01c6\u00e3\u0000\u0f41\u0f40\u0001\u0000\u0000"+
		"\u0000\u0f41\u0f42\u0001\u0000\u0000\u0000\u0f42\u0f44\u0001\u0000\u0000"+
		"\u0000\u0f43\u0f45\u0003\u0196\u00cb\u0000\u0f44\u0f43\u0001\u0000\u0000"+
		"\u0000\u0f44\u0f45\u0001\u0000\u0000\u0000\u0f45\u0f47\u0001\u0000\u0000"+
		"\u0000\u0f46\u0f48\u0003\u01b0\u00d8\u0000\u0f47\u0f46\u0001\u0000\u0000"+
		"\u0000\u0f47\u0f48\u0001\u0000\u0000\u0000\u0f48\u0f4a\u0001\u0000\u0000"+
		"\u0000\u0f49\u0f4b\u0003\u01b2\u00d9\u0000\u0f4a\u0f49\u0001\u0000\u0000"+
		"\u0000\u0f4a\u0f4b\u0001\u0000\u0000\u0000\u0f4b\u0f4d\u0001\u0000\u0000"+
		"\u0000\u0f4c\u0f4e\u0003\u01b4\u00da\u0000\u0f4d\u0f4c\u0001\u0000\u0000"+
		"\u0000\u0f4d\u0f4e\u0001\u0000\u0000\u0000\u0f4e\u0f50\u0001\u0000\u0000"+
		"\u0000\u0f4f\u0f51\u0003\u01bc\u00de\u0000\u0f50\u0f4f\u0001\u0000\u0000"+
		"\u0000\u0f50\u0f51\u0001\u0000\u0000\u0000\u0f51\u0169\u0001\u0000\u0000"+
		"\u0000\u0f52\u0f53\u0005x\u0000\u0000\u0f53\u0f60\u0003\u01ee\u00f7\u0000"+
		"\u0f54\u0f5d\u0005 \u0000\u0000\u0f55\u0f5a\u0003\u0270\u0138\u0000\u0f56"+
		"\u0f57\u0005&\u0000\u0000\u0f57\u0f59\u0003\u0270\u0138\u0000\u0f58\u0f56"+
		"\u0001\u0000\u0000\u0000\u0f59\u0f5c\u0001\u0000\u0000\u0000\u0f5a\u0f58"+
		"\u0001\u0000\u0000\u0000\u0f5a\u0f5b\u0001\u0000\u0000\u0000\u0f5b\u0f5e"+
		"\u0001\u0000\u0000\u0000\u0f5c\u0f5a\u0001\u0000\u0000\u0000\u0f5d\u0f55"+
		"\u0001\u0000\u0000\u0000\u0f5d\u0f5e\u0001\u0000\u0000\u0000\u0f5e\u0f5f"+
		"\u0001\u0000";
	private static final String _serializedATNSegment2 =
		"\u0000\u0000\u0f5f\u0f61\u0005!\u0000\u0000\u0f60\u0f54\u0001\u0000\u0000"+
		"\u0000\u0f60\u0f61\u0001\u0000\u0000\u0000\u0f61\u016b\u0001\u0000\u0000"+
		"\u0000\u0f62\u0f63\u0005\u00d6\u0000\u0000\u0f63\u0f68\u0003\u0270\u0138"+
		"\u0000\u0f64\u0f65\u0005&\u0000\u0000\u0f65\u0f67\u0003\u0270\u0138\u0000"+
		"\u0f66\u0f64\u0001\u0000\u0000\u0000\u0f67\u0f6a\u0001\u0000\u0000\u0000"+
		"\u0f68\u0f66\u0001\u0000\u0000\u0000\u0f68\u0f69\u0001\u0000\u0000\u0000"+
		"\u0f69\u016d\u0001\u0000\u0000\u0000\u0f6a\u0f68\u0001\u0000\u0000\u0000"+
		"\u0f6b\u0f70\u0003\u0170\u00b8\u0000\u0f6c\u0f70\u0003\u0172\u00b9\u0000"+
		"\u0f6d\u0f70\u0003\u0174\u00ba\u0000\u0f6e\u0f70\u0003\u0176\u00bb\u0000"+
		"\u0f6f\u0f6b\u0001\u0000\u0000\u0000\u0f6f\u0f6c\u0001\u0000\u0000\u0000"+
		"\u0f6f\u0f6d\u0001\u0000\u0000\u0000\u0f6f\u0f6e\u0001\u0000\u0000\u0000"+
		"\u0f70\u016f\u0001\u0000\u0000\u0000\u0f71\u0f72\u0005\u0126\u0000\u0000"+
		"\u0f72\u0f73\u0003\u021c\u010e\u0000\u0f73\u0f78\u0005\u01de\u0000\u0000"+
		"\u0f74\u0f76\u0005[\u0000\u0000\u0f75\u0f74\u0001\u0000\u0000\u0000\u0f75"+
		"\u0f76\u0001\u0000\u0000\u0000\u0f76\u0f77\u0001\u0000\u0000\u0000\u0f77"+
		"\u0f79\u0003\u01ee\u00f7\u0000\u0f78\u0f75\u0001\u0000\u0000\u0000\u0f78"+
		"\u0f79\u0001\u0000\u0000\u0000\u0f79\u0171\u0001\u0000\u0000\u0000\u0f7a"+
		"\u0f7b\u0005\u0126\u0000\u0000\u0f7b\u0f7c\u0003\u021c\u010e\u0000\u0f7c"+
		"\u0f7d\u0005\u0219\u0000\u0000\u0f7d\u0f84\u0003\u0220\u0110\u0000\u0f7e"+
		"\u0f7f\u0003\u027c\u013e\u0000\u0f7f\u0f80\u0005 \u0000\u0000\u0f80\u0f81"+
		"\u0003\u01ee\u00f7\u0000\u0f81\u0f82\u0005!\u0000\u0000\u0f82\u0f85\u0001"+
		"\u0000\u0000\u0000\u0f83\u0f85\u0007$\u0000\u0000\u0f84\u0f7e\u0001\u0000"+
		"\u0000\u0000\u0f84\u0f83\u0001\u0000\u0000\u0000\u0f85\u0f87\u0001\u0000"+
		"\u0000\u0000\u0f86\u0f88\u0003\u01b0\u00d8\u0000\u0f87\u0f86\u0001\u0000"+
		"\u0000\u0000\u0f87\u0f88\u0001\u0000\u0000\u0000\u0f88\u0f8a\u0001\u0000"+
		"\u0000\u0000\u0f89\u0f8b\u0003\u01b6\u00db\u0000\u0f8a\u0f89\u0001\u0000"+
		"\u0000\u0000\u0f8a\u0f8b\u0001\u0000\u0000\u0000\u0f8b\u0173\u0001\u0000"+
		"\u0000\u0000\u0f8c\u0f8d\u0005\u0126\u0000\u0000\u0f8d\u0f8e\u0003\u021c"+
		"\u010e\u0000\u0f8e\u0f8f\u0005\u0219\u0000\u0000\u0f8f\u0f91\u0007%\u0000"+
		"\u0000\u0f90\u0f92\u0003\u01b0\u00d8\u0000\u0f91\u0f90\u0001\u0000\u0000"+
		"\u0000\u0f91\u0f92\u0001\u0000\u0000\u0000\u0f92\u0f94\u0001\u0000\u0000"+
		"\u0000\u0f93\u0f95\u0003\u01b6\u00db\u0000\u0f94\u0f93\u0001\u0000\u0000"+
		"\u0000\u0f94\u0f95\u0001\u0000\u0000\u0000\u0f95\u0175\u0001\u0000\u0000"+
		"\u0000\u0f96\u0f97\u0005\u0126\u0000\u0000\u0f97\u0f98\u0003\u021c\u010e"+
		"\u0000\u0f98\u0f99\u0005\u008a\u0000\u0000\u0f99\u0177\u0001\u0000\u0000"+
		"\u0000\u0f9a\u0f9b\u0005\u0137\u0000\u0000\u0f9b\u0f9c\u0005\u02a9\u0000"+
		"\u0000\u0f9c\u0f9d\u0005\u0114\u0000\u0000\u0f9d\u0fa0\u0003\u01dc\u00ee"+
		"\u0000\u0f9e\u0f9f\u0005&\u0000\u0000\u0f9f\u0fa1\u0003\u01dc\u00ee\u0000"+
		"\u0fa0\u0f9e\u0001\u0000\u0000\u0000\u0fa0\u0fa1\u0001\u0000\u0000\u0000"+
		"\u0fa1\u0179\u0001\u0000\u0000\u0000\u0fa2\u0fa5\u0003\u017c\u00be\u0000"+
		"\u0fa3\u0fa5\u0003\u017e\u00bf\u0000\u0fa4\u0fa2\u0001\u0000\u0000\u0000"+
		"\u0fa4\u0fa3\u0001\u0000\u0000\u0000\u0fa5\u017b\u0001\u0000\u0000\u0000"+
		"\u0fa6\u0fa7\u0005\u0172\u0000\u0000\u0fa7\u0fa9\u0005\u00b3\u0000\u0000"+
		"\u0fa8\u0faa\u0007&\u0000\u0000\u0fa9\u0fa8\u0001\u0000\u0000\u0000\u0fa9"+
		"\u0faa\u0001\u0000\u0000\u0000\u0faa\u0fac\u0001\u0000\u0000\u0000\u0fab"+
		"\u0fad\u0005\u0173\u0000\u0000\u0fac\u0fab\u0001\u0000\u0000\u0000\u0fac"+
		"\u0fad\u0001\u0000\u0000\u0000\u0fad\u0fae\u0001\u0000\u0000\u0000\u0fae"+
		"\u0faf\u0005\u013c\u0000\u0000\u0faf\u0fb1\u0003\u01dc\u00ee\u0000\u0fb0"+
		"\u0fb2\u0007\u0001\u0000\u0000\u0fb1\u0fb0\u0001\u0000\u0000\u0000\u0fb1"+
		"\u0fb2\u0001\u0000\u0000\u0000\u0fb2\u0fb3\u0001\u0000\u0000\u0000\u0fb3"+
		"\u0fb4\u0005\u014d\u0000\u0000\u0fb4\u0fb5\u0005\u02a9\u0000\u0000\u0fb5"+
		"\u0fb7\u0003\u021c\u010e\u0000\u0fb6\u0fb8\u0003\u01a0\u00d0\u0000\u0fb7"+
		"\u0fb6\u0001\u0000\u0000\u0000\u0fb7\u0fb8\u0001\u0000\u0000\u0000\u0fb8"+
		"\u0fbc\u0001\u0000\u0000\u0000\u0fb9\u0fba\u0005\u0082\u0000\u0000\u0fba"+
		"\u0fbb\u0005\u0271\u0000\u0000\u0fbb\u0fbd\u0003\u01ee\u00f7\u0000\u0fbc"+
		"\u0fb9\u0001\u0000\u0000\u0000\u0fbc\u0fbd\u0001\u0000\u0000\u0000\u0fbd"+
		"\u0fc4\u0001\u0000\u0000\u0000\u0fbe\u0fc0\u0005\u0090\u0000\u0000\u0fbf"+
		"\u0fc1\u0003\u01c4\u00e2\u0000\u0fc0\u0fbf\u0001\u0000\u0000\u0000\u0fc1"+
		"\u0fc2\u0001\u0000\u0000\u0000\u0fc2\u0fc0\u0001\u0000\u0000\u0000\u0fc2"+
		"\u0fc3\u0001\u0000\u0000\u0000\u0fc3\u0fc5\u0001\u0000\u0000\u0000\u0fc4"+
		"\u0fbe\u0001\u0000\u0000\u0000\u0fc4\u0fc5\u0001\u0000\u0000\u0000\u0fc5"+
		"\u0fcc\u0001\u0000\u0000\u0000\u0fc6\u0fc8\u0005\u016f\u0000\u0000\u0fc7"+
		"\u0fc9\u0003\u01c2\u00e1\u0000\u0fc8\u0fc7\u0001\u0000\u0000\u0000\u0fc9"+
		"\u0fca\u0001\u0000\u0000\u0000\u0fca\u0fc8\u0001\u0000\u0000\u0000\u0fca"+
		"\u0fcb\u0001\u0000\u0000\u0000\u0fcb\u0fcd\u0001\u0000\u0000\u0000\u0fcc"+
		"\u0fc6\u0001\u0000\u0000\u0000\u0fcc\u0fcd\u0001\u0000\u0000\u0000\u0fcd"+
		"\u0fd2\u0001\u0000\u0000\u0000\u0fce\u0fcf\u0005\u0135\u0000\u0000\u0fcf"+
		"\u0fd0\u0003\u01e0\u00f0\u0000\u0fd0\u0fd1\u0007\'\u0000\u0000\u0fd1\u0fd3"+
		"\u0001\u0000\u0000\u0000\u0fd2\u0fce\u0001\u0000\u0000\u0000\u0fd2\u0fd3"+
		"\u0001\u0000\u0000\u0000\u0fd3\u0fd5\u0001\u0000\u0000\u0000\u0fd4\u0fd6"+
		"\u0003\u031c\u018e\u0000\u0fd5\u0fd4\u0001\u0000\u0000\u0000\u0fd5\u0fd6"+
		"\u0001\u0000\u0000\u0000\u0fd6\u0fd8\u0001\u0000\u0000\u0000\u0fd7\u0fd9"+
		"\u0003\u014a\u00a5\u0000\u0fd8\u0fd7\u0001\u0000\u0000\u0000\u0fd8\u0fd9"+
		"\u0001\u0000\u0000\u0000\u0fd9\u017d\u0001\u0000\u0000\u0000\u0fda\u0fdb"+
		"\u0005\u0172\u0000\u0000\u0fdb\u0fdd\u0005\u02fc\u0000\u0000\u0fdc\u0fde"+
		"\u0007&\u0000\u0000\u0fdd\u0fdc\u0001\u0000\u0000\u0000\u0fdd\u0fde\u0001"+
		"\u0000\u0000\u0000\u0fde\u0fe0\u0001\u0000\u0000\u0000\u0fdf\u0fe1\u0005"+
		"\u0173\u0000\u0000\u0fe0\u0fdf\u0001\u0000\u0000\u0000\u0fe0\u0fe1\u0001"+
		"\u0000\u0000\u0000\u0fe1\u0fe2\u0001\u0000\u0000\u0000\u0fe2\u0fe3\u0005"+
		"\u013c\u0000\u0000\u0fe3\u0fe5\u0003\u01dc\u00ee\u0000\u0fe4\u0fe6\u0007"+
		"\u0001\u0000\u0000\u0fe5\u0fe4\u0001\u0000\u0000\u0000\u0fe5\u0fe6\u0001"+
		"\u0000\u0000\u0000\u0fe6\u0fe7\u0001\u0000\u0000\u0000\u0fe7\u0fe8\u0005"+
		"\u014d\u0000\u0000\u0fe8\u0fe9\u0005\u02a9\u0000\u0000\u0fe9\u0fed\u0003"+
		"\u021c\u010e\u0000\u0fea\u0feb\u0005\u0082\u0000\u0000\u0feb\u0fec\u0005"+
		"\u0271\u0000\u0000\u0fec\u0fee\u0003\u01ee\u00f7\u0000\u0fed\u0fea\u0001"+
		"\u0000\u0000\u0000\u0fed\u0fee\u0001\u0000\u0000\u0000\u0fee\u0ff6\u0001"+
		"\u0000\u0000\u0000\u0fef\u0ff0\u0005\u0258\u0000\u0000\u0ff0\u0ff1\u0005"+
		"\u0133\u0000\u0000\u0ff1\u0ff2\u0005u\u0000\u0000\u0ff2\u0ff3\u0005\u001d"+
		"\u0000\u0000\u0ff3\u0ff4\u0003\u01dc\u00ee\u0000\u0ff4\u0ff5\u0005\u001b"+
		"\u0000\u0000\u0ff5\u0ff7\u0001\u0000\u0000\u0000\u0ff6\u0fef\u0001\u0000"+
		"\u0000\u0000\u0ff6\u0ff7\u0001\u0000\u0000\u0000\u0ff7\u0ffc\u0001\u0000"+
		"\u0000\u0000\u0ff8\u0ff9\u0005\u0135\u0000\u0000\u0ff9\u0ffa\u0003\u01e0"+
		"\u00f0\u0000\u0ffa\u0ffb\u0007\'\u0000\u0000\u0ffb\u0ffd\u0001\u0000\u0000"+
		"\u0000\u0ffc\u0ff8\u0001\u0000\u0000\u0000\u0ffc\u0ffd\u0001\u0000\u0000"+
		"\u0000\u0ffd\u0fff\u0001\u0000\u0000\u0000\u0ffe\u1000\u0003\u031c\u018e"+
		"\u0000\u0fff\u0ffe\u0001\u0000\u0000\u0000\u0fff\u1000\u0001\u0000\u0000"+
		"\u0000\u1000\u1002\u0001\u0000\u0000\u0000\u1001\u1003\u0003\u014a\u00a5"+
		"\u0000\u1002\u1001\u0001\u0000\u0000\u0000\u1002\u1003\u0001\u0000\u0000"+
		"\u0000\u1003\u017f\u0001\u0000\u0000\u0000\u1004\u1005\u0005\u02a9\u0000"+
		"\u0000\u1005\u1006\u0003\u021c\u010e\u0000\u1006\u0181\u0001\u0000\u0000"+
		"\u0000\u1007\u1008\u0005\u02e2\u0000\u0000\u1008\u1009\u0003\u0184\u00c2"+
		"\u0000\u1009\u0183\u0001\u0000\u0000\u0000\u100a\u100b\u0005\u0257\u0000"+
		"\u0000\u100b\u1011\u0003\u014c\u00a6\u0000\u100c\u100d\u0005&\u0000\u0000"+
		"\u100d\u100e\u0005\u0257\u0000\u0000\u100e\u1010\u0003\u014c\u00a6\u0000"+
		"\u100f\u100c\u0001\u0000\u0000\u0000\u1010\u1013\u0001\u0000\u0000\u0000"+
		"\u1011\u100f\u0001\u0000\u0000\u0000\u1011\u1012\u0001\u0000\u0000\u0000"+
		"\u1012\u0185\u0001\u0000\u0000\u0000\u1013\u1011\u0001\u0000\u0000\u0000"+
		"\u1014\u1016\u0005\u02f4\u0000\u0000\u1015\u1017\u0005\u0220\u0000\u0000"+
		"\u1016\u1015\u0001\u0000\u0000\u0000\u1016\u1017\u0001\u0000\u0000\u0000"+
		"\u1017\u1018\u0001\u0000\u0000\u0000\u1018\u101d\u0003\u0188\u00c4\u0000"+
		"\u1019\u101a\u0005&\u0000\u0000\u101a\u101c\u0003\u0188\u00c4\u0000\u101b"+
		"\u1019\u0001\u0000\u0000\u0000\u101c\u101f\u0001\u0000\u0000\u0000\u101d"+
		"\u101b\u0001\u0000\u0000\u0000\u101d\u101e\u0001\u0000\u0000\u0000\u101e"+
		"\u0187\u0001\u0000\u0000\u0000\u101f\u101d\u0001\u0000\u0000\u0000\u1020"+
		"\u1025\u0003\u01ee\u00f7\u0000\u1021\u1022\u0005 \u0000\u0000\u1022\u1023"+
		"\u0003\u0240\u0120\u0000\u1023\u1024\u0005!\u0000\u0000\u1024\u1026\u0001"+
		"\u0000\u0000\u0000\u1025\u1021\u0001\u0000\u0000\u0000\u1025\u1026\u0001"+
		"\u0000\u0000\u0000\u1026\u1027\u0001\u0000\u0000\u0000\u1027\u1028\u0005"+
		"[\u0000\u0000\u1028\u1029\u0003\u01c0\u00e0\u0000\u1029\u0189\u0001\u0000"+
		"\u0000\u0000\u102a\u1033\u0003\u018c\u00c6\u0000\u102b\u1033\u0005\u012a"+
		"\u0000\u0000\u102c\u1033\u0005\u029d\u0000\u0000\u102d\u1033\u0005\u028e"+
		"\u0000\u0000\u102e\u1033\u0005\u028a\u0000\u0000\u102f\u1033\u0005\u028b"+
		"\u0000\u0000\u1030\u1033\u0005\u028d\u0000\u0000\u1031\u1033\u0005\u028c"+
		"\u0000\u0000\u1032\u102a\u0001\u0000\u0000\u0000\u1032\u102b\u0001\u0000"+
		"\u0000\u0000\u1032\u102c\u0001\u0000\u0000\u0000\u1032\u102d\u0001\u0000"+
		"\u0000\u0000\u1032\u102e\u0001\u0000\u0000\u0000\u1032\u102f\u0001\u0000"+
		"\u0000\u0000\u1032\u1030\u0001\u0000\u0000\u0000\u1032\u1031\u0001\u0000"+
		"\u0000\u0000\u1033\u018b\u0001\u0000\u0000\u0000\u1034\u1035\u0007(\u0000"+
		"\u0000\u1035\u018d\u0001\u0000\u0000\u0000\u1036\u1039\u0003\u0192\u00c9"+
		"\u0000\u1037\u1039\u0003\u0190\u00c8\u0000\u1038\u1036\u0001\u0000\u0000"+
		"\u0000\u1038\u1037\u0001\u0000\u0000\u0000\u1039\u103e\u0001\u0000\u0000"+
		"\u0000\u103a\u103b\u0005&\u0000\u0000\u103b\u103d\u0003\u0190\u00c8\u0000"+
		"\u103c\u103a\u0001\u0000\u0000\u0000\u103d\u1040\u0001\u0000\u0000\u0000"+
		"\u103e\u103c\u0001\u0000\u0000\u0000\u103e\u103f\u0001\u0000\u0000\u0000"+
		"\u103f\u018f\u0001\u0000\u0000\u0000\u1040\u103e\u0001\u0000\u0000\u0000"+
		"\u1041\u1046\u0003\u0270\u0138\u0000\u1042\u1044\u0005[\u0000\u0000\u1043"+
		"\u1042\u0001\u0000\u0000\u0000\u1043\u1044\u0001\u0000\u0000\u0000\u1044"+
		"\u1045\u0001\u0000\u0000\u0000\u1045\u1047\u0003\u0238\u011c\u0000\u1046"+
		"\u1043\u0001\u0000\u0000\u0000\u1046\u1047\u0001\u0000\u0000\u0000\u1047"+
		"\u104a\u0001\u0000\u0000\u0000\u1048\u104a\u0003\u0194\u00ca\u0000\u1049"+
		"\u1041\u0001\u0000\u0000\u0000\u1049\u1048\u0001\u0000\u0000\u0000\u104a"+
		"\u0191\u0001\u0000\u0000\u0000\u104b\u104c\u0005\u0012\u0000\u0000\u104c"+
		"\u0193\u0001\u0000\u0000\u0000\u104d\u104e\u0003\u01ee\u00f7\u0000\u104e"+
		"\u104f\u0005\u0015\u0000\u0000\u104f\u1051\u0001\u0000\u0000\u0000\u1050"+
		"\u104d\u0001\u0000\u0000\u0000\u1050\u1051\u0001\u0000\u0000\u0000\u1051"+
		"\u1052\u0001\u0000\u0000\u0000\u1052\u1053\u0003\u01ee\u00f7\u0000\u1053"+
		"\u1054\u0005\u0016\u0000\u0000\u1054\u0195\u0001\u0000\u0000\u0000\u1055"+
		"\u1058\u0005\u0114\u0000\u0000\u1056\u1059\u0005\u00d9\u0000\u0000\u1057"+
		"\u1059\u0003\u0198\u00cc\u0000\u1058\u1056\u0001\u0000\u0000\u0000\u1058"+
		"\u1057\u0001\u0000\u0000\u0000\u1059\u0197\u0001\u0000\u0000\u0000\u105a"+
		"\u105f\u0003\u019c\u00ce\u0000\u105b\u105c\u0005&\u0000\u0000\u105c\u105e"+
		"\u0003\u019c\u00ce\u0000\u105d\u105b\u0001\u0000\u0000\u0000\u105e\u1061"+
		"\u0001\u0000\u0000\u0000\u105f\u105d\u0001\u0000\u0000\u0000\u105f\u1060"+
		"\u0001\u0000\u0000\u0000\u1060\u0199\u0001\u0000\u0000\u0000\u1061\u105f"+
		"\u0001\u0000\u0000\u0000\u1062\u1066\u0003\u019e\u00cf\u0000\u1063\u1065"+
		"\u0003\u01a6\u00d3\u0000\u1064\u1063\u0001\u0000\u0000\u0000\u1065\u1068"+
		"\u0001\u0000\u0000\u0000\u1066\u1064\u0001\u0000\u0000\u0000\u1066\u1067"+
		"\u0001\u0000\u0000\u0000\u1067\u019b\u0001\u0000\u0000\u0000\u1068\u1066"+
		"\u0001\u0000\u0000\u0000\u1069\u1070\u0003\u019e\u00cf\u0000\u106a\u106b"+
		"\u0005\"\u0000\u0000\u106b\u106c\u0005\u01d9\u0000\u0000\u106c\u106d\u0003"+
		"\u019a\u00cd\u0000\u106d\u106e\u0005#\u0000\u0000\u106e\u1070\u0001\u0000"+
		"\u0000\u0000\u106f\u1069\u0001\u0000\u0000\u0000\u106f\u106a\u0001\u0000"+
		"\u0000\u0000\u1070\u1074\u0001\u0000\u0000\u0000\u1071\u1073\u0003\u01a6"+
		"\u00d3\u0000\u1072\u1071\u0001\u0000\u0000\u0000\u1073\u1076\u0001\u0000"+
		"\u0000\u0000\u1074\u1072\u0001\u0000\u0000\u0000\u1074\u1075\u0001\u0000"+
		"\u0000\u0000\u1075\u019d\u0001\u0000\u0000\u0000\u1076\u1074\u0001\u0000"+
		"\u0000\u0000\u1077\u1079\u0003\u021c\u010e\u0000\u1078\u107a\u0003\u01a0"+
		"\u00d0\u0000\u1079\u1078\u0001\u0000\u0000\u0000\u1079\u107a\u0001\u0000"+
		"\u0000\u0000\u107a\u107f\u0001\u0000\u0000\u0000\u107b\u107d\u0005[\u0000"+
		"\u0000\u107c\u107b\u0001\u0000\u0000\u0000\u107c\u107d\u0001\u0000\u0000"+
		"\u0000\u107d\u107e\u0001\u0000\u0000\u0000\u107e\u1080\u0003\u0238\u011c"+
		"\u0000\u107f\u107c\u0001\u0000\u0000\u0000\u107f\u1080\u0001\u0000\u0000"+
		"\u0000\u1080\u1082\u0001\u0000\u0000\u0000\u1081\u1083\u0003\u01a2\u00d1"+
		"\u0000\u1082\u1081\u0001\u0000\u0000\u0000\u1082\u1083\u0001\u0000\u0000"+
		"\u0000\u1083\u1094\u0001\u0000\u0000\u0000\u1084\u1086\u0003\u01c0\u00e0"+
		"\u0000\u1085\u1087\u0005[\u0000\u0000\u1086\u1085\u0001\u0000\u0000\u0000"+
		"\u1086\u1087\u0001\u0000\u0000\u0000\u1087\u1088\u0001\u0000\u0000\u0000"+
		"\u1088\u108d\u0003\u0238\u011c\u0000\u1089\u108a\u0005 \u0000\u0000\u108a"+
		"\u108b\u0003\u0240\u0120\u0000\u108b\u108c\u0005!\u0000\u0000\u108c\u108e"+
		"\u0001\u0000\u0000\u0000\u108d\u1089\u0001\u0000\u0000\u0000\u108d\u108e"+
		"\u0001\u0000\u0000\u0000\u108e\u1094\u0001\u0000\u0000\u0000\u108f\u1090"+
		"\u0005 \u0000\u0000\u1090\u1091\u0003\u0198\u00cc\u0000\u1091\u1092\u0005"+
		"!\u0000\u0000\u1092\u1094\u0001\u0000\u0000\u0000\u1093\u1077\u0001\u0000"+
		"\u0000\u0000\u1093\u1084\u0001\u0000\u0000\u0000\u1093\u108f\u0001\u0000"+
		"\u0000\u0000\u1094\u019f\u0001\u0000\u0000\u0000\u1095\u1096\u0005\u01f3"+
		"\u0000\u0000\u1096\u1097\u0005 \u0000\u0000\u1097\u109c\u0003\u01ee\u00f7"+
		"\u0000\u1098\u1099\u0005&\u0000\u0000\u1099\u109b\u0003\u01ee\u00f7\u0000"+
		"\u109a\u1098\u0001\u0000\u0000\u0000\u109b\u109e\u0001\u0000\u0000\u0000"+
		"\u109c\u109a\u0001\u0000\u0000\u0000\u109c\u109d\u0001\u0000\u0000\u0000"+
		"\u109d\u109f\u0001\u0000\u0000\u0000\u109e\u109c\u0001\u0000\u0000\u0000"+
		"\u109f\u10a0\u0005!\u0000\u0000\u10a0\u01a1\u0001\u0000\u0000\u0000\u10a1"+
		"\u10a6\u0003\u01a4\u00d2\u0000\u10a2\u10a3\u0005&\u0000\u0000\u10a3\u10a5"+
		"\u0003\u01a4\u00d2\u0000\u10a4\u10a2\u0001\u0000\u0000\u0000\u10a5\u10a8"+
		"\u0001\u0000\u0000\u0000\u10a6\u10a4\u0001\u0000\u0000\u0000\u10a6\u10a7"+
		"\u0001\u0000\u0000\u0000\u10a7\u01a3\u0001\u0000\u0000\u0000\u10a8\u10a6"+
		"\u0001\u0000\u0000\u0000\u10a9\u10aa\u0007)\u0000\u0000\u10aa\u10b3\u0007"+
		"*\u0000\u0000\u10ab\u10b1\u0005\u010f\u0000\u0000\u10ac\u10b2\u0005\u0158"+
		"\u0000\u0000\u10ad\u10ae\u0005\u01e6\u0000\u0000\u10ae\u10b2\u0005u\u0000"+
		"\u0000\u10af\u10b0\u0005\u0122\u0000\u0000\u10b0\u10b2\u0005u\u0000\u0000"+
		"\u10b1\u10ac\u0001\u0000\u0000\u0000\u10b1\u10ad\u0001\u0000\u0000\u0000"+
		"\u10b1\u10af\u0001\u0000\u0000\u0000\u10b2\u10b4\u0001\u0000\u0000\u0000"+
		"\u10b3\u10ab\u0001\u0000\u0000\u0000\u10b3\u10b4\u0001\u0000\u0000\u0000"+
		"\u10b4\u10b5\u0001\u0000\u0000\u0000\u10b5\u10b6\u0005 \u0000\u0000\u10b6"+
		"\u10bb\u0003\u0220\u0110\u0000\u10b7\u10b8\u0005&\u0000\u0000\u10b8\u10ba"+
		"\u0003\u0220\u0110\u0000\u10b9\u10b7\u0001\u0000\u0000\u0000\u10ba\u10bd"+
		"\u0001\u0000\u0000\u0000\u10bb\u10b9\u0001\u0000\u0000\u0000\u10bb\u10bc"+
		"\u0001\u0000\u0000\u0000\u10bc\u10be\u0001\u0000\u0000\u0000\u10bd\u10bb"+
		"\u0001\u0000\u0000\u0000\u10be\u10bf\u0005!\u0000\u0000\u10bf\u01a5\u0001"+
		"\u0000\u0000\u0000\u10c0\u10c1\u0003\u01a8\u00d4\u0000\u10c1\u10c3\u0003"+
		"\u019c\u00ce\u0000\u10c2\u10c4\u0003\u01ae\u00d7\u0000\u10c3\u10c2\u0001"+
		"\u0000\u0000\u0000\u10c3\u10c4\u0001\u0000\u0000\u0000\u10c4\u10cd\u0001"+
		"\u0000\u0000\u0000\u10c5\u10c6\u0003\u01aa\u00d5\u0000\u10c6\u10c7\u0003"+
		"\u019c\u00ce\u0000\u10c7\u10c8\u0003\u01ae\u00d7\u0000\u10c8\u10cd\u0001"+
		"\u0000\u0000\u0000\u10c9\u10ca\u0003\u01ac\u00d6\u0000\u10ca\u10cb\u0003"+
		"\u019e\u00cf\u0000\u10cb\u10cd\u0001\u0000\u0000\u0000\u10cc\u10c0\u0001"+
		"\u0000\u0000\u0000\u10cc\u10c5\u0001\u0000\u0000\u0000\u10cc\u10c9\u0001"+
		"\u0000\u0000\u0000\u10cd\u01a7\u0001\u0000\u0000\u0000\u10ce\u10d0\u0007"+
		"+\u0000\u0000\u10cf\u10ce\u0001\u0000\u0000\u0000\u10cf\u10d0\u0001\u0000"+
		"\u0000\u0000\u10d0\u10d1\u0001\u0000\u0000\u0000\u10d1\u10d4\u0005\u0158"+
		"\u0000\u0000\u10d2\u10d4\u0005\u029d\u0000\u0000\u10d3\u10cf\u0001\u0000"+
		"\u0000\u0000\u10d3\u10d2\u0001\u0000\u0000\u0000\u10d4\u01a9\u0001\u0000"+
		"\u0000\u0000\u10d5\u10d7\u0007,\u0000\u0000\u10d6\u10d8\u0005\u01eb\u0000"+
		"\u0000\u10d7\u10d6\u0001\u0000\u0000\u0000\u10d7\u10d8\u0001\u0000\u0000"+
		"\u0000\u10d8\u10d9\u0001\u0000\u0000\u0000\u10d9\u10da\u0005\u0158\u0000"+
		"\u0000\u10da\u01ab\u0001\u0000\u0000\u0000\u10db\u10dd\u0005\u01c0\u0000"+
		"\u0000\u10dc\u10de\u0005\u013e\u0000\u0000\u10dd\u10dc\u0001\u0000\u0000"+
		"\u0000\u10dd\u10de\u0001\u0000\u0000\u0000\u10de\u10df\u0001\u0000\u0000"+
		"\u0000\u10df\u10e7\u0005\u0158\u0000\u0000\u10e0\u10e1\u0005\u01c0\u0000"+
		"\u0000\u10e1\u10e3\u0007,\u0000\u0000\u10e2\u10e4\u0005\u01eb\u0000\u0000"+
		"\u10e3\u10e2\u0001\u0000\u0000\u0000\u10e3\u10e4\u0001\u0000\u0000\u0000"+
		"\u10e4\u10e5\u0001\u0000\u0000\u0000\u10e5\u10e7\u0005\u0158\u0000\u0000"+
		"\u10e6\u10db\u0001\u0000\u0000\u0000\u10e6\u10e0\u0001\u0000\u0000\u0000"+
		"\u10e7\u01ad\u0001\u0000\u0000\u0000\u10e8\u10e9\u0005\u01db\u0000\u0000"+
		"\u10e9\u10f0\u0003\u0270\u0138\u0000\u10ea\u10eb\u0005\u02dc\u0000\u0000"+
		"\u10eb\u10ec\u0005 \u0000\u0000\u10ec\u10ed\u0003\u0240\u0120\u0000\u10ed"+
		"\u10ee\u0005!\u0000\u0000\u10ee\u10f0\u0001\u0000\u0000\u0000\u10ef\u10e8"+
		"\u0001\u0000\u0000\u0000\u10ef\u10ea\u0001\u0000\u0000\u0000\u10f0\u01af"+
		"\u0001\u0000\u0000\u0000\u10f1\u10f2\u0005\u02f1\u0000\u0000\u10f2\u10f3"+
		"\u0003\u0270\u0138\u0000\u10f3\u01b1\u0001\u0000\u0000\u0000\u10f4\u10f5"+
		"\u0005\u0122\u0000\u0000\u10f5\u10f6\u0005u\u0000\u0000\u10f6\u10fb\u0003"+
		"\u02ee\u0177\u0000\u10f7\u10f8\u0005&\u0000\u0000\u10f8\u10fa\u0003\u02ee"+
		"\u0177\u0000\u10f9\u10f7\u0001\u0000\u0000\u0000\u10fa\u10fd\u0001\u0000"+
		"\u0000\u0000\u10fb\u10f9\u0001\u0000\u0000\u0000\u10fb\u10fc\u0001\u0000"+
		"\u0000\u0000\u10fc\u1100\u0001\u0000\u0000\u0000\u10fd\u10fb\u0001\u0000"+
		"\u0000\u0000\u10fe\u10ff\u0005\u02f4\u0000\u0000\u10ff\u1101\u0005\u0254"+
		"\u0000\u0000\u1100\u10fe\u0001\u0000\u0000\u0000\u1100\u1101\u0001\u0000"+
		"\u0000\u0000\u1101\u01b3\u0001\u0000\u0000\u0000\u1102\u1103\u0005\u0128"+
		"\u0000\u0000\u1103\u1104\u0003\u0270\u0138\u0000\u1104\u01b5\u0001\u0000"+
		"\u0000\u0000\u1105\u1110\u0005\u016d\u0000\u0000\u1106\u1107\u0003\u01ba"+
		"\u00dd\u0000\u1107\u1108\u0005&\u0000\u0000\u1108\u110a\u0001\u0000\u0000"+
		"\u0000\u1109\u1106\u0001\u0000\u0000\u0000\u1109\u110a\u0001\u0000\u0000"+
		"\u0000\u110a\u110b\u0001\u0000\u0000\u0000\u110b\u1111\u0003\u01b8\u00dc"+
		"\u0000\u110c\u110d\u0003\u01b8\u00dc\u0000\u110d\u110e\u0005\u01d8\u0000"+
		"\u0000\u110e\u110f\u0003\u01ba\u00dd\u0000\u110f\u1111\u0001\u0000\u0000"+
		"\u0000\u1110\u1109\u0001\u0000\u0000\u0000\u1110\u110c\u0001\u0000\u0000"+
		"\u0000\u1111\u01b7\u0001\u0000\u0000\u0000\u1112\u1115\u0003\u01e0\u00f0"+
		"\u0000\u1113\u1115\u0003\u01d6\u00eb\u0000\u1114\u1112\u0001\u0000\u0000"+
		"\u0000\u1114\u1113\u0001\u0000\u0000\u0000\u1115\u01b9\u0001\u0000\u0000"+
		"\u0000\u1116\u1119\u0003\u01e0\u00f0\u0000\u1117\u1119\u0003\u01d6\u00eb"+
		"\u0000\u1118\u1116\u0001\u0000\u0000\u0000\u1118\u1117\u0001\u0000\u0000"+
		"\u0000\u1119\u01bb\u0001\u0000\u0000\u0000\u111a\u111b\u0005\u02f3\u0000"+
		"\u0000\u111b\u1120\u0003\u01be\u00df\u0000\u111c\u111d\u0005&\u0000\u0000"+
		"\u111d\u111f\u0003\u01be\u00df\u0000\u111e\u111c\u0001\u0000\u0000\u0000"+
		"\u111f\u1122\u0001\u0000\u0000\u0000\u1120\u111e\u0001\u0000\u0000\u0000"+
		"\u1120\u1121\u0001\u0000\u0000\u0000\u1121\u01bd\u0001\u0000\u0000\u0000"+
		"\u1122\u1120\u0001\u0000\u0000\u0000\u1123\u1124\u0003\u01ee\u00f7\u0000"+
		"\u1124\u1125\u0005[\u0000\u0000\u1125\u1126\u0003\u029a\u014d\u0000\u1126"+
		"\u01bf\u0001\u0000\u0000\u0000\u1127\u1128\u0003\u0164\u00b2\u0000\u1128"+
		"\u01c1\u0001\u0000\u0000\u0000\u1129\u112a\u0005\u0294\u0000\u0000\u112a"+
		"\u112b\u0005u\u0000\u0000\u112b\u1130\u0003\u01dc\u00ee\u0000\u112c\u112d"+
		"\u0005\u02b0\u0000\u0000\u112d\u112e\u0005u\u0000\u0000\u112e\u1130\u0003"+
		"\u01dc\u00ee\u0000\u112f\u1129\u0001\u0000\u0000\u0000\u112f\u112c\u0001"+
		"\u0000\u0000\u0000\u1130\u01c3\u0001\u0000\u0000\u0000\u1131\u1132\u0005"+
		"\u02b0\u0000\u0000\u1132\u1133\u0005u\u0000\u0000\u1133\u113e\u0003\u01dc"+
		"\u00ee\u0000\u1134\u1136\u0005\u01e3\u0000\u0000\u1135\u1134\u0001\u0000"+
		"\u0000\u0000\u1135\u1136\u0001\u0000\u0000\u0000\u1136\u1137\u0001\u0000"+
		"\u0000\u0000\u1137\u1138\u0005\u00e2\u0000\u0000\u1138\u1139\u0005u\u0000"+
		"\u0000\u1139\u113e\u0003\u01dc\u00ee\u0000\u113a\u113b\u0005\u00ee\u0000"+
		"\u0000\u113b\u113c\u0005u\u0000\u0000\u113c\u113e\u0003\u01dc\u00ee\u0000"+
		"\u113d\u1131\u0001\u0000\u0000\u0000\u113d\u1135\u0001\u0000\u0000\u0000"+
		"\u113d\u113a\u0001\u0000\u0000\u0000\u113e\u01c5\u0001\u0000\u0000\u0000"+
		"\u113f\u1140\u0005\u014d\u0000\u0000\u1140\u1145\u0003\u01fc\u00fe\u0000"+
		"\u1141\u1142\u0005&\u0000\u0000\u1142\u1144\u0003\u01fc\u00fe\u0000\u1143"+
		"\u1141\u0001\u0000\u0000\u0000\u1144\u1147\u0001\u0000\u0000\u0000\u1145"+
		"\u1143\u0001\u0000\u0000\u0000\u1145\u1146\u0001\u0000\u0000\u0000\u1146"+
		"\u1164\u0001\u0000\u0000\u0000\u1147\u1145\u0001\u0000\u0000\u0000\u1148"+
		"\u1149\u0005\u014d\u0000\u0000\u1149\u114a\u0005\u00da\u0000\u0000\u114a"+
		"\u1164\u0003\u01dc\u00ee\u0000\u114b\u114c\u0005\u014d\u0000\u0000\u114c"+
		"\u114d\u0005\u01ec\u0000\u0000\u114d\u1151\u0003\u01dc\u00ee\u0000\u114e"+
		"\u114f\u0005\u0082\u0000\u0000\u114f\u1150\u0005\u0271\u0000\u0000\u1150"+
		"\u1152\u0003\u0216\u010b\u0000\u1151\u114e\u0001\u0000\u0000\u0000\u1151"+
		"\u1152\u0001\u0000\u0000\u0000\u1152\u1159\u0001\u0000\u0000\u0000\u1153"+
		"\u1155\u0005\u0090\u0000\u0000\u1154\u1156\u0003\u01c4\u00e2\u0000\u1155"+
		"\u1154\u0001\u0000\u0000\u0000\u1156\u1157\u0001\u0000\u0000\u0000\u1157"+
		"\u1155\u0001\u0000\u0000\u0000\u1157\u1158\u0001\u0000\u0000\u0000\u1158"+
		"\u115a\u0001\u0000\u0000\u0000\u1159\u1153\u0001\u0000\u0000\u0000\u1159"+
		"\u115a\u0001\u0000\u0000\u0000\u115a\u1161\u0001\u0000\u0000\u0000\u115b"+
		"\u115d\u0005\u016f\u0000\u0000\u115c\u115e\u0003\u01c2\u00e1\u0000\u115d"+
		"\u115c\u0001\u0000\u0000\u0000\u115e\u115f\u0001\u0000\u0000\u0000\u115f"+
		"\u115d\u0001\u0000\u0000\u0000\u115f\u1160\u0001\u0000\u0000\u0000\u1160"+
		"\u1162\u0001\u0000\u0000\u0000\u1161\u115b\u0001\u0000\u0000\u0000\u1161"+
		"\u1162\u0001\u0000\u0000\u0000\u1162\u1164\u0001\u0000\u0000\u0000\u1163"+
		"\u113f\u0001\u0000\u0000\u0000\u1163\u1148\u0001\u0000\u0000\u0000\u1163"+
		"\u114b\u0001\u0000\u0000\u0000\u1164\u01c7\u0001\u0000\u0000\u0000\u1165"+
		"\u1166\u0005\u010f\u0000\u0000\u1166\u1168\u0003\u01cc\u00e6\u0000\u1167"+
		"\u1169\u0003\u01d0\u00e8\u0000\u1168\u1167\u0001\u0000\u0000\u0000\u1168"+
		"\u1169\u0001\u0000\u0000\u0000\u1169\u116b\u0001\u0000\u0000\u0000\u116a"+
		"\u116c\u0003\u01ce\u00e7\u0000\u116b\u116a\u0001\u0000\u0000\u0000\u116b"+
		"\u116c\u0001\u0000\u0000\u0000\u116c\u1172\u0001\u0000\u0000\u0000\u116d"+
		"\u116e\u0005\u0176\u0000\u0000\u116e\u116f\u0005\u0138\u0000\u0000\u116f"+
		"\u1170\u0005\u0272\u0000\u0000\u1170\u1172\u0005\u01b4\u0000\u0000\u1171"+
		"\u1165\u0001\u0000\u0000\u0000\u1171\u116d\u0001\u0000\u0000\u0000\u1172"+
		"\u01c9\u0001\u0000\u0000\u0000\u1173\u1175\u0003\u01c8\u00e4\u0000\u1174"+
		"\u1173\u0001\u0000\u0000\u0000\u1175\u1176\u0001\u0000\u0000\u0000\u1176"+
		"\u1174\u0001\u0000\u0000\u0000\u1176\u1177\u0001\u0000\u0000\u0000\u1177"+
		"\u01cb\u0001\u0000\u0000\u0000\u1178\u1179\u0007-\u0000\u0000\u1179\u01cd"+
		"\u0001\u0000\u0000\u0000\u117a\u117b\u0005\u0278\u0000\u0000\u117b\u117e"+
		"\u0005\u0177\u0000\u0000\u117c\u117e\u0005\u01cc\u0000\u0000\u117d\u117a"+
		"\u0001\u0000\u0000\u0000\u117d\u117c\u0001\u0000\u0000\u0000\u117e\u01cf"+
		"\u0001\u0000\u0000\u0000\u117f\u1180\u0005\u01d6\u0000\u0000\u1180\u1181"+
		"\u0003\u01d4\u00ea\u0000\u1181\u01d1\u0001\u0000\u0000\u0000\u1182\u1184"+
		"\u0003\u021c\u010e\u0000\u1183\u1185\u0005\u0016\u0000\u0000\u1184\u1183"+
		"\u0001\u0000\u0000\u0000\u1184\u1185\u0001\u0000\u0000\u0000\u1185\u01d3"+
		"\u0001\u0000\u0000\u0000\u1186\u118b\u0003\u01d2\u00e9\u0000\u1187\u1188"+
		"\u0005&\u0000\u0000\u1188\u118a\u0003\u01d2\u00e9\u0000\u1189\u1187\u0001"+
		"\u0000\u0000\u0000\u118a\u118d\u0001\u0000\u0000\u0000\u118b\u1189\u0001"+
		"\u0000\u0000\u0000\u118b\u118c\u0001\u0000\u0000\u0000\u118c\u01d5\u0001"+
		"\u0000\u0000\u0000\u118d\u118b\u0001\u0000\u0000\u0000\u118e\u118f\u0005"+
		"*\u0000\u0000\u118f\u01d7\u0001\u0000\u0000\u0000\u1190\u1191\u0007.\u0000"+
		"\u0000\u1191\u01d9\u0001\u0000\u0000\u0000\u1192\u119a\u0003\u01de\u00ef"+
		"\u0000\u1193\u119a\u0003\u01e0\u00f0\u0000\u1194\u119a\u0003\u01e2\u00f1"+
		"\u0000\u1195\u119a\u0003\u01e4\u00f2\u0000\u1196\u119a\u0003\u01e6\u00f3"+
		"\u0000\u1197\u119a\u0003\u01e8\u00f4\u0000\u1198\u119a\u0003\u01ea\u00f5"+
		"\u0000\u1199\u1192\u0001\u0000\u0000\u0000\u1199\u1193\u0001\u0000\u0000"+
		"\u0000\u1199\u1194\u0001\u0000\u0000\u0000\u1199\u1195\u0001\u0000\u0000"+
		"\u0000\u1199\u1196\u0001\u0000\u0000\u0000\u1199\u1197\u0001\u0000\u0000"+
		"\u0000\u1199\u1198\u0001\u0000\u0000\u0000\u119a\u01db\u0001\u0000\u0000"+
		"\u0000\u119b\u119c\u0007/\u0000\u0000\u119c\u01dd\u0001\u0000\u0000\u0000"+
		"\u119d\u119f\u00070\u0000\u0000\u119e\u119d\u0001\u0000\u0000\u0000\u119e"+
		"\u119f\u0001\u0000\u0000\u0000\u119f\u11a0\u0001\u0000\u0000\u0000\u11a0"+
		"\u11a3\u0003\u01dc\u00ee\u0000\u11a1\u11a3\u0005\u0320\u0000\u0000\u11a2"+
		"\u119e\u0001\u0000\u0000\u0000\u11a2\u11a1\u0001\u0000\u0000\u0000\u11a3"+
		"\u01df\u0001\u0000\u0000\u0000\u11a4\u11a6\u00071\u0000\u0000\u11a5\u11a4"+
		"\u0001\u0000\u0000\u0000\u11a5\u11a6\u0001\u0000\u0000\u0000\u11a6\u11a7"+
		"\u0001\u0000\u0000\u0000\u11a7\u11a8\u0005\u0322\u0000\u0000\u11a8\u01e1"+
		"\u0001\u0000\u0000\u0000\u11a9\u11aa\u00072\u0000\u0000\u11aa\u11ab\u0005"+
		"\u031e\u0000\u0000\u11ab\u01e3\u0001\u0000\u0000\u0000\u11ac\u11ae\u0005"+
		"\u0321\u0000\u0000\u11ad\u11ac\u0001\u0000\u0000\u0000\u11ad\u11ae\u0001"+
		"\u0000\u0000\u0000\u11ae\u11af\u0001\u0000\u0000\u0000\u11af\u11b1\u0005"+
		"\u0326\u0000\u0000\u11b0\u11b2\u0003\u031a\u018d\u0000\u11b1\u11b0\u0001"+
		"\u0000\u0000\u0000\u11b1\u11b2\u0001\u0000\u0000\u0000\u11b2\u01e5\u0001"+
		"\u0000\u0000\u0000\u11b3\u11b5\u0005\u0321\u0000\u0000\u11b4\u11b3\u0001"+
		"\u0000\u0000\u0000\u11b4\u11b5\u0001\u0000\u0000\u0000\u11b5\u11b6\u0001"+
		"\u0000\u0000\u0000\u11b6\u11b8\u0005\u0327\u0000\u0000\u11b7\u11b9\u0003"+
		"\u031a\u018d\u0000\u11b8\u11b7\u0001\u0000\u0000\u0000\u11b8\u11b9\u0001"+
		"\u0000\u0000\u0000\u11b9\u01e7\u0001\u0000\u0000\u0000\u11ba\u11bb\u0007"+
		"3\u0000\u0000\u11bb\u01e9\u0001\u0000\u0000\u0000\u11bc\u11bd\u0005\u01d1"+
		"\u0000\u0000\u11bd\u01eb\u0001\u0000\u0000\u0000\u11be\u11c1\u0003\u01fa"+
		"\u00fd\u0000\u11bf\u11c1\u0005k\u0000\u0000\u11c0\u11be\u0001\u0000\u0000"+
		"\u0000\u11c0\u11bf\u0001\u0000\u0000\u0000\u11c1\u01ed\u0001\u0000\u0000"+
		"\u0000\u11c2\u11cc\u0005\u0328\u0000\u0000\u11c3\u11cc\u0003\u01f0\u00f8"+
		"\u0000\u11c4\u11cc\u0003\u01f2\u00f9\u0000\u11c5\u11cc\u0003\u01f4\u00fa"+
		"\u0000\u11c6\u11cc\u0003\u01f6\u00fb\u0000\u11c7\u11cc\u0003\u01f8\u00fc"+
		"\u0000\u11c8\u11cc\u0003\u01d8\u00ec\u0000\u11c9\u11cc\u0005\u031f\u0000"+
		"\u0000\u11ca\u11cc\u0005\u0321\u0000\u0000\u11cb\u11c2\u0001\u0000\u0000"+
		"\u0000\u11cb\u11c3\u0001\u0000\u0000\u0000\u11cb\u11c4\u0001\u0000\u0000"+
		"\u0000\u11cb\u11c5\u0001\u0000\u0000\u0000\u11cb\u11c6\u0001\u0000\u0000"+
		"\u0000\u11cb\u11c7\u0001\u0000\u0000\u0000\u11cb\u11c8\u0001\u0000\u0000"+
		"\u0000\u11cb\u11c9\u0001\u0000\u0000\u0000\u11cb\u11ca\u0001\u0000\u0000"+
		"\u0000\u11cc\u01ef\u0001\u0000\u0000\u0000\u11cd\u11ce\u00074\u0000\u0000"+
		"\u11ce\u01f1\u0001\u0000\u0000\u0000\u11cf\u11d0\u00075\u0000\u0000\u11d0"+
		"\u01f3\u0001\u0000\u0000\u0000\u11d1\u11d2\u00076\u0000\u0000\u11d2\u01f5"+
		"\u0001\u0000\u0000\u0000\u11d3\u11d4\u00077\u0000\u0000\u11d4\u01f7\u0001"+
		"\u0000\u0000\u0000\u11d5\u11d6\u00078\u0000\u0000\u11d6\u01f9\u0001\u0000"+
		"\u0000\u0000\u11d7\u11da\u0003\u01ee\u00f7\u0000\u11d8\u11da\u0003\u01dc"+
		"\u00ee\u0000\u11d9\u11d7\u0001\u0000\u0000\u0000\u11d9\u11d8\u0001\u0000"+
		"\u0000\u0000\u11da\u01fb\u0001\u0000\u0000\u0000\u11db\u11de\u0003\u01fe"+
		"\u00ff\u0000\u11dc\u11de\u0003\u0200\u0100\u0000\u11dd\u11db\u0001\u0000"+
		"\u0000\u0000\u11dd\u11dc\u0001\u0000\u0000\u0000\u11de\u01fd\u0001\u0000"+
		"\u0000\u0000\u11df\u11e0\u0005+\u0000\u0000\u11e0\u11e3\u0003\u01fa\u00fd"+
		"\u0000\u11e1\u11e3\u0003\u01fa\u00fd\u0000\u11e2\u11df\u0001\u0000\u0000"+
		"\u0000\u11e2\u11e1\u0001\u0000\u0000\u0000\u11e3\u01ff\u0001\u0000\u0000"+
		"\u0000\u11e4\u11e5\u0005+\u0000\u0000\u11e5\u11e7\u0005+\u0000\u0000\u11e6"+
		"\u11e8\u00079\u0000\u0000\u11e7\u11e6\u0001\u0000\u0000\u0000\u11e7\u11e8"+
		"\u0001\u0000\u0000\u0000\u11e8\u11e9\u0001\u0000\u0000\u0000\u11e9\u11ec"+
		"\u0003\u01fa\u00fd\u0000\u11ea\u11eb\u0005\u0015\u0000\u0000\u11eb\u11ed"+
		"\u0003\u01ee\u00f7\u0000\u11ec\u11ea\u0001\u0000\u0000\u0000\u11ec\u11ed"+
		"\u0001\u0000\u0000\u0000\u11ed\u0201\u0001\u0000\u0000\u0000\u11ee\u11ef"+
		"\u0005+\u0000\u0000\u11ef\u11f3\u0005+\u0000\u0000\u11f0\u11f1\u0003\u0204"+
		"\u0102\u0000\u11f1\u11f2\u0005\u0015\u0000\u0000\u11f2\u11f4\u0001\u0000"+
		"\u0000\u0000\u11f3\u11f0\u0001\u0000\u0000\u0000\u11f3\u11f4\u0001\u0000"+
		"\u0000\u0000\u11f4\u11f5\u0001\u0000\u0000\u0000\u11f5\u11f6\u0003\u0206"+
		"\u0103\u0000\u11f6\u0203\u0001\u0000\u0000\u0000\u11f7\u11f8\u00078\u0000"+
		"\u0000\u11f8\u0205\u0001\u0000\u0000\u0000\u11f9\u1202\u0003\u01ee\u00f7"+
		"\u0000\u11fa\u11fb\u0005\u00c2\u0000\u0000\u11fb\u11fc\u0005\u0015\u0000"+
		"\u0000\u11fc\u1202\u0003\u01ee\u00f7\u0000\u11fd\u11fe\u0003\u01ee\u00f7"+
		"\u0000\u11fe\u11ff\u0005\u0015\u0000\u0000\u11ff\u1200\u0003\u01ee\u00f7"+
		"\u0000\u1200\u1202\u0001\u0000\u0000\u0000\u1201\u11f9\u0001\u0000\u0000"+
		"\u0000\u1201\u11fa\u0001\u0000\u0000\u0000\u1201\u11fd\u0001\u0000\u0000"+
		"\u0000\u1202\u0207\u0001\u0000\u0000\u0000\u1203\u120b\u0003\u0270\u0138"+
		"\u0000\u1204\u120b\u0005\u00c2\u0000\u0000\u1205\u120b\u0005T\u0000\u0000"+
		"\u1206\u120b\u0005\u01db\u0000\u0000\u1207\u120b\u0005k\u0000\u0000\u1208"+
		"\u120b\u0005\u0257\u0000\u0000\u1209\u120b\u0005\u02a8\u0000\u0000\u120a"+
		"\u1203\u0001\u0000\u0000\u0000\u120a\u1204\u0001\u0000\u0000\u0000\u120a"+
		"\u1205\u0001\u0000\u0000\u0000\u120a\u1206\u0001\u0000\u0000\u0000\u120a"+
		"\u1207\u0001\u0000\u0000\u0000\u120a\u1208\u0001\u0000\u0000\u0000\u120a"+
		"\u1209\u0001\u0000\u0000\u0000\u120b\u0209\u0001\u0000\u0000\u0000\u120c"+
		"\u120f\u0003\u0210\u0108\u0000\u120d\u120e\u0005&\u0000\u0000\u120e\u1210"+
		"\u0003\u020c\u0106\u0000\u120f\u120d\u0001\u0000\u0000\u0000\u120f\u1210"+
		"\u0001\u0000\u0000\u0000\u1210\u1217\u0001\u0000\u0000\u0000\u1211\u1214"+
		"\u0003\u020c\u0106\u0000\u1212\u1213\u0005&\u0000\u0000\u1213\u1215\u0003"+
		"\u0210\u0108\u0000\u1214\u1212\u0001\u0000\u0000\u0000\u1214\u1215\u0001"+
		"\u0000\u0000\u0000\u1215\u1217\u0001\u0000\u0000\u0000\u1216\u120c\u0001"+
		"\u0000\u0000\u0000\u1216\u1211\u0001\u0000\u0000\u0000\u1217\u020b\u0001"+
		"\u0000\u0000\u0000\u1218\u1219\u0005\u0155\u0000\u0000\u1219\u121a\u0005"+
		"\u016b\u0000\u0000\u121a\u121b\u0003\u020e\u0107\u0000\u121b\u020d\u0001"+
		"\u0000\u0000\u0000\u121c\u121d\u0005\u0232\u0000\u0000\u121d\u1224\u0005"+
		"\u0219\u0000\u0000\u121e\u121f\u0005\u0219\u0000\u0000\u121f\u1224\u0005"+
		"\u0095\u0000\u0000\u1220\u1221\u0005\u0219\u0000\u0000\u1221\u1224\u0005"+
		"\u02c8\u0000\u0000\u1222\u1224\u0005\u026e\u0000\u0000\u1223\u121c\u0001"+
		"\u0000\u0000\u0000\u1223\u121e\u0001\u0000\u0000\u0000\u1223\u1220\u0001"+
		"\u0000\u0000\u0000\u1223\u1222\u0001\u0000\u0000\u0000\u1224\u020f\u0001"+
		"\u0000\u0000\u0000\u1225\u1226\u0005\u0219\u0000\u0000\u1226\u1227\u0007"+
		":\u0000\u0000\u1227\u0211\u0001\u0000\u0000\u0000\u1228\u1229\u0003\u01ee"+
		"\u00f7\u0000\u1229\u0213\u0001\u0000\u0000\u0000\u122a\u122f\u0003\u0212"+
		"\u0109\u0000\u122b\u122c\u0005&\u0000\u0000\u122c\u122e\u0003\u0212\u0109"+
		"\u0000\u122d\u122b\u0001\u0000\u0000\u0000\u122e\u1231\u0001\u0000\u0000"+
		"\u0000\u122f\u122d\u0001\u0000\u0000\u0000\u122f\u1230\u0001\u0000\u0000"+
		"\u0000\u1230\u0215\u0001\u0000\u0000\u0000\u1231\u122f\u0001\u0000\u0000"+
		"\u0000\u1232\u1236\u0003\u01fa\u00fd\u0000\u1233\u1236\u0005k\u0000\u0000"+
		"\u1234\u1236\u0005\u00c2\u0000\u0000\u1235\u1232\u0001\u0000\u0000\u0000"+
		"\u1235\u1233\u0001\u0000\u0000\u0000\u1235\u1234\u0001\u0000\u0000\u0000"+
		"\u1236\u0217\u0001\u0000\u0000\u0000\u1237\u123c\u0003\u021a\u010d\u0000"+
		"\u1238\u1239\u0005&\u0000\u0000\u1239\u123b\u0003\u021a\u010d\u0000\u123a"+
		"\u1238\u0001\u0000\u0000\u0000\u123b\u123e\u0001\u0000\u0000\u0000\u123c"+
		"\u123a\u0001\u0000\u0000\u0000\u123c\u123d\u0001\u0000\u0000\u0000\u123d"+
		"\u0219\u0001\u0000\u0000\u0000\u123e\u123c\u0001\u0000\u0000\u0000\u123f"+
		"\u1240\u0005 \u0000\u0000\u1240\u1241\u0003\u0212\u0109\u0000\u1241\u1242"+
		"\u0005&\u0000\u0000\u1242\u1243\u0003\u0212\u0109\u0000\u1243\u1244\u0005"+
		"!\u0000\u0000\u1244\u021b\u0001\u0000\u0000\u0000\u1245\u1246\u0003\u0236"+
		"\u011b\u0000\u1246\u1247\u0005\u0015\u0000\u0000\u1247\u1249\u0001\u0000"+
		"\u0000\u0000\u1248\u1245\u0001\u0000\u0000\u0000\u1248\u1249\u0001\u0000"+
		"\u0000\u0000\u1249\u124a\u0001\u0000\u0000\u0000\u124a\u124b\u0003\u023a"+
		"\u011d\u0000\u124b\u021d\u0001\u0000\u0000\u0000\u124c\u124d\u0003\u01ee"+
		"\u00f7\u0000\u124d\u021f\u0001\u0000\u0000\u0000\u124e\u124f\u0003\u01ee"+
		"\u00f7\u0000\u124f\u0221\u0001\u0000\u0000\u0000\u1250\u1251\u0003\u01ee"+
		"\u00f7\u0000\u1251\u0223\u0001\u0000\u0000\u0000\u1252\u125b\u0003\u01fa"+
		"\u00fd\u0000\u1253\u1254\u0005\u0014\u0000\u0000\u1254\u1257\t\u0000\u0000"+
		"\u0000\u1255\u1257\b;\u0000\u0000\u1256\u1253\u0001\u0000\u0000\u0000"+
		"\u1256\u1255\u0001\u0000\u0000\u0000\u1257\u1258\u0001\u0000\u0000\u0000"+
		"\u1258\u1256\u0001\u0000\u0000\u0000\u1258\u1259\u0001\u0000\u0000\u0000"+
		"\u1259\u125b\u0001\u0000\u0000\u0000\u125a\u1252\u0001\u0000\u0000\u0000"+
		"\u125a\u1256\u0001\u0000\u0000\u0000\u125b\u0225\u0001\u0000\u0000\u0000"+
		"\u125c\u125f\u0003\u01fa\u00fd\u0000\u125d\u125e\u0005+\u0000\u0000\u125e"+
		"\u1260\u0003\u01fa\u00fd\u0000\u125f\u125d\u0001\u0000\u0000\u0000\u125f"+
		"\u1260\u0001\u0000\u0000\u0000\u1260\u0227\u0001\u0000\u0000\u0000\u1261"+
		"\u1268\u0003\u0226\u0113\u0000\u1262\u1265\u0005\u00b0\u0000\u0000\u1263"+
		"\u1264\u0005 \u0000\u0000\u1264\u1266\u0005!\u0000\u0000\u1265\u1263\u0001"+
		"\u0000\u0000\u0000\u1265\u1266\u0001\u0000\u0000\u0000\u1266\u1268\u0001"+
		"\u0000\u0000\u0000\u1267\u1261\u0001\u0000\u0000\u0000\u1267\u1262\u0001"+
		"\u0000\u0000\u0000\u1268\u0229\u0001\u0000\u0000\u0000\u1269\u126a\u0003"+
		"\u0236\u011b\u0000\u126a\u126b\u0005\u0015\u0000\u0000\u126b\u126d\u0001"+
		"\u0000\u0000\u0000\u126c\u1269\u0001\u0000\u0000\u0000\u126c\u126d\u0001"+
		"\u0000\u0000\u0000\u126d\u126e\u0001\u0000\u0000\u0000\u126e\u126f\u0003"+
		"\u01ee\u00f7\u0000\u126f\u022b\u0001\u0000\u0000\u0000\u1270\u1271\u0003"+
		"\u01fa\u00fd\u0000\u1271\u022d\u0001\u0000\u0000\u0000\u1272\u1273\u0003"+
		"\u01fa\u00fd\u0000\u1273\u022f\u0001\u0000\u0000\u0000\u1274\u1275\u0003"+
		"\u0236\u011b\u0000\u1275\u1276\u0005\u0015\u0000\u0000\u1276\u1278\u0001"+
		"\u0000\u0000\u0000\u1277\u1274\u0001\u0000\u0000\u0000\u1277\u1278\u0001"+
		"\u0000\u0000\u0000\u1278\u1279\u0001\u0000\u0000\u0000\u1279\u127a\u0003"+
		"\u01ee\u00f7\u0000\u127a\u0231\u0001\u0000\u0000\u0000\u127b\u127c\u0003"+
		"\u0236\u011b\u0000\u127c\u127d\u0005\u0015\u0000\u0000\u127d\u127f\u0001"+
		"\u0000\u0000\u0000\u127e\u127b\u0001\u0000\u0000\u0000\u127e\u127f\u0001"+
		"\u0000\u0000\u0000\u127f\u1280\u0001\u0000\u0000\u0000\u1280\u1281\u0003"+
		"\u01ee\u00f7\u0000\u1281\u0233\u0001\u0000\u0000\u0000\u1282\u1283\u0003"+
		"\u0236\u011b\u0000\u1283\u1284\u0005\u0015\u0000\u0000\u1284\u1286\u0001"+
		"\u0000\u0000\u0000\u1285\u1282\u0001\u0000\u0000\u0000\u1285\u1286\u0001"+
		"\u0000\u0000\u0000\u1286\u1287\u0001\u0000\u0000\u0000\u1287\u1288\u0003"+
		"\u01ee\u00f7\u0000\u1288\u0235\u0001\u0000\u0000\u0000\u1289\u128a\u0003"+
		"\u01ee\u00f7\u0000\u128a\u0237\u0001\u0000\u0000\u0000\u128b\u128c\u0003"+
		"\u01fa\u00fd\u0000\u128c\u0239\u0001\u0000\u0000\u0000\u128d\u128e\u0003"+
		"\u01ee\u00f7\u0000\u128e\u023b\u0001\u0000\u0000\u0000\u128f\u1294\u0003"+
		"\u021c\u010e\u0000\u1290\u1291\u0005&\u0000\u0000\u1291\u1293\u0003\u021c"+
		"\u010e\u0000\u1292\u1290\u0001\u0000\u0000\u0000\u1293\u1296\u0001\u0000"+
		"\u0000\u0000\u1294\u1292\u0001\u0000\u0000\u0000\u1294\u1295\u0001\u0000"+
		"\u0000\u0000\u1295\u023d\u0001\u0000\u0000\u0000\u1296\u1294\u0001\u0000"+
		"\u0000\u0000\u1297\u129c\u0003\u0234\u011a\u0000\u1298\u1299\u0005&\u0000"+
		"\u0000\u1299\u129b\u0003\u0234\u011a\u0000\u129a\u1298\u0001\u0000\u0000"+
		"\u0000\u129b\u129e\u0001\u0000\u0000\u0000\u129c\u129a\u0001\u0000\u0000"+
		"\u0000\u129c\u129d\u0001\u0000\u0000\u0000\u129d\u023f\u0001\u0000\u0000"+
		"\u0000\u129e\u129c\u0001\u0000\u0000\u0000\u129f\u12a4\u0003\u021e\u010f"+
		"\u0000\u12a0\u12a1\u0005&\u0000\u0000\u12a1\u12a3\u0003\u021e\u010f\u0000"+
		"\u12a2\u12a0\u0001\u0000\u0000\u0000\u12a3\u12a6\u0001\u0000\u0000\u0000"+
		"\u12a4\u12a2\u0001\u0000\u0000\u0000\u12a4\u12a5\u0001\u0000\u0000\u0000"+
		"\u12a5\u0241\u0001\u0000\u0000\u0000\u12a6\u12a4\u0001\u0000\u0000\u0000"+
		"\u12a7\u12a8\u0003\u01ee\u00f7\u0000\u12a8\u0243\u0001\u0000\u0000\u0000"+
		"\u12a9\u12aa\u0003\u01ee\u00f7\u0000\u12aa\u0245\u0001\u0000\u0000\u0000"+
		"\u12ab\u12ac\u0003\u01de\u00ef\u0000\u12ac\u0247\u0001\u0000\u0000\u0000"+
		"\u12ad\u12ae\u0003\u01dc\u00ee\u0000\u12ae\u0249\u0001\u0000\u0000\u0000"+
		"\u12af\u12b0\u0003\u01ee\u00f7\u0000\u12b0\u024b\u0001\u0000\u0000\u0000"+
		"\u12b1\u12b2\u0003\u01dc\u00ee\u0000\u12b2\u024d\u0001\u0000\u0000\u0000"+
		"\u12b3\u12b4\u0005\u0322\u0000\u0000\u12b4\u024f\u0001\u0000\u0000\u0000"+
		"\u12b5\u12b6\u0003\u0228\u0114\u0000\u12b6\u12b7\u0005+\u0000\u0000\u12b7"+
		"\u12b8\u0003\u024c\u0126\u0000\u12b8\u12b9\u0005\u000f\u0000\u0000\u12b9"+
		"\u12ba\u0003\u024e\u0127\u0000\u12ba\u0251\u0001\u0000\u0000\u0000\u12bb"+
		"\u12bc\u0003\u01dc\u00ee\u0000\u12bc\u0253\u0001\u0000\u0000\u0000\u12bd"+
		"\u12c0\u0003\u01ee\u00f7\u0000\u12be\u12bf\u0005\u0015\u0000\u0000\u12bf"+
		"\u12c1\u0003\u01ee\u00f7\u0000\u12c0\u12be\u0001\u0000\u0000\u0000\u12c0"+
		"\u12c1\u0001\u0000\u0000\u0000\u12c1\u0255\u0001\u0000\u0000\u0000\u12c2"+
		"\u12c3\u0003\u01de\u00ef\u0000\u12c3\u0257\u0001\u0000\u0000\u0000\u12c4"+
		"\u12c7\u0003\u025a\u012d\u0000\u12c5\u12c6\u0005+\u0000\u0000\u12c6\u12c8"+
		"\u0003\u01fa\u00fd\u0000\u12c7\u12c5\u0001\u0000\u0000\u0000\u12c7\u12c8"+
		"\u0001\u0000\u0000\u0000\u12c8\u0259\u0001\u0000\u0000\u0000\u12c9\u12cc"+
		"\u0003\u01ee\u00f7\u0000\u12ca\u12cc\u0003\u01dc\u00ee\u0000\u12cb\u12c9"+
		"\u0001\u0000\u0000\u0000\u12cb\u12ca\u0001\u0000\u0000\u0000\u12cc\u025b"+
		"\u0001\u0000\u0000\u0000\u12cd\u12ce\u0003\u01fa\u00fd\u0000\u12ce\u025d"+
		"\u0001\u0000\u0000\u0000\u12cf\u12d2\u0003\u01ee\u00f7\u0000\u12d0\u12d1"+
		"\u0005\u0015\u0000\u0000\u12d1\u12d3\u0003\u01ee\u00f7\u0000\u12d2\u12d0"+
		"\u0001\u0000\u0000\u0000\u12d2\u12d3\u0001\u0000\u0000\u0000\u12d3\u025f"+
		"\u0001\u0000\u0000\u0000\u12d4\u12d5\u0007<\u0000\u0000\u12d5\u0261\u0001"+
		"\u0000\u0000\u0000\u12d6\u12d7\u0007=\u0000\u0000\u12d7\u0263\u0001\u0000"+
		"\u0000\u0000\u12d8\u12db\u0003\u0228\u0114\u0000\u12d9\u12db\u0003\u0258"+
		"\u012c\u0000\u12da\u12d8\u0001\u0000\u0000\u0000\u12da\u12d9\u0001\u0000"+
		"\u0000\u0000\u12db\u0265\u0001\u0000\u0000\u0000\u12dc\u12dd\u0003\u01ee"+
		"\u00f7\u0000\u12dd\u0267\u0001\u0000\u0000\u0000\u12de\u12e3\u0003\u01ee"+
		"\u00f7\u0000\u12df\u12e0\u0005&\u0000\u0000\u12e0\u12e2\u0003\u01ee\u00f7"+
		"\u0000\u12e1\u12df\u0001\u0000\u0000\u0000\u12e2\u12e5\u0001\u0000\u0000"+
		"\u0000\u12e3\u12e1\u0001\u0000\u0000\u0000\u12e3\u12e4\u0001\u0000\u0000"+
		"\u0000\u12e4\u0269\u0001\u0000\u0000\u0000\u12e5\u12e3\u0001\u0000\u0000"+
		"\u0000\u12e6\u12e9\u0005T\u0000\u0000\u12e7\u12e9\u0003\u0268\u0134\u0000"+
		"\u12e8\u12e6\u0001\u0000\u0000\u0000\u12e8\u12e7\u0001\u0000\u0000\u0000"+
		"\u12e9\u026b\u0001\u0000\u0000\u0000\u12ea\u12eb\u0007>\u0000\u0000\u12eb"+
		"\u026d\u0001\u0000\u0000\u0000\u12ec\u12ed\u0007?\u0000\u0000\u12ed\u12ee"+
		"\u0003\u025e\u012f\u0000\u12ee\u026f\u0001\u0000\u0000\u0000\u12ef\u12f0"+
		"\u0006\u0138\uffff\uffff\u0000\u12f0\u12f5\u0003\u0278\u013c\u0000\u12f1"+
		"\u12f2\u0003\u0276\u013b\u0000\u12f2\u12f3\u0003\u0270\u0138\u0001\u12f3"+
		"\u12f5\u0001\u0000\u0000\u0000\u12f4\u12ef\u0001\u0000\u0000\u0000\u12f4"+
		"\u12f1\u0001\u0000\u0000\u0000\u12f5\u1303\u0001\u0000\u0000\u0000\u12f6"+
		"\u12f7\n\u0004\u0000\u0000\u12f7\u12f8\u0003\u0272\u0139\u0000\u12f8\u12f9"+
		"\u0003\u0270\u0138\u0005\u12f9\u1302\u0001\u0000\u0000\u0000\u12fa\u12fb"+
		"\n\u0003\u0000\u0000\u12fb\u12fc\u0003\u0274\u013a\u0000\u12fc\u12fd\u0003"+
		"\u0270\u0138\u0004\u12fd\u1302\u0001\u0000\u0000\u0000\u12fe\u12ff\n\u0002"+
		"\u0000\u0000\u12ff\u1300\u0005\u02fd\u0000\u0000\u1300\u1302\u0003\u0270"+
		"\u0138\u0003\u1301\u12f6\u0001\u0000\u0000\u0000\u1301\u12fa\u0001\u0000"+
		"\u0000\u0000\u1301\u12fe\u0001\u0000\u0000\u0000\u1302\u1305\u0001\u0000"+
		"\u0000\u0000\u1303\u1301\u0001\u0000\u0000\u0000\u1303\u1304\u0001\u0000"+
		"\u0000\u0000\u1304\u0271\u0001\u0000\u0000\u0000\u1305\u1303\u0001\u0000"+
		"\u0000\u0000\u1306\u1307\u0007@\u0000\u0000\u1307\u0273\u0001\u0000\u0000"+
		"\u0000\u1308\u1309\u0007A\u0000\u0000\u1309\u0275\u0001\u0000\u0000\u0000"+
		"\u130a\u130b\u0007B\u0000\u0000\u130b\u0277\u0001\u0000\u0000\u0000\u130c"+
		"\u130d\u0006\u013c\uffff\uffff\u0000\u130d\u130e\u0003\u027e\u013f\u0000"+
		"\u130e\u1327\u0001\u0000\u0000\u0000\u130f\u1310\n\u0006\u0000\u0000\u1310"+
		"\u1312\u0005\u0154\u0000\u0000\u1311\u1313\u0005\u01cb\u0000\u0000\u1312"+
		"\u1311\u0001\u0000\u0000\u0000\u1312\u1313\u0001\u0000\u0000\u0000\u1313"+
		"\u1314\u0001\u0000\u0000\u0000\u1314\u1326\u0007C\u0000\u0000\u1315\u1316"+
		"\n\u0005\u0000\u0000\u1316\u1317\u0005\u0017\u0000\u0000\u1317\u1326\u0003"+
		"\u027e\u013f\u0000\u1318\u1319\n\u0004\u0000\u0000\u1319\u131a\u0003\u027c"+
		"\u013e\u0000\u131a\u131b\u0003\u027e\u013f\u0000\u131b\u1326\u0001\u0000"+
		"\u0000\u0000\u131c\u131d\n\u0003\u0000\u0000\u131d\u131e\u0003\u027c\u013e"+
		"\u0000\u131e\u131f\u0007D\u0000\u0000\u131f\u1320\u0003\u01c0\u00e0\u0000"+
		"\u1320\u1326\u0001\u0000\u0000\u0000\u1321\u1322\n\u0002\u0000\u0000\u1322"+
		"\u1323\u0003\u027a\u013d\u0000\u1323\u1324\u0003\u027e\u013f\u0000\u1324"+
		"\u1326\u0001\u0000\u0000\u0000\u1325\u130f\u0001\u0000\u0000\u0000\u1325"+
		"\u1315\u0001\u0000\u0000\u0000\u1325\u1318\u0001\u0000\u0000\u0000\u1325"+
		"\u131c\u0001\u0000\u0000\u0000\u1325\u1321\u0001\u0000\u0000\u0000\u1326"+
		"\u1329\u0001\u0000\u0000\u0000\u1327\u1325\u0001\u0000\u0000\u0000\u1327"+
		"\u1328\u0001\u0000\u0000\u0000\u1328\u0279\u0001\u0000\u0000\u0000\u1329"+
		"\u1327\u0001\u0000\u0000\u0000\u132a\u132b\u0007E\u0000\u0000\u132b\u027b"+
		"\u0001\u0000\u0000\u0000\u132c\u132d\u0007F\u0000\u0000\u132d\u027d\u0001"+
		"\u0000\u0000\u0000\u132e\u1330\u0003\u0280\u0140\u0000\u132f\u1331\u0005"+
		"\u01cb\u0000\u0000\u1330\u132f\u0001\u0000\u0000\u0000\u1330\u1331\u0001"+
		"\u0000\u0000\u0000\u1331\u1332\u0001\u0000\u0000\u0000\u1332\u1333\u0005"+
		"\u0138\u0000\u0000\u1333\u1334\u0003\u01c0\u00e0\u0000\u1334\u1366\u0001"+
		"\u0000\u0000\u0000\u1335\u1337\u0003\u0280\u0140\u0000\u1336\u1338\u0005"+
		"\u01cb\u0000\u0000\u1337\u1336\u0001\u0000\u0000\u0000\u1337\u1338\u0001"+
		"\u0000\u0000\u0000\u1338\u1339\u0001\u0000\u0000\u0000\u1339\u133a\u0005"+
		"\u0138\u0000\u0000\u133a\u133b\u0005 \u0000\u0000\u133b\u1340\u0003\u0270"+
		"\u0138\u0000\u133c\u133d\u0005&\u0000\u0000\u133d\u133f\u0003\u0270\u0138"+
		"\u0000\u133e\u133c\u0001\u0000\u0000\u0000\u133f\u1342\u0001\u0000\u0000"+
		"\u0000\u1340\u133e\u0001\u0000\u0000\u0000\u1340\u1341\u0001\u0000\u0000"+
		"\u0000\u1341\u1343\u0001\u0000\u0000\u0000\u1342\u1340\u0001\u0000\u0000"+
		"\u0000\u1343\u1344\u0005!\u0000\u0000\u1344\u1366\u0001\u0000\u0000\u0000"+
		"\u1345\u1347\u0003\u0280\u0140\u0000\u1346\u1348\u0005\u01cb\u0000\u0000"+
		"\u1347\u1346\u0001\u0000\u0000\u0000\u1347\u1348\u0001\u0000\u0000\u0000"+
		"\u1348\u1349\u0001\u0000\u0000\u0000\u1349\u134a\u0005i\u0000\u0000\u134a"+
		"\u134b\u0003\u0280\u0140\u0000\u134b\u134c\u0005X\u0000\u0000\u134c\u134d"+
		"\u0003\u027e\u013f\u0000\u134d\u1366\u0001\u0000\u0000\u0000\u134e\u134f"+
		"\u0003\u0280\u0140\u0000\u134f\u1350\u0005\u027f\u0000\u0000\u1350\u1351"+
		"\u0005\u016c\u0000\u0000\u1351\u1352\u0003\u0280\u0140\u0000\u1352\u1366"+
		"\u0001\u0000\u0000\u0000\u1353\u1355\u0003\u0280\u0140\u0000\u1354\u1356"+
		"\u0005\u01cb\u0000\u0000\u1355\u1354\u0001\u0000\u0000\u0000\u1355\u1356"+
		"\u0001\u0000\u0000\u0000\u1356\u1357\u0001\u0000\u0000\u0000\u1357\u1358"+
		"\u0005\u016c\u0000\u0000\u1358\u135b\u0003\u0282\u0141\u0000\u1359\u135a"+
		"\u0005\u00ed\u0000\u0000\u135a\u135c\u0003\u0282\u0141\u0000\u135b\u1359"+
		"\u0001\u0000\u0000\u0000\u135b\u135c\u0001\u0000\u0000\u0000\u135c\u1366"+
		"\u0001\u0000\u0000\u0000\u135d\u135f\u0003\u0280\u0140\u0000\u135e\u1360"+
		"\u0005\u01cb\u0000\u0000\u135f\u135e\u0001\u0000\u0000\u0000\u135f\u1360"+
		"\u0001\u0000\u0000\u0000\u1360\u1361\u0001\u0000\u0000\u0000\u1361\u1362"+
		"\u0005\u0225\u0000\u0000\u1362\u1363\u0003\u0280\u0140\u0000\u1363\u1366"+
		"\u0001\u0000\u0000\u0000\u1364\u1366\u0003\u0280\u0140\u0000\u1365\u132e"+
		"\u0001\u0000\u0000\u0000\u1365\u1335\u0001\u0000\u0000\u0000\u1365\u1345"+
		"\u0001\u0000\u0000\u0000\u1365\u134e\u0001\u0000\u0000\u0000\u1365\u1353"+
		"\u0001\u0000\u0000\u0000\u1365\u135d\u0001\u0000\u0000\u0000\u1365\u1364"+
		"\u0001\u0000\u0000\u0000\u1366\u027f\u0001\u0000\u0000\u0000\u1367\u1368"+
		"\u0006\u0140\uffff\uffff\u0000\u1368\u1369\u0003\u0282\u0141\u0000\u1369"+
		"\u1396\u0001\u0000\u0000\u0000\u136a\u136b\n\u000f\u0000\u0000\u136b\u136c"+
		"\u0005\t\u0000\u0000\u136c\u1395\u0003\u0280\u0140\u0010\u136d\u136e\n"+
		"\u000e\u0000\u0000\u136e\u136f\u0005\n\u0000\u0000\u136f\u1395\u0003\u0280"+
		"\u0140\u000f\u1370\u1371\n\r\u0000\u0000\u1371\u1372\u0005\u000b\u0000"+
		"\u0000\u1372\u1395\u0003\u0280\u0140\u000e\u1373\u1374\n\f\u0000\u0000"+
		"\u1374\u1375\u0005\f\u0000\u0000\u1375\u1395\u0003\u0280\u0140\r\u1376"+
		"\u1377\n\u000b\u0000\u0000\u1377\u1378\u0005\u0010\u0000\u0000\u1378\u1395"+
		"\u0003\u0280\u0140\f\u1379\u137a\n\n\u0000\u0000\u137a\u137b\u0005\u0011"+
		"\u0000\u0000\u137b\u1395\u0003\u0280\u0140\u000b\u137c\u137d\n\t\u0000"+
		"\u0000\u137d\u137e\u0005\u0012\u0000\u0000\u137e\u1395\u0003\u0280\u0140"+
		"\n\u137f\u1380\n\b\u0000\u0000\u1380\u1381\u0005\u0013\u0000\u0000\u1381"+
		"\u1395\u0003\u0280\u0140\t\u1382\u1383\n\u0007\u0000\u0000\u1383\u1384"+
		"\u0005\u00d5\u0000\u0000\u1384\u1395\u0003\u0280\u0140\b\u1385\u1386\n"+
		"\u0006\u0000\u0000\u1386\u1387\u0005\u01b3\u0000\u0000\u1387\u1395\u0003"+
		"\u0280\u0140\u0007\u1388\u1389\n\u0005\u0000\u0000\u1389\u138a\u0005\u000e"+
		"\u0000\u0000\u138a\u1395\u0003\u0280\u0140\u0006\u138b\u138c\n\u0004\u0000"+
		"\u0000\u138c\u138d\u0005\r\u0000\u0000\u138d\u1395\u0003\u0280\u0140\u0005"+
		"\u138e\u138f\n\u0003\u0000\u0000\u138f\u1390\u0005\u0010\u0000\u0000\u1390"+
		"\u1395\u0003\u02e6\u0173\u0000\u1391\u1392\n\u0002\u0000\u0000\u1392\u1393"+
		"\u0005\u0011\u0000\u0000\u1393\u1395\u0003\u02e6\u0173\u0000\u1394\u136a"+
		"\u0001\u0000\u0000\u0000\u1394\u136d\u0001\u0000\u0000\u0000\u1394\u1370"+
		"\u0001\u0000\u0000\u0000\u1394\u1373\u0001\u0000\u0000\u0000\u1394\u1376"+
		"\u0001\u0000\u0000\u0000\u1394\u1379\u0001\u0000\u0000\u0000\u1394\u137c"+
		"\u0001\u0000\u0000\u0000\u1394\u137f\u0001\u0000\u0000\u0000\u1394\u1382"+
		"\u0001\u0000\u0000\u0000\u1394\u1385\u0001\u0000\u0000\u0000\u1394\u1388"+
		"\u0001\u0000\u0000\u0000\u1394\u138b\u0001\u0000\u0000\u0000\u1394\u138e"+
		"\u0001\u0000\u0000\u0000\u1394\u1391\u0001\u0000\u0000\u0000\u1395\u1398"+
		"\u0001\u0000\u0000\u0000\u1396\u1394\u0001\u0000\u0000\u0000\u1396\u1397"+
		"\u0001\u0000\u0000\u0000\u1397\u0281\u0001\u0000\u0000\u0000\u1398\u1396"+
		"\u0001\u0000\u0000\u0000\u1399\u139a\u0006\u0141\uffff\uffff\u0000\u139a"+
		"\u13ce\u0003\u028c\u0146\u0000\u139b\u13ce\u0003\u01d6\u00eb\u0000\u139c"+
		"\u13ce\u0003\u01da\u00ed\u0000\u139d\u13ce\u0003\u0288\u0144\u0000\u139e"+
		"\u13ce\u0003\u01fc\u00fe\u0000\u139f\u13a5\u0005\u0010\u0000\u0000\u13a0"+
		"\u13a5\u0005\u0011\u0000\u0000\u13a1\u13a5\u0005\b\u0000\u0000\u13a2\u13a5"+
		"\u0003\u0276\u013b\u0000\u13a3\u13a5\u0005k\u0000\u0000\u13a4\u139f\u0001"+
		"\u0000\u0000\u0000\u13a4\u13a0\u0001\u0000\u0000\u0000\u13a4\u13a1\u0001"+
		"\u0000\u0000\u0000\u13a4\u13a2\u0001\u0000\u0000\u0000\u13a4\u13a3\u0001"+
		"\u0000\u0000\u0000\u13a5\u13a6\u0001\u0000\u0000\u0000\u13a6\u13ce\u0003"+
		"\u0282\u0141\t\u13a7\u13a9\u0005\u0257\u0000\u0000\u13a8\u13a7\u0001\u0000"+
		"\u0000\u0000\u13a8\u13a9\u0001\u0000\u0000\u0000\u13a9\u13aa\u0001\u0000"+
		"\u0000\u0000\u13aa\u13ab\u0005 \u0000\u0000\u13ab\u13b0\u0003\u0270\u0138"+
		"\u0000\u13ac\u13ad\u0005&\u0000\u0000\u13ad\u13af\u0003\u0270\u0138\u0000"+
		"\u13ae\u13ac\u0001\u0000\u0000\u0000\u13af\u13b2\u0001\u0000\u0000\u0000"+
		"\u13b0\u13ae\u0001\u0000\u0000\u0000\u13b0\u13b1\u0001\u0000\u0000\u0000"+
		"\u13b1\u13b3\u0001\u0000\u0000\u0000\u13b2\u13b0\u0001\u0000\u0000\u0000"+
		"\u13b3\u13b4\u0005!\u0000\u0000\u13b4\u13ce\u0001\u0000\u0000\u0000\u13b5"+
		"\u13b7\u0005\u00f6\u0000\u0000\u13b6\u13b5\u0001\u0000\u0000\u0000\u13b6"+
		"\u13b7\u0001\u0000\u0000\u0000\u13b7\u13b8\u0001\u0000\u0000\u0000\u13b8"+
		"\u13ce\u0003\u01c0\u00e0\u0000\u13b9\u13ba\u0005\"\u0000\u0000\u13ba\u13bb"+
		"\u0003\u01ee\u00f7\u0000\u13bb\u13bc\u0003\u0270\u0138\u0000\u13bc\u13bd"+
		"\u0005#\u0000\u0000\u13bd\u13ce\u0001\u0000\u0000\u0000\u13be\u13bf\u0003"+
		"\u01ee\u00f7\u0000\u13bf\u13c0\u0007G\u0000\u0000\u13c0\u13c1\u0003\u01dc"+
		"\u00ee\u0000\u13c1\u13ce\u0001\u0000\u0000\u0000\u13c2\u13c5\u0003\u0284"+
		"\u0142\u0000\u13c3\u13c4\u0005\u024b\u0000\u0000\u13c4\u13c6\u0003\u02f0"+
		"\u0178\u0000\u13c5\u13c3\u0001\u0000\u0000\u0000\u13c5\u13c6\u0001\u0000"+
		"\u0000\u0000\u13c6\u13c8\u0001\u0000\u0000\u0000\u13c7\u13c9\u0003\u0286"+
		"\u0143\u0000\u13c8\u13c7\u0001\u0000\u0000\u0000\u13c8\u13c9\u0001\u0000"+
		"\u0000\u0000\u13c9\u13ce\u0001\u0000\u0000\u0000\u13ca\u13ce\u0003\u02d8"+
		"\u016c\u0000\u13cb\u13ce\u0003\u02dc\u016e\u0000\u13cc\u13ce\u0003\u02e6"+
		"\u0173\u0000\u13cd\u1399\u0001\u0000\u0000\u0000\u13cd\u139b\u0001\u0000"+
		"\u0000\u0000\u13cd\u139c\u0001\u0000\u0000\u0000\u13cd\u139d\u0001\u0000"+
		"\u0000\u0000\u13cd\u139e\u0001\u0000\u0000\u0000\u13cd\u13a4\u0001\u0000"+
		"\u0000\u0000\u13cd\u13a8\u0001\u0000\u0000\u0000\u13cd\u13b6\u0001\u0000"+
		"\u0000\u0000\u13cd\u13b9\u0001\u0000\u0000\u0000\u13cd\u13be\u0001\u0000"+
		"\u0000\u0000\u13cd\u13c2\u0001\u0000\u0000\u0000\u13cd\u13ca\u0001\u0000"+
		"\u0000\u0000\u13cd\u13cb\u0001\u0000\u0000\u0000\u13cd\u13cc\u0001\u0000"+
		"\u0000\u0000\u13ce\u13d6\u0001\u0000\u0000\u0000\u13cf\u13d0\n\n\u0000"+
		"\u0000\u13d0\u13d1\u0005\u0006\u0000\u0000\u13d1\u13d5\u0003\u0282\u0141"+
		"\u000b\u13d2\u13d3\n\f\u0000\u0000\u13d3\u13d5\u0003\u031a\u018d\u0000"+
		"\u13d4\u13cf\u0001\u0000\u0000\u0000\u13d4\u13d2\u0001\u0000\u0000\u0000"+
		"\u13d5\u13d8\u0001\u0000\u0000\u0000\u13d6\u13d4\u0001\u0000\u0000\u0000"+
		"\u13d6\u13d7\u0001\u0000\u0000\u0000\u13d7\u0283\u0001\u0000\u0000\u0000"+
		"\u13d8\u13d6\u0001\u0000\u0000\u0000\u13d9\u13da\u0003\u01dc\u00ee\u0000"+
		"\u13da\u0285\u0001\u0000\u0000\u0000\u13db\u13e0\u0005\u01d1\u0000\u0000"+
		"\u13dc\u13e0\u0005\u00eb\u0000\u0000\u13dd\u13de\u0005\u00c2\u0000\u0000"+
		"\u13de\u13e0\u0003\u01da\u00ed\u0000\u13df\u13db\u0001\u0000\u0000\u0000"+
		"\u13df\u13dc\u0001\u0000\u0000\u0000\u13df\u13dd\u0001\u0000\u0000\u0000"+
		"\u13e0\u13e1\u0001\u0000\u0000\u0000\u13e1\u13e2\u0005\u01db\u0000\u0000"+
		"\u13e2\u13e3\u0007H\u0000\u0000\u13e3\u0287\u0001\u0000\u0000\u0000\u13e4"+
		"\u13e7\u0003\u01ee\u00f7\u0000\u13e5\u13e6\u0005\u0015\u0000\u0000\u13e6"+
		"\u13e8\u0003\u01ee\u00f7\u0000\u13e7\u13e5\u0001\u0000\u0000\u0000\u13e7"+
		"\u13e8\u0001\u0000\u0000\u0000\u13e8\u13eb\u0001\u0000\u0000\u0000\u13e9"+
		"\u13ea\u0005\u0015\u0000\u0000\u13ea\u13ec\u0003\u01ee\u00f7\u0000\u13eb"+
		"\u13e9\u0001\u0000\u0000\u0000\u13eb\u13ec\u0001\u0000\u0000\u0000\u13ec"+
		"\u0289\u0001\u0000\u0000\u0000\u13ed\u13f2\u0003\u0288\u0144\u0000\u13ee"+
		"\u13ef\u0005&\u0000\u0000\u13ef\u13f1\u0003\u0288\u0144\u0000\u13f0\u13ee"+
		"\u0001\u0000\u0000\u0000\u13f1\u13f4\u0001\u0000\u0000\u0000\u13f2\u13f0"+
		"\u0001\u0000\u0000\u0000\u13f2\u13f3\u0001\u0000\u0000\u0000\u13f3\u028b"+
		"\u0001\u0000\u0000\u0000\u13f4\u13f2\u0001\u0000\u0000\u0000\u13f5\u13fa"+
		"\u0003\u028e\u0147\u0000\u13f6\u13fa\u0003\u02a4\u0152\u0000\u13f7\u13fa"+
		"\u0003\u02d0\u0168\u0000\u13f8\u13fa\u0003\u0290\u0148\u0000\u13f9\u13f5"+
		"\u0001\u0000\u0000\u0000\u13f9\u13f6\u0001\u0000\u0000\u0000\u13f9\u13f7"+
		"\u0001\u0000\u0000\u0000\u13f9\u13f8\u0001\u0000\u0000\u0000\u13fa\u028d"+
		"\u0001\u0000\u0000\u0000\u13fb\u13fc\u0003\u0294\u014a\u0000\u13fc\u13fe"+
		"\u0005 \u0000\u0000\u13fd\u13ff\u0003\u0296\u014b\u0000\u13fe\u13fd\u0001"+
		"\u0000\u0000\u0000\u13fe\u13ff\u0001\u0000\u0000\u0000\u13ff\u1409\u0001"+
		"\u0000\u0000\u0000\u1400\u1405\u0003\u0270\u0138\u0000\u1401\u1402\u0005"+
		"&\u0000\u0000\u1402\u1404\u0003\u0270\u0138\u0000\u1403\u1401\u0001\u0000"+
		"\u0000\u0000\u1404\u1407\u0001\u0000\u0000\u0000\u1405\u1403\u0001\u0000"+
		"\u0000\u0000\u1405\u1406\u0001\u0000\u0000\u0000\u1406\u140a\u0001\u0000"+
		"\u0000\u0000\u1407\u1405\u0001\u0000\u0000\u0000\u1408\u140a\u0005\u0012"+
		"\u0000\u0000\u1409\u1400\u0001\u0000\u0000\u0000\u1409\u1408\u0001\u0000"+
		"\u0000\u0000\u1409\u140a\u0001\u0000\u0000\u0000\u140a\u140c\u0001\u0000"+
		"\u0000\u0000\u140b\u140d\u0003\u031a\u018d\u0000\u140c\u140b\u0001\u0000"+
		"\u0000\u0000\u140c\u140d\u0001\u0000\u0000\u0000\u140d\u140e\u0001\u0000"+
		"\u0000\u0000\u140e\u1410\u0005!\u0000\u0000\u140f\u1411\u0003\u0298\u014c"+
		"\u0000\u1410\u140f\u0001\u0000\u0000\u0000\u1410\u1411\u0001\u0000\u0000"+
		"\u0000\u1411\u028f\u0001\u0000\u0000\u0000\u1412\u1413\u0003\u0288\u0144"+
		"\u0000\u1413\u1414\u0007G\u0000\u0000\u1414\u1415\u0003\u0284\u0142\u0000"+
		"\u1415\u1428\u0001\u0000\u0000\u0000\u1416\u1417\u0003\u0292\u0149\u0000"+
		"\u1417\u1423\u0005 \u0000\u0000\u1418\u141a\u0003\u0270\u0138\u0000\u1419"+
		"\u1418\u0001\u0000\u0000\u0000\u1419\u141a\u0001\u0000\u0000\u0000\u141a"+
		"\u1424\u0001\u0000\u0000\u0000\u141b\u1420\u0003\u0270\u0138\u0000\u141c"+
		"\u141d\u0005&\u0000\u0000\u141d\u141f\u0003\u0270\u0138\u0000\u141e\u141c"+
		"\u0001\u0000\u0000\u0000\u141f\u1422\u0001\u0000\u0000\u0000\u1420\u141e"+
		"\u0001\u0000\u0000\u0000\u1420\u1421\u0001\u0000\u0000\u0000\u1421\u1424"+
		"\u0001\u0000\u0000\u0000\u1422\u1420\u0001\u0000\u0000\u0000\u1423\u1419"+
		"\u0001\u0000\u0000\u0000\u1423\u141b\u0001\u0000\u0000\u0000\u1424\u1425"+
		"\u0001\u0000\u0000\u0000\u1425\u1426\u0005!\u0000\u0000\u1426\u1428\u0001"+
		"\u0000\u0000\u0000\u1427\u1412\u0001\u0000\u0000\u0000\u1427\u1416\u0001"+
		"\u0000\u0000\u0000\u1428\u0291\u0001\u0000\u0000\u0000\u1429\u144a\u0005"+
		"\u0301\u0000\u0000\u142a\u144a\u0005\u0302\u0000\u0000\u142b\u144a\u0005"+
		"\u0303\u0000\u0000\u142c\u144a\u0005\u0304\u0000\u0000\u142d\u144a\u0005"+
		"\u0305\u0000\u0000\u142e\u144a\u0005\u0306\u0000\u0000\u142f\u144a\u0005"+
		"\u0307\u0000\u0000\u1430\u144a\u0005\u0308\u0000\u0000\u1431\u144a\u0005"+
		"\u0309\u0000\u0000\u1432\u144a\u0005\u030a\u0000\u0000\u1433\u144a\u0005"+
		"\u030b\u0000\u0000\u1434\u144a\u0005\u030c\u0000\u0000\u1435\u144a\u0005"+
		"\u030d\u0000\u0000\u1436\u144a\u0005\u030e\u0000\u0000\u1437\u144a\u0005"+
		"\u030f\u0000\u0000\u1438\u144a\u0005\u0310\u0000\u0000\u1439\u144a\u0005"+
		"\u0311\u0000\u0000\u143a\u144a\u0005\u0312\u0000\u0000\u143b\u144a\u0005"+
		"\u0313\u0000\u0000\u143c\u144a\u0005\u0314\u0000\u0000\u143d\u144a\u0005"+
		"\u0315\u0000\u0000\u143e\u144a\u0005\u0316\u0000\u0000\u143f\u144a\u0005"+
		"\u0317\u0000\u0000\u1440\u144a\u0005\u0318\u0000\u0000\u1441\u144a\u0005"+
		"\u0319\u0000\u0000\u1442\u144a\u0005\u015a\u0000\u0000\u1443\u144a\u0005"+
		"\u031a\u0000\u0000\u1444\u144a\u0005\u031b\u0000\u0000\u1445\u144a\u0005"+
		"\u031c\u0000\u0000\u1446\u144a\u0005\u015b\u0000\u0000\u1447\u1448\u0005"+
		"\u01a8\u0000\u0000\u1448\u144a\u0005\u01d6\u0000\u0000\u1449\u1429\u0001"+
		"\u0000\u0000\u0000\u1449\u142a\u0001\u0000\u0000\u0000\u1449\u142b\u0001"+
		"\u0000\u0000\u0000\u1449\u142c\u0001\u0000\u0000\u0000\u1449\u142d\u0001"+
		"\u0000\u0000\u0000\u1449\u142e\u0001\u0000\u0000\u0000\u1449\u142f\u0001"+
		"\u0000\u0000\u0000\u1449\u1430\u0001\u0000\u0000\u0000\u1449\u1431\u0001"+
		"\u0000\u0000\u0000\u1449\u1432\u0001\u0000\u0000\u0000\u1449\u1433\u0001"+
		"\u0000\u0000\u0000\u1449\u1434\u0001\u0000\u0000\u0000\u1449\u1435\u0001"+
		"\u0000\u0000\u0000\u1449\u1436\u0001\u0000\u0000\u0000\u1449\u1437\u0001"+
		"\u0000\u0000\u0000\u1449\u1438\u0001\u0000\u0000\u0000\u1449\u1439\u0001"+
		"\u0000\u0000\u0000\u1449\u143a\u0001\u0000\u0000\u0000\u1449\u143b\u0001"+
		"\u0000\u0000\u0000\u1449\u143c\u0001\u0000\u0000\u0000\u1449\u143d\u0001"+
		"\u0000\u0000\u0000\u1449\u143e\u0001\u0000\u0000\u0000\u1449\u143f\u0001"+
		"\u0000\u0000\u0000\u1449\u1440\u0001\u0000\u0000\u0000\u1449\u1441\u0001"+
		"\u0000\u0000\u0000\u1449\u1442\u0001\u0000\u0000\u0000\u1449\u1443\u0001"+
		"\u0000\u0000\u0000\u1449\u1444\u0001\u0000\u0000\u0000\u1449\u1445\u0001"+
		"\u0000\u0000\u0000\u1449\u1446\u0001\u0000\u0000\u0000\u1449\u1447\u0001"+
		"\u0000\u0000\u0000\u144a\u0293\u0001\u0000\u0000\u0000\u144b\u144c\u0007"+
		"I\u0000\u0000\u144c\u0295\u0001\u0000\u0000\u0000\u144d\u144e\u0005\u00d3"+
		"\u0000\u0000\u144e\u0297\u0001\u0000\u0000\u0000\u144f\u1452\u0005\u01ed"+
		"\u0000\u0000\u1450\u1453\u0003\u029a\u014d\u0000\u1451\u1453\u0003\u01ee"+
		"\u00f7\u0000\u1452\u1450\u0001\u0000\u0000\u0000\u1452\u1451\u0001\u0000"+
		"\u0000\u0000\u1453\u0299\u0001\u0000\u0000\u0000\u1454\u1456\u0005 \u0000"+
		"\u0000\u1455\u1457\u0003\u01ee\u00f7\u0000\u1456\u1455\u0001\u0000\u0000"+
		"\u0000\u1456\u1457\u0001\u0000\u0000\u0000\u1457\u1462\u0001\u0000\u0000"+
		"\u0000\u1458\u1459\u0005\u01f3\u0000\u0000\u1459\u145a\u0005u\u0000\u0000"+
		"\u145a\u145f\u0003\u0270\u0138\u0000\u145b\u145c\u0005&\u0000\u0000\u145c"+
		"\u145e\u0003\u0270\u0138\u0000\u145d\u145b\u0001\u0000\u0000\u0000\u145e"+
		"\u1461\u0001\u0000\u0000\u0000\u145f\u145d\u0001\u0000\u0000\u0000\u145f"+
		"\u1460\u0001\u0000\u0000\u0000\u1460\u1463\u0001\u0000\u0000\u0000\u1461"+
		"\u145f\u0001\u0000\u0000\u0000\u1462\u1458\u0001\u0000\u0000\u0000\u1462"+
		"\u1463\u0001\u0000\u0000\u0000\u1463\u1465\u0001\u0000\u0000\u0000\u1464"+
		"\u1466\u0003\u02ec\u0176\u0000\u1465\u1464\u0001\u0000\u0000\u0000\u1465"+
		"\u1466\u0001\u0000\u0000\u0000\u1466\u1468\u0001\u0000\u0000\u0000\u1467"+
		"\u1469\u0003\u029c\u014e\u0000\u1468\u1467\u0001\u0000\u0000\u0000\u1468"+
		"\u1469\u0001\u0000\u0000\u0000\u1469\u146a\u0001\u0000\u0000\u0000\u146a"+
		"\u146b\u0005!\u0000\u0000\u146b\u029b\u0001\u0000\u0000\u0000\u146c\u146f"+
		"\u0007J\u0000\u0000\u146d\u1470\u0003\u029e\u014f\u0000\u146e\u1470\u0003"+
		"\u02a2\u0151\u0000\u146f\u146d\u0001\u0000\u0000\u0000\u146f\u146e\u0001"+
		"\u0000\u0000\u0000\u1470\u029d\u0001\u0000\u0000\u0000\u1471\u1472\u0005"+
		"\u00ac\u0000\u0000\u1472\u147e\u0005\u0257\u0000\u0000\u1473\u1474\u0005"+
		"\u02c7\u0000\u0000\u1474\u147e\u0005\u0204\u0000\u0000\u1475\u1476\u0005"+
		"\u02c7\u0000\u0000\u1476\u147e\u0005\u010d\u0000\u0000\u1477\u1478\u0003"+
		"\u0270\u0138\u0000\u1478\u1479\u0005\u0204\u0000\u0000\u1479\u147e\u0001"+
		"\u0000\u0000\u0000\u147a\u147b\u0003\u0270\u0138\u0000\u147b\u147c\u0005"+
		"\u010d\u0000\u0000\u147c\u147e\u0001\u0000\u0000\u0000\u147d\u1471\u0001"+
		"\u0000\u0000\u0000\u147d\u1473\u0001\u0000\u0000\u0000\u147d\u1475\u0001"+
		"\u0000\u0000\u0000\u147d\u1477\u0001\u0000\u0000\u0000\u147d\u147a\u0001"+
		"\u0000\u0000\u0000\u147e\u029f\u0001\u0000\u0000\u0000\u147f\u1480\u0003"+
		"\u029e\u014f\u0000\u1480\u02a1\u0001\u0000\u0000\u0000\u1481\u1482\u0005"+
		"i\u0000\u0000\u1482\u1483\u0003\u029e\u014f\u0000\u1483\u1484\u0005X\u0000"+
		"\u0000\u1484\u1485\u0003\u02a0\u0150\u0000\u1485\u02a3\u0001\u0000\u0000"+
		"\u0000\u1486\u1493\u0003\u02a8\u0154\u0000\u1487\u1493\u0003\u02aa\u0155"+
		"\u0000\u1488\u1493\u0003\u02b6\u015b\u0000\u1489\u1493\u0003\u02b8\u015c"+
		"\u0000\u148a\u1493\u0003\u02be\u015f\u0000\u148b\u1493\u0003\u02c0\u0160"+
		"\u0000\u148c\u1493\u0003\u02c2\u0161\u0000\u148d\u1493\u0003\u02c4\u0162"+
		"\u0000\u148e\u1493\u0003\u02c6\u0163\u0000\u148f\u1493\u0003\u02ca\u0165"+
		"\u0000\u1490\u1493\u0003\u02c8\u0164\u0000\u1491\u1493\u0003\u02a6\u0153"+
		"\u0000\u1492\u1486\u0001\u0000\u0000\u0000\u1492\u1487\u0001\u0000\u0000"+
		"\u0000\u1492\u1488\u0001\u0000\u0000\u0000\u1492\u1489\u0001\u0000\u0000"+
		"\u0000\u1492\u148a\u0001\u0000\u0000\u0000\u1492\u148b\u0001\u0000\u0000"+
		"\u0000\u1492\u148c\u0001\u0000\u0000\u0000\u1492\u148d\u0001\u0000\u0000"+
		"\u0000\u1492\u148e\u0001\u0000\u0000\u0000\u1492\u148f\u0001\u0000\u0000"+
		"\u0000\u1492\u1490\u0001\u0000\u0000\u0000\u1492\u1491\u0001\u0000\u0000"+
		"\u0000\u1493\u02a5\u0001\u0000\u0000\u0000\u1494\u1497\u0005\u00b0\u0000"+
		"\u0000\u1495\u1496\u0005 \u0000\u0000\u1496\u1498\u0005!\u0000\u0000\u1497"+
		"\u1495\u0001\u0000\u0000\u0000\u1497\u1498\u0001\u0000\u0000\u0000\u1498"+
		"\u02a7\u0001\u0000\u0000\u0000\u1499\u149a\u00055\u0000\u0000\u149a\u149c"+
		"\u0005 \u0000\u0000\u149b\u149d\u0003\u0296\u014b\u0000\u149c\u149b\u0001"+
		"\u0000\u0000\u0000\u149c\u149d\u0001\u0000\u0000\u0000\u149d\u14a7\u0001"+
		"\u0000\u0000\u0000\u149e\u14a3\u0003\u0270\u0138\u0000\u149f\u14a0\u0005"+
		"&\u0000\u0000\u14a0\u14a2\u0003\u0270\u0138\u0000\u14a1\u149f\u0001\u0000"+
		"\u0000\u0000\u14a2\u14a5\u0001\u0000\u0000\u0000\u14a3\u14a1\u0001\u0000"+
		"\u0000\u0000\u14a3\u14a4\u0001\u0000\u0000\u0000\u14a4\u14a8\u0001\u0000"+
		"\u0000\u0000\u14a5\u14a3\u0001\u0000\u0000\u0000\u14a6\u14a8\u0005\u0012"+
		"\u0000\u0000\u14a7\u149e\u0001\u0000\u0000\u0000\u14a7\u14a6\u0001\u0000"+
		"\u0000\u0000\u14a7\u14a8\u0001\u0000\u0000\u0000\u14a8\u14aa\u0001\u0000"+
		"\u0000\u0000\u14a9\u14ab\u0003\u02ec\u0176\u0000\u14aa\u14a9\u0001\u0000"+
		"\u0000\u0000\u14aa\u14ab\u0001\u0000\u0000\u0000\u14ab\u14ae\u0001\u0000"+
		"\u0000\u0000\u14ac\u14ad\u0005\u026c\u0000\u0000\u14ad\u14af\u0003\u0270"+
		"\u0138\u0000\u14ae\u14ac\u0001\u0000\u0000\u0000\u14ae\u14af\u0001\u0000"+
		"\u0000\u0000\u14af\u14b0\u0001\u0000\u0000\u0000\u14b0\u14b1\u0005!\u0000"+
		"\u0000\u14b1\u02a9\u0001\u0000\u0000\u0000\u14b2\u14b3\u0007K\u0000\u0000"+
		"\u14b3\u14b4\u0005 \u0000\u0000\u14b4\u14b5\u0005!\u0000\u0000\u14b5\u14df"+
		"\u0003\u02ac\u0156\u0000\u14b6\u14b7\u0005\u01d0\u0000\u0000\u14b7\u14b8"+
		"\u0003\u0282\u0141\u0000\u14b8\u14b9\u0003\u02ac\u0156\u0000\u14b9\u14df"+
		"\u0001\u0000\u0000\u0000\u14ba\u14bb\u0007L\u0000\u0000\u14bb\u14bc\u0005"+
		" \u0000\u0000\u14bc\u14be\u0003\u0270\u0138\u0000\u14bd\u14bf\u0003\u02ae"+
		"\u0157\u0000\u14be\u14bd\u0001\u0000\u0000\u0000\u14be\u14bf\u0001\u0000"+
		"\u0000\u0000\u14bf\u14c0\u0001\u0000\u0000\u0000\u14c0\u14c2\u0005!\u0000"+
		"\u0000\u14c1\u14c3\u0003\u02b0\u0158\u0000\u14c2\u14c1\u0001\u0000\u0000"+
		"\u0000\u14c2\u14c3\u0001\u0000\u0000\u0000\u14c3\u14c4\u0001\u0000\u0000"+
		"\u0000\u14c4\u14c5\u0003\u02ac\u0156\u0000\u14c5\u14df\u0001\u0000\u0000"+
		"\u0000\u14c6\u14c7\u0007M\u0000\u0000\u14c7\u14c8\u0005 \u0000\u0000\u14c8"+
		"\u14c9\u0003\u0270\u0138\u0000\u14c9\u14cb\u0005!\u0000\u0000\u14ca\u14cc"+
		"\u0003\u02b0\u0158\u0000\u14cb\u14ca\u0001\u0000\u0000\u0000\u14cb\u14cc"+
		"\u0001\u0000\u0000\u0000\u14cc\u14cd\u0001\u0000\u0000\u0000\u14cd\u14ce"+
		"\u0003\u02ac\u0156\u0000\u14ce\u14df\u0001\u0000\u0000\u0000\u14cf\u14d0"+
		"\u0005\u01cf\u0000\u0000\u14d0\u14d1\u0005 \u0000\u0000\u14d1\u14d2\u0003"+
		"\u0270\u0138\u0000\u14d2\u14d3\u0005&\u0000\u0000\u14d3\u14d4\u0003\u0282"+
		"\u0141\u0000\u14d4\u14d7\u0005!\u0000\u0000\u14d5\u14d6\u0005\u0114\u0000"+
		"\u0000\u14d6\u14d8\u0007N\u0000\u0000\u14d7\u14d5\u0001\u0000\u0000\u0000"+
		"\u14d7\u14d8\u0001\u0000\u0000\u0000\u14d8\u14da\u0001\u0000\u0000\u0000"+
		"\u14d9\u14db\u0003\u02b0\u0158\u0000\u14da\u14d9\u0001\u0000\u0000\u0000"+
		"\u14da\u14db\u0001\u0000\u0000\u0000\u14db\u14dc\u0001\u0000\u0000\u0000"+
		"\u14dc\u14dd\u0003\u02ac\u0156\u0000\u14dd\u14df\u0001\u0000\u0000\u0000"+
		"\u14de\u14b2\u0001\u0000\u0000\u0000\u14de\u14b6\u0001\u0000\u0000\u0000"+
		"\u14de\u14ba\u0001\u0000\u0000\u0000\u14de\u14c6\u0001\u0000\u0000\u0000"+
		"\u14de\u14cf\u0001\u0000\u0000\u0000\u14df\u02ab\u0001\u0000\u0000\u0000"+
		"\u14e0\u14e3\u0005\u01ed\u0000\u0000\u14e1\u14e4\u0003\u01ee\u00f7\u0000"+
		"\u14e2\u14e4\u0003\u029a\u014d\u0000\u14e3\u14e1\u0001\u0000\u0000\u0000"+
		"\u14e3\u14e2\u0001\u0000\u0000\u0000\u14e4\u02ad\u0001\u0000\u0000\u0000"+
		"\u14e5\u14e6\u0005&\u0000\u0000\u14e6\u14e9\u0007O\u0000\u0000\u14e7\u14e8"+
		"\u0005&\u0000\u0000\u14e8\u14ea\u0003\u0270\u0138\u0000\u14e9\u14e7\u0001"+
		"\u0000\u0000\u0000\u14e9\u14ea\u0001\u0000\u0000\u0000\u14ea\u02af\u0001"+
		"\u0000\u0000\u0000\u14eb\u14ec\u0007P\u0000\u0000\u14ec\u14ed\u0005\u01d2"+
		"\u0000\u0000\u14ed\u02b1\u0001\u0000\u0000\u0000\u14ee\u14ef\u0005\u010f"+
		"\u0000\u0000\u14ef\u14f6\u0005\u02d6\u0000\u0000\u14f0\u14f6\u0005\u0215"+
		"\u0000\u0000\u14f1\u14f6\u0005\u0100\u0000\u0000\u14f2\u14f6\u0005\u01a4"+
		"\u0000\u0000\u14f3\u14f6\u0005\u00fc\u0000\u0000\u14f4\u14f6\u0005\u007f"+
		"\u0000\u0000\u14f5\u14ee\u0001\u0000\u0000\u0000\u14f5\u14f0\u0001\u0000"+
		"\u0000\u0000\u14f5\u14f1\u0001\u0000\u0000\u0000\u14f5\u14f2\u0001\u0000"+
		"\u0000\u0000\u14f5\u14f3\u0001\u0000\u0000\u0000\u14f5\u14f4\u0001\u0000"+
		"\u0000\u0000\u14f6\u02b3\u0001\u0000\u0000\u0000\u14f7\u14f8\u0007Q\u0000"+
		"\u0000\u14f8\u02b5\u0001\u0000\u0000\u0000\u14f9\u14fa\u00056\u0000\u0000"+
		"\u14fa\u14fb\u0005 \u0000\u0000\u14fb\u14fc\u0003\u0270\u0138\u0000\u14fc"+
		"\u14fd\u0005[\u0000\u0000\u14fd\u14fe\u0003\u02f0\u0178\u0000\u14fe\u14ff"+
		"\u0005!\u0000\u0000\u14ff\u02b7\u0001\u0000\u0000\u0000\u1500\u1501\u0005"+
		"\u00a6\u0000\u0000\u1501\u1502\u0005 \u0000\u0000\u1502\u1503\u0003\u0270"+
		"\u0138\u0000\u1503\u1504\u0005&\u0000\u0000\u1504\u1505\u0003\u02ba\u015d"+
		"\u0000\u1505\u1506\u0005!\u0000\u0000\u1506\u150f\u0001\u0000\u0000\u0000"+
		"\u1507\u1508\u0005\u00a6\u0000\u0000\u1508\u1509\u0005 \u0000\u0000\u1509"+
		"\u150a\u0003\u0270\u0138\u0000\u150a\u150b\u0005\u02dc\u0000\u0000\u150b"+
		"\u150c\u0003\u0216\u010b\u0000\u150c\u150d\u0005!\u0000\u0000\u150d\u150f"+
		"\u0001\u0000\u0000\u0000\u150e\u1500\u0001\u0000\u0000\u0000\u150e\u1507"+
		"\u0001\u0000\u0000\u0000\u150f\u02b9\u0001\u0000\u0000\u0000\u1510\u1512"+
		"\u0005k\u0000\u0000\u1511\u1513\u0003\u0316\u018b\u0000\u1512\u1511\u0001"+
		"\u0000\u0000\u0000\u1512\u1513\u0001\u0000\u0000\u0000\u1513\u153e\u0001"+
		"\u0000\u0000\u0000\u1514\u1516\u0005\u0081\u0000\u0000\u1515\u1517\u0003"+
		"\u0316\u018b\u0000\u1516\u1515\u0001\u0000\u0000\u0000\u1516\u1517\u0001"+
		"\u0000\u0000\u0000\u1517\u1519\u0001\u0000\u0000\u0000\u1518\u151a\u0003"+
		"\u02fe\u017f\u0000\u1519\u1518\u0001\u0000\u0000\u0000\u1519\u151a\u0001"+
		"\u0000\u0000\u0000\u151a\u153e\u0001\u0000\u0000\u0000\u151b\u151d\u0003"+
		"\u02bc\u015e\u0000\u151c\u151e\u0003\u0316\u018b\u0000\u151d\u151c\u0001"+
		"\u0000\u0000\u0000\u151d\u151e\u0001\u0000\u0000\u0000\u151e\u153e\u0001"+
		"\u0000\u0000\u0000\u151f\u1521\u0005\u0276\u0000\u0000\u1520\u1522\u0005"+
		"\u0145\u0000\u0000\u1521\u1520\u0001\u0000\u0000\u0000\u1521\u1522\u0001"+
		"\u0000\u0000\u0000\u1522\u153e\u0001\u0000\u0000\u0000\u1523\u1525\u0005"+
		"\u02d3\u0000\u0000\u1524\u1526\u0005\u0145\u0000\u0000\u1525\u1524\u0001"+
		"\u0000\u0000\u0000\u1525\u1526\u0001\u0000\u0000\u0000\u1526\u153e\u0001"+
		"\u0000\u0000\u0000\u1527\u153e\u0005\u00b7\u0000\u0000\u1528\u152a\u0005"+
		"\u02b6\u0000\u0000\u1529\u152b\u0003\u02fc\u017e\u0000\u152a\u1529\u0001"+
		"\u0000\u0000\u0000\u152a\u152b\u0001\u0000\u0000\u0000\u152b\u153e\u0001"+
		"\u0000\u0000\u0000\u152c\u152e\u0005\u00b8\u0000\u0000\u152d\u152f\u0003"+
		"\u02fc\u017e\u0000\u152e\u152d\u0001\u0000\u0000\u0000\u152e\u152f\u0001"+
		"\u0000\u0000\u0000\u152f\u153e\u0001\u0000\u0000\u0000\u1530\u1533\u0005"+
		"\u00c0\u0000\u0000\u1531\u1534\u0003\u0316\u018b\u0000\u1532\u1534\u0003"+
		"\u02fa\u017d\u0000\u1533\u1531\u0001\u0000\u0000\u0000\u1533\u1532\u0001"+
		"\u0000\u0000\u0000\u1533\u1534\u0001\u0000\u0000\u0000\u1534\u153e\u0001"+
		"\u0000\u0000\u0000\u1535\u153e\u0005\u0159\u0000\u0000\u1536\u153e\u0005"+
		"\u021d\u0000\u0000\u1537\u1538\u0005\u00d7\u0000\u0000\u1538\u153e\u0005"+
		"\u0205\u0000\u0000\u1539\u153b\u0005\u0109\u0000\u0000\u153a\u153c\u0003"+
		"\u02fa\u017d\u0000\u153b\u153a\u0001\u0000\u0000\u0000\u153b\u153c\u0001"+
		"\u0000\u0000\u0000\u153c\u153e\u0001\u0000\u0000\u0000\u153d\u1510\u0001"+
		"\u0000\u0000\u0000\u153d\u1514\u0001\u0000\u0000\u0000\u153d\u151b\u0001"+
		"\u0000\u0000\u0000\u153d\u151f\u0001\u0000\u0000\u0000\u153d\u1523\u0001"+
		"\u0000\u0000\u0000\u153d\u1527\u0001\u0000\u0000\u0000\u153d\u1528\u0001"+
		"\u0000\u0000\u0000\u153d\u152c\u0001\u0000\u0000\u0000\u153d\u1530\u0001"+
		"\u0000\u0000\u0000\u153d\u1535\u0001\u0000\u0000\u0000\u153d\u1536\u0001"+
		"\u0000\u0000\u0000\u153d\u1537\u0001\u0000\u0000\u0000\u153d\u1539\u0001"+
		"\u0000\u0000\u0000\u153e\u02bb\u0001\u0000\u0000\u0000\u153f\u1543\u0005"+
		"\u01c1\u0000\u0000\u1540\u1541\u0005\u01bf\u0000\u0000\u1541\u1543\u0005"+
		"\u0081\u0000\u0000\u1542\u153f\u0001\u0000\u0000\u0000\u1542\u1540\u0001"+
		"\u0000\u0000\u0000\u1543\u02bd\u0001\u0000\u0000\u0000\u1544\u1545\u0005"+
		"7\u0000\u0000\u1545\u1546\u0005 \u0000\u0000\u1546\u1547\u0003\u0270\u0138"+
		"\u0000\u1547\u1548\u0005\u0138\u0000\u0000\u1548\u1549\u0003\u0270\u0138"+
		"\u0000\u1549\u154a\u0005!\u0000\u0000\u154a\u02bf\u0001\u0000\u0000\u0000"+
		"\u154b\u154c\u0007R\u0000\u0000\u154c\u154d\u0005 \u0000\u0000\u154d\u154e"+
		"\u0003\u0270\u0138\u0000\u154e\u154f\u0005\u0114\u0000\u0000\u154f\u1552"+
		"\u0005\u0322\u0000\u0000\u1550\u1551\u0005\u010f\u0000\u0000\u1551\u1553"+
		"\u0005\u0322\u0000\u0000\u1552\u1550\u0001\u0000\u0000\u0000\u1552\u1553"+
		"\u0001\u0000\u0000\u0000\u1553\u1554\u0001\u0000\u0000\u0000\u1554\u1555"+
		"\u0005!\u0000\u0000\u1555\u1562\u0001\u0000\u0000\u0000\u1556\u1557\u0007"+
		"R\u0000\u0000\u1557\u1558\u0005 \u0000\u0000\u1558\u1559\u0003\u0270\u0138"+
		"\u0000\u1559\u155a\u0005&\u0000\u0000\u155a\u155d\u0005\u0322\u0000\u0000"+
		"\u155b\u155c\u0005&\u0000\u0000\u155c\u155e\u0005\u0322\u0000\u0000\u155d"+
		"\u155b\u0001\u0000\u0000\u0000\u155d\u155e\u0001\u0000\u0000\u0000\u155e"+
		"\u155f\u0001\u0000\u0000\u0000\u155f\u1560\u0005!\u0000\u0000\u1560\u1562"+
		"\u0001\u0000\u0000\u0000\u1561\u154b\u0001\u0000\u0000\u0000\u1561\u1556"+
		"\u0001\u0000\u0000\u0000\u1562\u02c1\u0001\u0000\u0000\u0000\u1563\u1564"+
		"\u0005:\u0000\u0000\u1564\u1565\u0005 \u0000\u0000\u1565\u1566\u0003\u01ee"+
		"\u00f7\u0000\u1566\u1567\u0005\u0114\u0000\u0000\u1567\u1568\u0003\u0270"+
		"\u0138\u0000\u1568\u1569\u0005!\u0000\u0000\u1569\u02c3\u0001\u0000\u0000"+
		"\u0000\u156a\u156b\u0005\u0081\u0000\u0000\u156b\u156c\u0005 \u0000\u0000"+
		"\u156c\u1571\u0003\u0270\u0138\u0000\u156d\u156e\u0005&\u0000\u0000\u156e"+
		"\u1570\u0003\u0270\u0138\u0000\u156f\u156d\u0001\u0000\u0000\u0000\u1570"+
		"\u1573\u0001\u0000\u0000\u0000\u1571\u156f\u0001\u0000\u0000\u0000\u1571"+
		"\u1572\u0001\u0000\u0000\u0000\u1572\u1576\u0001\u0000\u0000\u0000\u1573"+
		"\u1571\u0001\u0000\u0000\u0000\u1574\u1575\u0005\u02dc\u0000\u0000\u1575"+
		"\u1577\u0003\u0216\u010b\u0000\u1576\u1574\u0001\u0000\u0000\u0000\u1576"+
		"\u1577\u0001\u0000\u0000\u0000\u1577\u1578\u0001\u0000\u0000\u0000\u1578"+
		"\u1579\u0005!\u0000\u0000\u1579\u02c5\u0001\u0000\u0000\u0000\u157a\u157b"+
		"\u0005;\u0000\u0000\u157b\u1581\u0005 \u0000\u0000\u157c\u157e\u0007S"+
		"\u0000\u0000\u157d\u157f\u0003\u0270\u0138\u0000\u157e\u157d\u0001\u0000"+
		"\u0000\u0000\u157e\u157f\u0001\u0000\u0000\u0000\u157f\u1580\u0001\u0000"+
		"\u0000\u0000\u1580\u1582\u0005\u0114\u0000\u0000\u1581\u157c\u0001\u0000"+
		"\u0000\u0000\u1581\u1582\u0001\u0000\u0000\u0000\u1582\u1583\u0001\u0000"+
		"\u0000\u0000\u1583\u1584\u0003\u0270\u0138\u0000\u1584\u1585\u0005!\u0000"+
		"\u0000\u1585\u1591\u0001\u0000\u0000\u0000\u1586\u1587\u0005;\u0000\u0000"+
		"\u1587\u158b\u0005 \u0000\u0000\u1588\u1589\u0003\u0270\u0138\u0000\u1589"+
		"\u158a\u0005\u0114\u0000\u0000\u158a\u158c\u0001\u0000\u0000\u0000\u158b"+
		"\u1588\u0001\u0000\u0000\u0000\u158b\u158c\u0001\u0000\u0000\u0000\u158c"+
		"\u158d\u0001\u0000\u0000\u0000\u158d\u158e\u0003\u0270\u0138\u0000\u158e"+
		"\u158f\u0005!\u0000\u0000\u158f\u1591\u0001\u0000\u0000\u0000\u1590\u157a"+
		"\u0001\u0000\u0000\u0000\u1590\u1586\u0001\u0000\u0000\u0000\u1591\u02c7"+
		"\u0001\u0000\u0000\u0000\u1592\u1593\u0005\u02e2\u0000\u0000\u1593\u1594"+
		"\u0005 \u0000\u0000\u1594\u1595\u0003\u028a\u0145\u0000\u1595\u1596\u0005"+
		"!\u0000\u0000\u1596\u02c9\u0001\u0000\u0000\u0000\u1597\u1598\u0005\u02ef"+
		"\u0000\u0000\u1598\u1599\u0005 \u0000\u0000\u1599\u159c\u0003\u0270\u0138"+
		"\u0000\u159a\u159b\u0005[\u0000\u0000\u159b\u159d\u0003\u02f0\u0178\u0000"+
		"\u159c\u159a\u0001\u0000\u0000\u0000\u159c\u159d\u0001\u0000\u0000\u0000"+
		"\u159d\u159f\u0001\u0000\u0000\u0000\u159e\u15a0\u0003\u02cc\u0166\u0000"+
		"\u159f\u159e\u0001\u0000\u0000\u0000\u159f\u15a0\u0001\u0000\u0000\u0000"+
		"\u15a0\u15a1\u0001\u0000\u0000\u0000\u15a1\u15a2\u0005!\u0000\u0000\u15a2"+
		"\u02cb\u0001\u0000\u0000\u0000\u15a3\u15af\u0005\u016b\u0000\u0000\u15a4"+
		"\u15a9\u0003\u02ce\u0167\u0000\u15a5\u15a6\u0005&\u0000\u0000\u15a6\u15a8"+
		"\u0003\u02ce\u0167\u0000\u15a7\u15a5\u0001\u0000\u0000\u0000\u15a8\u15ab"+
		"\u0001\u0000\u0000\u0000\u15a9\u15a7\u0001\u0000\u0000\u0000\u15a9\u15aa"+
		"\u0001\u0000\u0000\u0000\u15aa\u15b0\u0001\u0000\u0000\u0000\u15ab\u15a9"+
		"\u0001\u0000\u0000\u0000\u15ac\u15ad\u0005\u0322\u0000\u0000\u15ad\u15ae"+
		"\u0005\u0011\u0000\u0000\u15ae\u15b0\u0005\u0322\u0000\u0000\u15af\u15a4"+
		"\u0001\u0000\u0000\u0000\u15af\u15ac\u0001\u0000\u0000\u0000\u15b0\u02cd"+
		"\u0001\u0000\u0000\u0000\u15b1\u15b3\u0005\u0322\u0000\u0000\u15b2\u15b4"+
		"\u0003\u0312\u0189\u0000\u15b3\u15b2\u0001\u0000\u0000\u0000\u15b3\u15b4"+
		"\u0001\u0000\u0000\u0000\u15b4\u15b6\u0001\u0000\u0000\u0000\u15b5\u15b7"+
		"\u0005\u024e\u0000\u0000\u15b6\u15b5\u0001\u0000\u0000\u0000\u15b6\u15b7"+
		"\u0001\u0000\u0000\u0000\u15b7\u02cf\u0001\u0000\u0000\u0000\u15b8\u15bb"+
		"\u0003\u02d4\u016a\u0000\u15b9\u15bb\u0003\u02d2\u0169\u0000\u15ba\u15b8"+
		"\u0001\u0000\u0000\u0000\u15ba\u15b9\u0001\u0000\u0000\u0000\u15bb\u02d1"+
		"\u0001\u0000\u0000\u0000\u15bc\u15ca\u0005\u00ad\u0000\u0000\u15bd\u15c3"+
		"\u0005\u00ae\u0000\u0000\u15be\u15c0\u0005 \u0000\u0000\u15bf\u15c1\u0005"+
		"\u0322\u0000\u0000\u15c0\u15bf\u0001\u0000\u0000\u0000\u15c0\u15c1\u0001"+
		"\u0000\u0000\u0000\u15c1\u15c2\u0001\u0000\u0000\u0000\u15c2\u15c4\u0005"+
		"!\u0000\u0000\u15c3\u15be\u0001\u0000\u0000\u0000\u15c3\u15c4\u0001\u0000"+
		"\u0000\u0000\u15c4\u15ca\u0001\u0000\u0000\u0000\u15c5\u15ca\u0005\u00af"+
		"\u0000\u0000\u15c6\u15ca\u0005<\u0000\u0000\u15c7\u15ca\u0005\u0174\u0000"+
		"\u0000\u15c8\u15ca\u0005\u0175\u0000\u0000\u15c9\u15bc\u0001\u0000\u0000"+
		"\u0000\u15c9\u15bd\u0001\u0000\u0000\u0000\u15c9\u15c5\u0001\u0000\u0000"+
		"\u0000\u15c9\u15c6\u0001\u0000\u0000\u0000\u15c9\u15c7\u0001\u0000\u0000"+
		"\u0000\u15c9\u15c8\u0001\u0000\u0000\u0000\u15ca\u02d3\u0001\u0000\u0000"+
		"\u0000\u15cb\u15cc\u0003\u02d6\u016b\u0000\u15cc\u15d6\u0005 \u0000\u0000"+
		"\u15cd\u15d2\u0003\u0270\u0138\u0000\u15ce\u15cf\u0005&\u0000\u0000\u15cf"+
		"\u15d1\u0003\u0270\u0138\u0000\u15d0\u15ce\u0001\u0000\u0000\u0000\u15d1"+
		"\u15d4\u0001\u0000\u0000\u0000\u15d2\u15d0\u0001\u0000\u0000\u0000\u15d2"+
		"\u15d3\u0001\u0000\u0000\u0000\u15d3\u15d7\u0001\u0000\u0000\u0000\u15d4"+
		"\u15d2\u0001\u0000\u0000\u0000\u15d5\u15d7\u0005\u0012\u0000\u0000\u15d6"+
		"\u15cd\u0001\u0000\u0000\u0000\u15d6\u15d5\u0001\u0000\u0000\u0000\u15d6"+
		"\u15d7\u0001\u0000\u0000\u0000\u15d7\u15d8\u0001\u0000\u0000\u0000\u15d8"+
		"\u15d9\u0005!\u0000\u0000\u15d9\u02d5\u0001\u0000\u0000\u0000\u15da\u15fa"+
		"\u0005\u0134\u0000\u0000\u15db\u15fa\u0005\u0174\u0000\u0000\u15dc\u15fa"+
		"\u0005\u0175\u0000\u0000\u15dd\u15fa\u0005\u0233\u0000\u0000\u15de\u15fa"+
		"\u0005\u0141\u0000\u0000\u15df\u15fa\u0005\u014c\u0000\u0000\u15e0\u15fa"+
		"\u0005\u01b3\u0000\u0000\u15e1\u15fa\u0005\u00b4\u0000\u0000\u15e2\u15fa"+
		"\u0005\u025f\u0000\u0000\u15e3\u15fa\u0005\u0169\u0000\u0000\u15e4\u15fa"+
		"\u0005\u0250\u0000\u0000\u15e5\u15fa\u0005\u00b7\u0000\u0000\u15e6\u15fa"+
		"\u0005\u00b9\u0000\u0000\u15e7\u15fa\u0005\u011b\u0000\u0000\u15e8\u15fa"+
		"\u0005\u0231\u0000\u0000\u15e9\u15fa\u0005\u0170\u0000\u0000\u15ea\u15fa"+
		"\u0005\u01b8\u0000\u0000\u15eb\u15fa\u0005\u01b9\u0000\u0000\u15ec\u15fa"+
		"\u0005\u01ba\u0000\u0000\u15ed\u15fa\u0005\u0200\u0000\u0000\u15ee\u15fa"+
		"\u0005\u0201\u0000\u0000\u15ef\u15fa\u0005\u02b6\u0000\u0000\u15f0\u15fa"+
		"\u0005\u02b7\u0000\u0000\u15f1\u15fa\u0005\u02b8\u0000\u0000\u15f2\u15fa"+
		"\u0005\u02b9\u0000\u0000\u15f3\u15fa\u0005\u00b7\u0000\u0000\u15f4\u15fa"+
		"\u0005\u00af\u0000\u0000\u15f5\u15fa\u0005\u00ad\u0000\u0000\u15f6\u15fa"+
		"\u0005\u00ae\u0000\u0000\u15f7\u15fa\u0005\u02df\u0000\u0000\u15f8\u15fa"+
		"\u0003\u01ee\u00f7\u0000\u15f9\u15da\u0001\u0000\u0000\u0000\u15f9\u15db"+
		"\u0001\u0000\u0000\u0000\u15f9\u15dc\u0001\u0000\u0000\u0000\u15f9\u15dd"+
		"\u0001\u0000\u0000\u0000\u15f9\u15de\u0001\u0000\u0000\u0000\u15f9\u15df"+
		"\u0001\u0000\u0000\u0000\u15f9\u15e0\u0001\u0000\u0000\u0000\u15f9\u15e1"+
		"\u0001\u0000\u0000\u0000\u15f9\u15e2\u0001\u0000\u0000\u0000\u15f9\u15e3"+
		"\u0001\u0000\u0000\u0000\u15f9\u15e4\u0001\u0000\u0000\u0000\u15f9\u15e5"+
		"\u0001\u0000\u0000\u0000\u15f9\u15e6\u0001\u0000\u0000\u0000\u15f9\u15e7"+
		"\u0001\u0000\u0000\u0000\u15f9\u15e8\u0001\u0000\u0000\u0000\u15f9\u15e9"+
		"\u0001\u0000\u0000\u0000\u15f9\u15ea\u0001\u0000\u0000\u0000\u15f9\u15eb"+
		"\u0001\u0000\u0000\u0000\u15f9\u15ec\u0001\u0000\u0000\u0000\u15f9\u15ed"+
		"\u0001\u0000\u0000\u0000\u15f9\u15ee\u0001\u0000\u0000\u0000\u15f9\u15ef"+
		"\u0001\u0000\u0000\u0000\u15f9\u15f0\u0001\u0000\u0000\u0000\u15f9\u15f1"+
		"\u0001\u0000\u0000\u0000\u15f9\u15f2\u0001\u0000\u0000\u0000\u15f9\u15f3"+
		"\u0001\u0000\u0000\u0000\u15f9\u15f4\u0001\u0000\u0000\u0000\u15f9\u15f5"+
		"\u0001\u0000\u0000\u0000\u15f9\u15f6\u0001\u0000\u0000\u0000\u15f9\u15f7"+
		"\u0001\u0000\u0000\u0000\u15f9\u15f8\u0001\u0000\u0000\u0000\u15fa\u02d7"+
		"\u0001\u0000\u0000\u0000\u15fb\u1601\u0005\u019c\u0000\u0000\u15fc\u1602"+
		"\u0003\u028a\u0145\u0000\u15fd\u15fe\u0005 \u0000\u0000\u15fe\u15ff\u0003"+
		"\u028a\u0145\u0000\u15ff\u1600\u0005!\u0000\u0000\u1600\u1602\u0001\u0000"+
		"\u0000\u0000\u1601\u15fc\u0001\u0000\u0000\u0000\u1601\u15fd\u0001\u0000"+
		"\u0000\u0000\u1602\u1603\u0001\u0000\u0000\u0000\u1603\u1604\u0005Q\u0000"+
		"\u0000\u1604\u1605\u0005 \u0000\u0000\u1605\u1607\u0003\u0270\u0138\u0000"+
		"\u1606\u1608\u0003\u02da\u016d\u0000\u1607\u1606\u0001\u0000\u0000\u0000"+
		"\u1607\u1608\u0001\u0000\u0000\u0000\u1608\u1609\u0001\u0000\u0000\u0000"+
		"\u1609\u160a\u0005!\u0000\u0000\u160a\u02d9\u0001\u0000\u0000\u0000\u160b"+
		"\u160c\u0005\u0138\u0000\u0000\u160c\u160d\u0005\u01c0\u0000\u0000\u160d"+
		"\u160e\u0005\u0161\u0000\u0000\u160e\u161d\u0005\u01b4\u0000\u0000\u160f"+
		"\u1610\u0005\u0138\u0000\u0000\u1610\u1611\u0005\u01c0\u0000\u0000\u1611"+
		"\u1612\u0005\u0161\u0000\u0000\u1612\u1613\u0005\u01b4\u0000\u0000\u1613"+
		"\u1614\u0005\u02f4\u0000\u0000\u1614\u1615\u0005\u0214\u0000\u0000\u1615"+
		"\u161d\u0005\u00f8\u0000\u0000\u1616\u1617\u0005\u0138\u0000\u0000\u1617"+
		"\u1618\u0005q\u0000\u0000\u1618\u161d\u0005\u01b4\u0000\u0000\u1619\u161a"+
		"\u0005\u02f4\u0000\u0000\u161a\u161b\u0005\u0214\u0000\u0000\u161b\u161d"+
		"\u0005\u00f8\u0000\u0000\u161c\u160b\u0001\u0000\u0000\u0000\u161c\u160f"+
		"\u0001\u0000\u0000\u0000\u161c\u1616\u0001\u0000\u0000\u0000\u161c\u1619"+
		"\u0001\u0000\u0000\u0000\u161d\u02db\u0001\u0000\u0000\u0000\u161e\u1620"+
		"\u0005{\u0000\u0000\u161f\u1621\u0003\u0282\u0141\u0000\u1620\u161f\u0001"+
		"\u0000\u0000\u0000\u1620\u1621\u0001\u0000\u0000\u0000\u1621\u1623\u0001"+
		"\u0000\u0000\u0000\u1622\u1624\u0003\u02e2\u0171\u0000\u1623\u1622\u0001"+
		"\u0000\u0000\u0000\u1624\u1625\u0001\u0000\u0000\u0000\u1625\u1623\u0001"+
		"\u0000\u0000\u0000\u1625\u1626\u0001\u0000\u0000\u0000\u1626\u1628\u0001"+
		"\u0000\u0000\u0000\u1627\u1629\u0003\u02e4\u0172\u0000\u1628\u1627\u0001"+
		"\u0000\u0000\u0000\u1628\u1629\u0001\u0000\u0000\u0000\u1629\u162a\u0001"+
		"\u0000\u0000\u0000\u162a\u162b\u0005\u00e4\u0000\u0000\u162b\u02dd\u0001"+
		"\u0000\u0000\u0000\u162c\u162d\u0003\u0270\u0138\u0000\u162d\u02df\u0001"+
		"\u0000\u0000\u0000\u162e\u162f\u0005\u0322\u0000\u0000\u162f\u02e1\u0001"+
		"\u0000\u0000\u0000\u1630\u1631\u0005\u02f0\u0000\u0000\u1631\u1632\u0003"+
		"\u0270\u0138\u0000\u1632\u1633\u0005\u02b3\u0000\u0000\u1633\u1634\u0003"+
		"\u0270\u0138\u0000\u1634\u02e3\u0001\u0000\u0000\u0000\u1635\u1636\u0005"+
		"\u00de\u0000\u0000\u1636\u1637\u0003\u0270\u0138\u0000\u1637\u02e5\u0001"+
		"\u0000\u0000\u0000\u1638\u1639\u0005\u014c\u0000\u0000\u1639\u163a\u0003"+
		"\u02e8\u0174\u0000\u163a\u02e7\u0001\u0000\u0000\u0000\u163b\u163c\u0003"+
		"\u0270\u0138\u0000\u163c\u163d\u0003\u02ea\u0175\u0000\u163d\u02e9\u0001"+
		"\u0000\u0000\u0000\u163e\u163f\u0007T\u0000\u0000\u163f\u02eb\u0001\u0000"+
		"\u0000\u0000\u1640\u1641\u0005\u01e6\u0000\u0000\u1641\u1642\u0005u\u0000"+
		"\u0000\u1642\u1647\u0003\u02ee\u0177\u0000\u1643\u1644\u0005&\u0000\u0000"+
		"\u1644\u1646\u0003\u02ee\u0177\u0000\u1645\u1643\u0001\u0000\u0000\u0000"+
		"\u1646\u1649\u0001\u0000\u0000\u0000\u1647\u1645\u0001\u0000\u0000\u0000"+
		"\u1647\u1648\u0001\u0000\u0000\u0000\u1648\u02ed\u0001\u0000\u0000\u0000"+
		"\u1649\u1647\u0001\u0000\u0000\u0000\u164a\u164d\u0003\u01e0\u00f0\u0000"+
		"\u164b\u164d\u0003\u0270\u0138\u0000\u164c\u164a\u0001\u0000\u0000\u0000"+
		"\u164c\u164b\u0001\u0000\u0000\u0000\u164d\u164f\u0001\u0000\u0000\u0000"+
		"\u164e\u1650\u0003\u0312\u0189\u0000\u164f\u164e\u0001\u0000\u0000\u0000"+
		"\u164f\u1650\u0001\u0000\u0000\u0000\u1650\u02ef\u0001\u0000\u0000\u0000"+
		"\u1651\u1653\u0007U\u0000\u0000\u1652\u1654\u0003\u0316\u018b\u0000\u1653"+
		"\u1652\u0001\u0000\u0000\u0000\u1653\u1654\u0001\u0000\u0000\u0000\u1654"+
		"\u1656\u0001\u0000\u0000\u0000\u1655\u1657\u0003\u02f8\u017c\u0000\u1656"+
		"\u1655\u0001\u0000\u0000\u0000\u1656\u1657\u0001\u0000\u0000\u0000\u1657"+
		"\u16f1\u0001\u0000\u0000\u0000\u1658\u165e\u0005\u021d\u0000\u0000\u1659"+
		"\u165b\u0005\u00d7\u0000\u0000\u165a\u165c\u0005\u0205\u0000\u0000\u165b"+
		"\u165a\u0001\u0000\u0000\u0000\u165b\u165c\u0001\u0000\u0000\u0000\u165c"+
		"\u165e\u0001\u0000\u0000\u0000\u165d\u1658\u0001\u0000\u0000\u0000\u165d"+
		"\u1659\u0001\u0000\u0000\u0000\u165e\u1660\u0001\u0000\u0000\u0000\u165f"+
		"\u1661\u0003\u02fa\u017d\u0000\u1660\u165f\u0001\u0000\u0000\u0000\u1660"+
		"\u1661\u0001\u0000\u0000\u0000\u1661\u1663\u0001\u0000\u0000\u0000\u1662"+
		"\u1664\u0003\u02f8\u017c\u0000\u1663\u1662\u0001\u0000\u0000\u0000\u1663"+
		"\u1664\u0001\u0000\u0000\u0000\u1664\u16f1\u0001\u0000\u0000\u0000\u1665"+
		"\u1668\u0007V\u0000\u0000\u1666\u1669\u0003\u0316\u018b\u0000\u1667\u1669"+
		"\u0003\u02fa\u017d\u0000\u1668\u1666\u0001\u0000\u0000\u0000\u1668\u1667"+
		"\u0001\u0000\u0000\u0000\u1668\u1669\u0001\u0000\u0000\u0000\u1669\u166b"+
		"\u0001\u0000\u0000\u0000\u166a\u166c\u0003\u02f8\u017c\u0000\u166b\u166a"+
		"\u0001\u0000\u0000\u0000\u166b\u166c\u0001\u0000\u0000\u0000\u166c\u16f1"+
		"\u0001\u0000\u0000\u0000\u166d\u166f\u0005m\u0000\u0000\u166e\u1670\u0003"+
		"\u0316\u018b\u0000\u166f\u166e\u0001\u0000\u0000\u0000\u166f\u1670\u0001"+
		"\u0000\u0000\u0000\u1670\u16f1\u0001\u0000\u0000\u0000\u1671\u16f1\u0007"+
		"W\u0000\u0000\u1672\u1674\u0005\u0081\u0000\u0000\u1673\u1675\u0003\u0316"+
		"\u018b\u0000\u1674\u1673\u0001\u0000\u0000\u0000\u1674\u1675\u0001\u0000"+
		"\u0000\u0000\u1675\u1677\u0001\u0000\u0000\u0000\u1676\u1678\u0003\u02fe"+
		"\u017f\u0000\u1677\u1676\u0001\u0000\u0000\u0000\u1677\u1678\u0001\u0000"+
		"\u0000\u0000\u1678\u16f1\u0001\u0000\u0000\u0000\u1679\u167d\u0005\u01c1"+
		"\u0000\u0000\u167a\u167b\u0005\u01bf\u0000\u0000\u167b\u167d\u0005\u0081"+
		"\u0000\u0000\u167c\u1679\u0001\u0000\u0000\u0000\u167c\u167a\u0001\u0000"+
		"\u0000\u0000\u167d\u167f\u0001\u0000\u0000\u0000\u167e\u1680\u0003\u0316"+
		"\u018b\u0000\u167f\u167e\u0001\u0000\u0000\u0000\u167f\u1680\u0001\u0000"+
		"\u0000\u0000\u1680\u1682\u0001\u0000\u0000\u0000\u1681\u1683\u0005k\u0000"+
		"\u0000\u1682\u1681\u0001\u0000\u0000\u0000\u1682\u1683\u0001\u0000\u0000"+
		"\u0000\u1683\u16f1\u0001\u0000\u0000\u0000\u1684\u1686\u0005\u0276\u0000"+
		"\u0000\u1685\u1687\u0007X\u0000\u0000\u1686\u1685\u0001\u0000\u0000\u0000"+
		"\u1686\u1687\u0001\u0000\u0000\u0000\u1687\u16f1\u0001\u0000\u0000\u0000"+
		"\u1688\u168a\u0005k\u0000\u0000\u1689\u168b\u0003\u0316\u018b\u0000\u168a"+
		"\u1689\u0001\u0000\u0000\u0000\u168a\u168b\u0001\u0000\u0000\u0000\u168b"+
		"\u16f1\u0001\u0000\u0000\u0000\u168c\u168d\u0005\u0081\u0000\u0000\u168d"+
		"\u1690\u0005\u02e7\u0000\u0000\u168e\u1690\u0005\u02e4\u0000\u0000\u168f"+
		"\u168c\u0001\u0000\u0000\u0000\u168f\u168e\u0001\u0000\u0000\u0000\u1690"+
		"\u1691\u0001\u0000\u0000\u0000\u1691\u1693\u0003\u0316\u018b\u0000\u1692"+
		"\u1694\u0003\u02fe\u017f\u0000\u1693\u1692\u0001\u0000\u0000\u0000\u1693"+
		"\u1694\u0001\u0000\u0000\u0000\u1694\u16f1\u0001\u0000\u0000\u0000\u1695"+
		"\u1696\u0005\u01bf\u0000\u0000\u1696\u16a0\u0005\u02e4\u0000\u0000\u1697"+
		"\u16a0\u0005\u01d5\u0000\u0000\u1698\u1699\u0005\u01c1\u0000\u0000\u1699"+
		"\u16a0\u0005\u02e4\u0000\u0000\u169a\u169b\u0005\u01bf\u0000\u0000\u169b"+
		"\u169c\u0005\u0081\u0000\u0000\u169c\u16a0\u0005\u02e7\u0000\u0000\u169d"+
		"\u169e\u0005\u01c1\u0000\u0000\u169e\u16a0\u0005\u02e7\u0000\u0000\u169f"+
		"\u1695\u0001\u0000\u0000\u0000\u169f\u1697\u0001\u0000\u0000\u0000\u169f"+
		"\u1698\u0001\u0000\u0000\u0000\u169f\u169a\u0001\u0000\u0000\u0000\u169f"+
		"\u169d\u0001\u0000\u0000\u0000\u16a0\u16a1\u0001\u0000\u0000\u0000\u16a1"+
		"\u16a3\u0003\u0316\u018b\u0000\u16a2\u16a4\u0005k\u0000\u0000\u16a3\u16a2"+
		"\u0001\u0000\u0000\u0000\u16a3\u16a4\u0001\u0000\u0000\u0000\u16a4\u16f1"+
		"\u0001\u0000\u0000\u0000\u16a5\u16a7\u0005\u02e3\u0000\u0000\u16a6\u16a8"+
		"\u0003\u0316\u018b\u0000\u16a7\u16a6\u0001\u0000\u0000\u0000\u16a7\u16a8"+
		"\u0001\u0000\u0000\u0000\u16a8\u16f1\u0001\u0000\u0000\u0000\u16a9\u16ab"+
		"\u0005\u02fe\u0000\u0000\u16aa\u16ac\u0003\u0316\u018b\u0000\u16ab\u16aa"+
		"\u0001\u0000\u0000\u0000\u16ab\u16ac\u0001\u0000\u0000\u0000\u16ac\u16ae"+
		"\u0001\u0000\u0000\u0000\u16ad\u16af\u0003\u02f8\u017c\u0000\u16ae\u16ad"+
		"\u0001\u0000\u0000\u0000\u16ae\u16af\u0001\u0000\u0000\u0000\u16af\u16f1"+
		"\u0001\u0000\u0000\u0000\u16b0\u16f1\u0005\u00b7\u0000\u0000\u16b1\u16b3"+
		"\u0005\u02b6\u0000\u0000\u16b2\u16b4\u0003\u02fc\u017e\u0000\u16b3\u16b2"+
		"\u0001\u0000\u0000\u0000\u16b3\u16b4\u0001\u0000\u0000\u0000\u16b4\u16f1"+
		"\u0001\u0000\u0000\u0000\u16b5\u16b7\u0005\u02d3\u0000\u0000\u16b6\u16b8"+
		"\u0007X\u0000\u0000\u16b7\u16b6\u0001\u0000\u0000\u0000\u16b7\u16b8\u0001"+
		"\u0000\u0000\u0000\u16b8\u16f1\u0001\u0000\u0000\u0000\u16b9\u16bb\u0005"+
		"\u02b7\u0000\u0000\u16ba\u16bc\u0003\u02fc\u017e\u0000\u16bb\u16ba\u0001"+
		"\u0000\u0000\u0000\u16bb\u16bc\u0001\u0000\u0000\u0000\u16bc\u16f1\u0001"+
		"\u0000\u0000\u0000\u16bd\u16bf\u0005\u00b8\u0000\u0000\u16be\u16c0\u0003"+
		"\u02fc\u017e\u0000\u16bf\u16be\u0001\u0000\u0000\u0000\u16bf\u16c0\u0001"+
		"\u0000\u0000\u0000\u16c0\u16f1\u0001\u0000\u0000\u0000\u16c1\u16f1\u0005"+
		"\u02ba\u0000\u0000\u16c2\u16c4\u0005n\u0000\u0000\u16c3\u16c5\u0003\u0316"+
		"\u018b\u0000\u16c4\u16c3\u0001\u0000\u0000\u0000\u16c4\u16c5\u0001\u0000"+
		"\u0000\u0000\u16c5\u16f1\u0001\u0000\u0000\u0000\u16c6\u16f1\u0007Y\u0000"+
		"\u0000\u16c7\u16c8\u0005\u017b\u0000\u0000\u16c8\u16f1\u0005\u02e3\u0000"+
		"\u0000\u16c9\u16cd\u0005\u017b\u0000\u0000\u16ca\u16cb\u0005\u0081\u0000"+
		"\u0000\u16cb\u16ce\u0005\u02e7\u0000\u0000\u16cc\u16ce\u0005\u02e4\u0000"+
		"\u0000\u16cd\u16ca\u0001\u0000\u0000\u0000\u16cd\u16cc\u0001\u0000\u0000"+
		"\u0000\u16cd\u16ce\u0001\u0000\u0000\u0000\u16ce\u16d0\u0001\u0000\u0000"+
		"\u0000\u16cf\u16d1\u0003\u02fe\u017f\u0000\u16d0\u16cf\u0001\u0000\u0000"+
		"\u0000\u16d0\u16d1\u0001\u0000\u0000\u0000\u16d1\u16f1\u0001\u0000\u0000"+
		"\u0000\u16d2\u16d4\u0005\u02bc\u0000\u0000\u16d3\u16d5\u0003\u02fe\u017f"+
		"\u0000\u16d4\u16d3\u0001\u0000\u0000\u0000\u16d4\u16d5\u0001\u0000\u0000"+
		"\u0000\u16d5\u16f1\u0001\u0000\u0000\u0000\u16d6\u16d8\u0005\u02b1\u0000"+
		"\u0000\u16d7\u16d9\u0003\u0316\u018b\u0000\u16d8\u16d7\u0001\u0000\u0000"+
		"\u0000\u16d8\u16d9\u0001\u0000\u0000\u0000\u16d9\u16db\u0001\u0000\u0000"+
		"\u0000\u16da\u16dc\u0003\u02fe\u017f\u0000\u16db\u16da\u0001\u0000\u0000"+
		"\u0000\u16db\u16dc\u0001\u0000\u0000\u0000\u16dc\u16f1\u0001\u0000\u0000"+
		"\u0000\u16dd\u16df\u0005\u01a7\u0000\u0000\u16de\u16e0\u0003\u02fe\u017f"+
		"\u0000\u16df\u16de\u0001\u0000\u0000\u0000\u16df\u16e0\u0001\u0000\u0000"+
		"\u0000\u16e0\u16f1\u0001\u0000\u0000\u0000\u16e1\u16e3\u0005\u017d\u0000"+
		"\u0000\u16e2\u16e4\u0003\u02fe\u017f\u0000\u16e3\u16e2\u0001\u0000\u0000"+
		"\u0000\u16e3\u16e4\u0001\u0000\u0000\u0000\u16e4\u16f1\u0001\u0000\u0000"+
		"\u0000\u16e5\u16e6\u0005\u00ea\u0000\u0000\u16e6\u16e8\u0003\u02f2\u0179"+
		"\u0000\u16e7\u16e9\u0003\u02fe\u017f\u0000\u16e8\u16e7\u0001\u0000\u0000"+
		"\u0000\u16e8\u16e9\u0001\u0000\u0000\u0000\u16e9\u16f1\u0001\u0000\u0000"+
		"\u0000\u16ea\u16eb\u0005\u0271\u0000\u0000\u16eb\u16ed\u0003\u02f2\u0179"+
		"\u0000\u16ec\u16ee\u0003\u02fe\u017f\u0000\u16ed\u16ec\u0001\u0000\u0000"+
		"\u0000\u16ed\u16ee\u0001\u0000\u0000\u0000\u16ee\u16f1\u0001\u0000\u0000"+
		"\u0000\u16ef\u16f1\u0007Z\u0000\u0000\u16f0\u1651\u0001\u0000\u0000\u0000"+
		"\u16f0\u165d\u0001\u0000\u0000\u0000\u16f0\u1665\u0001\u0000\u0000\u0000"+
		"\u16f0\u166d\u0001\u0000\u0000\u0000\u16f0\u1671\u0001\u0000\u0000\u0000"+
		"\u16f0\u1672\u0001\u0000\u0000\u0000\u16f0\u167c\u0001\u0000\u0000\u0000"+
		"\u16f0\u1684\u0001\u0000\u0000\u0000\u16f0\u1688\u0001\u0000\u0000\u0000"+
		"\u16f0\u168f\u0001\u0000\u0000\u0000\u16f0\u169f\u0001\u0000\u0000\u0000"+
		"\u16f0\u16a5\u0001\u0000\u0000\u0000\u16f0\u16a9\u0001\u0000\u0000\u0000"+
		"\u16f0\u16b0\u0001\u0000\u0000\u0000\u16f0\u16b1\u0001\u0000\u0000\u0000"+
		"\u16f0\u16b5\u0001\u0000\u0000\u0000\u16f0\u16b9\u0001\u0000\u0000\u0000"+
		"\u16f0\u16bd\u0001\u0000\u0000\u0000\u16f0\u16c1\u0001\u0000\u0000\u0000"+
		"\u16f0\u16c2\u0001\u0000\u0000\u0000\u16f0\u16c6\u0001\u0000\u0000\u0000"+
		"\u16f0\u16c7\u0001\u0000\u0000\u0000\u16f0\u16c9\u0001\u0000\u0000\u0000"+
		"\u16f0\u16d2\u0001\u0000\u0000\u0000\u16f0\u16d6\u0001\u0000\u0000\u0000"+
		"\u16f0\u16dd\u0001\u0000\u0000\u0000\u16f0\u16e1\u0001\u0000\u0000\u0000"+
		"\u16f0\u16e5\u0001\u0000\u0000\u0000\u16f0\u16ea\u0001\u0000\u0000\u0000"+
		"\u16f0\u16ef\u0001\u0000\u0000\u0000\u16f1\u02f1\u0001\u0000\u0000\u0000"+
		"\u16f2\u16f3\u0005 \u0000\u0000\u16f3\u16f8\u0003\u02f4\u017a\u0000\u16f4"+
		"\u16f5\u0005&\u0000\u0000\u16f5\u16f7\u0003\u02f4\u017a\u0000\u16f6\u16f4"+
		"\u0001\u0000\u0000\u0000\u16f7\u16fa\u0001\u0000\u0000\u0000\u16f8\u16f6"+
		"\u0001\u0000\u0000\u0000\u16f8\u16f9\u0001\u0000\u0000\u0000\u16f9\u16fb"+
		"\u0001\u0000\u0000\u0000\u16fa\u16f8\u0001\u0000\u0000\u0000\u16fb\u16fc"+
		"\u0005!\u0000\u0000\u16fc\u02f3\u0001\u0000\u0000\u0000\u16fd\u1701\u0003"+
		"\u01dc\u00ee\u0000\u16fe\u1701\u0005\u0326\u0000\u0000\u16ff\u1701\u0005"+
		"\u0327\u0000\u0000\u1700\u16fd\u0001\u0000\u0000\u0000\u1700\u16fe\u0001"+
		"\u0000\u0000\u0000\u1700\u16ff\u0001\u0000\u0000\u0000\u1701\u02f5\u0001"+
		"\u0000\u0000\u0000\u1702\u1705\u0003\u01dc\u00ee\u0000\u1703\u1705\u0005"+
		"\u0326\u0000\u0000\u1704\u1702\u0001\u0000\u0000\u0000\u1704\u1703\u0001"+
		"\u0000\u0000\u0000\u1705\u02f7\u0001\u0000\u0000\u0000\u1706\u1708\u0007"+
		"[\u0000\u0000\u1707\u1706\u0001\u0000\u0000\u0000\u1708\u1709\u0001\u0000"+
		"\u0000\u0000\u1709\u1707\u0001\u0000\u0000\u0000\u1709\u170a\u0001\u0000"+
		"\u0000\u0000\u170a\u02f9\u0001\u0000\u0000\u0000\u170b\u170c\u0005 \u0000"+
		"\u0000\u170c\u170d\u0005\u0322\u0000\u0000\u170d\u170e\u0005&\u0000\u0000"+
		"\u170e\u170f\u0005\u0322\u0000\u0000\u170f\u1710\u0005!\u0000\u0000\u1710"+
		"\u02fb\u0001\u0000\u0000\u0000\u1711\u1712\u0005 \u0000\u0000\u1712\u1713"+
		"\u0005\u0322\u0000\u0000\u1713\u1714\u0005!\u0000\u0000\u1714\u02fd\u0001"+
		"\u0000\u0000\u0000\u1715\u1724\u0003\u0300\u0180\u0000\u1716\u1724\u0003"+
		"\u0302\u0181\u0000\u1717\u1724\u0005v\u0000\u0000\u1718\u1719\u0003\u0304"+
		"\u0182\u0000\u1719\u171b\u0003\u0216\u010b\u0000\u171a\u171c\u0005k\u0000"+
		"\u0000\u171b\u171a\u0001\u0000\u0000\u0000\u171b\u171c\u0001\u0000\u0000"+
		"\u0000\u171c\u1724\u0001\u0000\u0000\u0000\u171d\u1721\u0005k\u0000\u0000"+
		"\u171e\u171f\u0003\u0304\u0182\u0000\u171f\u1720\u0003\u0216\u010b\u0000"+
		"\u1720\u1722\u0001\u0000\u0000\u0000\u1721\u171e\u0001\u0000\u0000\u0000"+
		"\u1721\u1722\u0001\u0000\u0000\u0000\u1722\u1724\u0001\u0000\u0000\u0000"+
		"\u1723\u1715\u0001\u0000\u0000\u0000\u1723\u1716\u0001\u0000\u0000\u0000"+
		"\u1723\u1717\u0001\u0000\u0000\u0000\u1723\u1718\u0001\u0000\u0000\u0000"+
		"\u1723\u171d\u0001\u0000\u0000\u0000\u1724\u02ff\u0001\u0000\u0000\u0000"+
		"\u1725\u1727\u0005]\u0000\u0000\u1726\u1728\u0005k\u0000\u0000\u1727\u1726"+
		"\u0001\u0000\u0000\u0000\u1727\u1728\u0001\u0000\u0000\u0000\u1728\u172c"+
		"\u0001\u0000\u0000\u0000\u1729\u172a\u0005k\u0000\u0000\u172a\u172c\u0005"+
		"]\u0000\u0000\u172b\u1725\u0001\u0000\u0000\u0000\u172b\u1729\u0001\u0000"+
		"\u0000\u0000\u172c\u0301\u0001\u0000\u0000\u0000\u172d\u172f\u0005\u02cd"+
		"\u0000\u0000\u172e\u1730\u0005k\u0000\u0000\u172f\u172e\u0001\u0000\u0000"+
		"\u0000\u172f\u1730\u0001\u0000\u0000\u0000\u1730\u1734\u0001\u0000\u0000"+
		"\u0000\u1731\u1732\u0005k\u0000\u0000\u1732\u1734\u0005\u02cd\u0000\u0000"+
		"\u1733\u172d\u0001\u0000\u0000\u0000\u1733\u1731\u0001\u0000\u0000\u0000"+
		"\u1734\u0303\u0001\u0000\u0000\u0000\u1735\u1736\u0007\\\u0000\u0000\u1736"+
		"\u1739\u0005\u0271\u0000\u0000\u1737\u1739\u0005\u0083\u0000\u0000\u1738"+
		"\u1735\u0001\u0000\u0000\u0000\u1738\u1737\u0001\u0000\u0000\u0000\u1739"+
		"\u0305\u0001\u0000\u0000\u0000\u173a\u173c\u0005\u00c2\u0000\u0000\u173b"+
		"\u173a\u0001\u0000\u0000\u0000\u173b\u173c\u0001\u0000\u0000\u0000\u173c"+
		"\u173d\u0001\u0000\u0000\u0000\u173d\u173f\u0005\u008d\u0000\u0000\u173e"+
		"\u1740\u0005\u0019\u0000\u0000\u173f\u173e\u0001\u0000\u0000\u0000\u173f"+
		"\u1740\u0001\u0000\u0000\u0000\u1740\u1741\u0001\u0000\u0000\u0000\u1741"+
		"\u1742\u0003\u01ec\u00f6\u0000\u1742\u0307\u0001\u0000\u0000\u0000\u1743"+
		"\u1745\u0005\u00c2\u0000\u0000\u1744\u1743\u0001\u0000\u0000\u0000\u1744"+
		"\u1745\u0001\u0000\u0000\u0000\u1745\u1746\u0001\u0000\u0000\u0000\u1746"+
		"\u1748\u0005\u00e3\u0000\u0000\u1747\u1749\u0005\u0019\u0000\u0000\u1748"+
		"\u1747\u0001\u0000\u0000\u0000\u1748\u1749\u0001\u0000\u0000\u0000\u1749"+
		"\u174a\u0001\u0000\u0000\u0000\u174a\u174b\u0003\u01dc\u00ee\u0000\u174b"+
		"\u0309\u0001\u0000\u0000\u0000\u174c\u174e\u0005\u00c2\u0000\u0000\u174d"+
		"\u174c\u0001\u0000\u0000\u0000\u174d\u174e\u0001\u0000\u0000\u0000\u174e"+
		"\u174f\u0001\u0000\u0000\u0000\u174f\u1751\u0003\u0304\u0182\u0000\u1750"+
		"\u1752\u0005\u0019\u0000\u0000\u1751\u1750\u0001\u0000\u0000\u0000\u1751"+
		"\u1752\u0001\u0000\u0000\u0000\u1752\u1753\u0001\u0000\u0000\u0000\u1753"+
		"\u1754\u0003\u0216\u010b\u0000\u1754\u030b\u0001\u0000\u0000\u0000\u1755"+
		"\u175b\u0007]\u0000\u0000\u1756\u1758\u0005 \u0000\u0000\u1757\u1759\u0005"+
		"\u0322\u0000\u0000\u1758\u1757\u0001\u0000\u0000\u0000\u1758\u1759\u0001"+
		"\u0000\u0000\u0000\u1759\u175a\u0001\u0000\u0000\u0000\u175a\u175c\u0005"+
		"!\u0000\u0000\u175b\u1756\u0001\u0000\u0000\u0000\u175b\u175c\u0001\u0000"+
		"\u0000\u0000\u175c\u030d\u0001\u0000\u0000\u0000\u175d\u175e\u0007^\u0000"+
		"\u0000\u175e\u030f\u0001\u0000\u0000\u0000\u175f\u1760\u0007_\u0000\u0000"+
		"\u1760\u0311\u0001\u0000\u0000\u0000\u1761\u1762\u0007`\u0000\u0000\u1762"+
		"\u0313\u0001\u0000\u0000\u0000\u1763\u1764\u0007*\u0000\u0000\u1764\u0315"+
		"\u0001\u0000\u0000\u0000\u1765\u1766\u0005 \u0000\u0000\u1766\u1767\u0005"+
		"\u0322\u0000\u0000\u1767\u1768\u0005!\u0000\u0000\u1768\u0317\u0001\u0000"+
		"\u0000\u0000\u1769\u176a\u0003\u0304\u0182\u0000\u176a\u176b\u0003\u0216"+
		"\u010b\u0000\u176b\u0319\u0001\u0000\u0000\u0000\u176c\u176f\u0005\u008d"+
		"\u0000\u0000\u176d\u1770\u0003\u01ec\u00f6\u0000\u176e\u1770\u0003\u01d6"+
		"\u00eb\u0000\u176f\u176d\u0001\u0000\u0000\u0000\u176f\u176e\u0001\u0000"+
		"\u0000\u0000\u1770\u031b\u0001\u0000\u0000\u0000\u1771\u177a\u0005 \u0000"+
		"\u0000\u1772\u1777\u0003\u01ee\u00f7\u0000\u1773\u1774\u0005&\u0000\u0000"+
		"\u1774\u1776\u0003\u01ee\u00f7\u0000\u1775\u1773\u0001\u0000\u0000\u0000"+
		"\u1776\u1779\u0001\u0000\u0000\u0000\u1777\u1775\u0001\u0000\u0000\u0000"+
		"\u1777\u1778\u0001\u0000\u0000\u0000\u1778\u177b\u0001\u0000\u0000\u0000"+
		"\u1779\u1777\u0001\u0000\u0000\u0000\u177a\u1772\u0001\u0000\u0000\u0000"+
		"\u177a\u177b\u0001\u0000\u0000\u0000\u177b\u177c\u0001\u0000\u0000\u0000"+
		"\u177c\u177d\u0005!\u0000\u0000\u177d\u031d\u0001\u0000\u0000\u0000\u177e"+
		"\u177f\u0005\u0134\u0000\u0000\u177f\u1780\u0005\u01cb\u0000\u0000\u1780"+
		"\u1781\u0005\u00f6\u0000\u0000\u1781\u031f\u0001\u0000\u0000\u0000\u1782"+
		"\u1783\u0005\u0134\u0000\u0000\u1783\u1784\u0005\u00f6\u0000\u0000\u1784"+
		"\u0321\u0001\u0000\u0000\u0000\u1785\u1786\u0005\u0322\u0000\u0000\u1786"+
		"\u0323\u0001\u0000\u0000\u0000\u1787\u1788\u0003\u01ee\u00f7\u0000\u1788"+
		"\u0325\u0001\u0000\u0000\u0000\u1789\u178a\u0003\u01ee\u00f7\u0000\u178a"+
		"\u0327\u0001\u0000\u0000\u0000\u178b\u178c\u0003\u01ee\u00f7\u0000\u178c"+
		"\u0329\u0001\u0000\u0000\u0000\u178d\u178e\u0007a\u0000\u0000\u178e\u032b"+
		"\u0001\u0000\u0000\u0000\u178f\u1790\u0007b\u0000\u0000\u1790\u032d\u0001"+
		"\u0000\u0000\u0000\u1791\u1792\u0005\u010f\u0000\u0000\u1792\u1793\u0005"+
		"\u0080\u0000\u0000\u1793\u1794\u0003\u01dc\u00ee\u0000\u1794\u032f\u0001"+
		"\u0000\u0000\u0000\u1795\u1796\u0005\u02d8\u0000\u0000\u1796\u1797\u0003"+
		"\u0212\u0109\u0000\u1797\u0331\u0001\u0000\u0000\u0000\u1798\u1799\u0005"+
		"\u0129\u0000\u0000\u1799\u179a\u0003\u01fa\u00fd\u0000\u179a\u0333\u0001"+
		"\u0000\u0000\u0000\u179b\u17b1\u0007c\u0000\u0000\u179c\u179f\u0003\u021c"+
		"\u010e\u0000\u179d\u17a0\u0003\u0288\u0144\u0000\u179e\u17a0\u0003\u02f4"+
		"\u017a\u0000\u179f\u179d\u0001\u0000\u0000\u0000\u179f\u179e\u0001\u0000"+
		"\u0000\u0000\u179f\u17a0\u0001\u0000\u0000\u0000\u17a0\u17b2\u0001\u0000"+
		"\u0000\u0000\u17a1\u17a3\u0003\u03ec\u01f6\u0000\u17a2\u17a1\u0001\u0000"+
		"\u0000\u0000\u17a2\u17a3\u0001\u0000\u0000\u0000\u17a3\u17a8\u0001\u0000"+
		"\u0000\u0000\u17a4\u17a9\u0003\u03ee\u01f7\u0000\u17a5\u17a6\u0005\u010f"+
		"\u0000\u0000\u17a6\u17a7\u0005\u009d\u0000\u0000\u17a7\u17a9\u0003\u0322"+
		"\u0191\u0000\u17a8\u17a4\u0001\u0000\u0000\u0000\u17a8\u17a5\u0001\u0000"+
		"\u0000\u0000\u17a9\u17b2\u0001\u0000\u0000\u0000\u17aa\u17ae\u0005W\u0000"+
		"\u0000\u17ab\u17ac\u0005\u0112\u0000\u0000\u17ac\u17ad\u0005\u0019\u0000"+
		"\u0000\u17ad\u17af\u0005>\u0000\u0000\u17ae\u17ab\u0001\u0000\u0000\u0000"+
		"\u17ae\u17af\u0001\u0000\u0000\u0000\u17af\u17b0\u0001\u0000\u0000\u0000"+
		"\u17b0\u17b2\u0003\u015a\u00ad\u0000\u17b1\u179c\u0001\u0000\u0000\u0000"+
		"\u17b1\u17a2\u0001\u0000\u0000\u0000\u17b1\u17aa\u0001\u0000\u0000\u0000"+
		"\u17b2\u0335\u0001\u0000\u0000\u0000\u17b3\u17b4\u0007d\u0000\u0000\u17b4"+
		"\u17b5\u0003\u0212\u0109\u0000\u17b5\u0337\u0001\u0000\u0000\u0000\u17b6"+
		"\u17b7\u0007d\u0000\u0000\u17b7\u17b8\u0003\u021c\u010e\u0000\u17b8\u0339"+
		"\u0001\u0000\u0000\u0000\u17b9\u17ba\u0005\u016c\u0000\u0000\u17ba\u17bb"+
		"\u0003\u01de\u00ef\u0000\u17bb\u033b\u0001\u0000\u0000\u0000\u17bc\u17bd"+
		"\u0005\u02f1\u0000\u0000\u17bd\u17be\u0003\u0270\u0138\u0000\u17be\u033d"+
		"\u0001\u0000\u0000\u0000\u17bf\u17c2\u0003\u033a\u019d\u0000\u17c0\u17c2"+
		"\u0003\u033c\u019e\u0000\u17c1\u17bf\u0001\u0000\u0000\u0000\u17c1\u17c0"+
		"\u0001\u0000\u0000\u0000\u17c2\u033f\u0001\u0000\u0000\u0000\u17c3\u17d0"+
		"\u0005T\u0000\u0000\u17c4\u17c5\u0005o\u0000\u0000\u17c5\u17d0\u0005\u0150"+
		"\u0000\u0000\u17c6\u17c7\u0005\u00a4\u0000\u0000\u17c7\u17d0\u0005\u02a7"+
		"\u0000\u0000\u17c8\u17d0\u0005\u00a7\u0000\u0000\u17c9\u17d0\u0005\u0153"+
		"\u0000\u0000\u17ca\u17d0\u0005\u01a9\u0000\u0000\u17cb\u17cc\u0005\u01f0"+
		"\u0000\u0000\u17cc\u17d0\u0005\u0101\u0000\u0000\u17cd\u17d0\u0005\u0280"+
		"\u0000\u0000\u17ce\u17d0\u0005\u02a6\u0000\u0000\u17cf\u17c3\u0001\u0000"+
		"\u0000\u0000\u17cf\u17c4\u0001\u0000\u0000\u0000\u17cf\u17c6\u0001\u0000"+
		"\u0000\u0000\u17cf\u17c8\u0001\u0000\u0000\u0000\u17cf\u17c9\u0001\u0000"+
		"\u0000\u0000\u17cf\u17ca\u0001\u0000\u0000\u0000\u17cf\u17cb\u0001\u0000"+
		"\u0000\u0000\u17cf\u17cd\u0001\u0000\u0000\u0000\u17cf\u17ce\u0001\u0000"+
		"\u0000\u0000\u17d0\u0341\u0001\u0000\u0000\u0000\u17d1\u17d2\u0005\u0271"+
		"\u0000\u0000\u17d2\u17d3\u0003\u0344\u01a2\u0000\u17d3\u0343\u0001\u0000"+
		"\u0000\u0000\u17d4\u17d9\u0003\u0346\u01a3\u0000\u17d5\u17d6\u0005&\u0000"+
		"\u0000\u17d6\u17d8\u0003\u034a\u01a5\u0000\u17d7\u17d5\u0001\u0000\u0000"+
		"\u0000\u17d8\u17db\u0001\u0000\u0000\u0000\u17d9\u17d7\u0001\u0000\u0000"+
		"\u0000\u17d9\u17da\u0001\u0000\u0000\u0000\u17da\u17e9\u0001\u0000\u0000"+
		"\u0000\u17db\u17d9\u0001\u0000\u0000\u0000\u17dc\u17dd\u0003\u0204\u0102"+
		"\u0000\u17dd\u17de\u0003\u0206\u0103\u0000\u17de\u17df\u0005\u0019\u0000"+
		"\u0000\u17df\u17e0\u0003\u0208\u0104\u0000\u17e0\u17e5\u0001\u0000\u0000"+
		"\u0000\u17e1\u17e2\u0005&\u0000\u0000\u17e2\u17e4\u0003\u034a\u01a5\u0000"+
		"\u17e3\u17e1\u0001\u0000\u0000\u0000\u17e4\u17e7\u0001\u0000\u0000\u0000"+
		"\u17e5\u17e3\u0001\u0000\u0000\u0000\u17e5\u17e6\u0001\u0000\u0000\u0000"+
		"\u17e6\u17e9\u0001\u0000\u0000\u0000\u17e7\u17e5\u0001\u0000\u0000\u0000"+
		"\u17e8\u17d4\u0001\u0000\u0000\u0000\u17e8\u17dc\u0001\u0000\u0000\u0000"+
		"\u17e9\u0345\u0001\u0000\u0000\u0000\u17ea\u17eb\u0003\u0206\u0103\u0000"+
		"\u17eb\u17ec\u0003\u0348\u01a4\u0000\u17ec\u17ed\u0003\u0208\u0104\u0000"+
		"\u17ed\u1802\u0001\u0000\u0000\u0000\u17ee\u17ef\u0003\u01fe\u00ff\u0000"+
		"\u17ef\u17f0\u0003\u0348\u01a4\u0000\u17f0\u17f1\u0003\u0270\u0138\u0000"+
		"\u17f1\u1802\u0001\u0000\u0000\u0000\u17f2\u17f3\u0003\u0202\u0101\u0000"+
		"\u17f3\u17f4\u0003\u0348\u01a4\u0000\u17f4\u17f5\u0003\u0208\u0104\u0000"+
		"\u17f5\u1802\u0001\u0000\u0000\u0000\u17f6\u17ff\u0005\u01be\u0000\u0000"+
		"\u17f7\u17f8\u0003\u0348\u01a4\u0000\u17f8\u17f9\u0003\u0270\u0138\u0000"+
		"\u17f9\u1800\u0001\u0000\u0000\u0000\u17fa\u17fc\u0003\u0216\u010b\u0000"+
		"\u17fb\u17fd\u0003\u031a\u018d\u0000\u17fc\u17fb\u0001\u0000\u0000\u0000"+
		"\u17fc\u17fd\u0001\u0000\u0000\u0000\u17fd\u1800\u0001\u0000\u0000\u0000"+
		"\u17fe\u1800\u0005\u00c2\u0000\u0000\u17ff\u17f7\u0001\u0000\u0000\u0000"+
		"\u17ff\u17fa\u0001\u0000\u0000\u0000\u17ff\u17fe\u0001\u0000\u0000\u0000"+
		"\u1800\u1802\u0001\u0000\u0000\u0000\u1801\u17ea\u0001\u0000\u0000\u0000"+
		"\u1801\u17ee\u0001\u0000\u0000\u0000\u1801\u17f2\u0001\u0000\u0000\u0000"+
		"\u1801\u17f6\u0001\u0000\u0000\u0000\u1802\u0347\u0001\u0000\u0000\u0000"+
		"\u1803\u1804\u0007E\u0000\u0000\u1804\u0349\u0001\u0000\u0000\u0000\u1805"+
		"\u1806\u0003\u0204\u0102\u0000\u1806\u1807\u0003\u0206\u0103\u0000\u1807"+
		"\u1808\u0005\u0019\u0000\u0000\u1808\u1809\u0003\u0208\u0104\u0000\u1809"+
		"\u180c\u0001\u0000\u0000\u0000\u180a\u180c\u0003\u0346\u01a3\u0000\u180b"+
		"\u1805\u0001\u0000\u0000\u0000\u180b\u180a\u0001\u0000\u0000\u0000\u180c"+
		"\u034b\u0001\u0000\u0000\u0000\u180d\u180e\u0005\u0273\u0000\u0000\u180e"+
		"\u180f\u0007e\u0000\u0000\u180f\u1810\u0005\u017a\u0000\u0000\u1810\u034d"+
		"\u0001\u0000\u0000\u0000\u1811\u1812\u0005\u0273\u0000\u0000\u1812\u1813"+
		"\u0005l\u0000\u0000\u1813\u1816\u0005\u00f0\u0000\u0000\u1814\u1815\u0005"+
		"\u0138\u0000\u0000\u1815\u1817\u0003\u0256\u012b\u0000\u1816\u1814\u0001"+
		"\u0000\u0000\u0000\u1816\u1817\u0001\u0000\u0000\u0000\u1817\u181a\u0001"+
		"\u0000\u0000\u0000\u1818\u1819\u0005\u0114\u0000\u0000\u1819\u181b\u0005"+
		"\u0322\u0000\u0000\u181a\u1818\u0001\u0000\u0000\u0000\u181a\u181b\u0001"+
		"\u0000\u0000\u0000\u181b\u181d\u0001\u0000\u0000\u0000\u181c\u181e\u0003"+
		"\u01b6\u00db\u0000\u181d\u181c\u0001\u0000\u0000\u0000\u181d\u181e\u0001"+
		"\u0000\u0000\u0000\u181e\u034f\u0001\u0000\u0000\u0000\u181f\u1820\u0005"+
		"\u0273\u0000\u0000\u1820\u1821\u0005\u0082\u0000\u0000\u1821\u1823\u0005"+
		"\u0271\u0000\u0000\u1822\u1824\u0003\u033e\u019f\u0000\u1823\u1822\u0001"+
		"\u0000\u0000\u0000\u1823\u1824\u0001\u0000\u0000\u0000\u1824\u0351\u0001"+
		"\u0000\u0000\u0000\u1825\u1826\u0005\u0273\u0000\u0000\u1826\u1828\u0005"+
		"\u008e\u0000\u0000\u1827\u1829\u0003\u033e\u019f\u0000\u1828\u1827\u0001"+
		"\u0000\u0000\u0000\u1828\u1829\u0001\u0000\u0000\u0000\u1829\u0353\u0001"+
		"\u0000\u0000\u0000\u182a\u182c\u0005\u0273\u0000\u0000\u182b\u182d\u0005"+
		"\u00fc\u0000\u0000\u182c\u182b\u0001\u0000\u0000\u0000\u182c\u182d\u0001"+
		"\u0000\u0000\u0000\u182d\u182f\u0001\u0000\u0000\u0000\u182e\u1830\u0005"+
		"\u0115\u0000\u0000\u182f\u182e\u0001\u0000\u0000\u0000\u182f\u1830\u0001"+
		"\u0000\u0000\u0000\u1830\u1831\u0001\u0000\u0000\u0000\u1831\u1832\u0007"+
		"f\u0000\u0000\u1832\u1834\u0003\u0338\u019c\u0000\u1833\u1835\u0003\u0336"+
		"\u019b\u0000\u1834\u1833\u0001\u0000\u0000\u0000\u1834\u1835\u0001\u0000"+
		"\u0000\u0000\u1835\u1837\u0001\u0000\u0000\u0000\u1836\u1838\u0003\u033e"+
		"\u019f\u0000\u1837\u1836\u0001\u0000\u0000\u0000\u1837\u1838\u0001\u0000"+
		"\u0000\u0000\u1838\u0355\u0001\u0000\u0000\u0000\u1839\u183a\u0005\u0273"+
		"\u0000\u0000\u183a\u183b\u0005\u00a8\u0000\u0000\u183b\u183d\u0007\b\u0000"+
		"\u0000\u183c\u183e\u0003\u031e\u018f\u0000\u183d\u183c\u0001\u0000\u0000"+
		"\u0000\u183d\u183e\u0001\u0000\u0000\u0000\u183e\u183f\u0001\u0000\u0000"+
		"\u0000\u183f\u1840\u0003\u0212\u0109\u0000\u1840\u0357\u0001\u0000\u0000"+
		"\u0000\u1841\u1842\u0005\u0273\u0000\u0000\u1842\u1843\u0005\u00a8\u0000"+
		"\u0000\u1843\u1844\u0005\u00ef\u0000\u0000\u1844\u1845\u0003\u022a\u0115"+
		"\u0000\u1845\u0359\u0001\u0000\u0000\u0000\u1846\u1847\u0005\u0273\u0000"+
		"\u0000\u1847\u1848\u0005\u00a8\u0000\u0000\u1848\u1849\u0005\u0117\u0000"+
		"\u0000\u1849\u184a\u0003\u0230\u0118\u0000\u184a\u035b\u0001\u0000\u0000"+
		"\u0000\u184b\u184c\u0005\u0273\u0000\u0000\u184c\u184d\u0005\u00a8\u0000"+
		"\u0000\u184d\u184e\u0005\u020c\u0000\u0000\u184e\u184f\u0003\u0232\u0119"+
		"\u0000\u184f\u035d\u0001\u0000\u0000\u0000\u1850\u1851\u0005\u0273\u0000"+
		"\u0000\u1851\u1852\u0005\u00a8\u0000\u0000\u1852\u1853\u0005\u02a9\u0000"+
		"\u0000\u1853\u1854\u0003\u021c\u010e\u0000\u1854\u035f\u0001\u0000\u0000"+
		"\u0000\u1855\u1856\u0005\u0273\u0000\u0000\u1856\u1857\u0005\u00a8\u0000"+
		"\u0000\u1857\u1858\u0005\u02c1\u0000\u0000\u1858\u1859\u0003\u025e\u012f"+
		"\u0000\u1859\u0361\u0001\u0000\u0000\u0000\u185a\u185b\u0005\u0273\u0000"+
		"\u0000\u185b\u185c\u0005\u00a8\u0000\u0000\u185c\u185d\u0005\u02d9\u0000"+
		"\u0000\u185d\u185e\u0003\u0228\u0114\u0000\u185e\u0363\u0001\u0000\u0000"+
		"\u0000\u185f\u1860\u0005\u0273\u0000\u0000\u1860\u1861\u0005\u00a8\u0000"+
		"\u0000\u1861\u1862\u0005\u02e9\u0000\u0000\u1862\u1863\u0003\u0234\u011a"+
		"\u0000\u1863\u0365\u0001\u0000\u0000\u0000\u1864\u1865\u0005\u0273\u0000"+
		"\u0000\u1865\u1867\u0007g\u0000\u0000\u1866\u1868\u0003\u033e\u019f\u0000"+
		"\u1867\u1866\u0001\u0000\u0000\u0000\u1867\u1868\u0001\u0000\u0000\u0000"+
		"\u1868\u0367\u0001\u0000\u0000\u0000\u1869\u186a\u0005\u0273\u0000\u0000"+
		"\u186a\u186b\u0005\u00e7\u0000\u0000\u186b\u186c\u0003\u025c\u012e\u0000"+
		"\u186c\u186d\u0007h\u0000\u0000\u186d\u0369\u0001\u0000\u0000\u0000\u186e"+
		"\u1870\u0005\u0273\u0000\u0000\u186f\u1871\u0005\u029b\u0000\u0000\u1870"+
		"\u186f\u0001\u0000\u0000\u0000\u1870\u1871\u0001\u0000\u0000\u0000\u1871"+
		"\u1872\u0001\u0000\u0000\u0000\u1872\u1873\u0005\u00e8\u0000\u0000\u1873"+
		"\u036b\u0001\u0000\u0000\u0000\u1874\u1879\u0005\u0273\u0000\u0000\u1875"+
		"\u1876\u00054\u0000\u0000\u1876\u1877\u0005 \u0000\u0000\u1877\u1878\u0005"+
		"\u0012\u0000\u0000\u1878\u187a\u0005!\u0000\u0000\u1879\u1875\u0001\u0000"+
		"\u0000\u0000\u1879\u187a\u0001\u0000\u0000\u0000\u187a\u187b\u0001\u0000"+
		"\u0000\u0000\u187b\u187d\u0005\u00ec\u0000\u0000\u187c\u187e\u0003\u01b6"+
		"\u00db\u0000\u187d\u187c\u0001\u0000\u0000\u0000\u187d\u187e\u0001\u0000"+
		"\u0000\u0000\u187e\u036d\u0001\u0000\u0000\u0000\u187f\u1880\u0005\u0273"+
		"\u0000\u0000\u1880\u1882\u0005\u00f0\u0000\u0000\u1881\u1883\u0003\u0336"+
		"\u019b\u0000\u1882\u1881\u0001\u0000\u0000\u0000\u1882\u1883\u0001\u0000"+
		"\u0000\u0000\u1883\u1885\u0001\u0000\u0000\u0000\u1884\u1886\u0003\u033e"+
		"\u019f\u0000\u1885\u1884\u0001\u0000\u0000\u0000\u1885\u1886\u0001\u0000"+
		"\u0000\u0000\u1886\u036f\u0001\u0000\u0000\u0000\u1887\u1888\u0005\u0273"+
		"\u0000\u0000\u1888\u1889\u0005\u0117\u0000\u0000\u1889\u188a\u0005\u008c"+
		"\u0000\u0000\u188a\u188b\u0003\u0230\u0118\u0000\u188b\u0371\u0001\u0000"+
		"\u0000\u0000\u188c\u188d\u0005\u0273\u0000\u0000\u188d\u188e\u0005\u0117"+
		"\u0000\u0000\u188e\u1890\u0005\u0299\u0000\u0000\u188f\u1891\u0003\u033e"+
		"\u019f\u0000\u1890\u188f\u0001\u0000\u0000\u0000\u1890\u1891\u0001\u0000"+
		"\u0000\u0000\u1891\u0373\u0001\u0000\u0000\u0000\u1892\u1893\u0005\u0273"+
		"\u0000\u0000\u1893\u18a4\u0005\u0121\u0000\u0000\u1894\u1897\u0005\u010f"+
		"\u0000\u0000\u1895\u1898\u0003\u0228\u0114\u0000\u1896\u1898\u0003\u0258"+
		"\u012c\u0000\u1897\u1895\u0001\u0000\u0000\u0000\u1897\u1896\u0001\u0000"+
		"\u0000\u0000\u1898\u18a2\u0001\u0000\u0000\u0000\u1899\u189a\u0005\u02dc"+
		"\u0000\u0000\u189a\u189f\u0003\u0258\u012c\u0000\u189b\u189c\u0005&\u0000"+
		"\u0000\u189c\u189e\u0003\u0258\u012c\u0000\u189d\u189b\u0001\u0000\u0000"+
		"\u0000\u189e\u18a1\u0001\u0000\u0000\u0000\u189f\u189d\u0001\u0000\u0000"+
		"\u0000\u189f\u18a0\u0001\u0000\u0000\u0000\u18a0\u18a3\u0001\u0000\u0000"+
		"\u0000\u18a1\u189f\u0001\u0000\u0000\u0000\u18a2\u1899\u0001\u0000\u0000"+
		"\u0000\u18a2\u18a3\u0001\u0000\u0000\u0000\u18a3\u18a5\u0001\u0000\u0000"+
		"\u0000\u18a4\u1894\u0001\u0000\u0000\u0000\u18a4\u18a5\u0001\u0000\u0000"+
		"\u0000\u18a5\u0375\u0001\u0000\u0000\u0000\u18a6\u18a8\u0005\u0273\u0000"+
		"\u0000\u18a7\u18a9\u0005\u00fc\u0000\u0000\u18a8\u18a7\u0001\u0000\u0000"+
		"\u0000\u18a8\u18a9\u0001\u0000\u0000\u0000\u18a9\u18aa\u0001\u0000\u0000"+
		"\u0000\u18aa\u18ab\u0007i\u0000\u0000\u18ab\u18ad\u0003\u0338\u019c\u0000"+
		"\u18ac\u18ae\u0003\u0336\u019b\u0000\u18ad\u18ac\u0001\u0000\u0000\u0000"+
		"\u18ad\u18ae\u0001\u0000\u0000\u0000\u18ae\u18b0\u0001\u0000\u0000\u0000"+
		"\u18af\u18b1\u0003\u033c\u019e\u0000\u18b0\u18af\u0001\u0000\u0000\u0000"+
		"\u18b0\u18b1\u0001\u0000\u0000\u0000\u18b1\u0377\u0001\u0000\u0000\u0000"+
		"\u18b2\u18b3\u0005\u0273\u0000\u0000\u18b3\u18b4\u0005\u0180\u0000\u0000"+
		"\u18b4\u18b5\u0005\u0299\u0000\u0000\u18b5\u0379\u0001\u0000\u0000\u0000"+
		"\u18b6\u18b7\u0005\u0273\u0000\u0000\u18b7\u18b8\u0005\u01de\u0000\u0000"+
		"\u18b8\u18ba\u0005\u02aa\u0000\u0000\u18b9\u18bb\u0003\u0336\u019b\u0000"+
		"\u18ba\u18b9\u0001\u0000\u0000\u0000\u18ba\u18bb\u0001\u0000\u0000\u0000"+
		"\u18bb\u18bd\u0001\u0000\u0000\u0000\u18bc\u18be\u0003\u033e\u019f\u0000"+
		"\u18bd\u18bc\u0001\u0000\u0000\u0000\u18bd\u18be\u0001\u0000\u0000\u0000"+
		"\u18be\u037b\u0001\u0000\u0000\u0000\u18bf\u18c0\u0005\u0273\u0000\u0000"+
		"\u18c0\u18c1\u0005\u01fe\u0000\u0000\u18c1\u037d\u0001\u0000\u0000\u0000"+
		"\u18c2\u18c3\u0005\u0273\u0000\u0000\u18c3\u18c4\u0005\u020a\u0000\u0000"+
		"\u18c4\u037f\u0001\u0000\u0000\u0000\u18c5\u18c6\u0005\u0273\u0000\u0000"+
		"\u18c6\u18c7\u0005\u020c\u0000\u0000\u18c7\u18c8\u0005\u008c\u0000\u0000"+
		"\u18c8\u18c9\u0003\u0230\u0118\u0000\u18c9\u0381\u0001\u0000\u0000\u0000"+
		"\u18ca\u18cb\u0005\u0273\u0000\u0000\u18cb\u18cc\u0005\u020c\u0000\u0000"+
		"\u18cc\u18ce\u0005\u0299\u0000\u0000\u18cd\u18cf\u0003\u033e\u019f\u0000"+
		"\u18ce\u18cd\u0001\u0000\u0000\u0000\u18ce\u18cf\u0001\u0000\u0000\u0000"+
		"\u18cf\u0383\u0001\u0000\u0000\u0000\u18d0\u18d2\u0005\u0273\u0000\u0000"+
		"\u18d1\u18d3\u0005\u0115\u0000\u0000\u18d2\u18d1\u0001\u0000\u0000\u0000"+
		"\u18d2\u18d3\u0001\u0000\u0000\u0000\u18d3\u18d4\u0001\u0000\u0000\u0000"+
		"\u18d4\u18d5\u0005\u020e\u0000\u0000\u18d5\u0385\u0001\u0000\u0000\u0000"+
		"\u18d6\u18d7\u0005\u0273\u0000\u0000\u18d7\u18e0\u0005\u020f\u0000\u0000"+
		"\u18d8\u18dd\u0003\u0340\u01a0\u0000\u18d9\u18da\u0005&\u0000\u0000\u18da"+
		"\u18dc\u0003\u0340\u01a0\u0000\u18db\u18d9\u0001\u0000\u0000\u0000\u18dc"+
		"\u18df\u0001\u0000\u0000\u0000\u18dd\u18db\u0001\u0000\u0000\u0000\u18dd"+
		"\u18de\u0001\u0000\u0000\u0000\u18de\u18e1\u0001\u0000\u0000\u0000\u18df"+
		"\u18dd\u0001\u0000\u0000\u0000\u18e0\u18d8\u0001\u0000\u0000\u0000\u18e0"+
		"\u18e1\u0001\u0000\u0000\u0000\u18e1\u18e5\u0001\u0000\u0000\u0000\u18e2"+
		"\u18e3\u0005\u010f\u0000\u0000\u18e3\u18e4\u0005\u0214\u0000\u0000\u18e4"+
		"\u18e6\u0005\u0322\u0000\u0000\u18e5\u18e2\u0001\u0000\u0000\u0000\u18e5"+
		"\u18e6\u0001\u0000\u0000\u0000\u18e6\u18e8\u0001\u0000\u0000\u0000\u18e7"+
		"\u18e9\u0003\u01b6\u00db\u0000\u18e8\u18e7\u0001\u0000\u0000\u0000\u18e8"+
		"\u18e9\u0001\u0000\u0000\u0000\u18e9\u0387\u0001\u0000\u0000\u0000\u18ea"+
		"\u18eb\u0005\u0273\u0000\u0000\u18eb\u18ec\u0005\u0210\u0000\u0000\u18ec"+
		"\u0389\u0001\u0000\u0000\u0000\u18ed\u18ee\u0005\u0273\u0000\u0000\u18ee"+
		"\u18ef\u0005\u0227\u0000\u0000\u18ef\u18f2\u0005\u00f0\u0000\u0000\u18f0"+
		"\u18f1\u0005\u0138\u0000\u0000\u18f1\u18f3\u0003\u0256\u012b\u0000\u18f2"+
		"\u18f0\u0001\u0000\u0000\u0000\u18f2\u18f3\u0001\u0000\u0000\u0000\u18f3"+
		"\u18f6\u0001\u0000\u0000\u0000\u18f4\u18f5\u0005\u0114\u0000\u0000\u18f5"+
		"\u18f7\u0005\u0322\u0000\u0000\u18f6\u18f4\u0001\u0000\u0000\u0000\u18f6"+
		"\u18f7\u0001\u0000\u0000\u0000\u18f7\u18f9\u0001\u0000\u0000\u0000\u18f8"+
		"\u18fa\u0003\u01b6\u00db\u0000\u18f9\u18f8\u0001\u0000\u0000\u0000\u18f9"+
		"\u18fa\u0001\u0000\u0000\u0000\u18fa\u18fe\u0001\u0000\u0000\u0000\u18fb"+
		"\u18fc\u0005\u010f\u0000\u0000\u18fc\u18fd\u0005\u0080\u0000\u0000\u18fd"+
		"\u18ff\u0003\u0254\u012a\u0000\u18fe\u18fb\u0001\u0000\u0000\u0000\u18fe"+
		"\u18ff\u0001\u0000\u0000\u0000\u18ff\u038b\u0001\u0000\u0000\u0000\u1900"+
		"\u1901\u0005\u0273\u0000\u0000\u1901\u1902\u0005\u0235\u0000\u0000\u1902"+
		"\u038d\u0001\u0000\u0000\u0000\u1903\u1904\u0005\u0273\u0000\u0000\u1904"+
		"\u1905\u0005\u0279\u0000\u0000\u1905\u1906\u0005\u012e\u0000\u0000\u1906"+
		"\u038f\u0001\u0000\u0000\u0000\u1907\u1908\u0005\u0273\u0000\u0000\u1908"+
		"\u1909\u0005\u0234\u0000\u0000\u1909\u190d\u0005\u0299\u0000\u0000\u190a"+
		"\u190b\u0005\u010f\u0000\u0000\u190b\u190c\u0005\u0080\u0000\u0000\u190c"+
		"\u190e\u0003\u0254\u012a\u0000\u190d\u190a\u0001\u0000\u0000\u0000\u190d"+
		"\u190e\u0001\u0000\u0000\u0000\u190e\u0391\u0001\u0000\u0000\u0000\u190f"+
		"\u1910\u0005\u0273\u0000\u0000\u1910\u1911\u0005\u0279\u0000\u0000\u1911"+
		"\u1915\u0005\u0299\u0000\u0000\u1912\u1913\u0005\u010f\u0000\u0000\u1913"+
		"\u1914\u0005\u0080\u0000\u0000\u1914\u1916\u0003\u0254\u012a\u0000\u1915"+
		"\u1912\u0001\u0000\u0000\u0000\u1915\u1916\u0001\u0000\u0000\u0000\u1916"+
		"\u0393\u0001\u0000\u0000\u0000\u1917\u1919\u0005\u0273\u0000\u0000\u1918"+
		"\u191a\u0007j\u0000\u0000\u1919\u1918\u0001\u0000\u0000\u0000\u1919\u191a"+
		"\u0001\u0000\u0000\u0000\u191a\u191b\u0001\u0000\u0000\u0000\u191b\u191d"+
		"\u0005\u0299\u0000\u0000\u191c\u191e\u0003\u033e\u019f\u0000\u191d\u191c"+
		"\u0001\u0000\u0000\u0000\u191d\u191e\u0001\u0000\u0000\u0000\u191e\u0395"+
		"\u0001\u0000\u0000\u0000\u191f\u1920\u0005\u0273\u0000\u0000\u1920\u1921"+
		"\u0005\u02a9\u0000\u0000\u1921\u1923\u0005\u0299\u0000\u0000\u1922\u1924"+
		"\u0003\u0336\u019b\u0000\u1923\u1922\u0001\u0000\u0000\u0000\u1923\u1924"+
		"\u0001\u0000\u0000\u0000\u1924\u1926\u0001\u0000\u0000\u0000\u1925\u1927"+
		"\u0003\u033e\u019f\u0000\u1926\u1925\u0001\u0000\u0000\u0000\u1926\u1927"+
		"\u0001\u0000\u0000\u0000\u1927\u0397\u0001\u0000\u0000\u0000\u1928\u192a"+
		"\u0005\u0273\u0000\u0000\u1929\u192b\u0005\u00fc\u0000\u0000\u192a\u1929"+
		"\u0001\u0000\u0000\u0000\u192a\u192b\u0001\u0000\u0000\u0000\u192b\u192d"+
		"\u0001\u0000\u0000\u0000\u192c\u192e\u0005\u0115\u0000\u0000\u192d\u192c"+
		"\u0001\u0000\u0000\u0000\u192d\u192e\u0001\u0000\u0000\u0000\u192e\u192f"+
		"\u0001\u0000\u0000\u0000\u192f\u1931\u0005\u02aa\u0000\u0000\u1930\u1932"+
		"\u0003\u0336\u019b\u0000\u1931\u1930\u0001\u0000\u0000\u0000\u1931\u1932"+
		"\u0001\u0000\u0000\u0000\u1932\u1934\u0001\u0000\u0000\u0000\u1933\u1935"+
		"\u0003\u033e\u019f\u0000\u1934\u1933\u0001\u0000\u0000\u0000\u1934\u1935"+
		"\u0001\u0000\u0000\u0000\u1935\u0399\u0001\u0000\u0000\u0000\u1936\u1937"+
		"\u0005\u0273\u0000\u0000\u1937\u1939\u0005\u02c2\u0000\u0000\u1938\u193a"+
		"\u0003\u0336\u019b\u0000\u1939\u1938\u0001\u0000\u0000\u0000\u1939\u193a"+
		"\u0001\u0000\u0000\u0000\u193a\u193c\u0001\u0000\u0000\u0000\u193b\u193d"+
		"\u0003\u033e\u019f\u0000\u193c\u193b\u0001\u0000\u0000\u0000\u193c\u193d"+
		"\u0001\u0000\u0000\u0000\u193d\u039b\u0001\u0000\u0000\u0000\u193e\u1940"+
		"\u0005\u0273\u0000\u0000\u193f\u1941\u0007j\u0000\u0000\u1940\u193f\u0001"+
		"\u0000\u0000\u0000\u1940\u1941\u0001\u0000\u0000\u0000\u1941\u1942\u0001"+
		"\u0000\u0000\u0000\u1942\u1944\u0005\u02e6\u0000\u0000\u1943\u1945\u0003"+
		"\u033e\u019f\u0000\u1944\u1943\u0001\u0000\u0000\u0000\u1944\u1945\u0001"+
		"\u0000\u0000\u0000\u1945\u039d\u0001\u0000\u0000\u0000\u1946\u194b\u0005"+
		"\u0273\u0000\u0000\u1947\u1948\u00054\u0000\u0000\u1948\u1949\u0005 \u0000"+
		"\u0000\u1949\u194a\u0005\u0012\u0000\u0000\u194a\u194c\u0005!\u0000\u0000"+
		"\u194b\u1947\u0001\u0000\u0000\u0000\u194b\u194c\u0001\u0000\u0000\u0000"+
		"\u194c\u194d\u0001\u0000\u0000\u0000\u194d\u194f\u0005\u02ed\u0000\u0000"+
		"\u194e\u1950\u0003\u01b6\u00db\u0000\u194f\u194e\u0001\u0000\u0000\u0000"+
		"\u194f\u1950\u0001\u0000\u0000\u0000\u1950\u039f\u0001\u0000\u0000\u0000"+
		"\u1951\u1952\u0005\u0273\u0000\u0000\u1952\u1953\u0005\u0083\u0000\u0000"+
		"\u1953\u03a1\u0001\u0000\u0000\u0000\u1954\u1958\u0005\u0271\u0000\u0000"+
		"\u1955\u1956\u0005\u0082\u0000\u0000\u1956\u1959\u0005\u0271\u0000\u0000"+
		"\u1957\u1959\u0005\u0083\u0000\u0000\u1958\u1955\u0001\u0000\u0000\u0000"+
		"\u1958\u1957\u0001\u0000\u0000\u0000\u1959\u195c\u0001\u0000\u0000\u0000"+
		"\u195a\u195d\u0003\u0216\u010b\u0000\u195b\u195d\u0005\u00c2\u0000\u0000"+
		"\u195c\u195a\u0001\u0000\u0000\u0000\u195c\u195b\u0001\u0000\u0000\u0000"+
		"\u195d\u03a3\u0001\u0000\u0000\u0000\u195e\u195f\u0005\u0089\u0000\u0000"+
		"\u195f\u1960\u0003\u03a6\u01d3\u0000\u1960\u03a5\u0001\u0000\u0000\u0000"+
		"\u1961\u1962\u0005\u0173\u0000\u0000\u1962\u1963\u0005\u00b3\u0000\u0000"+
		"\u1963\u1965\u0005\u00cf\u0000\u0000\u1964\u1966\u0005\u0019\u0000\u0000"+
		"\u1965\u1964\u0001\u0000\u0000\u0000\u1965\u1966\u0001\u0000\u0000\u0000"+
		"\u1966\u1967\u0001\u0000\u0000\u0000\u1967\u197e\u0003\u0252\u0129\u0000"+
		"\u1968\u1969\u0005\u0144\u0000\u0000\u1969\u196a\u0005\u0114\u0000\u0000"+
		"\u196a\u196b\u0003\u0250\u0128\u0000\u196b\u196c\u0005\u0133\u0000\u0000"+
		"\u196c\u196d\u0005u\u0000\u0000\u196d\u1974\u0003\u01dc\u00ee\u0000\u196e"+
		"\u196f\u0005\u00b3\u0000\u0000\u196f\u1971\u0005\u00cf\u0000\u0000\u1970"+
		"\u1972\u0005\u0019\u0000\u0000\u1971\u1970\u0001\u0000\u0000\u0000\u1971"+
		"\u1972\u0001\u0000\u0000\u0000\u1972\u1973\u0001\u0000\u0000\u0000\u1973"+
		"\u1975\u0003\u0252\u0129\u0000\u1974\u196e\u0001\u0000\u0000\u0000\u1974"+
		"\u1975\u0001\u0000\u0000\u0000\u1975\u197b\u0001\u0000\u0000\u0000\u1976"+
		"\u1978\u0005\u023e\u0000\u0000\u1977\u1979\u0005\u01c8\u0000\u0000\u1978"+
		"\u1977\u0001\u0000\u0000\u0000\u1978\u1979\u0001\u0000\u0000\u0000\u1979"+
		"\u197a\u0001\u0000\u0000\u0000\u197a\u197c\u0005\u0291\u0000\u0000\u197b"+
		"\u1976\u0001\u0000\u0000\u0000\u197b\u197c\u0001\u0000\u0000\u0000\u197c"+
		"\u197e\u0001\u0000\u0000\u0000\u197d\u1961\u0001\u0000\u0000\u0000\u197d"+
		"\u1968\u0001\u0000\u0000\u0000\u197e\u03a7\u0001\u0000\u0000\u0000\u197f"+
		"\u1981\u0005\u00a8\u0000\u0000\u1980\u1982\u0005R\u0000\u0000\u1981\u1980"+
		"\u0001\u0000\u0000\u0000\u1981\u1982\u0001\u0000\u0000\u0000\u1982\u1983"+
		"\u0001\u0000\u0000\u0000\u1983\u1984\u0005\u0117\u0000\u0000\u1984\u1985"+
		"\u0003\u0230\u0118\u0000\u1985\u1986\u0005\u024c\u0000\u0000\u1986\u1987"+
		"\u0007k\u0000\u0000\u1987\u1988\u0005\u027e\u0000\u0000\u1988\u1989\u0003"+
		"\u0246\u0123\u0000\u1989\u03a9\u0001\u0000\u0000\u0000\u198a\u198d\u0003"+
		"\u03ae\u01d7\u0000\u198b\u198d\u0003\u03b0\u01d8\u0000\u198c\u198a\u0001"+
		"\u0000\u0000\u0000\u198c\u198b\u0001\u0000\u0000\u0000\u198d\u03ab\u0001"+
		"\u0000\u0000\u0000\u198e\u1991\u0003\u03b2\u01d9\u0000\u198f\u1991\u0003"+
		"\u03b4\u01da\u0000\u1990\u198e\u0001\u0000\u0000\u0000\u1990\u198f\u0001"+
		"\u0000\u0000\u0000\u1991\u03ad\u0001\u0000\u0000\u0000\u1992\u1993\u0005"+
		"\u0143\u0000\u0000\u1993\u1994\u0005\u0098\u0000\u0000\u1994\u1999\u0003"+
		"\u0248\u0124\u0000\u1995\u1996\u0005&\u0000\u0000\u1996\u1998\u0003\u0248"+
		"\u0124\u0000\u1997\u1995\u0001\u0000\u0000\u0000\u1998\u199b\u0001\u0000"+
		"\u0000\u0000\u1999\u1997\u0001\u0000\u0000\u0000\u1999\u199a\u0001\u0000"+
		"\u0000\u0000\u199a\u03af\u0001\u0000\u0000\u0000\u199b\u1999\u0001\u0000"+
		"\u0000\u0000\u199c\u199d\u0005\u0143\u0000\u0000\u199d\u199e\u0005\u01fd"+
		"\u0000\u0000\u199e\u199f\u0003\u024a\u0125\u0000\u199f\u19a0\u0005\u027e"+
		"\u0000\u0000\u19a0\u19a1\u0003\u0246\u0123\u0000\u19a1\u03b1\u0001\u0000"+
		"\u0000\u0000\u19a2\u19a3\u0005\u02ce\u0000\u0000\u19a3\u19a4\u0005\u0098"+
		"\u0000\u0000\u19a4\u19a9\u0003\u0248\u0124\u0000\u19a5\u19a6\u0005&\u0000"+
		"\u0000\u19a6\u19a8\u0003\u0248\u0124\u0000\u19a7\u19a5\u0001\u0000\u0000"+
		"\u0000\u19a8\u19ab\u0001\u0000\u0000\u0000\u19a9\u19a7\u0001\u0000\u0000"+
		"\u0000\u19a9\u19aa\u0001\u0000\u0000\u0000\u19aa\u03b3\u0001\u0000\u0000"+
		"\u0000\u19ab\u19a9\u0001\u0000\u0000\u0000\u19ac\u19ad\u0005\u02ce\u0000"+
		"\u0000\u19ad\u19ae\u0005\u01fd\u0000\u0000\u19ae\u19af\u0003\u024a\u0125"+
		"\u0000\u19af\u03b5\u0001\u0000\u0000\u0000\u19b0\u19b2\u0005W\u0000\u0000"+
		"\u19b1\u19b3\u0007b\u0000\u0000\u19b2\u19b1\u0001\u0000\u0000\u0000\u19b2"+
		"\u19b3\u0001\u0000\u0000\u0000\u19b3\u19b4\u0001\u0000\u0000\u0000\u19b4"+
		"\u19b5\u0003\u0262\u0131\u0000\u19b5\u19b7\u0003\u023c\u011e\u0000\u19b6"+
		"\u19b8\u0003\u03b8\u01dc\u0000\u19b7\u19b6\u0001\u0000\u0000\u0000\u19b7"+
		"\u19b8\u0001\u0000\u0000\u0000\u19b8\u03b7\u0001\u0000\u0000\u0000\u19b9"+
		"\u19ba\u0005\u02d5\u0000\u0000\u19ba\u19bb\u0005\u012b\u0000\u0000\u19bb"+
		"\u19bc\u0005\u01db\u0000\u0000\u19bc\u19c0\u0003\u0240\u0120\u0000\u19bd"+
		"\u19be\u0005\u02f4\u0000\u0000\u19be\u19bf\u0005\u0322\u0000\u0000\u19bf"+
		"\u19c1\u0005t\u0000\u0000\u19c0\u19bd\u0001\u0000\u0000\u0000\u19c0\u19c1"+
		"\u0001\u0000\u0000\u0000\u19c1\u19c7\u0001\u0000\u0000\u0000\u19c2\u19c3"+
		"\u0005\u00d8\u0000\u0000\u19c3\u19c4\u0005\u012b\u0000\u0000\u19c4\u19c5"+
		"\u0005\u01db\u0000\u0000\u19c5\u19c7\u0003\u0240\u0120\u0000\u19c6\u19b9"+
		"\u0001\u0000\u0000\u0000\u19c6\u19c2\u0001\u0000\u0000\u0000\u19c7\u03b9"+
		"\u0001\u0000\u0000\u0000\u19c8\u19c9\u0005\u0084\u0000\u0000\u19c9\u19ca"+
		"\u0005\u02a9\u0000\u0000\u19ca\u19cc\u0003\u023c\u011e\u0000\u19cb\u19cd"+
		"\u0003\u03bc\u01de\u0000\u19cc\u19cb\u0001\u0000\u0000\u0000\u19cc\u19cd"+
		"\u0001\u0000\u0000\u0000\u19cd\u03bb\u0001\u0000\u0000\u0000\u19ce\u19cf"+
		"\u0005\u010f\u0000\u0000\u19cf\u19d6\u0005\u02d6\u0000\u0000\u19d0\u19d6"+
		"\u0005\u0215\u0000\u0000\u19d1\u19d6\u0005\u0100\u0000\u0000\u19d2\u19d6"+
		"\u0005\u01a4\u0000\u0000\u19d3\u19d6\u0005\u00fc\u0000\u0000\u19d4\u19d6"+
		"\u0005\u007f\u0000\u0000\u19d5\u19ce\u0001\u0000\u0000\u0000\u19d5\u19d0"+
		"\u0001\u0000\u0000\u0000\u19d5\u19d1\u0001\u0000\u0000\u0000\u19d5\u19d2"+
		"\u0001\u0000\u0000\u0000\u19d5\u19d3\u0001\u0000\u0000\u0000\u19d5\u19d4"+
		"\u0001\u0000\u0000\u0000\u19d6\u03bd\u0001\u0000\u0000\u0000\u19d7\u19d8"+
		"\u0005\u0085\u0000\u0000\u19d8\u19d9\u0003\u0262\u0131\u0000\u19d9\u19db"+
		"\u0003\u023c\u011e\u0000\u19da\u19dc\u0007l\u0000\u0000\u19db\u19da\u0001"+
		"\u0000\u0000\u0000\u19db\u19dc\u0001\u0000\u0000\u0000\u19dc\u03bf\u0001"+
		"\u0000\u0000\u0000\u19dd\u19df\u0005\u01df\u0000\u0000\u19de\u19e0\u0007"+
		"b\u0000\u0000\u19df\u19de\u0001\u0000\u0000\u0000\u19df\u19e0\u0001\u0000"+
		"\u0000\u0000\u19e0\u19e1\u0001\u0000\u0000\u0000\u19e1\u19e2\u0003\u0262"+
		"\u0131\u0000\u19e2\u19e3\u0003\u023c\u011e\u0000\u19e3\u03c1\u0001\u0000"+
		"\u0000\u0000\u19e4\u19e6\u0005\u0230\u0000\u0000\u19e5\u19e7\u0007b\u0000"+
		"\u0000\u19e6\u19e5\u0001\u0000\u0000\u0000\u19e6\u19e7\u0001\u0000\u0000"+
		"\u0000\u19e7\u19e8\u0001\u0000\u0000\u0000\u19e8\u19e9\u0003\u0262\u0131"+
		"\u0000\u19e9\u19eb\u0003\u023c\u011e\u0000\u19ea\u19ec\u0005\u0215\u0000"+
		"\u0000\u19eb\u19ea\u0001\u0000\u0000\u0000\u19eb\u19ec\u0001\u0000\u0000"+
		"\u0000\u19ec\u19ee\u0001\u0000\u0000\u0000\u19ed\u19ef\u0005\u00fc\u0000"+
		"\u0000\u19ee\u19ed\u0001\u0000\u0000\u0000\u19ee\u19ef\u0001\u0000\u0000"+
		"\u0000\u19ef\u19f1\u0001\u0000\u0000\u0000\u19f0\u19f2\u0005\u02db\u0000"+
		"\u0000\u19f1\u19f0\u0001\u0000\u0000\u0000\u19f1\u19f2\u0001\u0000\u0000"+
		"\u0000\u19f2\u03c3\u0001\u0000\u0000\u0000\u19f3\u19f4\u0005U\u0000\u0000"+
		"\u19f4\u19f5\u0005\u0242\u0000\u0000\u19f5\u19f6\u0005\u0122\u0000\u0000"+
		"\u19f6\u1a03\u0003\u0242\u0121\u0000\u19f7\u19f9\u0005\u02e8\u0000\u0000"+
		"\u19f8\u19fa\u0005\u0019\u0000\u0000\u19f9\u19f8\u0001\u0000\u0000\u0000"+
		"\u19f9\u19fa\u0001\u0000\u0000\u0000\u19fa\u19fb\u0001\u0000\u0000\u0000"+
		"\u19fb\u1a00\u0003\u03c6\u01e3\u0000\u19fc\u19fd\u0005&\u0000\u0000\u19fd"+
		"\u19ff\u0003\u03c6\u01e3\u0000\u19fe\u19fc\u0001\u0000\u0000\u0000\u19ff"+
		"\u1a02\u0001\u0000\u0000\u0000\u1a00\u19fe\u0001\u0000\u0000\u0000\u1a00"+
		"\u1a01\u0001\u0000\u0000\u0000\u1a01\u1a04\u0001\u0000\u0000\u0000\u1a02"+
		"\u1a00\u0001\u0000\u0000\u0000\u1a03\u19f7\u0001\u0000\u0000\u0000\u1a03"+
		"\u1a04\u0001\u0000\u0000\u0000\u1a04\u1a0a\u0001\u0000\u0000\u0000\u1a05"+
		"\u1a07\u0005\u02b4\u0000\u0000\u1a06\u1a08\u0005\u0019\u0000\u0000\u1a07"+
		"\u1a06\u0001\u0000\u0000\u0000\u1a07\u1a08\u0001\u0000\u0000\u0000\u1a08"+
		"\u1a09\u0001\u0000\u0000\u0000\u1a09\u1a0b\u0005\u0322\u0000\u0000\u1a0a"+
		"\u1a05\u0001\u0000\u0000\u0000\u1a0a\u1a0b\u0001\u0000\u0000\u0000\u1a0b"+
		"\u1a11\u0001\u0000\u0000\u0000\u1a0c\u1a12\u0005\u00e1\u0000\u0000\u1a0d"+
		"\u1a0f\u0005\u00d0\u0000\u0000\u1a0e\u1a10\u0005\u0110\u0000\u0000\u1a0f"+
		"\u1a0e\u0001\u0000\u0000\u0000\u1a0f\u1a10\u0001\u0000\u0000\u0000\u1a10"+
		"\u1a12\u0001\u0000\u0000\u0000\u1a11\u1a0c\u0001\u0000\u0000\u0000\u1a11"+
		"\u1a0d\u0001\u0000\u0000\u0000\u1a11\u1a12\u0001\u0000\u0000\u0000\u1a12"+
		"\u03c5\u0001\u0000\u0000\u0000\u1a13\u1a18\u0005\u0322\u0000\u0000\u1a14"+
		"\u1a15\u0005\u0322\u0000\u0000\u1a15\u1a16\u0005\u0011\u0000\u0000\u1a16"+
		"\u1a18\u0005\u0322\u0000\u0000\u1a17\u1a13\u0001\u0000\u0000\u0000\u1a17"+
		"\u1a14\u0001\u0000\u0000\u0000\u1a18\u03c7\u0001\u0000\u0000\u0000\u1a19"+
		"\u1a1a\u0005\u00a8\u0000\u0000\u1a1a\u1a1b\u0005\u0242\u0000\u0000\u1a1b"+
		"\u1a1c\u0005\u0122\u0000\u0000\u1a1c\u1a1d\u0003\u0242\u0121\u0000\u1a1d"+
		"\u1a1e\u0005\u02c5\u0000\u0000\u1a1e\u1a1f\u0005\u0019\u0000\u0000\u1a1f"+
		"\u1a2c\u0007m\u0000\u0000\u1a20\u1a22\u0005\u02e8\u0000\u0000\u1a21\u1a23"+
		"\u0005\u0019\u0000\u0000\u1a22\u1a21\u0001\u0000\u0000\u0000\u1a22\u1a23"+
		"\u0001\u0000\u0000\u0000\u1a23\u1a24\u0001\u0000\u0000\u0000\u1a24\u1a29"+
		"\u0003\u03c6\u01e3\u0000\u1a25\u1a26\u0005&\u0000\u0000\u1a26\u1a28\u0003"+
		"\u03c6\u01e3\u0000\u1a27\u1a25\u0001\u0000\u0000\u0000\u1a28\u1a2b\u0001"+
		"\u0000\u0000\u0000\u1a29\u1a27\u0001\u0000\u0000\u0000\u1a29\u1a2a\u0001"+
		"\u0000\u0000\u0000\u1a2a\u1a2d\u0001\u0000\u0000\u0000\u1a2b\u1a29\u0001"+
		"\u0000\u0000\u0000\u1a2c\u1a20\u0001\u0000\u0000\u0000\u1a2c\u1a2d\u0001"+
		"\u0000\u0000\u0000\u1a2d\u1a33\u0001\u0000\u0000\u0000\u1a2e\u1a30\u0005"+
		"\u02b4\u0000\u0000\u1a2f\u1a31\u0005\u0019\u0000\u0000\u1a30\u1a2f\u0001"+
		"\u0000\u0000\u0000\u1a30\u1a31\u0001\u0000\u0000\u0000\u1a31\u1a32\u0001"+
		"\u0000\u0000\u0000\u1a32\u1a34\u0005\u0322\u0000\u0000\u1a33\u1a2e\u0001"+
		"\u0000\u0000\u0000\u1a33\u1a34\u0001\u0000\u0000\u0000\u1a34\u1a36\u0001"+
		"\u0000\u0000\u0000\u1a35\u1a37\u0007\n\u0000\u0000\u1a36\u1a35\u0001\u0000"+
		"\u0000\u0000\u1a36\u1a37\u0001\u0000\u0000\u0000\u1a37\u03c9\u0001\u0000"+
		"\u0000\u0000\u1a38\u1a39\u0005\u00d8\u0000\u0000\u1a39\u1a3a\u0005\u0242"+
		"\u0000\u0000\u1a3a\u1a3b\u0005\u0122\u0000\u0000\u1a3b\u1a3d\u0003\u0242"+
		"\u0121\u0000\u1a3c\u1a3e\u0005\u0110\u0000\u0000\u1a3d\u1a3c\u0001\u0000"+
		"\u0000\u0000\u1a3d\u1a3e\u0001\u0000\u0000\u0000\u1a3e\u03cb\u0001\u0000"+
		"\u0000\u0000\u1a3f\u1a40\u0005\u0271\u0000\u0000\u1a40\u1a41\u0005\u0242"+
		"\u0000\u0000\u1a41\u1a42\u0005\u0122\u0000\u0000\u1a42\u1a4c\u0003\u0242"+
		"\u0121\u0000\u1a43\u1a44\u0005\u010f\u0000\u0000\u1a44\u1a49\u0005\u0322"+
		"\u0000\u0000\u1a45\u1a46\u0005&\u0000\u0000\u1a46\u1a48\u0005\u0322\u0000"+
		"\u0000\u1a47\u1a45\u0001\u0000\u0000\u0000\u1a48\u1a4b\u0001\u0000\u0000"+
		"\u0000\u1a49\u1a47\u0001\u0000\u0000\u0000\u1a49\u1a4a\u0001\u0000\u0000"+
		"\u0000\u1a4a\u1a4d\u0001\u0000\u0000\u0000\u1a4b\u1a49\u0001\u0000\u0000"+
		"\u0000\u1a4c\u1a43\u0001\u0000\u0000\u0000\u1a4c\u1a4d\u0001\u0000\u0000"+
		"\u0000\u1a4d\u03cd\u0001\u0000\u0000\u0000\u1a4e\u1a4f\u0005l\u0000\u0000"+
		"\u1a4f\u1a50\u0003\u01de\u00ef\u0000\u1a50\u03cf\u0001\u0000\u0000\u0000"+
		"\u1a51\u1a52\u0005w\u0000\u0000\u1a52\u1a61\u0005\u013a\u0000\u0000\u1a53"+
		"\u1a58\u0003\u03d2\u01e9\u0000\u1a54\u1a55\u0005&\u0000\u0000\u1a55\u1a57"+
		"\u0003\u03d2\u01e9\u0000\u1a56\u1a54\u0001\u0000\u0000\u0000\u1a57\u1a5a"+
		"\u0001\u0000\u0000\u0000\u1a58\u1a56\u0001\u0000\u0000\u0000\u1a58\u1a59"+
		"\u0001\u0000\u0000\u0000\u1a59\u1a62\u0001\u0000\u0000\u0000\u1a5a\u1a58"+
		"\u0001\u0000\u0000\u0000\u1a5b\u1a5c\u0003\u021c\u010e\u0000\u1a5c\u1a5d"+
		"\u0005\u01f3\u0000\u0000\u1a5d\u1a5e\u0005 \u0000\u0000\u1a5e\u1a5f\u0003"+
		"\u03d4\u01ea\u0000\u1a5f\u1a60\u0005!\u0000\u0000\u1a60\u1a62\u0001\u0000"+
		"\u0000\u0000\u1a61\u1a53\u0001\u0000\u0000\u0000\u1a61\u1a5b\u0001\u0000"+
		"\u0000\u0000\u1a62\u1a63\u0001\u0000\u0000\u0000\u1a63\u1a66\u0005\u0138"+
		"\u0000\u0000\u1a64\u1a67\u0003\u01ee\u00f7\u0000\u1a65\u1a67\u0005\u00c2"+
		"\u0000\u0000\u1a66\u1a64\u0001\u0000\u0000\u0000\u1a66\u1a65\u0001\u0000"+
		"\u0000\u0000\u1a67\u03d1\u0001\u0000\u0000\u0000\u1a68\u1a75\u0003\u021c"+
		"\u010e\u0000\u1a69\u1a6a\u0007*\u0000\u0000\u1a6a\u1a6b\u0005 \u0000\u0000"+
		"\u1a6b\u1a70\u0003\u0220\u0110\u0000\u1a6c\u1a6d\u0005&\u0000\u0000\u1a6d"+
		"\u1a6f\u0003\u0220\u0110\u0000\u1a6e\u1a6c\u0001\u0000\u0000\u0000\u1a6f"+
		"\u1a72\u0001\u0000\u0000\u0000\u1a70\u1a6e\u0001\u0000\u0000\u0000\u1a70"+
		"\u1a71\u0001\u0000\u0000\u0000\u1a71\u1a73\u0001\u0000\u0000\u0000\u1a72"+
		"\u1a70\u0001\u0000\u0000\u0000\u1a73\u1a74\u0005!\u0000\u0000\u1a74\u1a76"+
		"\u0001\u0000\u0000\u0000\u1a75\u1a69\u0001\u0000\u0000\u0000\u1a75\u1a76"+
		"\u0001\u0000\u0000\u0000\u1a76\u03d3\u0001\u0000\u0000\u0000\u1a77\u1a7c"+
		"\u0003\u0266\u0133\u0000\u1a78\u1a79\u0005&\u0000\u0000\u1a79\u1a7b\u0003"+
		"\u0266\u0133\u0000\u1a7a\u1a78\u0001\u0000\u0000\u0000\u1a7b\u1a7e\u0001"+
		"\u0000\u0000\u0000\u1a7c\u1a7a\u0001\u0000\u0000\u0000\u1a7c\u1a7d\u0001"+
		"\u0000\u0000\u0000\u1a7d\u1a81\u0001\u0000\u0000\u0000\u1a7e\u1a7c\u0001"+
		"\u0000\u0000\u0000\u1a7f\u1a81\u0005T\u0000\u0000\u1a80\u1a77\u0001\u0000"+
		"\u0000\u0000\u1a80\u1a7f\u0001\u0000\u0000\u0000\u1a81\u03d5\u0001\u0000"+
		"\u0000\u0000\u1a82\u1a84\u0005\u010c\u0000\u0000\u1a83\u1a85\u0007b\u0000"+
		"\u0000\u1a84\u1a83\u0001\u0000\u0000\u0000\u1a84\u1a85\u0001\u0000\u0000"+
		"\u0000\u1a85\u1a8f\u0001\u0000\u0000\u0000\u1a86\u1a8b\u0003\u03d8\u01ec"+
		"\u0000\u1a87\u1a88\u0005&\u0000\u0000\u1a88\u1a8a\u0003\u03d8\u01ec\u0000"+
		"\u1a89\u1a87\u0001\u0000\u0000\u0000\u1a8a\u1a8d\u0001\u0000\u0000\u0000"+
		"\u1a8b\u1a89\u0001\u0000\u0000\u0000\u1a8b\u1a8c\u0001\u0000\u0000\u0000"+
		"\u1a8c\u1a90\u0001\u0000\u0000\u0000\u1a8d\u1a8b\u0001\u0000\u0000\u0000"+
		"\u1a8e\u1a90\u0003\u03da\u01ed\u0000\u1a8f\u1a86\u0001\u0000\u0000\u0000"+
		"\u1a8f\u1a8e\u0001\u0000\u0000\u0000\u1a90\u03d7\u0001\u0000\u0000\u0000"+
		"\u1a91\u1a92\u0005k\u0000\u0000\u1a92\u1aa9\u0005\u017a\u0000\u0000\u1a93"+
		"\u1a94\u0005\u00e7\u0000\u0000\u1a94\u1aa9\u0005\u017a\u0000\u0000\u1a95"+
		"\u1a96\u0005\u00eb\u0000\u0000\u1a96\u1aa9\u0005\u017a\u0000\u0000\u1a97"+
		"\u1a98\u0005\u0118\u0000\u0000\u1a98\u1aa9\u0005\u017a\u0000\u0000\u1a99"+
		"\u1aa9\u0005\u012e\u0000\u0000\u1a9a\u1aa9\u0005\u017a\u0000\u0000\u1a9b"+
		"\u1aa9\u0005\u020a\u0000\u0000\u1a9c\u1aa9\u0005\u01e0\u0000\u0000\u1a9d"+
		"\u1a9e\u0005\u0226\u0000\u0000\u1a9e\u1aa2\u0005\u017a\u0000\u0000\u1a9f"+
		"\u1aa0\u0005\u010f\u0000\u0000\u1aa0\u1aa1\u0005\u0080\u0000\u0000\u1aa1"+
		"\u1aa3\u0003\u0254\u012a\u0000\u1aa2\u1a9f\u0001\u0000\u0000\u0000\u1aa2"+
		"\u1aa3\u0001\u0000\u0000\u0000\u1aa3\u1aa9\u0001\u0000\u0000\u0000\u1aa4"+
		"\u1aa5\u0005\u027a\u0000\u0000\u1aa5\u1aa9\u0005\u017a\u0000\u0000\u1aa6"+
		"\u1aa9\u0005\u0299\u0000\u0000\u1aa7\u1aa9\u0005\u02da\u0000\u0000\u1aa8"+
		"\u1a91\u0001\u0000\u0000\u0000\u1aa8\u1a93\u0001\u0000\u0000\u0000\u1aa8"+
		"\u1a95\u0001\u0000\u0000\u0000\u1aa8\u1a97\u0001\u0000\u0000\u0000\u1aa8"+
		"\u1a99\u0001\u0000\u0000\u0000\u1aa8\u1a9a\u0001\u0000\u0000\u0000\u1aa8"+
		"\u1a9b\u0001\u0000\u0000\u0000\u1aa8\u1a9c\u0001\u0000\u0000\u0000\u1aa8"+
		"\u1a9d\u0001\u0000\u0000\u0000\u1aa8\u1aa4\u0001\u0000\u0000\u0000\u1aa8"+
		"\u1aa6\u0001\u0000\u0000\u0000\u1aa8\u1aa7\u0001\u0000\u0000\u0000\u1aa9"+
		"\u03d9\u0001\u0000\u0000\u0000\u1aaa\u1ad2\u0005\u02aa\u0000\u0000\u1aab"+
		"\u1aac\u0005\u02aa\u0000\u0000\u1aac\u1ab1\u0003\u021c\u010e\u0000\u1aad"+
		"\u1aae\u0005&\u0000\u0000\u1aae\u1ab0\u0003\u021c\u010e\u0000\u1aaf\u1aad"+
		"\u0001\u0000\u0000\u0000\u1ab0\u1ab3\u0001\u0000\u0000\u0000\u1ab1\u1aaf"+
		"\u0001\u0000\u0000\u0000\u1ab1\u1ab2\u0001\u0000\u0000\u0000\u1ab2\u1ad2"+
		"\u0001\u0000\u0000\u0000\u1ab3\u1ab1\u0001\u0000\u0000\u0000\u1ab4\u1ab5"+
		"\u0005\u02aa\u0000\u0000\u1ab5\u1ab6\u0005\u02f4\u0000\u0000\u1ab6\u1ab7"+
		"\u0005\u0219\u0000\u0000\u1ab7\u1ad2\u0005\u0176\u0000\u0000\u1ab8\u1ab9"+
		"\u0005\u02aa\u0000\u0000\u1ab9\u1abe\u0003\u021c\u010e\u0000\u1aba\u1abb"+
		"\u0005&\u0000\u0000\u1abb\u1abd\u0003\u021c\u010e\u0000\u1abc\u1aba\u0001"+
		"\u0000\u0000\u0000\u1abd\u1ac0\u0001\u0000\u0000\u0000\u1abe\u1abc\u0001"+
		"\u0000\u0000\u0000\u1abe\u1abf\u0001\u0000\u0000\u0000\u1abf\u1ac1\u0001"+
		"\u0000\u0000\u0000\u1ac0\u1abe\u0001\u0000\u0000\u0000\u1ac1\u1ac2\u0005"+
		"\u02f4\u0000\u0000\u1ac2\u1ac3\u0005\u0219\u0000\u0000\u1ac3\u1ac4\u0005"+
		"\u0176\u0000\u0000\u1ac4\u1ad2\u0001\u0000\u0000\u0000\u1ac5\u1ac6\u0005"+
		"\u02aa\u0000\u0000\u1ac6\u1acb\u0003\u021c\u010e\u0000\u1ac7\u1ac8\u0005"+
		"&\u0000\u0000\u1ac8\u1aca\u0003\u021c\u010e\u0000\u1ac9\u1ac7\u0001\u0000"+
		"\u0000\u0000\u1aca\u1acd\u0001\u0000\u0000\u0000\u1acb\u1ac9\u0001\u0000"+
		"\u0000\u0000\u1acb\u1acc\u0001\u0000\u0000\u0000\u1acc\u1ace\u0001\u0000"+
		"\u0000\u0000\u1acd\u1acb\u0001\u0000\u0000\u0000\u1ace\u1acf\u0005\u010f"+
		"\u0000\u0000\u1acf\u1ad0\u0005\u00fb\u0000\u0000\u1ad0\u1ad2\u0001\u0000"+
		"\u0000\u0000\u1ad1\u1aaa\u0001\u0000\u0000\u0000\u1ad1\u1aab\u0001\u0000"+
		"\u0000\u0000\u1ad1\u1ab4\u0001\u0000\u0000\u0000\u1ad1\u1ab8\u0001\u0000"+
		"\u0000\u0000\u1ad1\u1ac5\u0001\u0000\u0000\u0000\u1ad2\u03db\u0001\u0000"+
		"\u0000\u0000\u1ad3\u1ad5\u0005\u015f\u0000\u0000\u1ad4\u1ad6\u0007n\u0000"+
		"\u0000\u1ad5\u1ad4\u0001\u0000\u0000\u0000\u1ad5\u1ad6\u0001\u0000\u0000"+
		"\u0000\u1ad6\u1ad7\u0001\u0000\u0000\u0000\u1ad7\u1ad8\u0005\u0328\u0000"+
		"\u0000\u1ad8\u03dd\u0001\u0000\u0000\u0000\u1ad9\u1ada\u0005\u0172\u0000"+
		"\u0000\u1ada\u1adb\u0005\u013a\u0000\u0000\u1adb\u1adc\u0005\u014d\u0000"+
		"\u0000\u1adc\u1add\u0005w\u0000\u0000\u1add\u1ae2\u0003\u03e0\u01f0\u0000"+
		"\u1ade\u1adf\u0005&\u0000\u0000\u1adf\u1ae1\u0003\u03e0\u01f0\u0000\u1ae0"+
		"\u1ade\u0001\u0000\u0000\u0000\u1ae1\u1ae4\u0001\u0000\u0000\u0000\u1ae2"+
		"\u1ae0\u0001\u0000\u0000\u0000\u1ae2\u1ae3\u0001\u0000\u0000\u0000\u1ae3"+
		"\u03df\u0001\u0000\u0000\u0000\u1ae4\u1ae2\u0001\u0000\u0000\u0000\u1ae5"+
		"\u1aeb\u0003\u021c\u010e\u0000\u1ae6\u1ae7\u0005\u01f3\u0000\u0000\u1ae7"+
		"\u1ae8\u0005 \u0000\u0000\u1ae8\u1ae9\u0003\u03d4\u01ea\u0000\u1ae9\u1aea"+
		"\u0005!\u0000\u0000\u1aea\u1aec\u0001\u0000\u0000\u0000\u1aeb\u1ae6\u0001"+
		"\u0000\u0000\u0000\u1aeb\u1aec\u0001\u0000\u0000\u0000\u1aec\u1af9\u0001"+
		"\u0000\u0000\u0000\u1aed\u1aee\u0007*\u0000\u0000\u1aee\u1aef\u0005 \u0000"+
		"\u0000\u1aef\u1af4\u0003\u0220\u0110\u0000\u1af0\u1af1\u0005&\u0000\u0000"+
		"\u1af1\u1af3\u0003\u0220\u0110\u0000\u1af2\u1af0\u0001\u0000\u0000\u0000"+
		"\u1af3\u1af6\u0001\u0000\u0000\u0000\u1af4\u1af2\u0001\u0000\u0000";
	private static final String _serializedATNSegment3 =
		"\u0000\u1af4\u1af5\u0001\u0000\u0000\u0000\u1af5\u1af7\u0001\u0000\u0000"+
		"\u0000\u1af6\u1af4\u0001\u0000\u0000\u0000\u1af7\u1af8\u0005!\u0000\u0000"+
		"\u1af8\u1afa\u0001\u0000\u0000\u0000\u1af9\u1aed\u0001\u0000\u0000\u0000"+
		"\u1af9\u1afa\u0001\u0000\u0000\u0000\u1afa\u1afd\u0001\u0000\u0000\u0000"+
		"\u1afb\u1afc\u0005\u0135\u0000\u0000\u1afc\u1afe\u0005\u0168\u0000\u0000"+
		"\u1afd\u1afb\u0001\u0000\u0000\u0000\u1afd\u1afe\u0001\u0000\u0000\u0000"+
		"\u1afe\u03e1\u0001\u0000\u0000\u0000\u1aff\u1b00\u0005\u0240\u0000\u0000"+
		"\u1b00\u1b05\u0003\u03e4\u01f2\u0000\u1b01\u1b02\u0005&\u0000\u0000\u1b02"+
		"\u1b04\u0003\u03e4\u01f2\u0000\u1b03\u1b01\u0001\u0000\u0000\u0000\u1b04"+
		"\u1b07\u0001\u0000\u0000\u0000\u1b05\u1b03\u0001\u0000\u0000\u0000\u1b05"+
		"\u1b06\u0001\u0000\u0000\u0000\u1b06\u1b0a\u0001\u0000\u0000\u0000\u1b07"+
		"\u1b05\u0001\u0000\u0000\u0000\u1b08\u1b0a\u0003\u03e6\u01f3\u0000\u1b09"+
		"\u1aff\u0001\u0000\u0000\u0000\u1b09\u1b08\u0001\u0000\u0000\u0000\u1b0a"+
		"\u03e3\u0001\u0000\u0000\u0000\u1b0b\u1b0e\u0005\u0180\u0000\u0000\u1b0c"+
		"\u1b0d\u0005\u02be\u0000\u0000\u1b0d\u1b0f\u0003\u02e0\u0170\u0000\u1b0e"+
		"\u1b0c\u0001\u0000\u0000\u0000\u1b0e\u1b0f\u0001\u0000\u0000\u0000\u1b0f"+
		"\u1b1b\u0001\u0000\u0000\u0000\u1b10\u1b12\u0005\u0279\u0000\u0000\u1b11"+
		"\u1b13\u0005T\u0000\u0000\u1b12\u1b11\u0001\u0000\u0000\u0000\u1b12\u1b13"+
		"\u0001\u0000\u0000\u0000\u1b13\u1b15\u0001\u0000\u0000\u0000\u1b14\u1b16"+
		"\u0003\u032e\u0197\u0000\u1b15\u1b14\u0001\u0000\u0000\u0000\u1b15\u1b16"+
		"\u0001\u0000\u0000\u0000\u1b16\u1b1b\u0001\u0000\u0000\u0000\u1b17\u1b1b"+
		"\u0005\u0234\u0000\u0000\u1b18\u1b19\u0005\u0214\u0000\u0000\u1b19\u1b1b"+
		"\u0005w\u0000\u0000\u1b1a\u1b0b\u0001\u0000\u0000\u0000\u1b1a\u1b10\u0001"+
		"\u0000\u0000\u0000\u1b1a\u1b17\u0001\u0000\u0000\u0000\u1b1a\u1b18\u0001"+
		"\u0000\u0000\u0000\u1b1b\u03e5\u0001\u0000\u0000\u0000\u1b1c\u1b1d\u0005"+
		"\u0240\u0000\u0000\u1b1d\u1b22\u0005\u01fa\u0000\u0000\u1b1e\u1b20\u0003"+
		"\u0320\u0190\u0000\u1b1f\u1b1e\u0001\u0000\u0000\u0000\u1b1f\u1b20\u0001"+
		"\u0000\u0000\u0000\u1b20\u1b21\u0001\u0000\u0000\u0000\u1b21\u1b23\u0003"+
		"\u01ee\u00f7\u0000\u1b22\u1b1f\u0001\u0000\u0000\u0000\u1b22\u1b23\u0001"+
		"\u0000\u0000\u0000\u1b23\u03e7\u0001\u0000\u0000\u0000\u1b24\u1b25\u0005"+
		"\u0244\u0000\u0000\u1b25\u03e9\u0001\u0000\u0000\u0000\u1b26\u1b27\u0005"+
		"\u0274\u0000\u0000\u1b27\u03eb\u0001\u0000\u0000\u0000\u1b28\u1b29\u0005"+
		"\u0112\u0000\u0000\u1b29\u1b2a\u0005\u0019\u0000\u0000\u1b2a\u1b2b\u0003"+
		"\u03f0\u01f8\u0000\u1b2b\u03ed\u0001\u0000\u0000\u0000\u1b2c\u1b32\u0003"+
		"\u015a\u00ad\u0000\u1b2d\u1b32\u0003\u0152\u00a9\u0000\u1b2e\u1b32\u0003"+
		"\u0128\u0094\u0000\u1b2f\u1b32\u0003\u013c\u009e\u0000\u1b30\u1b32\u0003"+
		"\u0144\u00a2\u0000\u1b31\u1b2c\u0001\u0000\u0000\u0000\u1b31\u1b2d\u0001"+
		"\u0000\u0000\u0000\u1b31\u1b2e\u0001\u0000\u0000\u0000\u1b31\u1b2f\u0001"+
		"\u0000\u0000\u0000\u1b31\u1b30\u0001\u0000\u0000\u0000\u1b32\u03ef\u0001"+
		"\u0000\u0000\u0000\u1b33\u1b34\u0007o\u0000\u0000\u1b34\u03f1\u0001\u0000"+
		"\u0000\u0000\u1b35\u1b36\u0005H\u0000\u0000\u1b36\u1b37\u0003\u0224\u0112"+
		"\u0000\u1b37\u03f3\u0001\u0000\u0000\u0000\u1b38\u1b64\u0003\u0366\u01b3"+
		"\u0000\u1b39\u1b64\u0003\u0398\u01cc\u0000\u1b3a\u1b64\u0003\u0396\u01cb"+
		"\u0000\u1b3b\u1b64\u0003\u034c\u01a6\u0000\u1b3c\u1b64\u0003\u0354\u01aa"+
		"\u0000\u1b3d\u1b64\u0003\u0376\u01bb\u0000\u1b3e\u1b64\u0003\u0356\u01ab"+
		"\u0000\u1b3f\u1b64\u0003\u035e\u01af\u0000\u1b40\u1b64\u0003\u034e\u01a7"+
		"\u0000\u1b41\u1b64\u0003\u0350\u01a8\u0000\u1b42\u1b64\u0003\u0352\u01a9"+
		"\u0000\u1b43\u1b64\u0003\u0358\u01ac\u0000\u1b44\u1b64\u0003\u035a\u01ad"+
		"\u0000\u1b45\u1b64\u0003\u035c\u01ae\u0000\u1b46\u1b64\u0003\u0360\u01b0"+
		"\u0000\u1b47\u1b64\u0003\u0362\u01b1\u0000\u1b48\u1b64\u0003\u0364\u01b2"+
		"\u0000\u1b49\u1b64\u0003\u0368\u01b4\u0000\u1b4a\u1b64\u0003\u036a\u01b5"+
		"\u0000\u1b4b\u1b64\u0003\u03a0\u01d0\u0000\u1b4c\u1b64\u0003\u036c\u01b6"+
		"\u0000\u1b4d\u1b64\u0003\u036e\u01b7\u0000\u1b4e\u1b64\u0003\u0370\u01b8"+
		"\u0000\u1b4f\u1b64\u0003\u0372\u01b9\u0000\u1b50\u1b64\u0003\u0374\u01ba"+
		"\u0000\u1b51\u1b64\u0003\u0378\u01bc\u0000\u1b52\u1b64\u0003\u037c\u01be"+
		"\u0000\u1b53\u1b64\u0003\u037a\u01bd\u0000\u1b54\u1b64\u0003\u037e\u01bf"+
		"\u0000\u1b55\u1b64\u0003\u0380\u01c0\u0000\u1b56\u1b64\u0003\u0384\u01c2"+
		"\u0000\u1b57\u1b64\u0003\u0386\u01c3\u0000\u1b58\u1b64\u0003\u0382\u01c1"+
		"\u0000\u1b59\u1b64\u0003\u0388\u01c4\u0000\u1b5a\u1b64\u0003\u038e\u01c7"+
		"\u0000\u1b5b\u1b64\u0003\u0392\u01c9\u0000\u1b5c\u1b64\u0003\u038a\u01c5"+
		"\u0000\u1b5d\u1b64\u0003\u0394\u01ca\u0000\u1b5e\u1b64\u0003\u039a\u01cd"+
		"\u0000\u1b5f\u1b64\u0003\u039e\u01cf\u0000\u1b60\u1b64\u0003\u039c\u01ce"+
		"\u0000\u1b61\u1b64\u0003\u038c\u01c6\u0000\u1b62\u1b64\u0003\u0390\u01c8"+
		"\u0000\u1b63\u1b38\u0001\u0000\u0000\u0000\u1b63\u1b39\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b3a\u0001\u0000\u0000\u0000\u1b63\u1b3b\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b3c\u0001\u0000\u0000\u0000\u1b63\u1b3d\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b3e\u0001\u0000\u0000\u0000\u1b63\u1b3f\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b40\u0001\u0000\u0000\u0000\u1b63\u1b41\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b42\u0001\u0000\u0000\u0000\u1b63\u1b43\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b44\u0001\u0000\u0000\u0000\u1b63\u1b45\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b46\u0001\u0000\u0000\u0000\u1b63\u1b47\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b48\u0001\u0000\u0000\u0000\u1b63\u1b49\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b4a\u0001\u0000\u0000\u0000\u1b63\u1b4b\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b4c\u0001\u0000\u0000\u0000\u1b63\u1b4d\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b4e\u0001\u0000\u0000\u0000\u1b63\u1b4f\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b50\u0001\u0000\u0000\u0000\u1b63\u1b51\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b52\u0001\u0000\u0000\u0000\u1b63\u1b53\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b54\u0001\u0000\u0000\u0000\u1b63\u1b55\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b56\u0001\u0000\u0000\u0000\u1b63\u1b57\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b58\u0001\u0000\u0000\u0000\u1b63\u1b59\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b5a\u0001\u0000\u0000\u0000\u1b63\u1b5b\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b5c\u0001\u0000\u0000\u0000\u1b63\u1b5d\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b5e\u0001\u0000\u0000\u0000\u1b63\u1b5f\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b60\u0001\u0000\u0000\u0000\u1b63\u1b61\u0001\u0000\u0000"+
		"\u0000\u1b63\u1b62\u0001\u0000\u0000\u0000\u1b64\u03f5\u0001\u0000\u0000"+
		"\u0000\u1b65\u1b67\u0005\u0271\u0000\u0000\u1b66\u1b68\u0003\u0204\u0102"+
		"\u0000\u1b67\u1b66\u0001\u0000\u0000\u0000\u1b67\u1b68\u0001\u0000\u0000"+
		"\u0000\u1b68\u1b69\u0001\u0000\u0000\u0000\u1b69\u1b6a\u0005\u02c0\u0000"+
		"\u0000\u1b6a\u1b6b\u0003\u020a\u0105\u0000\u1b6b\u03f7\u0001\u0000\u0000"+
		"\u0000\u1b6c\u1b71\u0005\u0271\u0000\u0000\u1b6d\u1b6f\u0005+\u0000\u0000"+
		"\u1b6e\u1b6d\u0001\u0000\u0000\u0000\u1b6e\u1b6f\u0001\u0000\u0000\u0000"+
		"\u1b6f\u1b70\u0001\u0000\u0000\u0000\u1b70\u1b72\u0005+\u0000\u0000\u1b71"+
		"\u1b6e\u0001\u0000\u0000\u0000\u1b71\u1b72\u0001\u0000\u0000\u0000\u1b72"+
		"\u1b74\u0001\u0000\u0000\u0000\u1b73\u1b75\u0003\u0204\u0102\u0000\u1b74"+
		"\u1b73\u0001\u0000\u0000\u0000\u1b74\u1b75\u0001\u0000\u0000\u0000\u1b75"+
		"\u1b77\u0001\u0000\u0000\u0000\u1b76\u1b78\u0005\u0015\u0000\u0000\u1b77"+
		"\u1b76\u0001\u0000\u0000\u0000\u1b77\u1b78\u0001\u0000\u0000\u0000\u1b78"+
		"\u1b79\u0001\u0000\u0000\u0000\u1b79\u1b7a\u0005E\u0000\u0000\u1b7a\u1b7b"+
		"\u0005\u0019\u0000\u0000\u1b7b\u1b7c\u0007p\u0000\u0000\u1b7c\u03f9\u0001"+
		"\u0000\u0000\u0000\u1b7d\u1b7f\u0005h\u0000\u0000\u1b7e\u1b80\u0005\u02f6"+
		"\u0000\u0000\u1b7f\u1b7e\u0001\u0000\u0000\u0000\u1b7f\u1b80\u0001\u0000"+
		"\u0000\u0000\u1b80\u1b8e\u0001\u0000\u0000\u0000\u1b81\u1b82\u0005\u0293"+
		"\u0000\u0000\u1b82\u1b8b\u0005\u02c0\u0000\u0000\u1b83\u1b88\u0003\u03fc"+
		"\u01fe\u0000\u1b84\u1b85\u0005&\u0000\u0000\u1b85\u1b87\u0003\u03fc\u01fe"+
		"\u0000\u1b86\u1b84\u0001\u0000\u0000\u0000\u1b87\u1b8a\u0001\u0000\u0000"+
		"\u0000\u1b88\u1b86\u0001\u0000\u0000\u0000\u1b88\u1b89\u0001\u0000\u0000"+
		"\u0000\u1b89\u1b8c\u0001\u0000\u0000\u0000\u1b8a\u1b88\u0001\u0000\u0000"+
		"\u0000\u1b8b\u1b83\u0001\u0000\u0000\u0000\u1b8b\u1b8c\u0001\u0000\u0000"+
		"\u0000\u1b8c\u1b8e\u0001\u0000\u0000\u0000\u1b8d\u1b7d\u0001\u0000\u0000"+
		"\u0000\u1b8d\u1b81\u0001\u0000\u0000\u0000\u1b8e\u03fb\u0001\u0000\u0000"+
		"\u0000\u1b8f\u1b90\u0005\u02f4\u0000\u0000\u1b90\u1b91\u0005\u009e\u0000"+
		"\u0000\u1b91\u1b94\u0005\u027c\u0000\u0000\u1b92\u1b94\u0003\u0210\u0108"+
		"\u0000\u1b93\u1b8f\u0001\u0000\u0000\u0000\u1b93\u1b92\u0001\u0000\u0000"+
		"\u0000\u1b94\u03fd\u0001\u0000\u0000\u0000\u1b95\u1b97\u0005\u0094\u0000"+
		"\u0000\u1b96\u1b98\u0005\u02f6\u0000\u0000\u1b97\u1b96\u0001\u0000\u0000"+
		"\u0000\u1b97\u1b98\u0001\u0000\u0000\u0000\u1b98\u1b9a\u0001\u0000\u0000"+
		"\u0000\u1b99\u1b9b\u0003\u040e\u0207\u0000\u1b9a\u1b99\u0001\u0000\u0000"+
		"\u0000\u1b9a\u1b9b\u0001\u0000\u0000\u0000\u1b9b\u1b9d\u0001\u0000\u0000"+
		"\u0000\u1b9c\u1b9e\u0003\u0410\u0208\u0000\u1b9d\u1b9c\u0001\u0000\u0000"+
		"\u0000\u1b9d\u1b9e\u0001\u0000\u0000\u0000\u1b9e\u03ff\u0001\u0000\u0000"+
		"\u0000\u1b9f\u1bb1\u0005\u0253\u0000\u0000\u1ba0\u1ba2\u0005\u02f6\u0000"+
		"\u0000\u1ba1\u1ba0\u0001\u0000\u0000\u0000\u1ba1\u1ba2\u0001\u0000\u0000"+
		"\u0000\u1ba2\u1ba3\u0001\u0000\u0000\u0000\u1ba3\u1ba5\u0005\u02be\u0000"+
		"\u0000\u1ba4\u1ba6\u0005\u025d\u0000\u0000\u1ba5\u1ba4\u0001\u0000\u0000"+
		"\u0000\u1ba5\u1ba6\u0001\u0000\u0000\u0000\u1ba6\u1ba7\u0001\u0000\u0000"+
		"\u0000\u1ba7\u1bb2\u0003\u01ee\u00f7\u0000\u1ba8\u1baa\u0005\u02f6\u0000"+
		"\u0000\u1ba9\u1ba8\u0001\u0000\u0000\u0000\u1ba9\u1baa\u0001\u0000\u0000"+
		"\u0000\u1baa\u1bac\u0001\u0000\u0000\u0000\u1bab\u1bad\u0003\u040e\u0207"+
		"\u0000\u1bac\u1bab\u0001\u0000\u0000\u0000\u1bac\u1bad\u0001\u0000\u0000"+
		"\u0000\u1bad\u1baf\u0001\u0000\u0000\u0000\u1bae\u1bb0\u0003\u0410\u0208"+
		"\u0000\u1baf\u1bae\u0001\u0000\u0000\u0000\u1baf\u1bb0\u0001\u0000\u0000"+
		"\u0000\u1bb0\u1bb2\u0001\u0000\u0000\u0000\u1bb1\u1ba1\u0001\u0000\u0000"+
		"\u0000\u1bb1\u1ba9\u0001\u0000\u0000\u0000\u1bb2\u0401\u0001\u0000\u0000"+
		"\u0000\u1bb3\u1bb4\u0005\u025d\u0000\u0000\u1bb4\u1bb5\u0003\u01ee\u00f7"+
		"\u0000\u1bb5\u0403\u0001\u0000\u0000\u0000\u1bb6\u1bb8\u0005h\u0000\u0000"+
		"\u1bb7\u1bb9\u0005\u02f6\u0000\u0000\u1bb8\u1bb7\u0001\u0000\u0000\u0000"+
		"\u1bb8\u1bb9\u0001\u0000\u0000\u0000\u1bb9\u0405\u0001\u0000\u0000\u0000"+
		"\u1bba\u1bc7\u0005\u0176\u0000\u0000\u1bbb\u1bbc\u0005\u0144\u0000\u0000"+
		"\u1bbc\u1bbd\u0005\u010f\u0000\u0000\u1bbd\u1bc8\u0005f\u0000\u0000\u1bbe"+
		"\u1bbf\u0005\u02aa\u0000\u0000\u1bbf\u1bc4\u0003\u0412\u0209\u0000\u1bc0"+
		"\u1bc1\u0005&\u0000\u0000\u1bc1\u1bc3\u0003\u0412\u0209\u0000\u1bc2\u1bc0"+
		"\u0001\u0000\u0000\u0000\u1bc3\u1bc6\u0001\u0000\u0000\u0000\u1bc4\u1bc2"+
		"\u0001\u0000\u0000\u0000\u1bc4\u1bc5\u0001\u0000\u0000\u0000\u1bc5\u1bc8"+
		"\u0001\u0000\u0000\u0000\u1bc6\u1bc4\u0001\u0000\u0000\u0000\u1bc7\u1bbb"+
		"\u0001\u0000\u0000\u0000\u1bc7\u1bbe\u0001\u0000\u0000\u0000\u1bc8\u0407"+
		"\u0001\u0000\u0000\u0000\u1bc9\u1bca\u0005\u02d2\u0000\u0000\u1bca\u1bcb"+
		"\u0007q\u0000\u0000\u1bcb\u0409\u0001\u0000\u0000\u0000\u1bcc\u1bcd\u0005"+
		"\u022b\u0000\u0000\u1bcd\u1bce\u0005\u025d\u0000\u0000\u1bce\u1bcf\u0003"+
		"\u01ee\u00f7\u0000\u1bcf\u040b\u0001\u0000\u0000\u0000\u1bd0\u1bee\u0005"+
		"\u02fa\u0000\u0000\u1bd1\u1bd2\u0007r\u0000\u0000\u1bd2\u1bd4\u0003\u0416"+
		"\u020b\u0000\u1bd3\u1bd5\u0007s\u0000\u0000\u1bd4\u1bd3\u0001\u0000\u0000"+
		"\u0000\u1bd4\u1bd5\u0001\u0000\u0000\u0000\u1bd5\u1bef\u0001\u0000\u0000"+
		"\u0000\u1bd6\u1bd7\u0005\u00e4\u0000\u0000\u1bd7\u1bdd\u0003\u0416\u020b"+
		"\u0000\u1bd8\u1bdb\u0005\u02a5\u0000\u0000\u1bd9\u1bda\u0005\u010f\u0000"+
		"\u0000\u1bda\u1bdc\u0005\u01ae\u0000\u0000\u1bdb\u1bd9\u0001\u0000\u0000"+
		"\u0000\u1bdb\u1bdc\u0001\u0000\u0000\u0000\u1bdc\u1bde\u0001\u0000\u0000"+
		"\u0000\u1bdd\u1bd8\u0001\u0000\u0000\u0000\u1bdd\u1bde\u0001\u0000\u0000"+
		"\u0000\u1bde\u1bef\u0001\u0000\u0000\u0000\u1bdf\u1be0\u0005\u0206\u0000"+
		"\u0000\u1be0\u1bef\u0003\u0416\u020b\u0000\u1be1\u1be2\u0005\u0094\u0000"+
		"\u0000\u1be2\u1be5\u0003\u0416\u020b\u0000\u1be3\u1be4\u0005\u01dc\u0000"+
		"\u0000\u1be4\u1be6\u0005\u01fc\u0000\u0000\u1be5\u1be3\u0001\u0000\u0000"+
		"\u0000\u1be5\u1be6\u0001\u0000\u0000\u0000\u1be6\u1bef\u0001\u0000\u0000"+
		"\u0000\u1be7\u1be8\u0005\u0253\u0000\u0000\u1be8\u1bef\u0003\u0416\u020b"+
		"\u0000\u1be9\u1bec\u0005\u021f\u0000\u0000\u1bea\u1beb\u0005\u00a6\u0000"+
		"\u0000\u1beb\u1bed\u0005\u02fb\u0000\u0000\u1bec\u1bea\u0001\u0000\u0000"+
		"\u0000\u1bec\u1bed\u0001\u0000\u0000\u0000\u1bed\u1bef\u0001\u0000\u0000"+
		"\u0000\u1bee\u1bd1\u0001\u0000\u0000\u0000\u1bee\u1bd6\u0001\u0000\u0000"+
		"\u0000\u1bee\u1bdf\u0001\u0000\u0000\u0000\u1bee\u1be1\u0001\u0000\u0000"+
		"\u0000\u1bee\u1be7\u0001\u0000\u0000\u0000\u1bee\u1be9\u0001\u0000\u0000"+
		"\u0000\u1bef\u040d\u0001\u0000\u0000\u0000\u1bf0\u1bf2\u0005X\u0000\u0000"+
		"\u1bf1\u1bf3\u0005\u01c8\u0000\u0000\u1bf2\u1bf1\u0001\u0000\u0000\u0000"+
		"\u1bf2\u1bf3\u0001\u0000\u0000\u0000\u1bf3\u1bf4\u0001\u0000\u0000\u0000"+
		"\u1bf4\u1bf5\u0005}\u0000\u0000\u1bf5\u040f\u0001\u0000\u0000\u0000\u1bf6"+
		"\u1bf8\u0005\u01c8\u0000\u0000\u1bf7\u1bf6\u0001\u0000\u0000\u0000\u1bf7"+
		"\u1bf8\u0001\u0000\u0000\u0000\u1bf8\u1bf9\u0001\u0000\u0000\u0000\u1bf9"+
		"\u1bfa\u0005\u022b\u0000\u0000\u1bfa\u0411\u0001\u0000\u0000\u0000\u1bfb"+
		"\u1c00\u0003\u021c\u010e\u0000\u1bfc\u1bfe\u0005[\u0000\u0000\u1bfd\u1bfc"+
		"\u0001\u0000\u0000\u0000\u1bfd\u1bfe\u0001\u0000\u0000\u0000\u1bfe\u1bff"+
		"\u0001\u0000\u0000\u0000\u1bff\u1c01\u0003\u0238\u011c\u0000\u1c00\u1bfd"+
		"\u0001\u0000\u0000\u0000\u1c00\u1c01\u0001\u0000\u0000\u0000\u1c01\u1c02"+
		"\u0001\u0000\u0000\u0000\u1c02\u1c03\u0003\u0414\u020a\u0000\u1c03\u0413"+
		"\u0001\u0000\u0000\u0000\u1c04\u1c06\u0005\u0219\u0000\u0000\u1c05\u1c07"+
		"\u0005\u0173\u0000\u0000\u1c06\u1c05\u0001\u0000\u0000\u0000\u1c06\u1c07"+
		"\u0001\u0000\u0000\u0000\u1c07\u1c0d\u0001\u0000\u0000\u0000\u1c08\u1c0a"+
		"\u0005\u017f\u0000\u0000\u1c09\u1c08\u0001\u0000\u0000\u0000\u1c09\u1c0a"+
		"\u0001\u0000\u0000\u0000\u1c0a\u1c0b\u0001\u0000\u0000\u0000\u1c0b\u1c0d"+
		"\u0005\u02f8\u0000\u0000\u1c0c\u1c04\u0001\u0000\u0000\u0000\u1c0c\u1c09"+
		"\u0001\u0000\u0000\u0000\u1c0d\u0415\u0001\u0000\u0000\u0000\u1c0e\u1c15"+
		"\u0003\u02f4\u017a\u0000\u1c0f\u1c10\u0005&\u0000\u0000\u1c10\u1c13\u0003"+
		"\u02f4\u017a\u0000\u1c11\u1c12\u0005&\u0000\u0000\u1c12\u1c14\u0005\u0322"+
		"\u0000\u0000\u1c13\u1c11\u0001\u0000\u0000\u0000\u1c13\u1c14\u0001\u0000"+
		"\u0000\u0000\u1c14\u1c16\u0001\u0000\u0000\u0000\u1c15\u1c0f\u0001\u0000"+
		"\u0000\u0000\u1c15\u1c16\u0001\u0000\u0000\u0000\u1c16\u0417\u0001\u0000"+
		"\u0000\u0000\u1c17\u1c18\u0005\u0120\u0000\u0000\u1c18\u1c19\u0003\u041e"+
		"\u020f\u0000\u1c19\u1c1a\u0005\u02be\u0000\u0000\u1c1a\u1c1c\u0003\u041c"+
		"\u020e\u0000\u1c1b\u1c1d\u0003\u044c\u0226\u0000\u1c1c\u1c1b\u0001\u0000"+
		"\u0000\u0000\u1c1c\u1c1d\u0001\u0000\u0000\u0000\u1c1d\u1c49\u0001\u0000"+
		"\u0000\u0000\u1c1e\u1c1f\u0005\u0120\u0000\u0000\u1c1f\u1c20\u0003\u041e"+
		"\u020f\u0000\u1c20\u1c22\u0005\u01db\u0000\u0000\u1c21\u1c23\u0003\u0422"+
		"\u0211\u0000\u1c22\u1c21\u0001\u0000\u0000\u0000\u1c22\u1c23\u0001\u0000"+
		"\u0000\u0000\u1c23\u1c24\u0001\u0000\u0000\u0000\u1c24\u1c25\u0003\u0424"+
		"\u0212\u0000\u1c25\u1c26\u0005\u02be\u0000\u0000\u1c26\u1c28\u0003\u041c"+
		"\u020e\u0000\u1c27\u1c29\u0003\u044c\u0226\u0000\u1c28\u1c27\u0001\u0000"+
		"\u0000\u0000\u1c28\u1c29\u0001\u0000\u0000\u0000\u1c29\u1c2b\u0001\u0000"+
		"\u0000\u0000\u1c2a\u1c2c\u0003\u0452\u0229\u0000\u1c2b\u1c2a\u0001\u0000"+
		"\u0000\u0000\u1c2b\u1c2c\u0001\u0000\u0000\u0000\u1c2c\u1c49\u0001\u0000"+
		"\u0000\u0000\u1c2d\u1c2e\u0005\u0120\u0000\u0000\u1c2e\u1c30\u0005T\u0000"+
		"\u0000\u1c2f\u1c31\u0005\u020a\u0000\u0000\u1c30\u1c2f\u0001\u0000\u0000"+
		"\u0000\u1c30\u1c31\u0001\u0000\u0000\u0000\u1c31\u1c32\u0001\u0000\u0000"+
		"\u0000\u1c32\u1c34\u0005\u01db\u0000\u0000\u1c33\u1c35\u0003\u0422\u0211"+
		"\u0000\u1c34\u1c33\u0001\u0000\u0000\u0000\u1c34\u1c35\u0001\u0000\u0000"+
		"\u0000\u1c35\u1c36\u0001\u0000\u0000\u0000\u1c36\u1c37\u0003\u0424\u0212"+
		"\u0000\u1c37\u1c38\u0005\u02be\u0000\u0000\u1c38\u1c3a\u0003\u041c\u020e"+
		"\u0000\u1c39\u1c3b\u0003\u044c\u0226\u0000\u1c3a\u1c39\u0001\u0000\u0000"+
		"\u0000\u1c3a\u1c3b\u0001\u0000\u0000\u0000\u1c3b\u1c3d\u0001\u0000\u0000"+
		"\u0000\u1c3c\u1c3e\u0003\u0452\u0229\u0000\u1c3d\u1c3c\u0001\u0000\u0000"+
		"\u0000\u1c3d\u1c3e\u0001\u0000\u0000\u0000\u1c3e\u1c49\u0001\u0000\u0000"+
		"\u0000\u1c3f\u1c40\u0005\u0120\u0000\u0000\u1c40\u1c41\u0005\u0211\u0000"+
		"\u0000\u1c41\u1c42\u0005\u01db\u0000\u0000\u1c42\u1c43\u0003\u0228\u0114"+
		"\u0000\u1c43\u1c44\u0005\u02be\u0000\u0000\u1c44\u1c46\u0003\u041c\u020e"+
		"\u0000\u1c45\u1c47\u0003\u044c\u0226\u0000\u1c46\u1c45\u0001\u0000\u0000"+
		"\u0000\u1c46\u1c47\u0001\u0000\u0000\u0000\u1c47\u1c49\u0001\u0000\u0000"+
		"\u0000\u1c48\u1c17\u0001\u0000\u0000\u0000\u1c48\u1c1e\u0001\u0000\u0000"+
		"\u0000\u1c48\u1c2d\u0001\u0000\u0000\u0000\u1c48\u1c3f\u0001\u0000\u0000"+
		"\u0000\u1c49\u0419\u0001\u0000\u0000\u0000\u1c4a\u1c4b\u0005\u024f\u0000"+
		"\u0000\u1c4b\u1c4c\u0003\u041e\u020f\u0000\u1c4c\u1c4d\u0005\u0114\u0000"+
		"\u0000\u1c4d\u1c4e\u0003\u041c\u020e\u0000\u1c4e\u1c78\u0001\u0000\u0000"+
		"\u0000\u1c4f\u1c50\u0005\u024f\u0000\u0000\u1c50\u1c51\u0003\u041e\u020f"+
		"\u0000\u1c51\u1c53\u0005\u01db\u0000\u0000\u1c52\u1c54\u0003\u0422\u0211"+
		"\u0000\u1c53\u1c52\u0001\u0000\u0000\u0000\u1c53\u1c54\u0001\u0000\u0000"+
		"\u0000\u1c54\u1c55\u0001\u0000\u0000\u0000\u1c55\u1c56\u0003\u0424\u0212"+
		"\u0000\u1c56\u1c57\u0005\u0114\u0000\u0000\u1c57\u1c58\u0003\u041c\u020e"+
		"\u0000\u1c58\u1c78\u0001\u0000\u0000\u0000\u1c59\u1c5a\u0005\u024f\u0000"+
		"\u0000\u1c5a\u1c5c\u0005T\u0000\u0000\u1c5b\u1c5d\u0005\u020a\u0000\u0000"+
		"\u1c5c\u1c5b\u0001\u0000\u0000\u0000\u1c5c\u1c5d\u0001\u0000\u0000\u0000"+
		"\u1c5d\u1c5e\u0001\u0000\u0000\u0000\u1c5e\u1c60\u0005\u01db\u0000\u0000"+
		"\u1c5f\u1c61\u0003\u0422\u0211\u0000\u1c60\u1c5f\u0001\u0000\u0000\u0000"+
		"\u1c60\u1c61\u0001\u0000\u0000\u0000\u1c61\u1c62\u0001\u0000\u0000\u0000"+
		"\u1c62\u1c63\u0003\u0424\u0212\u0000\u1c63\u1c64\u0005\u0114\u0000\u0000"+
		"\u1c64\u1c65\u0003\u041c\u020e\u0000\u1c65\u1c78\u0001\u0000\u0000\u0000"+
		"\u1c66\u1c67\u0005\u024f\u0000\u0000\u1c67\u1c69\u0005T\u0000\u0000\u1c68"+
		"\u1c6a\u0005\u020a\u0000\u0000\u1c69\u1c68\u0001\u0000\u0000\u0000\u1c69"+
		"\u1c6a\u0001\u0000\u0000\u0000\u1c6a\u1c6b\u0001\u0000\u0000\u0000\u1c6b"+
		"\u1c6c\u0005&\u0000\u0000\u1c6c\u1c6d\u0005\u0120\u0000\u0000\u1c6d\u1c6e"+
		"\u0005\u01e1\u0000\u0000\u1c6e\u1c6f\u0005\u0114\u0000\u0000\u1c6f\u1c78"+
		"\u0003\u041c\u020e\u0000\u1c70\u1c71\u0005\u024f\u0000\u0000\u1c71\u1c72"+
		"\u0005\u0211\u0000\u0000\u1c72\u1c73\u0005\u01db\u0000\u0000\u1c73\u1c74"+
		"\u0003\u0228\u0114\u0000\u1c74\u1c75\u0005\u0114\u0000\u0000\u1c75\u1c76"+
		"\u0003\u041c\u020e\u0000\u1c76\u1c78\u0001\u0000\u0000\u0000\u1c77\u1c4a"+
		"\u0001\u0000\u0000\u0000\u1c77\u1c4f\u0001\u0000\u0000\u0000\u1c77\u1c59"+
		"\u0001\u0000\u0000\u0000\u1c77\u1c66\u0001\u0000\u0000\u0000\u1c77\u1c70"+
		"\u0001\u0000\u0000\u0000\u1c78\u041b\u0001\u0000\u0000\u0000\u1c79\u1c7e"+
		"\u0003\u0228\u0114\u0000\u1c7a\u1c7b\u0005&\u0000\u0000\u1c7b\u1c7d\u0003"+
		"\u0228\u0114\u0000\u1c7c\u1c7a\u0001\u0000\u0000\u0000\u1c7d\u1c80\u0001"+
		"\u0000\u0000\u0000\u1c7e\u1c7c\u0001\u0000\u0000\u0000\u1c7e\u1c7f\u0001"+
		"\u0000\u0000\u0000\u1c7f\u041d\u0001\u0000\u0000\u0000\u1c80\u1c7e\u0001"+
		"\u0000\u0000\u0000\u1c81\u1c86\u0003\u0420\u0210\u0000\u1c82\u1c83\u0005"+
		"&\u0000\u0000\u1c83\u1c85\u0003\u0420\u0210\u0000\u1c84\u1c82\u0001\u0000"+
		"\u0000\u0000\u1c85\u1c88\u0001\u0000\u0000\u0000\u1c86\u1c84\u0001\u0000"+
		"\u0000\u0000\u1c86\u1c87\u0001\u0000\u0000\u0000\u1c87\u041f\u0001\u0000"+
		"\u0000\u0000\u1c88\u1c86\u0001\u0000\u0000\u0000\u1c89\u1c8e\u0003\u025a"+
		"\u012d\u0000\u1c8a\u1c8b\u0005 \u0000\u0000\u1c8b\u1c8c\u0003\u0240\u0120"+
		"\u0000\u1c8c\u1c8d\u0005!\u0000\u0000\u1c8d\u1c8f\u0001\u0000\u0000\u0000"+
		"\u1c8e\u1c8a\u0001\u0000\u0000\u0000\u1c8e\u1c8f\u0001\u0000\u0000\u0000"+
		"\u1c8f\u1cdc\u0001\u0000\u0000\u0000\u1c90\u1c91\u0003\u025a\u012d\u0000"+
		"\u1c91\u1c92\u0005+\u0000\u0000\u1c92\u1c93\u0003\u01fa\u00fd\u0000\u1c93"+
		"\u1cdc\u0001\u0000\u0000\u0000\u1c94\u1c99\u0005\u026a\u0000\u0000\u1c95"+
		"\u1c96\u0005 \u0000\u0000\u1c96\u1c97\u0003\u0240\u0120\u0000\u1c97\u1c98"+
		"\u0005!\u0000\u0000\u1c98\u1c9a\u0001\u0000\u0000\u0000\u1c99\u1c95\u0001"+
		"\u0000\u0000\u0000\u1c99\u1c9a\u0001\u0000\u0000\u0000\u1c9a\u1cdc\u0001"+
		"\u0000\u0000\u0000\u1c9b\u1ca0\u0005\u0141\u0000\u0000\u1c9c\u1c9d\u0005"+
		" \u0000\u0000\u1c9d\u1c9e\u0003\u0240\u0120\u0000\u1c9e\u1c9f\u0005!\u0000"+
		"\u0000\u1c9f\u1ca1\u0001\u0000\u0000\u0000\u1ca0\u1c9c\u0001\u0000\u0000"+
		"\u0000\u1ca0\u1ca1\u0001\u0000\u0000\u0000\u1ca1\u1cdc\u0001\u0000\u0000"+
		"\u0000\u1ca2\u1ca7\u0005\u02d5\u0000\u0000\u1ca3\u1ca4\u0005 \u0000\u0000"+
		"\u1ca4\u1ca5\u0003\u0240\u0120\u0000\u1ca5\u1ca6\u0005!\u0000\u0000\u1ca6"+
		"\u1ca8\u0001\u0000\u0000\u0000\u1ca7\u1ca3\u0001\u0000\u0000\u0000\u1ca7"+
		"\u1ca8\u0001\u0000\u0000\u0000\u1ca8\u1cdc\u0001\u0000\u0000\u0000\u1ca9"+
		"\u1cae\u0005\u0224\u0000\u0000\u1caa\u1cab\u0005 \u0000\u0000\u1cab\u1cac"+
		"\u0003\u0240\u0120\u0000\u1cac\u1cad\u0005!\u0000\u0000\u1cad\u1caf\u0001"+
		"\u0000\u0000\u0000\u1cae\u1caa\u0001\u0000\u0000\u0000\u1cae\u1caf\u0001"+
		"\u0000\u0000\u0000\u1caf\u1cdc\u0001\u0000\u0000\u0000\u1cb0\u1cdc\u0005"+
		"\u00c8\u0000\u0000\u1cb1\u1cdc\u0005\u02d7\u0000\u0000\u1cb2\u1cdc\u0005"+
		"\u013a\u0000\u0000\u1cb3\u1cdc\u0005U\u0000\u0000\u1cb4\u1cdc\u0005\u00a8"+
		"\u0000\u0000\u1cb5\u1cdc\u0005\u00d8\u0000\u0000\u1cb6\u1cdc\u0005\u00f5"+
		"\u0000\u0000\u1cb7\u1cdc\u0005\u022c\u0000\u0000\u1cb8\u1cdc\u0005\u0274"+
		"\u0000\u0000\u1cb9\u1cdc\u0005\u020d\u0000\u0000\u1cba\u1cdc\u0005\u0103"+
		"\u0000\u0000\u1cbb\u1cbc\u0005\u0120\u0000\u0000\u1cbc\u1cdc\u0005\u01e1"+
		"\u0000\u0000\u1cbd\u1cbe\u0005\u0273\u0000\u0000\u1cbe\u1cdc\u0005\u00b5"+
		"\u0000\u0000\u1cbf\u1cdc\u0005\u02a4\u0000\u0000\u1cc0\u1cc1\u0005\u00a8"+
		"\u0000\u0000\u1cc1\u1cc2\u0005\u02ae\u0000\u0000\u1cc2\u1cdc\u0005\u02aa"+
		"\u0000\u0000\u1cc3\u1cc4\u0005\u0176\u0000\u0000\u1cc4\u1cdc\u0005\u02aa"+
		"\u0000\u0000\u1cc5\u1cc6\u0005\u023d\u0000\u0000\u1cc6\u1cdc\u0005\u0279"+
		"\u0000\u0000\u1cc7\u1cc8\u0005\u023d\u0000\u0000\u1cc8\u1cdc\u0005\u0088"+
		"\u0000\u0000\u1cc9\u1cca\u0005\u00a8\u0000\u0000\u1cca\u1cdc\u0005\u02e9"+
		"\u0000\u0000\u1ccb\u1ccc\u0005\u0273\u0000\u0000\u1ccc\u1cdc\u0005\u02e9"+
		"\u0000\u0000\u1ccd\u1cce\u0005\u00a8\u0000\u0000\u1cce\u1cdc\u0005\u0256"+
		"\u0000\u0000\u1ccf\u1cd0\u0005U\u0000\u0000\u1cd0\u1cdc\u0005\u0256\u0000"+
		"\u0000\u1cd1\u1cd2\u0005\u00a8\u0000\u0000\u1cd2\u1cdc\u0005\u02d9\u0000"+
		"\u0000\u1cd3\u1cdc\u0005\u00ef\u0000\u0000\u1cd4\u1cdc\u0005\u02c1\u0000"+
		"\u0000\u1cd5\u1cd6\u0005\u00a8\u0000\u0000\u1cd6\u1cdc\u0005\u02ab\u0000"+
		"\u0000\u1cd7\u1cd8\u0005\u00a8\u0000\u0000\u1cd8\u1cdc\u0005\u0252\u0000"+
		"\u0000\u1cd9\u1cda\u0005\u00d8\u0000\u0000\u1cda\u1cdc\u0005\u0252\u0000"+
		"\u0000\u1cdb\u1c89\u0001\u0000\u0000\u0000\u1cdb\u1c90\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1c94\u0001\u0000\u0000\u0000\u1cdb\u1c9b\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1ca2\u0001\u0000\u0000\u0000\u1cdb\u1ca9\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cb0\u0001\u0000\u0000\u0000\u1cdb\u1cb1\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cb2\u0001\u0000\u0000\u0000\u1cdb\u1cb3\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cb4\u0001\u0000\u0000\u0000\u1cdb\u1cb5\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cb6\u0001\u0000\u0000\u0000\u1cdb\u1cb7\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cb8\u0001\u0000\u0000\u0000\u1cdb\u1cb9\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cba\u0001\u0000\u0000\u0000\u1cdb\u1cbb\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cbd\u0001\u0000\u0000\u0000\u1cdb\u1cbf\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cc0\u0001\u0000\u0000\u0000\u1cdb\u1cc3\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cc5\u0001\u0000\u0000\u0000\u1cdb\u1cc7\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cc9\u0001\u0000\u0000\u0000\u1cdb\u1ccb\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1ccd\u0001\u0000\u0000\u0000\u1cdb\u1ccf\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cd1\u0001\u0000\u0000\u0000\u1cdb\u1cd3\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cd4\u0001\u0000\u0000\u0000\u1cdb\u1cd5\u0001\u0000\u0000"+
		"\u0000\u1cdb\u1cd7\u0001\u0000\u0000\u0000\u1cdb\u1cd9\u0001\u0000\u0000"+
		"\u0000\u1cdc\u0421\u0001\u0000\u0000\u0000\u1cdd\u1cde\u0007t\u0000\u0000"+
		"\u1cde\u0423\u0001\u0000\u0000\u0000\u1cdf\u1ce7\u0005\u0012\u0000\u0000"+
		"\u1ce0\u1ce1\u0005\u0012\u0000\u0000\u1ce1\u1ce7\u0005\u0016\u0000\u0000"+
		"\u1ce2\u1ce3\u0003\u0212\u0109\u0000\u1ce3\u1ce4\u0005\u0016\u0000\u0000"+
		"\u1ce4\u1ce7\u0001\u0000\u0000\u0000\u1ce5\u1ce7\u0003\u021c\u010e\u0000"+
		"\u1ce6\u1cdf\u0001\u0000\u0000\u0000\u1ce6\u1ce0\u0001\u0000\u0000\u0000"+
		"\u1ce6\u1ce2\u0001\u0000\u0000\u0000\u1ce6\u1ce5\u0001\u0000\u0000\u0000"+
		"\u1ce7\u0425\u0001\u0000\u0000\u0000\u1ce8\u1ce9\u0005\u00a8\u0000\u0000"+
		"\u1ce9\u1ceb\u0005\u02d9\u0000\u0000\u1cea\u1cec\u0003\u031e\u018f\u0000"+
		"\u1ceb\u1cea\u0001\u0000\u0000\u0000\u1ceb\u1cec\u0001\u0000\u0000\u0000"+
		"\u1cec\u1ced\u0001\u0000\u0000\u0000\u1ced\u1cef\u0003\u042a\u0215\u0000"+
		"\u1cee\u1cf0\u0003\u042c\u0216\u0000\u1cef\u1cee\u0001\u0000\u0000\u0000"+
		"\u1cef\u1cf0\u0001\u0000\u0000\u0000\u1cf0\u1cf2\u0001\u0000\u0000\u0000"+
		"\u1cf1\u1cf3\u0003\u042e\u0217\u0000\u1cf2\u1cf1\u0001\u0000\u0000\u0000"+
		"\u1cf2\u1cf3\u0001\u0000\u0000\u0000\u1cf3\u1cf5\u0001\u0000\u0000\u0000"+
		"\u1cf4\u1cf6\u0003\u0430\u0218\u0000\u1cf5\u1cf4\u0001\u0000\u0000\u0000"+
		"\u1cf5\u1cf6\u0001\u0000\u0000\u0000\u1cf6\u1cf8\u0001\u0000\u0000\u0000"+
		"\u1cf7\u1cf9\u0003\u0432\u0219\u0000\u1cf8\u1cf7\u0001\u0000\u0000\u0000"+
		"\u1cf8\u1cf9\u0001\u0000\u0000\u0000\u1cf9\u0427\u0001\u0000\u0000\u0000"+
		"\u1cfa\u1d22\u0003\u0228\u0114\u0000\u1cfb\u1cfc\u0003\u0228\u0114\u0000"+
		"\u1cfc\u1cfd\u0005\u0133\u0000\u0000\u1cfd\u1cfe\u0005u\u0000\u0000\u1cfe"+
		"\u1cff\u0003\u01dc\u00ee\u0000\u1cff\u1d22\u0001\u0000\u0000\u0000\u1d00"+
		"\u1d01\u0003\u0228\u0114\u0000\u1d01\u1d02\u0005\u0133\u0000\u0000\u1d02"+
		"\u1d03\u0005u\u0000\u0000\u1d03\u1d04\u0005\u0216\u0000\u0000\u1d04\u1d05"+
		"\u0005\u01f6\u0000\u0000\u1d05\u1d22\u0001\u0000\u0000\u0000\u1d06\u1d07"+
		"\u0003\u0228\u0114\u0000\u1d07\u1d08\u0005\u0133\u0000\u0000\u1d08\u1d09"+
		"\u0005\u02f4\u0000\u0000\u1d09\u1d0a\u0003\u01fa\u00fd\u0000\u1d0a\u1d22"+
		"\u0001\u0000\u0000\u0000\u1d0b\u1d0c\u0003\u0228\u0114\u0000\u1d0c\u1d0d"+
		"\u0005\u0133\u0000\u0000\u1d0d\u1d0e\u0005\u02f4\u0000\u0000\u1d0e\u1d0f"+
		"\u0003\u01fa\u00fd\u0000\u1d0f\u1d10\u0005[\u0000\u0000\u1d10\u1d11\u0003"+
		"\u01dc\u00ee\u0000\u1d11\u1d22\u0001\u0000\u0000\u0000\u1d12\u1d13\u0003"+
		"\u0228\u0114\u0000\u1d13\u1d14\u0005\u0133\u0000\u0000\u1d14\u1d15\u0005"+
		"\u02f4\u0000\u0000\u1d15\u1d16\u0003\u01fa\u00fd\u0000\u1d16\u1d17\u0005"+
		"u\u0000\u0000\u1d17\u1d18\u0003\u01dc\u00ee\u0000\u1d18\u1d22\u0001\u0000"+
		"\u0000\u0000\u1d19\u1d1a\u0003\u0228\u0114\u0000\u1d1a\u1d1b\u0005\u0133"+
		"\u0000\u0000\u1d1b\u1d1c\u0005\u02f4\u0000\u0000\u1d1c\u1d1d\u0003\u01fa"+
		"\u00fd\u0000\u1d1d\u1d1e\u0005u\u0000\u0000\u1d1e\u1d1f\u0005\u0216\u0000"+
		"\u0000\u1d1f\u1d20\u0005\u01f6\u0000\u0000\u1d20\u1d22\u0001\u0000\u0000"+
		"\u0000\u1d21\u1cfa\u0001\u0000\u0000\u0000\u1d21\u1cfb\u0001\u0000\u0000"+
		"\u0000\u1d21\u1d00\u0001\u0000\u0000\u0000\u1d21\u1d06\u0001\u0000\u0000"+
		"\u0000\u1d21\u1d0b\u0001\u0000\u0000\u0000\u1d21\u1d12\u0001\u0000\u0000"+
		"\u0000\u1d21\u1d19\u0001\u0000\u0000\u0000\u1d22\u0429\u0001\u0000\u0000"+
		"\u0000\u1d23\u1d28\u0003\u0428\u0214\u0000\u1d24\u1d25\u0005&\u0000\u0000"+
		"\u1d25\u1d27\u0003\u0428\u0214\u0000\u1d26\u1d24\u0001\u0000\u0000\u0000"+
		"\u1d27\u1d2a\u0001\u0000\u0000\u0000\u1d28\u1d26\u0001\u0000\u0000\u0000"+
		"\u1d28\u1d29\u0001\u0000\u0000\u0000\u1d29\u042b\u0001\u0000\u0000\u0000"+
		"\u1d2a\u1d28\u0001\u0000\u0000\u0000\u1d2b\u1d2c\u0005\u00c2\u0000\u0000"+
		"\u1d2c\u1d2d\u0005\u0252\u0000\u0000\u1d2d\u1d32\u0003\u0258\u012c\u0000"+
		"\u1d2e\u1d2f\u0005&\u0000\u0000\u1d2f\u1d31\u0003\u0258\u012c\u0000\u1d30"+
		"\u1d2e\u0001\u0000\u0000\u0000\u1d31\u1d34\u0001\u0000\u0000\u0000\u1d32"+
		"\u1d30\u0001\u0000\u0000\u0000\u1d32\u1d33\u0001\u0000\u0000\u0000\u1d33"+
		"\u042d\u0001\u0000\u0000\u0000\u1d34\u1d32\u0001\u0000\u0000\u0000\u1d35"+
		"\u1d43\u0005\u023e\u0000\u0000\u1d36\u1d44\u0005\u01ca\u0000\u0000\u1d37"+
		"\u1d44\u0005\u0291\u0000\u0000\u1d38\u1d44\u0005\u02f9\u0000\u0000\u1d39"+
		"\u1d40\u0003\u045e\u022f\u0000\u1d3a\u1d3c\u0005X\u0000\u0000\u1d3b\u1d3a"+
		"\u0001\u0000\u0000\u0000\u1d3b\u1d3c\u0001\u0000\u0000\u0000\u1d3c\u1d3d"+
		"\u0001\u0000\u0000\u0000\u1d3d\u1d3f\u0003\u045e\u022f\u0000\u1d3e\u1d3b"+
		"\u0001\u0000\u0000\u0000\u1d3f\u1d42\u0001\u0000\u0000\u0000\u1d40\u1d3e"+
		"\u0001\u0000\u0000\u0000\u1d40\u1d41\u0001\u0000\u0000\u0000\u1d41\u1d44"+
		"\u0001\u0000\u0000\u0000\u1d42\u1d40\u0001\u0000\u0000\u0000\u1d43\u1d36"+
		"\u0001\u0000\u0000\u0000\u1d43\u1d37\u0001\u0000\u0000\u0000\u1d43\u1d38"+
		"\u0001\u0000\u0000\u0000\u1d43\u1d39\u0001\u0000\u0000\u0000\u1d44\u042f"+
		"\u0001\u0000\u0000\u0000\u1d45\u1d46\u0005\u02f4\u0000\u0000\u1d46\u1d4a"+
		"\u0003\u045c\u022e\u0000\u1d47\u1d49\u0003\u045c\u022e\u0000\u1d48\u1d47"+
		"\u0001\u0000\u0000\u0000\u1d49\u1d4c\u0001\u0000\u0000\u0000\u1d4a\u1d48"+
		"\u0001\u0000\u0000\u0000\u1d4a\u1d4b\u0001\u0000\u0000\u0000\u1d4b\u0431"+
		"\u0001\u0000\u0000\u0000\u1d4c\u1d4a\u0001\u0000\u0000\u0000\u1d4d\u1d4f"+
		"\u0003\u0434\u021a\u0000\u1d4e\u1d4d\u0001\u0000\u0000\u0000\u1d4f\u1d50"+
		"\u0001\u0000\u0000\u0000\u1d50\u1d4e\u0001\u0000\u0000\u0000\u1d50\u1d51"+
		"\u0001\u0000\u0000\u0000\u1d51\u0433\u0001\u0000\u0000\u0000\u1d52\u1d53"+
		"\u0005K\u0000\u0000\u1d53\u1d73\u0007u\u0000\u0000\u1d54\u1d55\u0005\u01f6"+
		"\u0000\u0000\u1d55\u1d5b\u0005\u00f9\u0000\u0000\u1d56\u1d5c\u0005\u00c2"+
		"\u0000\u0000\u1d57\u1d5c\u0005\u01c5\u0000\u0000\u1d58\u1d59\u0005\u014c"+
		"\u0000\u0000\u1d59\u1d5a\u0005\u0322\u0000\u0000\u1d5a\u1d5c\u0005\u00b9"+
		"\u0000\u0000\u1d5b\u1d56\u0001\u0000\u0000\u0000\u1d5b\u1d57\u0001\u0000"+
		"\u0000\u0000\u1d5b\u1d58\u0001\u0000\u0000\u0000\u1d5b\u1d5c\u0001\u0000"+
		"\u0000\u0000\u1d5c\u1d73\u0001\u0000\u0000\u0000\u1d5d\u1d5e\u0005\u01f6"+
		"\u0000\u0000\u1d5e\u1d5f\u0005\u012c\u0000\u0000\u1d5f\u1d73\u0007\t\u0000"+
		"\u0000\u1d60\u1d61\u0005\u01f6\u0000\u0000\u1d61\u1d62\u0005\u024d\u0000"+
		"\u0000\u1d62\u1d66\u0005\u014c\u0000\u0000\u1d63\u1d67\u0005\u00c2\u0000"+
		"\u0000\u1d64\u1d65\u0005\u0322\u0000\u0000\u1d65\u1d67\u0005\u00b9\u0000"+
		"\u0000\u1d66\u1d63\u0001\u0000\u0000\u0000\u1d66\u1d64\u0001\u0000\u0000"+
		"\u0000\u1d67\u1d73\u0001\u0000\u0000\u0000\u1d68\u1d69\u0005\u01f6\u0000"+
		"\u0000\u1d69\u1d6a\u0005\u023e\u0000\u0000\u1d6a\u1d6c\u0005\u00ac\u0000"+
		"\u0000\u1d6b\u1d6d\u0007v\u0000\u0000\u1d6c\u1d6b\u0001\u0000\u0000\u0000"+
		"\u1d6c\u1d6d\u0001\u0000\u0000\u0000\u1d6d\u1d73\u0001\u0000\u0000\u0000"+
		"\u1d6e\u1d6f\u0005\u00fe\u0000\u0000\u1d6f\u1d73\u0005\u0322\u0000\u0000"+
		"\u1d70\u1d71\u0005\u01f7\u0000\u0000\u1d71\u1d73\u0007w\u0000\u0000\u1d72"+
		"\u1d52\u0001\u0000\u0000\u0000\u1d72\u1d54\u0001\u0000\u0000\u0000\u1d72"+
		"\u1d5d\u0001\u0000\u0000\u0000\u1d72\u1d60\u0001\u0000\u0000\u0000\u1d72"+
		"\u1d68\u0001\u0000\u0000\u0000\u1d72\u1d6e\u0001\u0000\u0000\u0000\u1d72"+
		"\u1d70\u0001\u0000\u0000\u0000\u1d73\u0435\u0001\u0000\u0000\u0000\u1d74"+
		"\u1d75\u0005U\u0000\u0000\u1d75\u1d77\u0005\u02d9\u0000\u0000\u1d76\u1d78"+
		"\u0003\u0320\u0190\u0000\u1d77\u1d76\u0001\u0000\u0000\u0000\u1d77\u1d78"+
		"\u0001\u0000\u0000\u0000\u1d78\u1d79\u0001\u0000\u0000\u0000\u1d79\u1d7b"+
		"\u0003\u043a\u021d\u0000\u1d7a\u1d7c\u0003\u042e\u0217\u0000\u1d7b\u1d7a"+
		"\u0001\u0000\u0000\u0000\u1d7b\u1d7c\u0001\u0000\u0000\u0000\u1d7c\u1d7e"+
		"\u0001\u0000\u0000\u0000\u1d7d\u1d7f\u0003\u0430\u0218\u0000\u1d7e\u1d7d"+
		"\u0001\u0000\u0000\u0000\u1d7e\u1d7f\u0001\u0000\u0000\u0000\u1d7f\u1d81"+
		"\u0001\u0000\u0000\u0000\u1d80\u1d82\u0003\u0432\u0219\u0000\u1d81\u1d80"+
		"\u0001\u0000\u0000\u0000\u1d81\u1d82\u0001\u0000\u0000\u0000\u1d82\u1da1"+
		"\u0001\u0000\u0000\u0000\u1d83\u1d84\u0005U\u0000\u0000\u1d84\u1d86\u0005"+
		"\u02d9\u0000\u0000\u1d85\u1d87\u0003\u0320\u0190\u0000\u1d86\u1d85\u0001"+
		"\u0000\u0000\u0000\u1d86\u1d87\u0001\u0000\u0000\u0000\u1d87\u1d88\u0001"+
		"\u0000\u0000\u0000\u1d88\u1d89\u0005\u02d9\u0000\u0000\u1d89\u1d8a\u0005"+
		" \u0000\u0000\u1d8a\u1d8b\u0005!\u0000\u0000\u1d8b\u1da1\u0003\u0460\u0230"+
		"\u0000\u1d8c\u1d8d\u0005U\u0000\u0000\u1d8d\u1d8f\u0005\u02d9\u0000\u0000"+
		"\u1d8e\u1d90\u0003\u0320\u0190\u0000\u1d8f\u1d8e\u0001\u0000\u0000\u0000"+
		"\u1d8f\u1d90\u0001\u0000\u0000\u0000\u1d90\u1d91\u0001\u0000\u0000\u0000"+
		"\u1d91\u1d92\u0003\u0228\u0114\u0000\u1d92\u1d93\u0005\u00c2\u0000\u0000"+
		"\u1d93\u1d9e\u0005\u0252\u0000\u0000\u1d94\u1d9f\u0005\u01ca\u0000\u0000"+
		"\u1d95\u1d9f\u0005T\u0000\u0000\u1d96\u1d9b\u0003\u0258\u012c\u0000\u1d97"+
		"\u1d98\u0005&\u0000\u0000\u1d98\u1d9a\u0003\u0258\u012c\u0000\u1d99\u1d97"+
		"\u0001\u0000\u0000\u0000\u1d9a\u1d9d\u0001\u0000\u0000\u0000\u1d9b\u1d99"+
		"\u0001\u0000\u0000\u0000\u1d9b\u1d9c\u0001\u0000\u0000\u0000\u1d9c\u1d9f"+
		"\u0001\u0000\u0000\u0000\u1d9d\u1d9b\u0001\u0000\u0000\u0000\u1d9e\u1d94"+
		"\u0001\u0000\u0000\u0000\u1d9e\u1d95\u0001\u0000\u0000\u0000\u1d9e\u1d96"+
		"\u0001\u0000\u0000\u0000\u1d9f\u1da1\u0001\u0000\u0000\u0000\u1da0\u1d74"+
		"\u0001\u0000\u0000\u0000\u1da0\u1d83\u0001\u0000\u0000\u0000\u1da0\u1d8c"+
		"\u0001\u0000\u0000\u0000\u1da1\u0437\u0001\u0000\u0000\u0000\u1da2\u1da4"+
		"\u0003\u0228\u0114\u0000\u1da3\u1da5\u0003\u0456\u022b\u0000\u1da4\u1da3"+
		"\u0001\u0000\u0000\u0000\u1da4\u1da5\u0001\u0000\u0000\u0000\u1da5\u0439"+
		"\u0001\u0000\u0000\u0000\u1da6\u1dab\u0003\u0438\u021c\u0000\u1da7\u1da8"+
		"\u0005&\u0000\u0000\u1da8\u1daa\u0003\u0438\u021c\u0000\u1da9\u1da7\u0001"+
		"\u0000\u0000\u0000\u1daa\u1dad\u0001\u0000\u0000\u0000\u1dab\u1da9\u0001"+
		"\u0000\u0000\u0000\u1dab\u1dac\u0001\u0000\u0000\u0000\u1dac\u043b\u0001"+
		"\u0000\u0000\u0000\u1dad\u1dab\u0001\u0000\u0000\u0000\u1dae\u1daf\u0005"+
		"\u00d8\u0000\u0000\u1daf\u1db1\u0005\u02d9\u0000\u0000\u1db0\u1db2\u0003"+
		"\u0320\u0190\u0000\u1db1\u1db0\u0001\u0000\u0000\u0000\u1db1\u1db2\u0001"+
		"\u0000\u0000\u0000\u1db2\u1db3\u0001\u0000\u0000\u0000\u1db3\u1db8\u0003"+
		"\u0228\u0114\u0000\u1db4\u1db5\u0005&\u0000\u0000\u1db5\u1db7\u0003\u0228"+
		"\u0114\u0000\u1db6\u1db4\u0001\u0000\u0000\u0000\u1db7\u1dba\u0001\u0000"+
		"\u0000\u0000\u1db8\u1db6\u0001\u0000\u0000\u0000\u1db8\u1db9\u0001\u0000"+
		"\u0000\u0000\u1db9\u043d\u0001\u0000\u0000\u0000\u1dba\u1db8\u0001\u0000"+
		"\u0000\u0000\u1dbb\u1dbc\u0005\u00a8\u0000\u0000\u1dbc\u1dbe\u0005\u0252"+
		"\u0000\u0000\u1dbd\u1dbf\u0003\u031e\u018f\u0000\u1dbe\u1dbd\u0001\u0000"+
		"\u0000\u0000\u1dbe\u1dbf\u0001\u0000\u0000\u0000\u1dbf\u1dc0\u0001\u0000"+
		"\u0000\u0000\u1dc0\u1dc5\u0003\u0258\u012c\u0000\u1dc1\u1dc2\u0005&\u0000"+
		"\u0000\u1dc2\u1dc4\u0003\u0258\u012c\u0000\u1dc3\u1dc1\u0001\u0000\u0000"+
		"\u0000\u1dc4\u1dc7\u0001\u0000\u0000\u0000\u1dc5\u1dc3\u0001\u0000\u0000"+
		"\u0000\u1dc5\u1dc6\u0001\u0000\u0000\u0000\u1dc6\u043f\u0001\u0000\u0000"+
		"\u0000\u1dc7\u1dc5\u0001\u0000\u0000\u0000\u1dc8\u1dc9\u0005\u00d8\u0000"+
		"\u0000\u1dc9\u1dcb\u0005\u0252\u0000\u0000\u1dca\u1dcc\u0003\u0320\u0190"+
		"\u0000\u1dcb\u1dca\u0001\u0000\u0000\u0000\u1dcb\u1dcc\u0001\u0000\u0000"+
		"\u0000\u1dcc\u1dcd\u0001\u0000\u0000\u0000\u1dcd\u1dd2\u0003\u0258\u012c"+
		"\u0000\u1dce\u1dcf\u0005&\u0000\u0000\u1dcf\u1dd1\u0003\u0258\u012c\u0000"+
		"\u1dd0\u1dce\u0001\u0000\u0000\u0000\u1dd1\u1dd4\u0001\u0000\u0000\u0000"+
		"\u1dd2\u1dd0\u0001\u0000\u0000\u0000\u1dd2\u1dd3\u0001\u0000\u0000\u0000"+
		"\u1dd3\u0441\u0001\u0000\u0000\u0000\u1dd4\u1dd2\u0001\u0000\u0000\u0000"+
		"\u1dd5\u1dd6\u0005\u022e\u0000\u0000\u1dd6\u1dd7\u0005\u02d9\u0000\u0000"+
		"\u1dd7\u1dd8\u0003\u0228\u0114\u0000\u1dd8\u1dd9\u0005\u02be\u0000\u0000"+
		"\u1dd9\u1de1\u0003\u0228\u0114\u0000\u1dda\u1ddb\u0005&\u0000\u0000\u1ddb"+
		"\u1ddc\u0003\u0228\u0114\u0000\u1ddc\u1ddd\u0005\u02be\u0000\u0000\u1ddd"+
		"\u1dde\u0003\u0228\u0114\u0000\u1dde\u1de0\u0001\u0000\u0000\u0000\u1ddf"+
		"\u1dda\u0001\u0000\u0000\u0000\u1de0\u1de3\u0001\u0000\u0000\u0000\u1de1"+
		"\u1ddf\u0001\u0000\u0000\u0000\u1de1\u1de2\u0001\u0000\u0000\u0000\u1de2"+
		"\u0443\u0001\u0000\u0000\u0000\u1de3\u1de1\u0001\u0000\u0000\u0000\u1de4"+
		"\u1de5\u0005\u0271\u0000\u0000\u1de5\u1de6\u0005\u00c2\u0000\u0000\u1de6"+
		"\u1df1\u0005\u0252\u0000\u0000\u1de7\u1df2\u0005\u01ca\u0000\u0000\u1de8"+
		"\u1df2\u0005T\u0000\u0000\u1de9\u1dee\u0003\u0258\u012c\u0000\u1dea\u1deb"+
		"\u0005&\u0000\u0000\u1deb\u1ded\u0003\u0258\u012c\u0000\u1dec\u1dea\u0001"+
		"\u0000\u0000\u0000\u1ded\u1df0\u0001\u0000\u0000\u0000\u1dee\u1dec\u0001"+
		"\u0000\u0000\u0000\u1dee\u1def\u0001\u0000\u0000\u0000\u1def\u1df2\u0001"+
		"\u0000\u0000\u0000\u1df0\u1dee\u0001\u0000\u0000\u0000\u1df1\u1de7\u0001"+
		"\u0000\u0000\u0000\u1df1\u1de8\u0001\u0000\u0000\u0000\u1df1\u1de9\u0001"+
		"\u0000\u0000\u0000\u1df2\u1df3\u0001\u0000\u0000\u0000\u1df3\u1df4\u0005"+
		"\u02be\u0000\u0000\u1df4\u1df9\u0003\u0228\u0114\u0000\u1df5\u1df6\u0005"+
		"&\u0000\u0000\u1df6\u1df8\u0003\u0228\u0114\u0000\u1df7\u1df5\u0001\u0000"+
		"\u0000\u0000\u1df8\u1dfb\u0001\u0000\u0000\u0000\u1df9\u1df7\u0001\u0000"+
		"\u0000\u0000\u1df9\u1dfa\u0001\u0000\u0000\u0000\u1dfa\u0445\u0001\u0000"+
		"\u0000\u0000\u1dfb\u1df9\u0001\u0000\u0000\u0000\u1dfc\u1dfd\u0005\u0271"+
		"\u0000\u0000\u1dfd\u1e05\u0005\u0252\u0000\u0000\u1dfe\u1e06\u0005\u00c2"+
		"\u0000\u0000\u1dff\u1e06\u0005\u01ca\u0000\u0000\u1e00\u1e06\u0005T\u0000"+
		"\u0000\u1e01\u1e02\u0005T\u0000\u0000\u1e02\u1e03\u0005\u00f2\u0000\u0000"+
		"\u1e03\u1e06\u0003\u0450\u0228\u0000\u1e04\u1e06\u0003\u0450\u0228\u0000"+
		"\u1e05\u1dfe\u0001\u0000\u0000\u0000\u1e05\u1dff\u0001\u0000\u0000\u0000"+
		"\u1e05\u1e00\u0001\u0000\u0000\u0000\u1e05\u1e01\u0001\u0000\u0000\u0000"+
		"\u1e05\u1e04\u0001\u0000\u0000\u0000\u1e06\u0447\u0001\u0000\u0000\u0000"+
		"\u1e07\u1e08\u0005\u0271\u0000\u0000\u1e08\u1e0b\u0005\u01f6\u0000\u0000"+
		"\u1e09\u1e0a\u0005\u010f\u0000\u0000\u1e0a\u1e0c\u0003\u0228\u0114\u0000"+
		"\u1e0b\u1e09\u0001\u0000\u0000\u0000\u1e0b\u1e0c\u0001\u0000\u0000\u0000"+
		"\u1e0c\u1e0d\u0001\u0000\u0000\u0000\u1e0d\u1e10\u0003\u044a\u0225\u0000"+
		"\u1e0e\u1e0f\u0005\u0233\u0000\u0000\u1e0f\u1e11\u0003\u01dc\u00ee\u0000"+
		"\u1e10\u1e0e\u0001\u0000\u0000\u0000\u1e10\u1e11\u0001\u0000\u0000\u0000"+
		"\u1e11\u1e15\u0001\u0000\u0000\u0000\u1e12\u1e13\u0005\u0248\u0000\u0000"+
		"\u1e13\u1e14\u0005\u00ac\u0000\u0000\u1e14\u1e16\u0005\u01f6\u0000\u0000"+
		"\u1e15\u1e12\u0001\u0000\u0000\u0000\u1e15\u1e16\u0001\u0000\u0000\u0000"+
		"\u1e16\u0449\u0001\u0000\u0000\u0000\u1e17\u1e18\u0005\u0019\u0000\u0000"+
		"\u1e18\u1e22\u0003\u01de\u00ef\u0000\u1e19\u1e1a\u0005\u02be\u0000\u0000"+
		"\u1e1a\u1e22\u0005\u0216\u0000\u0000\u1e1b\u1e1c\u0005\u0019\u0000\u0000"+
		"\u1e1c\u1e1d\u0005\u01f6\u0000\u0000\u1e1d\u1e1e\u0005 \u0000\u0000\u1e1e"+
		"\u1e1f\u0003\u01de\u00ef\u0000\u1e1f\u1e20\u0005!\u0000\u0000\u1e20\u1e22"+
		"\u0001\u0000\u0000\u0000\u1e21\u1e17\u0001\u0000\u0000\u0000\u1e21\u1e19"+
		"\u0001\u0000\u0000\u0000\u1e21\u1e1b\u0001\u0000\u0000\u0000\u1e22\u044b"+
		"\u0001\u0000\u0000\u0000\u1e23\u1e24\u0005\u02f4\u0000\u0000\u1e24\u1e25"+
		"\u0005\u0120\u0000\u0000\u1e25\u1e26\u0005\u01e1\u0000\u0000\u1e26\u044d"+
		"\u0001\u0000\u0000\u0000\u1e27\u1e2c\u0003\u0264\u0132\u0000\u1e28\u1e29"+
		"\u0005&\u0000\u0000\u1e29\u1e2b\u0003\u0264\u0132\u0000\u1e2a\u1e28\u0001"+
		"\u0000\u0000\u0000\u1e2b\u1e2e\u0001\u0000\u0000\u0000\u1e2c\u1e2a\u0001"+
		"\u0000\u0000\u0000\u1e2c\u1e2d\u0001\u0000\u0000\u0000\u1e2d\u044f\u0001"+
		"\u0000\u0000\u0000\u1e2e\u1e2c\u0001\u0000\u0000\u0000\u1e2f\u1e34\u0003"+
		"\u0258\u012c\u0000\u1e30\u1e31\u0005&\u0000\u0000\u1e31\u1e33\u0003\u0258"+
		"\u012c\u0000\u1e32\u1e30\u0001\u0000\u0000\u0000\u1e33\u1e36\u0001\u0000"+
		"\u0000\u0000\u1e34\u1e32\u0001\u0000\u0000\u0000\u1e34\u1e35\u0001\u0000"+
		"\u0000\u0000\u1e35\u0451\u0001\u0000\u0000\u0000\u1e36\u1e34\u0001\u0000"+
		"\u0000\u0000\u1e37\u1e38\u0005[\u0000\u0000\u1e38\u1e3a\u0003\u0228\u0114"+
		"\u0000\u1e39\u1e3b\u0003\u0454\u022a\u0000\u1e3a\u1e39\u0001\u0000\u0000"+
		"\u0000\u1e3a\u1e3b\u0001\u0000\u0000\u0000\u1e3b\u0453\u0001\u0000\u0000"+
		"\u0000\u1e3c\u1e3d\u0005\u02f4\u0000\u0000\u1e3d\u1e45\u0005\u0252\u0000"+
		"\u0000\u1e3e\u1e46\u0005\u00c2\u0000\u0000\u1e3f\u1e46\u0005\u01ca\u0000"+
		"\u0000\u1e40\u1e46\u0005T\u0000\u0000\u1e41\u1e42\u0005T\u0000\u0000\u1e42"+
		"\u1e43\u0005\u00f2\u0000\u0000\u1e43\u1e46\u0003\u0450\u0228\u0000\u1e44"+
		"\u1e46\u0003\u0450\u0228\u0000\u1e45\u1e3e\u0001\u0000\u0000\u0000\u1e45"+
		"\u1e3f\u0001\u0000\u0000\u0000\u1e45\u1e40\u0001\u0000\u0000\u0000\u1e45"+
		"\u1e41\u0001\u0000\u0000\u0000\u1e45\u1e44\u0001\u0000\u0000\u0000\u1e46"+
		"\u0455\u0001\u0000\u0000\u0000\u1e47\u1e4d\u0003\u0458\u022c\u0000\u1e48"+
		"\u1e4d\u0003\u045a\u022d\u0000\u1e49\u1e4a\u0005\u00d1\u0000\u0000\u1e4a"+
		"\u1e4b\u0005\u01da\u0000\u0000\u1e4b\u1e4d\u0005\u01f6\u0000\u0000\u1e4c"+
		"\u1e47\u0001\u0000\u0000\u0000\u1e4c\u1e48\u0001\u0000\u0000\u0000\u1e4c"+
		"\u1e49\u0001\u0000\u0000\u0000\u1e4d\u0457\u0001\u0000\u0000\u0000\u1e4e"+
		"\u1e4f\u0005\u0133\u0000\u0000\u1e4f\u1e53\u0005u\u0000\u0000\u1e50\u1e54"+
		"\u0003\u01dc\u00ee\u0000\u1e51\u1e52\u0005\u0216\u0000\u0000\u1e52\u1e54"+
		"\u0005\u01f6\u0000\u0000\u1e53\u1e50\u0001\u0000\u0000\u0000\u1e53\u1e51"+
		"\u0001\u0000\u0000\u0000\u1e54\u1e57\u0001\u0000\u0000\u0000\u1e55\u1e56"+
		"\u0005\u0233\u0000\u0000\u1e56\u1e58\u0003\u01dc\u00ee\u0000\u1e57\u1e55"+
		"\u0001\u0000\u0000\u0000\u1e57\u1e58\u0001\u0000\u0000\u0000\u1e58\u1e5c"+
		"\u0001\u0000\u0000\u0000\u1e59\u1e5a\u0005\u0248\u0000\u0000\u1e5a\u1e5b"+
		"\u0005\u00ac\u0000\u0000\u1e5b\u1e5d\u0005\u01f6\u0000\u0000\u1e5c\u1e59"+
		"\u0001\u0000\u0000\u0000\u1e5c\u1e5d\u0001\u0000\u0000\u0000\u1e5d\u0459"+
		"\u0001\u0000\u0000\u0000\u1e5e\u1e5f\u0005\u0133\u0000\u0000\u1e5f\u1e60"+
		"\u0005\u02f4\u0000\u0000\u1e60\u1e7e\u0003\u024a\u0125\u0000\u1e61\u1e62"+
		"\u0005\u0133\u0000\u0000\u1e62\u1e63\u0005\u02f4\u0000\u0000\u1e63\u1e64"+
		"\u0003\u024a\u0125\u0000\u1e64\u1e68\u0005u\u0000\u0000\u1e65\u1e69\u0003"+
		"\u01dc\u00ee\u0000\u1e66\u1e67\u0005\u0216\u0000\u0000\u1e67\u1e69\u0005"+
		"\u01f6\u0000\u0000\u1e68\u1e65\u0001\u0000\u0000\u0000\u1e68\u1e66\u0001"+
		"\u0000\u0000\u0000\u1e69\u1e6c\u0001\u0000\u0000\u0000\u1e6a\u1e6b\u0005"+
		"\u0233\u0000\u0000\u1e6b\u1e6d\u0003\u01de\u00ef\u0000\u1e6c\u1e6a\u0001"+
		"\u0000\u0000\u0000\u1e6c\u1e6d\u0001\u0000\u0000\u0000\u1e6d\u1e71\u0001"+
		"\u0000\u0000\u0000\u1e6e\u1e6f\u0005\u0248\u0000\u0000\u1e6f\u1e70\u0005"+
		"\u00ac\u0000\u0000\u1e70\u1e72\u0005\u01f6\u0000\u0000\u1e71\u1e6e\u0001"+
		"\u0000\u0000\u0000\u1e71\u1e72\u0001\u0000\u0000\u0000\u1e72\u1e7e\u0001"+
		"\u0000\u0000\u0000\u1e73\u1e74\u0005\u0133\u0000\u0000\u1e74\u1e75\u0005"+
		"\u02f4\u0000\u0000\u1e75\u1e76\u0003\u024a\u0125\u0000\u1e76\u1e77\u0005"+
		"[\u0000\u0000\u1e77\u1e7b\u0003\u02f6\u017b\u0000\u1e78\u1e79\u0005\u0248"+
		"\u0000\u0000\u1e79\u1e7a\u0005\u00ac\u0000\u0000\u1e7a\u1e7c\u0005\u01f6"+
		"\u0000\u0000\u1e7b\u1e78\u0001\u0000\u0000\u0000\u1e7b\u1e7c\u0001\u0000"+
		"\u0000\u0000\u1e7c\u1e7e\u0001\u0000\u0000\u0000\u1e7d\u1e5e\u0001\u0000"+
		"\u0000\u0000\u1e7d\u1e61\u0001\u0000\u0000\u0000\u1e7d\u1e73\u0001\u0000"+
		"\u0000\u0000\u1e7e\u045b\u0001\u0000\u0000\u0000\u1e7f\u1e80\u0005\u019f"+
		"\u0000\u0000\u1e80\u1e88\u0005\u0322\u0000\u0000\u1e81\u1e82\u0005\u01a2"+
		"\u0000\u0000\u1e82\u1e88\u0005\u0322\u0000\u0000\u1e83\u1e84\u0005\u019e"+
		"\u0000\u0000\u1e84\u1e88\u0005\u0322\u0000\u0000\u1e85\u1e86\u0005\u01a3"+
		"\u0000\u0000\u1e86\u1e88\u0005\u0322\u0000\u0000\u1e87\u1e7f\u0001\u0000"+
		"\u0000\u0000\u1e87\u1e81\u0001\u0000\u0000\u0000\u1e87\u1e83\u0001\u0000"+
		"\u0000\u0000\u1e87\u1e85\u0001\u0000\u0000\u0000\u1e88\u045d\u0001\u0000"+
		"\u0000\u0000\u1e89\u1e8a\u0005\u0086\u0000\u0000\u1e8a\u1e90\u0003\u01dc"+
		"\u00ee\u0000\u1e8b\u1e8c\u0005\u0156\u0000\u0000\u1e8c\u1e90\u0003\u01dc"+
		"\u00ee\u0000\u1e8d\u1e8e\u0005\u02a1\u0000\u0000\u1e8e\u1e90\u0003\u01dc"+
		"\u00ee\u0000\u1e8f\u1e89\u0001\u0000\u0000\u0000\u1e8f\u1e8b\u0001\u0000"+
		"\u0000\u0000\u1e8f\u1e8d\u0001\u0000\u0000\u0000\u1e90\u045f\u0001\u0000"+
		"\u0000\u0000\u1e91\u1e96\u0003\u0458\u022c\u0000\u1e92\u1e93\u0005\u00d1"+
		"\u0000\u0000\u1e93\u1e94\u0005\u01da\u0000\u0000\u1e94\u1e96\u0005\u01f6"+
		"\u0000\u0000\u1e95\u1e91\u0001\u0000\u0000\u0000\u1e95\u1e92\u0001\u0000"+
		"\u0000\u0000\u1e96\u0461\u0001\u0000\u0000\u0000\u1e97\u1e9a\u0003\u0464"+
		"\u0232\u0000\u1e98\u1e9a\u0003\u0466\u0233\u0000\u1e99\u1e97\u0001\u0000"+
		"\u0000\u0000\u1e99\u1e98\u0001\u0000\u0000\u0000\u1e9a\u0463\u0001\u0000"+
		"\u0000\u0000\u1e9b\u1e9c\u0005~\u0000\u0000\u1e9c\u1e9d\u0005\u0180\u0000"+
		"\u0000\u1e9d\u1e9e\u0005\u02be\u0000\u0000\u1e9e\u1ea0\u0003\u047c\u023e"+
		"\u0000\u1e9f\u1ea1\u0003\u032e\u0197\u0000\u1ea0\u1e9f\u0001\u0000\u0000"+
		"\u0000\u1ea0\u1ea1\u0001\u0000\u0000\u0000\u1ea1\u0465\u0001\u0000\u0000"+
		"\u0000\u1ea2\u1ea3\u0005~\u0000\u0000\u1ea3\u1ea4\u0005\u023d\u0000\u0000"+
		"\u1ea4\u1ea5\u0005\u0105\u0000\u0000\u1ea5\u1ea7\u0003\u0484\u0242\u0000"+
		"\u1ea6\u1ea8\u0003\u032e\u0197\u0000\u1ea7\u1ea6\u0001\u0000\u0000\u0000"+
		"\u1ea7\u1ea8\u0001\u0000\u0000\u0000\u1ea8\u0467\u0001\u0000\u0000\u0000"+
		"\u1ea9\u1eaa\u0005\u0293\u0000\u0000\u1eaa\u1eac\u0005\u0279\u0000\u0000"+
		"\u1eab\u1ead\u0003\u0474\u023a\u0000\u1eac\u1eab\u0001\u0000\u0000\u0000"+
		"\u1eac\u1ead\u0001\u0000\u0000\u0000\u1ead\u1eaf\u0001\u0000\u0000\u0000"+
		"\u1eae\u1eb0\u0003\u0478\u023c\u0000\u1eaf\u1eae\u0001\u0000\u0000\u0000"+
		"\u1eaf\u1eb0\u0001\u0000\u0000\u0000\u1eb0\u1eb1\u0001\u0000\u0000\u0000"+
		"\u1eb1\u1eb3\u0003\u047a\u023d\u0000\u1eb2\u1eb4\u0003\u032e\u0197\u0000"+
		"\u1eb3\u1eb2\u0001\u0000\u0000\u0000\u1eb3\u1eb4\u0001\u0000\u0000\u0000"+
		"\u1eb4\u0469\u0001\u0000\u0000\u0000\u1eb5\u1eb6\u0005\u029a\u0000\u0000"+
		"\u1eb6\u1eb7\u0005\u0279\u0000\u0000\u1eb7\u1ebb\u0003\u0474\u023a\u0000"+
		"\u1eb8\u1eba\u0003\u032e\u0197\u0000\u1eb9\u1eb8\u0001\u0000\u0000\u0000"+
		"\u1eba\u1ebd\u0001\u0000\u0000\u0000\u1ebb\u1eb9\u0001\u0000\u0000\u0000"+
		"\u1ebb\u1ebc\u0001\u0000\u0000\u0000\u1ebc\u046b\u0001\u0000\u0000\u0000"+
		"\u1ebd\u1ebb\u0001\u0000\u0000\u0000\u1ebe\u1ec1\u0003\u046e\u0237\u0000"+
		"\u1ebf\u1ec1\u0003\u0470\u0238\u0000\u1ec0\u1ebe\u0001\u0000\u0000\u0000"+
		"\u1ec0\u1ebf\u0001\u0000\u0000\u0000\u1ec1\u046d\u0001\u0000\u0000\u0000"+
		"\u1ec2\u1ec3\u0005\u0293\u0000\u0000\u1ec3\u1ec4\u0005\u0125\u0000\u0000"+
		"\u1ec4\u046f\u0001\u0000\u0000\u0000\u1ec5\u1ec6\u0005\u029a\u0000\u0000"+
		"\u1ec6\u1ec7\u0005\u0125\u0000\u0000\u1ec7\u0471\u0001\u0000\u0000\u0000"+
		"\u1ec8\u1ec9\u0005\u0212\u0000\u0000\u1ec9\u1eca\u0007e\u0000\u0000\u1eca"+
		"\u1ecf\u0005\u017a\u0000\u0000\u1ecb\u1ecc\u0005\u02be\u0000\u0000\u1ecc"+
		"\u1ed0\u0003\u0256\u012b\u0000\u1ecd\u1ece\u0005g\u0000\u0000\u1ece\u1ed0"+
		"\u0003\u02de\u016f\u0000\u1ecf\u1ecb\u0001\u0000\u0000\u0000\u1ecf\u1ecd"+
		"\u0001\u0000\u0000\u0000\u1ed0\u0473\u0001\u0000\u0000\u0000\u1ed1\u1ed3"+
		"\u0003\u0476\u023b\u0000\u1ed2\u1ed1\u0001\u0000\u0000\u0000\u1ed3\u1ed4"+
		"\u0001\u0000\u0000\u0000\u1ed4\u1ed2\u0001\u0000\u0000\u0000\u1ed4\u1ed5"+
		"\u0001\u0000\u0000\u0000\u1ed5\u0475\u0001\u0000\u0000\u0000\u1ed6\u1ed7"+
		"\u0007x\u0000\u0000\u1ed7\u0477\u0001\u0000\u0000\u0000\u1ed8\u1eed\u0005"+
		"\u02d4\u0000\u0000\u1ed9\u1eda\u0007y\u0000\u0000\u1eda\u1edb\u0005\u0019"+
		"\u0000\u0000\u1edb\u1eee\u0003\u01ee\u00f7\u0000\u1edc\u1edd\u0005\u0188"+
		"\u0000\u0000\u1edd\u1ede\u0005\u0019\u0000\u0000\u1ede\u1edf\u0003\u01dc"+
		"\u00ee\u0000\u1edf\u1ee0\u0005&\u0000\u0000\u1ee0\u1ee1\u0005\u0189\u0000"+
		"\u0000\u1ee1\u1ee2\u0005\u0019\u0000\u0000\u1ee2\u1ee3\u0005\u0322\u0000"+
		"\u0000\u1ee3\u1eee\u0001\u0000\u0000\u0000\u1ee4\u1ee5\u0005\u0228\u0000"+
		"\u0000\u1ee5\u1ee6\u0005\u0019\u0000\u0000\u1ee6\u1ee7\u0003\u01dc\u00ee"+
		"\u0000\u1ee7\u1ee8\u0005&\u0000\u0000\u1ee8\u1ee9\u0005\u0229\u0000\u0000"+
		"\u1ee9\u1eea\u0005\u0019\u0000\u0000\u1eea\u1eeb\u0005\u0322\u0000\u0000"+
		"\u1eeb\u1eee\u0001\u0000\u0000\u0000\u1eec\u1eee\u0005\u0288\u0000\u0000"+
		"\u1eed\u1ed9\u0001\u0000\u0000\u0000\u1eed\u1edc\u0001\u0000\u0000\u0000"+
		"\u1eed\u1ee4\u0001\u0000\u0000\u0000\u1eed\u1eec\u0001\u0000\u0000\u0000"+
		"\u1eee\u0479\u0001\u0000\u0000\u0000\u1eef\u1ef0\u0005\u02d9\u0000\u0000"+
		"\u1ef0\u1ef1\u0005\u0019\u0000\u0000\u1ef1\u1ef3\u0003\u01dc\u00ee\u0000"+
		"\u1ef2\u1eef\u0001\u0000\u0000\u0000\u1ef2\u1ef3\u0001\u0000\u0000\u0000"+
		"\u1ef3\u1ef7\u0001\u0000\u0000\u0000\u1ef4\u1ef5\u0005\u01f6\u0000\u0000"+
		"\u1ef5\u1ef6\u0005\u0019\u0000\u0000\u1ef6\u1ef8\u0003\u01dc\u00ee\u0000"+
		"\u1ef7\u1ef4\u0001\u0000\u0000\u0000\u1ef7\u1ef8\u0001\u0000\u0000\u0000"+
		"\u1ef8\u1efc\u0001\u0000\u0000\u0000\u1ef9\u1efa\u0005\u00c3\u0000\u0000"+
		"\u1efa\u1efb\u0005\u0019\u0000\u0000\u1efb\u1efd\u0003\u01dc\u00ee\u0000"+
		"\u1efc\u1ef9\u0001\u0000\u0000\u0000\u1efc\u1efd\u0001\u0000\u0000\u0000"+
		"\u1efd\u1f01\u0001\u0000\u0000\u0000\u1efe\u1eff\u0005\u01ff\u0000\u0000"+
		"\u1eff\u1f00\u0005\u0019\u0000\u0000\u1f00\u1f02\u0003\u01dc\u00ee\u0000"+
		"\u1f01\u1efe\u0001\u0000\u0000\u0000\u1f01\u1f02\u0001\u0000\u0000\u0000"+
		"\u1f02\u047b\u0001\u0000\u0000\u0000\u1f03\u1f08\u0003\u047e\u023f\u0000"+
		"\u1f04\u1f05\u0005&\u0000\u0000\u1f05\u1f07\u0003\u047e\u023f\u0000\u1f06"+
		"\u1f04\u0001\u0000\u0000\u0000\u1f07\u1f0a\u0001\u0000\u0000\u0000\u1f08"+
		"\u1f06\u0001\u0000\u0000\u0000\u1f08\u1f09\u0001\u0000\u0000\u0000\u1f09"+
		"\u047d\u0001\u0000\u0000\u0000\u1f0a\u1f08\u0001\u0000\u0000\u0000\u1f0b"+
		"\u1f0c\u0005\u0182\u0000\u0000\u1f0c\u1f0d\u0005\u0019\u0000\u0000\u1f0d"+
		"\u1f6f\u0003\u01dc\u00ee\u0000\u1f0e\u1f0f\u0005\u0187\u0000\u0000\u1f0f"+
		"\u1f10\u0005\u0019\u0000\u0000\u1f10\u1f6f\u0003\u01dc\u00ee\u0000\u1f11"+
		"\u1f12\u0005\u019a\u0000\u0000\u1f12\u1f13\u0005\u0019\u0000\u0000\u1f13"+
		"\u1f6f\u0003\u01dc\u00ee\u0000\u1f14\u1f15\u0005\u018a\u0000\u0000\u1f15"+
		"\u1f16\u0005\u0019\u0000\u0000\u1f16\u1f6f\u0003\u01dc\u00ee\u0000\u1f17"+
		"\u1f18\u0005\u018b\u0000\u0000\u1f18\u1f19\u0005\u0019\u0000\u0000\u1f19"+
		"\u1f6f\u0005\u0322\u0000\u0000\u1f1a\u1f1b\u0005\u020b\u0000\u0000\u1f1b"+
		"\u1f1c\u0005\u0019\u0000\u0000\u1f1c\u1f6f\u0007z\u0000\u0000\u1f1d\u1f1e"+
		"\u0005\u023f\u0000\u0000\u1f1e\u1f1f\u0005\u0019\u0000\u0000\u1f1f\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f20\u1f21\u0005\u0184\u0000\u0000\u1f21\u1f22"+
		"\u0005\u0019\u0000\u0000\u1f22\u1f6f\u0005\u0322\u0000\u0000\u1f23\u1f24"+
		"\u0005\u018d\u0000\u0000\u1f24\u1f25\u0005\u0019\u0000\u0000\u1f25\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f26\u1f27\u0005\u0185\u0000\u0000\u1f27\u1f28"+
		"\u0005\u0019\u0000\u0000\u1f28\u1f6f\u0005\u0322\u0000\u0000\u1f29\u1f2a"+
		"\u0005\u0186\u0000\u0000\u1f2a\u1f2b\u0005\u0019\u0000\u0000\u1f2b\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f2c\u1f2d\u0005\u0188\u0000\u0000\u1f2d\u1f2e"+
		"\u0005\u0019\u0000\u0000\u1f2e\u1f6f\u0003\u01dc\u00ee\u0000\u1f2f\u1f30"+
		"\u0005\u0189\u0000\u0000\u1f30\u1f31\u0005\u0019\u0000\u0000\u1f31\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f32\u1f33\u0005\u0181\u0000\u0000\u1f33\u1f34"+
		"\u0005\u0019\u0000\u0000\u1f34\u1f6f\u0005\u0322\u0000\u0000\u1f35\u1f36"+
		"\u0005\u0228\u0000\u0000\u1f36\u1f37\u0005\u0019\u0000\u0000\u1f37\u1f6f"+
		"\u0003\u01dc\u00ee\u0000\u1f38\u1f39\u0005\u0229\u0000\u0000\u1f39\u1f3a"+
		"\u0005\u0019\u0000\u0000\u1f3a\u1f6f\u0005\u0322\u0000\u0000\u1f3b\u1f3c"+
		"\u0005\u0183\u0000\u0000\u1f3c\u1f3d\u0005\u0019\u0000\u0000\u1f3d\u1f6f"+
		"\u0003\u01dc\u00ee\u0000\u1f3e\u1f3f\u0005\u019b\u0000\u0000\u1f3f\u1f40"+
		"\u0005\u0019\u0000\u0000\u1f40\u1f6f\u0005\u0322\u0000\u0000\u1f41\u1f42"+
		"\u0005\u018f\u0000\u0000\u1f42\u1f43\u0005\u0019\u0000\u0000\u1f43\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f44\u1f45\u0005\u0190\u0000\u0000\u1f45\u1f46"+
		"\u0005\u0019\u0000\u0000\u1f46\u1f6f\u0003\u01dc\u00ee\u0000\u1f47\u1f48"+
		"\u0005\u0191\u0000\u0000\u1f48\u1f49\u0005\u0019\u0000\u0000\u1f49\u1f6f"+
		"\u0003\u01dc\u00ee\u0000\u1f4a\u1f4b\u0005\u0192\u0000\u0000\u1f4b\u1f4c"+
		"\u0005\u0019\u0000\u0000\u1f4c\u1f6f\u0003\u01dc\u00ee\u0000\u1f4d\u1f4e"+
		"\u0005\u0194\u0000\u0000\u1f4e\u1f4f\u0005\u0019\u0000\u0000\u1f4f\u1f6f"+
		"\u0003\u01dc\u00ee\u0000\u1f50\u1f51\u0005\u0195\u0000\u0000\u1f51\u1f52"+
		"\u0005\u0019\u0000\u0000\u1f52\u1f6f\u0003\u01dc\u00ee\u0000\u1f53\u1f54"+
		"\u0005\u0196\u0000\u0000\u1f54\u1f55\u0005\u0019\u0000\u0000\u1f55\u1f6f"+
		"\u0003\u01dc\u00ee\u0000\u1f56\u1f57\u0005\u0193\u0000\u0000\u1f57\u1f58"+
		"\u0005\u0019\u0000\u0000\u1f58\u1f6f\u0003\u01dc\u00ee\u0000\u1f59\u1f5a"+
		"\u0005\u0197\u0000\u0000\u1f5a\u1f5b\u0005\u0019\u0000\u0000\u1f5b\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f5c\u1f5d\u0005\u0199\u0000\u0000\u1f5d\u1f5e"+
		"\u0005\u0019\u0000\u0000\u1f5e\u1f6f\u0003\u01dc\u00ee\u0000\u1f5f\u1f60"+
		"\u0005\u0198\u0000\u0000\u1f60\u1f61\u0005\u0019\u0000\u0000\u1f61\u1f6f"+
		"\u0003\u01dc\u00ee\u0000\u1f62\u1f63\u0005\u018c\u0000\u0000\u1f63\u1f64"+
		"\u0005\u0019\u0000\u0000\u1f64\u1f6f\u0003\u01dc\u00ee\u0000\u1f65\u1f66"+
		"\u0005\u011e\u0000\u0000\u1f66\u1f67\u0005\u0019\u0000\u0000\u1f67\u1f6f"+
		"\u0005\u0322\u0000\u0000\u1f68\u1f69\u0005\u0136\u0000\u0000\u1f69\u1f6a"+
		"\u0005\u0019\u0000\u0000\u1f6a\u1f6b\u0005 \u0000\u0000\u1f6b\u1f6c\u0003"+
		"\u0480\u0240\u0000\u1f6c\u1f6d\u0005!\u0000\u0000\u1f6d\u1f6f\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f0b\u0001\u0000\u0000\u0000\u1f6e\u1f0e\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f11\u0001\u0000\u0000\u0000\u1f6e\u1f14\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f17\u0001\u0000\u0000\u0000\u1f6e\u1f1a\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f1d\u0001\u0000\u0000\u0000\u1f6e\u1f20\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f23\u0001\u0000\u0000\u0000\u1f6e\u1f26\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f29\u0001\u0000\u0000\u0000\u1f6e\u1f2c\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f2f\u0001\u0000\u0000\u0000\u1f6e\u1f32\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f35\u0001\u0000\u0000\u0000\u1f6e\u1f38\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f3b\u0001\u0000\u0000\u0000\u1f6e\u1f3e\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f41\u0001\u0000\u0000\u0000\u1f6e\u1f44\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f47\u0001\u0000\u0000\u0000\u1f6e\u1f4a\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f4d\u0001\u0000\u0000\u0000\u1f6e\u1f50\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f53\u0001\u0000\u0000\u0000\u1f6e\u1f56\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f59\u0001\u0000\u0000\u0000\u1f6e\u1f5c\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f5f\u0001\u0000\u0000\u0000\u1f6e\u1f62\u0001\u0000"+
		"\u0000\u0000\u1f6e\u1f65\u0001\u0000\u0000\u0000\u1f6e\u1f68\u0001\u0000"+
		"\u0000\u0000\u1f6f\u047f\u0001\u0000\u0000\u0000\u1f70\u1f71\u0003\u0482"+
		"\u0241\u0000\u1f71\u1f72\u0005&\u0000\u0000\u1f72\u1f73\u0003\u0482\u0241"+
		"\u0000\u1f73\u0481\u0001\u0000\u0000\u0000\u1f74\u1f75\u0005\u0322\u0000"+
		"\u0000\u1f75\u0483\u0001\u0000\u0000\u0000\u1f76\u1f7b\u0003\u0486\u0243"+
		"\u0000\u1f77\u1f78\u0005&\u0000\u0000\u1f78\u1f7a\u0003\u0486\u0243\u0000"+
		"\u1f79\u1f77\u0001\u0000\u0000\u0000\u1f7a\u1f7d\u0001\u0000\u0000\u0000"+
		"\u1f7b\u1f79\u0001\u0000\u0000\u0000\u1f7b\u1f7c\u0001\u0000\u0000\u0000"+
		"\u1f7c\u0485\u0001\u0000\u0000\u0000\u1f7d\u1f7b\u0001\u0000\u0000\u0000"+
		"\u1f7e\u1f7f\u0005\u0236\u0000\u0000\u1f7f\u1f80\u0005\u0019\u0000\u0000"+
		"\u1f80\u1f82\u0005 \u0000\u0000\u1f81\u1f83\u0003\u0214\u010a\u0000\u1f82"+
		"\u1f81\u0001\u0000\u0000\u0000\u1f82\u1f83\u0001\u0000\u0000\u0000\u1f83"+
		"\u1f84\u0001\u0000\u0000\u0000\u1f84\u1fb0\u0005!\u0000\u0000\u1f85\u1f86"+
		"\u0005\u0238\u0000\u0000\u1f86\u1f87\u0005\u0019\u0000\u0000\u1f87\u1f89"+
		"\u0005 \u0000\u0000\u1f88\u1f8a\u0003\u0214\u010a\u0000\u1f89\u1f88\u0001"+
		"\u0000\u0000\u0000\u1f89\u1f8a\u0001\u0000\u0000\u0000\u1f8a\u1f8b\u0001"+
		"\u0000\u0000\u0000\u1f8b\u1fb0\u0005!\u0000\u0000\u1f8c\u1f8d\u0005\u0237"+
		"\u0000\u0000\u1f8d\u1f8e\u0005\u0019\u0000\u0000\u1f8e\u1f90\u0005 \u0000"+
		"\u0000\u1f8f\u1f91\u0003\u023c\u011e\u0000\u1f90\u1f8f\u0001\u0000\u0000"+
		"\u0000\u1f90\u1f91\u0001\u0000\u0000\u0000\u1f91\u1f92\u0001\u0000\u0000"+
		"\u0000\u1f92\u1fb0\u0005!\u0000\u0000\u1f93\u1f94\u0005\u0239\u0000\u0000"+
		"\u1f94\u1f95\u0005\u0019\u0000\u0000\u1f95\u1f97\u0005 \u0000\u0000\u1f96"+
		"\u1f98\u0003\u023c\u011e\u0000\u1f97\u1f96\u0001\u0000\u0000\u0000\u1f97"+
		"\u1f98\u0001\u0000\u0000\u0000\u1f98\u1f99\u0001\u0000\u0000\u0000\u1f99"+
		"\u1fb0\u0005!\u0000\u0000\u1f9a\u1f9b\u0005\u023b\u0000\u0000\u1f9b\u1f9c"+
		"\u0005\u0019\u0000\u0000\u1f9c\u1f9e\u0005 \u0000\u0000\u1f9d\u1f9f\u0003"+
		"\u0488\u0244\u0000\u1f9e\u1f9d\u0001\u0000\u0000\u0000\u1f9e\u1f9f\u0001"+
		"\u0000\u0000\u0000\u1f9f\u1fa0\u0001\u0000\u0000\u0000\u1fa0\u1fb0\u0005"+
		"!\u0000\u0000\u1fa1\u1fa2\u0005\u023c\u0000\u0000\u1fa2\u1fa3\u0005\u0019"+
		"\u0000\u0000\u1fa3\u1fa5\u0005 \u0000\u0000\u1fa4\u1fa6\u0003\u0488\u0244"+
		"\u0000\u1fa5\u1fa4\u0001\u0000\u0000\u0000\u1fa5\u1fa6\u0001\u0000\u0000"+
		"\u0000\u1fa6\u1fa7\u0001\u0000\u0000\u0000\u1fa7\u1fb0\u0005!\u0000\u0000"+
		"\u1fa8\u1fa9\u0005\u023a\u0000\u0000\u1fa9\u1faa\u0005\u0019\u0000\u0000"+
		"\u1faa\u1fac\u0005 \u0000\u0000\u1fab\u1fad\u0003\u0218\u010c\u0000\u1fac"+
		"\u1fab\u0001\u0000\u0000\u0000\u1fac\u1fad\u0001\u0000\u0000\u0000\u1fad"+
		"\u1fae\u0001\u0000\u0000\u0000\u1fae\u1fb0\u0005!\u0000\u0000\u1faf\u1f7e"+
		"\u0001\u0000\u0000\u0000\u1faf\u1f85\u0001\u0000\u0000\u0000\u1faf\u1f8c"+
		"\u0001\u0000\u0000\u0000\u1faf\u1f93\u0001\u0000\u0000\u0000\u1faf\u1f9a"+
		"\u0001\u0000\u0000\u0000\u1faf\u1fa1\u0001\u0000\u0000\u0000\u1faf\u1fa8"+
		"\u0001\u0000\u0000\u0000\u1fb0\u0487\u0001\u0000\u0000\u0000\u1fb1\u1fb6"+
		"\u0003\u048a\u0245\u0000\u1fb2\u1fb3\u0005&\u0000\u0000\u1fb3\u1fb5\u0003"+
		"\u048a\u0245\u0000\u1fb4\u1fb2\u0001\u0000\u0000\u0000\u1fb5\u1fb8\u0001"+
		"\u0000\u0000\u0000\u1fb6\u1fb4\u0001\u0000\u0000\u0000\u1fb6\u1fb7\u0001"+
		"\u0000\u0000\u0000\u1fb7\u0489\u0001\u0000\u0000\u0000\u1fb8\u1fb6\u0001"+
		"\u0000\u0000\u0000\u1fb9\u1fba\u0003\u01dc\u00ee\u0000\u1fba\u048b\u0001"+
		"\u0000\u0000\u0000\u0420\u04f0\u04f4\u04f7\u04fa\u0505\u0509\u050d\u0511"+
		"\u0514\u0517\u051a\u051d\u0524\u0527\u052a\u052d\u0531\u0535\u0539\u054a"+
		"\u054c\u0551\u055a\u0560\u0564\u056b\u056e\u0571\u0575\u057b\u0582\u0587"+
		"\u058d\u0590\u0595\u059b\u059e\u05a2\u05a8\u05ac\u05b2\u05b6\u05ba\u05c0"+
		"\u05c6\u05cb\u05cf\u05d4\u05d8\u05dc\u05ea\u05f2\u05fc\u0602\u061b\u0629"+
		"\u062f\u0633\u0638\u063c\u0641\u0644\u064a\u064f\u0652\u0658\u065d\u0660"+
		"\u0666\u066a\u0670\u0672\u0675\u0678\u067e\u0682\u0687\u068d\u0691\u0693"+
		"\u069a\u06a0\u06ab\u06b0\u06b5\u06bd\u06c3\u06c7\u06cc\u06d5\u06db\u06e1"+
		"\u06e7\u06f0\u06f6\u06ff\u070b\u070f\u0716\u071b\u0723\u0727\u072b\u072f"+
		"\u0736\u073a\u073c\u0741\u0747\u074d\u0753\u0758\u075e\u0762\u0764\u076a"+
		"\u0770\u0776\u077b\u0781\u0787\u078a\u078f\u07a7\u07ad\u07af\u07b5\u07b9"+
		"\u07c2\u07c5\u07cc\u07d0\u07d7\u07de\u07e3\u07e6\u07eb\u07f2\u07f6\u07fa"+
		"\u07ff\u0805\u080d\u0815\u081e\u0829\u082f\u0835\u083b\u0841\u0848\u0853"+
		"\u0859\u086b\u087a\u0882\u0889\u088e\u0891\u0896\u089e\u08a4\u08a8\u08ae"+
		"\u08b1\u08b6\u08be\u08c4\u08c8\u08cd\u08d1\u08d5\u08d9\u08e3\u08e8\u08ec"+
		"\u08ef\u08f3\u0900\u0903\u0907\u090a\u090e\u0911\u0915\u0918\u091c\u091f"+
		"\u0922\u0926\u0929\u092d\u0930\u0934\u0938\u0942\u0945\u094a\u094e\u0951"+
		"\u0955\u095b\u095f\u0966\u096a\u096d\u0971\u0977\u097a\u0985\u0988\u098c"+
		"\u098f\u0993\u0996\u099a\u099d\u09a0\u09a4\u09a7\u09ab\u09ae\u09b9\u09bc"+
		"\u09bf\u09c3\u09c6\u09ce\u09d1\u09d5\u09e1\u09e8\u09ed\u09fd\u0a07\u0a0d"+
		"\u0a11\u0a14\u0a1b\u0a20\u0a23\u0a26\u0a32\u0a3c\u0a41\u0a4d\u0a52\u0a5a"+
		"\u0a6a\u0a6d\u0a75\u0a7d\u0a7f\u0a89\u0a96\u0a9d\u0aa0\u0aa7\u0aa9\u0ab1"+
		"\u0ab8\u0abc\u0ac2\u0ac7\u0acc\u0ad2\u0ad7\u0adc\u0ae1\u0ae6\u0aea\u0aef"+
		"\u0af4\u0af9\u0afe\u0b03\u0b08\u0b0d\u0b12\u0b17\u0b1c\u0b21\u0b26\u0b2b"+
		"\u0b35\u0b3b\u0b41\u0b46\u0b4d\u0b52\u0b57\u0b5d\u0b69\u0b71\u0b77\u0b7a"+
		"\u0b81\u0b91\u0b96\u0b9e\u0bae\u0bb0\u0bb5\u0bbe\u0bc3\u0bc8\u0bcd\u0bd4"+
		"\u0bd8\u0bdc\u0be1\u0be7\u0bed\u0bf2\u0bf7\u0bfc\u0bff\u0c06\u0c0f\u0c11"+
		"\u0c19\u0c24\u0c27\u0c2f\u0c32\u0c34\u0c3a\u0c3e\u0c4e\u0c55\u0c62\u0c67"+
		"\u0c6a\u0c71\u0c8c\u0c8f\u0c94\u0c9a\u0c9f\u0ca2\u0caa\u0cb2\u0cbd\u0cc1"+
		"\u0cc9\u0ccd\u0cd3\u0cd5\u0ce0\u0ce8\u0cec\u0cf3\u0cf5\u0d03\u0d09\u0d0e"+
		"\u0d13\u0d19\u0d20\u0d28\u0d30\u0d35\u0d3b\u0d48\u0d4b\u0d54\u0d5f\u0d70"+
		"\u0d77\u0d7f\u0d89\u0d8c\u0d98\u0da3\u0dab\u0daf\u0db7\u0dba\u0dc4\u0dc7"+
		"\u0dd2\u0dd8\u0ddf\u0de9\u0ded\u0df2\u0df5\u0df8\u0dfb\u0dff\u0e02\u0e0a"+
		"\u0e0e\u0e11\u0e18\u0e1d\u0e24\u0e29\u0e2d\u0e30\u0e3d\u0e43\u0e4b\u0e52"+
		"\u0e55\u0e59\u0e5e\u0e64\u0e67\u0e6f\u0e73\u0e76\u0e79\u0e7d\u0e80\u0e85"+
		"\u0e8c\u0e8f\u0e92\u0e95\u0e98\u0e9f\u0ea7\u0eb0\u0eb7\u0ebc\u0ec5\u0ec8"+
		"\u0ecb\u0ece\u0ed1\u0ed4\u0ed7\u0edc\u0edf\u0ee2\u0eed\u0ef1\u0ef5\u0efe"+
		"\u0f04\u0f07\u0f0b\u0f0e\u0f11\u0f18\u0f1e\u0f23\u0f27\u0f2d\u0f2f\u0f36"+
		"\u0f3c\u0f41\u0f44\u0f47\u0f4a\u0f4d\u0f50\u0f5a\u0f5d\u0f60\u0f68\u0f6f"+
		"\u0f75\u0f78\u0f84\u0f87\u0f8a\u0f91\u0f94\u0fa0\u0fa4\u0fa9\u0fac\u0fb1"+
		"\u0fb7\u0fbc\u0fc2\u0fc4\u0fca\u0fcc\u0fd2\u0fd5\u0fd8\u0fdd\u0fe0\u0fe5"+
		"\u0fed\u0ff6\u0ffc\u0fff\u1002\u1011\u1016\u101d\u1025\u1032\u1038\u103e"+
		"\u1043\u1046\u1049\u1050\u1058\u105f\u1066\u106f\u1074\u1079\u107c\u107f"+
		"\u1082\u1086\u108d\u1093\u109c\u10a6\u10b1\u10b3\u10bb\u10c3\u10cc\u10cf"+
		"\u10d3\u10d7\u10dd\u10e3\u10e6\u10ef\u10fb\u1100\u1109\u1110\u1114\u1118"+
		"\u1120\u112f\u1135\u113d\u1145\u1151\u1157\u1159\u115f\u1161\u1163\u1168"+
		"\u116b\u1171\u1176\u117d\u1184\u118b\u1199\u119e\u11a2\u11a5\u11ad\u11b1"+
		"\u11b4\u11b8\u11c0\u11cb\u11d9\u11dd\u11e2\u11e7\u11ec\u11f3\u1201\u120a"+
		"\u120f\u1214\u1216\u1223\u122f\u1235\u123c\u1248\u1256\u1258\u125a\u125f"+
		"\u1265\u1267\u126c\u1277\u127e\u1285\u1294\u129c\u12a4\u12c0\u12c7\u12cb"+
		"\u12d2\u12da\u12e3\u12e8\u12f4\u1301\u1303\u1312\u1325\u1327\u1330\u1337"+
		"\u1340\u1347\u1355\u135b\u135f\u1365\u1394\u1396\u13a4\u13a8\u13b0\u13b6"+
		"\u13c5\u13c8\u13cd\u13d4\u13d6\u13df\u13e7\u13eb\u13f2\u13f9\u13fe\u1405"+
		"\u1409\u140c\u1410\u1419\u1420\u1423\u1427\u1449\u1452\u1456\u145f\u1462"+
		"\u1465\u1468\u146f\u147d\u1492\u1497\u149c\u14a3\u14a7\u14aa\u14ae\u14be"+
		"\u14c2\u14cb\u14d7\u14da\u14de\u14e3\u14e9\u14f5\u150e\u1512\u1516\u1519"+
		"\u151d\u1521\u1525\u152a\u152e\u1533\u153b\u153d\u1542\u1552\u155d\u1561"+
		"\u1571\u1576\u157e\u1581\u158b\u1590\u159c\u159f\u15a9\u15af\u15b3\u15b6"+
		"\u15ba\u15c0\u15c3\u15c9\u15d2\u15d6\u15f9\u1601\u1607\u161c\u1620\u1625"+
		"\u1628\u1647\u164c\u164f\u1653\u1656\u165b\u165d\u1660\u1663\u1668\u166b"+
		"\u166f\u1674\u1677\u167c\u167f\u1682\u1686\u168a\u168f\u1693\u169f\u16a3"+
		"\u16a7\u16ab\u16ae\u16b3\u16b7\u16bb\u16bf\u16c4\u16cd\u16d0\u16d4\u16d8"+
		"\u16db\u16df\u16e3\u16e8\u16ed\u16f0\u16f8\u1700\u1704\u1709\u171b\u1721"+
		"\u1723\u1727\u172b\u172f\u1733\u1738\u173b\u173f\u1744\u1748\u174d\u1751"+
		"\u1758\u175b\u176f\u1777\u177a\u179f\u17a2\u17a8\u17ae\u17b1\u17c1\u17cf"+
		"\u17d9\u17e5\u17e8\u17fc\u17ff\u1801\u180b\u1816\u181a\u181d\u1823\u1828"+
		"\u182c\u182f\u1834\u1837\u183d\u1867\u1870\u1879\u187d\u1882\u1885\u1890"+
		"\u1897\u189f\u18a2\u18a4\u18a8\u18ad\u18b0\u18ba\u18bd\u18ce\u18d2\u18dd"+
		"\u18e0\u18e5\u18e8\u18f2\u18f6\u18f9\u18fe\u190d\u1915\u1919\u191d\u1923"+
		"\u1926\u192a\u192d\u1931\u1934\u1939\u193c\u1940\u1944\u194b\u194f\u1958"+
		"\u195c\u1965\u1971\u1974\u1978\u197b\u197d\u1981\u198c\u1990\u1999\u19a9"+
		"\u19b2\u19b7\u19c0\u19c6\u19cc\u19d5\u19db\u19df\u19e6\u19eb\u19ee\u19f1"+
		"\u19f9\u1a00\u1a03\u1a07\u1a0a\u1a0f\u1a11\u1a17\u1a22\u1a29\u1a2c\u1a30"+
		"\u1a33\u1a36\u1a3d\u1a49\u1a4c\u1a58\u1a61\u1a66\u1a70\u1a75\u1a7c\u1a80"+
		"\u1a84\u1a8b\u1a8f\u1aa2\u1aa8\u1ab1\u1abe\u1acb\u1ad1\u1ad5\u1ae2\u1aeb"+
		"\u1af4\u1af9\u1afd\u1b05\u1b09\u1b0e\u1b12\u1b15\u1b1a\u1b1f\u1b22\u1b31"+
		"\u1b63\u1b67\u1b6e\u1b71\u1b74\u1b77\u1b7f\u1b88\u1b8b\u1b8d\u1b93\u1b97"+
		"\u1b9a\u1b9d\u1ba1\u1ba5\u1ba9\u1bac\u1baf\u1bb1\u1bb8\u1bc4\u1bc7\u1bd4"+
		"\u1bdb\u1bdd\u1be5\u1bec\u1bee\u1bf2\u1bf7\u1bfd\u1c00\u1c06\u1c09\u1c0c"+
		"\u1c13\u1c15\u1c1c\u1c22\u1c28\u1c2b\u1c30\u1c34\u1c3a\u1c3d\u1c46\u1c48"+
		"\u1c53\u1c5c\u1c60\u1c69\u1c77\u1c7e\u1c86\u1c8e\u1c99\u1ca0\u1ca7\u1cae"+
		"\u1cdb\u1ce6\u1ceb\u1cef\u1cf2\u1cf5\u1cf8\u1d21\u1d28\u1d32\u1d3b\u1d40"+
		"\u1d43\u1d4a\u1d50\u1d5b\u1d66\u1d6c\u1d72\u1d77\u1d7b\u1d7e\u1d81\u1d86"+
		"\u1d8f\u1d9b\u1d9e\u1da0\u1da4\u1dab\u1db1\u1db8\u1dbe\u1dc5\u1dcb\u1dd2"+
		"\u1de1\u1dee\u1df1\u1df9\u1e05\u1e0b\u1e10\u1e15\u1e21\u1e2c\u1e34\u1e3a"+
		"\u1e45\u1e4c\u1e53\u1e57\u1e5c\u1e68\u1e6c\u1e71\u1e7b\u1e7d\u1e87\u1e8f"+
		"\u1e95\u1e99\u1ea0\u1ea7\u1eac\u1eaf\u1eb3\u1ebb\u1ec0\u1ecf\u1ed4\u1eed"+
		"\u1ef2\u1ef7\u1efc\u1f01\u1f08\u1f6e\u1f7b\u1f82\u1f89\u1f90\u1f97\u1f9e"+
		"\u1fa5\u1fac\u1faf\u1fb6";
	public static final String _serializedATN = Utils.join(
		new String[] {
			_serializedATNSegment0,
			_serializedATNSegment1,
			_serializedATNSegment2,
			_serializedATNSegment3
		},
		""
	);
	public static final ATN _ATN =
		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy