// Automatically generated from Source/JavaScriptCore/parser/Keywords.table using Source/JavaScriptCore/create_hash_table. DO NOT EDIT!

#include "Lookup.h"

namespace JSC {

static const struct CompactHashIndex mainTableIndex[134] = {
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 41, -1 },
    { 38, -1 },
    { 31, -1 },
    { 14, -1 },
    { 0, -1 },
    { -1, -1 },
    { 16, -1 },
    { -1, -1 },
    { 12, -1 },
    { 15, -1 },
    { -1, -1 },
    { 21, -1 },
    { -1, -1 },
    { 44, -1 },
    { 40, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 32, -1 },
    { -1, -1 },
    { 8, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 25, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 43, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 10, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 35, -1 },
    { 36, -1 },
    { 24, -1 },
    { -1, -1 },
    { 27, -1 },
    { -1, -1 },
    { 20, -1 },
    { -1, -1 },
    { 11, 130 },
    { -1, -1 },
    { 4, 132 },
    { -1, -1 },
    { 13, -1 },
    { -1, -1 },
    { 33, -1 },
    { 30, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 1, 128 },
    { 42, -1 },
    { 18, -1 },
    { -1, -1 },
    { 29, -1 },
    { 3, 129 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 6, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 28, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 23, -1 },
    { -1, -1 },
    { 45, -1 },
    { -1, -1 },
    { -1, -1 },
    { 39, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 5, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 17, -1 },
    { 26, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { -1, -1 },
    { 7, 131 },
    { -1, -1 },
    { -1, -1 },
    { 2, -1 },
    { 9, -1 },
    { 19, -1 },
    { 22, -1 },
    { 34, 133 },
    { 37, -1 },
};

static const struct HashTableValue mainTableValues[46] = {
   { "null", 0, NoIntrinsic, { (intptr_t)(NULLTOKEN), (intptr_t)(0) } },
   { "true", 0, NoIntrinsic, { (intptr_t)(TRUETOKEN), (intptr_t)(0) } },
   { "false", 0, NoIntrinsic, { (intptr_t)(FALSETOKEN), (intptr_t)(0) } },
   { "await", 0, NoIntrinsic, { (intptr_t)(AWAIT), (intptr_t)(0) } },
   { "break", 0, NoIntrinsic, { (intptr_t)(BREAK), (intptr_t)(0) } },
   { "case", 0, NoIntrinsic, { (intptr_t)(CASE), (intptr_t)(0) } },
   { "catch", 0, NoIntrinsic, { (intptr_t)(CATCH), (intptr_t)(0) } },
   { "class", 0, NoIntrinsic, { (intptr_t)(CLASSTOKEN), (intptr_t)(0) } },
   { "const", 0, NoIntrinsic, { (intptr_t)(CONSTTOKEN), (intptr_t)(0) } },
   { "default", 0, NoIntrinsic, { (intptr_t)(DEFAULT), (intptr_t)(0) } },
   { "extends", 0, NoIntrinsic, { (intptr_t)(EXTENDS), (intptr_t)(0) } },
   { "finally", 0, NoIntrinsic, { (intptr_t)(FINALLY), (intptr_t)(0) } },
   { "for", 0, NoIntrinsic, { (intptr_t)(FOR), (intptr_t)(0) } },
   { "instanceof", 0, NoIntrinsic, { (intptr_t)(INSTANCEOF), (intptr_t)(0) } },
   { "new", 0, NoIntrinsic, { (intptr_t)(NEW), (intptr_t)(0) } },
   { "var", 0, NoIntrinsic, { (intptr_t)(VAR), (intptr_t)(0) } },
   { "let", 0, NoIntrinsic, { (intptr_t)(LET), (intptr_t)(0) } },
   { "continue", 0, NoIntrinsic, { (intptr_t)(CONTINUE), (intptr_t)(0) } },
   { "function", 0, NoIntrinsic, { (intptr_t)(FUNCTION), (intptr_t)(0) } },
   { "return", 0, NoIntrinsic, { (intptr_t)(RETURN), (intptr_t)(0) } },
   { "void", 0, NoIntrinsic, { (intptr_t)(VOIDTOKEN), (intptr_t)(0) } },
   { "delete", 0, NoIntrinsic, { (intptr_t)(DELETETOKEN), (intptr_t)(0) } },
   { "if", 0, NoIntrinsic, { (intptr_t)(IF), (intptr_t)(0) } },
   { "this", 0, NoIntrinsic, { (intptr_t)(THISTOKEN), (intptr_t)(0) } },
   { "do", 0, NoIntrinsic, { (intptr_t)(DO), (intptr_t)(0) } },
   { "while", 0, NoIntrinsic, { (intptr_t)(WHILE), (intptr_t)(0) } },
   { "else", 0, NoIntrinsic, { (intptr_t)(ELSE), (intptr_t)(0) } },
   { "in", 0, NoIntrinsic, { (intptr_t)(INTOKEN), (intptr_t)(0) } },
   { "super", 0, NoIntrinsic, { (intptr_t)(SUPER), (intptr_t)(0) } },
   { "switch", 0, NoIntrinsic, { (intptr_t)(SWITCH), (intptr_t)(0) } },
   { "throw", 0, NoIntrinsic, { (intptr_t)(THROW), (intptr_t)(0) } },
   { "try", 0, NoIntrinsic, { (intptr_t)(TRY), (intptr_t)(0) } },
   { "typeof", 0, NoIntrinsic, { (intptr_t)(TYPEOF), (intptr_t)(0) } },
   { "with", 0, NoIntrinsic, { (intptr_t)(WITH), (intptr_t)(0) } },
   { "debugger", 0, NoIntrinsic, { (intptr_t)(DEBUGGER), (intptr_t)(0) } },
   { "yield", 0, NoIntrinsic, { (intptr_t)(YIELD), (intptr_t)(0) } },
   { "enum", 0, NoIntrinsic, { (intptr_t)(RESERVED), (intptr_t)(0) } },
   { "export", 0, NoIntrinsic, { (intptr_t)(EXPORT), (intptr_t)(0) } },
   { "import", 0, NoIntrinsic, { (intptr_t)(IMPORT), (intptr_t)(0) } },
   { "implements", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
   { "interface", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
   { "package", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
   { "private", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
   { "protected", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
   { "public", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
   { "static", 0, NoIntrinsic, { (intptr_t)(RESERVED_IF_STRICT), (intptr_t)(0) } },
};

static const struct HashTable mainTable =
    { 46, 127, false, mainTableValues, mainTableIndex };

} // namespace JSC
