Commit abe96578 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: I/O blocks: Support unsized arrays

Geometry shader inputs have an extra array dimension, which can be unsized as it can be derived from the primitive type. This change fixes the grammar to support such arrays. Additionally, it enables EXT_shader_io_blocks automatically with EXT_geometry_shader and EXT_tessellation_shader per spec. Bug: angleproject:3580 Change-Id: Ia7eb3e8be28c2eef2072dbe2a546fa34973104ab Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2568242Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarMohan Maiya <m.maiya@samsung.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
parent ec0acf64
...@@ -53,7 +53,7 @@ enum class BlockType ...@@ -53,7 +53,7 @@ enum class BlockType
BLOCK_BUFFER, BLOCK_BUFFER,
// TODO: Remove gl_in from interface blocks and place it in varyings with the rest of shader I/O // TODO: Remove gl_in from interface blocks and place it in varyings with the rest of shader I/O
// blocks, then remove GetInBlocks and getInBlocks everywhere. http://anglebug.com/NNNN // blocks, then remove GetInBlocks and getInBlocks everywhere. http://anglebug.com/5423
BLOCK_IN BLOCK_IN
}; };
......
...@@ -6,11 +6,11 @@ ...@@ -6,11 +6,11 @@
"src/compiler/translator/glslang.l": "src/compiler/translator/glslang.l":
"a04170178bdc8511bff69ec4ff144576", "a04170178bdc8511bff69ec4ff144576",
"src/compiler/translator/glslang.y": "src/compiler/translator/glslang.y":
"d614cbc19923d104c98e3a5f8770b5be", "1c7a2f4fa0f62ebc42f855bb8a8deeaf",
"src/compiler/translator/glslang_lex_autogen.cpp": "src/compiler/translator/glslang_lex_autogen.cpp":
"5d6469e58f9855f93987b5ddbd663920", "5d6469e58f9855f93987b5ddbd663920",
"src/compiler/translator/glslang_tab_autogen.cpp": "src/compiler/translator/glslang_tab_autogen.cpp":
"a93ca4c95c635f4154e41586911d0182", "821a6cccd98a7d89666bfb3fabee3585",
"src/compiler/translator/glslang_tab_autogen.h": "src/compiler/translator/glslang_tab_autogen.h":
"840c12db9f7824afd05b5306c8816d95", "840c12db9f7824afd05b5306c8816d95",
"tools/flex-bison/linux/bison.sha1": "tools/flex-bison/linux/bison.sha1":
......
...@@ -1097,8 +1097,14 @@ inline bool IsShaderIoBlock(TQualifier qualifier) ...@@ -1097,8 +1097,14 @@ inline bool IsShaderIoBlock(TQualifier qualifier)
{ {
switch (qualifier) switch (qualifier)
{ {
case EvqFragmentIn:
case EvqVertexOut: case EvqVertexOut:
case EvqTessControlIn:
case EvqTessControlOut:
case EvqTessEvaluationIn:
case EvqTessEvaluationOut:
case EvqGeometryIn:
case EvqGeometryOut:
case EvqFragmentIn:
return true; return true;
default: default:
return false; return false;
......
...@@ -167,12 +167,22 @@ void TDirectiveHandler::handleExtension(const angle::pp::SourceLocation &loc, ...@@ -167,12 +167,22 @@ void TDirectiveHandler::handleExtension(const angle::pp::SourceLocation &loc,
// OVR_multiview is implicitly enabled when OVR_multiview2 is enabled // OVR_multiview is implicitly enabled when OVR_multiview2 is enabled
if (name == "GL_OVR_multiview2") if (name == "GL_OVR_multiview2")
{ {
const std::string multiview = "GL_OVR_multiview"; constexpr char kMultiviewExtName[] = "GL_OVR_multiview";
TExtensionBehavior::iterator iterMultiview = iter = mExtensionBehavior.find(GetExtensionByName(kMultiviewExtName));
mExtensionBehavior.find(GetExtensionByName(multiview.c_str())); if (iter != mExtensionBehavior.end())
if (iterMultiview != mExtensionBehavior.end())
{ {
iterMultiview->second = behaviorVal; iter->second = behaviorVal;
}
}
// EXT_shader_io_blocks is implicitly enabled when EXT_geometry_shader or
// EXT_tessellation_shader is enabled.
if (name == "GL_EXT_geometry_shader" || name == "GL_EXT_tessellation_shader")
{
constexpr char kIOBlocksExtName[] = "GL_EXT_shader_io_blocks";
iter = mExtensionBehavior.find(GetExtensionByName(kIOBlocksExtName));
if (iter != mExtensionBehavior.end())
{
iter->second = behaviorVal;
} }
} }
return; return;
......
...@@ -240,6 +240,7 @@ TParseContext::TParseContext(TSymbolTable &symt, ...@@ -240,6 +240,7 @@ TParseContext::TParseContext(TSymbolTable &symt,
mGeometryShaderMaxVertices(-1), mGeometryShaderMaxVertices(-1),
mMaxGeometryShaderInvocations(resources.MaxGeometryShaderInvocations), mMaxGeometryShaderInvocations(resources.MaxGeometryShaderInvocations),
mMaxGeometryShaderMaxVertices(resources.MaxGeometryOutputVertices), mMaxGeometryShaderMaxVertices(resources.MaxGeometryOutputVertices),
mGeometryInputArraySize(0),
mFunctionBodyNewScope(false), mFunctionBodyNewScope(false),
mOutputType(outputType) mOutputType(outputType)
{} {}
...@@ -3071,6 +3072,7 @@ void TParseContext::setGeometryShaderInputArraySize(unsigned int inputArraySize, ...@@ -3071,6 +3072,7 @@ void TParseContext::setGeometryShaderInputArraySize(unsigned int inputArraySize,
"array inputs.", "array inputs.",
"layout"); "layout");
} }
mGeometryInputArraySize = inputArraySize;
} }
bool TParseContext::parseGeometryShaderInputLayoutQualifier(const TTypeQualifier &typeQualifier) bool TParseContext::parseGeometryShaderInputLayoutQualifier(const TTypeQualifier &typeQualifier)
...@@ -3837,13 +3839,17 @@ TIntermDeclaration *TParseContext::addInterfaceBlock( ...@@ -3837,13 +3839,17 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
TFieldList *fieldList, TFieldList *fieldList,
const ImmutableString &instanceName, const ImmutableString &instanceName,
const TSourceLoc &instanceLine, const TSourceLoc &instanceLine,
TIntermTyped *arrayIndex, const TVector<unsigned int> *arraySizes,
const TSourceLoc &arrayIndexLine) const TSourceLoc &arraySizesLine)
{ {
checkIsNotReserved(nameLine, blockName); checkIsNotReserved(nameLine, blockName);
TTypeQualifier typeQualifier = typeQualifierBuilder.getVariableTypeQualifier(mDiagnostics); TTypeQualifier typeQualifier = typeQualifierBuilder.getVariableTypeQualifier(mDiagnostics);
const bool isUniformOrBuffer =
typeQualifier.qualifier == EvqUniform || typeQualifier.qualifier == EvqBuffer;
const bool isShaderIoBlock = IsShaderIoBlock(typeQualifier.qualifier);
if (mShaderVersion < 310 && typeQualifier.qualifier != EvqUniform) if (mShaderVersion < 310 && typeQualifier.qualifier != EvqUniform)
{ {
error(typeQualifier.line, error(typeQualifier.line,
...@@ -3853,7 +3859,7 @@ TIntermDeclaration *TParseContext::addInterfaceBlock( ...@@ -3853,7 +3859,7 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
} }
else if (typeQualifier.qualifier != EvqUniform && typeQualifier.qualifier != EvqBuffer) else if (typeQualifier.qualifier != EvqUniform && typeQualifier.qualifier != EvqBuffer)
{ {
if (IsShaderIoBlock(typeQualifier.qualifier)) if (isShaderIoBlock)
{ {
if (!isExtensionEnabled(TExtension::OES_shader_io_blocks) && if (!isExtensionEnabled(TExtension::OES_shader_io_blocks) &&
!isExtensionEnabled(TExtension::EXT_shader_io_blocks)) !isExtensionEnabled(TExtension::EXT_shader_io_blocks))
...@@ -3881,11 +3887,52 @@ TIntermDeclaration *TParseContext::addInterfaceBlock( ...@@ -3881,11 +3887,52 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
checkMemoryQualifierIsNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line); checkMemoryQualifierIsNotSpecified(typeQualifier.memoryQualifier, typeQualifier.line);
} }
// add array index // Verify array sizes
unsigned int arraySize = 0; if (arraySizes)
if (arrayIndex != nullptr) {
if (isUniformOrBuffer)
{
if (arraySizes->size() == 0)
{
error(arraySizesLine, "unsized arrays are not allowed with interface blocks", "");
}
if (arraySizes->size() > 1)
{
error(arraySizesLine, "array of arrays are not allowed with interface blocks", "");
}
}
else if (isShaderIoBlock)
{
size_t arrayDimensions = arraySizes->size();
// Geometry shader inputs have a level arrayness that must be ignored.
if (mShaderType == GL_GEOMETRY_SHADER_EXT && IsVaryingIn(typeQualifier.qualifier))
{
ASSERT(arrayDimensions > 0);
--arrayDimensions;
// Validate that the array size of input matches the geometry layout
// declaration, if not automatic (specified as []).
const unsigned int geometryDim = arraySizes->back();
if (geometryDim > 0 && geometryDim != mGeometryInputArraySize)
{
error(arraySizesLine,
"geometry shader input block array size inconsistent "
"with primitive",
"");
}
}
if (arrayDimensions > 1)
{
error(arraySizesLine, "array of arrays are not allowed with I/O blocks", "");
}
}
}
else if (isShaderIoBlock && mShaderType == GL_GEOMETRY_SHADER_EXT &&
IsVaryingIn(typeQualifier.qualifier))
{ {
arraySize = checkIsValidArraySize(arrayIndexLine, arrayIndex); error(arraySizesLine, "geometry shader input blocks must be an array", "");
} }
checkIndexIsNotSpecified(typeQualifier.line, typeQualifier.layoutQualifier.index); checkIndexIsNotSpecified(typeQualifier.line, typeQualifier.layoutQualifier.index);
...@@ -3896,6 +3943,8 @@ TIntermDeclaration *TParseContext::addInterfaceBlock( ...@@ -3896,6 +3943,8 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
} }
else else
{ {
unsigned int arraySize =
arraySizes == nullptr || arraySizes->empty() ? 0 : (*arraySizes)[0];
checkBlockBindingIsValid(typeQualifier.line, typeQualifier.qualifier, checkBlockBindingIsValid(typeQualifier.line, typeQualifier.qualifier,
typeQualifier.layoutQualifier.binding, arraySize); typeQualifier.layoutQualifier.binding, arraySize);
} }
...@@ -4066,9 +4115,9 @@ TIntermDeclaration *TParseContext::addInterfaceBlock( ...@@ -4066,9 +4115,9 @@ TIntermDeclaration *TParseContext::addInterfaceBlock(
TType *interfaceBlockType = TType *interfaceBlockType =
new TType(interfaceBlock, typeQualifier.qualifier, blockLayoutQualifier); new TType(interfaceBlock, typeQualifier.qualifier, blockLayoutQualifier);
if (arrayIndex != nullptr) if (arraySizes)
{ {
interfaceBlockType->makeArray(arraySize); interfaceBlockType->makeArrays(*arraySizes);
} }
// The instance variable gets created to refer to the interface block type from the AST // The instance variable gets created to refer to the interface block type from the AST
...@@ -4240,8 +4289,12 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, ...@@ -4240,8 +4289,12 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression,
"["); "[");
break; break;
default: default:
// We can reach here only in error cases. // It's ok for shader I/O blocks to be dynamically indexed
ASSERT(mDiagnostics->numErrors() > 0); if (!IsShaderIoBlock(baseExpression->getQualifier()))
{
// We can reach here only in error cases.
ASSERT(mDiagnostics->numErrors() > 0);
}
break; break;
} }
} }
......
...@@ -358,8 +358,8 @@ class TParseContext : angle::NonCopyable ...@@ -358,8 +358,8 @@ class TParseContext : angle::NonCopyable
TFieldList *fieldList, TFieldList *fieldList,
const ImmutableString &instanceName, const ImmutableString &instanceName,
const TSourceLoc &instanceLine, const TSourceLoc &instanceLine,
TIntermTyped *arrayIndex, const TVector<unsigned int> *arraySizes,
const TSourceLoc &arrayIndexLine); const TSourceLoc &arraySizesLine);
void parseLocalSize(const ImmutableString &qualifierType, void parseLocalSize(const ImmutableString &qualifierType,
const TSourceLoc &qualifierTypeLine, const TSourceLoc &qualifierTypeLine,
...@@ -674,6 +674,7 @@ class TParseContext : angle::NonCopyable ...@@ -674,6 +674,7 @@ class TParseContext : angle::NonCopyable
int mGeometryShaderMaxVertices; int mGeometryShaderMaxVertices;
int mMaxGeometryShaderInvocations; int mMaxGeometryShaderInvocations;
int mMaxGeometryShaderMaxVertices; int mMaxGeometryShaderMaxVertices;
unsigned int mGeometryInputArraySize;
// Track when we add new scope for func body in ESSL 1.00 spec // Track when we add new scope for func body in ESSL 1.00 spec
bool mFunctionBodyNewScope; bool mFunctionBodyNewScope;
......
...@@ -618,9 +618,9 @@ declaration ...@@ -618,9 +618,9 @@ declaration
ES3_OR_NEWER(ImmutableString($2.string), @1, "interface blocks"); ES3_OR_NEWER(ImmutableString($2.string), @1, "interface blocks");
$$ = context->addInterfaceBlock(*$1, @2, ImmutableString($2.string), $3, ImmutableString($5.string), @5, NULL, @$); $$ = context->addInterfaceBlock(*$1, @2, ImmutableString($2.string), $3, ImmutableString($5.string), @5, NULL, @$);
} }
| type_qualifier enter_struct struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON { | type_qualifier enter_struct struct_declaration_list RIGHT_BRACE IDENTIFIER array_specifier SEMICOLON {
ES3_OR_NEWER(ImmutableString($2.string), @1, "interface blocks"); ES3_OR_NEWER(ImmutableString($2.string), @1, "interface blocks");
$$ = context->addInterfaceBlock(*$1, @2, ImmutableString($2.string), $3, ImmutableString($5.string), @5, $7, @6); $$ = context->addInterfaceBlock(*$1, @2, ImmutableString($2.string), $3, ImmutableString($5.string), @5, $6, @6);
} }
| type_qualifier SEMICOLON { | type_qualifier SEMICOLON {
context->parseGlobalLayoutQualifier(*$1); context->parseGlobalLayoutQualifier(*$1);
......
...@@ -696,7 +696,7 @@ union yyalloc ...@@ -696,7 +696,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */ /* YYFINAL -- State number of the termination state. */
#define YYFINAL 164 #define YYFINAL 164
/* YYLAST -- Last index in YYTABLE. */ /* YYLAST -- Last index in YYTABLE. */
#define YYLAST 3501 #define YYLAST 3500
/* YYNTOKENS -- Number of terminals. */ /* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 182 #define YYNTOKENS 182
...@@ -705,7 +705,7 @@ union yyalloc ...@@ -705,7 +705,7 @@ union yyalloc
/* YYNRULES -- Number of rules. */ /* YYNRULES -- Number of rules. */
#define YYNRULES 326 #define YYNRULES 326
/* YYNSTATES -- Number of states. */ /* YYNSTATES -- Number of states. */
#define YYNSTATES 452 #define YYNSTATES 450
#define YYUNDEFTOK 2 #define YYUNDEFTOK 2
#define YYMAXUTOK 436 #define YYMAXUTOK 436
...@@ -1067,9 +1067,9 @@ static const yytype_uint16 yytoknum[] = { ...@@ -1067,9 +1067,9 @@ static const yytype_uint16 yytoknum[] = {
426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436}; 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436};
#endif #endif
#define YYPACT_NINF -392 #define YYPACT_NINF -393
#define yypact_value_is_default(Yystate) (!!((Yystate) == (-392))) #define yypact_value_is_default(Yystate) (!!((Yystate) == (-393)))
#define YYTABLE_NINF -286 #define YYTABLE_NINF -286
...@@ -1078,35 +1078,35 @@ static const yytype_uint16 yytoknum[] = { ...@@ -1078,35 +1078,35 @@ static const yytype_uint16 yytoknum[] = {
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */ STATE-NUM. */
static const yytype_int16 yypact[] = { static const yytype_int16 yypact[] = {
2999, -392, -392, -392, -392, -392, 126, -392, -392, -392, -392, -392, -392, -392, -392, -392, 2998, -393, -393, -393, -393, -393, 135, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-392, -392, -392, -392, -85, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -393, -393, -393, -393, -108, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393,
-132, -392, -392, -392, -93, -122, -99, 3128, -127, -392, -2, -392, 1586, -392, -392, -392, -63, -393, -393, -393, -56, -60, -31, 3127, -61, -393, -66, -393, 1585, -393, -393, -393,
-392, -392, -392, -392, -392, -61, -392, 2870, -392, -392, 3370, -392, -392, -392, -58, -49, -393, -393, -393, -393, -393, -46, -393, 2869, -393, -393, 3369, -393, -393, -393, -17, -47,
-392, -28, -392, 3128, -392, -392, -392, 3128, 12, 12, -392, -73, -131, -119, -392, 3128, -393, -14, -393, 3127, -393, -393, -393, 3127, -9, -9, -393, 6, -119, -80, -393, 3127,
-392, -392, 1708, -24, -392, -392, -29, 3128, -392, -392, -22, -104, -392, 436, -392, -392, -393, -393, 1707, 5, -393, -393, -2, 3127, -393, -393, 1, -74, -393, 435, -393, -393,
-392, -392, -61, -102, -392, 2158, -81, -392, -392, 3128, 12, 2456, -392, -392, -8, -392, -393, -393, -46, -98, -393, 2157, -87, -393, -393, 3127, -9, 2455, -393, -393, 11, -393,
-392, -392, -392, -392, 2158, 2158, 2158, -392, -392, -392, -392, -392, -392, -392, -86, -392, -393, -393, -393, -393, 2157, 2157, 2157, -393, -393, -393, -393, -393, -393, -393, -111, -393,
-392, -392, -7, -77, 2306, 21, -392, 2158, -13, -75, 17, -114, 20, 2, -21, -6, -393, -393, 12, -73, 2305, 16, -393, 2157, -21, -132, -6, -116, -15, -8, -3, -1,
33, 39, -125, -392, 27, -392, 1859, -392, 2594, 3128, 32, -392, -49, 22, 23, -392, 25, 31, -125, -393, 18, -393, 1858, -393, 2593, 3127, 3, -393, -47, 13, 20, -393,
34, 35, 26, 2010, 37, 2158, 30, 40, 36, -392, -392, 116, -392, -392, -62, -392, 22, 24, 32, 2009, 28, 2157, 35, 45, 44, -393, -393, 42, -393, -393, -57, -393,
-93, 42, -392, -392, -392, -392, 606, -392, -392, -392, -392, -392, -392, -24, 2158, -80, -56, 48, -393, -393, -393, -393, 605, -393, -393, -393, -393, -393, -393, 5, 2157, -86,
-392, -392, 2158, 12, -61, -55, -392, -108, -392, -392, -392, -76, -392, -392, 2158, 3249, -393, -393, 2157, -9, -46, -55, -393, -110, -393, -393, -393, -72, -393, -393, 2157, 3248,
-392, -392, 2158, 38, -392, -392, -392, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, -393, -393, 2157, 49, -393, -393, -393, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157,
2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, 2158, -392, -392, 44, -392, 2732, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, 2157, -393, -393, 51, -393, 2731,
-392, -392, -392, -392, -392, 41, -392, 2158, -392, -392, -54, 2158, 60, -392, -392, -392, -393, -393, -393, -393, -393, 52, -393, 2157, -393, -393, -45, 2157, 47, -393, -393, -393,
776, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, -392, 2158, 2158, -392, -392, 775, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, -393, 2157, 2157, -393, -393,
-392, -392, 2158, -392, -38, -24, 12, -392, -137, -392, -392, 66, 63, -392, 43, -392, -393, -393, 2157, -393, -38, 5, -9, -393, -129, -393, -393, 54, 53, -393, 58, -393,
-392, -392, -392, -392, -13, -13, -75, -75, 17, 17, 17, 17, -114, -114, 20, 2, -393, -393, -393, -393, -21, -21, -132, -132, -6, -6, -6, -6, -116, -116, -15, -8,
-21, -6, 33, 39, 3, -392, -392, 162, -28, 1116, 1286, -69, -392, -67, -392, 1436, -3, -1, 25, 31, -10, -393, -393, 143, -14, 1115, 1285, -69, -393, -62, -393, 1435,
776, -392, -392, -392, -392, -392, 2158, -392, -392, 2158, 72, -392, -392, -392, -392, 1436, 775, -393, -393, -393, -393, -393, -393, -123, -393, 2157, 61, -393, -393, -393, -393, 1435,
41, -392, 63, 12, 3128, 75, 68, 74, -392, 2158, -392, 69, 77, 220, -392, 78, 52, -393, 53, -9, 3127, 62, 57, -393, -393, 2157, -393, 55, 63, 206, -393, 64,
76, 946, -392, 71, -65, 2158, 946, 41, -392, 2158, -392, -392, -392, -392, 79, 63, 67, 945, -393, -59, 2157, 945, 52, -393, 2157, -393, -393, -393, 60, 53, -393, -393,
-392, -392, -392, -392}; -393, -393};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
Performed when YYTABLE does not specify something else to do. Zero Performed when YYTABLE does not specify something else to do. Zero
...@@ -1133,18 +1133,18 @@ static const yytype_uint16 yydefact[] = { ...@@ -1133,18 +1133,18 @@ static const yytype_uint16 yydefact[] = {
81, 82, 83, 84, 79, 74, 0, 0, 294, 290, 292, 114, 0, 118, 0, 267, 0, 262, 0, 81, 82, 83, 84, 79, 74, 0, 0, 294, 290, 292, 114, 0, 118, 0, 267, 0, 262, 0,
92, 11, 0, 18, 30, 15, 21, 27, 41, 42, 43, 46, 45, 48, 49, 53, 54, 51, 52, 92, 11, 0, 18, 30, 15, 21, 27, 41, 42, 43, 46, 45, 48, 49, 53, 54, 51, 52,
56, 57, 59, 61, 63, 65, 67, 69, 0, 168, 257, 0, 0, 0, 0, 0, 319, 0, 300, 56, 57, 59, 61, 63, 65, 67, 69, 0, 168, 257, 0, 0, 0, 0, 0, 319, 0, 300,
0, 281, 73, 86, 113, 263, 265, 0, 93, 13, 0, 0, 286, 288, 311, 310, 313, 287, 298, 0, 281, 73, 86, 113, 263, 265, 93, 0, 13, 0, 0, 286, 288, 311, 310, 313, 287, 298,
302, 0, 0, 0, 0, 0, 71, 0, 312, 0, 0, 297, 295, 0, 0, 0, 282, 0, 0, 302, 0, 0, 0, 0, 94, 71, 0, 312, 0, 0, 297, 295, 0, 0, 0, 282, 0, 314,
314, 0, 287, 299, 0, 284, 305, 283, 94, 0, 315, 309, 296, 303, 307}; 0, 287, 299, 0, 284, 305, 283, 0, 315, 309, 296, 303, 307};
/* YYPGOTO[NTERM-NUM]. */ /* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] = { static const yytype_int16 yypgoto[] = {
-392, -51, -392, -392, -392, -392, -392, -392, -45, -392, -392, -392, -392, -89, -392, -128, -393, -51, -393, -393, -393, -393, -393, -393, -58, -393, -393, -393, -393, 43, -393, -141,
-126, -182, -130, -63, -60, -64, -57, -59, -56, -392, -154, -165, -392, -174, -225, -392, -140, -227, -144, -83, -79, -75, -70, -81, -77, -393, -151, -165, -393, -188, -179, -393,
11, 14, -392, -392, -392, 97, 108, 105, -392, -392, -364, -392, -115, -392, -392, -118, 14, 15, -393, -393, -393, 87, 95, 92, -393, -393, -372, -393, -115, -393, -393, -118,
-392, -117, 252, -392, -392, 24, 0, -139, -392, -392, -392, -392, -149, -175, -16, -97, -393, -117, 239, -393, -393, 10, 0, -143, -393, -393, -393, -393, -149, -175, -28, -109,
-261, -120, -252, -374, -156, -392, -392, -161, -391, -392, -392, -142, -50, -116, -392, -392, -265, -139, -254, -374, -180, -393, -393, -185, -392, -393, -393, -142, -82, -138, -393, -393,
-392, -392, -392, -136, -392, -392, -392, -392, -392, -392, -392, -392, -392, 145, -392, -392}; -393, -393, -393, -162, -393, -393, -393, -393, -393, -393, -393, -393, -393, 122, -393, -393};
/* YYDEFGOTO[NTERM-NUM]. */ /* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] = { static const yytype_int16 yydefgoto[] = {
...@@ -1152,233 +1152,224 @@ static const yytype_int16 yydefgoto[] = { ...@@ -1152,233 +1152,224 @@ static const yytype_int16 yydefgoto[] = {
217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 252, 253, 348, 254, 228, 159, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 252, 253, 348, 254, 228, 159,
255, 256, 117, 118, 119, 148, 149, 150, 120, 121, 122, 123, 124, 125, 126, 127, 255, 256, 117, 118, 119, 148, 149, 150, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 171, 172, 229, 163, 133, 134, 233, 167, 187, 188, 277, 278, 128, 129, 130, 131, 171, 172, 229, 163, 133, 134, 233, 167, 187, 188, 277, 278,
273, 258, 259, 260, 261, 336, 422, 443, 391, 392, 393, 444, 262, 263, 264, 430, 273, 258, 259, 260, 261, 336, 422, 442, 391, 392, 393, 443, 262, 263, 264, 430,
265, 431, 266, 421, 267, 399, 325, 394, 415, 427, 428, 268, 135, 136, 137, 145}; 265, 431, 266, 421, 267, 399, 325, 394, 415, 427, 428, 268, 135, 136, 137, 145};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
positive, shift that token. If negative, reduce the rule whose positive, shift that token. If negative, reduce the rule whose
number is the opposite. If YYTABLE_NINF, syntax error. */ number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] = { static const yytype_int16 yytable[] = {
132, 142, 152, 174, 151, 317, 160, 161, 227, 353, 352, 115, 280, 355, 116, 169, 272, 182, 232, 132, 142, 152, 174, 151, 353, 160, 161, 352, 355, 283, 227, 280, 182, 115, 116, 272, 169, 232,
412, 332, 313, 360, 406, 283, 429, 143, 302, 303, 162, 152, 407, 151, 160, 152, 419, 181, 146, 412, 360, 313, 139, 140, 429, 302, 303, 419, 284, 285, 152, 162, 151, 160, 152, 269, 271, 230,
153, 269, 271, 154, 186, 183, 185, 139, 140, 292, 449, 184, 186, 419, 185, 284, 285, 235, 314, 298, 406, 299, 162, 186, 419, 185, 423, 447, 292, 181, 286, 186, 317, 185, 287, 141, 330, 314,
280, 162, 442, 361, 236, 304, 305, 442, 270, 147, 160, 275, 330, 186, 156, 185, 214, 286, 144, 280, 361, 441, 304, 305, 162, 441, 155, 140, 332, 160, 275, 270, 186, 156, 185, 230, 230, 376,
227, 141, 287, 230, 230, 170, 289, 362, 319, 180, 274, 354, 290, 349, 416, 227, 417, 403, 446, 377, 378, 379, 227, 274, 354, 183, 170, 319, 235, 289, 362, 184, 403, 416, 236, 290, 349, 227,
298, 349, 299, 349, 162, 349, 178, 179, 349, 168, 272, 350, 281, 282, 272, 358, 349, 364, 359, 143, 349, 417, 364, 146, 444, 178, 179, 349, 153, 272, 349, 154, 349, 272, 358, 350, 144, 359,
396, 186, 186, 185, 185, 132, 376, 377, 378, 379, 132, 368, 294, 358, 155, 140, 404, 3, 4, 162, 186, 186, 185, 185, 132, 349, 139, 140, 396, 132, 368, 388, 358, 306, 307, 404, 300, 301,
5, 173, 132, 230, 357, 166, 231, 388, 214, 139, 140, 280, 234, 115, 132, 352, 116, -30, 132, 357, 147, 132, 320, 321, 166, 395, 3, 4, 5, 397, 280, 168, 352, 132, 173, 115, 116, 132,
288, 395, 300, 301, 214, 397, 309, 132, 295, 296, 297, 306, 307, 320, 321, 132, 349, 409, 372, 295, 296, 297, 349, 409, 372, 373, 132, 374, 375, 380, 381, 180, 230, 231, 132, 234, -30, 311,
373, 310, 257, 374, 375, 380, 381, 311, 293, 450, 423, 308, 401, 402, 132, 312, 132, 315, 272, 288, 308, 257, 293, 448, 309, 310, 312, 315, 326, 323, 327, 401, 402, 132, 331, 132, 324, 272,
323, 324, 326, 327, 328, 331, 333, -24, 334, 335, -29, -31, 186, -285, 185, 389, 369, 370, 371, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 328, 333, 186, 334, 185, 214, -29, 335, -24,
214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 418, 398, 408, 347, 410, 418, 389, 398, -285, 408, -31, 407, 349, 425, 434, 433, 437, 436, 438, 382, 248, 418,
349, 410, 425, 434, 132, 132, 433, 435, 438, 437, 439, 445, 248, 418, 367, 441, 424, 382, 384, 449, 367, 383, 386, 132, 132, 440, 384, 387, 435, 176, 281, 282, 385, 175, 177, 424, 138, 322,
451, 176, 383, 411, 436, 227, 386, 385, 175, 177, 387, 138, 356, 322, 405, 257, 447, 337, 338, 356, 445, 405, 411, 439, 446, 426, 400, 413, 414, 165, 294, 0, 0, 0, 257, 0, 0, 0,
339, 340, 341, 342, 343, 344, 345, 346, 413, 440, 272, 448, 414, 426, 165, 0, 0, 347, 420, 0, 0, 0, 0, 0, 0, 0, 214, 0, 272, 0, 0, 0, 0, 0, 0, 0, 0, 420,
0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, 160, 161, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, 160, 161,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 369, 370, 371, 214,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 257, 0, 0, 0, 0,
257, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 257, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0,
0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0, 0, 0,
0, 257, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 257, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241,
241, 242, 243, 244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 242, 243, 244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
45, 46, 47, 48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 46, 47, 48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81,
81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193,
193, 194, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 198, 0, 0, 0, 248, 249, 0, 0, 0, 0, 250, 200, 201, 202, 0, 0, 0, 0, 198, 0, 0, 0, 248, 249, 0, 0, 0, 0, 250, 200, 201, 202, 203,
203, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242,
242, 243, 244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 243, 244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
46, 47, 48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 47, 48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194,
194, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 198, 0, 0, 0, 248, 351, 0, 0, 0, 0, 250, 200, 201, 202, 203, 0, 0, 0, 198, 0, 0, 0, 248, 351, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242, 243,
243, 244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
47, 48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195,
195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 198, 0, 0, 0, 248, 0, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1, 0, 0, 198, 0, 0, 0, 248, 0, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1, 2,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242, 243, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242, 243, 244,
244, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
48, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0,
0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 198, 0, 0, 0, 173, 0, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1, 2, 0, 198, 0, 0, 0, 173, 0, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1, 2, 3,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242, 243, 244, 4, 5, 6, 7, 8, 9, 10, 11, 12, 237, 238, 239, 0, 240, 241, 242, 243, 244, 245,
245, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 246, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
49, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 50, 51, 52, 53, 247, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0,
0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1, 2, 3, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 250, 200, 201, 202, 203, 1, 2, 3, 4,
4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
105, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 106, 107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196,
196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 198,
198, 7, 8, 9, 10, 11, 12, 0, 0, 0, 250, 200, 201, 202, 203, 0, 0, 0, 13, 7, 8, 9, 10, 11, 12, 0, 0, 0, 250, 200, 201, 202, 203, 0, 0, 0, 13, 14,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
107, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196, 197, 108, 109, 110, 111, 112, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196, 197, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 198, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 198, 7, 8,
8, 9, 10, 11, 12, 0, 0, 0, 0, 200, 201, 202, 203, 0, 0, 0, 13, 14, 15, 9, 10, 11, 12, 0, 0, 0, 0, 200, 201, 202, 203, 0, 0, 0, 13, 14, 15, 16,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0,
0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
109, 110, 111, 112, 113, 0, 157, 114, 0, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 110, 111, 112, 113, 0, 157, 114, 0, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
27, 0, 0, 0, 0, 0, 158, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 0, 0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82,
82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194,
194, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 198, 0, 0, 199, 9, 10, 11, 12, 0, 0, 0, 200, 201, 202, 203, 0, 0, 0, 198, 0, 0, 199, 9, 10, 11, 12, 0, 0, 0, 200, 201, 202, 203, 0,
0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0,
0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195,
195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 198, 0, 0, 316, 9, 10, 11, 12, 0, 0, 0, 200, 201, 202, 203, 0, 0, 0, 198, 0, 0, 316, 9, 10, 11, 12, 0, 0, 0, 200, 201, 202, 203, 0, 0,
0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0,
0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0,
0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 198, 9, 10, 11, 12, 0, 0, 0, 0, 0, 329, 200, 201, 202, 203, 0, 13, 0, 198, 9, 10, 11, 12, 0, 0, 0, 0, 0, 329, 200, 201, 202, 203, 0, 13, 14,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0,
0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,
52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
107, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196, 197, 108, 109, 110, 111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196, 197, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 9, 10,
10, 11, 12, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 0, 13, 14, 15, 16, 17, 11, 12, 0, 0, 0, 0, 0, 0, 200, 201, 202, 203, 0, 13, 14, 15, 16, 17, 18,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 34, 35, 36, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37,
37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 291, 0, 54, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 291, 0, 54, 55,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0,
0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
111, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0, 113, 189, 190, 114, 191, 192, 193, 194, 195, 0, 0, 196, 197, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 198, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 198, 7, 8, 9, 10, 11, 12,
12, 0, 0, 0, 0, 200, 201, 202, 203, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 200, 201, 202, 203, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
113, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 7,
7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, 13, 14, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 279, 13, 14, 15,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
108, 109, 110, 111, 112, 113, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 109, 110, 111, 112, 113, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
2, 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 318, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 318, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 0, 0, 0, 0, 0, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 0, 0, 0, 0, 0, 0,
0, 164, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 164, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 390, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 0, 0, 0, 390, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61,
61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79,
79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 1,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
47, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 48, 49, 50, 51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 1, 2, 3, 4, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 1, 2, 3, 4, 5,
5, 0, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
51, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
106, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 9, 10, 11, 12, 0, 0, 0, 0, 107, 108, 109, 110, 111, 112, 113, 0, 0, 114, 9, 10, 11, 12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
25, 26, 27, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37, 38, 39, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 54, 55, 56, 57, 58, 59, 60, 61, 62,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 76, 77, 78, 79, 80,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 0, 365, 114, 9, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 0, 113, 0, 365, 114, 9, 10,
10, 11, 12, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 11, 12, 366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 34, 35, 36, 19, 20, 21, 22, 23, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 34, 35, 36, 37,
37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 54, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 54, 55,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 0,
0, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
111, 0, 113, 0, 0, 114}; 0, 113, 0, 0, 114};
static const yytype_int16 yycheck[] = { static const yytype_int16 yycheck[] = {
0, 52, 119, 145, 119, 230, 124, 124, 162, 270, 262, 0, 187, 274, 0, 64, 181, 156, 167, 0, 52, 119, 145, 119, 270, 124, 124, 262, 274, 198, 162, 187, 156, 0, 0, 181, 64, 167,
393, 245, 146, 130, 160, 198, 416, 158, 141, 142, 160, 147, 168, 147, 151, 151, 399, 167, 159, 393, 130, 146, 130, 131, 416, 141, 142, 399, 139, 140, 147, 160, 147, 151, 151, 178, 179, 160,
165, 178, 179, 168, 159, 162, 159, 130, 131, 212, 439, 168, 167, 415, 167, 139, 140, 159, 181, 170, 168, 172, 160, 159, 415, 159, 168, 438, 212, 167, 160, 167, 230, 167, 164, 162, 243, 181,
232, 160, 433, 168, 165, 176, 177, 438, 167, 165, 185, 185, 243, 187, 122, 187, 162, 160, 168, 232, 168, 433, 176, 177, 160, 437, 130, 131, 245, 185, 185, 167, 187, 122, 187, 160, 160, 302,
230, 162, 164, 160, 160, 130, 159, 159, 233, 158, 167, 167, 165, 165, 159, 245, 159, 354, 159, 303, 304, 305, 230, 167, 167, 162, 130, 233, 159, 159, 159, 168, 354, 159, 165, 165, 165, 245,
170, 165, 172, 165, 160, 165, 152, 153, 165, 162, 270, 168, 196, 197, 274, 165, 165, 286, 168, 158, 165, 159, 286, 159, 159, 152, 153, 165, 165, 270, 165, 168, 165, 274, 165, 168, 168, 168,
168, 232, 233, 232, 233, 119, 302, 303, 304, 305, 124, 290, 215, 165, 130, 131, 168, 5, 6, 160, 232, 233, 232, 233, 119, 165, 130, 131, 168, 124, 290, 314, 165, 143, 144, 168, 137, 138,
7, 162, 135, 160, 276, 138, 168, 314, 230, 130, 131, 319, 167, 135, 147, 400, 135, 158, 151, 276, 165, 135, 133, 134, 138, 327, 5, 6, 7, 331, 319, 162, 400, 147, 162, 135, 135, 151,
159, 327, 137, 138, 245, 331, 179, 159, 173, 174, 175, 143, 144, 133, 134, 167, 165, 166, 298, 173, 174, 175, 165, 166, 298, 299, 159, 300, 301, 306, 307, 158, 160, 168, 167, 167, 158, 145,
299, 178, 173, 300, 301, 306, 307, 145, 158, 441, 406, 180, 348, 349, 185, 147, 187, 161, 354, 159, 180, 173, 158, 440, 179, 178, 147, 161, 158, 168, 158, 348, 349, 185, 158, 187, 168, 354,
168, 168, 158, 158, 168, 158, 166, 159, 158, 163, 158, 158, 319, 162, 319, 161, 295, 296, 297, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 168, 166, 319, 158, 319, 162, 158, 163, 159,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 399, 166, 161, 167, 67, 399, 161, 166, 162, 161, 158, 360, 165, 158, 163, 159, 159, 168, 18, 308, 162, 415,
165, 67, 158, 163, 232, 233, 159, 161, 159, 168, 18, 168, 162, 415, 287, 167, 409, 308, 310, 168, 287, 309, 312, 232, 233, 167, 310, 313, 425, 151, 196, 197, 311, 147, 151, 409, 6, 236,
168, 151, 309, 392, 425, 406, 312, 311, 147, 151, 313, 6, 275, 236, 358, 262, 437, 148, 149, 275, 436, 358, 392, 431, 437, 415, 336, 394, 394, 135, 215, -1, -1, -1, 262, -1, -1, -1,
150, 151, 152, 153, 154, 155, 156, 157, 394, 431, 441, 438, 394, 415, 135, -1, -1, 167, 399, -1, -1, -1, -1, -1, -1, -1, 230, -1, 440, -1, -1, -1, -1, -1, -1, -1, -1, 399,
-1, 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 415, -1, 420, 420, -1, -1, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 415, -1, 420, 420,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 406, -1, 319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 336, -1, 295, 296, 297, 298,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 419, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1,
399, 400, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 415, -1, -1, 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 415, -1, -1,
-1, -1, 420, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 433, -1, -1, -1, -1, -1, 420, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 433, -1, -1, -1,
-1, 438, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 437, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
134, 135, 136, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 158, -1, -1, -1, 162, 163, -1, -1, -1, -1, 168, 169, 170, 171,
172, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
...@@ -1395,7 +1386,7 @@ static const yytype_int16 yycheck[] = { ...@@ -1395,7 +1386,7 @@ static const yytype_int16 yycheck[] = {
98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
136, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 158, -1, -1, -1, 162, -1, -1, -1, -1, -1, 168, 169, 170, 171, 172, 3, -1, -1, -1, 158, -1, -1, -1, 162, 163, -1, -1, -1, -1, 168, 169, 170, 171, 172, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, 21, 22, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
...@@ -1413,40 +1404,41 @@ static const yytype_int16 yycheck[] = { ...@@ -1413,40 +1404,41 @@ static const yytype_int16 yycheck[] = {
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1,
-1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, 169, 170, 171, 172, 3, 4, 5, -1, 158, -1, -1, -1, 162, -1, -1, -1, -1, -1, 168, 169, 170, 171, 172, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, -1, 19, 20, 21, 22, 23, 24,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1,
139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
158, 9, 10, 11, 12, 13, 14, -1, -1, -1, 168, 169, 170, 171, 172, -1, -1, -1, 26, 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, 169, 170, 171, 172, 3, 4, 5, 6,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139, 140, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 158, 9, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139,
10, 11, 12, 13, 14, -1, -1, -1, -1, 169, 170, 171, 172, -1, -1, -1, 26, 27, 28, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 158,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 9, 10, 11, 12, 13, 14, -1, -1, -1, 168, 169, 170, 171, 172, -1, -1, -1, 26, 27,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
-1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
124, 125, 126, 127, 128, -1, 130, 131, -1, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
-1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139, 140, -1,
40, -1, -1, -1, -1, -1, 168, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 158, 9, 10,
-1, -1, -1, -1, -1, -1, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 11, 12, 13, 14, -1, -1, -1, -1, 169, 170, 171, 172, -1, -1, -1, 26, 27, 28, 29,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1,
116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, 133, 134, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
135, 136, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
-1, -1, -1, -1, 158, -1, -1, 161, 11, 12, 13, 14, -1, -1, -1, 169, 170, 171, 172, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, -1, 130, 131, -1, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
-1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, -1, -1, -1, -1, -1, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
...@@ -1460,77 +1452,85 @@ static const yytype_int16 yycheck[] = { ...@@ -1460,77 +1452,85 @@ static const yytype_int16 yycheck[] = {
99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, 133, 134, 135, 136, 118, 119, 120, 121, 122, 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, 133, 134, 135, 136,
-1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 158, 11, 12, 13, 14, -1, -1, -1, -1, -1, 168, 169, 170, 171, 172, -1, 26, -1, -1, 158, -1, -1, 161, 11, 12, 13, 14, -1, -1, -1, 169, 170, 171, 172, -1, -1,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1,
-1, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1,
65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, -1, -1, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
122, 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139, 140, 119, 120, 121, 122, 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 158, 11, -1, 139, 140, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
12, 13, 14, -1, -1, -1, -1, -1, -1, 169, 170, 171, 172, -1, 26, 27, 28, 29, 30, -1, 158, 11, 12, 13, 14, -1, -1, -1, -1, -1, 168, 169, 170, 171, 172, -1, 26, 27,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, 47, 48, 49, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1,
50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, -1, 68, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
-1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
126, -1, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139, 140, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 158, 9, 10, 11, 12, 13,
14, -1, -1, -1, -1, 169, 170, 171, 172, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
123, 124, 125, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 123, 124, 125, 126, -1, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139, 140, -1,
4, 5, 6, 7, -1, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 158, 11, 12,
-1, -1, 163, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 13, 14, -1, -1, -1, -1, -1, -1, 169, 170, 171, 172, -1, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50,
51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, -1, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1,
89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
-1, 128, 129, 130, 131, 132, 133, 134, 135, 136, -1, -1, 139, 140, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 158, 9, 10, 11, 12, 13, 14,
-1, -1, -1, -1, 169, 170, 171, 172, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33,
34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90,
91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
-1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, -1, 9,
10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
-1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
124, 125, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5, 6, 7, -1, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 163, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, -1, -1,
0, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 163, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, -1, -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, 3, 4, 5, 6, 7,
-1, 0, -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26,
-1, -1, -1, -1, -1, -1, -1, 163, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, 11, 12, 13, 14, -1, -1, -1, -1, -1,
3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
-1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 39, 40, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1, -1,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, -1, -1, -1, -1, -1, -1, -1, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
60, 61, 62, 63, 64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95,
79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, -1, 128, -1, 130, 131, 11, 12,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, 3, 4, 5, 6, 13, 14, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
7, -1, 9, 10, 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, -1, 68, 69,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1,
64, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, -1, 128, -1, -1, 131};
121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 131, 11, 12, 13, 14, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, -1, -1, -1, -1, -1, -1, 47, 48, 49, 50, 51, 52, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 65, 66, -1, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, -1, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, -1, 128, -1, 130, 131, 11,
12, 13, 14, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30,
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, 47, 48, 49,
50, 51, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, 66, -1, 68,
69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
-1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
126, -1, 128, -1, -1, 131};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */ symbol of state STATE-NUM. */
...@@ -1556,9 +1556,9 @@ static const yytype_uint16 yystos[] = { ...@@ -1556,9 +1556,9 @@ static const yytype_uint16 yystos[] = {
153, 154, 155, 156, 157, 167, 210, 165, 168, 163, 248, 246, 167, 246, 244, 237, 165, 168, 130, 153, 154, 155, 156, 157, 167, 210, 165, 168, 163, 248, 246, 167, 246, 244, 237, 165, 168, 130,
168, 159, 187, 211, 130, 136, 190, 209, 195, 195, 195, 197, 197, 198, 198, 199, 199, 199, 199, 168, 159, 187, 211, 130, 136, 190, 209, 195, 195, 195, 197, 197, 198, 198, 199, 199, 199, 199,
200, 200, 201, 202, 203, 204, 205, 206, 211, 161, 163, 254, 255, 256, 269, 211, 168, 211, 166, 200, 200, 201, 202, 203, 204, 205, 206, 211, 161, 163, 254, 255, 256, 269, 211, 168, 211, 166,
267, 258, 209, 209, 246, 168, 245, 160, 168, 161, 166, 67, 257, 249, 247, 259, 270, 159, 159, 267, 258, 209, 209, 246, 168, 245, 168, 237, 161, 166, 67, 257, 249, 247, 259, 270, 159, 159,
211, 224, 226, 265, 252, 212, 209, 158, 265, 271, 272, 254, 261, 263, 183, 159, 163, 161, 211, 211, 224, 226, 265, 252, 168, 209, 158, 265, 271, 272, 254, 261, 263, 183, 159, 163, 211, 168,
168, 159, 18, 250, 167, 249, 253, 257, 168, 159, 211, 253, 254, 246, 168}; 159, 18, 250, 167, 249, 253, 257, 159, 211, 253, 254, 246, 168};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] = { static const yytype_uint16 yyr1[] = {
...@@ -1586,7 +1586,7 @@ static const yytype_uint8 yyr2[] = { ...@@ -1586,7 +1586,7 @@ static const yytype_uint8 yyr2[] = {
0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 3, 2, 2, 1, 1, 1, 3, 2, 2, 2, 1, 2, 3, 2, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 3, 2, 2, 1, 1, 1, 3, 2, 2, 2, 1, 2, 3, 2, 1,
1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, 3,
1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2,
2, 4, 5, 6, 9, 2, 3, 2, 1, 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 2, 4, 5, 6, 7, 2, 3, 2, 1, 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, 4,
1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 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, 1, 1, 1, 1, 4, 1, 3, 1, 3, 3, 1, 1, 2, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, 1, 3, 3, 1, 1, 2, 2, 3, 3, 4, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
...@@ -3192,12 +3192,12 @@ yyreduce: ...@@ -3192,12 +3192,12 @@ yyreduce:
case 94: case 94:
{ {
ES3_OR_NEWER(ImmutableString((yyvsp[-7].lex).string), (yylsp[-8]), "interface blocks"); ES3_OR_NEWER(ImmutableString((yyvsp[-5].lex).string), (yylsp[-6]), "interface blocks");
(yyval.interm.intermNode) = context->addInterfaceBlock( (yyval.interm.intermNode) = context->addInterfaceBlock(
*(yyvsp[-8].interm.typeQualifierBuilder), (yylsp[-7]), *(yyvsp[-6].interm.typeQualifierBuilder), (yylsp[-5]),
ImmutableString((yyvsp[-7].lex).string), (yyvsp[-6].interm.fieldList), ImmutableString((yyvsp[-5].lex).string), (yyvsp[-4].interm.fieldList),
ImmutableString((yyvsp[-4].lex).string), (yylsp[-4]), ImmutableString((yyvsp[-2].lex).string), (yylsp[-2]), (yyvsp[-1].interm.arraySizes),
(yyvsp[-2].interm.intermTypedNode), (yylsp[-3])); (yylsp[-1]));
} }
break; break;
......
...@@ -551,6 +551,8 @@ bool IsVaryingOut(TQualifier qualifier) ...@@ -551,6 +551,8 @@ bool IsVaryingOut(TQualifier qualifier)
case EvqCentroidOut: case EvqCentroidOut:
case EvqVertexOut: case EvqVertexOut:
case EvqGeometryOut: case EvqGeometryOut:
case EvqTessControlOut:
case EvqTessEvaluationOut:
case EvqSampleOut: case EvqSampleOut:
return true; return true;
...@@ -572,6 +574,8 @@ bool IsVaryingIn(TQualifier qualifier) ...@@ -572,6 +574,8 @@ bool IsVaryingIn(TQualifier qualifier)
case EvqCentroidIn: case EvqCentroidIn:
case EvqFragmentIn: case EvqFragmentIn:
case EvqGeometryIn: case EvqGeometryIn:
case EvqTessControlIn:
case EvqTessEvaluationIn:
case EvqSampleIn: case EvqSampleIn:
return true; return true;
......
...@@ -208,12 +208,6 @@ ...@@ -208,12 +208,6 @@
// Shader I/O blocks: // Shader I/O blocks:
// Missing matching of block names with unnamed SSBOs with the same member variable // Missing matching of block names with unnamed SSBOs with the same member variable
3580 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.shader_storage_block.ambiguous_variable_name_3 = FAIL 3580 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.shader_storage_block.ambiguous_variable_name_3 = FAIL
// Missing support for unsized geometry shader input I/O block arrays
3580 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_block = FAIL
3580 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.types.float_array = FAIL
// Incorrect error regarding interface block being in/out
3580 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.input_block_explicit_size = FAIL
3580 VULKAN : dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.rules.output_block* = FAIL
// Missing matching of struct name in member fields of matching nameless I/O blocks // Missing matching of struct name in member fields of matching nameless I/O blocks
3580 VULKAN : dEQP-GLES31.functional.separate_shader.validation.es31.io_blocks.mismatch_different_member_struct_names = FAIL 3580 VULKAN : dEQP-GLES31.functional.separate_shader.validation.es31.io_blocks.mismatch_different_member_struct_names = FAIL
// Failed by glslang errors (matrix or packing qualifiers can only be used on a uniform or buffer) // Failed by glslang errors (matrix or packing qualifiers can only be used on a uniform or buffer)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment