From 54cce110784d33d658b5f78286a98bee244a9eeb Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 14 Jul 2012 17:16:21 +0200 Subject: added streamhtmlparser --- streamhtmlparser/GNUmakefile | 42 + streamhtmlparser/config.h | 1 + streamhtmlparser/htmlparser.c | 1145 ++++ streamhtmlparser/htmlparser_fsm.config | 336 ++ streamhtmlparser/htmlparser_fsm.h | 8400 +++++++++++++++++++++++++++++ streamhtmlparser/include/htmlparser.h | 397 ++ streamhtmlparser/include/htmlparser_cpp.h | 322 ++ streamhtmlparser/include/jsparser.h | 163 + streamhtmlparser/include/statemachine.h | 224 + streamhtmlparser/jsparser.c | 662 +++ streamhtmlparser/jsparser_fsm.config | 157 + streamhtmlparser/jsparser_fsm.h | 3946 ++++++++++++++ streamhtmlparser/statemachine.c | 450 ++ streamhtmlparser/tools/fsm_config.py | 223 + streamhtmlparser/tools/generate_fsm.py | 331 ++ 15 files changed, 16799 insertions(+) create mode 100644 streamhtmlparser/GNUmakefile create mode 100644 streamhtmlparser/config.h create mode 100644 streamhtmlparser/htmlparser.c create mode 100644 streamhtmlparser/htmlparser_fsm.config create mode 100644 streamhtmlparser/htmlparser_fsm.h create mode 100644 streamhtmlparser/include/htmlparser.h create mode 100644 streamhtmlparser/include/htmlparser_cpp.h create mode 100644 streamhtmlparser/include/jsparser.h create mode 100644 streamhtmlparser/include/statemachine.h create mode 100644 streamhtmlparser/jsparser.c create mode 100644 streamhtmlparser/jsparser_fsm.config create mode 100644 streamhtmlparser/jsparser_fsm.h create mode 100644 streamhtmlparser/statemachine.c create mode 100755 streamhtmlparser/tools/fsm_config.py create mode 100755 streamhtmlparser/tools/generate_fsm.py (limited to 'streamhtmlparser') diff --git a/streamhtmlparser/GNUmakefile b/streamhtmlparser/GNUmakefile new file mode 100644 index 0000000..100d8b2 --- /dev/null +++ b/streamhtmlparser/GNUmakefile @@ -0,0 +1,42 @@ +TOPDIR = .. + +SUBDIRS = + +-include $(TOPDIR)/makefiles/gmake/platform.mk + +INCLUDE_CFLAGS = + +INCLUDE_LDFLAGS = \ + +INCLUDE_DIRS = \ + -Iinclude + +INCLUDE_LIBS = + +OBJS = \ + statemachine.o \ + jsparser.o \ + htmlparser.o + +STATIC_LIB = \ + libstreamhtmlparser.a + +-include $(TOPDIR)/makefiles/gmake/sub.mk + +%.h: %.config + python2 tools/generate_fsm.py $< > $@ + +htmlparser_fsm.h: htmlparser_fsm.config +jsparser_fsm.h: jsparser_fsm.config + +local_all: + +local_clean: + +local_distclean: + +local_install: + +local_uninstall: + +local_test: diff --git a/streamhtmlparser/config.h b/streamhtmlparser/config.h new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/streamhtmlparser/config.h @@ -0,0 +1 @@ + diff --git a/streamhtmlparser/htmlparser.c b/streamhtmlparser/htmlparser.c new file mode 100644 index 0000000..c88486a --- /dev/null +++ b/streamhtmlparser/htmlparser.c @@ -0,0 +1,1145 @@ +/* Copyright (c) 2007, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Filipe Almeida + */ + +/* TODO(falmeida): Breaks on NULL characters in the stream. fix. + */ + +#include "config.h" +#include +#include +#include +#include +#include +#include + +#include "statemachine.h" +#include "htmlparser.h" +#include "jsparser.h" + +/* So we can support both C and C++ compilers, we use the CAST() macro instead + * of using C style casts or static_cast<>() directly. + */ +#ifdef __cplusplus + #define CAST(type, expression) (static_cast(expression)) +#else + #define CAST(type, expression) ((type)(expression)) +#endif + +/* Generated state machine definition. */ +#include "htmlparser_fsm.h" + +#define is_js_attribute(attr) ((attr)[0] == 'o' && (attr)[1] == 'n') +#define is_style_attribute(attr) (strcmp((attr), "style") == 0) + +/* html entity filter */ +static struct entityfilter_table_s { + const char *entity; + const char *value; +} entityfilter_table[] = { + { "lt", "<" }, + { "gt", ">" }, + { "quot", "\"" }, + { "amp", "&" }, + { "apos", "\'" }, + { NULL, NULL } +}; + +/* Utility functions */ + +/* Similar to strncpy() but avoids the NULL padding. */ +static inline void nopad_strncpy(char *dst, const char *src, size_t dst_size, + size_t src_size) +{ + size_t size; + + /* size = min(dst_size, src_size) */ + size = dst_size > src_size ? src_size : dst_size; + strncpy(dst, src, size); + if (size > 0) + dst[size - 1] = '\0'; +} + +/* Converts the internal state into the external superstate. + */ +static int state_external(int st) +{ + if (st == STATEMACHINE_ERROR) + return HTMLPARSER_STATE_ERROR; + else + return htmlparser_states_external[st]; +} + +/* Returns true if the character is considered an html whitespace character. + * + * From: http://www.w3.org/TR/html401/struct/text.html#h-9.1 + */ +static inline int html_isspace(char chr) +{ + if (chr == ' ' || chr == '\t' || chr == '\n' || chr == '\r') { + return 1; + } else { + return 0; + } +} + +/* Returns true if the attribute is expected to contain a url + * This list was taken from: http://www.w3.org/TR/html4/index/attributes.html + */ +static int is_uri_attribute(char *attr) +{ + if (attr == NULL) + return 0; + + switch (attr[0]) { + case 'a': + if (strcmp(attr, "action") == 0) + return 1; + /* TODO(falmeida): This is a uri list. Should we treat it diferently? */ + if (strcmp(attr, "archive") == 0) /* This is a uri list */ + return 1; + break; + + case 'b': + if (strcmp(attr, "background") == 0) + return 1; + break; + + case 'c': + if (strcmp(attr, "cite") == 0) + return 1; + if (strcmp(attr, "classid") == 0) + return 1; + if (strcmp(attr, "codebase") == 0) + return 1; + break; + + case 'd': + if (strcmp(attr, "data") == 0) + return 1; + if (strcmp(attr, "dynsrc") == 0) /* from msdn */ + return 1; + break; + + case 'h': + if (strcmp(attr, "href") == 0) + return 1; + break; + + case 'l': + if (strcmp(attr, "longdesc") == 0) + return 1; + break; + + case 's': + if (strcmp(attr, "src") == 0) + return 1; + break; + + case 'u': + if (strcmp(attr, "usemap") == 0) + return 1; + break; + } + + return 0; + +} + +/* Convert a string to lower case characters inplace. + */ +static void tolower_str(char *s) +{ + while (*s != '\0') { + *s = CAST(char, tolower(CAST(unsigned char,*s))); + s++; + } +} + +static const char *ignore_spaces_or_digits(const char *value) { + while (html_isspace(*value) || ((*value >= '0' && *value <= '9'))) + value++; + + return value; +} + +static const char *ignore_spaces(const char *value) { + while (html_isspace(*value)) + value++; + + return value; +} + +/* Return type of the function meta_redirect_type. + */ +enum meta_redirect_type_enum { + META_REDIRECT_TYPE_NONE, + META_REDIRECT_TYPE_URL_START, + META_REDIRECT_TYPE_URL +}; + +/* Analyzes a string for the presence of a meta refresh type url. + * + * This function receives the value of the content attribute of a meta tag and + * parses it in order to identify if a url is going to be present. This is the + * format of such tag: + * + * + * + * Using a regular expression library would be the most obvious way to implement + * this functionality, but introducing such a dependency is undesirable. We + * opted instead to parse programmaticly since the expression is simple enough. + * + * For reference, this is the spec on the meta http refresh tag: + * http://dev.w3.org/html5/spec/Overview.html#attr-meta-http-equiv-refresh + * + * If the value has no content after the expression, we know we are at the start + * of the URL. Otherwise we are past the start of the URL. + * + * + * Returns: + * + * This functions returns one of the following values: + * META_REDIRECT_TYPE_NONE - A url was not identified in the input string. + * META_REDIRECT_TYPE_URL_START - The input string ends exactly at the start + * of the url. + * META_REDIRECT_TYPE_URL - The input string ends somewhere in the middle or + * the end of the url. + * + * A few examples: + * "5" + * Returns META_REDIRECT_TYPE_NONE since we don't expect a url to follow. + * + * "5; URL = " + * The function returns META_REDIRECT_TYPE_URL_START since we expect a url to + * follow. + * + * "5; URL = http://www.google.com/?" + * Returns META_REDIRECT_TYPE_URL since the input value terminates in the + * middle or end of a url. + * + * + * Caveats: We are only recording up to 256 characters of attribute values, so + * our analysis is limited to that. This shouldn't be an issue in practice + * though as it would be unexpected for the part of the string that we are + * matching to be so long. + */ +static enum meta_redirect_type_enum meta_redirect_type(const char *value) { + + if (value == NULL) + return META_REDIRECT_TYPE_NONE; + + /* Match while [ \t\r\n0-9]* */ + value = ignore_spaces_or_digits(value); + + /* Verify that we got a semi-colon character */ + if (*value != ';') + return META_REDIRECT_TYPE_NONE; + value++; + + /* Match while [ \t\r\n]* */ + value = ignore_spaces(value); + + /* Validate that we have 'URL' */ + if (strncasecmp(value, "url", strlen("url")) != 0) + return META_REDIRECT_TYPE_NONE; + + value += strlen("url"); + + /* Match while [ \t\r\n]* */ + value = ignore_spaces(value); + + if (*value != '=') + return META_REDIRECT_TYPE_NONE; + value++; + + /* Match while [ \t\r\n]* */ + value = ignore_spaces(value); + + /* The HTML5 spec allows for the url to be quoted, so we skip a single or + * double quote if we find one. + */ + if (*value == '"' || *value == '\'') + value++; + + if (*value == '\0') + return META_REDIRECT_TYPE_URL_START; + else + return META_REDIRECT_TYPE_URL; +} + + +/* Resets the entityfilter to it's initial state so it can be reused. + */ +void entityfilter_reset(entityfilter_ctx *ctx) +{ + ctx->buffer[0] = 0; + ctx->buffer_pos = 0; + ctx->in_entity = 0; +} + +/* Initializes a new entity filter object. + */ +entityfilter_ctx *entityfilter_new(void) +{ + entityfilter_ctx *ctx; + ctx = CAST(entityfilter_ctx *, + malloc(sizeof(entityfilter_ctx))); + + if (ctx == NULL) + return NULL; + ctx->buffer[0] = 0; + ctx->buffer_pos = 0; + ctx->in_entity = 0; + + return ctx; +} + +/* Copies the context of the entityfilter pointed to by src to the entityfilter + * dst. + */ +void entityfilter_copy(entityfilter_ctx *dst, entityfilter_ctx *src) +{ + assert(src != NULL); + assert(dst != NULL); + assert(src != dst); + memcpy(dst, src, sizeof(entityfilter_ctx)); +} + + +/* Deallocates an entity filter object. + */ +void entityfilter_delete(entityfilter_ctx *ctx) +{ + free(ctx); +} + +/* Converts a string containing an hexadecimal number to a string containing + * one character with the corresponding ascii value. + * + * The provided output char array must be at least 2 chars long. + */ +static const char *parse_hex(const char *s, char *output) +{ + int n; + n = strtol(s, NULL, 16); + output[0] = n; + output[1] = 0; + /* TODO(falmeida): Make this function return void */ + return output; +} + +/* Converts a string containing a decimal number to a string containing one + * character with the corresponding ascii value. + * + * The provided output char array must be at least 2 chars long. + */ +static const char *parse_dec(const char *s, char *output) +{ + int n; + n = strtol(s, NULL, 10); + output[0] = n; + output[1] = 0; + return output; +} + +/* Converts a string with an html entity to it's encoded form, which is written + * to the output string. + */ +static const char *entity_convert(const char *s, char *output, char terminator) +{ + /* TODO(falmeida): Handle wide char encodings */ + struct entityfilter_table_s *t = entityfilter_table; + + if (s[0] == '#') { + if (s[1] == 'x' || s[1] == 'X') { /* hex */ + return parse_hex(s + 2, output); + } else { /* decimal */ + return parse_dec(s + 1, output); + } + } + + while (t->entity != NULL) { + if (strcasecmp(t->entity, s) == 0) + return t->value; + t++; + } + + snprintf(output, HTMLPARSER_MAX_ENTITY_SIZE, "&%s%c", s, terminator); + output[HTMLPARSER_MAX_ENTITY_SIZE - 1] = '\0'; + + return output; +} + + +/* Processes a character from the input stream and decodes any html entities + * in the processed input stream. + */ +const char *entityfilter_process(entityfilter_ctx *ctx, char c) +{ + if (ctx->in_entity) { + if (c == ';' || html_isspace(c)) { + ctx->in_entity = 0; + ctx->buffer[ctx->buffer_pos] = '\0'; + ctx->buffer_pos = 0; + return entity_convert(ctx->buffer, ctx->output, c); + } else { + ctx->buffer[ctx->buffer_pos++] = c; + if (ctx->buffer_pos >= HTMLPARSER_MAX_ENTITY_SIZE - 2) { + /* No more buffer to use, finalize and return. + * We need two characters left, one for the '&' character and + * another for the NULL termination. */ + ctx->buffer[ctx->buffer_pos] = '\0'; + ctx->in_entity=0; + ctx->buffer_pos = 0; + snprintf(ctx->output, HTMLPARSER_MAX_ENTITY_SIZE, "&%s", + ctx->buffer); + ctx->output[HTMLPARSER_MAX_ENTITY_SIZE - 1] = '\0'; + return ctx->output; + } + } + } else { + if (c == '&') { + ctx->in_entity = 1; + ctx->buffer_pos = 0; + } else { + ctx->output[0] = c; + ctx->output[1] = 0; + return ctx->output; + } + } + return ""; +} + +/* Called when the parser enters a new tag. Starts recording it's name into + * html->tag. + */ +static void enter_tag_name(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + html->tag[0] = '\0'; + statemachine_start_record(ctx); +} + +/* Called when the parser exits the tag name in order to finalize the recording. + * + * It converts the tag name to lowercase, and if the tag was closed, just + * clears html->tag. + */ +static void exit_tag_name(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + nopad_strncpy(html->tag, statemachine_stop_record(ctx), + HTMLPARSER_MAX_STRING, statemachine_record_length(ctx)); + + tolower_str(html->tag); + + if (html->tag[0] == '/') + html->tag[0] = '\0'; +} + +/* Called when the parser enters a new tag. Starts recording it's name into + * html->attr + */ +static void enter_attr(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + html->attr[0] = '\0'; + statemachine_start_record(ctx); +} + +/* Called when the parser exits the attribute name in order to finalize the + * recording. + * + * It converts the tag name to lowercase. + */ +static void exit_attr(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + nopad_strncpy(html->attr, statemachine_stop_record(ctx), + HTMLPARSER_MAX_STRING, statemachine_record_length(ctx)); + + tolower_str(html->attr); +} + +/* Called when we enter an attribute value. + * + * Keeps track of a position index inside the value and initializes the + * javascript state machine for attributes that accept javascript. + */ +static void enter_value(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + html->value_index = 0; + + if (is_js_attribute(html->attr)) { + entityfilter_reset(html->entityfilter); + jsparser_reset(html->jsparser); + html->in_js = 1; + } else { + html->in_js = 0; + } +} + +/* Called when we enter the contents of an attribute value. + * + * Initializes the recording of the contents of the value. + */ +static void enter_value_content(statemachine_ctx *ctx, int start, char chr, + int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + html->value[0] = '\0'; + statemachine_start_record(ctx); +} + +/* Called when we exit the contents of an attribute value. + * + * Finalizes the recording of the contents of the value. + */ +static void exit_value_content(statemachine_ctx *ctx, int start, char chr, + int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + nopad_strncpy(html->value, statemachine_stop_record(ctx), + HTMLPARSER_MAX_STRING, statemachine_record_length(ctx)); + + html->in_js = 0; +} + +/* Called for every character inside an attribute value. + * + * Used to process javascript and keep track of the position index inside the + * attribute value. + */ +static void in_state_value(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + html->value_index++; + + if (html->in_js == 1) { + const char *output; + output = entityfilter_process(html->entityfilter, chr); + jsparser_parse_str(html->jsparser, output); + } +} + +/* Called everytime the parser leaves a tag definition. + * + * When we encounter a script tag, we initialize the js parser and switch the + * state to cdata. We also switch to the cdata state when we encounter any + * other CDATA/RCDATA tag (style, title or textarea) except that we do not + * initialize the js parser. + * + * To simplify the code, we treat RCDATA and CDATA sections the same since the + * differences between them don't affect the context we are in. + */ +static void tag_close(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + if (strcmp(html->tag, "script") == 0) { + ctx->next_state = HTMLPARSER_STATE_INT_CDATA_TEXT; + jsparser_reset(html->jsparser); + html->in_js = 1; + } else if (strcmp(html->tag, "style") == 0 || + strcmp(html->tag, "title") == 0 || + strcmp(html->tag, "textarea") == 0) { + ctx->next_state = HTMLPARSER_STATE_INT_CDATA_TEXT; + html->in_js = 0; + } +} + +/* Called inside cdata blocks in order to parse the javascript. + * + * Calls the javascript parser if currently in a script tag. + */ +static void in_state_cdata(statemachine_ctx *ctx, int start, char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + if (html->in_js) + jsparser_parse_chr(html->jsparser, chr); +} + +/* Called if we encounter a '<' character in a cdata section. + * + * When encountering a '<' character inside cdata, we need to find the closing + * tag name in order to know if the tag is going to be closed or not, so we + * start recording the name of what could be the closing tag. + */ +static void enter_state_cdata_may_close(statemachine_ctx *ctx, int start, + char chr, int end) +{ + (void)start; + (void)chr; + (void)end; + + statemachine_start_record(ctx); +} + +/* Called when we finish reading what could be a closing cdata tag. + * + * Checks if the closing tag name matches the current entity, and if so closes + * the element. + */ +static void exit_state_cdata_may_close(statemachine_ctx *ctx, int start, + char chr, int end) +{ + htmlparser_ctx *html = CAST(htmlparser_ctx *, ctx->user); + const char *cdata_close_tag; + assert(html != NULL); + + (void)start; + (void)chr; + (void)end; + + cdata_close_tag = statemachine_stop_record(ctx); + assert(cdata_close_tag[0] == '/'); + + if (strcasecmp(&cdata_close_tag[1], html->tag) == 0 && + (chr == '>' || html_isspace(chr))) { /* Make sure we have a delimiter */ + html->tag[0] = '\0'; /* Empty tag mimicking exit_tag_name(). */ + html->in_js = 0; /* In case this was a script tag. */ + } else { + /* Does not close the CDATA section. Go back to CDATA. */ + ctx->next_state = HTMLPARSER_STATE_INT_CDATA_TEXT; + } +} + +/* Resets the parser to it's initial state and changes the parser mode. + */ +void htmlparser_reset_mode(htmlparser_ctx *ctx, int mode) +{ + assert(ctx != NULL); + statemachine_reset(ctx->statemachine); + ctx->in_js = 0; + ctx->tag[0] = '\0'; + ctx->attr[0] = '\0'; + ctx->value[0] = '\0'; + + jsparser_reset(ctx->jsparser); + + switch (mode) { + case HTMLPARSER_MODE_HTML: + ctx->statemachine->current_state = HTMLPARSER_STATE_INT_TEXT; + break; + case HTMLPARSER_MODE_JS: + ctx->statemachine->current_state = HTMLPARSER_STATE_INT_JS_FILE; + ctx->in_js = 1; + break; + case HTMLPARSER_MODE_CSS: + ctx->statemachine->current_state = HTMLPARSER_STATE_INT_CSS_FILE; + break; + case HTMLPARSER_MODE_HTML_IN_TAG: + ctx->statemachine->current_state = HTMLPARSER_STATE_INT_TAG_SPACE; + break; + default: + assert("Invalid mode in htmlparser_reset_mode()." == NULL); + } +} + +/* Resets the parser to it's initial state and to the default mode, which + * is MODE_HTML. + */ +void htmlparser_reset(htmlparser_ctx *ctx) +{ + assert(ctx != NULL); + htmlparser_reset_mode(ctx, HTMLPARSER_MODE_HTML); +} + +/* Creates a new state machine definition and initializes the events for the + * state transitions. + * + * Although each instance of the parser has it's own private instance of a + * statemachine definition, they are still identical across html parser objects + * and are never modified after creation. As such, changes to this definition + * should not occur outside this function and should not depend on properties + * of this particular parser instance as in the future we may opt to use a + * single public definition across parser objects. + */ +static statemachine_definition *create_statemachine_definition(void) +{ + statemachine_definition *def; + def = statemachine_definition_new(HTMLPARSER_NUM_STATES); + if (def == NULL) + return NULL; + + statemachine_definition_populate(def, htmlparser_state_transitions, + htmlparser_states_internal_names); + + statemachine_enter_state(def, HTMLPARSER_STATE_INT_TAG_NAME, + enter_tag_name); + statemachine_exit_state(def, HTMLPARSER_STATE_INT_TAG_NAME, exit_tag_name); + + statemachine_enter_state(def, HTMLPARSER_STATE_INT_ATTR, enter_attr); + statemachine_exit_state(def, HTMLPARSER_STATE_INT_ATTR, exit_attr); + + statemachine_enter_state(def, HTMLPARSER_STATE_INT_TAG_CLOSE, tag_close); + + /* CDATA states. We must list all cdata and javascript states here. */ + /* TODO(falmeida): Declare this list in htmlparser_fsm.config so it doesn't + * go out of sync. + */ + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_TEXT, in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_START, + in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH, + in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH, + in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH, + in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_LT, in_state_cdata); + statemachine_in_state(def, HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + in_state_cdata); + + /* For simplification, we treat the javascript mode as if it were cdata. */ + statemachine_in_state(def, HTMLPARSER_STATE_INT_JS_FILE, in_state_cdata); + + statemachine_enter_state(def, HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + enter_state_cdata_may_close); + statemachine_exit_state(def, HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + exit_state_cdata_may_close); + /* value states */ + statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE, enter_value); + + /* Called when we enter the content of the value */ + statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE_TEXT, + enter_value_content); + statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE_Q, + enter_value_content); + statemachine_enter_state(def, HTMLPARSER_STATE_INT_VALUE_DQ, + enter_value_content); + + /* Called when we exit the content of the value */ + statemachine_exit_state(def, HTMLPARSER_STATE_INT_VALUE_TEXT, + exit_value_content); + statemachine_exit_state(def, HTMLPARSER_STATE_INT_VALUE_Q, + exit_value_content); + statemachine_exit_state(def, HTMLPARSER_STATE_INT_VALUE_DQ, + exit_value_content); + + statemachine_in_state(def, HTMLPARSER_STATE_INT_VALUE_TEXT, in_state_value); + statemachine_in_state(def, HTMLPARSER_STATE_INT_VALUE_Q, in_state_value); + statemachine_in_state(def, HTMLPARSER_STATE_INT_VALUE_DQ, in_state_value); + + return def; +} + + +/* Initializes a new htmlparser instance. + * + * Returns a pointer to the new instance or NULL if the initialization fails. + * Initialization failure is fatal, and if this function fails it may not + * deallocate all previsouly allocated memory. + */ +htmlparser_ctx *htmlparser_new(void) +{ + htmlparser_ctx *html; + + html = CAST(htmlparser_ctx *, calloc(1, sizeof(htmlparser_ctx))); + if (html == NULL) + return NULL; + + html->statemachine_def = create_statemachine_definition(); + if (html->statemachine_def == NULL) + return NULL; + + html->statemachine = statemachine_new(html->statemachine_def, html); + if (html->statemachine == NULL) + return NULL; + + html->jsparser = jsparser_new(); + if (html->jsparser == NULL) + return NULL; + + html->entityfilter = entityfilter_new(); + if (html->entityfilter == NULL) + return NULL; + + htmlparser_reset(html); + + return html; +} + +/* Copies the context of the htmlparser pointed to by src to the htmlparser dst. + */ +void htmlparser_copy(htmlparser_ctx *dst, const htmlparser_ctx *src) +{ + dst->value_index = src->value_index; + dst->in_js = src->in_js; + strcpy(dst->tag, src->tag); + strcpy(dst->attr, src->attr); + strcpy(dst->value, src->value); + + statemachine_copy(dst->statemachine, + src->statemachine, + dst->statemachine_def, + dst); + + jsparser_copy(dst->jsparser, src->jsparser); + + entityfilter_copy(dst->entityfilter, src->entityfilter); + +} + +/* Receives an htmlparser context and Returns the current html state. + */ +int htmlparser_state(htmlparser_ctx *ctx) +{ + return state_external(ctx->statemachine->current_state); +} + +/* Parses the input html stream and returns the finishing state. + */ +int htmlparser_parse(htmlparser_ctx *ctx, const char *str, int size) +{ + int internal_state; + internal_state = statemachine_parse(ctx->statemachine, str, size); + return state_external(internal_state); +} + + +/* Returns true if the parser is inside an attribute value and the value is + * surrounded by single or double quotes. */ +int htmlparser_is_attr_quoted(htmlparser_ctx *ctx) { + int st = statemachine_get_state(ctx->statemachine); + if (st == HTMLPARSER_STATE_INT_VALUE_Q_START || + st == HTMLPARSER_STATE_INT_VALUE_Q || + st == HTMLPARSER_STATE_INT_VALUE_DQ_START || + st == HTMLPARSER_STATE_INT_VALUE_DQ) + return 1; + else + return 0; +} + +/* Returns true if the parser is currently in javascript. + */ +int htmlparser_in_js(htmlparser_ctx *ctx) { + int st = statemachine_get_state(ctx->statemachine); + +/* CDATA states plus JS_FILE. We must list all cdata and javascript states + * here. */ +/* TODO(falmeida): Declare this list in htmlparser_fsm.config so it doesn't go + * out of sync. */ + if (ctx->in_js && + (st == HTMLPARSER_STATE_INT_CDATA_TEXT || + st == HTMLPARSER_STATE_INT_CDATA_COMMENT_START || + st == HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH || + st == HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY || + st == HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH || + st == HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH || + st == HTMLPARSER_STATE_INT_CDATA_LT || + st == HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE || + st == HTMLPARSER_STATE_INT_JS_FILE)) + return 1; + + if (state_external(st) == HTMLPARSER_STATE_VALUE && ctx->in_js) + return 1; + else + return 0; +} + +/* Returns the current tag or NULL if not available or we haven't seen the + * entire tag yet. + */ +const char *htmlparser_tag(htmlparser_ctx *ctx) +{ + if (ctx->tag[0] != '\0') + return ctx->tag; + else + return NULL; +} + +/* Returns true if inside an attribute or a value */ +int htmlparser_in_attr(htmlparser_ctx *ctx); +int htmlparser_in_attr(htmlparser_ctx *ctx) +{ + int ext_state = state_external(statemachine_get_state(ctx->statemachine)); + return ext_state == HTMLPARSER_STATE_ATTR || + ext_state == HTMLPARSER_STATE_VALUE; +} + +/* Returns the current attribute name if after an attribute name or in an + * attribute value. Returns NULL otherwise. */ +const char *htmlparser_attr(htmlparser_ctx *ctx) +{ + if (htmlparser_in_attr(ctx)) + return ctx->attr; + else + return NULL; +} + +/* Returns true if the parser is currently inside a CSS construct. + */ +int htmlparser_in_css(htmlparser_ctx *ctx) { + int state = statemachine_get_state(ctx->statemachine); + const char *tag = htmlparser_tag(ctx); + int external_state = state_external(state); + + if (state == HTMLPARSER_STATE_INT_CSS_FILE || + (external_state == HTMLPARSER_STATE_VALUE && + htmlparser_attr_type(ctx) == HTMLPARSER_ATTR_STYLE) || + (tag && strcmp(tag, "style") == 0)) { + return 1; + } else { + return 0; + } +} + +/* Returns the contents of the current attribute value. + */ +const char *htmlparser_value(htmlparser_ctx *ctx) +{ + int ext_state = state_external(statemachine_get_state(ctx->statemachine)); + if (ext_state == HTMLPARSER_STATE_VALUE) { + strncpy(ctx->value, statemachine_record_buffer(ctx->statemachine), + HTMLPARSER_MAX_STRING); + ctx->value[HTMLPARSER_MAX_STRING - 1] = '\0'; + return ctx->value; + } else { + return NULL; + } +} + + +/* Returns the current state of the javascript state machine + * + * Currently only present for testing purposes. + */ +int htmlparser_js_state(htmlparser_ctx *ctx) +{ + return jsparser_state(ctx->jsparser); +} + +/* True is currently inside a javascript string literal + */ +int htmlparser_is_js_quoted(htmlparser_ctx *ctx) +{ + if (htmlparser_in_js(ctx)) { + int st = jsparser_state(ctx->jsparser); + if (st == JSPARSER_STATE_Q || + st == JSPARSER_STATE_DQ) + return 1; + } + return 0; +} + +/* True if currently inside an attribute value + */ +int htmlparser_in_value(htmlparser_ctx *ctx); +int htmlparser_in_value(htmlparser_ctx *ctx) +{ + int ext_state = state_external(statemachine_get_state(ctx->statemachine)); + return ext_state == HTMLPARSER_STATE_VALUE; +} + +/* Returns the position inside the current attribute value + */ +int htmlparser_value_index(htmlparser_ctx *ctx) +{ + if (htmlparser_in_value(ctx)) + return ctx->value_index; + + return -1; +} + +/* Returns true if this is the first character of a url inside an attribute. + */ +int htmlparser_is_url_start(htmlparser_ctx *ctx) +{ + const char *tag; + + if (htmlparser_attr_type(ctx) == HTMLPARSER_ATTR_URI) { + tag = htmlparser_tag(ctx); + + if ((tag && strcmp(tag, "meta") == 0 && + meta_redirect_type(htmlparser_value(ctx)) == + META_REDIRECT_TYPE_URL_START) || + htmlparser_value_index(ctx) == 0) + return 1; + + } + return 0; +} + +/* Returns the current attribute type. + */ +int htmlparser_attr_type(htmlparser_ctx *ctx) +{ + const char *tag; + const char *attr; + const char *value; + enum meta_redirect_type_enum redirect_type; + + if (!htmlparser_in_attr(ctx)) + return HTMLPARSER_ATTR_NONE; + + if (is_js_attribute(ctx->attr)) + return HTMLPARSER_ATTR_JS; + + if (is_uri_attribute(ctx->attr)) + return HTMLPARSER_ATTR_URI; + + if (is_style_attribute(ctx->attr)) + return HTMLPARSER_ATTR_STYLE; + + tag = htmlparser_tag(ctx); + attr = htmlparser_attr(ctx); + + /* Special logic to handle meta redirect type tags. */ + if (tag && strcmp(tag, "meta") == 0 && + attr && strcmp(attr, "content") == 0) { + + value = htmlparser_value(ctx); + redirect_type = meta_redirect_type(value); + + if (redirect_type == META_REDIRECT_TYPE_URL || + redirect_type == META_REDIRECT_TYPE_URL_START) + return HTMLPARSER_ATTR_URI; + } + + return HTMLPARSER_ATTR_REGULAR; +} + +/* Return the current line number. */ +int htmlparser_get_line_number(htmlparser_ctx *ctx) { + return statemachine_get_line_number(ctx->statemachine); +} + +/* Set the current line number. */ +void htmlparser_set_line_number(htmlparser_ctx *ctx, int line) { + statemachine_set_line_number(ctx->statemachine, line); +} + +/* Return the current column number. */ +int htmlparser_get_column_number(htmlparser_ctx *ctx) { + return statemachine_get_column_number(ctx->statemachine); +} + +/* Set the current column number. */ +void htmlparser_set_column_number(htmlparser_ctx *ctx, int column) { + statemachine_set_column_number(ctx->statemachine, column); +} + +/* Retrieve a human readable error message in case an error occurred. + * + * NULL is returned if the parser didn't encounter an error. + */ +const char *htmlparser_get_error_msg(htmlparser_ctx *ctx) { + return statemachine_get_error_msg(ctx->statemachine); +} + +/* Invoked by the caller when text is expanded by the caller. + */ +int htmlparser_insert_text(htmlparser_ctx *ctx) +{ + /* TODO(falmeida): Generalize and use a table for these values. */ + + if (statemachine_get_state(ctx->statemachine) == HTMLPARSER_STATE_INT_VALUE) { + statemachine_set_state(ctx->statemachine, HTMLPARSER_STATE_INT_VALUE_TEXT); + } + return 1; +} + +/* Deallocates an htmlparser context object. + */ +void htmlparser_delete(htmlparser_ctx *ctx) +{ + assert(ctx != NULL); + statemachine_definition_delete(ctx->statemachine_def); + statemachine_delete(ctx->statemachine); + jsparser_delete(ctx->jsparser); + entityfilter_delete(ctx->entityfilter); + free(ctx); +} diff --git a/streamhtmlparser/htmlparser_fsm.config b/streamhtmlparser/htmlparser_fsm.config new file mode 100644 index 0000000..e80d055 --- /dev/null +++ b/streamhtmlparser/htmlparser_fsm.config @@ -0,0 +1,336 @@ +# Copyright 2008 Google Inc. All Rights Reserved. +# Author: falmeida@google.com (Filipe Almeida) + +# TODO(falmeida): Add more descriptive names to the states and drop the +# abbreviations. +# TODO(falmeida): Reorder the states so that it's easier to read. +# TODO(falmeida): Support CDATA blocks in the form: ', '>') +condition('=', '=') + +# TODO(falmeida): This is not the correct expression. tag and attribute names +# can only consist of alpha character. +condition('id', 'A-Za-z0-9_:-') +condition('idtag', 'A-Za-z0-9/_:-') + +# Whitespace according to: http://www.w3.org/TR/html401/struct/text.html#h-9.1 +condition('space', ' \t\n\r') +condition('!', '!') +condition('q', '\'') +condition('dq', '\"') +condition('/', '/') +condition('*', '*') +condition('-', '-') +condition('?', '?') +condition('lf', '\n') +condition('quote', '\\') + +# TODO(falmeida): This default rule is a hack and shouldn't be here. +condition('default', '[:default:]') + +state(name = 'text', + external = 'text', + transitions = [ + ['<', 'tag_start'], + ['default', 'text'] + ]) + +# When we found the < character in text. +# Tag opening is defined in the HTML5 draft here: +# http://www.whatwg.org/specs/web-apps/current-work/#tag-open-state +# We don't exactly follow this and are much more loose in order to mimic the way +# the major browsers behave. +state(name = 'tag_start', + external = 'tag', + transitions = [ + ['idtag', 'tag_name'], + ['?', 'pi'], + ['!', 'declaration_start'], + ['<', 'tag_start'], + ['default', 'text'] + ]) + +# Name of the tag. Includes the closing tag character '/'. +state(name = 'tag_name', + external = 'tag', + transitions = [ + ['idtag', 'tag_name'], + ['space', 'tag_space'], + ['>', 'tag_close'] + ]) + +# HTML declaration and comment parsing +# +# We don't expose declaration state because at this point we only want to +# ensure that we are parsing them correctly so we don't get out of sync. +# This is specifically made for DOCTYPE declarations and won't work if DTD's +# are defined inside the declaration. +# The HTML5 spec says we should specificly look for the string '', 'text'], + ['default', 'declaration_body'] + ]) + +# Inside a declaration. Ie: ' +state(name = 'declaration_body', + external = 'text', + transitions = [ + ['>', 'text'], + ['default', 'declaration_body'] + ]) + +# Got '' +state(name = 'comment_body', + external = 'comment', + transitions = [ + ['-', 'comment_dash'], + ['default', 'comment_body'] + ]) + +# Got '-' inside a comment. +state(name = 'comment_dash', + external = 'comment', + transitions = [ + ['-', 'comment_dash_dash'], + ['default', 'comment_body'] + ]) + +# Got '--' inside a comment. +state(name = 'comment_dash_dash', + external = 'comment', + transitions = [ + ['-', 'comment_dash_dash'], + ['>', 'text'], + ['default', 'comment_body'] + ]) + +# XML Processing instruction parsing according to: +# http://www.w3.org/TR/REC-xml/#sec-pi +# +# Everything between the characters is considered to be part of the +# processing instruction. +state(name = 'pi', + external = 'text', + transitions = [ + ['?', 'pi_may_end'], + ['default', 'pi'] + ]) + +state(name = 'pi_may_end', + external = 'text', + transitions = [ + ['>', 'text'], + ['default', 'pi'] + ]) + +# Whitespace between tag name, attributes. +state(name = 'tag_space', + external = 'tag', + transitions = [ + ['>', 'tag_close'], + ['space', 'tag_space'], + ['id', 'attr'], + ['/', 'tag_space'] + ]) + +state(name = 'tag_close', + external = 'text', + transitions = [ + ['<', 'tag_start'], + ['default', 'text'] + ]) + +# Name of the attribute. +state(name = 'attr', + external = 'attr', + transitions = [ + ['id', 'attr'], + ['>', 'tag_close'], + ['/', 'tag_space'], + ['=', 'value'], + ['space', 'attr_space'] + ]) + +# After the attribute name. +state(name = 'attr_space', + external = 'attr', + transitions = [ + ['>', 'tag_close'], + ['space', 'attr_space'], + ['id', 'attr'], + ['/', 'tag_space'], + ['=', 'value'] + ]) + +# Expecting a value, after attribute= +state(name = 'value', + external = 'value', + transitions = [ + ['q', 'value_q_start'], + ['dq', 'value_dq_start'], + ['space', 'value'], + ['>', 'tag_close'], + ['default', 'value_text'] + ]) + +# Unquoted attribute value. +state(name = 'value_text', + external = 'value', + transitions = [ + ['>', 'tag_close'], + ['space', 'tag_space'], + ['default', 'value_text'] + ]) + +# First character of a single quoted attribute value. +state(name = 'value_q_start', + external = 'value', + transitions = [ + ['q', 'tag_space'], + ['default', 'value_q'] + ]) + +# In the middle of a single quoted attribute value. +state(name = 'value_q', + external = 'value', + transitions = [ + ['q', 'tag_space'], + ['default', 'value_q'] + ]) + +# First character of a double quoted attribute value. +state(name = 'value_dq_start', + external = 'value', + transitions = [ + ['dq', 'tag_space'], + ['default', 'value_dq'] + ]) + +# In the middle of a double quoted attribute value. +state(name = 'value_dq', + external = 'value', + transitions = [ + ['dq', 'tag_space'], + ['default', 'value_dq'] + ]) + +# CDATA escaping text spans. +# TODO(falmeida): These states should go after cdata_text. + +# Got '', 'cdata_text'], + ['default', 'cdata_comment_body'] + ]) + +# CDATA processing +# +# To simplify the code, we treat RCDATA and CDATA sections the same since the +# differences between them don't affect the context we are in. +state(name = 'cdata_text', + external = 'text', + transitions = [ + ['<', 'cdata_lt'], + ['default', 'cdata_text'] + ]) + +# Possible beginning of the closing tag. +state(name = 'cdata_lt', + external = 'text', + transitions = [ + ['/', 'cdata_may_close'], + ['!', 'cdata_comment_start'], + ['default', 'cdata_text'] + ]) + +# If we encounter ', 'text'], + ['space', 'tag_space'], + ['default', 'cdata_text'] + ]) + +# The next states are used for specialized parser modes. +state(name = 'js_file', + external = 'js_file', + transitions = [ + ['default', 'js_file'] + ]) + +# TODO(falmeida): Having css_file and js_file as the external name doesn't make +# sense. This should instead be text and the js/css state be +# returned by # in_js() and in_css(). +state(name = 'css_file', + external = 'css_file', + transitions = [ + ['default', 'css_file'] + ]) + +state(name = 'null', + external = 'text', + transitions = [ + ['default', 'null'] + ]) + diff --git a/streamhtmlparser/htmlparser_fsm.h b/streamhtmlparser/htmlparser_fsm.h new file mode 100644 index 0000000..20fca32 --- /dev/null +++ b/streamhtmlparser/htmlparser_fsm.h @@ -0,0 +1,8400 @@ +/* Definition of a finite state machine for a subset of HTTP 4.1 + * Auto generated by generate_fsm.py. Please do not edit. + */ +#define HTMLPARSER_NUM_STATES 33 +enum htmlparser_state_internal_enum { + HTMLPARSER_STATE_INT_TEXT, + HTMLPARSER_STATE_INT_TAG_START, + HTMLPARSER_STATE_INT_TAG_NAME, + HTMLPARSER_STATE_INT_DECLARATION_START, + HTMLPARSER_STATE_INT_DECLARATION_BODY, + HTMLPARSER_STATE_INT_COMMENT_OPEN, + HTMLPARSER_STATE_INT_COMMENT_BODY, + HTMLPARSER_STATE_INT_COMMENT_DASH, + HTMLPARSER_STATE_INT_COMMENT_DASH_DASH, + HTMLPARSER_STATE_INT_PI, + HTMLPARSER_STATE_INT_PI_MAY_END, + HTMLPARSER_STATE_INT_TAG_SPACE, + HTMLPARSER_STATE_INT_TAG_CLOSE, + HTMLPARSER_STATE_INT_ATTR, + HTMLPARSER_STATE_INT_ATTR_SPACE, + HTMLPARSER_STATE_INT_VALUE, + HTMLPARSER_STATE_INT_VALUE_TEXT, + HTMLPARSER_STATE_INT_VALUE_Q_START, + HTMLPARSER_STATE_INT_VALUE_Q, + HTMLPARSER_STATE_INT_VALUE_DQ_START, + HTMLPARSER_STATE_INT_VALUE_DQ, + HTMLPARSER_STATE_INT_CDATA_COMMENT_START, + HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH, + HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH, + HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH, + HTMLPARSER_STATE_INT_CDATA_TEXT, + HTMLPARSER_STATE_INT_CDATA_LT, + HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + HTMLPARSER_STATE_INT_JS_FILE, + HTMLPARSER_STATE_INT_CSS_FILE, + HTMLPARSER_STATE_INT_NULL +}; + +static const int htmlparser_states_external[] = { + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TAG, + HTMLPARSER_STATE_TAG, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_COMMENT, + HTMLPARSER_STATE_COMMENT, + HTMLPARSER_STATE_COMMENT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TAG, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_ATTR, + HTMLPARSER_STATE_ATTR, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_JS_FILE, + HTMLPARSER_STATE_CSS_FILE, + HTMLPARSER_STATE_TEXT +}; + +static const char * htmlparser_states_internal_names[] = { + "text", + "tag_start", + "tag_name", + "declaration_start", + "declaration_body", + "comment_open", + "comment_body", + "comment_dash", + "comment_dash_dash", + "pi", + "pi_may_end", + "tag_space", + "tag_close", + "attr", + "attr_space", + "value", + "value_text", + "value_q_start", + "value_q", + "value_dq_start", + "value_dq", + "cdata_comment_start", + "cdata_comment_start_dash", + "cdata_comment_body", + "cdata_comment_dash", + "cdata_comment_dash_dash", + "cdata_text", + "cdata_lt", + "cdata_may_close", + "js_file", + "css_file", + "null" +}; + +static const int htmlparser_transition_row_text[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_TEXT, + /* '.' */ HTMLPARSER_STATE_INT_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_TAG_START, + /* '=' */ HTMLPARSER_STATE_INT_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT +}; + +static const int htmlparser_transition_row_tag_start[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_DECLARATION_START, + /* '"' */ HTMLPARSER_STATE_INT_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '.' */ HTMLPARSER_STATE_INT_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '0' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '1' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '2' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '3' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '4' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '5' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '6' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '7' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '8' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '9' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* ':' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* ';' */ HTMLPARSER_STATE_INT_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_TAG_START, + /* '=' */ HTMLPARSER_STATE_INT_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_PI, + /* '@' */ HTMLPARSER_STATE_INT_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'B' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'C' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'D' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'E' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'F' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'G' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'H' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'I' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'J' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'K' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'L' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'M' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'N' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'O' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'P' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'Q' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'R' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'S' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'T' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'U' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'V' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'W' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'X' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'Y' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'Z' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '[' */ HTMLPARSER_STATE_INT_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '`' */ HTMLPARSER_STATE_INT_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'b' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'c' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'd' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'e' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'f' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'g' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'h' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'i' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'j' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'k' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'l' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'm' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'n' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'o' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'p' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'q' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'r' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 's' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 't' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'u' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'v' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'w' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'x' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'y' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'z' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '{' */ HTMLPARSER_STATE_INT_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT +}; + +static const int htmlparser_transition_row_tag_name[] = { + /* '\x00' */ STATEMACHINE_ERROR, + /* '\x01' */ STATEMACHINE_ERROR, + /* '\x02' */ STATEMACHINE_ERROR, + /* '\x03' */ STATEMACHINE_ERROR, + /* '\x04' */ STATEMACHINE_ERROR, + /* '\x05' */ STATEMACHINE_ERROR, + /* '\x06' */ STATEMACHINE_ERROR, + /* '\x07' */ STATEMACHINE_ERROR, + /* '\x08' */ STATEMACHINE_ERROR, + /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0b' */ STATEMACHINE_ERROR, + /* '\x0c' */ STATEMACHINE_ERROR, + /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0e' */ STATEMACHINE_ERROR, + /* '\x0f' */ STATEMACHINE_ERROR, + /* '\x10' */ STATEMACHINE_ERROR, + /* '\x11' */ STATEMACHINE_ERROR, + /* '\x12' */ STATEMACHINE_ERROR, + /* '\x13' */ STATEMACHINE_ERROR, + /* '\x14' */ STATEMACHINE_ERROR, + /* '\x15' */ STATEMACHINE_ERROR, + /* '\x16' */ STATEMACHINE_ERROR, + /* '\x17' */ STATEMACHINE_ERROR, + /* '\x18' */ STATEMACHINE_ERROR, + /* '\x19' */ STATEMACHINE_ERROR, + /* '\x1a' */ STATEMACHINE_ERROR, + /* '\x1b' */ STATEMACHINE_ERROR, + /* '\x1c' */ STATEMACHINE_ERROR, + /* '\x1d' */ STATEMACHINE_ERROR, + /* '\x1e' */ STATEMACHINE_ERROR, + /* '\x1f' */ STATEMACHINE_ERROR, + /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '!' */ STATEMACHINE_ERROR, + /* '"' */ STATEMACHINE_ERROR, + /* '#' */ STATEMACHINE_ERROR, + /* '$' */ STATEMACHINE_ERROR, + /* '%' */ STATEMACHINE_ERROR, + /* '&' */ STATEMACHINE_ERROR, + /* "'" */ STATEMACHINE_ERROR, + /* '(' */ STATEMACHINE_ERROR, + /* ')' */ STATEMACHINE_ERROR, + /* '*' */ STATEMACHINE_ERROR, + /* '+' */ STATEMACHINE_ERROR, + /* ',' */ STATEMACHINE_ERROR, + /* '-' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '.' */ STATEMACHINE_ERROR, + /* '/' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '0' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '1' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '2' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '3' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '4' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '5' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '6' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '7' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '8' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '9' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* ':' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* ';' */ STATEMACHINE_ERROR, + /* '<' */ STATEMACHINE_ERROR, + /* '=' */ STATEMACHINE_ERROR, + /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE, + /* '?' */ STATEMACHINE_ERROR, + /* '@' */ STATEMACHINE_ERROR, + /* 'A' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'B' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'C' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'D' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'E' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'F' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'G' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'H' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'I' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'J' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'K' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'L' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'M' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'N' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'O' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'P' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'Q' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'R' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'S' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'T' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'U' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'V' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'W' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'X' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'Y' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'Z' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '[' */ STATEMACHINE_ERROR, + /* '\\' */ STATEMACHINE_ERROR, + /* ']' */ STATEMACHINE_ERROR, + /* '^' */ STATEMACHINE_ERROR, + /* '_' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '`' */ STATEMACHINE_ERROR, + /* 'a' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'b' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'c' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'd' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'e' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'f' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'g' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'h' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'i' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'j' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'k' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'l' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'm' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'n' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'o' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'p' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'q' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'r' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 's' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 't' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'u' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'v' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'w' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'x' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'y' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* 'z' */ HTMLPARSER_STATE_INT_TAG_NAME, + /* '{' */ STATEMACHINE_ERROR, + /* '|' */ STATEMACHINE_ERROR, + /* '}' */ STATEMACHINE_ERROR, + /* '~' */ STATEMACHINE_ERROR, + /* '\x7f' */ STATEMACHINE_ERROR, + /* '\x80' */ STATEMACHINE_ERROR, + /* '\x81' */ STATEMACHINE_ERROR, + /* '\x82' */ STATEMACHINE_ERROR, + /* '\x83' */ STATEMACHINE_ERROR, + /* '\x84' */ STATEMACHINE_ERROR, + /* '\x85' */ STATEMACHINE_ERROR, + /* '\x86' */ STATEMACHINE_ERROR, + /* '\x87' */ STATEMACHINE_ERROR, + /* '\x88' */ STATEMACHINE_ERROR, + /* '\x89' */ STATEMACHINE_ERROR, + /* '\x8a' */ STATEMACHINE_ERROR, + /* '\x8b' */ STATEMACHINE_ERROR, + /* '\x8c' */ STATEMACHINE_ERROR, + /* '\x8d' */ STATEMACHINE_ERROR, + /* '\x8e' */ STATEMACHINE_ERROR, + /* '\x8f' */ STATEMACHINE_ERROR, + /* '\x90' */ STATEMACHINE_ERROR, + /* '\x91' */ STATEMACHINE_ERROR, + /* '\x92' */ STATEMACHINE_ERROR, + /* '\x93' */ STATEMACHINE_ERROR, + /* '\x94' */ STATEMACHINE_ERROR, + /* '\x95' */ STATEMACHINE_ERROR, + /* '\x96' */ STATEMACHINE_ERROR, + /* '\x97' */ STATEMACHINE_ERROR, + /* '\x98' */ STATEMACHINE_ERROR, + /* '\x99' */ STATEMACHINE_ERROR, + /* '\x9a' */ STATEMACHINE_ERROR, + /* '\x9b' */ STATEMACHINE_ERROR, + /* '\x9c' */ STATEMACHINE_ERROR, + /* '\x9d' */ STATEMACHINE_ERROR, + /* '\x9e' */ STATEMACHINE_ERROR, + /* '\x9f' */ STATEMACHINE_ERROR, + /* '\xa0' */ STATEMACHINE_ERROR, + /* '\xa1' */ STATEMACHINE_ERROR, + /* '\xa2' */ STATEMACHINE_ERROR, + /* '\xa3' */ STATEMACHINE_ERROR, + /* '\xa4' */ STATEMACHINE_ERROR, + /* '\xa5' */ STATEMACHINE_ERROR, + /* '\xa6' */ STATEMACHINE_ERROR, + /* '\xa7' */ STATEMACHINE_ERROR, + /* '\xa8' */ STATEMACHINE_ERROR, + /* '\xa9' */ STATEMACHINE_ERROR, + /* '\xaa' */ STATEMACHINE_ERROR, + /* '\xab' */ STATEMACHINE_ERROR, + /* '\xac' */ STATEMACHINE_ERROR, + /* '\xad' */ STATEMACHINE_ERROR, + /* '\xae' */ STATEMACHINE_ERROR, + /* '\xaf' */ STATEMACHINE_ERROR, + /* '\xb0' */ STATEMACHINE_ERROR, + /* '\xb1' */ STATEMACHINE_ERROR, + /* '\xb2' */ STATEMACHINE_ERROR, + /* '\xb3' */ STATEMACHINE_ERROR, + /* '\xb4' */ STATEMACHINE_ERROR, + /* '\xb5' */ STATEMACHINE_ERROR, + /* '\xb6' */ STATEMACHINE_ERROR, + /* '\xb7' */ STATEMACHINE_ERROR, + /* '\xb8' */ STATEMACHINE_ERROR, + /* '\xb9' */ STATEMACHINE_ERROR, + /* '\xba' */ STATEMACHINE_ERROR, + /* '\xbb' */ STATEMACHINE_ERROR, + /* '\xbc' */ STATEMACHINE_ERROR, + /* '\xbd' */ STATEMACHINE_ERROR, + /* '\xbe' */ STATEMACHINE_ERROR, + /* '\xbf' */ STATEMACHINE_ERROR, + /* '\xc0' */ STATEMACHINE_ERROR, + /* '\xc1' */ STATEMACHINE_ERROR, + /* '\xc2' */ STATEMACHINE_ERROR, + /* '\xc3' */ STATEMACHINE_ERROR, + /* '\xc4' */ STATEMACHINE_ERROR, + /* '\xc5' */ STATEMACHINE_ERROR, + /* '\xc6' */ STATEMACHINE_ERROR, + /* '\xc7' */ STATEMACHINE_ERROR, + /* '\xc8' */ STATEMACHINE_ERROR, + /* '\xc9' */ STATEMACHINE_ERROR, + /* '\xca' */ STATEMACHINE_ERROR, + /* '\xcb' */ STATEMACHINE_ERROR, + /* '\xcc' */ STATEMACHINE_ERROR, + /* '\xcd' */ STATEMACHINE_ERROR, + /* '\xce' */ STATEMACHINE_ERROR, + /* '\xcf' */ STATEMACHINE_ERROR, + /* '\xd0' */ STATEMACHINE_ERROR, + /* '\xd1' */ STATEMACHINE_ERROR, + /* '\xd2' */ STATEMACHINE_ERROR, + /* '\xd3' */ STATEMACHINE_ERROR, + /* '\xd4' */ STATEMACHINE_ERROR, + /* '\xd5' */ STATEMACHINE_ERROR, + /* '\xd6' */ STATEMACHINE_ERROR, + /* '\xd7' */ STATEMACHINE_ERROR, + /* '\xd8' */ STATEMACHINE_ERROR, + /* '\xd9' */ STATEMACHINE_ERROR, + /* '\xda' */ STATEMACHINE_ERROR, + /* '\xdb' */ STATEMACHINE_ERROR, + /* '\xdc' */ STATEMACHINE_ERROR, + /* '\xdd' */ STATEMACHINE_ERROR, + /* '\xde' */ STATEMACHINE_ERROR, + /* '\xdf' */ STATEMACHINE_ERROR, + /* '\xe0' */ STATEMACHINE_ERROR, + /* '\xe1' */ STATEMACHINE_ERROR, + /* '\xe2' */ STATEMACHINE_ERROR, + /* '\xe3' */ STATEMACHINE_ERROR, + /* '\xe4' */ STATEMACHINE_ERROR, + /* '\xe5' */ STATEMACHINE_ERROR, + /* '\xe6' */ STATEMACHINE_ERROR, + /* '\xe7' */ STATEMACHINE_ERROR, + /* '\xe8' */ STATEMACHINE_ERROR, + /* '\xe9' */ STATEMACHINE_ERROR, + /* '\xea' */ STATEMACHINE_ERROR, + /* '\xeb' */ STATEMACHINE_ERROR, + /* '\xec' */ STATEMACHINE_ERROR, + /* '\xed' */ STATEMACHINE_ERROR, + /* '\xee' */ STATEMACHINE_ERROR, + /* '\xef' */ STATEMACHINE_ERROR, + /* '\xf0' */ STATEMACHINE_ERROR, + /* '\xf1' */ STATEMACHINE_ERROR, + /* '\xf2' */ STATEMACHINE_ERROR, + /* '\xf3' */ STATEMACHINE_ERROR, + /* '\xf4' */ STATEMACHINE_ERROR, + /* '\xf5' */ STATEMACHINE_ERROR, + /* '\xf6' */ STATEMACHINE_ERROR, + /* '\xf7' */ STATEMACHINE_ERROR, + /* '\xf8' */ STATEMACHINE_ERROR, + /* '\xf9' */ STATEMACHINE_ERROR, + /* '\xfa' */ STATEMACHINE_ERROR, + /* '\xfb' */ STATEMACHINE_ERROR, + /* '\xfc' */ STATEMACHINE_ERROR, + /* '\xfd' */ STATEMACHINE_ERROR, + /* '\xfe' */ STATEMACHINE_ERROR +}; + +static const int htmlparser_transition_row_declaration_start[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '!' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '"' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '#' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '$' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '%' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '&' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* "'" */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '(' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ')' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '*' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '+' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ',' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '-' */ HTMLPARSER_STATE_INT_COMMENT_OPEN, + /* '.' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '/' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ':' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ';' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '<' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '=' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '@' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '[' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ']' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '^' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '_' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '`' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 's' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 't' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '{' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '|' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '}' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '~' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY +}; + +static const int htmlparser_transition_row_declaration_body[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '!' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '"' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '#' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '$' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '%' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '&' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* "'" */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '(' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ')' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '*' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '+' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ',' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '-' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '.' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '/' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ':' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ';' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '<' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '=' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '@' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '[' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* ']' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '^' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '_' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '`' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 's' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 't' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '{' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '|' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '}' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '~' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_DECLARATION_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_DECLARATION_BODY +}; + +static const int htmlparser_transition_row_comment_open[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '.' */ HTMLPARSER_STATE_INT_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT +}; + +static const int htmlparser_transition_row_comment_body[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '!' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '"' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '#' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '$' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '%' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '&' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* "'" */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '(' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ')' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '*' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '+' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ',' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '-' */ HTMLPARSER_STATE_INT_COMMENT_DASH, + /* '.' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '/' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ':' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ';' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '<' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '=' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '>' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '?' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '@' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '[' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ']' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '^' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '_' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '`' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 's' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 't' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '{' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '|' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '}' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '~' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_COMMENT_BODY +}; + +static const int htmlparser_transition_row_comment_dash[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '!' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '"' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '#' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '$' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '%' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '&' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* "'" */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '(' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ')' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '*' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '+' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ',' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '-' */ HTMLPARSER_STATE_INT_COMMENT_DASH_DASH, + /* '.' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '/' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ':' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ';' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '<' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '=' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '>' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '?' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '@' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '[' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ']' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '^' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '_' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '`' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 's' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 't' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '{' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '|' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '}' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '~' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_COMMENT_BODY +}; + +static const int htmlparser_transition_row_comment_dash_dash[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '!' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '"' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '#' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '$' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '%' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '&' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* "'" */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '(' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ')' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '*' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '+' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ',' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '-' */ HTMLPARSER_STATE_INT_COMMENT_DASH_DASH, + /* '.' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '/' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ':' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ';' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '<' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '=' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '@' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '[' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* ']' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '^' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '_' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '`' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 's' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 't' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '{' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '|' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '}' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '~' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_COMMENT_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_COMMENT_BODY +}; + +static const int htmlparser_transition_row_pi[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_PI, + /* '\x01' */ HTMLPARSER_STATE_INT_PI, + /* '\x02' */ HTMLPARSER_STATE_INT_PI, + /* '\x03' */ HTMLPARSER_STATE_INT_PI, + /* '\x04' */ HTMLPARSER_STATE_INT_PI, + /* '\x05' */ HTMLPARSER_STATE_INT_PI, + /* '\x06' */ HTMLPARSER_STATE_INT_PI, + /* '\x07' */ HTMLPARSER_STATE_INT_PI, + /* '\x08' */ HTMLPARSER_STATE_INT_PI, + /* '\t' */ HTMLPARSER_STATE_INT_PI, + /* '\n' */ HTMLPARSER_STATE_INT_PI, + /* '\x0b' */ HTMLPARSER_STATE_INT_PI, + /* '\x0c' */ HTMLPARSER_STATE_INT_PI, + /* '\r' */ HTMLPARSER_STATE_INT_PI, + /* '\x0e' */ HTMLPARSER_STATE_INT_PI, + /* '\x0f' */ HTMLPARSER_STATE_INT_PI, + /* '\x10' */ HTMLPARSER_STATE_INT_PI, + /* '\x11' */ HTMLPARSER_STATE_INT_PI, + /* '\x12' */ HTMLPARSER_STATE_INT_PI, + /* '\x13' */ HTMLPARSER_STATE_INT_PI, + /* '\x14' */ HTMLPARSER_STATE_INT_PI, + /* '\x15' */ HTMLPARSER_STATE_INT_PI, + /* '\x16' */ HTMLPARSER_STATE_INT_PI, + /* '\x17' */ HTMLPARSER_STATE_INT_PI, + /* '\x18' */ HTMLPARSER_STATE_INT_PI, + /* '\x19' */ HTMLPARSER_STATE_INT_PI, + /* '\x1a' */ HTMLPARSER_STATE_INT_PI, + /* '\x1b' */ HTMLPARSER_STATE_INT_PI, + /* '\x1c' */ HTMLPARSER_STATE_INT_PI, + /* '\x1d' */ HTMLPARSER_STATE_INT_PI, + /* '\x1e' */ HTMLPARSER_STATE_INT_PI, + /* '\x1f' */ HTMLPARSER_STATE_INT_PI, + /* ' ' */ HTMLPARSER_STATE_INT_PI, + /* '!' */ HTMLPARSER_STATE_INT_PI, + /* '"' */ HTMLPARSER_STATE_INT_PI, + /* '#' */ HTMLPARSER_STATE_INT_PI, + /* '$' */ HTMLPARSER_STATE_INT_PI, + /* '%' */ HTMLPARSER_STATE_INT_PI, + /* '&' */ HTMLPARSER_STATE_INT_PI, + /* "'" */ HTMLPARSER_STATE_INT_PI, + /* '(' */ HTMLPARSER_STATE_INT_PI, + /* ')' */ HTMLPARSER_STATE_INT_PI, + /* '*' */ HTMLPARSER_STATE_INT_PI, + /* '+' */ HTMLPARSER_STATE_INT_PI, + /* ',' */ HTMLPARSER_STATE_INT_PI, + /* '-' */ HTMLPARSER_STATE_INT_PI, + /* '.' */ HTMLPARSER_STATE_INT_PI, + /* '/' */ HTMLPARSER_STATE_INT_PI, + /* '0' */ HTMLPARSER_STATE_INT_PI, + /* '1' */ HTMLPARSER_STATE_INT_PI, + /* '2' */ HTMLPARSER_STATE_INT_PI, + /* '3' */ HTMLPARSER_STATE_INT_PI, + /* '4' */ HTMLPARSER_STATE_INT_PI, + /* '5' */ HTMLPARSER_STATE_INT_PI, + /* '6' */ HTMLPARSER_STATE_INT_PI, + /* '7' */ HTMLPARSER_STATE_INT_PI, + /* '8' */ HTMLPARSER_STATE_INT_PI, + /* '9' */ HTMLPARSER_STATE_INT_PI, + /* ':' */ HTMLPARSER_STATE_INT_PI, + /* ';' */ HTMLPARSER_STATE_INT_PI, + /* '<' */ HTMLPARSER_STATE_INT_PI, + /* '=' */ HTMLPARSER_STATE_INT_PI, + /* '>' */ HTMLPARSER_STATE_INT_PI, + /* '?' */ HTMLPARSER_STATE_INT_PI_MAY_END, + /* '@' */ HTMLPARSER_STATE_INT_PI, + /* 'A' */ HTMLPARSER_STATE_INT_PI, + /* 'B' */ HTMLPARSER_STATE_INT_PI, + /* 'C' */ HTMLPARSER_STATE_INT_PI, + /* 'D' */ HTMLPARSER_STATE_INT_PI, + /* 'E' */ HTMLPARSER_STATE_INT_PI, + /* 'F' */ HTMLPARSER_STATE_INT_PI, + /* 'G' */ HTMLPARSER_STATE_INT_PI, + /* 'H' */ HTMLPARSER_STATE_INT_PI, + /* 'I' */ HTMLPARSER_STATE_INT_PI, + /* 'J' */ HTMLPARSER_STATE_INT_PI, + /* 'K' */ HTMLPARSER_STATE_INT_PI, + /* 'L' */ HTMLPARSER_STATE_INT_PI, + /* 'M' */ HTMLPARSER_STATE_INT_PI, + /* 'N' */ HTMLPARSER_STATE_INT_PI, + /* 'O' */ HTMLPARSER_STATE_INT_PI, + /* 'P' */ HTMLPARSER_STATE_INT_PI, + /* 'Q' */ HTMLPARSER_STATE_INT_PI, + /* 'R' */ HTMLPARSER_STATE_INT_PI, + /* 'S' */ HTMLPARSER_STATE_INT_PI, + /* 'T' */ HTMLPARSER_STATE_INT_PI, + /* 'U' */ HTMLPARSER_STATE_INT_PI, + /* 'V' */ HTMLPARSER_STATE_INT_PI, + /* 'W' */ HTMLPARSER_STATE_INT_PI, + /* 'X' */ HTMLPARSER_STATE_INT_PI, + /* 'Y' */ HTMLPARSER_STATE_INT_PI, + /* 'Z' */ HTMLPARSER_STATE_INT_PI, + /* '[' */ HTMLPARSER_STATE_INT_PI, + /* '\\' */ HTMLPARSER_STATE_INT_PI, + /* ']' */ HTMLPARSER_STATE_INT_PI, + /* '^' */ HTMLPARSER_STATE_INT_PI, + /* '_' */ HTMLPARSER_STATE_INT_PI, + /* '`' */ HTMLPARSER_STATE_INT_PI, + /* 'a' */ HTMLPARSER_STATE_INT_PI, + /* 'b' */ HTMLPARSER_STATE_INT_PI, + /* 'c' */ HTMLPARSER_STATE_INT_PI, + /* 'd' */ HTMLPARSER_STATE_INT_PI, + /* 'e' */ HTMLPARSER_STATE_INT_PI, + /* 'f' */ HTMLPARSER_STATE_INT_PI, + /* 'g' */ HTMLPARSER_STATE_INT_PI, + /* 'h' */ HTMLPARSER_STATE_INT_PI, + /* 'i' */ HTMLPARSER_STATE_INT_PI, + /* 'j' */ HTMLPARSER_STATE_INT_PI, + /* 'k' */ HTMLPARSER_STATE_INT_PI, + /* 'l' */ HTMLPARSER_STATE_INT_PI, + /* 'm' */ HTMLPARSER_STATE_INT_PI, + /* 'n' */ HTMLPARSER_STATE_INT_PI, + /* 'o' */ HTMLPARSER_STATE_INT_PI, + /* 'p' */ HTMLPARSER_STATE_INT_PI, + /* 'q' */ HTMLPARSER_STATE_INT_PI, + /* 'r' */ HTMLPARSER_STATE_INT_PI, + /* 's' */ HTMLPARSER_STATE_INT_PI, + /* 't' */ HTMLPARSER_STATE_INT_PI, + /* 'u' */ HTMLPARSER_STATE_INT_PI, + /* 'v' */ HTMLPARSER_STATE_INT_PI, + /* 'w' */ HTMLPARSER_STATE_INT_PI, + /* 'x' */ HTMLPARSER_STATE_INT_PI, + /* 'y' */ HTMLPARSER_STATE_INT_PI, + /* 'z' */ HTMLPARSER_STATE_INT_PI, + /* '{' */ HTMLPARSER_STATE_INT_PI, + /* '|' */ HTMLPARSER_STATE_INT_PI, + /* '}' */ HTMLPARSER_STATE_INT_PI, + /* '~' */ HTMLPARSER_STATE_INT_PI, + /* '\x7f' */ HTMLPARSER_STATE_INT_PI, + /* '\x80' */ HTMLPARSER_STATE_INT_PI, + /* '\x81' */ HTMLPARSER_STATE_INT_PI, + /* '\x82' */ HTMLPARSER_STATE_INT_PI, + /* '\x83' */ HTMLPARSER_STATE_INT_PI, + /* '\x84' */ HTMLPARSER_STATE_INT_PI, + /* '\x85' */ HTMLPARSER_STATE_INT_PI, + /* '\x86' */ HTMLPARSER_STATE_INT_PI, + /* '\x87' */ HTMLPARSER_STATE_INT_PI, + /* '\x88' */ HTMLPARSER_STATE_INT_PI, + /* '\x89' */ HTMLPARSER_STATE_INT_PI, + /* '\x8a' */ HTMLPARSER_STATE_INT_PI, + /* '\x8b' */ HTMLPARSER_STATE_INT_PI, + /* '\x8c' */ HTMLPARSER_STATE_INT_PI, + /* '\x8d' */ HTMLPARSER_STATE_INT_PI, + /* '\x8e' */ HTMLPARSER_STATE_INT_PI, + /* '\x8f' */ HTMLPARSER_STATE_INT_PI, + /* '\x90' */ HTMLPARSER_STATE_INT_PI, + /* '\x91' */ HTMLPARSER_STATE_INT_PI, + /* '\x92' */ HTMLPARSER_STATE_INT_PI, + /* '\x93' */ HTMLPARSER_STATE_INT_PI, + /* '\x94' */ HTMLPARSER_STATE_INT_PI, + /* '\x95' */ HTMLPARSER_STATE_INT_PI, + /* '\x96' */ HTMLPARSER_STATE_INT_PI, + /* '\x97' */ HTMLPARSER_STATE_INT_PI, + /* '\x98' */ HTMLPARSER_STATE_INT_PI, + /* '\x99' */ HTMLPARSER_STATE_INT_PI, + /* '\x9a' */ HTMLPARSER_STATE_INT_PI, + /* '\x9b' */ HTMLPARSER_STATE_INT_PI, + /* '\x9c' */ HTMLPARSER_STATE_INT_PI, + /* '\x9d' */ HTMLPARSER_STATE_INT_PI, + /* '\x9e' */ HTMLPARSER_STATE_INT_PI, + /* '\x9f' */ HTMLPARSER_STATE_INT_PI, + /* '\xa0' */ HTMLPARSER_STATE_INT_PI, + /* '\xa1' */ HTMLPARSER_STATE_INT_PI, + /* '\xa2' */ HTMLPARSER_STATE_INT_PI, + /* '\xa3' */ HTMLPARSER_STATE_INT_PI, + /* '\xa4' */ HTMLPARSER_STATE_INT_PI, + /* '\xa5' */ HTMLPARSER_STATE_INT_PI, + /* '\xa6' */ HTMLPARSER_STATE_INT_PI, + /* '\xa7' */ HTMLPARSER_STATE_INT_PI, + /* '\xa8' */ HTMLPARSER_STATE_INT_PI, + /* '\xa9' */ HTMLPARSER_STATE_INT_PI, + /* '\xaa' */ HTMLPARSER_STATE_INT_PI, + /* '\xab' */ HTMLPARSER_STATE_INT_PI, + /* '\xac' */ HTMLPARSER_STATE_INT_PI, + /* '\xad' */ HTMLPARSER_STATE_INT_PI, + /* '\xae' */ HTMLPARSER_STATE_INT_PI, + /* '\xaf' */ HTMLPARSER_STATE_INT_PI, + /* '\xb0' */ HTMLPARSER_STATE_INT_PI, + /* '\xb1' */ HTMLPARSER_STATE_INT_PI, + /* '\xb2' */ HTMLPARSER_STATE_INT_PI, + /* '\xb3' */ HTMLPARSER_STATE_INT_PI, + /* '\xb4' */ HTMLPARSER_STATE_INT_PI, + /* '\xb5' */ HTMLPARSER_STATE_INT_PI, + /* '\xb6' */ HTMLPARSER_STATE_INT_PI, + /* '\xb7' */ HTMLPARSER_STATE_INT_PI, + /* '\xb8' */ HTMLPARSER_STATE_INT_PI, + /* '\xb9' */ HTMLPARSER_STATE_INT_PI, + /* '\xba' */ HTMLPARSER_STATE_INT_PI, + /* '\xbb' */ HTMLPARSER_STATE_INT_PI, + /* '\xbc' */ HTMLPARSER_STATE_INT_PI, + /* '\xbd' */ HTMLPARSER_STATE_INT_PI, + /* '\xbe' */ HTMLPARSER_STATE_INT_PI, + /* '\xbf' */ HTMLPARSER_STATE_INT_PI, + /* '\xc0' */ HTMLPARSER_STATE_INT_PI, + /* '\xc1' */ HTMLPARSER_STATE_INT_PI, + /* '\xc2' */ HTMLPARSER_STATE_INT_PI, + /* '\xc3' */ HTMLPARSER_STATE_INT_PI, + /* '\xc4' */ HTMLPARSER_STATE_INT_PI, + /* '\xc5' */ HTMLPARSER_STATE_INT_PI, + /* '\xc6' */ HTMLPARSER_STATE_INT_PI, + /* '\xc7' */ HTMLPARSER_STATE_INT_PI, + /* '\xc8' */ HTMLPARSER_STATE_INT_PI, + /* '\xc9' */ HTMLPARSER_STATE_INT_PI, + /* '\xca' */ HTMLPARSER_STATE_INT_PI, + /* '\xcb' */ HTMLPARSER_STATE_INT_PI, + /* '\xcc' */ HTMLPARSER_STATE_INT_PI, + /* '\xcd' */ HTMLPARSER_STATE_INT_PI, + /* '\xce' */ HTMLPARSER_STATE_INT_PI, + /* '\xcf' */ HTMLPARSER_STATE_INT_PI, + /* '\xd0' */ HTMLPARSER_STATE_INT_PI, + /* '\xd1' */ HTMLPARSER_STATE_INT_PI, + /* '\xd2' */ HTMLPARSER_STATE_INT_PI, + /* '\xd3' */ HTMLPARSER_STATE_INT_PI, + /* '\xd4' */ HTMLPARSER_STATE_INT_PI, + /* '\xd5' */ HTMLPARSER_STATE_INT_PI, + /* '\xd6' */ HTMLPARSER_STATE_INT_PI, + /* '\xd7' */ HTMLPARSER_STATE_INT_PI, + /* '\xd8' */ HTMLPARSER_STATE_INT_PI, + /* '\xd9' */ HTMLPARSER_STATE_INT_PI, + /* '\xda' */ HTMLPARSER_STATE_INT_PI, + /* '\xdb' */ HTMLPARSER_STATE_INT_PI, + /* '\xdc' */ HTMLPARSER_STATE_INT_PI, + /* '\xdd' */ HTMLPARSER_STATE_INT_PI, + /* '\xde' */ HTMLPARSER_STATE_INT_PI, + /* '\xdf' */ HTMLPARSER_STATE_INT_PI, + /* '\xe0' */ HTMLPARSER_STATE_INT_PI, + /* '\xe1' */ HTMLPARSER_STATE_INT_PI, + /* '\xe2' */ HTMLPARSER_STATE_INT_PI, + /* '\xe3' */ HTMLPARSER_STATE_INT_PI, + /* '\xe4' */ HTMLPARSER_STATE_INT_PI, + /* '\xe5' */ HTMLPARSER_STATE_INT_PI, + /* '\xe6' */ HTMLPARSER_STATE_INT_PI, + /* '\xe7' */ HTMLPARSER_STATE_INT_PI, + /* '\xe8' */ HTMLPARSER_STATE_INT_PI, + /* '\xe9' */ HTMLPARSER_STATE_INT_PI, + /* '\xea' */ HTMLPARSER_STATE_INT_PI, + /* '\xeb' */ HTMLPARSER_STATE_INT_PI, + /* '\xec' */ HTMLPARSER_STATE_INT_PI, + /* '\xed' */ HTMLPARSER_STATE_INT_PI, + /* '\xee' */ HTMLPARSER_STATE_INT_PI, + /* '\xef' */ HTMLPARSER_STATE_INT_PI, + /* '\xf0' */ HTMLPARSER_STATE_INT_PI, + /* '\xf1' */ HTMLPARSER_STATE_INT_PI, + /* '\xf2' */ HTMLPARSER_STATE_INT_PI, + /* '\xf3' */ HTMLPARSER_STATE_INT_PI, + /* '\xf4' */ HTMLPARSER_STATE_INT_PI, + /* '\xf5' */ HTMLPARSER_STATE_INT_PI, + /* '\xf6' */ HTMLPARSER_STATE_INT_PI, + /* '\xf7' */ HTMLPARSER_STATE_INT_PI, + /* '\xf8' */ HTMLPARSER_STATE_INT_PI, + /* '\xf9' */ HTMLPARSER_STATE_INT_PI, + /* '\xfa' */ HTMLPARSER_STATE_INT_PI, + /* '\xfb' */ HTMLPARSER_STATE_INT_PI, + /* '\xfc' */ HTMLPARSER_STATE_INT_PI, + /* '\xfd' */ HTMLPARSER_STATE_INT_PI, + /* '\xfe' */ HTMLPARSER_STATE_INT_PI +}; + +static const int htmlparser_transition_row_pi_may_end[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_PI, + /* '\x01' */ HTMLPARSER_STATE_INT_PI, + /* '\x02' */ HTMLPARSER_STATE_INT_PI, + /* '\x03' */ HTMLPARSER_STATE_INT_PI, + /* '\x04' */ HTMLPARSER_STATE_INT_PI, + /* '\x05' */ HTMLPARSER_STATE_INT_PI, + /* '\x06' */ HTMLPARSER_STATE_INT_PI, + /* '\x07' */ HTMLPARSER_STATE_INT_PI, + /* '\x08' */ HTMLPARSER_STATE_INT_PI, + /* '\t' */ HTMLPARSER_STATE_INT_PI, + /* '\n' */ HTMLPARSER_STATE_INT_PI, + /* '\x0b' */ HTMLPARSER_STATE_INT_PI, + /* '\x0c' */ HTMLPARSER_STATE_INT_PI, + /* '\r' */ HTMLPARSER_STATE_INT_PI, + /* '\x0e' */ HTMLPARSER_STATE_INT_PI, + /* '\x0f' */ HTMLPARSER_STATE_INT_PI, + /* '\x10' */ HTMLPARSER_STATE_INT_PI, + /* '\x11' */ HTMLPARSER_STATE_INT_PI, + /* '\x12' */ HTMLPARSER_STATE_INT_PI, + /* '\x13' */ HTMLPARSER_STATE_INT_PI, + /* '\x14' */ HTMLPARSER_STATE_INT_PI, + /* '\x15' */ HTMLPARSER_STATE_INT_PI, + /* '\x16' */ HTMLPARSER_STATE_INT_PI, + /* '\x17' */ HTMLPARSER_STATE_INT_PI, + /* '\x18' */ HTMLPARSER_STATE_INT_PI, + /* '\x19' */ HTMLPARSER_STATE_INT_PI, + /* '\x1a' */ HTMLPARSER_STATE_INT_PI, + /* '\x1b' */ HTMLPARSER_STATE_INT_PI, + /* '\x1c' */ HTMLPARSER_STATE_INT_PI, + /* '\x1d' */ HTMLPARSER_STATE_INT_PI, + /* '\x1e' */ HTMLPARSER_STATE_INT_PI, + /* '\x1f' */ HTMLPARSER_STATE_INT_PI, + /* ' ' */ HTMLPARSER_STATE_INT_PI, + /* '!' */ HTMLPARSER_STATE_INT_PI, + /* '"' */ HTMLPARSER_STATE_INT_PI, + /* '#' */ HTMLPARSER_STATE_INT_PI, + /* '$' */ HTMLPARSER_STATE_INT_PI, + /* '%' */ HTMLPARSER_STATE_INT_PI, + /* '&' */ HTMLPARSER_STATE_INT_PI, + /* "'" */ HTMLPARSER_STATE_INT_PI, + /* '(' */ HTMLPARSER_STATE_INT_PI, + /* ')' */ HTMLPARSER_STATE_INT_PI, + /* '*' */ HTMLPARSER_STATE_INT_PI, + /* '+' */ HTMLPARSER_STATE_INT_PI, + /* ',' */ HTMLPARSER_STATE_INT_PI, + /* '-' */ HTMLPARSER_STATE_INT_PI, + /* '.' */ HTMLPARSER_STATE_INT_PI, + /* '/' */ HTMLPARSER_STATE_INT_PI, + /* '0' */ HTMLPARSER_STATE_INT_PI, + /* '1' */ HTMLPARSER_STATE_INT_PI, + /* '2' */ HTMLPARSER_STATE_INT_PI, + /* '3' */ HTMLPARSER_STATE_INT_PI, + /* '4' */ HTMLPARSER_STATE_INT_PI, + /* '5' */ HTMLPARSER_STATE_INT_PI, + /* '6' */ HTMLPARSER_STATE_INT_PI, + /* '7' */ HTMLPARSER_STATE_INT_PI, + /* '8' */ HTMLPARSER_STATE_INT_PI, + /* '9' */ HTMLPARSER_STATE_INT_PI, + /* ':' */ HTMLPARSER_STATE_INT_PI, + /* ';' */ HTMLPARSER_STATE_INT_PI, + /* '<' */ HTMLPARSER_STATE_INT_PI, + /* '=' */ HTMLPARSER_STATE_INT_PI, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_PI, + /* '@' */ HTMLPARSER_STATE_INT_PI, + /* 'A' */ HTMLPARSER_STATE_INT_PI, + /* 'B' */ HTMLPARSER_STATE_INT_PI, + /* 'C' */ HTMLPARSER_STATE_INT_PI, + /* 'D' */ HTMLPARSER_STATE_INT_PI, + /* 'E' */ HTMLPARSER_STATE_INT_PI, + /* 'F' */ HTMLPARSER_STATE_INT_PI, + /* 'G' */ HTMLPARSER_STATE_INT_PI, + /* 'H' */ HTMLPARSER_STATE_INT_PI, + /* 'I' */ HTMLPARSER_STATE_INT_PI, + /* 'J' */ HTMLPARSER_STATE_INT_PI, + /* 'K' */ HTMLPARSER_STATE_INT_PI, + /* 'L' */ HTMLPARSER_STATE_INT_PI, + /* 'M' */ HTMLPARSER_STATE_INT_PI, + /* 'N' */ HTMLPARSER_STATE_INT_PI, + /* 'O' */ HTMLPARSER_STATE_INT_PI, + /* 'P' */ HTMLPARSER_STATE_INT_PI, + /* 'Q' */ HTMLPARSER_STATE_INT_PI, + /* 'R' */ HTMLPARSER_STATE_INT_PI, + /* 'S' */ HTMLPARSER_STATE_INT_PI, + /* 'T' */ HTMLPARSER_STATE_INT_PI, + /* 'U' */ HTMLPARSER_STATE_INT_PI, + /* 'V' */ HTMLPARSER_STATE_INT_PI, + /* 'W' */ HTMLPARSER_STATE_INT_PI, + /* 'X' */ HTMLPARSER_STATE_INT_PI, + /* 'Y' */ HTMLPARSER_STATE_INT_PI, + /* 'Z' */ HTMLPARSER_STATE_INT_PI, + /* '[' */ HTMLPARSER_STATE_INT_PI, + /* '\\' */ HTMLPARSER_STATE_INT_PI, + /* ']' */ HTMLPARSER_STATE_INT_PI, + /* '^' */ HTMLPARSER_STATE_INT_PI, + /* '_' */ HTMLPARSER_STATE_INT_PI, + /* '`' */ HTMLPARSER_STATE_INT_PI, + /* 'a' */ HTMLPARSER_STATE_INT_PI, + /* 'b' */ HTMLPARSER_STATE_INT_PI, + /* 'c' */ HTMLPARSER_STATE_INT_PI, + /* 'd' */ HTMLPARSER_STATE_INT_PI, + /* 'e' */ HTMLPARSER_STATE_INT_PI, + /* 'f' */ HTMLPARSER_STATE_INT_PI, + /* 'g' */ HTMLPARSER_STATE_INT_PI, + /* 'h' */ HTMLPARSER_STATE_INT_PI, + /* 'i' */ HTMLPARSER_STATE_INT_PI, + /* 'j' */ HTMLPARSER_STATE_INT_PI, + /* 'k' */ HTMLPARSER_STATE_INT_PI, + /* 'l' */ HTMLPARSER_STATE_INT_PI, + /* 'm' */ HTMLPARSER_STATE_INT_PI, + /* 'n' */ HTMLPARSER_STATE_INT_PI, + /* 'o' */ HTMLPARSER_STATE_INT_PI, + /* 'p' */ HTMLPARSER_STATE_INT_PI, + /* 'q' */ HTMLPARSER_STATE_INT_PI, + /* 'r' */ HTMLPARSER_STATE_INT_PI, + /* 's' */ HTMLPARSER_STATE_INT_PI, + /* 't' */ HTMLPARSER_STATE_INT_PI, + /* 'u' */ HTMLPARSER_STATE_INT_PI, + /* 'v' */ HTMLPARSER_STATE_INT_PI, + /* 'w' */ HTMLPARSER_STATE_INT_PI, + /* 'x' */ HTMLPARSER_STATE_INT_PI, + /* 'y' */ HTMLPARSER_STATE_INT_PI, + /* 'z' */ HTMLPARSER_STATE_INT_PI, + /* '{' */ HTMLPARSER_STATE_INT_PI, + /* '|' */ HTMLPARSER_STATE_INT_PI, + /* '}' */ HTMLPARSER_STATE_INT_PI, + /* '~' */ HTMLPARSER_STATE_INT_PI, + /* '\x7f' */ HTMLPARSER_STATE_INT_PI, + /* '\x80' */ HTMLPARSER_STATE_INT_PI, + /* '\x81' */ HTMLPARSER_STATE_INT_PI, + /* '\x82' */ HTMLPARSER_STATE_INT_PI, + /* '\x83' */ HTMLPARSER_STATE_INT_PI, + /* '\x84' */ HTMLPARSER_STATE_INT_PI, + /* '\x85' */ HTMLPARSER_STATE_INT_PI, + /* '\x86' */ HTMLPARSER_STATE_INT_PI, + /* '\x87' */ HTMLPARSER_STATE_INT_PI, + /* '\x88' */ HTMLPARSER_STATE_INT_PI, + /* '\x89' */ HTMLPARSER_STATE_INT_PI, + /* '\x8a' */ HTMLPARSER_STATE_INT_PI, + /* '\x8b' */ HTMLPARSER_STATE_INT_PI, + /* '\x8c' */ HTMLPARSER_STATE_INT_PI, + /* '\x8d' */ HTMLPARSER_STATE_INT_PI, + /* '\x8e' */ HTMLPARSER_STATE_INT_PI, + /* '\x8f' */ HTMLPARSER_STATE_INT_PI, + /* '\x90' */ HTMLPARSER_STATE_INT_PI, + /* '\x91' */ HTMLPARSER_STATE_INT_PI, + /* '\x92' */ HTMLPARSER_STATE_INT_PI, + /* '\x93' */ HTMLPARSER_STATE_INT_PI, + /* '\x94' */ HTMLPARSER_STATE_INT_PI, + /* '\x95' */ HTMLPARSER_STATE_INT_PI, + /* '\x96' */ HTMLPARSER_STATE_INT_PI, + /* '\x97' */ HTMLPARSER_STATE_INT_PI, + /* '\x98' */ HTMLPARSER_STATE_INT_PI, + /* '\x99' */ HTMLPARSER_STATE_INT_PI, + /* '\x9a' */ HTMLPARSER_STATE_INT_PI, + /* '\x9b' */ HTMLPARSER_STATE_INT_PI, + /* '\x9c' */ HTMLPARSER_STATE_INT_PI, + /* '\x9d' */ HTMLPARSER_STATE_INT_PI, + /* '\x9e' */ HTMLPARSER_STATE_INT_PI, + /* '\x9f' */ HTMLPARSER_STATE_INT_PI, + /* '\xa0' */ HTMLPARSER_STATE_INT_PI, + /* '\xa1' */ HTMLPARSER_STATE_INT_PI, + /* '\xa2' */ HTMLPARSER_STATE_INT_PI, + /* '\xa3' */ HTMLPARSER_STATE_INT_PI, + /* '\xa4' */ HTMLPARSER_STATE_INT_PI, + /* '\xa5' */ HTMLPARSER_STATE_INT_PI, + /* '\xa6' */ HTMLPARSER_STATE_INT_PI, + /* '\xa7' */ HTMLPARSER_STATE_INT_PI, + /* '\xa8' */ HTMLPARSER_STATE_INT_PI, + /* '\xa9' */ HTMLPARSER_STATE_INT_PI, + /* '\xaa' */ HTMLPARSER_STATE_INT_PI, + /* '\xab' */ HTMLPARSER_STATE_INT_PI, + /* '\xac' */ HTMLPARSER_STATE_INT_PI, + /* '\xad' */ HTMLPARSER_STATE_INT_PI, + /* '\xae' */ HTMLPARSER_STATE_INT_PI, + /* '\xaf' */ HTMLPARSER_STATE_INT_PI, + /* '\xb0' */ HTMLPARSER_STATE_INT_PI, + /* '\xb1' */ HTMLPARSER_STATE_INT_PI, + /* '\xb2' */ HTMLPARSER_STATE_INT_PI, + /* '\xb3' */ HTMLPARSER_STATE_INT_PI, + /* '\xb4' */ HTMLPARSER_STATE_INT_PI, + /* '\xb5' */ HTMLPARSER_STATE_INT_PI, + /* '\xb6' */ HTMLPARSER_STATE_INT_PI, + /* '\xb7' */ HTMLPARSER_STATE_INT_PI, + /* '\xb8' */ HTMLPARSER_STATE_INT_PI, + /* '\xb9' */ HTMLPARSER_STATE_INT_PI, + /* '\xba' */ HTMLPARSER_STATE_INT_PI, + /* '\xbb' */ HTMLPARSER_STATE_INT_PI, + /* '\xbc' */ HTMLPARSER_STATE_INT_PI, + /* '\xbd' */ HTMLPARSER_STATE_INT_PI, + /* '\xbe' */ HTMLPARSER_STATE_INT_PI, + /* '\xbf' */ HTMLPARSER_STATE_INT_PI, + /* '\xc0' */ HTMLPARSER_STATE_INT_PI, + /* '\xc1' */ HTMLPARSER_STATE_INT_PI, + /* '\xc2' */ HTMLPARSER_STATE_INT_PI, + /* '\xc3' */ HTMLPARSER_STATE_INT_PI, + /* '\xc4' */ HTMLPARSER_STATE_INT_PI, + /* '\xc5' */ HTMLPARSER_STATE_INT_PI, + /* '\xc6' */ HTMLPARSER_STATE_INT_PI, + /* '\xc7' */ HTMLPARSER_STATE_INT_PI, + /* '\xc8' */ HTMLPARSER_STATE_INT_PI, + /* '\xc9' */ HTMLPARSER_STATE_INT_PI, + /* '\xca' */ HTMLPARSER_STATE_INT_PI, + /* '\xcb' */ HTMLPARSER_STATE_INT_PI, + /* '\xcc' */ HTMLPARSER_STATE_INT_PI, + /* '\xcd' */ HTMLPARSER_STATE_INT_PI, + /* '\xce' */ HTMLPARSER_STATE_INT_PI, + /* '\xcf' */ HTMLPARSER_STATE_INT_PI, + /* '\xd0' */ HTMLPARSER_STATE_INT_PI, + /* '\xd1' */ HTMLPARSER_STATE_INT_PI, + /* '\xd2' */ HTMLPARSER_STATE_INT_PI, + /* '\xd3' */ HTMLPARSER_STATE_INT_PI, + /* '\xd4' */ HTMLPARSER_STATE_INT_PI, + /* '\xd5' */ HTMLPARSER_STATE_INT_PI, + /* '\xd6' */ HTMLPARSER_STATE_INT_PI, + /* '\xd7' */ HTMLPARSER_STATE_INT_PI, + /* '\xd8' */ HTMLPARSER_STATE_INT_PI, + /* '\xd9' */ HTMLPARSER_STATE_INT_PI, + /* '\xda' */ HTMLPARSER_STATE_INT_PI, + /* '\xdb' */ HTMLPARSER_STATE_INT_PI, + /* '\xdc' */ HTMLPARSER_STATE_INT_PI, + /* '\xdd' */ HTMLPARSER_STATE_INT_PI, + /* '\xde' */ HTMLPARSER_STATE_INT_PI, + /* '\xdf' */ HTMLPARSER_STATE_INT_PI, + /* '\xe0' */ HTMLPARSER_STATE_INT_PI, + /* '\xe1' */ HTMLPARSER_STATE_INT_PI, + /* '\xe2' */ HTMLPARSER_STATE_INT_PI, + /* '\xe3' */ HTMLPARSER_STATE_INT_PI, + /* '\xe4' */ HTMLPARSER_STATE_INT_PI, + /* '\xe5' */ HTMLPARSER_STATE_INT_PI, + /* '\xe6' */ HTMLPARSER_STATE_INT_PI, + /* '\xe7' */ HTMLPARSER_STATE_INT_PI, + /* '\xe8' */ HTMLPARSER_STATE_INT_PI, + /* '\xe9' */ HTMLPARSER_STATE_INT_PI, + /* '\xea' */ HTMLPARSER_STATE_INT_PI, + /* '\xeb' */ HTMLPARSER_STATE_INT_PI, + /* '\xec' */ HTMLPARSER_STATE_INT_PI, + /* '\xed' */ HTMLPARSER_STATE_INT_PI, + /* '\xee' */ HTMLPARSER_STATE_INT_PI, + /* '\xef' */ HTMLPARSER_STATE_INT_PI, + /* '\xf0' */ HTMLPARSER_STATE_INT_PI, + /* '\xf1' */ HTMLPARSER_STATE_INT_PI, + /* '\xf2' */ HTMLPARSER_STATE_INT_PI, + /* '\xf3' */ HTMLPARSER_STATE_INT_PI, + /* '\xf4' */ HTMLPARSER_STATE_INT_PI, + /* '\xf5' */ HTMLPARSER_STATE_INT_PI, + /* '\xf6' */ HTMLPARSER_STATE_INT_PI, + /* '\xf7' */ HTMLPARSER_STATE_INT_PI, + /* '\xf8' */ HTMLPARSER_STATE_INT_PI, + /* '\xf9' */ HTMLPARSER_STATE_INT_PI, + /* '\xfa' */ HTMLPARSER_STATE_INT_PI, + /* '\xfb' */ HTMLPARSER_STATE_INT_PI, + /* '\xfc' */ HTMLPARSER_STATE_INT_PI, + /* '\xfd' */ HTMLPARSER_STATE_INT_PI, + /* '\xfe' */ HTMLPARSER_STATE_INT_PI +}; + +static const int htmlparser_transition_row_tag_space[] = { + /* '\x00' */ STATEMACHINE_ERROR, + /* '\x01' */ STATEMACHINE_ERROR, + /* '\x02' */ STATEMACHINE_ERROR, + /* '\x03' */ STATEMACHINE_ERROR, + /* '\x04' */ STATEMACHINE_ERROR, + /* '\x05' */ STATEMACHINE_ERROR, + /* '\x06' */ STATEMACHINE_ERROR, + /* '\x07' */ STATEMACHINE_ERROR, + /* '\x08' */ STATEMACHINE_ERROR, + /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0b' */ STATEMACHINE_ERROR, + /* '\x0c' */ STATEMACHINE_ERROR, + /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0e' */ STATEMACHINE_ERROR, + /* '\x0f' */ STATEMACHINE_ERROR, + /* '\x10' */ STATEMACHINE_ERROR, + /* '\x11' */ STATEMACHINE_ERROR, + /* '\x12' */ STATEMACHINE_ERROR, + /* '\x13' */ STATEMACHINE_ERROR, + /* '\x14' */ STATEMACHINE_ERROR, + /* '\x15' */ STATEMACHINE_ERROR, + /* '\x16' */ STATEMACHINE_ERROR, + /* '\x17' */ STATEMACHINE_ERROR, + /* '\x18' */ STATEMACHINE_ERROR, + /* '\x19' */ STATEMACHINE_ERROR, + /* '\x1a' */ STATEMACHINE_ERROR, + /* '\x1b' */ STATEMACHINE_ERROR, + /* '\x1c' */ STATEMACHINE_ERROR, + /* '\x1d' */ STATEMACHINE_ERROR, + /* '\x1e' */ STATEMACHINE_ERROR, + /* '\x1f' */ STATEMACHINE_ERROR, + /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '!' */ STATEMACHINE_ERROR, + /* '"' */ STATEMACHINE_ERROR, + /* '#' */ STATEMACHINE_ERROR, + /* '$' */ STATEMACHINE_ERROR, + /* '%' */ STATEMACHINE_ERROR, + /* '&' */ STATEMACHINE_ERROR, + /* "'" */ STATEMACHINE_ERROR, + /* '(' */ STATEMACHINE_ERROR, + /* ')' */ STATEMACHINE_ERROR, + /* '*' */ STATEMACHINE_ERROR, + /* '+' */ STATEMACHINE_ERROR, + /* ',' */ STATEMACHINE_ERROR, + /* '-' */ HTMLPARSER_STATE_INT_ATTR, + /* '.' */ STATEMACHINE_ERROR, + /* '/' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '0' */ HTMLPARSER_STATE_INT_ATTR, + /* '1' */ HTMLPARSER_STATE_INT_ATTR, + /* '2' */ HTMLPARSER_STATE_INT_ATTR, + /* '3' */ HTMLPARSER_STATE_INT_ATTR, + /* '4' */ HTMLPARSER_STATE_INT_ATTR, + /* '5' */ HTMLPARSER_STATE_INT_ATTR, + /* '6' */ HTMLPARSER_STATE_INT_ATTR, + /* '7' */ HTMLPARSER_STATE_INT_ATTR, + /* '8' */ HTMLPARSER_STATE_INT_ATTR, + /* '9' */ HTMLPARSER_STATE_INT_ATTR, + /* ':' */ HTMLPARSER_STATE_INT_ATTR, + /* ';' */ STATEMACHINE_ERROR, + /* '<' */ STATEMACHINE_ERROR, + /* '=' */ STATEMACHINE_ERROR, + /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE, + /* '?' */ STATEMACHINE_ERROR, + /* '@' */ STATEMACHINE_ERROR, + /* 'A' */ HTMLPARSER_STATE_INT_ATTR, + /* 'B' */ HTMLPARSER_STATE_INT_ATTR, + /* 'C' */ HTMLPARSER_STATE_INT_ATTR, + /* 'D' */ HTMLPARSER_STATE_INT_ATTR, + /* 'E' */ HTMLPARSER_STATE_INT_ATTR, + /* 'F' */ HTMLPARSER_STATE_INT_ATTR, + /* 'G' */ HTMLPARSER_STATE_INT_ATTR, + /* 'H' */ HTMLPARSER_STATE_INT_ATTR, + /* 'I' */ HTMLPARSER_STATE_INT_ATTR, + /* 'J' */ HTMLPARSER_STATE_INT_ATTR, + /* 'K' */ HTMLPARSER_STATE_INT_ATTR, + /* 'L' */ HTMLPARSER_STATE_INT_ATTR, + /* 'M' */ HTMLPARSER_STATE_INT_ATTR, + /* 'N' */ HTMLPARSER_STATE_INT_ATTR, + /* 'O' */ HTMLPARSER_STATE_INT_ATTR, + /* 'P' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Q' */ HTMLPARSER_STATE_INT_ATTR, + /* 'R' */ HTMLPARSER_STATE_INT_ATTR, + /* 'S' */ HTMLPARSER_STATE_INT_ATTR, + /* 'T' */ HTMLPARSER_STATE_INT_ATTR, + /* 'U' */ HTMLPARSER_STATE_INT_ATTR, + /* 'V' */ HTMLPARSER_STATE_INT_ATTR, + /* 'W' */ HTMLPARSER_STATE_INT_ATTR, + /* 'X' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Y' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Z' */ HTMLPARSER_STATE_INT_ATTR, + /* '[' */ STATEMACHINE_ERROR, + /* '\\' */ STATEMACHINE_ERROR, + /* ']' */ STATEMACHINE_ERROR, + /* '^' */ STATEMACHINE_ERROR, + /* '_' */ HTMLPARSER_STATE_INT_ATTR, + /* '`' */ STATEMACHINE_ERROR, + /* 'a' */ HTMLPARSER_STATE_INT_ATTR, + /* 'b' */ HTMLPARSER_STATE_INT_ATTR, + /* 'c' */ HTMLPARSER_STATE_INT_ATTR, + /* 'd' */ HTMLPARSER_STATE_INT_ATTR, + /* 'e' */ HTMLPARSER_STATE_INT_ATTR, + /* 'f' */ HTMLPARSER_STATE_INT_ATTR, + /* 'g' */ HTMLPARSER_STATE_INT_ATTR, + /* 'h' */ HTMLPARSER_STATE_INT_ATTR, + /* 'i' */ HTMLPARSER_STATE_INT_ATTR, + /* 'j' */ HTMLPARSER_STATE_INT_ATTR, + /* 'k' */ HTMLPARSER_STATE_INT_ATTR, + /* 'l' */ HTMLPARSER_STATE_INT_ATTR, + /* 'm' */ HTMLPARSER_STATE_INT_ATTR, + /* 'n' */ HTMLPARSER_STATE_INT_ATTR, + /* 'o' */ HTMLPARSER_STATE_INT_ATTR, + /* 'p' */ HTMLPARSER_STATE_INT_ATTR, + /* 'q' */ HTMLPARSER_STATE_INT_ATTR, + /* 'r' */ HTMLPARSER_STATE_INT_ATTR, + /* 's' */ HTMLPARSER_STATE_INT_ATTR, + /* 't' */ HTMLPARSER_STATE_INT_ATTR, + /* 'u' */ HTMLPARSER_STATE_INT_ATTR, + /* 'v' */ HTMLPARSER_STATE_INT_ATTR, + /* 'w' */ HTMLPARSER_STATE_INT_ATTR, + /* 'x' */ HTMLPARSER_STATE_INT_ATTR, + /* 'y' */ HTMLPARSER_STATE_INT_ATTR, + /* 'z' */ HTMLPARSER_STATE_INT_ATTR, + /* '{' */ STATEMACHINE_ERROR, + /* '|' */ STATEMACHINE_ERROR, + /* '}' */ STATEMACHINE_ERROR, + /* '~' */ STATEMACHINE_ERROR, + /* '\x7f' */ STATEMACHINE_ERROR, + /* '\x80' */ STATEMACHINE_ERROR, + /* '\x81' */ STATEMACHINE_ERROR, + /* '\x82' */ STATEMACHINE_ERROR, + /* '\x83' */ STATEMACHINE_ERROR, + /* '\x84' */ STATEMACHINE_ERROR, + /* '\x85' */ STATEMACHINE_ERROR, + /* '\x86' */ STATEMACHINE_ERROR, + /* '\x87' */ STATEMACHINE_ERROR, + /* '\x88' */ STATEMACHINE_ERROR, + /* '\x89' */ STATEMACHINE_ERROR, + /* '\x8a' */ STATEMACHINE_ERROR, + /* '\x8b' */ STATEMACHINE_ERROR, + /* '\x8c' */ STATEMACHINE_ERROR, + /* '\x8d' */ STATEMACHINE_ERROR, + /* '\x8e' */ STATEMACHINE_ERROR, + /* '\x8f' */ STATEMACHINE_ERROR, + /* '\x90' */ STATEMACHINE_ERROR, + /* '\x91' */ STATEMACHINE_ERROR, + /* '\x92' */ STATEMACHINE_ERROR, + /* '\x93' */ STATEMACHINE_ERROR, + /* '\x94' */ STATEMACHINE_ERROR, + /* '\x95' */ STATEMACHINE_ERROR, + /* '\x96' */ STATEMACHINE_ERROR, + /* '\x97' */ STATEMACHINE_ERROR, + /* '\x98' */ STATEMACHINE_ERROR, + /* '\x99' */ STATEMACHINE_ERROR, + /* '\x9a' */ STATEMACHINE_ERROR, + /* '\x9b' */ STATEMACHINE_ERROR, + /* '\x9c' */ STATEMACHINE_ERROR, + /* '\x9d' */ STATEMACHINE_ERROR, + /* '\x9e' */ STATEMACHINE_ERROR, + /* '\x9f' */ STATEMACHINE_ERROR, + /* '\xa0' */ STATEMACHINE_ERROR, + /* '\xa1' */ STATEMACHINE_ERROR, + /* '\xa2' */ STATEMACHINE_ERROR, + /* '\xa3' */ STATEMACHINE_ERROR, + /* '\xa4' */ STATEMACHINE_ERROR, + /* '\xa5' */ STATEMACHINE_ERROR, + /* '\xa6' */ STATEMACHINE_ERROR, + /* '\xa7' */ STATEMACHINE_ERROR, + /* '\xa8' */ STATEMACHINE_ERROR, + /* '\xa9' */ STATEMACHINE_ERROR, + /* '\xaa' */ STATEMACHINE_ERROR, + /* '\xab' */ STATEMACHINE_ERROR, + /* '\xac' */ STATEMACHINE_ERROR, + /* '\xad' */ STATEMACHINE_ERROR, + /* '\xae' */ STATEMACHINE_ERROR, + /* '\xaf' */ STATEMACHINE_ERROR, + /* '\xb0' */ STATEMACHINE_ERROR, + /* '\xb1' */ STATEMACHINE_ERROR, + /* '\xb2' */ STATEMACHINE_ERROR, + /* '\xb3' */ STATEMACHINE_ERROR, + /* '\xb4' */ STATEMACHINE_ERROR, + /* '\xb5' */ STATEMACHINE_ERROR, + /* '\xb6' */ STATEMACHINE_ERROR, + /* '\xb7' */ STATEMACHINE_ERROR, + /* '\xb8' */ STATEMACHINE_ERROR, + /* '\xb9' */ STATEMACHINE_ERROR, + /* '\xba' */ STATEMACHINE_ERROR, + /* '\xbb' */ STATEMACHINE_ERROR, + /* '\xbc' */ STATEMACHINE_ERROR, + /* '\xbd' */ STATEMACHINE_ERROR, + /* '\xbe' */ STATEMACHINE_ERROR, + /* '\xbf' */ STATEMACHINE_ERROR, + /* '\xc0' */ STATEMACHINE_ERROR, + /* '\xc1' */ STATEMACHINE_ERROR, + /* '\xc2' */ STATEMACHINE_ERROR, + /* '\xc3' */ STATEMACHINE_ERROR, + /* '\xc4' */ STATEMACHINE_ERROR, + /* '\xc5' */ STATEMACHINE_ERROR, + /* '\xc6' */ STATEMACHINE_ERROR, + /* '\xc7' */ STATEMACHINE_ERROR, + /* '\xc8' */ STATEMACHINE_ERROR, + /* '\xc9' */ STATEMACHINE_ERROR, + /* '\xca' */ STATEMACHINE_ERROR, + /* '\xcb' */ STATEMACHINE_ERROR, + /* '\xcc' */ STATEMACHINE_ERROR, + /* '\xcd' */ STATEMACHINE_ERROR, + /* '\xce' */ STATEMACHINE_ERROR, + /* '\xcf' */ STATEMACHINE_ERROR, + /* '\xd0' */ STATEMACHINE_ERROR, + /* '\xd1' */ STATEMACHINE_ERROR, + /* '\xd2' */ STATEMACHINE_ERROR, + /* '\xd3' */ STATEMACHINE_ERROR, + /* '\xd4' */ STATEMACHINE_ERROR, + /* '\xd5' */ STATEMACHINE_ERROR, + /* '\xd6' */ STATEMACHINE_ERROR, + /* '\xd7' */ STATEMACHINE_ERROR, + /* '\xd8' */ STATEMACHINE_ERROR, + /* '\xd9' */ STATEMACHINE_ERROR, + /* '\xda' */ STATEMACHINE_ERROR, + /* '\xdb' */ STATEMACHINE_ERROR, + /* '\xdc' */ STATEMACHINE_ERROR, + /* '\xdd' */ STATEMACHINE_ERROR, + /* '\xde' */ STATEMACHINE_ERROR, + /* '\xdf' */ STATEMACHINE_ERROR, + /* '\xe0' */ STATEMACHINE_ERROR, + /* '\xe1' */ STATEMACHINE_ERROR, + /* '\xe2' */ STATEMACHINE_ERROR, + /* '\xe3' */ STATEMACHINE_ERROR, + /* '\xe4' */ STATEMACHINE_ERROR, + /* '\xe5' */ STATEMACHINE_ERROR, + /* '\xe6' */ STATEMACHINE_ERROR, + /* '\xe7' */ STATEMACHINE_ERROR, + /* '\xe8' */ STATEMACHINE_ERROR, + /* '\xe9' */ STATEMACHINE_ERROR, + /* '\xea' */ STATEMACHINE_ERROR, + /* '\xeb' */ STATEMACHINE_ERROR, + /* '\xec' */ STATEMACHINE_ERROR, + /* '\xed' */ STATEMACHINE_ERROR, + /* '\xee' */ STATEMACHINE_ERROR, + /* '\xef' */ STATEMACHINE_ERROR, + /* '\xf0' */ STATEMACHINE_ERROR, + /* '\xf1' */ STATEMACHINE_ERROR, + /* '\xf2' */ STATEMACHINE_ERROR, + /* '\xf3' */ STATEMACHINE_ERROR, + /* '\xf4' */ STATEMACHINE_ERROR, + /* '\xf5' */ STATEMACHINE_ERROR, + /* '\xf6' */ STATEMACHINE_ERROR, + /* '\xf7' */ STATEMACHINE_ERROR, + /* '\xf8' */ STATEMACHINE_ERROR, + /* '\xf9' */ STATEMACHINE_ERROR, + /* '\xfa' */ STATEMACHINE_ERROR, + /* '\xfb' */ STATEMACHINE_ERROR, + /* '\xfc' */ STATEMACHINE_ERROR, + /* '\xfd' */ STATEMACHINE_ERROR, + /* '\xfe' */ STATEMACHINE_ERROR +}; + +static const int htmlparser_transition_row_tag_close[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_TEXT, + /* '.' */ HTMLPARSER_STATE_INT_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_TAG_START, + /* '=' */ HTMLPARSER_STATE_INT_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_TEXT +}; + +static const int htmlparser_transition_row_attr[] = { + /* '\x00' */ STATEMACHINE_ERROR, + /* '\x01' */ STATEMACHINE_ERROR, + /* '\x02' */ STATEMACHINE_ERROR, + /* '\x03' */ STATEMACHINE_ERROR, + /* '\x04' */ STATEMACHINE_ERROR, + /* '\x05' */ STATEMACHINE_ERROR, + /* '\x06' */ STATEMACHINE_ERROR, + /* '\x07' */ STATEMACHINE_ERROR, + /* '\x08' */ STATEMACHINE_ERROR, + /* '\t' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '\n' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '\x0b' */ STATEMACHINE_ERROR, + /* '\x0c' */ STATEMACHINE_ERROR, + /* '\r' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '\x0e' */ STATEMACHINE_ERROR, + /* '\x0f' */ STATEMACHINE_ERROR, + /* '\x10' */ STATEMACHINE_ERROR, + /* '\x11' */ STATEMACHINE_ERROR, + /* '\x12' */ STATEMACHINE_ERROR, + /* '\x13' */ STATEMACHINE_ERROR, + /* '\x14' */ STATEMACHINE_ERROR, + /* '\x15' */ STATEMACHINE_ERROR, + /* '\x16' */ STATEMACHINE_ERROR, + /* '\x17' */ STATEMACHINE_ERROR, + /* '\x18' */ STATEMACHINE_ERROR, + /* '\x19' */ STATEMACHINE_ERROR, + /* '\x1a' */ STATEMACHINE_ERROR, + /* '\x1b' */ STATEMACHINE_ERROR, + /* '\x1c' */ STATEMACHINE_ERROR, + /* '\x1d' */ STATEMACHINE_ERROR, + /* '\x1e' */ STATEMACHINE_ERROR, + /* '\x1f' */ STATEMACHINE_ERROR, + /* ' ' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '!' */ STATEMACHINE_ERROR, + /* '"' */ STATEMACHINE_ERROR, + /* '#' */ STATEMACHINE_ERROR, + /* '$' */ STATEMACHINE_ERROR, + /* '%' */ STATEMACHINE_ERROR, + /* '&' */ STATEMACHINE_ERROR, + /* "'" */ STATEMACHINE_ERROR, + /* '(' */ STATEMACHINE_ERROR, + /* ')' */ STATEMACHINE_ERROR, + /* '*' */ STATEMACHINE_ERROR, + /* '+' */ STATEMACHINE_ERROR, + /* ',' */ STATEMACHINE_ERROR, + /* '-' */ HTMLPARSER_STATE_INT_ATTR, + /* '.' */ STATEMACHINE_ERROR, + /* '/' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '0' */ HTMLPARSER_STATE_INT_ATTR, + /* '1' */ HTMLPARSER_STATE_INT_ATTR, + /* '2' */ HTMLPARSER_STATE_INT_ATTR, + /* '3' */ HTMLPARSER_STATE_INT_ATTR, + /* '4' */ HTMLPARSER_STATE_INT_ATTR, + /* '5' */ HTMLPARSER_STATE_INT_ATTR, + /* '6' */ HTMLPARSER_STATE_INT_ATTR, + /* '7' */ HTMLPARSER_STATE_INT_ATTR, + /* '8' */ HTMLPARSER_STATE_INT_ATTR, + /* '9' */ HTMLPARSER_STATE_INT_ATTR, + /* ':' */ HTMLPARSER_STATE_INT_ATTR, + /* ';' */ STATEMACHINE_ERROR, + /* '<' */ STATEMACHINE_ERROR, + /* '=' */ HTMLPARSER_STATE_INT_VALUE, + /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE, + /* '?' */ STATEMACHINE_ERROR, + /* '@' */ STATEMACHINE_ERROR, + /* 'A' */ HTMLPARSER_STATE_INT_ATTR, + /* 'B' */ HTMLPARSER_STATE_INT_ATTR, + /* 'C' */ HTMLPARSER_STATE_INT_ATTR, + /* 'D' */ HTMLPARSER_STATE_INT_ATTR, + /* 'E' */ HTMLPARSER_STATE_INT_ATTR, + /* 'F' */ HTMLPARSER_STATE_INT_ATTR, + /* 'G' */ HTMLPARSER_STATE_INT_ATTR, + /* 'H' */ HTMLPARSER_STATE_INT_ATTR, + /* 'I' */ HTMLPARSER_STATE_INT_ATTR, + /* 'J' */ HTMLPARSER_STATE_INT_ATTR, + /* 'K' */ HTMLPARSER_STATE_INT_ATTR, + /* 'L' */ HTMLPARSER_STATE_INT_ATTR, + /* 'M' */ HTMLPARSER_STATE_INT_ATTR, + /* 'N' */ HTMLPARSER_STATE_INT_ATTR, + /* 'O' */ HTMLPARSER_STATE_INT_ATTR, + /* 'P' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Q' */ HTMLPARSER_STATE_INT_ATTR, + /* 'R' */ HTMLPARSER_STATE_INT_ATTR, + /* 'S' */ HTMLPARSER_STATE_INT_ATTR, + /* 'T' */ HTMLPARSER_STATE_INT_ATTR, + /* 'U' */ HTMLPARSER_STATE_INT_ATTR, + /* 'V' */ HTMLPARSER_STATE_INT_ATTR, + /* 'W' */ HTMLPARSER_STATE_INT_ATTR, + /* 'X' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Y' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Z' */ HTMLPARSER_STATE_INT_ATTR, + /* '[' */ STATEMACHINE_ERROR, + /* '\\' */ STATEMACHINE_ERROR, + /* ']' */ STATEMACHINE_ERROR, + /* '^' */ STATEMACHINE_ERROR, + /* '_' */ HTMLPARSER_STATE_INT_ATTR, + /* '`' */ STATEMACHINE_ERROR, + /* 'a' */ HTMLPARSER_STATE_INT_ATTR, + /* 'b' */ HTMLPARSER_STATE_INT_ATTR, + /* 'c' */ HTMLPARSER_STATE_INT_ATTR, + /* 'd' */ HTMLPARSER_STATE_INT_ATTR, + /* 'e' */ HTMLPARSER_STATE_INT_ATTR, + /* 'f' */ HTMLPARSER_STATE_INT_ATTR, + /* 'g' */ HTMLPARSER_STATE_INT_ATTR, + /* 'h' */ HTMLPARSER_STATE_INT_ATTR, + /* 'i' */ HTMLPARSER_STATE_INT_ATTR, + /* 'j' */ HTMLPARSER_STATE_INT_ATTR, + /* 'k' */ HTMLPARSER_STATE_INT_ATTR, + /* 'l' */ HTMLPARSER_STATE_INT_ATTR, + /* 'm' */ HTMLPARSER_STATE_INT_ATTR, + /* 'n' */ HTMLPARSER_STATE_INT_ATTR, + /* 'o' */ HTMLPARSER_STATE_INT_ATTR, + /* 'p' */ HTMLPARSER_STATE_INT_ATTR, + /* 'q' */ HTMLPARSER_STATE_INT_ATTR, + /* 'r' */ HTMLPARSER_STATE_INT_ATTR, + /* 's' */ HTMLPARSER_STATE_INT_ATTR, + /* 't' */ HTMLPARSER_STATE_INT_ATTR, + /* 'u' */ HTMLPARSER_STATE_INT_ATTR, + /* 'v' */ HTMLPARSER_STATE_INT_ATTR, + /* 'w' */ HTMLPARSER_STATE_INT_ATTR, + /* 'x' */ HTMLPARSER_STATE_INT_ATTR, + /* 'y' */ HTMLPARSER_STATE_INT_ATTR, + /* 'z' */ HTMLPARSER_STATE_INT_ATTR, + /* '{' */ STATEMACHINE_ERROR, + /* '|' */ STATEMACHINE_ERROR, + /* '}' */ STATEMACHINE_ERROR, + /* '~' */ STATEMACHINE_ERROR, + /* '\x7f' */ STATEMACHINE_ERROR, + /* '\x80' */ STATEMACHINE_ERROR, + /* '\x81' */ STATEMACHINE_ERROR, + /* '\x82' */ STATEMACHINE_ERROR, + /* '\x83' */ STATEMACHINE_ERROR, + /* '\x84' */ STATEMACHINE_ERROR, + /* '\x85' */ STATEMACHINE_ERROR, + /* '\x86' */ STATEMACHINE_ERROR, + /* '\x87' */ STATEMACHINE_ERROR, + /* '\x88' */ STATEMACHINE_ERROR, + /* '\x89' */ STATEMACHINE_ERROR, + /* '\x8a' */ STATEMACHINE_ERROR, + /* '\x8b' */ STATEMACHINE_ERROR, + /* '\x8c' */ STATEMACHINE_ERROR, + /* '\x8d' */ STATEMACHINE_ERROR, + /* '\x8e' */ STATEMACHINE_ERROR, + /* '\x8f' */ STATEMACHINE_ERROR, + /* '\x90' */ STATEMACHINE_ERROR, + /* '\x91' */ STATEMACHINE_ERROR, + /* '\x92' */ STATEMACHINE_ERROR, + /* '\x93' */ STATEMACHINE_ERROR, + /* '\x94' */ STATEMACHINE_ERROR, + /* '\x95' */ STATEMACHINE_ERROR, + /* '\x96' */ STATEMACHINE_ERROR, + /* '\x97' */ STATEMACHINE_ERROR, + /* '\x98' */ STATEMACHINE_ERROR, + /* '\x99' */ STATEMACHINE_ERROR, + /* '\x9a' */ STATEMACHINE_ERROR, + /* '\x9b' */ STATEMACHINE_ERROR, + /* '\x9c' */ STATEMACHINE_ERROR, + /* '\x9d' */ STATEMACHINE_ERROR, + /* '\x9e' */ STATEMACHINE_ERROR, + /* '\x9f' */ STATEMACHINE_ERROR, + /* '\xa0' */ STATEMACHINE_ERROR, + /* '\xa1' */ STATEMACHINE_ERROR, + /* '\xa2' */ STATEMACHINE_ERROR, + /* '\xa3' */ STATEMACHINE_ERROR, + /* '\xa4' */ STATEMACHINE_ERROR, + /* '\xa5' */ STATEMACHINE_ERROR, + /* '\xa6' */ STATEMACHINE_ERROR, + /* '\xa7' */ STATEMACHINE_ERROR, + /* '\xa8' */ STATEMACHINE_ERROR, + /* '\xa9' */ STATEMACHINE_ERROR, + /* '\xaa' */ STATEMACHINE_ERROR, + /* '\xab' */ STATEMACHINE_ERROR, + /* '\xac' */ STATEMACHINE_ERROR, + /* '\xad' */ STATEMACHINE_ERROR, + /* '\xae' */ STATEMACHINE_ERROR, + /* '\xaf' */ STATEMACHINE_ERROR, + /* '\xb0' */ STATEMACHINE_ERROR, + /* '\xb1' */ STATEMACHINE_ERROR, + /* '\xb2' */ STATEMACHINE_ERROR, + /* '\xb3' */ STATEMACHINE_ERROR, + /* '\xb4' */ STATEMACHINE_ERROR, + /* '\xb5' */ STATEMACHINE_ERROR, + /* '\xb6' */ STATEMACHINE_ERROR, + /* '\xb7' */ STATEMACHINE_ERROR, + /* '\xb8' */ STATEMACHINE_ERROR, + /* '\xb9' */ STATEMACHINE_ERROR, + /* '\xba' */ STATEMACHINE_ERROR, + /* '\xbb' */ STATEMACHINE_ERROR, + /* '\xbc' */ STATEMACHINE_ERROR, + /* '\xbd' */ STATEMACHINE_ERROR, + /* '\xbe' */ STATEMACHINE_ERROR, + /* '\xbf' */ STATEMACHINE_ERROR, + /* '\xc0' */ STATEMACHINE_ERROR, + /* '\xc1' */ STATEMACHINE_ERROR, + /* '\xc2' */ STATEMACHINE_ERROR, + /* '\xc3' */ STATEMACHINE_ERROR, + /* '\xc4' */ STATEMACHINE_ERROR, + /* '\xc5' */ STATEMACHINE_ERROR, + /* '\xc6' */ STATEMACHINE_ERROR, + /* '\xc7' */ STATEMACHINE_ERROR, + /* '\xc8' */ STATEMACHINE_ERROR, + /* '\xc9' */ STATEMACHINE_ERROR, + /* '\xca' */ STATEMACHINE_ERROR, + /* '\xcb' */ STATEMACHINE_ERROR, + /* '\xcc' */ STATEMACHINE_ERROR, + /* '\xcd' */ STATEMACHINE_ERROR, + /* '\xce' */ STATEMACHINE_ERROR, + /* '\xcf' */ STATEMACHINE_ERROR, + /* '\xd0' */ STATEMACHINE_ERROR, + /* '\xd1' */ STATEMACHINE_ERROR, + /* '\xd2' */ STATEMACHINE_ERROR, + /* '\xd3' */ STATEMACHINE_ERROR, + /* '\xd4' */ STATEMACHINE_ERROR, + /* '\xd5' */ STATEMACHINE_ERROR, + /* '\xd6' */ STATEMACHINE_ERROR, + /* '\xd7' */ STATEMACHINE_ERROR, + /* '\xd8' */ STATEMACHINE_ERROR, + /* '\xd9' */ STATEMACHINE_ERROR, + /* '\xda' */ STATEMACHINE_ERROR, + /* '\xdb' */ STATEMACHINE_ERROR, + /* '\xdc' */ STATEMACHINE_ERROR, + /* '\xdd' */ STATEMACHINE_ERROR, + /* '\xde' */ STATEMACHINE_ERROR, + /* '\xdf' */ STATEMACHINE_ERROR, + /* '\xe0' */ STATEMACHINE_ERROR, + /* '\xe1' */ STATEMACHINE_ERROR, + /* '\xe2' */ STATEMACHINE_ERROR, + /* '\xe3' */ STATEMACHINE_ERROR, + /* '\xe4' */ STATEMACHINE_ERROR, + /* '\xe5' */ STATEMACHINE_ERROR, + /* '\xe6' */ STATEMACHINE_ERROR, + /* '\xe7' */ STATEMACHINE_ERROR, + /* '\xe8' */ STATEMACHINE_ERROR, + /* '\xe9' */ STATEMACHINE_ERROR, + /* '\xea' */ STATEMACHINE_ERROR, + /* '\xeb' */ STATEMACHINE_ERROR, + /* '\xec' */ STATEMACHINE_ERROR, + /* '\xed' */ STATEMACHINE_ERROR, + /* '\xee' */ STATEMACHINE_ERROR, + /* '\xef' */ STATEMACHINE_ERROR, + /* '\xf0' */ STATEMACHINE_ERROR, + /* '\xf1' */ STATEMACHINE_ERROR, + /* '\xf2' */ STATEMACHINE_ERROR, + /* '\xf3' */ STATEMACHINE_ERROR, + /* '\xf4' */ STATEMACHINE_ERROR, + /* '\xf5' */ STATEMACHINE_ERROR, + /* '\xf6' */ STATEMACHINE_ERROR, + /* '\xf7' */ STATEMACHINE_ERROR, + /* '\xf8' */ STATEMACHINE_ERROR, + /* '\xf9' */ STATEMACHINE_ERROR, + /* '\xfa' */ STATEMACHINE_ERROR, + /* '\xfb' */ STATEMACHINE_ERROR, + /* '\xfc' */ STATEMACHINE_ERROR, + /* '\xfd' */ STATEMACHINE_ERROR, + /* '\xfe' */ STATEMACHINE_ERROR +}; + +static const int htmlparser_transition_row_attr_space[] = { + /* '\x00' */ STATEMACHINE_ERROR, + /* '\x01' */ STATEMACHINE_ERROR, + /* '\x02' */ STATEMACHINE_ERROR, + /* '\x03' */ STATEMACHINE_ERROR, + /* '\x04' */ STATEMACHINE_ERROR, + /* '\x05' */ STATEMACHINE_ERROR, + /* '\x06' */ STATEMACHINE_ERROR, + /* '\x07' */ STATEMACHINE_ERROR, + /* '\x08' */ STATEMACHINE_ERROR, + /* '\t' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '\n' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '\x0b' */ STATEMACHINE_ERROR, + /* '\x0c' */ STATEMACHINE_ERROR, + /* '\r' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '\x0e' */ STATEMACHINE_ERROR, + /* '\x0f' */ STATEMACHINE_ERROR, + /* '\x10' */ STATEMACHINE_ERROR, + /* '\x11' */ STATEMACHINE_ERROR, + /* '\x12' */ STATEMACHINE_ERROR, + /* '\x13' */ STATEMACHINE_ERROR, + /* '\x14' */ STATEMACHINE_ERROR, + /* '\x15' */ STATEMACHINE_ERROR, + /* '\x16' */ STATEMACHINE_ERROR, + /* '\x17' */ STATEMACHINE_ERROR, + /* '\x18' */ STATEMACHINE_ERROR, + /* '\x19' */ STATEMACHINE_ERROR, + /* '\x1a' */ STATEMACHINE_ERROR, + /* '\x1b' */ STATEMACHINE_ERROR, + /* '\x1c' */ STATEMACHINE_ERROR, + /* '\x1d' */ STATEMACHINE_ERROR, + /* '\x1e' */ STATEMACHINE_ERROR, + /* '\x1f' */ STATEMACHINE_ERROR, + /* ' ' */ HTMLPARSER_STATE_INT_ATTR_SPACE, + /* '!' */ STATEMACHINE_ERROR, + /* '"' */ STATEMACHINE_ERROR, + /* '#' */ STATEMACHINE_ERROR, + /* '$' */ STATEMACHINE_ERROR, + /* '%' */ STATEMACHINE_ERROR, + /* '&' */ STATEMACHINE_ERROR, + /* "'" */ STATEMACHINE_ERROR, + /* '(' */ STATEMACHINE_ERROR, + /* ')' */ STATEMACHINE_ERROR, + /* '*' */ STATEMACHINE_ERROR, + /* '+' */ STATEMACHINE_ERROR, + /* ',' */ STATEMACHINE_ERROR, + /* '-' */ HTMLPARSER_STATE_INT_ATTR, + /* '.' */ STATEMACHINE_ERROR, + /* '/' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '0' */ HTMLPARSER_STATE_INT_ATTR, + /* '1' */ HTMLPARSER_STATE_INT_ATTR, + /* '2' */ HTMLPARSER_STATE_INT_ATTR, + /* '3' */ HTMLPARSER_STATE_INT_ATTR, + /* '4' */ HTMLPARSER_STATE_INT_ATTR, + /* '5' */ HTMLPARSER_STATE_INT_ATTR, + /* '6' */ HTMLPARSER_STATE_INT_ATTR, + /* '7' */ HTMLPARSER_STATE_INT_ATTR, + /* '8' */ HTMLPARSER_STATE_INT_ATTR, + /* '9' */ HTMLPARSER_STATE_INT_ATTR, + /* ':' */ HTMLPARSER_STATE_INT_ATTR, + /* ';' */ STATEMACHINE_ERROR, + /* '<' */ STATEMACHINE_ERROR, + /* '=' */ HTMLPARSER_STATE_INT_VALUE, + /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE, + /* '?' */ STATEMACHINE_ERROR, + /* '@' */ STATEMACHINE_ERROR, + /* 'A' */ HTMLPARSER_STATE_INT_ATTR, + /* 'B' */ HTMLPARSER_STATE_INT_ATTR, + /* 'C' */ HTMLPARSER_STATE_INT_ATTR, + /* 'D' */ HTMLPARSER_STATE_INT_ATTR, + /* 'E' */ HTMLPARSER_STATE_INT_ATTR, + /* 'F' */ HTMLPARSER_STATE_INT_ATTR, + /* 'G' */ HTMLPARSER_STATE_INT_ATTR, + /* 'H' */ HTMLPARSER_STATE_INT_ATTR, + /* 'I' */ HTMLPARSER_STATE_INT_ATTR, + /* 'J' */ HTMLPARSER_STATE_INT_ATTR, + /* 'K' */ HTMLPARSER_STATE_INT_ATTR, + /* 'L' */ HTMLPARSER_STATE_INT_ATTR, + /* 'M' */ HTMLPARSER_STATE_INT_ATTR, + /* 'N' */ HTMLPARSER_STATE_INT_ATTR, + /* 'O' */ HTMLPARSER_STATE_INT_ATTR, + /* 'P' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Q' */ HTMLPARSER_STATE_INT_ATTR, + /* 'R' */ HTMLPARSER_STATE_INT_ATTR, + /* 'S' */ HTMLPARSER_STATE_INT_ATTR, + /* 'T' */ HTMLPARSER_STATE_INT_ATTR, + /* 'U' */ HTMLPARSER_STATE_INT_ATTR, + /* 'V' */ HTMLPARSER_STATE_INT_ATTR, + /* 'W' */ HTMLPARSER_STATE_INT_ATTR, + /* 'X' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Y' */ HTMLPARSER_STATE_INT_ATTR, + /* 'Z' */ HTMLPARSER_STATE_INT_ATTR, + /* '[' */ STATEMACHINE_ERROR, + /* '\\' */ STATEMACHINE_ERROR, + /* ']' */ STATEMACHINE_ERROR, + /* '^' */ STATEMACHINE_ERROR, + /* '_' */ HTMLPARSER_STATE_INT_ATTR, + /* '`' */ STATEMACHINE_ERROR, + /* 'a' */ HTMLPARSER_STATE_INT_ATTR, + /* 'b' */ HTMLPARSER_STATE_INT_ATTR, + /* 'c' */ HTMLPARSER_STATE_INT_ATTR, + /* 'd' */ HTMLPARSER_STATE_INT_ATTR, + /* 'e' */ HTMLPARSER_STATE_INT_ATTR, + /* 'f' */ HTMLPARSER_STATE_INT_ATTR, + /* 'g' */ HTMLPARSER_STATE_INT_ATTR, + /* 'h' */ HTMLPARSER_STATE_INT_ATTR, + /* 'i' */ HTMLPARSER_STATE_INT_ATTR, + /* 'j' */ HTMLPARSER_STATE_INT_ATTR, + /* 'k' */ HTMLPARSER_STATE_INT_ATTR, + /* 'l' */ HTMLPARSER_STATE_INT_ATTR, + /* 'm' */ HTMLPARSER_STATE_INT_ATTR, + /* 'n' */ HTMLPARSER_STATE_INT_ATTR, + /* 'o' */ HTMLPARSER_STATE_INT_ATTR, + /* 'p' */ HTMLPARSER_STATE_INT_ATTR, + /* 'q' */ HTMLPARSER_STATE_INT_ATTR, + /* 'r' */ HTMLPARSER_STATE_INT_ATTR, + /* 's' */ HTMLPARSER_STATE_INT_ATTR, + /* 't' */ HTMLPARSER_STATE_INT_ATTR, + /* 'u' */ HTMLPARSER_STATE_INT_ATTR, + /* 'v' */ HTMLPARSER_STATE_INT_ATTR, + /* 'w' */ HTMLPARSER_STATE_INT_ATTR, + /* 'x' */ HTMLPARSER_STATE_INT_ATTR, + /* 'y' */ HTMLPARSER_STATE_INT_ATTR, + /* 'z' */ HTMLPARSER_STATE_INT_ATTR, + /* '{' */ STATEMACHINE_ERROR, + /* '|' */ STATEMACHINE_ERROR, + /* '}' */ STATEMACHINE_ERROR, + /* '~' */ STATEMACHINE_ERROR, + /* '\x7f' */ STATEMACHINE_ERROR, + /* '\x80' */ STATEMACHINE_ERROR, + /* '\x81' */ STATEMACHINE_ERROR, + /* '\x82' */ STATEMACHINE_ERROR, + /* '\x83' */ STATEMACHINE_ERROR, + /* '\x84' */ STATEMACHINE_ERROR, + /* '\x85' */ STATEMACHINE_ERROR, + /* '\x86' */ STATEMACHINE_ERROR, + /* '\x87' */ STATEMACHINE_ERROR, + /* '\x88' */ STATEMACHINE_ERROR, + /* '\x89' */ STATEMACHINE_ERROR, + /* '\x8a' */ STATEMACHINE_ERROR, + /* '\x8b' */ STATEMACHINE_ERROR, + /* '\x8c' */ STATEMACHINE_ERROR, + /* '\x8d' */ STATEMACHINE_ERROR, + /* '\x8e' */ STATEMACHINE_ERROR, + /* '\x8f' */ STATEMACHINE_ERROR, + /* '\x90' */ STATEMACHINE_ERROR, + /* '\x91' */ STATEMACHINE_ERROR, + /* '\x92' */ STATEMACHINE_ERROR, + /* '\x93' */ STATEMACHINE_ERROR, + /* '\x94' */ STATEMACHINE_ERROR, + /* '\x95' */ STATEMACHINE_ERROR, + /* '\x96' */ STATEMACHINE_ERROR, + /* '\x97' */ STATEMACHINE_ERROR, + /* '\x98' */ STATEMACHINE_ERROR, + /* '\x99' */ STATEMACHINE_ERROR, + /* '\x9a' */ STATEMACHINE_ERROR, + /* '\x9b' */ STATEMACHINE_ERROR, + /* '\x9c' */ STATEMACHINE_ERROR, + /* '\x9d' */ STATEMACHINE_ERROR, + /* '\x9e' */ STATEMACHINE_ERROR, + /* '\x9f' */ STATEMACHINE_ERROR, + /* '\xa0' */ STATEMACHINE_ERROR, + /* '\xa1' */ STATEMACHINE_ERROR, + /* '\xa2' */ STATEMACHINE_ERROR, + /* '\xa3' */ STATEMACHINE_ERROR, + /* '\xa4' */ STATEMACHINE_ERROR, + /* '\xa5' */ STATEMACHINE_ERROR, + /* '\xa6' */ STATEMACHINE_ERROR, + /* '\xa7' */ STATEMACHINE_ERROR, + /* '\xa8' */ STATEMACHINE_ERROR, + /* '\xa9' */ STATEMACHINE_ERROR, + /* '\xaa' */ STATEMACHINE_ERROR, + /* '\xab' */ STATEMACHINE_ERROR, + /* '\xac' */ STATEMACHINE_ERROR, + /* '\xad' */ STATEMACHINE_ERROR, + /* '\xae' */ STATEMACHINE_ERROR, + /* '\xaf' */ STATEMACHINE_ERROR, + /* '\xb0' */ STATEMACHINE_ERROR, + /* '\xb1' */ STATEMACHINE_ERROR, + /* '\xb2' */ STATEMACHINE_ERROR, + /* '\xb3' */ STATEMACHINE_ERROR, + /* '\xb4' */ STATEMACHINE_ERROR, + /* '\xb5' */ STATEMACHINE_ERROR, + /* '\xb6' */ STATEMACHINE_ERROR, + /* '\xb7' */ STATEMACHINE_ERROR, + /* '\xb8' */ STATEMACHINE_ERROR, + /* '\xb9' */ STATEMACHINE_ERROR, + /* '\xba' */ STATEMACHINE_ERROR, + /* '\xbb' */ STATEMACHINE_ERROR, + /* '\xbc' */ STATEMACHINE_ERROR, + /* '\xbd' */ STATEMACHINE_ERROR, + /* '\xbe' */ STATEMACHINE_ERROR, + /* '\xbf' */ STATEMACHINE_ERROR, + /* '\xc0' */ STATEMACHINE_ERROR, + /* '\xc1' */ STATEMACHINE_ERROR, + /* '\xc2' */ STATEMACHINE_ERROR, + /* '\xc3' */ STATEMACHINE_ERROR, + /* '\xc4' */ STATEMACHINE_ERROR, + /* '\xc5' */ STATEMACHINE_ERROR, + /* '\xc6' */ STATEMACHINE_ERROR, + /* '\xc7' */ STATEMACHINE_ERROR, + /* '\xc8' */ STATEMACHINE_ERROR, + /* '\xc9' */ STATEMACHINE_ERROR, + /* '\xca' */ STATEMACHINE_ERROR, + /* '\xcb' */ STATEMACHINE_ERROR, + /* '\xcc' */ STATEMACHINE_ERROR, + /* '\xcd' */ STATEMACHINE_ERROR, + /* '\xce' */ STATEMACHINE_ERROR, + /* '\xcf' */ STATEMACHINE_ERROR, + /* '\xd0' */ STATEMACHINE_ERROR, + /* '\xd1' */ STATEMACHINE_ERROR, + /* '\xd2' */ STATEMACHINE_ERROR, + /* '\xd3' */ STATEMACHINE_ERROR, + /* '\xd4' */ STATEMACHINE_ERROR, + /* '\xd5' */ STATEMACHINE_ERROR, + /* '\xd6' */ STATEMACHINE_ERROR, + /* '\xd7' */ STATEMACHINE_ERROR, + /* '\xd8' */ STATEMACHINE_ERROR, + /* '\xd9' */ STATEMACHINE_ERROR, + /* '\xda' */ STATEMACHINE_ERROR, + /* '\xdb' */ STATEMACHINE_ERROR, + /* '\xdc' */ STATEMACHINE_ERROR, + /* '\xdd' */ STATEMACHINE_ERROR, + /* '\xde' */ STATEMACHINE_ERROR, + /* '\xdf' */ STATEMACHINE_ERROR, + /* '\xe0' */ STATEMACHINE_ERROR, + /* '\xe1' */ STATEMACHINE_ERROR, + /* '\xe2' */ STATEMACHINE_ERROR, + /* '\xe3' */ STATEMACHINE_ERROR, + /* '\xe4' */ STATEMACHINE_ERROR, + /* '\xe5' */ STATEMACHINE_ERROR, + /* '\xe6' */ STATEMACHINE_ERROR, + /* '\xe7' */ STATEMACHINE_ERROR, + /* '\xe8' */ STATEMACHINE_ERROR, + /* '\xe9' */ STATEMACHINE_ERROR, + /* '\xea' */ STATEMACHINE_ERROR, + /* '\xeb' */ STATEMACHINE_ERROR, + /* '\xec' */ STATEMACHINE_ERROR, + /* '\xed' */ STATEMACHINE_ERROR, + /* '\xee' */ STATEMACHINE_ERROR, + /* '\xef' */ STATEMACHINE_ERROR, + /* '\xf0' */ STATEMACHINE_ERROR, + /* '\xf1' */ STATEMACHINE_ERROR, + /* '\xf2' */ STATEMACHINE_ERROR, + /* '\xf3' */ STATEMACHINE_ERROR, + /* '\xf4' */ STATEMACHINE_ERROR, + /* '\xf5' */ STATEMACHINE_ERROR, + /* '\xf6' */ STATEMACHINE_ERROR, + /* '\xf7' */ STATEMACHINE_ERROR, + /* '\xf8' */ STATEMACHINE_ERROR, + /* '\xf9' */ STATEMACHINE_ERROR, + /* '\xfa' */ STATEMACHINE_ERROR, + /* '\xfb' */ STATEMACHINE_ERROR, + /* '\xfc' */ STATEMACHINE_ERROR, + /* '\xfd' */ STATEMACHINE_ERROR, + /* '\xfe' */ STATEMACHINE_ERROR +}; + +static const int htmlparser_transition_row_value[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_VALUE, + /* '\n' */ HTMLPARSER_STATE_INT_VALUE, + /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_VALUE, + /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_VALUE, + /* '!' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_VALUE_DQ_START, + /* '#' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_VALUE_Q_START, + /* '(' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '.' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE, + /* '?' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_TEXT +}; + +static const int htmlparser_transition_row_value_text[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '!' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '.' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TAG_CLOSE, + /* '?' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_TEXT +}; + +static const int htmlparser_transition_row_value_q_start[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\t' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\n' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\r' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ' ' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '!' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '"' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '#' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '$' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '%' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '&' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* "'" */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '(' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ')' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '*' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '+' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ',' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '-' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '.' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '/' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ':' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ';' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '<' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '=' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '>' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '?' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '@' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'A' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'B' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'C' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'D' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'E' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'F' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'G' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'H' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'I' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'J' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'K' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'L' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'M' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'N' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'O' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'P' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'R' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'S' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'T' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'U' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'V' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'W' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'X' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '[' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\\' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ']' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '^' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '_' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '`' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'g' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'h' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'i' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'j' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'k' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'l' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'm' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'n' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'o' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'p' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'q' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'r' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 's' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 't' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'u' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'v' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'w' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'x' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'y' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'z' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '{' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '|' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '}' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '~' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_Q +}; + +static const int htmlparser_transition_row_value_q[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\t' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\n' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\r' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ' ' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '!' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '"' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '#' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '$' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '%' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '&' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* "'" */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '(' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ')' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '*' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '+' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ',' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '-' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '.' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '/' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ':' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ';' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '<' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '=' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '>' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '?' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '@' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'A' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'B' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'C' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'D' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'E' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'F' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'G' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'H' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'I' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'J' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'K' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'L' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'M' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'N' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'O' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'P' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'R' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'S' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'T' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'U' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'V' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'W' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'X' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '[' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\\' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* ']' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '^' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '_' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '`' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'g' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'h' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'i' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'j' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'k' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'l' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'm' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'n' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'o' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'p' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'q' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'r' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 's' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 't' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'u' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'v' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'w' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'x' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'y' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* 'z' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '{' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '|' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '}' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '~' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_Q, + /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_Q +}; + +static const int htmlparser_transition_row_value_dq_start[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\t' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\n' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\r' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ' ' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '!' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '"' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '#' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '$' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '%' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '&' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* "'" */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '(' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ')' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '*' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '+' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ',' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '-' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '.' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '/' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ':' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ';' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '<' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '=' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '>' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '?' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '@' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'A' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'B' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'C' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'D' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'E' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'F' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'G' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'H' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'I' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'J' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'K' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'L' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'M' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'N' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'O' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'P' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'R' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'S' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'T' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'U' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'V' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'W' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'X' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '[' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\\' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ']' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '^' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '_' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '`' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'g' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'h' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'i' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'j' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'k' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'l' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'm' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'n' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'o' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'p' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'q' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'r' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 's' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 't' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'u' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'v' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'w' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'x' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'y' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'z' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '{' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '|' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '}' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '~' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_DQ +}; + +static const int htmlparser_transition_row_value_dq[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x01' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x02' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x03' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x04' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x05' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x06' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x07' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x08' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\t' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\n' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\r' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x0f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x10' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x11' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x12' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x13' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x14' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x15' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x16' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x17' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x18' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x19' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1d' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x1f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ' ' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '!' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '"' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '#' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '$' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '%' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '&' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* "'" */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '(' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ')' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '*' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '+' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ',' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '-' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '.' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '/' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ':' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ';' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '<' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '=' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '>' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '?' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '@' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'A' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'B' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'C' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'D' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'E' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'F' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'G' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'H' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'I' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'J' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'K' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'L' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'M' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'N' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'O' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'P' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'Q' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'R' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'S' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'T' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'U' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'V' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'W' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'X' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'Y' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'Z' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '[' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\\' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* ']' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '^' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '_' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '`' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'g' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'h' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'i' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'j' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'k' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'l' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'm' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'n' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'o' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'p' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'q' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'r' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 's' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 't' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'u' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'v' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'w' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'x' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'y' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* 'z' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '{' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '|' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '}' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '~' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x7f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x80' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x81' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x82' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x83' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x84' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x85' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x86' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x87' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x88' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x89' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8d' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x8f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x90' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x91' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x92' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x93' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x94' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x95' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x96' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x97' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x98' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x99' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9a' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9b' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9c' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9d' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9e' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\x9f' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xa9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xaa' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xab' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xac' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xad' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xae' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xaf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xb9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xba' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbe' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xbf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xc9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xca' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xce' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xcf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xd9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xda' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xde' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xdf' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xe9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xea' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xeb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xec' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xed' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xee' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xef' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf0' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf1' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf2' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf3' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf4' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf5' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf6' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf7' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf8' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xf9' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfa' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfb' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfc' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfd' */ HTMLPARSER_STATE_INT_VALUE_DQ, + /* '\xfe' */ HTMLPARSER_STATE_INT_VALUE_DQ +}; + +static const int htmlparser_transition_row_cdata_comment_start[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_START_DASH, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT +}; + +static const int htmlparser_transition_row_cdata_comment_start_dash[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT +}; + +static const int htmlparser_transition_row_cdata_comment_body[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY +}; + +static const int htmlparser_transition_row_cdata_comment_dash[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY +}; + +static const int htmlparser_transition_row_cdata_comment_dash_dash[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_DASH_DASH, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_BODY +}; + +static const int htmlparser_transition_row_cdata_text[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_LT, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT +}; + +static const int htmlparser_transition_row_cdata_lt[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_COMMENT_START, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT +}; + +static const int htmlparser_transition_row_cdata_may_close[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x01' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x02' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x03' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x04' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x05' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x06' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x07' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x08' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\t' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\n' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\r' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '\x0e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x0f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x10' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x11' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x12' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x13' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x14' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x15' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x16' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x17' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x18' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x19' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x1f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ' ' */ HTMLPARSER_STATE_INT_TAG_SPACE, + /* '!' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '"' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '#' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '$' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '%' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '&' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* "'" */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '(' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ')' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '*' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '+' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ',' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '-' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '.' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '/' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '0' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '1' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '2' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '3' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '4' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '5' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '6' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '7' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '8' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '9' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* ':' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* ';' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '<' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '=' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '>' */ HTMLPARSER_STATE_INT_TEXT, + /* '?' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '@' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'A' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'B' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'C' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'D' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'E' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'F' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'G' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'H' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'I' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'J' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'K' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'L' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'M' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'N' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'O' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'P' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'Q' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'R' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'S' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'T' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'U' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'V' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'W' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'X' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'Y' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'Z' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '[' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\\' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* ']' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '^' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '_' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '`' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* 'a' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'b' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'c' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'd' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'e' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'f' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'g' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'h' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'i' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'j' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'k' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'l' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'm' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'n' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'o' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'p' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'q' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'r' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 's' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 't' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'u' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'v' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'w' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'x' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'y' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* 'z' */ HTMLPARSER_STATE_INT_CDATA_MAY_CLOSE, + /* '{' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '|' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '}' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '~' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x7f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x80' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x81' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x82' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x83' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x84' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x85' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x86' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x87' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x88' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x89' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x8f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x90' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x91' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x92' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x93' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x94' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x95' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x96' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x97' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x98' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x99' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9a' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9b' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9c' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9d' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9e' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\x9f' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xa9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xab' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xac' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xad' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xae' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xaf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xb9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xba' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbe' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xbf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xc9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xca' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xce' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xcf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xd9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xda' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xde' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xdf' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xe9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xea' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xeb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xec' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xed' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xee' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xef' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf0' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf1' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf2' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf3' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf4' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf5' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf6' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf7' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf8' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xf9' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfa' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfb' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfc' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfd' */ HTMLPARSER_STATE_INT_CDATA_TEXT, + /* '\xfe' */ HTMLPARSER_STATE_INT_CDATA_TEXT +}; + +static const int htmlparser_transition_row_js_file[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x01' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x02' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x03' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x04' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x05' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x06' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x07' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x08' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\t' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\n' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x0b' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x0c' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\r' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x0e' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x0f' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x10' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x11' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x12' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x13' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x14' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x15' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x16' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x17' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x18' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x19' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x1a' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x1b' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x1c' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x1d' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x1e' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x1f' */ HTMLPARSER_STATE_INT_JS_FILE, + /* ' ' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '!' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '"' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '#' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '$' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '%' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '&' */ HTMLPARSER_STATE_INT_JS_FILE, + /* "'" */ HTMLPARSER_STATE_INT_JS_FILE, + /* '(' */ HTMLPARSER_STATE_INT_JS_FILE, + /* ')' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '*' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '+' */ HTMLPARSER_STATE_INT_JS_FILE, + /* ',' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '-' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '.' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '/' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* ':' */ HTMLPARSER_STATE_INT_JS_FILE, + /* ';' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '<' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '=' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '>' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '?' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '@' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'A' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'B' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'C' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'D' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'E' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'F' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'G' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'H' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'I' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'J' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'K' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'L' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'M' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'N' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'O' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'P' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'Q' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'R' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'S' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'T' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'U' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'V' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'W' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'X' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'Y' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'Z' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '[' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\\' */ HTMLPARSER_STATE_INT_JS_FILE, + /* ']' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '^' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '_' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '`' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'a' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'b' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'c' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'd' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'e' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'f' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'g' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'h' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'i' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'j' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'k' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'l' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'm' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'n' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'o' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'p' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'q' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'r' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 's' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 't' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'u' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'v' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'w' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'x' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'y' */ HTMLPARSER_STATE_INT_JS_FILE, + /* 'z' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '{' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '|' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '}' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '~' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x7f' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x80' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x81' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x82' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x83' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x84' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x85' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x86' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x87' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x88' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x89' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x8a' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x8b' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x8c' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x8d' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x8e' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x8f' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x90' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x91' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x92' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x93' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x94' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x95' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x96' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x97' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x98' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x99' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x9a' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x9b' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x9c' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x9d' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x9e' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\x9f' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xa9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xaa' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xab' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xac' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xad' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xae' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xaf' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xb9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xba' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xbb' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xbc' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xbd' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xbe' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xbf' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xc9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xca' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xcb' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xcc' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xcd' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xce' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xcf' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xd9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xda' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xdb' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xdc' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xdd' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xde' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xdf' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xe9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xea' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xeb' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xec' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xed' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xee' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xef' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf0' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf1' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf2' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf3' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf4' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf5' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf6' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf7' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf8' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xf9' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xfa' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xfb' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xfc' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xfd' */ HTMLPARSER_STATE_INT_JS_FILE, + /* '\xfe' */ HTMLPARSER_STATE_INT_JS_FILE +}; + +static const int htmlparser_transition_row_css_file[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x01' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x02' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x03' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x04' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x05' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x06' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x07' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x08' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\t' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\n' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x0b' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x0c' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\r' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x0e' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x0f' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x10' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x11' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x12' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x13' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x14' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x15' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x16' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x17' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x18' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x19' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x1a' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x1b' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x1c' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x1d' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x1e' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x1f' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* ' ' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '!' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '"' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '#' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '$' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '%' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '&' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* "'" */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '(' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* ')' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '*' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '+' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* ',' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '-' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '.' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '/' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* ':' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* ';' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '<' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '=' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '>' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '?' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '@' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'A' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'B' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'C' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'D' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'E' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'F' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'G' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'H' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'I' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'J' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'K' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'L' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'M' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'N' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'O' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'P' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'Q' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'R' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'S' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'T' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'U' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'V' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'W' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'X' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'Y' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'Z' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '[' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\\' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* ']' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '^' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '_' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '`' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'a' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'b' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'c' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'd' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'e' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'f' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'g' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'h' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'i' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'j' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'k' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'l' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'm' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'n' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'o' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'p' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'q' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'r' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 's' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 't' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'u' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'v' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'w' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'x' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'y' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* 'z' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '{' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '|' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '}' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '~' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x7f' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x80' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x81' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x82' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x83' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x84' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x85' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x86' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x87' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x88' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x89' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x8a' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x8b' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x8c' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x8d' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x8e' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x8f' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x90' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x91' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x92' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x93' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x94' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x95' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x96' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x97' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x98' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x99' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x9a' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x9b' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x9c' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x9d' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x9e' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\x9f' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xa9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xaa' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xab' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xac' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xad' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xae' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xaf' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xb9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xba' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xbb' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xbc' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xbd' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xbe' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xbf' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xc9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xca' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xcb' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xcc' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xcd' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xce' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xcf' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xd9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xda' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xdb' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xdc' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xdd' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xde' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xdf' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xe9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xea' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xeb' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xec' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xed' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xee' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xef' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf0' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf1' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf2' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf3' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf4' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf5' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf6' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf7' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf8' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xf9' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xfa' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xfb' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xfc' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xfd' */ HTMLPARSER_STATE_INT_CSS_FILE, + /* '\xfe' */ HTMLPARSER_STATE_INT_CSS_FILE +}; + +static const int htmlparser_transition_row_null[] = { + /* '\x00' */ HTMLPARSER_STATE_INT_NULL, + /* '\x01' */ HTMLPARSER_STATE_INT_NULL, + /* '\x02' */ HTMLPARSER_STATE_INT_NULL, + /* '\x03' */ HTMLPARSER_STATE_INT_NULL, + /* '\x04' */ HTMLPARSER_STATE_INT_NULL, + /* '\x05' */ HTMLPARSER_STATE_INT_NULL, + /* '\x06' */ HTMLPARSER_STATE_INT_NULL, + /* '\x07' */ HTMLPARSER_STATE_INT_NULL, + /* '\x08' */ HTMLPARSER_STATE_INT_NULL, + /* '\t' */ HTMLPARSER_STATE_INT_NULL, + /* '\n' */ HTMLPARSER_STATE_INT_NULL, + /* '\x0b' */ HTMLPARSER_STATE_INT_NULL, + /* '\x0c' */ HTMLPARSER_STATE_INT_NULL, + /* '\r' */ HTMLPARSER_STATE_INT_NULL, + /* '\x0e' */ HTMLPARSER_STATE_INT_NULL, + /* '\x0f' */ HTMLPARSER_STATE_INT_NULL, + /* '\x10' */ HTMLPARSER_STATE_INT_NULL, + /* '\x11' */ HTMLPARSER_STATE_INT_NULL, + /* '\x12' */ HTMLPARSER_STATE_INT_NULL, + /* '\x13' */ HTMLPARSER_STATE_INT_NULL, + /* '\x14' */ HTMLPARSER_STATE_INT_NULL, + /* '\x15' */ HTMLPARSER_STATE_INT_NULL, + /* '\x16' */ HTMLPARSER_STATE_INT_NULL, + /* '\x17' */ HTMLPARSER_STATE_INT_NULL, + /* '\x18' */ HTMLPARSER_STATE_INT_NULL, + /* '\x19' */ HTMLPARSER_STATE_INT_NULL, + /* '\x1a' */ HTMLPARSER_STATE_INT_NULL, + /* '\x1b' */ HTMLPARSER_STATE_INT_NULL, + /* '\x1c' */ HTMLPARSER_STATE_INT_NULL, + /* '\x1d' */ HTMLPARSER_STATE_INT_NULL, + /* '\x1e' */ HTMLPARSER_STATE_INT_NULL, + /* '\x1f' */ HTMLPARSER_STATE_INT_NULL, + /* ' ' */ HTMLPARSER_STATE_INT_NULL, + /* '!' */ HTMLPARSER_STATE_INT_NULL, + /* '"' */ HTMLPARSER_STATE_INT_NULL, + /* '#' */ HTMLPARSER_STATE_INT_NULL, + /* '$' */ HTMLPARSER_STATE_INT_NULL, + /* '%' */ HTMLPARSER_STATE_INT_NULL, + /* '&' */ HTMLPARSER_STATE_INT_NULL, + /* "'" */ HTMLPARSER_STATE_INT_NULL, + /* '(' */ HTMLPARSER_STATE_INT_NULL, + /* ')' */ HTMLPARSER_STATE_INT_NULL, + /* '*' */ HTMLPARSER_STATE_INT_NULL, + /* '+' */ HTMLPARSER_STATE_INT_NULL, + /* ',' */ HTMLPARSER_STATE_INT_NULL, + /* '-' */ HTMLPARSER_STATE_INT_NULL, + /* '.' */ HTMLPARSER_STATE_INT_NULL, + /* '/' */ HTMLPARSER_STATE_INT_NULL, + /* '0' */ HTMLPARSER_STATE_INT_NULL, + /* '1' */ HTMLPARSER_STATE_INT_NULL, + /* '2' */ HTMLPARSER_STATE_INT_NULL, + /* '3' */ HTMLPARSER_STATE_INT_NULL, + /* '4' */ HTMLPARSER_STATE_INT_NULL, + /* '5' */ HTMLPARSER_STATE_INT_NULL, + /* '6' */ HTMLPARSER_STATE_INT_NULL, + /* '7' */ HTMLPARSER_STATE_INT_NULL, + /* '8' */ HTMLPARSER_STATE_INT_NULL, + /* '9' */ HTMLPARSER_STATE_INT_NULL, + /* ':' */ HTMLPARSER_STATE_INT_NULL, + /* ';' */ HTMLPARSER_STATE_INT_NULL, + /* '<' */ HTMLPARSER_STATE_INT_NULL, + /* '=' */ HTMLPARSER_STATE_INT_NULL, + /* '>' */ HTMLPARSER_STATE_INT_NULL, + /* '?' */ HTMLPARSER_STATE_INT_NULL, + /* '@' */ HTMLPARSER_STATE_INT_NULL, + /* 'A' */ HTMLPARSER_STATE_INT_NULL, + /* 'B' */ HTMLPARSER_STATE_INT_NULL, + /* 'C' */ HTMLPARSER_STATE_INT_NULL, + /* 'D' */ HTMLPARSER_STATE_INT_NULL, + /* 'E' */ HTMLPARSER_STATE_INT_NULL, + /* 'F' */ HTMLPARSER_STATE_INT_NULL, + /* 'G' */ HTMLPARSER_STATE_INT_NULL, + /* 'H' */ HTMLPARSER_STATE_INT_NULL, + /* 'I' */ HTMLPARSER_STATE_INT_NULL, + /* 'J' */ HTMLPARSER_STATE_INT_NULL, + /* 'K' */ HTMLPARSER_STATE_INT_NULL, + /* 'L' */ HTMLPARSER_STATE_INT_NULL, + /* 'M' */ HTMLPARSER_STATE_INT_NULL, + /* 'N' */ HTMLPARSER_STATE_INT_NULL, + /* 'O' */ HTMLPARSER_STATE_INT_NULL, + /* 'P' */ HTMLPARSER_STATE_INT_NULL, + /* 'Q' */ HTMLPARSER_STATE_INT_NULL, + /* 'R' */ HTMLPARSER_STATE_INT_NULL, + /* 'S' */ HTMLPARSER_STATE_INT_NULL, + /* 'T' */ HTMLPARSER_STATE_INT_NULL, + /* 'U' */ HTMLPARSER_STATE_INT_NULL, + /* 'V' */ HTMLPARSER_STATE_INT_NULL, + /* 'W' */ HTMLPARSER_STATE_INT_NULL, + /* 'X' */ HTMLPARSER_STATE_INT_NULL, + /* 'Y' */ HTMLPARSER_STATE_INT_NULL, + /* 'Z' */ HTMLPARSER_STATE_INT_NULL, + /* '[' */ HTMLPARSER_STATE_INT_NULL, + /* '\\' */ HTMLPARSER_STATE_INT_NULL, + /* ']' */ HTMLPARSER_STATE_INT_NULL, + /* '^' */ HTMLPARSER_STATE_INT_NULL, + /* '_' */ HTMLPARSER_STATE_INT_NULL, + /* '`' */ HTMLPARSER_STATE_INT_NULL, + /* 'a' */ HTMLPARSER_STATE_INT_NULL, + /* 'b' */ HTMLPARSER_STATE_INT_NULL, + /* 'c' */ HTMLPARSER_STATE_INT_NULL, + /* 'd' */ HTMLPARSER_STATE_INT_NULL, + /* 'e' */ HTMLPARSER_STATE_INT_NULL, + /* 'f' */ HTMLPARSER_STATE_INT_NULL, + /* 'g' */ HTMLPARSER_STATE_INT_NULL, + /* 'h' */ HTMLPARSER_STATE_INT_NULL, + /* 'i' */ HTMLPARSER_STATE_INT_NULL, + /* 'j' */ HTMLPARSER_STATE_INT_NULL, + /* 'k' */ HTMLPARSER_STATE_INT_NULL, + /* 'l' */ HTMLPARSER_STATE_INT_NULL, + /* 'm' */ HTMLPARSER_STATE_INT_NULL, + /* 'n' */ HTMLPARSER_STATE_INT_NULL, + /* 'o' */ HTMLPARSER_STATE_INT_NULL, + /* 'p' */ HTMLPARSER_STATE_INT_NULL, + /* 'q' */ HTMLPARSER_STATE_INT_NULL, + /* 'r' */ HTMLPARSER_STATE_INT_NULL, + /* 's' */ HTMLPARSER_STATE_INT_NULL, + /* 't' */ HTMLPARSER_STATE_INT_NULL, + /* 'u' */ HTMLPARSER_STATE_INT_NULL, + /* 'v' */ HTMLPARSER_STATE_INT_NULL, + /* 'w' */ HTMLPARSER_STATE_INT_NULL, + /* 'x' */ HTMLPARSER_STATE_INT_NULL, + /* 'y' */ HTMLPARSER_STATE_INT_NULL, + /* 'z' */ HTMLPARSER_STATE_INT_NULL, + /* '{' */ HTMLPARSER_STATE_INT_NULL, + /* '|' */ HTMLPARSER_STATE_INT_NULL, + /* '}' */ HTMLPARSER_STATE_INT_NULL, + /* '~' */ HTMLPARSER_STATE_INT_NULL, + /* '\x7f' */ HTMLPARSER_STATE_INT_NULL, + /* '\x80' */ HTMLPARSER_STATE_INT_NULL, + /* '\x81' */ HTMLPARSER_STATE_INT_NULL, + /* '\x82' */ HTMLPARSER_STATE_INT_NULL, + /* '\x83' */ HTMLPARSER_STATE_INT_NULL, + /* '\x84' */ HTMLPARSER_STATE_INT_NULL, + /* '\x85' */ HTMLPARSER_STATE_INT_NULL, + /* '\x86' */ HTMLPARSER_STATE_INT_NULL, + /* '\x87' */ HTMLPARSER_STATE_INT_NULL, + /* '\x88' */ HTMLPARSER_STATE_INT_NULL, + /* '\x89' */ HTMLPARSER_STATE_INT_NULL, + /* '\x8a' */ HTMLPARSER_STATE_INT_NULL, + /* '\x8b' */ HTMLPARSER_STATE_INT_NULL, + /* '\x8c' */ HTMLPARSER_STATE_INT_NULL, + /* '\x8d' */ HTMLPARSER_STATE_INT_NULL, + /* '\x8e' */ HTMLPARSER_STATE_INT_NULL, + /* '\x8f' */ HTMLPARSER_STATE_INT_NULL, + /* '\x90' */ HTMLPARSER_STATE_INT_NULL, + /* '\x91' */ HTMLPARSER_STATE_INT_NULL, + /* '\x92' */ HTMLPARSER_STATE_INT_NULL, + /* '\x93' */ HTMLPARSER_STATE_INT_NULL, + /* '\x94' */ HTMLPARSER_STATE_INT_NULL, + /* '\x95' */ HTMLPARSER_STATE_INT_NULL, + /* '\x96' */ HTMLPARSER_STATE_INT_NULL, + /* '\x97' */ HTMLPARSER_STATE_INT_NULL, + /* '\x98' */ HTMLPARSER_STATE_INT_NULL, + /* '\x99' */ HTMLPARSER_STATE_INT_NULL, + /* '\x9a' */ HTMLPARSER_STATE_INT_NULL, + /* '\x9b' */ HTMLPARSER_STATE_INT_NULL, + /* '\x9c' */ HTMLPARSER_STATE_INT_NULL, + /* '\x9d' */ HTMLPARSER_STATE_INT_NULL, + /* '\x9e' */ HTMLPARSER_STATE_INT_NULL, + /* '\x9f' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa0' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa1' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa2' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa3' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa4' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa5' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa6' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa7' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa8' */ HTMLPARSER_STATE_INT_NULL, + /* '\xa9' */ HTMLPARSER_STATE_INT_NULL, + /* '\xaa' */ HTMLPARSER_STATE_INT_NULL, + /* '\xab' */ HTMLPARSER_STATE_INT_NULL, + /* '\xac' */ HTMLPARSER_STATE_INT_NULL, + /* '\xad' */ HTMLPARSER_STATE_INT_NULL, + /* '\xae' */ HTMLPARSER_STATE_INT_NULL, + /* '\xaf' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb0' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb1' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb2' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb3' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb4' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb5' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb6' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb7' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb8' */ HTMLPARSER_STATE_INT_NULL, + /* '\xb9' */ HTMLPARSER_STATE_INT_NULL, + /* '\xba' */ HTMLPARSER_STATE_INT_NULL, + /* '\xbb' */ HTMLPARSER_STATE_INT_NULL, + /* '\xbc' */ HTMLPARSER_STATE_INT_NULL, + /* '\xbd' */ HTMLPARSER_STATE_INT_NULL, + /* '\xbe' */ HTMLPARSER_STATE_INT_NULL, + /* '\xbf' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc0' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc1' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc2' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc3' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc4' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc5' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc6' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc7' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc8' */ HTMLPARSER_STATE_INT_NULL, + /* '\xc9' */ HTMLPARSER_STATE_INT_NULL, + /* '\xca' */ HTMLPARSER_STATE_INT_NULL, + /* '\xcb' */ HTMLPARSER_STATE_INT_NULL, + /* '\xcc' */ HTMLPARSER_STATE_INT_NULL, + /* '\xcd' */ HTMLPARSER_STATE_INT_NULL, + /* '\xce' */ HTMLPARSER_STATE_INT_NULL, + /* '\xcf' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd0' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd1' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd2' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd3' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd4' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd5' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd6' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd7' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd8' */ HTMLPARSER_STATE_INT_NULL, + /* '\xd9' */ HTMLPARSER_STATE_INT_NULL, + /* '\xda' */ HTMLPARSER_STATE_INT_NULL, + /* '\xdb' */ HTMLPARSER_STATE_INT_NULL, + /* '\xdc' */ HTMLPARSER_STATE_INT_NULL, + /* '\xdd' */ HTMLPARSER_STATE_INT_NULL, + /* '\xde' */ HTMLPARSER_STATE_INT_NULL, + /* '\xdf' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe0' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe1' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe2' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe3' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe4' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe5' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe6' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe7' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe8' */ HTMLPARSER_STATE_INT_NULL, + /* '\xe9' */ HTMLPARSER_STATE_INT_NULL, + /* '\xea' */ HTMLPARSER_STATE_INT_NULL, + /* '\xeb' */ HTMLPARSER_STATE_INT_NULL, + /* '\xec' */ HTMLPARSER_STATE_INT_NULL, + /* '\xed' */ HTMLPARSER_STATE_INT_NULL, + /* '\xee' */ HTMLPARSER_STATE_INT_NULL, + /* '\xef' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf0' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf1' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf2' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf3' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf4' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf5' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf6' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf7' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf8' */ HTMLPARSER_STATE_INT_NULL, + /* '\xf9' */ HTMLPARSER_STATE_INT_NULL, + /* '\xfa' */ HTMLPARSER_STATE_INT_NULL, + /* '\xfb' */ HTMLPARSER_STATE_INT_NULL, + /* '\xfc' */ HTMLPARSER_STATE_INT_NULL, + /* '\xfd' */ HTMLPARSER_STATE_INT_NULL, + /* '\xfe' */ HTMLPARSER_STATE_INT_NULL +}; + +static const int * htmlparser_state_transitions[] = { + htmlparser_transition_row_text, + htmlparser_transition_row_tag_start, + htmlparser_transition_row_tag_name, + htmlparser_transition_row_declaration_start, + htmlparser_transition_row_declaration_body, + htmlparser_transition_row_comment_open, + htmlparser_transition_row_comment_body, + htmlparser_transition_row_comment_dash, + htmlparser_transition_row_comment_dash_dash, + htmlparser_transition_row_pi, + htmlparser_transition_row_pi_may_end, + htmlparser_transition_row_tag_space, + htmlparser_transition_row_tag_close, + htmlparser_transition_row_attr, + htmlparser_transition_row_attr_space, + htmlparser_transition_row_value, + htmlparser_transition_row_value_text, + htmlparser_transition_row_value_q_start, + htmlparser_transition_row_value_q, + htmlparser_transition_row_value_dq_start, + htmlparser_transition_row_value_dq, + htmlparser_transition_row_cdata_comment_start, + htmlparser_transition_row_cdata_comment_start_dash, + htmlparser_transition_row_cdata_comment_body, + htmlparser_transition_row_cdata_comment_dash, + htmlparser_transition_row_cdata_comment_dash_dash, + htmlparser_transition_row_cdata_text, + htmlparser_transition_row_cdata_lt, + htmlparser_transition_row_cdata_may_close, + htmlparser_transition_row_js_file, + htmlparser_transition_row_css_file, + htmlparser_transition_row_null +}; + diff --git a/streamhtmlparser/include/htmlparser.h b/streamhtmlparser/include/htmlparser.h new file mode 100644 index 0000000..58db4a5 --- /dev/null +++ b/streamhtmlparser/include/htmlparser.h @@ -0,0 +1,397 @@ +/* Copyright (c) 2007, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Filipe Almeida + */ + +#ifndef STREAMHTMLPARSER_HTMLPARSER_H +#define STREAMHTMLPARSER_HTMLPARSER_H + +#include "statemachine.h" +#include "jsparser.h" + +/* entity filter */ + +/* String sizes used in htmlparser and entityfilter structures including the + * NULL terminator. + */ +#define HTMLPARSER_MAX_STRING STATEMACHINE_RECORD_BUFFER_SIZE +#define HTMLPARSER_MAX_ENTITY_SIZE 10 + + +enum htmlparser_state_external_enum { + HTMLPARSER_STATE_TEXT, + HTMLPARSER_STATE_TAG, + HTMLPARSER_STATE_ATTR, + HTMLPARSER_STATE_VALUE, + HTMLPARSER_STATE_COMMENT, + HTMLPARSER_STATE_JS_FILE, + HTMLPARSER_STATE_CSS_FILE, + HTMLPARSER_STATE_ERROR +}; + +enum htmlparser_mode { + HTMLPARSER_MODE_HTML, + HTMLPARSER_MODE_JS, + HTMLPARSER_MODE_CSS, + HTMLPARSER_MODE_HTML_IN_TAG +}; + +enum htmlparser_attr_type { + HTMLPARSER_ATTR_NONE, + HTMLPARSER_ATTR_REGULAR, + HTMLPARSER_ATTR_URI, + HTMLPARSER_ATTR_JS, + HTMLPARSER_ATTR_STYLE +}; + + +/* TODO(falmeida): Maybe move some of these declaration to the .c and only keep + * a forward declaration in here, since these structures are private. + */ + +/* entityfilter context structure. + * + * The entity filter collection of routines provide a way to decode html + * entities from an html document in a streaming way. + * + * The html_process() function receives a character at a time from the input + * stream and returns 0 or more characters which should be appended to the + * resulting decoded document. + * + * Currently this collection of functions are only exported for testing purposes + * and shouldn't be called from outside of htmlparser.c. + * + * Since we really only use these functions with the very specific purpose of + * decoding html entities for javascript attributes, only a small subset of + * entities are supported: <, >, "e;, &, &apos, and the numeric + * character references for both decimal and hexadecimal. + */ +typedef struct entityfilter_ctx_s { + + /* Current position into the buffer. */ + int buffer_pos; + + /* True if currently processing an html entity. */ + int in_entity; + + /* Temporary character buffer that is used while processing html entities. + */ + char buffer[HTMLPARSER_MAX_ENTITY_SIZE]; + + /* String buffer returned to the application after we decoded an html + * entity. + */ + char output[HTMLPARSER_MAX_ENTITY_SIZE]; +} entityfilter_ctx; + +/* Resets the entityfilter to its initial state so it can be reused. + */ +void entityfilter_reset(entityfilter_ctx *ctx); + +/* Initializes a new entity filter object. + */ +entityfilter_ctx *entityfilter_new(void); + +/* Deallocates an entity filter object. + */ +void entityfilter_delete(entityfilter_ctx *ctx); + +/* Copies the context of the entityfilter pointed to by src to the entityfilter + * dst. + */ +void entityfilter_copy(entityfilter_ctx *dst, entityfilter_ctx *src); + +/* Processes a character from the input stream and decodes any html entities + * in the accumulated buffer. + * + * Returns a reference to a string that points to an internal buffer. This + * buffer will be changed after every call to entityfilter_process(). As + * such this string should be duplicated before subsequent calls to + * entityfilter_process(). + */ +const char *entityfilter_process(entityfilter_ctx *ctx, char c); + + +/* html parser */ + +/* Stores the context of the html parser. + * If this structure is changed, htmlparser_new(), htmlparser_copy() and + * htmlparser_reset() should be updated accordingly. + */ +typedef struct htmlparser_ctx_s { + + /* Holds a reference to the statemachine context. */ + statemachine_ctx *statemachine; + + /* Holds a reference to the statemachine definition in use. Right now this is + * only used so we can deallocate it at the end. + * + * It should be readonly and contain the same values across jsparser + * instances. + */ + /* TODO(falmeida): Change statemachine_def to const. */ + statemachine_definition *statemachine_def; + + /* Holds a reference to the javascript parser. */ + jsparser_ctx *jsparser; + + /* Holds a reference to the entity filter. Used for decoding html entities + * inside javascript attributes. */ + entityfilter_ctx *entityfilter; + + /* Offset into the current attribute value where 0 is the first character in + * the value. */ + int value_index; + + /* True if currently processing javascript. */ + int in_js; + + /* Current tag name. */ + char tag[HTMLPARSER_MAX_STRING]; + + /* Current attribute name. */ + char attr[HTMLPARSER_MAX_STRING]; + + /* Contents of the current value capped to HTMLPARSER_MAX_STRING. */ + char value[HTMLPARSER_MAX_STRING]; + +} htmlparser_ctx; + +/* Resets the parser to its initial state and to the default mode, which + * is MODE_HTML. + * + * All internal context like tag name, attribute name or the state of the + * statemachine are reset to its original values as if the object was just + * created. + */ +void htmlparser_reset(htmlparser_ctx *ctx); + +/* Resets the parser to its initial state and changes the parser mode. + * All internal context like tag name, attribute name or the state of the + * statemachine are reset to their original values as if the object was just + * created. + * + * Available modes: + * HTMLPARSER_MODE_HTML - Parses html text + * HTMLPARSER_MODE_JS - Parses javascript files + * HTMLPARSER_MODE_CSS - Parses CSS files. No actual parsing is actually done + * but htmlparser_in_css() always returns true. + * HTMLPARSER_MODE_HTML_IN_TAG - Parses an attribute list inside a tag. To + * be used in a template expanded in the + * following context: + * + */ +void htmlparser_reset_mode(htmlparser_ctx *ctx, int mode); + +/* Initializes a new htmlparser instance. + * + * Returns a pointer to the new instance or NULL if the initialization fails. + * Initialization failure is fatal, and if this function fails it may not + * deallocate all previsouly allocated memory. + */ +htmlparser_ctx *htmlparser_new(void); + +/* Copies the context of the htmlparser pointed to by src to the htmlparser dst. + * + * Also copies over the instances of the state machine, the jsparser and the + * entity filter but not the statemachine definition since this one is read + * only. + */ +void htmlparser_copy(htmlparser_ctx *dst, const htmlparser_ctx *src); + +/* Receives an htmlparser context and returns the current html state. + * + * The return value will be one of the states of htmlparser_state_external_enum. + */ +int htmlparser_state(htmlparser_ctx *ctx); + +/* Parses the input html stream and returns the finishing state. + * + * Returns HTMLPARSER_ERROR if unable to parse the input. If htmlparser_parse() + * is called after an error situation was encountered the behaviour is + * unspecified. At this point, htmlparser_reset() or htmlparser_reset_mode() + * can be called to reset the state. + */ +int htmlparser_parse(htmlparser_ctx *ctx, const char *str, int size); + +/* Returns true if the parser is inside an attribute value and the value is + * surrounded by single or double quotes. */ +int htmlparser_is_attr_quoted(htmlparser_ctx *ctx); + +/* Returns true if the parser is currently in javascript. This can be a + * an attribute that takes javascript, a javascript block or the parser + * can just be in MODE_JS. */ +int htmlparser_in_js(htmlparser_ctx *ctx); + +/* Returns the current tag or NULL if not available or we haven't seen the + * entire tag yet. + * + * There is no stack implemented because we currently don't have a need for + * it, which means tag names are tracked only one level deep. + * + * This is better understood by looking at the following example: + * + * + * [tag=b] + * + * [tag=i] + * + * [tag=NULL] + * + * + * The tag is correctly filled inside the tag itself and before any new inner + * tag is closed, at which point the tag will be null. + * + * For our current purposes this is not a problem, but we may implement a tag + * tracking stack in the future for completeness. + * + */ +const char *htmlparser_tag(htmlparser_ctx *ctx); + +/* Returns the current attribute name if after an attribute name or in an + * attribute value. Returns NULL otherwise. */ +const char *htmlparser_attr(htmlparser_ctx *ctx); + +/* Returns the contents of the current attribute value. + * + * Returns NULL if not inside an attribute value. + */ +const char *htmlparser_value(htmlparser_ctx *ctx); + +/* Returns true if the parser is currently inside a CSS construct. + * + * Currently this can be either a STYLE tag, a STYLE attribute or the fact that + * the parser was reset in HTMLPARSER_MODE_CSS using + * htmlparser_reset_mode(). + */ +int htmlparser_in_css(htmlparser_ctx *ctx); + +/* Returns the current state of the javascript state machine. + * + * Currently only present for testing purposes. + */ +int htmlparser_js_state(htmlparser_ctx *ctx); + +/* Returns non-zero if currently inside a javascript string literal and zero + * otherwise. + */ +int htmlparser_is_js_quoted(htmlparser_ctx *ctx); + +/* Returns non-zero if currently inside an attribute value and zero otherwise. + */ +int htmlparser_value_index(htmlparser_ctx *ctx); + +/* Returns true if this is the first character of a url inside an attribute. + * + * This function can be used by an html sanitizer or auto escaping system as a + * hint that it should validate the url for a whitelist of protocol handlers and + * for well-formedness, or that it should just escape a component of it. + * + * For attributes that expect a URL, this will return true if we are at the + * first character of the URL, false otherwise. + * For most attributes, this is the same as checking that we are at the first + * character of the attribute value but it also works correctly for the + * "content" attribute of the "meta" tag where the URL follows some earlier + * content. + * e.g: + * + * For any other attributes, the result will always be false. + */ +int htmlparser_is_url_start(htmlparser_ctx *ctx); + +/* Returns the current attribute type. + * + * The attribute type can be one of: + * HTMLPARSER_ATTR_NONE - not inside an attribute. + * HTMLPARSER_ATTR_REGULAR - Inside a normal attribute. + * HTMLPARSER_ATTR_URI - Inside an attribute that accepts a uri. + * HTMLPARSER_ATTR_JS - Inside a javascript attribute. + * HTMLPARSER_ATTR_STYLE - Inside a css style attribute. + */ +int htmlparser_attr_type(htmlparser_ctx *ctx); + +/* Return the current line number. */ +int htmlparser_get_line_number(htmlparser_ctx *ctx); + +/* Set the current line number. */ +void htmlparser_set_line_number(htmlparser_ctx *ctx, int line); + +/* Return the current column number. */ +int htmlparser_get_column_number(htmlparser_ctx *ctx); + +/* Set the current column number. */ +void htmlparser_set_column_number(htmlparser_ctx *ctx, int column); + +/* Retrieve a human readable error message in case an error occurred. + * + * NULL is returned if the parser didn't encounter an error. + */ +const char *htmlparser_get_error_msg(htmlparser_ctx *ctx); + +/* Invoked by the caller when text is expanded by the caller. + * + * Should be invoked when a template directive that expands to content is + * executed but we don't provide this content to the parser itself. This changes + * the current state by following the default rule, ensuring we stay in sync + * with the template. + * + * Returns 1 if template directives are accepted for this state and 0 if they + * are not, which should result in an error condition. + * + * Right now the only case being handled are unquoted attribute values and it + * always returns 1. When insert_text() is called after the equals sign, we + * assume some text was consumed and we are now in the middle of the attribute + * value itself. Example: + * + * + * + * The template calls insert_text() when it encounters $HREF_VALUE. If it didn't + * the parser would only have seen the following html: + * + * + * + * and would interpret alt=alternate_text as the value of the href attribute. + */ +int htmlparser_insert_text(htmlparser_ctx *ctx); + +/* Deallocates an htmlparser context object. + */ +void htmlparser_delete(htmlparser_ctx *ctx); + +#define htmlparser_parse_chr(a,b) htmlparser_parse(a, &(b), 1); +#ifdef __cplusplus +#define htmlparser_parse_str(a,b) htmlparser_parse(a, b, \ + static_cast(strlen(b))); +#else +#define htmlparser_parse_str(a,b) htmlparser_parse(a, b, (int)strlen(b)); +#endif + +#endif /* STREAMHTMLPARSER_HTMLPARSER_H */ diff --git a/streamhtmlparser/include/htmlparser_cpp.h b/streamhtmlparser/include/htmlparser_cpp.h new file mode 100644 index 0000000..3802233 --- /dev/null +++ b/streamhtmlparser/include/htmlparser_cpp.h @@ -0,0 +1,322 @@ +// Copyright (c) 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// --- +// Author: Filipe Almeida +// +// c++ bindings for htmlparser. + +#ifndef STREAMHTMLPARSER_HTMLPARSER_CPP_H__ +#define STREAMHTMLPARSER_HTMLPARSER_CPP_H__ + +#include +#include +extern "C" { + #include "htmlparser.h" + #include "jsparser.h" +} + +namespace streamhtmlparser { + +class JavascriptParser { + public: + enum State { + STATE_TEXT = JSPARSER_STATE_TEXT, + STATE_Q = JSPARSER_STATE_Q, + STATE_DQ = JSPARSER_STATE_DQ, + STATE_REGEXP = JSPARSER_STATE_REGEXP, + STATE_COMMENT = JSPARSER_STATE_COMMENT + }; +}; + +class HtmlParser { + public: + + /* html states */ + enum State { + STATE_TEXT = HTMLPARSER_STATE_TEXT, + STATE_TAG = HTMLPARSER_STATE_TAG, + STATE_ATTR = HTMLPARSER_STATE_ATTR, + STATE_VALUE = HTMLPARSER_STATE_VALUE, + STATE_COMMENT = HTMLPARSER_STATE_COMMENT, + STATE_JS_FILE = HTMLPARSER_STATE_JS_FILE, + STATE_CSS_FILE = HTMLPARSER_STATE_CSS_FILE, + STATE_ERROR = HTMLPARSER_STATE_ERROR + }; + + /* attribute types */ + enum AttributeType { + ATTR_NONE = HTMLPARSER_ATTR_NONE, + ATTR_REGULAR = HTMLPARSER_ATTR_REGULAR, + ATTR_URI = HTMLPARSER_ATTR_URI, + ATTR_JS = HTMLPARSER_ATTR_JS, + ATTR_STYLE = HTMLPARSER_ATTR_STYLE + }; + + /* Parser modes */ + enum Mode { + MODE_HTML = HTMLPARSER_MODE_HTML, + MODE_JS = HTMLPARSER_MODE_JS, + MODE_CSS = HTMLPARSER_MODE_CSS, + MODE_HTML_IN_TAG = HTMLPARSER_MODE_HTML_IN_TAG + }; + + HtmlParser() { + parser_ = htmlparser_new(); + assert(parser_ != NULL); + }; + + /* Parses the input html stream and returns the finishing state. + * + * Returns HtmlParser::STATE_ERROR if unable to parse the input. If + * htmlparser_parse() is called after an error situation was encountered + * the behaviour is unspecified. At this point, Reset() or ResetMode() + * can be called to reset the state so it can be used to parse a new file. + */ + int Parse(const char *str, int len) { + return htmlparser_parse(parser_, str, len); + }; + + int Parse(const std::string &str) { + return Parse(str.c_str(), static_cast(str.length())); + }; + + /* Returns the current state the parser is in */ + int state() const { + return htmlparser_state(parser_); + }; + + /* Returns the current tag or NULL if not available. + * + * There is no stack implemented because we currently don't have a need for + * it, which means tag names are tracked only one level deep. + * + * This is better understood by looking at the following example: + * + * + * [tag=b] + * + * [tag=i] + * + * [tag=NULL] + * + * + * The tag is correctly filled inside the tag itself and before any new + * inner tag is closed, at which point the tag will be set to NULL. + * + * For our current purposes this is not a problem, but we may implement a + * tag tracking stack in the future for completeness. + */ + const char *tag() const { + return htmlparser_tag(parser_); + } + + /* Returns the current attribute name if inside an attribute name or an + * attribute value. Returns NULL otherwise. */ + const char *attribute() const { + return htmlparser_attr(parser_); + } + + /* Returns the contents of the current attribute value. */ + const char *value() const { + return htmlparser_value(parser_); + } + + /* Returns true if inside javascript. This can be a javascript block, a + * javascript attribute value or the parser may just be in javascript mode + * (HtmlParser::MODE_JS) */ + bool InJavascript() const { + return static_cast(htmlparser_in_js(parser_)); + } + + /* Returns true if the parser is currently inside a CSS construct. + * + * Currently this can be either a STYLE tag, a STYLE attribute or the fact + * that the parser was reset using MODE_CSS using ResetMode(). + */ + bool InCss() const { + return static_cast(htmlparser_in_css(parser_)); + } + + /* Returns true if the current attribute is quoted */ + bool IsAttributeQuoted() const { + return static_cast(htmlparser_is_attr_quoted(parser_)); + } + + /* Returns true if the parser is inside a js string literal. + */ + bool IsJavascriptQuoted() const { + return static_cast(htmlparser_is_js_quoted(parser_)); + } + + /* Returns the index within the current value or -1 if the parser is not + * inside an attribute value */ + int ValueIndex() const { + return htmlparser_value_index(parser_); + } + + /* Returns true if this is the first character of a url inside an attribute. + * + * This function can be used by an html sanitizer or auto escaping system as + * a hint that it should validate the url for a whitelist of protocol + * handlers and for well-formedness, or that it should just escape a + * component of it. + * + * For attributes that expect a url this will return true if we are at the + * first character of the attribute, but for the special case of a meta + * redirect tag some analysis is made in order to verify if we are at the + * start of a url or not. + * + * For any other attributes, the result will always be false. + * + */ + bool IsUrlStart() const { + return htmlparser_is_url_start(parser_); + } + + /* Returns the current attribute type. + * + * The attribute type can be one of: + * ATTR_NONE - not inside an attribute + * ATTR_REGULAR - Inside a normal attribute + * ATTR_URI - Inside an attribute that accepts a uri + * ATTR_JS - Inside a javascript attribute + * ATTR_STYLE - Inside a css style attribute + * */ + int AttributeType() const { + return htmlparser_attr_type(parser_); + } + + /* Return the current line number. */ + int line_number() const { + return htmlparser_get_line_number(parser_); + } + + /* Set the current line number. */ + void set_line_number(int line) { + return htmlparser_set_line_number(parser_, line); + } + + /* Return the current column number. */ + int column_number() const { + return htmlparser_get_column_number(parser_); + } + + /* Set the current line number. */ + void set_column_number(int column) { + return htmlparser_set_column_number(parser_, column); + } + + /* Retrieve a human readable error message in case an error occurred. + * + * NULL is returned if the parser didn't encounter an error. + */ + const char *GetErrorMessage() { + return htmlparser_get_error_msg(parser_); + } + + /* Returns the current state the javascript parser is in. + * + * Should only be used for testing. + */ + int javascript_state() const { + return htmlparser_js_state(parser_); + }; + + /* Resets the parser to it's initial state and changes the parser mode. + * + * Internal state (tag name, attribute name, state of statemachine) is + * reset as * though the object was just created. + * + * Available modes: + * MODE_HTML - Parses html text + * MODE_JS - Parses javascript files + * MODE_CSS - Parses CSS files. No actual parsing is actually done + * but InCss() always returns true. + * MODE_HTML_IN_TAG - Parses an attribute list inside a tag. To + * be used in a template expanded in the + * following context: + */ + void ResetMode(enum Mode mode) { + return htmlparser_reset_mode(parser_, mode); + } + + /* Resets the parser to it's initial state and to the default mode, which is + * MODE_HTML. + * + * All internal context like tag name, attribute name or the state of the + * statemachine are reset to it's original values as if the object was just + * created. + */ + void Reset() { + return htmlparser_reset(parser_); + } + + /* Invoked when text is inserted by the caller. + * + * Should be called before a template directive that expands to content is + * found. This changes the current state by following the default rule, + * ensuring we stay in sync with template. + * + * Returns true if template directives are accepted for this state and + * false if they are not, which should result in an error condition. + * + * Right now the only case being handled are unquoted attribute values and + * it always returns true. In the future we can handle more cases and + * restrict the states were we allow template directives by returning false + * for those. + */ + bool InsertText() { + return static_cast(htmlparser_insert_text(parser_)); + } + + /* Copies the context of the HtmlParser object referenced in source to the + * current object. + */ + void CopyFrom(const HtmlParser *source) { + assert(this != source); + assert(source != NULL); + htmlparser_copy(parser_, source->parser_); + } + + ~HtmlParser() { + htmlparser_delete(parser_); + }; + + + private: + htmlparser_ctx *parser_; + HtmlParser(const HtmlParser&); // disallow copy + void operator=(const HtmlParser&); // and assign + +}; + +} + +#endif // STREAMHTMLPARSER_HTMLPARSER_CPP_H__ diff --git a/streamhtmlparser/include/jsparser.h b/streamhtmlparser/include/jsparser.h new file mode 100644 index 0000000..4077aa4 --- /dev/null +++ b/streamhtmlparser/include/jsparser.h @@ -0,0 +1,163 @@ +/* Copyright (c) 2007, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Filipe Almeida + */ + +#ifndef STREAMHTMLPARSER_JSPARSER_H +#define STREAMHTMLPARSER_JSPARSER_H + +#include "statemachine.h" + +/* Size of the ring buffer used to lookup the last token in the javascript + * stream. The size is pretty much arbitrary at this point but must be bigger + * than the biggest token we want to lookup plus 3: Two delimiters plus an empty + * ring buffer slot. */ +#define JSPARSER_RING_BUFFER_SIZE 18 + +enum js_state_external_enum { + JSPARSER_STATE_TEXT, + JSPARSER_STATE_Q, + JSPARSER_STATE_DQ, + JSPARSER_STATE_REGEXP, + JSPARSER_STATE_COMMENT +}; + +/* Stores the context of the javascript parser. + * + * If this structure is changed, jsparser_new(), jsparser_copy() and + * jsparser_reset() should be updated accordingly. + */ +typedef struct jsparser_ctx_s { + + /* Reference to the statemachine context. */ + statemachine_ctx *statemachine; + + /* Reference to the statemachine definition. + * + * It should be readonly and contain the same values across jsparser + * instances. + */ + /* TODO(falmeida): Change statemachine_def to const. */ + statemachine_definition *statemachine_def; + + /* Index to the start of the buffer. */ + int buffer_start; + + /* Index the current writing position (end of the buffer plus one). */ + int buffer_end; + + /* Ring buffer used to lookup the last token. */ + char buffer[JSPARSER_RING_BUFFER_SIZE]; + +} jsparser_ctx; + + +void jsparser_reset(jsparser_ctx *ctx); +jsparser_ctx *jsparser_new(void); + +/* Returns a pointer to a context which is a duplicate of the jsparser src. + */ +jsparser_ctx *jsparser_duplicate(jsparser_ctx *src); + +/* Copies the context of the jsparser pointed to by src to the jsparser dst. + */ +void jsparser_copy(jsparser_ctx *dst, jsparser_ctx *src); +int jsparser_state(jsparser_ctx *ctx); +int jsparser_parse(jsparser_ctx *ctx, const char *str, int size); + +void jsparser_delete(jsparser_ctx *ctx); + +/** + * Ring buffer functions. + * + * These functions are only exported for testing and should not be called from + * outside of jsparser.c in production code. + */ + +/* Appends a character to the ring buffer. + * + * Sequences of whitespaces and newlines are folded into one character. + */ +void jsparser_buffer_append_chr(jsparser_ctx *js, char chr); + +/* Appends a string to the ring buffer. + * + * Sequences of whitespaces and newlines are folded into one character. + */ +void jsparser_buffer_append_str(jsparser_ctx *js, const char *str); + +/* Returns the last appended character and removes it from the buffer. If the + * buffer is empty, then it returns ASCII 0 ('\0'). + */ +char jsparser_buffer_pop(jsparser_ctx *js); + +/* Returns the value of the character at a certain index in the buffer or an + * ASCII 0 ('\0') character if the index is extends beyond the size of the + * buffer, either because we don't have as many characters in the buffer, or + * because the index points to a place bigger than the size of the buffer.. + * + * Index positions must be negative, where -1 is the last character appended to + * the buffer. + */ +char jsparser_buffer_get(jsparser_ctx *js, int pos); + +/* Sets the value of the character at a certain index in the buffer. Returns + * true if the write was successful or false if there was an attempt to write + * outside of the buffer boundaries. + * + * Index positions are negative, were -1 is the last character appended to the + * buffer. Using positive integers for the index will result in undefined + * behaviour. + */ +int jsparser_buffer_set(jsparser_ctx *js, int pos, char value); + +/* Copies a slice of the buffer to the string pointed to by output. start and + * end are the indexes of the sliced region. If the start argument extends + * beyond the beginning of the buffer, the slice will only contain characters + * starting from beginning of the buffer. + */ +void jsparser_buffer_slice(jsparser_ctx *js, char *buffer, int start, int end); + +/* Copy the last javascript identifier or keyword found in the buffer to the + * string pointed by identifier. + */ +int jsparser_buffer_last_identifier(jsparser_ctx *js, char *identifier); + + +#define jsparser_parse_chr(a,b) jsparser_parse(a, &(b), 1); +#ifdef __cplusplus +#define jsparser_parse_str(a,b) jsparser_parse(a, b, \ + static_cast(strlen(b))); +#else +#define jsparser_parse_str(a,b) jsparser_parse(a, b, (int)strlen(b)); +#endif + +#endif /* STREAMHTMLPARSER_JSPARSER_H */ diff --git a/streamhtmlparser/include/statemachine.h b/streamhtmlparser/include/statemachine.h new file mode 100644 index 0000000..a05ffe7 --- /dev/null +++ b/streamhtmlparser/include/statemachine.h @@ -0,0 +1,224 @@ +/* Copyright (c) 2007, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Filipe Almeida + */ + +#ifndef STREAMHTMLPARSER_STATEMACHINE_H +#define STREAMHTMLPARSER_STATEMACHINE_H + +/* TODO(falmeida): I'm not sure about these limits, but since right now we only + * have 24 states it should be fine */ + +enum { + STATEMACHINE_ERROR = 127 +}; + +#define STATEMACHINE_RECORD_BUFFER_SIZE 256 + +#define STATEMACHINE_MAX_STR_ERROR 80 + +struct statemachine_ctx_s; + +typedef void(*state_event_function)(struct statemachine_ctx_s *, int, char, + int); + +typedef struct statemachine_definition_s { + int num_states; + const int* const* transition_table; + + /* Array containing the name of the states as a C string. + * This field is optional and if not in use it should be set to NULL. + */ + const char* const* state_names; + state_event_function *in_state_events; + state_event_function *enter_state_events; + state_event_function *exit_state_events; +} statemachine_definition; + +typedef struct statemachine_ctx_s { + int current_state; + int next_state; + statemachine_definition *definition; + char current_char; + + /* Current line number. */ + int line_number; + + /* Current column number. */ + int column_number; + char record_buffer[STATEMACHINE_RECORD_BUFFER_SIZE]; + size_t record_pos; + + /* True if we are recording the stream to record_buffer. */ + int recording; + + /* In case there was an error (we are in state STATEMACHINE_ERROR), it will + * contain a human readable description of the error. + */ + char error_msg[STATEMACHINE_MAX_STR_ERROR]; + + /* Storage space for the layer above. */ + void *user; +} statemachine_ctx; + +/* Populates the statemachine definition. + * + * Receives a transition table and an optional array of state names. It uses + * this data to populate the state machine definition. + * + * The transition table structure is a list of lists of ints (int **). The + * outer list indexes the source state and the inner list contains the + * destination state for each of the possible input characters: + * + * const int* const* transitions[source][input] == destination. + * + * The optional argument state_names points to a list of strings containing + * human readable state names. These strings are used when reporting error + * messages. + */ +void statemachine_definition_populate(statemachine_definition *def, + const int* const* transition_table, + const char* const* state_names); + +void statemachine_in_state(statemachine_definition *def, int st, + state_event_function func); +void statemachine_enter_state(statemachine_definition *def, int st, + state_event_function func); +void statemachine_exit_state(statemachine_definition *def, int st, + state_event_function func); + +statemachine_definition *statemachine_definition_new(int states); +void statemachine_definition_delete(statemachine_definition *def); + +int statemachine_get_state(statemachine_ctx *ctx); +void statemachine_set_state(statemachine_ctx *ctx, int state); + +void statemachine_start_record(statemachine_ctx *ctx); +const char *statemachine_stop_record(statemachine_ctx *ctx); +const char *statemachine_record_buffer(statemachine_ctx *ctx); + +/* Returns the the number of characters currently stored in the record buffer. + */ +static inline size_t statemachine_record_length(statemachine_ctx *ctx) { + return ctx->record_pos + 1; +} + +/* Return the current line number. */ +static inline int statemachine_get_line_number(statemachine_ctx *ctx) { + return ctx->line_number; +} + +/* Set the current line number. */ +static inline void statemachine_set_line_number(statemachine_ctx *ctx, + int line) { + ctx->line_number = line; +} + +/* Return the current column number. */ +static inline int statemachine_get_column_number(statemachine_ctx *ctx) { + return ctx->column_number; +} + +/* Set the current column number. */ +static inline void statemachine_set_column_number(statemachine_ctx *ctx, + int column) { + ctx->column_number = column; +} + + +/* Retrieve a human readable error message in case an error occurred. + * + * NULL is returned if the parser didn't encounter an error. + */ +static inline const char *statemachine_get_error_msg(statemachine_ctx *ctx) { + if (ctx->next_state == STATEMACHINE_ERROR) { + return ctx->error_msg; + } else { + return NULL; + } +} + +/* Reset the statemachine. + * + * The state is set to the initialization values. This includes setting the + * state to the default state (0), stopping recording and setting the line + * number to 1. + */ +void statemachine_reset(statemachine_ctx *ctx); + +/* Initializes a new statemachine. Receives a statemachine definition object + * that should have been initialized with statemachine_definition_new() and a + * user reference to be used by the caller. + * + * Returns NULL if initialization fails. + * + * Initialization failure is fatal, and if this function fails it may not + * deallocate all previsouly allocated memory. + */ +statemachine_ctx *statemachine_new(statemachine_definition *def, + void *user); + +/* Returns a pointer to a context which is a duplicate of the statemachine src. + * The statemachine definition and the user pointer have to be provided since + * these references are not owned by the statemachine itself. + */ +statemachine_ctx *statemachine_duplicate(statemachine_ctx *ctx, + statemachine_definition *def, + void *user); + +/* Copies the context of the statemachine pointed to by src to the statemachine + * provided by dst. + * The statemachine definition and the user pointer have to be provided since + * these references are not owned by the statemachine itself. + */ +void statemachine_copy(statemachine_ctx *dst, + statemachine_ctx *src, + statemachine_definition *def, + void *user); + +int statemachine_parse(statemachine_ctx *ctx, const char *str, int size); + +void statemachine_delete(statemachine_ctx *ctx); + + +/***** + * The following functions are only exported for testing purposes and should + * be treated as private. */ + + +/* Encode the character as an escaped C string. + * + * Encode the character chr into the string output. Writes at most len + * characters to the output string but makes sure output is NULL terminated. + */ +void statemachine_encode_char(char chr, char *output, size_t len); + +#endif /* STREAMHTMLPARSER_STATEMACHINE_H */ diff --git a/streamhtmlparser/jsparser.c b/streamhtmlparser/jsparser.c new file mode 100644 index 0000000..9d71c74 --- /dev/null +++ b/streamhtmlparser/jsparser.c @@ -0,0 +1,662 @@ +/* Copyright (c) 2007, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Filipe Almeida + */ + +#include "config.h" +#include +#include +#include +#include + +#include "statemachine.h" +#include "jsparser.h" + +/* So we can support both C and C++ compilers, we use the CAST() macro instead + * of using C style casts or static_cast<>() directly. + */ +#ifdef __cplusplus + #define CAST(type, expression) (static_cast(expression)) +#else + #define CAST(type, expression) ((type)(expression)) +#endif + +/* Generated state machine definition. */ +#include "jsparser_fsm.h" + +/* List of keywords that can precede a regular expression literal. Taken from: + * http://www.mozilla.org/js/language/js20-2000-07/rationale/syntax.html + * + * 'void' was added to this list. + * The list is used as input to a binary search, so it must be kept in a sorted + * form. + * There are a large number of keywords in here that don't exist in + * ecmascript 3, either because they are reserved or because they are part of + * ecmascript 4. However they weren't removed in order to keep the list in sync + * with the previous document. + */ +static const char *regexp_token_prefix[] = { + "abstract", + "break", + "case", + "catch", + "class", + "const", + "continue", + "debugger", + "default", + "delete", + "do", + "else", + "enum", + "eval", + "export", + "extends", + "field", + "final", + "finally", + "for", + "function", + "goto", + "if", + "implements", + "import", + "in", + "instanceof", + "native", + "new", + "package", + "private", + "protected", + "public", + "return", + "static", + "switch", + "synchronized", + "throw", + "throws", + "transient", + "try", + "typeof", + "var", + "void", + "volatile", + "while", + "with" +}; + +/* Utility functions */ + +/* Converts the internal state into the external superstate. + */ +static inline int state_external(int state) +{ + assert(state < JSPARSER_NUM_STATES); + assert(state >= 0); + return jsparser_states_external[state]; +} + +/* Returns true if the character is an ecmascript whitespace or line terminator + * character. Includes the characters in sections 7.2 and 7.3 of ECMAScript 3 + * with the exception of unicode space and line terminators: + * http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf + */ +static inline int js_is_whitespace(char c) +{ + return c == '\t' || /* Tab 0x09 */ + c == '\v' || /* Vertical Tab 0x0B */ + c == '\f' || /* Form Feed 0x0C */ + c == ' ' || /* Space 0x20 */ + c == '\xa0' || /* No-Break Space 0xA0 */ + c == '\n' || /* line Feed 0x0A */ + c == '\r'; /* Carriage Return 0x0D */ +} + +/* Returns true if the character is part of a javascript identifier. The rules + * are pretty relaxed here since we don't accept unicode and don't care if the + * first character doesn't contain numbers or not. + * + * For more detail on the limitations of having this relaxed set of characters + * please see the comments in_state_js_text(). + */ +static inline int js_is_identifier(char c) { + return (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c == '_' || + c == '$'; +} + +/* Appends a character to the ring buffer. Sequences of whitespace and newlines + * are folded into one. + * + * js->buffer_start points to the first character in the buffer and + * js->buffer_end points to the position of the next character to be written, + * or one plus the last character written. If the buffer is full there will be + * an empty slot position so we can diferentiate an empty buffer from a full + * buffer. + * + * If the buffer is empty, then: + * js->buffer_start == js->buffer_end. + * If the buffer is full, then: + * (js->buffer_end + 1) % JSPARSER_RING_BUFFER_SIZE == js->buffer_start. + * + */ +void jsparser_buffer_append_chr(jsparser_ctx *js, char chr) +{ + /* Fold whitespace so we have enough space in the buffer. */ + if (js_is_whitespace(chr) && + js_is_whitespace(jsparser_buffer_get(js, -1))) { + return; + } + + js->buffer[js->buffer_end] = chr; + js->buffer_end = (js->buffer_end + 1) % JSPARSER_RING_BUFFER_SIZE; + if (js->buffer_end == js->buffer_start) { + js->buffer_start = (js->buffer_end + 1) % + JSPARSER_RING_BUFFER_SIZE; + } +} + +/* Appends a string to the ring buffer. Sequences of whitespace and newlines + * are folded into one. + */ +void jsparser_buffer_append_str(jsparser_ctx *js, const char *str) +{ + assert(js != NULL); + assert(str != NULL); + + while(*str != '\0') { + jsparser_buffer_append_chr(js, *str++); + } +} + +/* Returns the position relative to the start of the buffer or -1 if past the + * size of the buffer.. + */ +static inline int jsparser_buffer_absolute_pos(jsparser_ctx *js, int pos) +{ + int absolute_pos; + int buffer_len; + assert(pos < 0); + + if(pos <= -JSPARSER_RING_BUFFER_SIZE) { + return -1; + } + + buffer_len = js->buffer_end - js->buffer_start; + if (buffer_len < 0) { + buffer_len += JSPARSER_RING_BUFFER_SIZE; + } + + if (pos < -buffer_len) { + return -1; + } + + absolute_pos = (pos + js->buffer_end) % JSPARSER_RING_BUFFER_SIZE; + if (absolute_pos < 0) { + absolute_pos += JSPARSER_RING_BUFFER_SIZE; + } + + return absolute_pos; +} + +/* Returns the last appended character and removes it from the buffer. If the + * buffer is empty, then it returns ASCII 0 ('\0'). + */ +char jsparser_buffer_pop(jsparser_ctx *js) +{ + if (js->buffer_start == js->buffer_end) { + return '\0'; + } + + js->buffer_end--; + if (js->buffer_end < 0) { + js->buffer_end += JSPARSER_RING_BUFFER_SIZE; + } + + return js->buffer[js->buffer_end]; +} + +/* Returns the value of the character at a certain index in the buffer or an + * ASCII 0 ('\0') character if the index is outside the buffer boundaries. + * + * Index positions are negative, were -1 is the last character appended to the + * buffer. Using positive integers for the index will result in undefined + * behaviour. + */ +char jsparser_buffer_get(jsparser_ctx *js, int pos) +{ + int absolute_pos; + assert(pos < 0); + + absolute_pos = jsparser_buffer_absolute_pos(js, pos); + if (absolute_pos < 0) { + return '\0'; + } + + return js->buffer[absolute_pos]; +} + +/* Sets the value of the character at a certain index in the buffer. Returns + * true if the write was successful or false if there was an attempt to write + * outside of the buffer boundaries. + * + * Index positions are negative, were -1 is the last character appended to the + * buffer. Using positive integers for the index will result in undefined + * behaviour. + */ +int jsparser_buffer_set(jsparser_ctx *js, int pos, char value) +{ + int absolute_pos; + assert(pos < 0); + + absolute_pos = jsparser_buffer_absolute_pos(js, pos); + if (absolute_pos < 0) { + return 0; + } + + js->buffer[absolute_pos] = value; + return 1; +} + +/* Copies a slice of the buffer to the string pointed to by output. start and + * end are the indexes of the sliced region. If start extends beyond the + * beginning of the buffer, the slice will only contain character from the + * beginning of the buffer. + */ +void jsparser_buffer_slice(jsparser_ctx *js, char *output, int start, int end) +{ + int pos; + + assert(start <= end); + assert(start < 0); + assert(end < 0); + + for (pos = start; pos <= end; ++pos) { + char c; + c = jsparser_buffer_get(js, pos); + if (c != '\0') { + *output++ = jsparser_buffer_get(js, pos); + } + } + *output++ = '\0'; +} + +/* Copy the last javascript identifier or keyword found in the buffer to the + * string pointed by identifier. + * + * For simplicity, we consider an identifier to be a sequence of alphanumeric + * characters (as opposed to a digit followed by an alphanumeric character. + * + * Returns 0 if no identifier was matched, in which case the identifier + * argument is replaced with an empty string, or non 0 if the identifier was + * found. + */ +int jsparser_buffer_last_identifier(jsparser_ctx *js, char *identifier) +{ + int end; + int pos; + + assert(identifier != NULL); + + end = -1; + /* Ignore the optional whitespace delimiter */ + if (js_is_whitespace(jsparser_buffer_get(js, -1))) { + --end; + } + + /* Find the beginning of the identifier. This loop ends either when we find a + * character that doesn't belong to an identifier, or when we find a '\0' + * character, which means we reached the end of the buffer. */ + for(pos = end; js_is_identifier(jsparser_buffer_get(js, pos)); --pos) { + } + if (pos + 1 >= end) { + identifier[0] = '\0'; + return 0; + } + + jsparser_buffer_slice(js, identifier, pos + 1, end); + return 1; +} + +/* Callback used in bsearch() for comparing a string against an array of + * strings. + */ +static int bsearch_strcmp(const void *a, const void *b) +{ + return strcmp(CAST(const char*, a), *CAST(const char * const *, b)); +} + +/* Returns true if the token argument can be a token prefix to a javascript + * regular expression. + * + * The token argument is compared against a list of identifiers that can + * precede a regular expression in the javascript grammar, and returns true if + * the argument is found on that list. + */ +static inline int is_regexp_token_prefix(char *token) +{ + assert(token != NULL); + + return bsearch(token, + regexp_token_prefix, + sizeof(regexp_token_prefix) / sizeof(char *), + sizeof(char *), bsearch_strcmp) != NULL; +} + +/* Called for every character in state text. + * + * We copy every character we find when we are in state text to the ring + * buffer. This has the side effect of also pushing slash characters that are + * part of comments into the buffer, although for parsing purposes these should + * be treated as whitespace. This issue is addressed in + * enter_state_js_comment_ml_after(). + */ +static void in_state_js_text(statemachine_ctx *ctx, int start, char chr, + int end) +{ + jsparser_ctx *js = CAST(jsparser_ctx *, ctx->user); + assert(js != NULL); + + (void)start; + (void)end; + + jsparser_buffer_append_chr(js, chr); +} + +/* This function is called every time we find a slash ('/') character in the + * javascript text (except for slashes that close comments or regexp literals). + * + * Implements the logic to figure out if this slash character is a division + * operator or if it opens a regular expression literal. This is heavily + * inspired by the syntactic resynchronization for javascript 2.0: + * http://www.mozilla.org/js/language/js20-2000-07/rationale/syntax.html + * + * When we receive a '/', we look at the previous non space character to figure + * out if it's the ending of a punctuator that can precede a regexp literal, in + * which case we assume the current '/' is part of a regular expression literal + * (or the opening of a javascript comment, but that part is dealt with in the + * state machine). The exceptions to this are unary operators, so we look back + * a second character to rule out '++' and '--'. Although it is not + * straightforward to figure out if the binary operator is a postfix of the + * previous expression or a prefix of the regular expression, we rule out the + * later as it is an uncommon practice. + * + * If we ruled out the previous token to be a valid regexp preceding + * punctuator, we extract the last identifier in the buffer and match against a + * list of keywords that are known to precede expressions in the grammar. If we + * get a match on any of these keywords, then we are opening a regular + * expression, if not, then we have a division operator. + * + * Known cases that are accepted by the grammar but we handle differently, + * although I don't believe there is a legitimate usage for those: + * + * Division of a regular expression: + * var result = /test/ / 5; + * + * Prefix unary increment of a regular expression: + * var result = ++/test/; + * + * Division of an object literal: + * { a: 1 } /x/.exec('x'); + * + * We only support ascii right now, so unicode characters in identifiers will + * be treated as delimiters, effectively breaking the identifier name where + * they appear, and this may cause issues in very specific situations. Namely, + * if we have a unicode character in an identifier directly preceding a suffix + * that matches one of the keywords in regexp_token_prefix[], if this + * identifier precedes a / (slash) character: + * + * var x = testreturn / 5; + * + * We will interpret that slash as the start of a regular expression, when in + * reality it is a division operator. + */ +static void enter_state_js_slash(statemachine_ctx *ctx, int start, char chr, + int end) +{ + jsparser_ctx *js; + char buffer[JSPARSER_RING_BUFFER_SIZE]; + int pos; + + (void)start; + (void)end; + + assert(ctx != NULL); + assert(ctx->user != NULL); + + js = CAST(jsparser_ctx *, ctx->user); + assert(js != NULL); + + pos = -1; + /* Consume the last whitespace. */ + if (js_is_whitespace(jsparser_buffer_get(js, pos))) { + --pos; + } + + switch (jsparser_buffer_get(js, pos)) { + /* Ignore unary increment */ + case '+': + if (jsparser_buffer_get(js, pos - 1) != '+') { + ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH; + } + break; + + /* Ignore unary decrement */ + case '-': + if (jsparser_buffer_get(js, pos - 1) != '-') { + ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH; + } + break; + + /* List of punctuator endings except ), ], }, + and - */ + case '=': + case '<': + case '>': + case '&': + case '|': + case '!': + case '%': + case '*': + case '/': + case ',': + case ';': + case '?': + case ':': + case '^': + case '~': + case '{': + case '(': + case '[': + case '}': + case '\0': + ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH; + break; + + default: + if (jsparser_buffer_last_identifier(js, buffer) && + is_regexp_token_prefix(buffer)) { + ctx->next_state = JSPARSER_STATE_INT_JS_REGEXP_SLASH; + } + } + + jsparser_buffer_append_chr(js, chr); +} + +/* Called at the end of a javascript comment. + * + * When we open a comment, the initial '/' was inserted into the ring buffer, + * but it is not a token and should be considered whitespace for parsing + * purposes. + * + * When we first saw the '/' character, we didn't yet know if it was the + * beginning of a comment, a division operator, or a regexp. + * + * In this function we just replace the inital '/' with a whitespace character, + * unless we had a preceding whitespace character, in which case we just remove + * the '/'. This is needed to ensure all spaces in the buffer are correctly + * folded. + */ +static void enter_state_js_comment_after(statemachine_ctx *ctx, int start, + char chr, int end) +{ + jsparser_ctx *js; + + assert(ctx != NULL); + assert(ctx->user != NULL); + + (void)start; + (void)chr; + (void)end; + + js = CAST(jsparser_ctx *, ctx->user); + + if (js_is_whitespace(jsparser_buffer_get(js, -2))) { + (void)jsparser_buffer_pop(js); + } else { + jsparser_buffer_set(js, -1, ' '); + } +} + +static statemachine_definition *create_statemachine_definition(void) +{ + statemachine_definition *def; + def = statemachine_definition_new(JSPARSER_NUM_STATES); + if (def == NULL) + return NULL; + + /* TODO(falmeida): Check return value. */ + statemachine_definition_populate(def, jsparser_state_transitions, + jsparser_states_internal_names); + + statemachine_in_state(def, JSPARSER_STATE_INT_JS_TEXT, + in_state_js_text); + statemachine_enter_state(def, JSPARSER_STATE_INT_JS_SLASH, + enter_state_js_slash); + statemachine_enter_state(def, JSPARSER_STATE_INT_JS_COMMENT_AFTER, + enter_state_js_comment_after); + + return def; +} + + +/* Initializes a new jsparser instance. + * + * Returns a pointer to the new instance or NULL if the initialization + * fails. + * + * Initialization failure is fatal, and if this function fails it may not + * deallocate all previsouly allocated memory. + */ + +jsparser_ctx *jsparser_new(void) +{ + jsparser_ctx *js; + + js = CAST(jsparser_ctx *, calloc(1, sizeof(jsparser_ctx))); + if (js == NULL) + return NULL; + + js->statemachine_def = create_statemachine_definition(); + if (js->statemachine_def == NULL) + return NULL; + + js->statemachine = statemachine_new(js->statemachine_def, js); + if (js->statemachine == NULL) + return NULL; + + jsparser_reset(js); + + return js; +} + +/* Returns a pointer to a context which is a duplicate of the jsparser src. + */ +jsparser_ctx *jsparser_duplicate(jsparser_ctx *src) +{ + jsparser_ctx *dst; + assert(src != NULL); + + dst = jsparser_new(); + if (dst == NULL) + return NULL; + + jsparser_copy(dst, src); + + return dst; +} + +/* Copies the context of the jsparser pointed to by src to the jsparser dst. + * + * The state machine definition is preserved since it is read only. + */ +void jsparser_copy(jsparser_ctx *dst, jsparser_ctx *src) +{ + + dst->buffer_start = src->buffer_start; + dst->buffer_end = src->buffer_end; + memcpy(dst->buffer, src->buffer, sizeof(src->buffer)); + + statemachine_copy(dst->statemachine, + src->statemachine, + dst->statemachine_def, + dst); + +} + +void jsparser_reset(jsparser_ctx *ctx) +{ + assert(ctx != NULL); + ctx->statemachine->current_state = 0; + ctx->buffer_start = 0; + ctx->buffer_end = 0; +} + +int jsparser_state(jsparser_ctx *ctx) +{ + return state_external(ctx->statemachine->current_state); +} + +int jsparser_parse(jsparser_ctx *ctx, const char *str, int size) +{ + int internal_state; + internal_state = statemachine_parse(ctx->statemachine, str, size); + return state_external(internal_state); +} + +void jsparser_delete(jsparser_ctx *ctx) +{ + assert(ctx != NULL); + statemachine_delete(ctx->statemachine); + statemachine_definition_delete(ctx->statemachine_def); + free(ctx); +} diff --git a/streamhtmlparser/jsparser_fsm.config b/streamhtmlparser/jsparser_fsm.config new file mode 100644 index 0000000..830e13a --- /dev/null +++ b/streamhtmlparser/jsparser_fsm.config @@ -0,0 +1,157 @@ +# Copyright 2008 Google Inc. All Rights Reserved. +# Author: falmeida@google.com (Filipe Almeida) + +name = 'jsparser' + +comment = 'Simplified finite state machine for tracking of javascript states' + +condition('q', '\''), +condition('dq', '\"'), +condition('/', '/'), +condition('*', '*'), +condition('[', '['), +condition(']', ']'), +condition('lf', '\n'), +condition('backslash', '\\'), +condition('default', '[:default:]') + +# Main javascript body. +state(name = 'js_text', + external = 'text', + transitions = [ + ['q', 'js_q'], + ['dq', 'js_dq'], + ['/', 'js_slash'], + ['default', 'js_text'] + ]) + +# Single quoted string literal. +state(name = 'js_q', + external = 'q', + transitions = [ + ['backslash', 'js_q_e'], + ['q', 'js_text'], + ['default', 'js_q'] + ]) + +# Javascript escaped character in a single quoted string literal. +state(name = 'js_q_e', + external = 'q', + transitions = [ + ['default', 'js_q'] + ]) + +# Double quoted string literal +state(name = 'js_dq', + external = 'dq', + transitions = [ + ['backslash', 'js_dq_e'], + ['dq', 'js_text'], + ['default', 'js_dq'] + ]) + +# Javascript escaped character in a double quoted string literal. +state(name = 'js_dq_e', + external = 'dq', + transitions = [ + ['default', 'js_dq'] + ]) + +# Possible start of a javascript comment. +state(name = 'js_slash', + external = 'text', + transitions = [ + ['/', 'js_comment_ln'], + ['*', 'js_comment_ml'], + ['default', 'js_text'] + ]) + +# Possible start of a regular expression literal. +# +# The state diagram does not reach this state directly. When js_slash is +# reached, the function enter_state_js_slash() is called, which checks if the +# last token belongs to the set of tokens that can precede a regular +# expression, in which case it changes the state to js_regexp_slash. +# +# For more information please read the comments in +# jsparser.c:enter_state_js_slash(). +state(name = 'js_regexp_slash', + external = 'text', + transitions = [ + ['/', 'js_comment_ln'], + ['*', 'js_comment_ml'], + ['backslash', 'js_regexp_e'], + ['[', 'js_regexp_bracket'], + ['default', 'js_regexp'] + ]) + +# Regular expression literal. +state(name = 'js_regexp', + external = 'regexp', + transitions = [ + ['backslash', 'js_regexp_e'], + ['[', 'js_regexp_bracket'], + ['/', 'js_text'], + ['default', 'js_regexp'] + ]) + +# Regexp bracket expression +state(name = 'js_regexp_bracket', + external = 'regexp', + transitions = [ + ['backslash', 'js_regexp_bracket_e'], + [']', 'js_regexp'], + ['default', 'js_regexp_bracket'] + ]) + +# Backslash escaped regexp bracket expression +state(name = 'js_regexp_bracket_e', + external = 'regexp', + transitions = [ + ['default', 'js_regexp_bracket'] + ]) + +# Escaped regular expression char. +state(name = 'js_regexp_e', + external = 'regexp', + transitions = [ + ['default', 'js_regexp'] + ]) + +# Start of a single line javascript comment (//). +state(name = 'js_comment_ln', + external = 'comment', + transitions = [ + ['lf', 'js_comment_after'], + ['default', 'js_comment_ln'] + ]) + +# Start of a multiline javascript comment (/*). +state(name = 'js_comment_ml', + external = 'comment', + transitions = [ + ['*', 'js_comment_ml_close'], + ['default', 'js_comment_ml'] + ]) + +# Close of a multiline javascript comment (*/). +state(name = 'js_comment_ml_close', + external = 'comment', + transitions = [ + ['/', 'js_comment_after'], + ['default', 'js_comment_ml'] + ]) + +# Ending character of a javascript comment. +# In can either be a '/ in the case of a multiline comment, or a line +# terminator in the case of a single line comment. +# This is needed so we don't insert the '/' or the new line character into the +# ring buffer. +state(name = 'js_comment_after', + external = 'text', + transitions = [ + ['q', 'js_q'], + ['dq', 'js_dq'], + ['/', 'js_slash'], + ['default', 'js_text'] + ]) diff --git a/streamhtmlparser/jsparser_fsm.h b/streamhtmlparser/jsparser_fsm.h new file mode 100644 index 0000000..aba093b --- /dev/null +++ b/streamhtmlparser/jsparser_fsm.h @@ -0,0 +1,3946 @@ +/* Simplified finite state machine for tracking of javascript states + * Auto generated by generate_fsm.py. Please do not edit. + */ +#define JSPARSER_NUM_STATES 16 +enum jsparser_state_internal_enum { + JSPARSER_STATE_INT_JS_TEXT, + JSPARSER_STATE_INT_JS_Q, + JSPARSER_STATE_INT_JS_Q_E, + JSPARSER_STATE_INT_JS_DQ, + JSPARSER_STATE_INT_JS_DQ_E, + JSPARSER_STATE_INT_JS_SLASH, + JSPARSER_STATE_INT_JS_REGEXP_SLASH, + JSPARSER_STATE_INT_JS_REGEXP, + JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + JSPARSER_STATE_INT_JS_REGEXP_BRACKET_E, + JSPARSER_STATE_INT_JS_REGEXP_E, + JSPARSER_STATE_INT_JS_COMMENT_LN, + JSPARSER_STATE_INT_JS_COMMENT_ML, + JSPARSER_STATE_INT_JS_COMMENT_ML_CLOSE, + JSPARSER_STATE_INT_JS_COMMENT_AFTER +}; + +static const int jsparser_states_external[] = { + JSPARSER_STATE_TEXT, + JSPARSER_STATE_Q, + JSPARSER_STATE_Q, + JSPARSER_STATE_DQ, + JSPARSER_STATE_DQ, + JSPARSER_STATE_TEXT, + JSPARSER_STATE_TEXT, + JSPARSER_STATE_REGEXP, + JSPARSER_STATE_REGEXP, + JSPARSER_STATE_REGEXP, + JSPARSER_STATE_REGEXP, + JSPARSER_STATE_COMMENT, + JSPARSER_STATE_COMMENT, + JSPARSER_STATE_COMMENT, + JSPARSER_STATE_TEXT +}; + +static const char * jsparser_states_internal_names[] = { + "js_text", + "js_q", + "js_q_e", + "js_dq", + "js_dq_e", + "js_slash", + "js_regexp_slash", + "js_regexp", + "js_regexp_bracket", + "js_regexp_bracket_e", + "js_regexp_e", + "js_comment_ln", + "js_comment_ml", + "js_comment_ml_close", + "js_comment_after" +}; + +static const int jsparser_transition_row_js_text[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x01' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x02' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x03' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x04' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x05' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x06' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x07' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x08' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\t' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\n' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\r' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x10' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x11' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x12' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x13' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x14' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x15' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x16' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x17' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x18' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x19' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1f' */ JSPARSER_STATE_INT_JS_TEXT, + /* ' ' */ JSPARSER_STATE_INT_JS_TEXT, + /* '!' */ JSPARSER_STATE_INT_JS_TEXT, + /* '"' */ JSPARSER_STATE_INT_JS_DQ, + /* '#' */ JSPARSER_STATE_INT_JS_TEXT, + /* '$' */ JSPARSER_STATE_INT_JS_TEXT, + /* '%' */ JSPARSER_STATE_INT_JS_TEXT, + /* '&' */ JSPARSER_STATE_INT_JS_TEXT, + /* "'" */ JSPARSER_STATE_INT_JS_Q, + /* '(' */ JSPARSER_STATE_INT_JS_TEXT, + /* ')' */ JSPARSER_STATE_INT_JS_TEXT, + /* '*' */ JSPARSER_STATE_INT_JS_TEXT, + /* '+' */ JSPARSER_STATE_INT_JS_TEXT, + /* ',' */ JSPARSER_STATE_INT_JS_TEXT, + /* '-' */ JSPARSER_STATE_INT_JS_TEXT, + /* '.' */ JSPARSER_STATE_INT_JS_TEXT, + /* '/' */ JSPARSER_STATE_INT_JS_SLASH, + /* '0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '9' */ JSPARSER_STATE_INT_JS_TEXT, + /* ':' */ JSPARSER_STATE_INT_JS_TEXT, + /* ';' */ JSPARSER_STATE_INT_JS_TEXT, + /* '<' */ JSPARSER_STATE_INT_JS_TEXT, + /* '=' */ JSPARSER_STATE_INT_JS_TEXT, + /* '>' */ JSPARSER_STATE_INT_JS_TEXT, + /* '?' */ JSPARSER_STATE_INT_JS_TEXT, + /* '@' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'A' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'B' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'C' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'D' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'E' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'F' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'G' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'H' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'I' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'J' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'K' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'L' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'M' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'N' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'O' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'P' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Q' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'R' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'S' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'T' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'U' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'V' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'W' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'X' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Y' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Z' */ JSPARSER_STATE_INT_JS_TEXT, + /* '[' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\\' */ JSPARSER_STATE_INT_JS_TEXT, + /* ']' */ JSPARSER_STATE_INT_JS_TEXT, + /* '^' */ JSPARSER_STATE_INT_JS_TEXT, + /* '_' */ JSPARSER_STATE_INT_JS_TEXT, + /* '`' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'a' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'b' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'c' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'd' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'e' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'f' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'g' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'h' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'i' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'j' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'k' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'l' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'm' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'n' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'o' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'p' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'q' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'r' */ JSPARSER_STATE_INT_JS_TEXT, + /* 's' */ JSPARSER_STATE_INT_JS_TEXT, + /* 't' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'u' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'v' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'w' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'x' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'y' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'z' */ JSPARSER_STATE_INT_JS_TEXT, + /* '{' */ JSPARSER_STATE_INT_JS_TEXT, + /* '|' */ JSPARSER_STATE_INT_JS_TEXT, + /* '}' */ JSPARSER_STATE_INT_JS_TEXT, + /* '~' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x7f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x80' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x81' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x82' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x83' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x84' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x85' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x86' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x87' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x88' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x89' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x90' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x91' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x92' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x93' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x94' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x95' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x96' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x97' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x98' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x99' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xaa' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xab' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xac' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xad' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xae' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xaf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xba' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbe' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xca' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xce' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xda' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xde' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xea' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xeb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xec' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xed' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xee' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xef' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfa' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfe' */ JSPARSER_STATE_INT_JS_TEXT +}; + +static const int jsparser_transition_row_js_q[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_Q, + /* '\x01' */ JSPARSER_STATE_INT_JS_Q, + /* '\x02' */ JSPARSER_STATE_INT_JS_Q, + /* '\x03' */ JSPARSER_STATE_INT_JS_Q, + /* '\x04' */ JSPARSER_STATE_INT_JS_Q, + /* '\x05' */ JSPARSER_STATE_INT_JS_Q, + /* '\x06' */ JSPARSER_STATE_INT_JS_Q, + /* '\x07' */ JSPARSER_STATE_INT_JS_Q, + /* '\x08' */ JSPARSER_STATE_INT_JS_Q, + /* '\t' */ JSPARSER_STATE_INT_JS_Q, + /* '\n' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0c' */ JSPARSER_STATE_INT_JS_Q, + /* '\r' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0f' */ JSPARSER_STATE_INT_JS_Q, + /* '\x10' */ JSPARSER_STATE_INT_JS_Q, + /* '\x11' */ JSPARSER_STATE_INT_JS_Q, + /* '\x12' */ JSPARSER_STATE_INT_JS_Q, + /* '\x13' */ JSPARSER_STATE_INT_JS_Q, + /* '\x14' */ JSPARSER_STATE_INT_JS_Q, + /* '\x15' */ JSPARSER_STATE_INT_JS_Q, + /* '\x16' */ JSPARSER_STATE_INT_JS_Q, + /* '\x17' */ JSPARSER_STATE_INT_JS_Q, + /* '\x18' */ JSPARSER_STATE_INT_JS_Q, + /* '\x19' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1a' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1c' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1d' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1f' */ JSPARSER_STATE_INT_JS_Q, + /* ' ' */ JSPARSER_STATE_INT_JS_Q, + /* '!' */ JSPARSER_STATE_INT_JS_Q, + /* '"' */ JSPARSER_STATE_INT_JS_Q, + /* '#' */ JSPARSER_STATE_INT_JS_Q, + /* '$' */ JSPARSER_STATE_INT_JS_Q, + /* '%' */ JSPARSER_STATE_INT_JS_Q, + /* '&' */ JSPARSER_STATE_INT_JS_Q, + /* "'" */ JSPARSER_STATE_INT_JS_TEXT, + /* '(' */ JSPARSER_STATE_INT_JS_Q, + /* ')' */ JSPARSER_STATE_INT_JS_Q, + /* '*' */ JSPARSER_STATE_INT_JS_Q, + /* '+' */ JSPARSER_STATE_INT_JS_Q, + /* ',' */ JSPARSER_STATE_INT_JS_Q, + /* '-' */ JSPARSER_STATE_INT_JS_Q, + /* '.' */ JSPARSER_STATE_INT_JS_Q, + /* '/' */ JSPARSER_STATE_INT_JS_Q, + /* '0' */ JSPARSER_STATE_INT_JS_Q, + /* '1' */ JSPARSER_STATE_INT_JS_Q, + /* '2' */ JSPARSER_STATE_INT_JS_Q, + /* '3' */ JSPARSER_STATE_INT_JS_Q, + /* '4' */ JSPARSER_STATE_INT_JS_Q, + /* '5' */ JSPARSER_STATE_INT_JS_Q, + /* '6' */ JSPARSER_STATE_INT_JS_Q, + /* '7' */ JSPARSER_STATE_INT_JS_Q, + /* '8' */ JSPARSER_STATE_INT_JS_Q, + /* '9' */ JSPARSER_STATE_INT_JS_Q, + /* ':' */ JSPARSER_STATE_INT_JS_Q, + /* ';' */ JSPARSER_STATE_INT_JS_Q, + /* '<' */ JSPARSER_STATE_INT_JS_Q, + /* '=' */ JSPARSER_STATE_INT_JS_Q, + /* '>' */ JSPARSER_STATE_INT_JS_Q, + /* '?' */ JSPARSER_STATE_INT_JS_Q, + /* '@' */ JSPARSER_STATE_INT_JS_Q, + /* 'A' */ JSPARSER_STATE_INT_JS_Q, + /* 'B' */ JSPARSER_STATE_INT_JS_Q, + /* 'C' */ JSPARSER_STATE_INT_JS_Q, + /* 'D' */ JSPARSER_STATE_INT_JS_Q, + /* 'E' */ JSPARSER_STATE_INT_JS_Q, + /* 'F' */ JSPARSER_STATE_INT_JS_Q, + /* 'G' */ JSPARSER_STATE_INT_JS_Q, + /* 'H' */ JSPARSER_STATE_INT_JS_Q, + /* 'I' */ JSPARSER_STATE_INT_JS_Q, + /* 'J' */ JSPARSER_STATE_INT_JS_Q, + /* 'K' */ JSPARSER_STATE_INT_JS_Q, + /* 'L' */ JSPARSER_STATE_INT_JS_Q, + /* 'M' */ JSPARSER_STATE_INT_JS_Q, + /* 'N' */ JSPARSER_STATE_INT_JS_Q, + /* 'O' */ JSPARSER_STATE_INT_JS_Q, + /* 'P' */ JSPARSER_STATE_INT_JS_Q, + /* 'Q' */ JSPARSER_STATE_INT_JS_Q, + /* 'R' */ JSPARSER_STATE_INT_JS_Q, + /* 'S' */ JSPARSER_STATE_INT_JS_Q, + /* 'T' */ JSPARSER_STATE_INT_JS_Q, + /* 'U' */ JSPARSER_STATE_INT_JS_Q, + /* 'V' */ JSPARSER_STATE_INT_JS_Q, + /* 'W' */ JSPARSER_STATE_INT_JS_Q, + /* 'X' */ JSPARSER_STATE_INT_JS_Q, + /* 'Y' */ JSPARSER_STATE_INT_JS_Q, + /* 'Z' */ JSPARSER_STATE_INT_JS_Q, + /* '[' */ JSPARSER_STATE_INT_JS_Q, + /* '\\' */ JSPARSER_STATE_INT_JS_Q_E, + /* ']' */ JSPARSER_STATE_INT_JS_Q, + /* '^' */ JSPARSER_STATE_INT_JS_Q, + /* '_' */ JSPARSER_STATE_INT_JS_Q, + /* '`' */ JSPARSER_STATE_INT_JS_Q, + /* 'a' */ JSPARSER_STATE_INT_JS_Q, + /* 'b' */ JSPARSER_STATE_INT_JS_Q, + /* 'c' */ JSPARSER_STATE_INT_JS_Q, + /* 'd' */ JSPARSER_STATE_INT_JS_Q, + /* 'e' */ JSPARSER_STATE_INT_JS_Q, + /* 'f' */ JSPARSER_STATE_INT_JS_Q, + /* 'g' */ JSPARSER_STATE_INT_JS_Q, + /* 'h' */ JSPARSER_STATE_INT_JS_Q, + /* 'i' */ JSPARSER_STATE_INT_JS_Q, + /* 'j' */ JSPARSER_STATE_INT_JS_Q, + /* 'k' */ JSPARSER_STATE_INT_JS_Q, + /* 'l' */ JSPARSER_STATE_INT_JS_Q, + /* 'm' */ JSPARSER_STATE_INT_JS_Q, + /* 'n' */ JSPARSER_STATE_INT_JS_Q, + /* 'o' */ JSPARSER_STATE_INT_JS_Q, + /* 'p' */ JSPARSER_STATE_INT_JS_Q, + /* 'q' */ JSPARSER_STATE_INT_JS_Q, + /* 'r' */ JSPARSER_STATE_INT_JS_Q, + /* 's' */ JSPARSER_STATE_INT_JS_Q, + /* 't' */ JSPARSER_STATE_INT_JS_Q, + /* 'u' */ JSPARSER_STATE_INT_JS_Q, + /* 'v' */ JSPARSER_STATE_INT_JS_Q, + /* 'w' */ JSPARSER_STATE_INT_JS_Q, + /* 'x' */ JSPARSER_STATE_INT_JS_Q, + /* 'y' */ JSPARSER_STATE_INT_JS_Q, + /* 'z' */ JSPARSER_STATE_INT_JS_Q, + /* '{' */ JSPARSER_STATE_INT_JS_Q, + /* '|' */ JSPARSER_STATE_INT_JS_Q, + /* '}' */ JSPARSER_STATE_INT_JS_Q, + /* '~' */ JSPARSER_STATE_INT_JS_Q, + /* '\x7f' */ JSPARSER_STATE_INT_JS_Q, + /* '\x80' */ JSPARSER_STATE_INT_JS_Q, + /* '\x81' */ JSPARSER_STATE_INT_JS_Q, + /* '\x82' */ JSPARSER_STATE_INT_JS_Q, + /* '\x83' */ JSPARSER_STATE_INT_JS_Q, + /* '\x84' */ JSPARSER_STATE_INT_JS_Q, + /* '\x85' */ JSPARSER_STATE_INT_JS_Q, + /* '\x86' */ JSPARSER_STATE_INT_JS_Q, + /* '\x87' */ JSPARSER_STATE_INT_JS_Q, + /* '\x88' */ JSPARSER_STATE_INT_JS_Q, + /* '\x89' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8a' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8c' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8d' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8f' */ JSPARSER_STATE_INT_JS_Q, + /* '\x90' */ JSPARSER_STATE_INT_JS_Q, + /* '\x91' */ JSPARSER_STATE_INT_JS_Q, + /* '\x92' */ JSPARSER_STATE_INT_JS_Q, + /* '\x93' */ JSPARSER_STATE_INT_JS_Q, + /* '\x94' */ JSPARSER_STATE_INT_JS_Q, + /* '\x95' */ JSPARSER_STATE_INT_JS_Q, + /* '\x96' */ JSPARSER_STATE_INT_JS_Q, + /* '\x97' */ JSPARSER_STATE_INT_JS_Q, + /* '\x98' */ JSPARSER_STATE_INT_JS_Q, + /* '\x99' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9a' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9c' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9d' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9f' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xaa' */ JSPARSER_STATE_INT_JS_Q, + /* '\xab' */ JSPARSER_STATE_INT_JS_Q, + /* '\xac' */ JSPARSER_STATE_INT_JS_Q, + /* '\xad' */ JSPARSER_STATE_INT_JS_Q, + /* '\xae' */ JSPARSER_STATE_INT_JS_Q, + /* '\xaf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xba' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbe' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xca' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xce' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xda' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xde' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xea' */ JSPARSER_STATE_INT_JS_Q, + /* '\xeb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xec' */ JSPARSER_STATE_INT_JS_Q, + /* '\xed' */ JSPARSER_STATE_INT_JS_Q, + /* '\xee' */ JSPARSER_STATE_INT_JS_Q, + /* '\xef' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfa' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfe' */ JSPARSER_STATE_INT_JS_Q +}; + +static const int jsparser_transition_row_js_q_e[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_Q, + /* '\x01' */ JSPARSER_STATE_INT_JS_Q, + /* '\x02' */ JSPARSER_STATE_INT_JS_Q, + /* '\x03' */ JSPARSER_STATE_INT_JS_Q, + /* '\x04' */ JSPARSER_STATE_INT_JS_Q, + /* '\x05' */ JSPARSER_STATE_INT_JS_Q, + /* '\x06' */ JSPARSER_STATE_INT_JS_Q, + /* '\x07' */ JSPARSER_STATE_INT_JS_Q, + /* '\x08' */ JSPARSER_STATE_INT_JS_Q, + /* '\t' */ JSPARSER_STATE_INT_JS_Q, + /* '\n' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0c' */ JSPARSER_STATE_INT_JS_Q, + /* '\r' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x0f' */ JSPARSER_STATE_INT_JS_Q, + /* '\x10' */ JSPARSER_STATE_INT_JS_Q, + /* '\x11' */ JSPARSER_STATE_INT_JS_Q, + /* '\x12' */ JSPARSER_STATE_INT_JS_Q, + /* '\x13' */ JSPARSER_STATE_INT_JS_Q, + /* '\x14' */ JSPARSER_STATE_INT_JS_Q, + /* '\x15' */ JSPARSER_STATE_INT_JS_Q, + /* '\x16' */ JSPARSER_STATE_INT_JS_Q, + /* '\x17' */ JSPARSER_STATE_INT_JS_Q, + /* '\x18' */ JSPARSER_STATE_INT_JS_Q, + /* '\x19' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1a' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1c' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1d' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x1f' */ JSPARSER_STATE_INT_JS_Q, + /* ' ' */ JSPARSER_STATE_INT_JS_Q, + /* '!' */ JSPARSER_STATE_INT_JS_Q, + /* '"' */ JSPARSER_STATE_INT_JS_Q, + /* '#' */ JSPARSER_STATE_INT_JS_Q, + /* '$' */ JSPARSER_STATE_INT_JS_Q, + /* '%' */ JSPARSER_STATE_INT_JS_Q, + /* '&' */ JSPARSER_STATE_INT_JS_Q, + /* "'" */ JSPARSER_STATE_INT_JS_Q, + /* '(' */ JSPARSER_STATE_INT_JS_Q, + /* ')' */ JSPARSER_STATE_INT_JS_Q, + /* '*' */ JSPARSER_STATE_INT_JS_Q, + /* '+' */ JSPARSER_STATE_INT_JS_Q, + /* ',' */ JSPARSER_STATE_INT_JS_Q, + /* '-' */ JSPARSER_STATE_INT_JS_Q, + /* '.' */ JSPARSER_STATE_INT_JS_Q, + /* '/' */ JSPARSER_STATE_INT_JS_Q, + /* '0' */ JSPARSER_STATE_INT_JS_Q, + /* '1' */ JSPARSER_STATE_INT_JS_Q, + /* '2' */ JSPARSER_STATE_INT_JS_Q, + /* '3' */ JSPARSER_STATE_INT_JS_Q, + /* '4' */ JSPARSER_STATE_INT_JS_Q, + /* '5' */ JSPARSER_STATE_INT_JS_Q, + /* '6' */ JSPARSER_STATE_INT_JS_Q, + /* '7' */ JSPARSER_STATE_INT_JS_Q, + /* '8' */ JSPARSER_STATE_INT_JS_Q, + /* '9' */ JSPARSER_STATE_INT_JS_Q, + /* ':' */ JSPARSER_STATE_INT_JS_Q, + /* ';' */ JSPARSER_STATE_INT_JS_Q, + /* '<' */ JSPARSER_STATE_INT_JS_Q, + /* '=' */ JSPARSER_STATE_INT_JS_Q, + /* '>' */ JSPARSER_STATE_INT_JS_Q, + /* '?' */ JSPARSER_STATE_INT_JS_Q, + /* '@' */ JSPARSER_STATE_INT_JS_Q, + /* 'A' */ JSPARSER_STATE_INT_JS_Q, + /* 'B' */ JSPARSER_STATE_INT_JS_Q, + /* 'C' */ JSPARSER_STATE_INT_JS_Q, + /* 'D' */ JSPARSER_STATE_INT_JS_Q, + /* 'E' */ JSPARSER_STATE_INT_JS_Q, + /* 'F' */ JSPARSER_STATE_INT_JS_Q, + /* 'G' */ JSPARSER_STATE_INT_JS_Q, + /* 'H' */ JSPARSER_STATE_INT_JS_Q, + /* 'I' */ JSPARSER_STATE_INT_JS_Q, + /* 'J' */ JSPARSER_STATE_INT_JS_Q, + /* 'K' */ JSPARSER_STATE_INT_JS_Q, + /* 'L' */ JSPARSER_STATE_INT_JS_Q, + /* 'M' */ JSPARSER_STATE_INT_JS_Q, + /* 'N' */ JSPARSER_STATE_INT_JS_Q, + /* 'O' */ JSPARSER_STATE_INT_JS_Q, + /* 'P' */ JSPARSER_STATE_INT_JS_Q, + /* 'Q' */ JSPARSER_STATE_INT_JS_Q, + /* 'R' */ JSPARSER_STATE_INT_JS_Q, + /* 'S' */ JSPARSER_STATE_INT_JS_Q, + /* 'T' */ JSPARSER_STATE_INT_JS_Q, + /* 'U' */ JSPARSER_STATE_INT_JS_Q, + /* 'V' */ JSPARSER_STATE_INT_JS_Q, + /* 'W' */ JSPARSER_STATE_INT_JS_Q, + /* 'X' */ JSPARSER_STATE_INT_JS_Q, + /* 'Y' */ JSPARSER_STATE_INT_JS_Q, + /* 'Z' */ JSPARSER_STATE_INT_JS_Q, + /* '[' */ JSPARSER_STATE_INT_JS_Q, + /* '\\' */ JSPARSER_STATE_INT_JS_Q, + /* ']' */ JSPARSER_STATE_INT_JS_Q, + /* '^' */ JSPARSER_STATE_INT_JS_Q, + /* '_' */ JSPARSER_STATE_INT_JS_Q, + /* '`' */ JSPARSER_STATE_INT_JS_Q, + /* 'a' */ JSPARSER_STATE_INT_JS_Q, + /* 'b' */ JSPARSER_STATE_INT_JS_Q, + /* 'c' */ JSPARSER_STATE_INT_JS_Q, + /* 'd' */ JSPARSER_STATE_INT_JS_Q, + /* 'e' */ JSPARSER_STATE_INT_JS_Q, + /* 'f' */ JSPARSER_STATE_INT_JS_Q, + /* 'g' */ JSPARSER_STATE_INT_JS_Q, + /* 'h' */ JSPARSER_STATE_INT_JS_Q, + /* 'i' */ JSPARSER_STATE_INT_JS_Q, + /* 'j' */ JSPARSER_STATE_INT_JS_Q, + /* 'k' */ JSPARSER_STATE_INT_JS_Q, + /* 'l' */ JSPARSER_STATE_INT_JS_Q, + /* 'm' */ JSPARSER_STATE_INT_JS_Q, + /* 'n' */ JSPARSER_STATE_INT_JS_Q, + /* 'o' */ JSPARSER_STATE_INT_JS_Q, + /* 'p' */ JSPARSER_STATE_INT_JS_Q, + /* 'q' */ JSPARSER_STATE_INT_JS_Q, + /* 'r' */ JSPARSER_STATE_INT_JS_Q, + /* 's' */ JSPARSER_STATE_INT_JS_Q, + /* 't' */ JSPARSER_STATE_INT_JS_Q, + /* 'u' */ JSPARSER_STATE_INT_JS_Q, + /* 'v' */ JSPARSER_STATE_INT_JS_Q, + /* 'w' */ JSPARSER_STATE_INT_JS_Q, + /* 'x' */ JSPARSER_STATE_INT_JS_Q, + /* 'y' */ JSPARSER_STATE_INT_JS_Q, + /* 'z' */ JSPARSER_STATE_INT_JS_Q, + /* '{' */ JSPARSER_STATE_INT_JS_Q, + /* '|' */ JSPARSER_STATE_INT_JS_Q, + /* '}' */ JSPARSER_STATE_INT_JS_Q, + /* '~' */ JSPARSER_STATE_INT_JS_Q, + /* '\x7f' */ JSPARSER_STATE_INT_JS_Q, + /* '\x80' */ JSPARSER_STATE_INT_JS_Q, + /* '\x81' */ JSPARSER_STATE_INT_JS_Q, + /* '\x82' */ JSPARSER_STATE_INT_JS_Q, + /* '\x83' */ JSPARSER_STATE_INT_JS_Q, + /* '\x84' */ JSPARSER_STATE_INT_JS_Q, + /* '\x85' */ JSPARSER_STATE_INT_JS_Q, + /* '\x86' */ JSPARSER_STATE_INT_JS_Q, + /* '\x87' */ JSPARSER_STATE_INT_JS_Q, + /* '\x88' */ JSPARSER_STATE_INT_JS_Q, + /* '\x89' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8a' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8c' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8d' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x8f' */ JSPARSER_STATE_INT_JS_Q, + /* '\x90' */ JSPARSER_STATE_INT_JS_Q, + /* '\x91' */ JSPARSER_STATE_INT_JS_Q, + /* '\x92' */ JSPARSER_STATE_INT_JS_Q, + /* '\x93' */ JSPARSER_STATE_INT_JS_Q, + /* '\x94' */ JSPARSER_STATE_INT_JS_Q, + /* '\x95' */ JSPARSER_STATE_INT_JS_Q, + /* '\x96' */ JSPARSER_STATE_INT_JS_Q, + /* '\x97' */ JSPARSER_STATE_INT_JS_Q, + /* '\x98' */ JSPARSER_STATE_INT_JS_Q, + /* '\x99' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9a' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9b' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9c' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9d' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9e' */ JSPARSER_STATE_INT_JS_Q, + /* '\x9f' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xa9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xaa' */ JSPARSER_STATE_INT_JS_Q, + /* '\xab' */ JSPARSER_STATE_INT_JS_Q, + /* '\xac' */ JSPARSER_STATE_INT_JS_Q, + /* '\xad' */ JSPARSER_STATE_INT_JS_Q, + /* '\xae' */ JSPARSER_STATE_INT_JS_Q, + /* '\xaf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xb9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xba' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbe' */ JSPARSER_STATE_INT_JS_Q, + /* '\xbf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xc9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xca' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xce' */ JSPARSER_STATE_INT_JS_Q, + /* '\xcf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xd9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xda' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xde' */ JSPARSER_STATE_INT_JS_Q, + /* '\xdf' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xe9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xea' */ JSPARSER_STATE_INT_JS_Q, + /* '\xeb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xec' */ JSPARSER_STATE_INT_JS_Q, + /* '\xed' */ JSPARSER_STATE_INT_JS_Q, + /* '\xee' */ JSPARSER_STATE_INT_JS_Q, + /* '\xef' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf0' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf1' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf2' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf3' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf4' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf5' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf6' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf7' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf8' */ JSPARSER_STATE_INT_JS_Q, + /* '\xf9' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfa' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfb' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfc' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfd' */ JSPARSER_STATE_INT_JS_Q, + /* '\xfe' */ JSPARSER_STATE_INT_JS_Q +}; + +static const int jsparser_transition_row_js_dq[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x01' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x02' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x03' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x04' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x05' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x06' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x07' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x08' */ JSPARSER_STATE_INT_JS_DQ, + /* '\t' */ JSPARSER_STATE_INT_JS_DQ, + /* '\n' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\r' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x10' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x11' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x12' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x13' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x14' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x15' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x16' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x17' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x18' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x19' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1a' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1d' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1f' */ JSPARSER_STATE_INT_JS_DQ, + /* ' ' */ JSPARSER_STATE_INT_JS_DQ, + /* '!' */ JSPARSER_STATE_INT_JS_DQ, + /* '"' */ JSPARSER_STATE_INT_JS_TEXT, + /* '#' */ JSPARSER_STATE_INT_JS_DQ, + /* '$' */ JSPARSER_STATE_INT_JS_DQ, + /* '%' */ JSPARSER_STATE_INT_JS_DQ, + /* '&' */ JSPARSER_STATE_INT_JS_DQ, + /* "'" */ JSPARSER_STATE_INT_JS_DQ, + /* '(' */ JSPARSER_STATE_INT_JS_DQ, + /* ')' */ JSPARSER_STATE_INT_JS_DQ, + /* '*' */ JSPARSER_STATE_INT_JS_DQ, + /* '+' */ JSPARSER_STATE_INT_JS_DQ, + /* ',' */ JSPARSER_STATE_INT_JS_DQ, + /* '-' */ JSPARSER_STATE_INT_JS_DQ, + /* '.' */ JSPARSER_STATE_INT_JS_DQ, + /* '/' */ JSPARSER_STATE_INT_JS_DQ, + /* '0' */ JSPARSER_STATE_INT_JS_DQ, + /* '1' */ JSPARSER_STATE_INT_JS_DQ, + /* '2' */ JSPARSER_STATE_INT_JS_DQ, + /* '3' */ JSPARSER_STATE_INT_JS_DQ, + /* '4' */ JSPARSER_STATE_INT_JS_DQ, + /* '5' */ JSPARSER_STATE_INT_JS_DQ, + /* '6' */ JSPARSER_STATE_INT_JS_DQ, + /* '7' */ JSPARSER_STATE_INT_JS_DQ, + /* '8' */ JSPARSER_STATE_INT_JS_DQ, + /* '9' */ JSPARSER_STATE_INT_JS_DQ, + /* ':' */ JSPARSER_STATE_INT_JS_DQ, + /* ';' */ JSPARSER_STATE_INT_JS_DQ, + /* '<' */ JSPARSER_STATE_INT_JS_DQ, + /* '=' */ JSPARSER_STATE_INT_JS_DQ, + /* '>' */ JSPARSER_STATE_INT_JS_DQ, + /* '?' */ JSPARSER_STATE_INT_JS_DQ, + /* '@' */ JSPARSER_STATE_INT_JS_DQ, + /* 'A' */ JSPARSER_STATE_INT_JS_DQ, + /* 'B' */ JSPARSER_STATE_INT_JS_DQ, + /* 'C' */ JSPARSER_STATE_INT_JS_DQ, + /* 'D' */ JSPARSER_STATE_INT_JS_DQ, + /* 'E' */ JSPARSER_STATE_INT_JS_DQ, + /* 'F' */ JSPARSER_STATE_INT_JS_DQ, + /* 'G' */ JSPARSER_STATE_INT_JS_DQ, + /* 'H' */ JSPARSER_STATE_INT_JS_DQ, + /* 'I' */ JSPARSER_STATE_INT_JS_DQ, + /* 'J' */ JSPARSER_STATE_INT_JS_DQ, + /* 'K' */ JSPARSER_STATE_INT_JS_DQ, + /* 'L' */ JSPARSER_STATE_INT_JS_DQ, + /* 'M' */ JSPARSER_STATE_INT_JS_DQ, + /* 'N' */ JSPARSER_STATE_INT_JS_DQ, + /* 'O' */ JSPARSER_STATE_INT_JS_DQ, + /* 'P' */ JSPARSER_STATE_INT_JS_DQ, + /* 'Q' */ JSPARSER_STATE_INT_JS_DQ, + /* 'R' */ JSPARSER_STATE_INT_JS_DQ, + /* 'S' */ JSPARSER_STATE_INT_JS_DQ, + /* 'T' */ JSPARSER_STATE_INT_JS_DQ, + /* 'U' */ JSPARSER_STATE_INT_JS_DQ, + /* 'V' */ JSPARSER_STATE_INT_JS_DQ, + /* 'W' */ JSPARSER_STATE_INT_JS_DQ, + /* 'X' */ JSPARSER_STATE_INT_JS_DQ, + /* 'Y' */ JSPARSER_STATE_INT_JS_DQ, + /* 'Z' */ JSPARSER_STATE_INT_JS_DQ, + /* '[' */ JSPARSER_STATE_INT_JS_DQ, + /* '\\' */ JSPARSER_STATE_INT_JS_DQ_E, + /* ']' */ JSPARSER_STATE_INT_JS_DQ, + /* '^' */ JSPARSER_STATE_INT_JS_DQ, + /* '_' */ JSPARSER_STATE_INT_JS_DQ, + /* '`' */ JSPARSER_STATE_INT_JS_DQ, + /* 'a' */ JSPARSER_STATE_INT_JS_DQ, + /* 'b' */ JSPARSER_STATE_INT_JS_DQ, + /* 'c' */ JSPARSER_STATE_INT_JS_DQ, + /* 'd' */ JSPARSER_STATE_INT_JS_DQ, + /* 'e' */ JSPARSER_STATE_INT_JS_DQ, + /* 'f' */ JSPARSER_STATE_INT_JS_DQ, + /* 'g' */ JSPARSER_STATE_INT_JS_DQ, + /* 'h' */ JSPARSER_STATE_INT_JS_DQ, + /* 'i' */ JSPARSER_STATE_INT_JS_DQ, + /* 'j' */ JSPARSER_STATE_INT_JS_DQ, + /* 'k' */ JSPARSER_STATE_INT_JS_DQ, + /* 'l' */ JSPARSER_STATE_INT_JS_DQ, + /* 'm' */ JSPARSER_STATE_INT_JS_DQ, + /* 'n' */ JSPARSER_STATE_INT_JS_DQ, + /* 'o' */ JSPARSER_STATE_INT_JS_DQ, + /* 'p' */ JSPARSER_STATE_INT_JS_DQ, + /* 'q' */ JSPARSER_STATE_INT_JS_DQ, + /* 'r' */ JSPARSER_STATE_INT_JS_DQ, + /* 's' */ JSPARSER_STATE_INT_JS_DQ, + /* 't' */ JSPARSER_STATE_INT_JS_DQ, + /* 'u' */ JSPARSER_STATE_INT_JS_DQ, + /* 'v' */ JSPARSER_STATE_INT_JS_DQ, + /* 'w' */ JSPARSER_STATE_INT_JS_DQ, + /* 'x' */ JSPARSER_STATE_INT_JS_DQ, + /* 'y' */ JSPARSER_STATE_INT_JS_DQ, + /* 'z' */ JSPARSER_STATE_INT_JS_DQ, + /* '{' */ JSPARSER_STATE_INT_JS_DQ, + /* '|' */ JSPARSER_STATE_INT_JS_DQ, + /* '}' */ JSPARSER_STATE_INT_JS_DQ, + /* '~' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x7f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x80' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x81' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x82' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x83' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x84' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x85' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x86' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x87' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x88' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x89' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8a' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8d' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x90' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x91' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x92' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x93' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x94' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x95' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x96' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x97' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x98' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x99' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9a' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9d' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xaa' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xab' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xac' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xad' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xae' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xaf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xba' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbe' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xca' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xce' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xda' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xde' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xea' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xeb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xec' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xed' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xee' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xef' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfa' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfe' */ JSPARSER_STATE_INT_JS_DQ +}; + +static const int jsparser_transition_row_js_dq_e[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x01' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x02' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x03' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x04' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x05' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x06' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x07' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x08' */ JSPARSER_STATE_INT_JS_DQ, + /* '\t' */ JSPARSER_STATE_INT_JS_DQ, + /* '\n' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\r' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x0f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x10' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x11' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x12' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x13' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x14' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x15' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x16' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x17' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x18' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x19' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1a' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1d' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x1f' */ JSPARSER_STATE_INT_JS_DQ, + /* ' ' */ JSPARSER_STATE_INT_JS_DQ, + /* '!' */ JSPARSER_STATE_INT_JS_DQ, + /* '"' */ JSPARSER_STATE_INT_JS_DQ, + /* '#' */ JSPARSER_STATE_INT_JS_DQ, + /* '$' */ JSPARSER_STATE_INT_JS_DQ, + /* '%' */ JSPARSER_STATE_INT_JS_DQ, + /* '&' */ JSPARSER_STATE_INT_JS_DQ, + /* "'" */ JSPARSER_STATE_INT_JS_DQ, + /* '(' */ JSPARSER_STATE_INT_JS_DQ, + /* ')' */ JSPARSER_STATE_INT_JS_DQ, + /* '*' */ JSPARSER_STATE_INT_JS_DQ, + /* '+' */ JSPARSER_STATE_INT_JS_DQ, + /* ',' */ JSPARSER_STATE_INT_JS_DQ, + /* '-' */ JSPARSER_STATE_INT_JS_DQ, + /* '.' */ JSPARSER_STATE_INT_JS_DQ, + /* '/' */ JSPARSER_STATE_INT_JS_DQ, + /* '0' */ JSPARSER_STATE_INT_JS_DQ, + /* '1' */ JSPARSER_STATE_INT_JS_DQ, + /* '2' */ JSPARSER_STATE_INT_JS_DQ, + /* '3' */ JSPARSER_STATE_INT_JS_DQ, + /* '4' */ JSPARSER_STATE_INT_JS_DQ, + /* '5' */ JSPARSER_STATE_INT_JS_DQ, + /* '6' */ JSPARSER_STATE_INT_JS_DQ, + /* '7' */ JSPARSER_STATE_INT_JS_DQ, + /* '8' */ JSPARSER_STATE_INT_JS_DQ, + /* '9' */ JSPARSER_STATE_INT_JS_DQ, + /* ':' */ JSPARSER_STATE_INT_JS_DQ, + /* ';' */ JSPARSER_STATE_INT_JS_DQ, + /* '<' */ JSPARSER_STATE_INT_JS_DQ, + /* '=' */ JSPARSER_STATE_INT_JS_DQ, + /* '>' */ JSPARSER_STATE_INT_JS_DQ, + /* '?' */ JSPARSER_STATE_INT_JS_DQ, + /* '@' */ JSPARSER_STATE_INT_JS_DQ, + /* 'A' */ JSPARSER_STATE_INT_JS_DQ, + /* 'B' */ JSPARSER_STATE_INT_JS_DQ, + /* 'C' */ JSPARSER_STATE_INT_JS_DQ, + /* 'D' */ JSPARSER_STATE_INT_JS_DQ, + /* 'E' */ JSPARSER_STATE_INT_JS_DQ, + /* 'F' */ JSPARSER_STATE_INT_JS_DQ, + /* 'G' */ JSPARSER_STATE_INT_JS_DQ, + /* 'H' */ JSPARSER_STATE_INT_JS_DQ, + /* 'I' */ JSPARSER_STATE_INT_JS_DQ, + /* 'J' */ JSPARSER_STATE_INT_JS_DQ, + /* 'K' */ JSPARSER_STATE_INT_JS_DQ, + /* 'L' */ JSPARSER_STATE_INT_JS_DQ, + /* 'M' */ JSPARSER_STATE_INT_JS_DQ, + /* 'N' */ JSPARSER_STATE_INT_JS_DQ, + /* 'O' */ JSPARSER_STATE_INT_JS_DQ, + /* 'P' */ JSPARSER_STATE_INT_JS_DQ, + /* 'Q' */ JSPARSER_STATE_INT_JS_DQ, + /* 'R' */ JSPARSER_STATE_INT_JS_DQ, + /* 'S' */ JSPARSER_STATE_INT_JS_DQ, + /* 'T' */ JSPARSER_STATE_INT_JS_DQ, + /* 'U' */ JSPARSER_STATE_INT_JS_DQ, + /* 'V' */ JSPARSER_STATE_INT_JS_DQ, + /* 'W' */ JSPARSER_STATE_INT_JS_DQ, + /* 'X' */ JSPARSER_STATE_INT_JS_DQ, + /* 'Y' */ JSPARSER_STATE_INT_JS_DQ, + /* 'Z' */ JSPARSER_STATE_INT_JS_DQ, + /* '[' */ JSPARSER_STATE_INT_JS_DQ, + /* '\\' */ JSPARSER_STATE_INT_JS_DQ, + /* ']' */ JSPARSER_STATE_INT_JS_DQ, + /* '^' */ JSPARSER_STATE_INT_JS_DQ, + /* '_' */ JSPARSER_STATE_INT_JS_DQ, + /* '`' */ JSPARSER_STATE_INT_JS_DQ, + /* 'a' */ JSPARSER_STATE_INT_JS_DQ, + /* 'b' */ JSPARSER_STATE_INT_JS_DQ, + /* 'c' */ JSPARSER_STATE_INT_JS_DQ, + /* 'd' */ JSPARSER_STATE_INT_JS_DQ, + /* 'e' */ JSPARSER_STATE_INT_JS_DQ, + /* 'f' */ JSPARSER_STATE_INT_JS_DQ, + /* 'g' */ JSPARSER_STATE_INT_JS_DQ, + /* 'h' */ JSPARSER_STATE_INT_JS_DQ, + /* 'i' */ JSPARSER_STATE_INT_JS_DQ, + /* 'j' */ JSPARSER_STATE_INT_JS_DQ, + /* 'k' */ JSPARSER_STATE_INT_JS_DQ, + /* 'l' */ JSPARSER_STATE_INT_JS_DQ, + /* 'm' */ JSPARSER_STATE_INT_JS_DQ, + /* 'n' */ JSPARSER_STATE_INT_JS_DQ, + /* 'o' */ JSPARSER_STATE_INT_JS_DQ, + /* 'p' */ JSPARSER_STATE_INT_JS_DQ, + /* 'q' */ JSPARSER_STATE_INT_JS_DQ, + /* 'r' */ JSPARSER_STATE_INT_JS_DQ, + /* 's' */ JSPARSER_STATE_INT_JS_DQ, + /* 't' */ JSPARSER_STATE_INT_JS_DQ, + /* 'u' */ JSPARSER_STATE_INT_JS_DQ, + /* 'v' */ JSPARSER_STATE_INT_JS_DQ, + /* 'w' */ JSPARSER_STATE_INT_JS_DQ, + /* 'x' */ JSPARSER_STATE_INT_JS_DQ, + /* 'y' */ JSPARSER_STATE_INT_JS_DQ, + /* 'z' */ JSPARSER_STATE_INT_JS_DQ, + /* '{' */ JSPARSER_STATE_INT_JS_DQ, + /* '|' */ JSPARSER_STATE_INT_JS_DQ, + /* '}' */ JSPARSER_STATE_INT_JS_DQ, + /* '~' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x7f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x80' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x81' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x82' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x83' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x84' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x85' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x86' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x87' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x88' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x89' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8a' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8d' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x8f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x90' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x91' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x92' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x93' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x94' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x95' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x96' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x97' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x98' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x99' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9a' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9b' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9c' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9d' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9e' */ JSPARSER_STATE_INT_JS_DQ, + /* '\x9f' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xa9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xaa' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xab' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xac' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xad' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xae' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xaf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xb9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xba' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbe' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xbf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xc9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xca' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xce' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xcf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xd9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xda' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xde' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xdf' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xe9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xea' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xeb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xec' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xed' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xee' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xef' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf0' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf1' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf2' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf3' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf4' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf5' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf6' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf7' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf8' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xf9' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfa' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfb' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfc' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfd' */ JSPARSER_STATE_INT_JS_DQ, + /* '\xfe' */ JSPARSER_STATE_INT_JS_DQ +}; + +static const int jsparser_transition_row_js_slash[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x01' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x02' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x03' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x04' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x05' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x06' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x07' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x08' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\t' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\n' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\r' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x10' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x11' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x12' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x13' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x14' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x15' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x16' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x17' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x18' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x19' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1f' */ JSPARSER_STATE_INT_JS_TEXT, + /* ' ' */ JSPARSER_STATE_INT_JS_TEXT, + /* '!' */ JSPARSER_STATE_INT_JS_TEXT, + /* '"' */ JSPARSER_STATE_INT_JS_TEXT, + /* '#' */ JSPARSER_STATE_INT_JS_TEXT, + /* '$' */ JSPARSER_STATE_INT_JS_TEXT, + /* '%' */ JSPARSER_STATE_INT_JS_TEXT, + /* '&' */ JSPARSER_STATE_INT_JS_TEXT, + /* "'" */ JSPARSER_STATE_INT_JS_TEXT, + /* '(' */ JSPARSER_STATE_INT_JS_TEXT, + /* ')' */ JSPARSER_STATE_INT_JS_TEXT, + /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '+' */ JSPARSER_STATE_INT_JS_TEXT, + /* ',' */ JSPARSER_STATE_INT_JS_TEXT, + /* '-' */ JSPARSER_STATE_INT_JS_TEXT, + /* '.' */ JSPARSER_STATE_INT_JS_TEXT, + /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '9' */ JSPARSER_STATE_INT_JS_TEXT, + /* ':' */ JSPARSER_STATE_INT_JS_TEXT, + /* ';' */ JSPARSER_STATE_INT_JS_TEXT, + /* '<' */ JSPARSER_STATE_INT_JS_TEXT, + /* '=' */ JSPARSER_STATE_INT_JS_TEXT, + /* '>' */ JSPARSER_STATE_INT_JS_TEXT, + /* '?' */ JSPARSER_STATE_INT_JS_TEXT, + /* '@' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'A' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'B' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'C' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'D' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'E' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'F' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'G' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'H' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'I' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'J' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'K' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'L' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'M' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'N' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'O' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'P' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Q' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'R' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'S' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'T' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'U' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'V' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'W' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'X' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Y' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Z' */ JSPARSER_STATE_INT_JS_TEXT, + /* '[' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\\' */ JSPARSER_STATE_INT_JS_TEXT, + /* ']' */ JSPARSER_STATE_INT_JS_TEXT, + /* '^' */ JSPARSER_STATE_INT_JS_TEXT, + /* '_' */ JSPARSER_STATE_INT_JS_TEXT, + /* '`' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'a' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'b' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'c' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'd' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'e' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'f' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'g' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'h' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'i' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'j' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'k' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'l' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'm' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'n' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'o' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'p' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'q' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'r' */ JSPARSER_STATE_INT_JS_TEXT, + /* 's' */ JSPARSER_STATE_INT_JS_TEXT, + /* 't' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'u' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'v' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'w' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'x' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'y' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'z' */ JSPARSER_STATE_INT_JS_TEXT, + /* '{' */ JSPARSER_STATE_INT_JS_TEXT, + /* '|' */ JSPARSER_STATE_INT_JS_TEXT, + /* '}' */ JSPARSER_STATE_INT_JS_TEXT, + /* '~' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x7f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x80' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x81' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x82' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x83' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x84' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x85' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x86' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x87' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x88' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x89' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x90' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x91' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x92' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x93' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x94' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x95' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x96' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x97' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x98' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x99' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xaa' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xab' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xac' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xad' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xae' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xaf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xba' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbe' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xca' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xce' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xda' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xde' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xea' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xeb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xec' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xed' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xee' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xef' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfa' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfe' */ JSPARSER_STATE_INT_JS_TEXT +}; + +static const int jsparser_transition_row_js_regexp_slash[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '!' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '"' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '#' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '$' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '%' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '&' */ JSPARSER_STATE_INT_JS_REGEXP, + /* "'" */ JSPARSER_STATE_INT_JS_REGEXP, + /* '(' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ')' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '+' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ',' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '-' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '.' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ':' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ';' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '<' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '=' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '>' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '?' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '@' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_E, + /* ']' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '^' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '_' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '`' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 's' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 't' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '{' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '|' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '}' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '~' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP +}; + +static const int jsparser_transition_row_js_regexp[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '!' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '"' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '#' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '$' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '%' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '&' */ JSPARSER_STATE_INT_JS_REGEXP, + /* "'" */ JSPARSER_STATE_INT_JS_REGEXP, + /* '(' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ')' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '*' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '+' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ',' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '-' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '.' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '/' */ JSPARSER_STATE_INT_JS_TEXT, + /* '0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ':' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ';' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '<' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '=' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '>' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '?' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '@' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_E, + /* ']' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '^' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '_' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '`' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 's' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 't' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '{' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '|' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '}' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '~' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP +}; + +static const int jsparser_transition_row_js_regexp_bracket[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '!' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '"' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '#' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '$' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '%' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '&' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* "'" */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '(' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ')' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '*' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '+' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ',' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '-' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '.' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '/' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ':' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ';' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '<' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '=' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '>' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '?' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '@' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET_E, + /* ']' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '^' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '_' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '`' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 's' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 't' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '{' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '|' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '}' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '~' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET +}; + +static const int jsparser_transition_row_js_regexp_bracket_e[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '!' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '"' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '#' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '$' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '%' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '&' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* "'" */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '(' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ')' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '*' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '+' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ',' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '-' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '.' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '/' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ':' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ';' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '<' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '=' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '>' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '?' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '@' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '[' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* ']' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '^' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '_' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '`' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 's' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 't' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '{' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '|' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '}' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '~' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET, + /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP_BRACKET +}; + +static const int jsparser_transition_row_js_regexp_e[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x01' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x02' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x03' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x04' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x05' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x06' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x07' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x08' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\t' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\n' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\r' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x0f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x10' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x11' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x12' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x13' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x14' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x15' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x16' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x17' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x18' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x19' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x1f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ' ' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '!' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '"' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '#' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '$' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '%' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '&' */ JSPARSER_STATE_INT_JS_REGEXP, + /* "'" */ JSPARSER_STATE_INT_JS_REGEXP, + /* '(' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ')' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '*' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '+' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ',' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '-' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '.' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '/' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ':' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ';' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '<' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '=' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '>' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '?' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '@' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'A' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'B' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'C' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'D' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'E' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'F' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'G' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'H' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'I' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'J' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'K' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'L' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'M' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'N' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'O' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'P' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Q' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'R' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'S' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'T' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'U' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'V' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'W' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'X' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Y' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'Z' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '[' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\\' */ JSPARSER_STATE_INT_JS_REGEXP, + /* ']' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '^' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '_' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '`' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'g' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'h' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'i' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'j' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'k' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'l' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'm' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'n' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'o' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'p' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'q' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'r' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 's' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 't' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'u' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'v' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'w' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'x' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'y' */ JSPARSER_STATE_INT_JS_REGEXP, + /* 'z' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '{' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '|' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '}' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '~' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x7f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x80' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x81' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x82' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x83' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x84' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x85' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x86' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x87' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x88' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x89' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x8f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x90' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x91' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x92' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x93' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x94' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x95' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x96' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x97' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x98' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x99' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9a' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9b' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9c' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9d' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9e' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\x9f' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xa9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xaa' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xab' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xac' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xad' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xae' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xaf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xb9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xba' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbe' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xbf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xc9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xca' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xce' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xcf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xd9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xda' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xde' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xdf' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xe9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xea' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xeb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xec' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xed' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xee' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xef' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf0' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf1' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf2' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf3' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf4' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf5' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf6' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf7' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf8' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xf9' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfa' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfb' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfc' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfd' */ JSPARSER_STATE_INT_JS_REGEXP, + /* '\xfe' */ JSPARSER_STATE_INT_JS_REGEXP +}; + +static const int jsparser_transition_row_js_comment_ln[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x01' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x02' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x03' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x04' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x05' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x06' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x07' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x08' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\t' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\n' */ JSPARSER_STATE_INT_JS_COMMENT_AFTER, + /* '\x0b' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x0c' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\r' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x0e' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x0f' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x10' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x11' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x12' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x13' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x14' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x15' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x16' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x17' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x18' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x19' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x1a' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x1b' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x1c' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x1d' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x1e' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x1f' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* ' ' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '!' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '"' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '#' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '$' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '%' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '&' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* "'" */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '(' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* ')' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '+' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* ',' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '-' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '.' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* ':' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* ';' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '<' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '=' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '>' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '?' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '@' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'A' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'B' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'C' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'D' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'E' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'F' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'G' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'H' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'I' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'J' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'K' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'L' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'M' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'N' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'O' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'P' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'Q' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'R' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'S' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'T' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'U' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'V' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'W' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'X' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'Y' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'Z' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '[' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\\' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* ']' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '^' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '_' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '`' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'a' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'b' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'c' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'd' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'e' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'f' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'g' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'h' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'i' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'j' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'k' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'l' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'm' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'n' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'o' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'p' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'q' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'r' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 's' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 't' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'u' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'v' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'w' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'x' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'y' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* 'z' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '{' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '|' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '}' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '~' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x7f' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x80' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x81' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x82' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x83' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x84' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x85' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x86' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x87' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x88' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x89' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x8a' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x8b' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x8c' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x8d' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x8e' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x8f' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x90' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x91' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x92' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x93' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x94' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x95' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x96' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x97' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x98' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x99' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x9a' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x9b' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x9c' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x9d' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x9e' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\x9f' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xa9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xaa' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xab' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xac' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xad' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xae' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xaf' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xb9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xba' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xbb' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xbc' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xbd' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xbe' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xbf' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xc9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xca' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xcb' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xcc' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xcd' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xce' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xcf' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xd9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xda' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xdb' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xdc' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xdd' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xde' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xdf' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xe9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xea' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xeb' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xec' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xed' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xee' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xef' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf0' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf1' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf2' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf3' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf4' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf5' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf6' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf7' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf8' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xf9' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xfa' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xfb' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xfc' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xfd' */ JSPARSER_STATE_INT_JS_COMMENT_LN, + /* '\xfe' */ JSPARSER_STATE_INT_JS_COMMENT_LN +}; + +static const int jsparser_transition_row_js_comment_ml[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x01' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x02' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x03' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x04' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x05' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x06' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x07' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x08' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\t' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\n' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\r' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x10' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x11' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x12' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x13' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x14' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x15' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x16' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x17' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x18' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x19' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1d' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ' ' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '!' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '"' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '#' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '$' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '%' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '&' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* "'" */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '(' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ')' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML_CLOSE, + /* '+' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ',' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '-' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '.' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ':' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ';' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '<' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '=' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '>' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '?' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '@' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'A' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'B' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'C' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'D' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'E' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'F' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'G' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'H' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'I' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'J' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'K' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'L' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'M' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'N' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'O' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'P' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'Q' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'R' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'S' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'T' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'U' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'V' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'W' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'X' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'Y' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'Z' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '[' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\\' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ']' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '^' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '_' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '`' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'g' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'h' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'i' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'j' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'k' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'l' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'm' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'n' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'o' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'p' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'q' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'r' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 's' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 't' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'u' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'v' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'w' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'x' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'y' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'z' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '{' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '|' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '}' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '~' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x7f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x80' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x81' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x82' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x83' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x84' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x85' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x86' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x87' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x88' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x89' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8d' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x90' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x91' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x92' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x93' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x94' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x95' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x96' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x97' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x98' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x99' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9d' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xaa' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xab' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xac' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xad' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xae' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xaf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xba' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbe' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xca' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xce' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xda' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xde' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xea' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xeb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xec' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xed' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xee' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xef' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfa' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfe' */ JSPARSER_STATE_INT_JS_COMMENT_ML +}; + +static const int jsparser_transition_row_js_comment_ml_close[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x01' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x02' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x03' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x04' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x05' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x06' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x07' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x08' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\t' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\n' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\r' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x0f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x10' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x11' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x12' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x13' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x14' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x15' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x16' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x17' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x18' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x19' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1d' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x1f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ' ' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '!' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '"' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '#' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '$' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '%' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '&' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* "'" */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '(' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ')' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '*' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '+' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ',' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '-' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '.' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '/' */ JSPARSER_STATE_INT_JS_COMMENT_AFTER, + /* '0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ':' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ';' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '<' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '=' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '>' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '?' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '@' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'A' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'B' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'C' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'D' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'E' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'F' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'G' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'H' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'I' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'J' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'K' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'L' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'M' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'N' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'O' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'P' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'Q' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'R' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'S' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'T' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'U' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'V' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'W' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'X' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'Y' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'Z' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '[' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\\' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* ']' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '^' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '_' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '`' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'g' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'h' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'i' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'j' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'k' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'l' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'm' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'n' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'o' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'p' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'q' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'r' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 's' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 't' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'u' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'v' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'w' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'x' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'y' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* 'z' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '{' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '|' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '}' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '~' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x7f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x80' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x81' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x82' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x83' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x84' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x85' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x86' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x87' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x88' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x89' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8d' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x8f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x90' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x91' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x92' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x93' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x94' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x95' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x96' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x97' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x98' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x99' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9a' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9b' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9c' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9d' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9e' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\x9f' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xa9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xaa' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xab' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xac' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xad' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xae' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xaf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xb9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xba' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbe' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xbf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xc9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xca' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xce' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xcf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xd9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xda' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xde' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xdf' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xe9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xea' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xeb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xec' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xed' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xee' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xef' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf0' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf1' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf2' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf3' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf4' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf5' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf6' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf7' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf8' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xf9' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfa' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfb' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfc' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfd' */ JSPARSER_STATE_INT_JS_COMMENT_ML, + /* '\xfe' */ JSPARSER_STATE_INT_JS_COMMENT_ML +}; + +static const int jsparser_transition_row_js_comment_after[] = { + /* '\x00' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x01' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x02' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x03' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x04' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x05' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x06' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x07' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x08' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\t' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\n' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\r' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x0f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x10' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x11' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x12' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x13' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x14' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x15' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x16' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x17' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x18' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x19' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x1f' */ JSPARSER_STATE_INT_JS_TEXT, + /* ' ' */ JSPARSER_STATE_INT_JS_TEXT, + /* '!' */ JSPARSER_STATE_INT_JS_TEXT, + /* '"' */ JSPARSER_STATE_INT_JS_DQ, + /* '#' */ JSPARSER_STATE_INT_JS_TEXT, + /* '$' */ JSPARSER_STATE_INT_JS_TEXT, + /* '%' */ JSPARSER_STATE_INT_JS_TEXT, + /* '&' */ JSPARSER_STATE_INT_JS_TEXT, + /* "'" */ JSPARSER_STATE_INT_JS_Q, + /* '(' */ JSPARSER_STATE_INT_JS_TEXT, + /* ')' */ JSPARSER_STATE_INT_JS_TEXT, + /* '*' */ JSPARSER_STATE_INT_JS_TEXT, + /* '+' */ JSPARSER_STATE_INT_JS_TEXT, + /* ',' */ JSPARSER_STATE_INT_JS_TEXT, + /* '-' */ JSPARSER_STATE_INT_JS_TEXT, + /* '.' */ JSPARSER_STATE_INT_JS_TEXT, + /* '/' */ JSPARSER_STATE_INT_JS_SLASH, + /* '0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '9' */ JSPARSER_STATE_INT_JS_TEXT, + /* ':' */ JSPARSER_STATE_INT_JS_TEXT, + /* ';' */ JSPARSER_STATE_INT_JS_TEXT, + /* '<' */ JSPARSER_STATE_INT_JS_TEXT, + /* '=' */ JSPARSER_STATE_INT_JS_TEXT, + /* '>' */ JSPARSER_STATE_INT_JS_TEXT, + /* '?' */ JSPARSER_STATE_INT_JS_TEXT, + /* '@' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'A' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'B' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'C' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'D' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'E' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'F' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'G' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'H' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'I' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'J' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'K' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'L' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'M' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'N' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'O' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'P' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Q' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'R' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'S' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'T' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'U' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'V' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'W' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'X' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Y' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'Z' */ JSPARSER_STATE_INT_JS_TEXT, + /* '[' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\\' */ JSPARSER_STATE_INT_JS_TEXT, + /* ']' */ JSPARSER_STATE_INT_JS_TEXT, + /* '^' */ JSPARSER_STATE_INT_JS_TEXT, + /* '_' */ JSPARSER_STATE_INT_JS_TEXT, + /* '`' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'a' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'b' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'c' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'd' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'e' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'f' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'g' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'h' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'i' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'j' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'k' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'l' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'm' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'n' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'o' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'p' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'q' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'r' */ JSPARSER_STATE_INT_JS_TEXT, + /* 's' */ JSPARSER_STATE_INT_JS_TEXT, + /* 't' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'u' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'v' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'w' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'x' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'y' */ JSPARSER_STATE_INT_JS_TEXT, + /* 'z' */ JSPARSER_STATE_INT_JS_TEXT, + /* '{' */ JSPARSER_STATE_INT_JS_TEXT, + /* '|' */ JSPARSER_STATE_INT_JS_TEXT, + /* '}' */ JSPARSER_STATE_INT_JS_TEXT, + /* '~' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x7f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x80' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x81' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x82' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x83' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x84' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x85' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x86' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x87' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x88' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x89' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x8f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x90' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x91' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x92' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x93' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x94' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x95' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x96' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x97' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x98' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x99' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9a' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9b' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9c' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9d' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9e' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\x9f' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xa9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xaa' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xab' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xac' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xad' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xae' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xaf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xb9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xba' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbe' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xbf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xc9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xca' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xce' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xcf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xd9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xda' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xde' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xdf' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xe9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xea' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xeb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xec' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xed' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xee' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xef' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf0' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf1' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf2' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf3' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf4' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf5' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf6' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf7' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf8' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xf9' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfa' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfb' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfc' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfd' */ JSPARSER_STATE_INT_JS_TEXT, + /* '\xfe' */ JSPARSER_STATE_INT_JS_TEXT +}; + +static const int * jsparser_state_transitions[] = { + jsparser_transition_row_js_text, + jsparser_transition_row_js_q, + jsparser_transition_row_js_q_e, + jsparser_transition_row_js_dq, + jsparser_transition_row_js_dq_e, + jsparser_transition_row_js_slash, + jsparser_transition_row_js_regexp_slash, + jsparser_transition_row_js_regexp, + jsparser_transition_row_js_regexp_bracket, + jsparser_transition_row_js_regexp_bracket_e, + jsparser_transition_row_js_regexp_e, + jsparser_transition_row_js_comment_ln, + jsparser_transition_row_js_comment_ml, + jsparser_transition_row_js_comment_ml_close, + jsparser_transition_row_js_comment_after +}; + diff --git a/streamhtmlparser/statemachine.c b/streamhtmlparser/statemachine.c new file mode 100644 index 0000000..c0d604e --- /dev/null +++ b/streamhtmlparser/statemachine.c @@ -0,0 +1,450 @@ +/* Copyright (c) 2007, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * --- + * Author: Filipe Almeida + */ + +#include "config.h" +#include +#include +#include +#include + +#include "statemachine.h" + +/* So we can support both C and C++ compilers, we use the CAST() macro instead + * of using C style casts or static_cast<>() directly. + */ +#ifdef __cplusplus + #define CAST(type, expression) (static_cast(expression)) +#else + #define CAST(type, expression) ((type)(expression)) +#endif + +#define MAX_CHAR_8BIT 256 + +/* Populates the statemachine definition. + */ +void statemachine_definition_populate(statemachine_definition *def, + const int* const* transition_table, + const char* const* state_names) +{ + assert(def != NULL); + assert(transition_table != NULL); + + def->transition_table = transition_table; + + def->state_names = state_names; +} + +/* Add's the callback for the event in_state that is called when the + * statemachine is in state st. + * + * This event is called everytime the the statemachine is in the specified + * state forevery character in the input stream even if the state remains + * the same. + * + * This is event is the last event to be called and is fired after both events + * exit_state and enter_state. + */ +void statemachine_in_state(statemachine_definition *def, int st, + state_event_function func) +{ + assert(def != NULL); + assert(st < def->num_states); + def->in_state_events[st] = func; +} + +/* Add's the callback for the event enter_state that is called when the + * statemachine enters state st. + * + * This event is fired after the event exit_state but before the event + * in_state. + */ +void statemachine_enter_state(statemachine_definition *def, int st, + state_event_function func) +{ + assert(def != NULL); + assert(st < def->num_states); + def->enter_state_events[st] = func; +} + +/* Add's the callback for the event exit_state that is called when the + * statemachine exits from state st. + * + * This is the first event to be called and is fired before both the events + * enter_state and in_state. + */ +void statemachine_exit_state(statemachine_definition *def, int st, + state_event_function func) +{ + assert(def != NULL); + assert(st < def->num_states); + def->exit_state_events[st] = func; +} + +/* Initializes a new statemachine definition with a defined number of states. + * + * Returns NULL if initialization fails. + * + * Initialization failure is fatal, and if this function fails it may not + * deallocate all previsouly allocated memory. + */ +statemachine_definition *statemachine_definition_new(int states) +{ + statemachine_definition *def; + def = CAST(statemachine_definition *, + malloc(sizeof(statemachine_definition))); + if (def == NULL) + return NULL; + + def->in_state_events = CAST(state_event_function *, + calloc(states, sizeof(state_event_function))); + if (def->in_state_events == NULL) + return NULL; + + def->enter_state_events =CAST(state_event_function *, + calloc(states, + sizeof(state_event_function))); + if (def->enter_state_events == NULL) + return NULL; + + def->exit_state_events = CAST(state_event_function *, + calloc(states, sizeof(state_event_function))); + if (def->exit_state_events == NULL) + return NULL; + + def->num_states = states; + def->state_names = NULL; + return def; +} + +/* Deallocates a statemachine definition object + */ +void statemachine_definition_delete(statemachine_definition *def) +{ + assert(def != NULL); + free(def->in_state_events); + free(def->enter_state_events); + free(def->exit_state_events); + free(def); +} + +/* Returns the current state. + */ +int statemachine_get_state(statemachine_ctx *ctx) { + return ctx->current_state; +} + +/* Sets the current state. + * + * It calls the exit event for the old state and the enter event for the state + * we intend to move into. + * + * Since this state change was not initiated by a character in the input stream + * we pass a null char to the event functions. + */ +void statemachine_set_state(statemachine_ctx *ctx, int state) +{ + + statemachine_definition *def; + + assert(ctx != NULL); + assert(ctx->definition != NULL); + + def = ctx->definition; + + assert(state < def->num_states); + + ctx->next_state = state; + + if (ctx->current_state != ctx->next_state) { + if (def->exit_state_events[ctx->current_state]) + def->exit_state_events[ctx->current_state](ctx, + ctx->current_state, + '\0', + ctx->next_state); + + if (def->enter_state_events[ctx->next_state]) + def->enter_state_events[ctx->next_state](ctx, + ctx->current_state, + '\0', + ctx->next_state); + } + + ctx->current_state = state; +} + +/* Reset the statemachine. + * + * The state is set to the initialization values. This includes setting the + * state to the default state (0), stopping recording and setting the line + * number to 1. + */ +void statemachine_reset(statemachine_ctx *ctx) +{ + ctx->current_state = 0; + ctx->next_state = 0; + ctx->record_buffer[0] = '\0'; + ctx->record_pos = 0; + ctx->recording = 0; + ctx->line_number = 1; + ctx->column_number = 1; +} + +/* Initializes a new statemachine. Receives a statemachine definition object + * that should have been initialized with statemachine_definition_new() and a + * user reference to be used by the caller. + * + * The user reference is used by the caller to store any instance specific data + * the caller may need and is typically used to propagate context information + * to the event callbacks. The user pointer can just be set to NULL if the + * caller doesn't need it. + * + * Returns NULL if initialization fails. + * + * Initialization failure is fatal, and if this function fails it may not + * deallocate all previously allocated memory. + */ +statemachine_ctx *statemachine_new(statemachine_definition *def, + void *user) +{ + statemachine_ctx *ctx; + assert(def != NULL); + ctx = CAST(statemachine_ctx *, malloc(sizeof(statemachine_ctx))); + if (ctx == NULL) + return NULL; + + statemachine_reset(ctx); + + ctx->definition = def; + ctx->user = user; + + return ctx; +} + +/* Returns a pointer to a context which is a duplicate of the statemachine src. + * The statemachine definition and the user pointer have to be provided since + * these references are not owned by the statemachine itself, but this will be + * shallow copies as they point to data structures we do not own. + */ +statemachine_ctx *statemachine_duplicate(statemachine_ctx *src, + statemachine_definition *def, + void *user) +{ + statemachine_ctx *dst; + assert(src != NULL); + dst = statemachine_new(def, user); + if (dst == NULL) + return NULL; + + statemachine_copy(dst, src, def, user); + + return dst; +} + +/* Copies the context of the statemachine pointed to by src to the statemachine + * provided by dst. + * The statemachine definition and the user pointer have to be provided since + * these references are not owned by the statemachine itself. + */ +void statemachine_copy(statemachine_ctx *dst, + statemachine_ctx *src, + statemachine_definition *def, + void *user) +{ + memcpy(dst, src, sizeof(statemachine_ctx)); + dst->definition = def; + dst->user = user; +} + +/* Deallocates a statemachine object + */ +void statemachine_delete(statemachine_ctx *ctx) +{ + assert(ctx != NULL); + free(ctx); +} + +/* Starts recording the current input stream into an internal buffer. + * The current input character is included in the recording. + */ +void statemachine_start_record(statemachine_ctx *ctx) +{ + assert(ctx != NULL); + ctx->record_buffer[0] = '\0'; + ctx->record_pos = 0; + ctx->recording = 1; +} + +/* Stops recording the current input stream. + * The last input character is not included in the recording. + * This function returns a pointer to the recorded string buffer. + */ +const char *statemachine_stop_record(statemachine_ctx *ctx) +{ + assert(ctx != NULL); + assert(ctx->recording); + ctx->record_buffer[ctx->record_pos] = '\0'; + ctx->recording = 0; + return ctx->record_buffer; +} + + /* Returns a pointer to the record string buffer. + */ +const char *statemachine_record_buffer(statemachine_ctx *ctx) +{ + return ctx->record_buffer; +} + +void statemachine_encode_char(char schr, char *output, size_t len) +{ + unsigned char chr = schr; + if (chr == '\'') { + strncpy(output, "\\'", len); + } else if (chr == '\\') { + strncpy(output, "\\\\", len); + + /* Like isprint() but not dependent on locale. */ + } else if (chr >= 32 && chr <= 126) { + snprintf(output, len, "%c", chr); + } else if (chr == '\n') { + strncpy(output, "\\n", len); + } else if (chr == '\r') { + strncpy(output, "\\r", len); + } else if (chr == '\t') { + strncpy(output, "\\t", len); + } else { + snprintf(output, len, "\\x%.2x", chr); + } + + output[len - 1] = '\0'; +} + +/* Sets the error message in case of a transition error. + * + * Called from statemachine_parse to set the error message in case of a + * transition error. + */ +static void statemachine_set_transition_error_message(statemachine_ctx *ctx) +{ + char encoded_char[10]; + statemachine_encode_char(ctx->current_char, encoded_char, + sizeof(encoded_char)); + + if (ctx->definition->state_names) { + snprintf(ctx->error_msg, STATEMACHINE_MAX_STR_ERROR, + "Unexpected character '%s' in state '%s'", + encoded_char, + ctx->definition->state_names[ctx->current_state]); + } else { + snprintf(ctx->error_msg, STATEMACHINE_MAX_STR_ERROR, + "Unexpected character '%s'", encoded_char); + } + +} + +/* Parses the input html stream and returns the finishing state. + * + * Returns STATEMACHINE_ERROR if unable to parse the input. If + * statemachine_parse() is called after an error situation was encountered + * the behaviour is unspecified. + */ +/* TODO(falmeida): change int size to size_t size */ +int statemachine_parse(statemachine_ctx *ctx, const char *str, int size) +{ + int i; + const int* const* state_table = ctx->definition->transition_table; + statemachine_definition *def; + + assert(ctx !=NULL && + ctx->definition != NULL && + ctx->definition->transition_table != NULL); + + if (size < 0) { + snprintf(ctx->error_msg, STATEMACHINE_MAX_STR_ERROR, "%s", + "Negative size in statemachine_parse()."); + return STATEMACHINE_ERROR; + } + + def = ctx->definition; + + for (i = 0; i < size; i++) { + ctx->current_char = *str; + ctx->next_state = + state_table[ctx->current_state][CAST(unsigned char, *str)]; + if (ctx->next_state == STATEMACHINE_ERROR) { + statemachine_set_transition_error_message(ctx); + return STATEMACHINE_ERROR; + } + + if (ctx->current_state != ctx->next_state) { + if (def->exit_state_events[ctx->current_state]) + def->exit_state_events[ctx->current_state](ctx, + ctx->current_state, + *str, + ctx->next_state); + } + if (ctx->current_state != ctx->next_state) { + if (def->enter_state_events[ctx->next_state]) + def->enter_state_events[ctx->next_state](ctx, + ctx->current_state, + *str, + ctx->next_state); + } + + if (def->in_state_events[ctx->next_state]) + def->in_state_events[ctx->next_state](ctx, + ctx->current_state, + *str, + ctx->next_state); + + /* We need two bytes left so we can NULL terminate the string. */ + if (ctx->recording && + STATEMACHINE_RECORD_BUFFER_SIZE - 1 > ctx->record_pos) { + ctx->record_buffer[ctx->record_pos++] = *str; + ctx->record_buffer[ctx->record_pos] = '\0'; + } + +/* TODO(falmeida): Should clarify the contract here, since an event can change + * ctx->next_state and we need this functionality */ + + ctx->current_state = ctx->next_state; + ctx->column_number++; + + if (*str == '\n') { + ctx->line_number++; + ctx->column_number = 1; + } + str++; + } + + return ctx->current_state; +} diff --git a/streamhtmlparser/tools/fsm_config.py b/streamhtmlparser/tools/fsm_config.py new file mode 100755 index 0000000..6046621 --- /dev/null +++ b/streamhtmlparser/tools/fsm_config.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python +# +# Copyright (c) 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# --- +# Author: Filipe Almeida +# +# Create a state machine object based on a definition file. +# + +__author__ = 'falmeida@google.com (Filipe Almeida)' + +class OrderedDict: + """Ordered dictionary implementation.""" + + # Define the minimum functionality we need for our application. + # Easiser would be to subclass from UserDict.DictMixin, and only + # define __getitem__, __setitem__, __delitem__, and keys, but that's + # not as portable. We don't need to define much more, so we just do. + + def __init__(self): + self._dict = {} + self._keys = [] + + def __getitem__(self, key): + return self._dict[key] + + def __setitem__(self, key, value): + if key not in self._keys: + self._keys.append(key) + self._dict[key] = value + + def __delitem__(self, key): + self._keys.remove(key) + del self._dict[key] + + def keys(self): + return self._keys + + # Below are all we have to define in addition to what DictMixin would need + def __len__(self): + return len(self.keys()) + + def __contains__(self, key): + return self.has_key(key) + + def __iter__(self): + # It's not as portable -- though it would be more space-efficient -- to do + # for k in self.keys(): yield k + return iter(self.keys()) + +class State(object): + """Contains information about a specific state.""" + + def __init__(self): + pass + + name = None + external_name = None + transitions = [] + + +class Transition(object): + """Contains information about a specific transition.""" + + def __init__(self, condition, source, destination): + self.condition = condition + self.source = source + self.destination = destination + + +class FSMConfig(object): + """Container for the statemachine definition.""" + + sm = {} # dictionary that contains the finite state machine definition + # loaded from a config file. + transitions = [] # List of transitions. + conditions = {} # Mapping between the condition name and the bracket + # expression. + states = OrderedDict() # Ordered dictionary of states. + name = None + comment = None + + def AddState(self, **dic): + """Called from the definition file with the description of the state. + + Receives a dictionary and populates internal structures based on it. The + dictionary is in the following format: + + {'name': state_name, + 'external': exposed state name, + 'transitions': [ + [condition, destination_state ], + [condition, destination_state ] + ] + } + + """ + + state = State() + state.name = dic['name'] + state.external_name = dic['external'] + + state_transitions = [] + + for (condition, destination) in dic['transitions']: + transition = Transition(condition, state.name, destination) + state_transitions.append(transition) + + self.transitions.extend(state_transitions) + state.transitions = state_transitions + self.states[state.name] = state + + def AddCondition(self, name, expression): + """Called from the definition file with the definition of a condition. + + Receives the name of the condition and it's expression. + """ + self.conditions[name] = expression + + def Load(self, filename): + """Load the state machine definition file. + + In the definition file, which is based on the python syntax, the following + variables and functions are defined. + + name: Name of the state machine + comment: Comment line on the generated file. + condition(): A mapping between condition names and bracket expressions. + state(): Defines a state and it's transitions. It accepts the following + attributes: + name: name of the state + external: exported name of the state. The exported name can be used + multiple times in order to create a super state. + transitions: List of pairs containing the condition for the transition + and the destination state. Transitions are ordered so if + a default rule is used, it must be the last one in the list. + + Example: + + name = 'c comment parser' + + condition('/', '/') + condition('*', '*') + condition('linefeed', '\\n') + condition('default', '[:default:]') + + state(name = 'text', + external = 'comment', + transitions = [ + [ '/', 'comment_start' ], + [ 'default', 'text' ] + ]) + + state(name = 'comment_start', + external = 'comment', + transitions = [ + [ '/', 'comment_line' ], + [ '*', 'comment_multiline' ], + [ 'default', 'text' ] + ]) + + state(name = 'comment_line', + external = 'comment', + transitions = [ + [ 'linefeed', 'text' ], + [ 'default', 'comment_line' ] + ]) + + state(name = 'comment_multiline', + external = 'comment', + transitions = [ + [ '*', 'comment_multiline_close' ], + [ 'default', 'comment_multiline' ] + ]) + + state(name = 'comment_multiline_close', + external = 'comment', + transitions = [ + [ '/', 'text' ], + [ 'default', 'comment_multiline' ] + ]) + + """ + + self.sm['state'] = self.AddState + self.sm['condition'] = self.AddCondition + execfile(filename, self.sm) + self.name = self.sm['name'] + if not self.name.isalnum(): + raise Exception("State machine name must consist of only alphanumeric" + "characters.") + self.comment = self.sm['comment'] + + def __init__(self): + pass diff --git a/streamhtmlparser/tools/generate_fsm.py b/streamhtmlparser/tools/generate_fsm.py new file mode 100755 index 0000000..fac54a0 --- /dev/null +++ b/streamhtmlparser/tools/generate_fsm.py @@ -0,0 +1,331 @@ +#!/usr/bin/env python +# +# Copyright (c) 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# --- +# Author: Filipe Almeida +# +# Generate a C include file from a finite state machine definition. +# +# Right now the form is the one expected by htmlparser.cc so this file is pretty +# tightly coupled with htmlparser.cc. + +__author__ = 'falmeida@google.com (Filipe Almeida)' + +import sys + +from fsm_config import FSMConfig + + +class FSMGenerateAbstract(object): + + def __init__(self, config): + self._config = config + + def Generate(self): + """Returns the generated FSM description for the specified language. + + Raises a TypeError, because abstract methods can not be called. + + Raises: + TypeError + """ + raise TypeError('Abstract method %s.%s called' % (self._class.__name__, + self._function)) + + +class FSMGenerateC(FSMGenerateAbstract): + """Generate the C definition from a statemachien configuration object.""" + + TABSTOP_ = 2 + + def _Prefix(self): + """Return a c declaration prefix.""" + + return self._config.name.lower() + '_' + + def _StateInternalC(self, st): + """Return the internal name of the state.""" + + return '%sSTATE_INT_%s' % (self._Prefix().upper(), st.upper()) + + def _StateExternalC(self, st): + """Return the external name of the state.""" + + return '%sSTATE_%s' % (self._Prefix().upper(), st.upper()) + + def _MakeTuple(self, data): + """Converts data to a string representation of a C tuple.""" + + return '{ %s }' % ', '.join(data) + + def _CreateHeader(self): + """Print the include file header.""" + + out = [] + + if self._config.comment: + out.append('/* ' + self._config.comment) + else: + out.append('/* State machine definition for ' + self._config.name) + out.append(' * Auto generated by generate_fsm.py. Please do not edit.') + out.append(' */') + + return '\n'.join(out) + + def _ListToIndentedString(self, list): + indented_list = [' ' + e for e in list] + return ',\n'.join(indented_list) + + def _CreateEnum(self, name, data): + """Print a c enum definition.""" + + return 'enum %s {\n%s\n};\n' % (name, + self._ListToIndentedString(data)) + + def _CreateStructList(self, name, type, data): + """Print a c flat list. + + Generic function to print list in c in the form of a struct. + + Args: + name: name of the structure. + type: type of the struct. + data: contents of the struct as a list of elements + + Returns: + String with the generated list. + """ + + return "static const %s %s[] = {\n%s\n};\n" % ( + type, + name, + self._ListToIndentedString(data)) + + def _CreateStatesEnum(self): + """Print the internal states enum. + + Prints an enum containing all the valid states. + + Returns: + String containing a C enumeration of the states. + """ + list = [] # output list + + for state in self._config.states: + list.append(self._StateInternalC(state)) + return self._CreateEnum(self._Prefix() + 'state_internal_enum', list) + + def _CreateStatesExternal(self): + """Print a struct with a mapping from internal to external states.""" + list = [] # output list + + for state_name in self._config.states: + list.append(self._StateExternalC( + self._config.states[state_name].external_name)) + + return self._CreateStructList(self._Prefix() + 'states_external', + 'int', + list) + + def _CreateStatesInternalNames(self): + """Return a struct mapping internal states to a strings.""" + out = [] # output list + + for state_name in self._config.states: + out.append('"' + state_name + '"') + + return self._CreateStructList(self._Prefix() + 'states_internal_names', + 'char *', + out) + + def _CreateNumStates(self): + """Print a Macro defining the number of states.""" + + return "#define %s_NUM_STATES %s" % (self._config.name.upper(), + str(len(self._config.states) + 1)) + + def _ExpandBracketExpression(self, expression): + """Expand ranges in a regexp bracket expression. + + Returns a string with the ranges in a bracket expression expanded. + + The bracket expression is similar to grep(1) or regular expression bracket + expressions but it does not support the negation (^) modifier or named + character classes like [:alpha:] or [:alnum:]. + + The especial character class [:default:] will expand to all elements in the + ascii range. + + For example, the expression 'a-c13A-D' will expand to 'abc13ABCD'. + + Args: + expression: A regexp bracket expression. Ie: 'A-Z0-9'. + + Returns: + A string with the ranges in the bracket expression expanded. + """ + + def ExpandRange(start, end): + """Return a sequence of characters between start and end. + + Args: + start: first character of the sequence. + end: last character of the sequence. + + Returns: + string containing the sequence of characters between start and end. + """ + return [chr(c) for c in range(ord(start), ord(end) + 1)] + + def ListNext(input_list): + """Pop the first element of a list. + + Args: + input_list: python list object. + + Returns: + First element of the list or None if the list is empty. + """ + if input_list: + return input_list.pop(0) + else: + return None + + out = [] # List containing the output + + # Special case for the character class [:default:] + if expression == '[:default:]': + out = [chr(c) for c in range(0, 255)] + return ''.join(out) + + chars = [c for c in expression] # list o characters in the expression. + + current = ListNext(chars) + while current: + next = ListNext(chars) + if next == '-': + next = ListNext(chars) + if next: + out.extend(ExpandRange(current, next)) + else: + out.append(current) + out.append('-') + current = ListNext(chars) + else: + out.append(current) + current = next + + return ''.join(out) + + def _CreateTransitionTable(self): + """Print the state transition list. + + Returns a set of C structures that define the transition table for the state + machine. This structure is a list of lists of ints (int **). The outer list + indexes the source state and the inner list contains the destination state + for each of the possible input characters: + + const int * const* transitions[source][input] == destination. + + The conditions are mapped from the conditions variable. + + Returns: + String containing the generated transition table in a C struct. + """ + out = [] # output list + default_state = 'STATEMACHINE_ERROR' + state_table = {} + + for state in self._config.states: + state_table[state] = [default_state for col in xrange(255)] + + # We process the transition in reverse order while updating the table. + for i_transition in range(len(self._config.transitions) - 1, -1, -1): + transition = self._config.transitions[i_transition] + (condition_name, src, dst) = (transition.condition, + transition.source, + transition.destination) + condition = self._config.conditions[condition_name] + char_list = self._ExpandBracketExpression(condition) + + for c in char_list: + state_table[src][ord(c)] = self._StateInternalC(dst) + + # Create the inner lists which map input characters to destination states. + for state in self._config.states: + transition_row = [] + for c in xrange(0, 255): + transition_row.append(' /* %06s */ %s' % (repr(chr(c)), + state_table[state][c])) + + out.append(self._CreateStructList('%stransition_row_%s' % + (self._Prefix(), + state), + 'int', + transition_row)) + out.append('\n') + + # Create the outer list, which map source states to input characters. + out.append('static const %s %s[] = {\n' % ('int *', self._Prefix() + + 'state_transitions')) + + row_list = [' %stransition_row_%s' % + (self._Prefix(), row) for row in self._config.states] + out.append(',\n'.join(row_list)) + out.append('\n};\n') + + return ''.join(out) + + def Generate(self): + """Returns the generated the C include statements for the statemachine.""" + + print '\n'.join((self._CreateHeader(), + self._CreateNumStates(), + self._CreateStatesEnum(), + self._CreateStatesExternal(), + self._CreateStatesInternalNames(), + self._CreateTransitionTable())) + + +def main(): + if len(sys.argv) != 2: + print "usage: generate_fsm.py config_file" + sys.exit(1) + + config = FSMConfig() + config.Load(sys.argv[1]) + + gen = FSMGenerateC(config) + gen.Generate() + + +if __name__ == "__main__": + main() -- cgit v1.2.3-54-g00ecf